Skip to main content

Mobile Analytics Metrics

· 3 min read
NameDefinitionComment
DAU (Daily active users)# of Unique users per dayDownloads are misleading because 80 to 90 percent of those who download an app never return
MAU (Monthly active users)# of Unique users per monthDownloads are misleading
Stickiness(DAU / MAU ) x 100Higher stickiness = higher ROI, mobile stickiness is 20x more than mobile/desktop
Retention rate((# of customers at end of period – # of customers acquired during period) / # of customers at start of period ) x 100High retention is almost always a good thing.
Churn rate1- Customer Retention Rate
CPA (Cost per acquisition)Total Marketing Cost / Total User Acquisitionsthe lower the better
Average daily sessions per DAUhow frequently your users log into your app each day. Not always a good thing.
LTV (Lifetime value)Average value of conversion x Average # of conversions in a timeframe x Average customer valueis losing money = Boolean(LTV < CPA)
ARPU (Average revenue per user)Lifetime revenue of app/ Lifetime # of usersARPU answers when you should be earning more revenue per user
ARPPU (average revenue per paying user)Lifetime revenue of app / Lifetime # of paying users
ROI (Return on Investment)Return / Investmentstay consistent to measure relative progress year-to-year
App load timeshould <= 2 sec
User satisfactionmeasured in CSAT and NPSbetter user satisfaction = more user retention + more LTV
CSAT (customer satisfaction score)(# of satisfied customers / # of survey respondents) x 100ask customers to rate their satisfaction on a scale from 1 to 5. 4 or 5 means satisfied
NPS (Net Promoter Score)((# of promoters – # of detractors ) / # of survey respondents) x 100ask customers to rate their satisfaction on a scale from 1 to 10. Users reply 0 to 6 are detractors. Users reply 8 to 10 are promoters.
Goal achievement% Users that achieve their goals each sessionGoals can be a purchase, a signup, a share, etc.
Marketing Acquisition%, $, and dollar value % of visitors from a top marketing channel

Stratechery: Why Did Amazon Acquire Whole Foods?

· 4 min read

The answer is: Amazon wanted to buy customers for its grocery service.

Background

  • Amazon's acquisition of Whole Foods = Apple's iPhone defeating Palm

    • Do not confuse goals, strategies, and tactics — Apple's strategy:
      • It was not about making phones but about producing personal computers
      • It was not about adding features to phones but about compressing traditional phone functions into one app
      • It was not about replicating the work of carriers but about leveraging its connection with customers
    • The iPhone is the most successful product in history = Amazon is the most dominant company in history
  • Amazon's Goals

    1. Initially, Amazon.com aimed to become a leading retailer based on information products and services, starting with selling books.
    2. Then, Amazon declared, "Our vision is to be Earth's most customer-centric company, where customers can find anything they want to buy online."
    3. ==Amazon's goal is to gain a share of all economic activities==.
  • Amazon's Strategy

    • For businesses: AWS. Assume that all commercial transactions will soon be completed online.
    • For customers: Prime. Assume that high costs and diverse choices are unsustainable. With Prime, customers will not consider other alternatives.
      • However
        • The grocery industry is the largest retail category
        • The grocery industry can continuously remind consumers that there are alternatives to Amazon
  • Amazon's Tactics: Develop grocery services

Why Did Amazon Not Arrive at the Right Tactics?

BooksGroceries
High inventory units = wide selectionLow inventory units (30k - 50k)
StandardizedVaried
Non-perishablePerishable

Amazon's cost disadvantages in fresh produce

  1. Once scale is insufficient, product spoilage will incur high costs.
  2. Scale depends on the specific circumstances of each city.

Why does acquiring Whole Foods (rather than others) solve the business scale issue?

==Business fundamental component model + two basic points 1) High fixed costs 2) High returns==

  • Deconstruct the infrastructure into Minimum Sellable Units (MSUs)
  • These businesses themselves are the first and best customers of these minimum sellable units
  • Resell the minimum sellable units

AWS's three-tier architecture

ServiceFundamental ComponentS3, EC2, RDS, SNS, ...
PlatformAWSHigh fixed costs + scale returns
InfrastructureModular ComponentsData centers, servers, storage, switches, bandwidth
  • MSUs belong to S3, EC2, RDS, SNS, etc.
  • The first and best customer is amazon.com
  • Resell MSUs to non-Amazon developers

Amazon.com's three-tier architecture

ServicePackageFDA, Amazon Pay, ...
PlatformLogistics CenterHigh fixed costs + scale returns
InfrastructureModular SuppliersManufacturers, third-party suppliers, etc.
  • MSUs belong to FDA, Amazon Pay, etc.
  • The first and best customer is Amazon's first-party e-commerce
  • Resell MSUs to third-party suppliers

The insight here is that Amazon's existing grocery does not have a first and best supplier.

The Perfect Customer

Placing Whole Foods into this framework, we can see that ==what Amazon did was not just buy a retailer, but also acquire a customer for its existing business==.

Amazon.com's three-tier architecture + Customers

CustomerAll categories of food, delivery, restaurants
ServiceGroceriesMeat, fruits, vegetables, dry goods, etc.
PlatformLogistics CenterHigh fixed costs + scale returns
InfrastructureModular SuppliersStore brands, name brands, local suppliers, regional suppliers, etc.

Now, Amazon groceries can serve both Amazon Fresh and Whole Foods, and in the future, this foundational platform can also provide services to restaurants and other food-related entities.

Designing Smart Notification of Stock Price Changes

· 15 min read

Requirements

  • 3 million users
  • 5000 stocks + 250 global stocks
  • a user gets notified about the price change when
    1. subscribing the stock
    2. the stock has 5% or 10% changes
    3. since a) the last week or b) the last day
  • extensibility. may support other kinds of notifications like breaking news, earnings call, etc.

Sketching out the Architecture

Contexts:

  • What is clearing? Clearing is the procedure by which financial trades settle – that is, the correct and timely transfer of funds to the seller and securities to the buyer. Often with clearing, a specialized organization acts as an intermediary known as a clearinghouse.
  • What is a stock exchange? A facility where stock brokers and traders can buy and sell securities.

Apple Push Notification service


(APNs)

Apple Push Notification service<br>(APNs)

Google Firebase Cloud Messaging


(FCM)

Google Firebase Cloud Messaging<br>(FCM)

Email Services


AWS SES /sendgrid/etc

Email Services<br>AWS SES /sendgrid/etc

notifier

notifier

External Vendors



Market Prices

[Not supported by viewer]

Robinhood App

Robinhood App

API Gateway

API Gateway

Reverse Proxy

Reverse Proxy

batch write

batch write

price


ticker

[Not supported by viewer]

Time-series DB


influx or prometheus

Time-series DB<br>influx or prometheus

Tick every 5 mins

[Not supported by viewer]

periorical read

periorical read

price


watcher

price<br>watcher

User Settings

User Settings

Notification Queue

Notification Queue

throttler cache

throttler cache

cronjob

cronjob

What are those components and how do they interact with each other?

  • Price ticker
    • data fetching policies
      • option 1 preliminary: fetches data every 5 mins and flush into the time-series database in batches.
      • option 2 advanced: nowadays external systems usually push data directly so that we do not have to pull all the time.
    • ~6000 points per request or per price change.
    • data retention of 1 week, because this is just the speeding layer of the lambda architecture.
  • Price watcher
    • read the data ranging from last week or last 24 hours for each stock.
    • calculate if the fluctuation exceeds 5% or 10% in those two time spans. we get tuples like (stock, up 5%, 1 week).
      • corner case: should we normalize the price data? for example, some abnormal price like someone sold UBER mistakenly for $1 USD.
    • ratelimit (because 5% or 10% delta may occur many times within one day), and then emit an event PRICE_CHANGE(STOCK_CODE, timeSpan, percentage) to the notification queue.
  • Periodical triggers are cron jobs, e.g. Airflow, Cadence.
  • notification queue
    • may not necessarily be introduced in the first place when users and stocks are small.
    • may accept generic messaging event, like PRICE_CHANGE, EARNINGS_CALL, BREAKING_NEWS, etc.
  • Notifier
    • subscribe the notification queue to get the event
    • and then fetch who to notify from the user settings service
    • finally based on user settings, send out messages through APNs, FCM or AWS SES.

Designing Stock Exchange

· 16 min read

Requirements

  • order-matching system for buy and sell orders. Types of orders:
    • Market Orders
    • Limit Orders
    • Stop-Loss Orders
    • Fill-or-Kill Orders
    • Duration of Orders
  • high availability and low latency for millions of users
    • async design - use messaging queue extensively (btw. side-effect: engineers work on one service pub to a queue and does not even know where exactly is the downstream service and hence cannot do evil.)

Architecture

Reverse Proxy

Reverse Proxy

API Gateway

API Gateway

Order Matching

Order Matching

User Store

User Store

settle

settle

Orders

Orders

Stock Meta

Stock Meta

auth

auth

Cache

Cache

Balances & Bookkeeping

Balances & Bookkeeping

external pricing

external pricing

clearing


house

clearing<br>house

Bank, ACH, Visa, etc

Bank, ACH, Visa, etc

Payment

Payment

Audit & Report

Audit & Report

Components and How do they interact with each other.

order matching system

  • shard by stock code
  • order's basic data model (other metadata are omitted): Order(id, stock, side, time, qty, price)
  • the core abstraction of the order book is the matching algorithm. there are a bunch of matching algorithms(ref to stackoverflow, ref to medium)
  • example 1: price-time FIFO - a kind of 2D vector cast or flatten into 1D vector
    • x-axis is price
    • y-axis is orders. Price/time priority queue, FIFO.
      • Buy-side: ascending in price, descending in time.
      • Sell-side: ascending in price, ascending in time.
    • in other words
      • Buy-side: the higher the price and the earlier the order, the nearer we should put it to the center of the matching.
      • Sell-side: the lower the price and the earlier the order, the nearer we should put it to the center of the matching.

x-axis

line of prices

with y-axis cast into x-axis

Id   Side    Time   Qty   Price   Qty    Time   Side  
---+------+-------+-----+-------+-----+-------+------
#3 20.30 200 09:05 SELL
#1 20.30 100 09:01 SELL
#2 20.25 100 09:03 SELL
#5 BUY 09:08 200 20.20
#4 BUY 09:06 100 20.15
#6 BUY 09:09 200 20.15

Order book from Coinbase Pro

The Single Stock-Exchange Simulator

  • example 2: pro-rata

pure pro-rata

How to implement the price-time FIFO matching algorithm?

  • shard by stock, CP over AP: one stock one partition
  • stateful in-memory tree-map
    • periodically iterate the treemap to match orders
  • data persistence with cassandra
  • in/out requests of the order matching services are made through messaging queues
  • failover
    • the in-memory tree-maps are snapshotting into database
    • in an error case, recover from the snapshot and de-duplicate with cache

How to transmit data of the order book to the client-side in realtime?

  • websocket

How to support different kinds of orders?

  • same SELL or BUY: qty @ price in the treemap with different creation setup and matching conditions
    • Market Orders: place the order at the last market price.
    • Limit Orders: place the order with at a specific price.
    • Stop-Loss Orders: place the order with at a specific price, and match it in certain conditions.
    • Fill-or-Kill Orders: place the order with at a specific price, but match it only once.
    • Duration of Orders: place the order with at a specific price, but match it only in the given time span.

Orders Service

  • Preserves all active orders and order history.
  • Writes to order matching when receives a new order.
  • Receives matched orders and settle with external clearing house (async external gateway call + cronjob to sync DB)

References

Steve Jobs: Managers and Bozos

· One min read

I came across "bozo management" on the Blind App, and find it's a very interesting concept. Steve Jobs coined this phrase.

If you cannot watch the video, here are the words from him.

We went through that stage at Apple where we thought, 'Oh, we're going to be a big company, let's go out and hire professional management.' We went out and hired a bunch of professional management; it didn't work at all. Most of them were Bozos. They knew how to manage, but they didn't know how to DO anything.

If you are a great person, why do you want to work for somebody you cannot learn anything from? And you know what's interesting - you know what the best managers are? They are the great individual contributors who never ever wanted to be a manager, but decide they have to be a manager because no one else is able to do as good job as them.

Understanding decentralized identity (DID and DIF)

· 16 min read

What is DIF?

Decentralized Identity Foundation builds ecosystem for decentralized identity and ensures interop between all participants.

Why? … What is the problem?

ID Problem

The problem of decoupling ID from Personally identifiable information (PII). Identity is composed of a deeply personal collection of data that defines us, and your identity should answer to no one but you.

Specifically, challenges are

  1. Decoupling ID from identity providers. DIDs should be self-sovereign and not owned or controlled by central authorities.
  2. Decoupling ID lookup from centralized systems. DIDs and data should be able to be found across decentralized systems, so that no central owner can do the evil.
  3. Decoupling ID data from indiscreet or unknown storages. DIDs should be able to control precisely what to or what not to share with others.

Uniting the fragmented landscapes

DIF is the organization uniting the fragmented to solve the DID problem together and build an ecosystem as an industry standard.

How do they organize the efforts?

  • Designing Specs
  • Implementations
  • Aligning industry participants

People and Organizations

Working Groups

  • ID, Names, Discovery
  • Storage and Compute
  • Claims and Credentials

Members

  • Blockstack
  • Microsoft / IBM
  • HyperLedger
  • RSA
  • Ontology
  • Civic
  • iota

Ecosystem

DIF Ecosystem

DID

ID that is

  1. globally unique
  2. resolveable with high availability, and
  3. cryptographically verifiable.

DID Format: URN

Format in URN

DID methods (further explained below) define how DIDs work with a specific blockchain.

DID Document

  • DID infrastructure = a global key-value database of <DID, DID Document>
  • DID document = public keys, authentication protocols, and service endpoints for verifying the entity and explaining how to use it. It may contain three things:
    • proof purposes
    • verification methods
    • service endpoints

How DID preserves privacy?

  1. Pairwise-pseudonymous DIDs
  2. Off-chain private data
  3. Selective disclosure

DID method specification (DID <> Blockchain)

Defining how a DID and DID document are created, resolved, and managed (CRUD) on a specific blockchain.

How to join the DID method registration?

https://w3c-ccg.github.io/did-method-registry/#the-registry

Examples

Learning by Example: Blockstack DID method

  • How Blockstack leverages DID?
  • How to create a blockstack DID? How Blockstack acts as an Identity Provider?
  • How to resolve a DID?

Blockstack Naming Service (BNS)

  • Naming Layer = username <> pub key & pointer to storage
  • BNS is blockchain-agnostic. migrated from namecoint to bitcoin.
  • ==a Blockstack DID is defined as a pointer to the nth name registered by an address==.

two categories

on-chain DIDs

  • two tx to register a name on-chain - owner address <> name
  • one owner address may have multiple on-chain names and corresponding DIDs
    • e.g. did:stack:v0:15gxXgJyT5tM5A4Cbx99nwccynHYsBouzr-3 means the fourth on-chain name was created and initially assigned to the address 15gxXgJyT5tM5A4Cbx99nwccynHYsBouzr.

off-chain DIDs. a.k.a. subdomains

  • encoded in batches, hashed, and written to a blockchain later.

  • Off-chain names are instantiated by an on-chain name, indicated by the off-chain name's suffix. cicero.res_publica.id is processed by the owner of res_publica.id but are not owned by it.

Blockstack as an Identity Provider

Demo: https://bitpatron.co/ login with Blockstack

sequenceDiagram User ->> First Party: GET /login Note left of User: Login Note right of First Party: store transitKey First Party ->> User: Redirect User ->> Blockstack: GET /auth?authRequest=:authRequestJwt Blockstack ->> First Party: GET /manifest.json (CORS) Note left of User: create or select ID Blockstack ->> User: Redirect User ->> First Party: GET /auth?authResponse=:authResponseJwt Note right of First Party: decrypt w. transitKey Note left of First Party: pending sign-in First Party ->> Blockstack: GET /v1/names/:acctName.id.blockstack Blockstack ->> First Party: UserData

// authRequestJwt
{
"typ": "JWT",
"alg": "ES256K"
}
{
"jti": "4d06f08b-67a7-4f7c-89fc-b8164b81f67a",
"iat": 1563432343,
"exp": 1566110743,
"iss": "did:btc-addr:19sxvnAxPXZYAEdpF7Tti6MSVhxA8PSdCT",
"public_keys": [
"03994ec7b23a8e11e40684c9b2d29febf103bd92c4bbd295f1e2537042c93ac977"
],
"domain_name": "http://localhost:4104",
"manifest_uri": "http://localhost:4104/manifest.json",
"redirect_uri": "http://localhost:4104/",
"version": "1.3.1",
"do_not_include_profile": true,
"supports_hub_url": true,
"scopes": [
"store_write"
]
}
// authResponse
{
"typ": "JWT",
"alg": "ES256K"
}
{
"jti": "30773b78-3595-499f-bbb3-d1e649470c70",
"iat": 1563432894,
"exp": 1566111294,
"iss": "did:btc-addr:1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH",
"private_key": "redacted - encrypted with transitKey",
"public_keys": [
"027c8547681cc27e27b73ee0f3c0534bdd38993dcb4c1934bf424f0b3a04dcad63"
],
"profile": null,
"username": "kirbystar.id.blockstack",
"core_token": null,
"email": null,
"profile_url": "https://gaia.blockstack.org/hub/1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH/profile.json",
"hubUrl": "https://hub.blockstack.org",
"blockstackAPIUrl": "https://core.blockstack.org",
"associationToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJjaGlsZFRvQXNzb2NpYXRlIjoiMDNhMTU5YzY4YWQ1ZjFkNzcxMWY2NjJmNThkNjdmMzZlNzY3ZTBjMDBhOTU4ZWY0NzljNzU3MzU0MGFkMzExZjk2IiwiaXNzIjoiMDI3Yzg1NDc2ODFjYzI3ZTI3YjczZWUwZjNjMDUzNGJkZDM4OTkzZGNiNGMxOTM0YmY0MjRmMGIzYTA0ZGNhZDYzIiwiZXhwIjoxNTk0OTY4ODk0LjcwNSwiaWF0IjoxNTYzNDMyODk0LjcwNSwic2FsdCI6IjE4NGVhMWQyMzM3MWQ1MmYyYzhmNTAyOGUwMWYxYmZiIn0.ZceaVcIK2Z8wu6KBYOHQaK7y6BI7NfxrixphOCPs1B4hZcGYDKsuf0anbm4CdAAJbKRifCm-MYHE6fjKD9E7GQ",
"version": "1.3.1"
}
// acctName response
{
"blockchain": "bitcoin",
"status": "submitted_subdomain",
"last_txid": "851ca5e6c06723e61037aa397966aafa1a6dd7159e9e31e53116106b87101886",
"zonefile": "$ORIGIN kirbystar.id.blockstack\n$TTL 3600\n_http._tcp\tIN\tURI\t10\t1\t\"https://gaia.blockstack.org/hub/1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH/profile.json\"\n\n",
"address": "1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH",
"zonefile_hash": "a9c016921a9a60e04776251db53a8881e6d128ce"
}
// session
{
"version": "1.0.0",
"userData": {
"username": "kirbystar.id.blockstack",
"profile": {
"@type": "Person",
"@context": "http://schema.org",
"api": {
"gaiaHubConfig": {
"url_prefix": "https://gaia.blockstack.org/hub/"
},
"gaiaHubUrl": "https://hub.blockstack.org"
}
},
"email": null,
"decentralizedID": "did:btc-addr:1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH",
"identityAddress": "1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH",
"appPrivateKey": "redacted",
"coreSessionToken": null,
"authResponseToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJqdGkiOiIyNmM4ZGM2Ny1lNzEwLTRlZDUtYmIxYi0yY2I1ODY5YTRkMTEiLCJpYXQiOjE1NjM0MzU2NjEsImV4cCI6MTU2NjExNDA2MSwiaXNzIjoiZGlkOmJ0Yy1hZGRyOjFEcEtNcXhCbnVTU1FNTnVuMW9iY2lQU2ZEOXJEOEtOVUgiLCJwcml2YXRlX2tleSI6IjdiMjI2OTc2MjIzYTIyNjQzMDMzMzMzODMyNjYzNTYxNjIzNjM0Mzg2MTM1MzYzNTM2MzI2MzMzNjEzMTYyMzY2NTYzNjEzNzMzNjU2NjIyMmMyMjY1NzA2ODY1NmQ2NTcyNjE2YzUwNGIyMjNhMjIzMDMyNjEzMzY1NjEzMzY0NjMzNjMyMzgzODY2MzgzMTY2MzAzNDMwMzU2MzY1MzI2MzMzNjUzNjY0MzMzMzMxMzQzNDM0NjY2MTM4MzA2NTY1MzIzMzMyNjEzMjM2NjQzMzMwMzczMzM2MzY2NTMzMzkzNzM3MzczMjMxMzMzNzM5MzcyMjJjMjI2MzY5NzA2ODY1NzI1NDY1Nzg3NDIyM2EyMjM2MzMzOTYzNjMzMDM5MzQzOTYyMzMzNjY0NjI2NTM1MzIzMTM0MzIzMjM3MzA2MzY1NjIzMTM0MzEzNjY2MzA2MzM0NjYzNDM4MzgzMjY0MzUzOTM0MzMzNDM2NjM2NjYyNjEzNzMxNjM2MjM1MzYzMTM2MzczMDY0MzUzMzY0MzQzNTY1MzMzODYyNjIzNzM1NjMzMjMzMzYzNjMyMzUzODMxMzgzOTM3NjYzMjMwNjMzNTM4MzA2NTMyMzEzODM0MzMzNTMwMzMzNjM1NjE2NDM1NjEzMTM4NjY2MjMyNjY2NDM3MzQ2MzY1NjMzNDM0MzI2NTY0MzY2NTY2NjYzMjM5NjIzNjY2Mzk2MTMyMzgzMTM4MzEzMzYyMzMzMDYyMzkzMTYzMzE2MzM1Mzg2MTM4MzgzMTM5MzQ2MjYzMjIyYzIyNmQ2MTYzMjIzYTIyMzkzNzY0MzM2MzM4NjEzOTYxMzQ2NjMyMzkzNjM1MzM2MzM1MzQzNzY1MzIzNTYzMzMzMzM4MzIzMDYxMzczMjYyMzU2NjY0MzQ2NjM1NjE2NDYxNjY2NjMwMzQzNzM1Mzk2NDM0MzI2MTYxMzgzNDM1MzkzNzY2MzY2MjM5NjEyMjJjMjI3NzYxNzM1Mzc0NzI2OTZlNjcyMjNhNzQ3Mjc1NjU3ZCIsInB1YmxpY19rZXlzIjpbIjAyN2M4NTQ3NjgxY2MyN2UyN2I3M2VlMGYzYzA1MzRiZGQzODk5M2RjYjRjMTkzNGJmNDI0ZjBiM2EwNGRjYWQ2MyJdLCJwcm9maWxlIjpudWxsLCJ1c2VybmFtZSI6ImtpcmJ5c3Rhci5pZC5ibG9ja3N0YWNrIiwiY29yZV90b2tlbiI6bnVsbCwiZW1haWwiOm51bGwsInByb2ZpbGVfdXJsIjoiaHR0cHM6Ly9nYWlhLmJsb2Nrc3RhY2sub3JnL2h1Yi8xRHBLTXF4Qm51U1NRTU51bjFvYmNpUFNmRDlyRDhLTlVIL3Byb2ZpbGUuanNvbiIsImh1YlVybCI6Imh0dHBzOi8vaHViLmJsb2Nrc3RhY2sub3JnIiwiYmxvY2tzdGFja0FQSVVybCI6Imh0dHBzOi8vY29yZS5ibG9ja3N0YWNrLm9yZyIsImFzc29jaWF0aW9uVG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpGVXpJMU5rc2lmUS5leUpqYUdsc1pGUnZRWE56YjJOcFlYUmxJam9pTUROaE1UVTVZelk0WVdRMVpqRmtOemN4TVdZMk5qSm1OVGhrTmpkbU16WmxOelkzWlRCak1EQmhPVFU0WldZME56bGpOelUzTXpVME1HRmtNekV4WmprMklpd2lhWE56SWpvaU1ESTNZemcxTkRjMk9ERmpZekkzWlRJM1lqY3paV1V3WmpOak1EVXpOR0prWkRNNE9Ua3paR05pTkdNeE9UTTBZbVkwTWpSbU1HSXpZVEEwWkdOaFpEWXpJaXdpWlhod0lqb3hOVGswT1RjeE5qWXhMak0yT1N3aWFXRjBJam94TlRZek5ETTFOall4TGpNMk9Td2ljMkZzZENJNklqVXhOMkZsWkdVd1ltVmpOMkpqTlRnek5qY3lOREkwT1RsaE1EVm1OVEEwSW4wLjlkY2VHX3I4OVdDSUVsTklseFNtUGxPblhiSVNsZEZDejJxOTJRMnpJSk9XXzhnTjVYT0xsZnNkREJVamlQZlU3eTNyRGFXSUxfTUJicVVnVnBFanhRIiwidmVyc2lvbiI6IjEuMy4xIn0.0Xqtw-71TJ9ybWx4Uxre0Gxkisay20xn1vqwr0WaKvVeCzwv_NO6YZnVOmGPM4cF4wex06yLYWasqQWgCi-m_g",
"hubUrl": "https://hub.blockstack.org",
"gaiaAssociationToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJjaGlsZFRvQXNzb2NpYXRlIjoiMDNhMTU5YzY4YWQ1ZjFkNzcxMWY2NjJmNThkNjdmMzZlNzY3ZTBjMDBhOTU4ZWY0NzljNzU3MzU0MGFkMzExZjk2IiwiaXNzIjoiMDI3Yzg1NDc2ODFjYzI3ZTI3YjczZWUwZjNjMDUzNGJkZDM4OTkzZGNiNGMxOTM0YmY0MjRmMGIzYTA0ZGNhZDYzIiwiZXhwIjoxNTk0OTcxNjYxLjM2OSwiaWF0IjoxNTYzNDM1NjYxLjM2OSwic2FsdCI6IjUxN2FlZGUwYmVjN2JjNTgzNjcyNDI0OTlhMDVmNTA0In0.9dceG_r89WCIElNIlxSmPlOnXbISldFCz2q92Q2zIJOW_8gN5XOLlfsdDBUjiPfU7y3rDaWIL_MBbqUgVpEjxQ"
},
"transitKey": "redacted"
}

Getting Entity from DID - Universal Resolver

Domain Name <--DNS-->  IP
Repensented Entity <--Universal Resolver--> Self-sovereign Identifiers
DID <--Universal Resolver--> DID Document

Universal Resolver

Drivers for Example:

  • did:stack: DID registered from BlockStack, like did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0
  • did:btcr: DID registered from BTC
  • etc.

Run a resolver

git clone https://github.com/decentralized-identity/universal-resolver.git
cd universal-resolver/
docker-compose -f docker-compose.yml pull
docker-compose -f docker-compose.yml up
curl -X GET http://localhost:8080/1.0/identifiers/did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0 | jq .

{
"redirect": null,
"didDocument": {
"id": "did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"service": [
{
"type": "blockstack",
"serviceEndpoint": "https://core.blockstack.org"
}
],
"publicKey": [
{
"id": "did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"type": "Secp256k1VerificationKey2018",
"publicKeyHex": "0232131c807c4b184582280bca141f2583f6a1de2e0d3e6984cdb4724527f581fa"
}
],
"@context": "https://w3id.org/did/v0.11"
},
"resolverMetadata": {
"duration": 96,
"driverId": "did-stack",
"driver": "HttpDriver",
"didUrl": {
"didUrlString": "did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"did": {
"didString": "did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"method": "stack",
"methodSpecificId": "v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"parseTree": null,
"parseRuleCount": null
},
"parameters": null,
"parametersMap": {},
"path": "",
"query": null,
"fragment": null,
"parseTree": null,
"parseRuleCount": null
}
},
"methodMetadata": {}
}

Or use Blockstack's resolver

https://github.com/blockstack/blockstack-core/blob/master/docs/blockstack-did-spec.md#33--resolving-a-blockstack-did

DID <> Real-world: Verifiable Claims

Now we know how to recognize and resolve "who's who" without inherently carrying personally-identifiable information. However, what if we want DID to associate with real-world entities?

Imagine that Alice has a state-issued DID and wants to buy some alcohol without disclosing her real name and precise age.

drinking

The answer is to use “verifiable claims” (aka: credentials, attestations).

  1. claim = properties we know about the entity in subject-property-value relationships, e.g. name, email, age, membership, etc.
  2. verifiable = proofs (signatures) attached

Verifiable Claims Data Model

Identity Profile

type: unordered set of URIs

signature: Signature [0..1]

Entity Credential

id: URI

type: unordered set of URIs

issuer: URI

issued: date in string form

claim: Claim

Claim

(at least one custom property)

Verifiable Claim

signature: Signature

Signature

(varies, but expected to include

at least a signature, a reference

to the signing entity, and a

representation of the signing date)

id

id

1

0..*

A simple identity profile

{
"id": "did:ebfeb1f712ebc6f1c276e12ec21",
"type": ["Identity", "Person"],
"name": "Alice Bobman",
"email": "[email protected]",
"birthDate": "1985-12-14",
"telephone": "12345678910"
}

A simple claim

{
"id": "http://example.gov/credentials/3732",
"type": ["Credential", "ProofOfAgeCredential"],
"issuer": "https://dmv.example.gov",
"issued": "2010-01-01",
"claim": {
"id": "did:ebfeb1f712ebc6f1c276e12ec21",
"ageOver": 21
}
}

A simple verifiable claim

{
"@context": "https://w3id.org/security/v1",
"id": "http://example.gov/credentials/3732",
"type": ["Credential", "ProofOfAgeCredential"],
"issuer": "https://dmv.example.gov",
"issued": "2010-01-01",
"claim": {
"id": "did:ebfeb1f712ebc6f1c276e12ec21",
"ageOver": 21
},
"revocation": {
"id": "http://example.gov/revocations/738",
"type": "SimpleRevocationList2017"
},
"signature": {
"type": "LinkedDataSignature2015",
"created": "2016-06-18T21:19:10Z",
"creator": "https://example.com/jdoe/keys/1",
"domain": "json-ld.org",
"nonce": "598c63d6",
"signatureValue": "BavEll0/I1zpYw8XNi1bgVg/sCneO4Jugez8RwDg/+
MCRVpjOboDoe4SxxKjkCOvKiCHGDvc4krqi6Z1n0UfqzxGfmatCuFibcC1wps
PRdW+gGsutPTLzvueMWmFhwYmfIFpbBu95t501+rSLHIEuujM/+PXr9Cky6Ed
+W3JT24="
}
}

It equals to a JOSE JWT verifiable claim

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2Rtdi
5leGFtcGxlLmdvdiIsImlhdCI6MTI2MjMwNDAwMCwiZXhwIjoxNDgzMjI4ODAwL
CJhdWQiOiJ3d3cuZXhhbXBsZS5jb20iLCJzdWIiOiJkaWQ6ZWJmZWIxZjcxMmVi
YzZmMWMyNzZlMTJlYzIxIiwiZW50aXR5Q3JlZGVudGlhbCI6eyJAY29udGV4dCI
6Imh0dHBzOi8vdzNpZC5vcmcvc2VjdXJpdHkvdjEiLCJpZCI6Imh0dHA6Ly9leG
FtcGxlLmdvdi9jcmVkZW50aWFscy8zNzMyIiwidHlwZSI6WyJDcmVkZW50aWFsI
iwiUHJvb2ZPZkFnZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly9kbXYu
ZXhhbXBsZS5nb3YiLCJpc3N1ZWQiOiIyMDEwLTAxLTAxIiwiY2xhaW0iOnsiaWQ
iOiJkaWQ6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiYWdlT3ZlciI6Mj
F9fX0.LwqH58NasGPeqtTxT632YznKDuxEeC59gMAe9uueb4pX_lDQd2_UyUcc6
NW1E3qxvYlps4hH_YzzTuXB_R1A9UHXq4zyiz2sMtZWyJkUL1FERclT2CypX5e1
fO4zVES_8uaNoinim6VtS76x_2VmOMQ_GcqXG3iaLGVJHCNlCu4

DID and IOT

slides

Takeaways

DID

  • is probably a Differentiator for identity-oriented vendors but a Neutralizer (out of MMRs, neutralizers, and differentiators features) for others.
  • preserves privacy in a large group of products, so that no central company could know all your stuff from all your accounts from various products.
  • combined with verifiable claims, it leverage crypto but still requires trust in the physical world.

What blockchain developers can do?

  • Join DIF.
  • Proposing a DID method on how to operate DIDs on their blockchain.
  • Building our own decentralized identity provider.

References

Stratechery: Why amazon acquired whole foods?

· 3 min read

Answer: Amazon wanted to buy a customer for its grocery services.

Background

  • Amazon acquiring Whole Foods = Apple’s iPhone beating Palm

    • Don’t misunderstand goals vs strategies vs tactics - Apple’s strategy
      • is not to build a phone but to build personal computer
      • is not to add functionalities to a phone but to reduce the phone to an app
      • is not to duplicate the carriers but to leverage their customer connections
    • iPhone is the most successful product of all time = Amazon is the most dominant company of all time
  • Amazon's Goal

    1. Initially, Amazon.com’s objective is to be the leading online retailer of information-based products and services, with an initial focus on books.
    2. Then, it says "our vision is to be earth’s most customer centric company; to build a place where people can come to find and discover anything they might want to buy online."
    3. ==Amazon’s goal is to take a cut of all economic activity.==
  • Amazon's Strategy

    • to enterprise: AWS. Assuming that all businesses will soon be Internet-enabled businesses.
    • to customer: Prime. Assuming that superior cost/and/superior selection are not sustainable. With prime, alternatives won’t be even considered by customers.
      • However
        • grocery is the largest retail category.
        • grocery is the most persistent opportunity for reminding users there are other alternatives.
  • Tactics: develop grocery services

Why hadn’t Amazon figured out the right tactics?

BookGrocery
high SKUs = large selectionless SKUs(30k - 50k)
standardizedvary in quality
imperishableperishable

AmazonFresh’s cost disadvantage

  1. High costs of perishable items if not scaled
  2. Scale needs to be based on cities

Why can acquiring Whole Food (not doing other things) solve the scale problem?

==Primitives model for business with 1) hight fixed costs 2) high returns to scale==

  • decouple infrastructure into Minimal Sellable Units (MSUs)
  • business itself is ==The First-And-Best Customer== of those MSUs
  • resell MSUs to the outside

AWS Three Layers

ServicesPrimitivesS3, EC2, RDS, SNS, ...
PlatformAWSHigh Fixed Costs + Returns to Scale
InfrastructureModularized ComponentsData center, Servers, Storage, Switches, Bandwidth
  • MSUs are S3, EC2, RDS, SNS, etc
  • The First-And-Best Customer is amazon.com
  • resell MSUs to non-Amazon developers

Amazon.com Three Layers

ServicesPackagesFDA, Amazon Pay, ...
PlatformFulfillment CentersHigh Fixed Costs + Returns to Scale
InfrastructureModularized SuppliersManufacturers, 3rd Party Merchants, ...
  • MSUs are FDA, Amazon Pay, etc.
  • The First-And-Best Customer is Amazon first-party e-commerse
  • resell MSUs to 3rd party merchants

The insight here is that grocery business has no first-and-best customer.

Perfect Customer

After fitting in Whole Foods to the big picture, we can see that ==Amazon is buying more than a retailer - it’s buying a customer==.

Amazon.com Three Layers + Customers

CustomersWhole Foods, Delivery, Restaurants
ServicesGroceriesMeat, Fruit, Vegetables, Non-perishables, ...
PlatformFulfillment CentersHigh Fixed Costs + Returns to Scale
InfrastructureModularized SuppliersStore Brand, Name Brand, Local Suppliers, Regional Suppliers, ...

Now Amazon Grocery Services can serve AmazonFresh and WholeFoods, and then in the future restaurants or whatever can consume it.

Representative Heuristics — Making Judgments Under Uncertainty

· 3 min read

When faced with uncertainty, people often rely on heuristics to make judgments. Heuristics can be useful, but they can also lead to biases: for example, the judgment that not being able to see clearly = being far away is correct in most cases, but if you intentionally obscure something, people may mistakenly believe it is farther away.

When judging probabilities and valuations, people often use three heuristics: representativeness, availability, and adjustment and anchoring.

Representativeness Heuristic

  1. ==People often confuse representativeness with probability==. A neighbor describes Steve as shy, taciturn, helpful, but uninterested in people and the world. When asked to judge which profession is more likely for him: farmer, salesperson, pilot, librarian, or doctor, people will mistakenly believe Steve is a librarian because it fits their stereotype of that profession.
  2. So what factors can help improve probability judgments?
    1. Prior probability, also known as ==base rates==. When considering representativeness, especially when presented with meaningless evidence, people tend to subconsciously ignore base rates and incorrectly use representativeness to make judgments. In the case of Steve, applying prior probability and Bayesian reasoning is necessary to arrive at the correct answer.
    2. Sample size. Sometimes, sample size can better explain issues than the patterns revealed by the sample.
    3. Correct understanding of odds. The gambler's fallacy, for instance, is the incorrect belief that probabilities will self-correct to the mean during a game of chance, while in reality, it is merely self-dilution; the probability of rolling ten "highs" in a row is the same as rolling a "high" and a "low" fifty-fifty.
    4. Predictability. The higher the predictability, the broader the range of estimated values. For example, a brief assessment of a teacher's teaching level should not be sufficient to judge that teacher's performance five years later.
    5. Caution against overconfidence leading to an illusion of validity in one's predictions, caused by confirmation bias, where people tend to seek evidence that supports their views, pay more attention to information that backs their opinions, or interpret information in ways that support their beliefs. Judgments based on several independent events tend to be more accurate than those based on redundant, correlated events.
    6. Regression to the mean. People often overlook this trend, and even when they are aware of it, they can easily misinterpret its causes. For example, in pilot training, instructors find that praising a pilot after a smooth landing leads to relatively worse performance next time; conversely, criticizing after a hard landing leads to relatively better performance next time. Instructors may mistakenly believe that praise and criticism caused the subsequent performance changes, while in reality, it is merely regression to the mean. Thus, people often overestimate the effects of criticism and underestimate the effects of praise.

Good Strategy and Bad Strategy (Part 2)

· 4 min read

4 WHY SO MUCH BAD STRATEGY?

There are three reasons-

  1. It is painful to make a choice
    • A democratic voting may result in the paradox of voting (reaching an unlogical result like A > B > C > A). For example, the DEC company had three options when making strategic choices - producing server "boxes", "chips", or "solutions". CEO Ken Olsen let people reach a consensus. However, you cannot make sub-organizations give up their passions by themselves. Finally, they failed to choose any one of them, and the answer was "DEC is committed to providing high-quality products and services and being a leader in the data processing."
    • Eisenhower in 1952 won the presidential election and promised to urge the Soviet Union to retreat from Eastern Europe. However, after researching, he cannot do so and had to confront reality.
    • Intel CEO Andy Grove moves the company from producing dynamic random access memory (DRAM) to the one focused on microprocessors. In retrospective, that was a great move but back at his time, he did this under enormous pressure.
  2. People like to follow templates without thinking
    • Mistaking leadership for strategy. Leadership and strategy have something similar but are substantially different.
      • Leadership makes people feel better when they are sacrificing for changing.
      • Strategy decides which kind of change worth pursuing.
    • misbelieving that having a strategy equals to having a GOOD strategy. There are numerous templates for strategies and people just take them without thinking, which leads to countless bad strategies.
  3. New Thought Movement: people misbelieve that a positive attitude and a strong desire can earn them everything they want.
    • This kind of "positive energy" is the opium of the people, which makes them too lazy to focus on the execution that is truly helpful to the result.

5 THE KERNEL OF GOOD STRATEGY

The kernel of the good strategy

  1. diagnosis: simplifying the problems and identify the challenges and obstacles.
  2. guiding policies: specifically dealing with those problems and challenges.
  3. coherent actions: under the guiding policies, taking actions with alignments.

Three examples:

In business, the challenge is usually dealing with change and competition.

  1. diagnosing the specific structure of the obstacle rather than simply naming performance goals.
  2. choosing an overall guiding policy for tackling the obstacle that enables some type of leverage or advantage.
  3. design of a configuration of actions and resource allocations that implement the chosen guiding policy.

In many large organizations, the challenge is often diagnosed as internal.

  1. organization's competitive problems may be much lighter than the obstacles imposed by its own outdated routines, bureaucracy, pools of entrenched interests, lack of cooperation across units, and plain-old bad management.
  2. reorganization and renewal.
  3. changes in people, power, and procedures.

Amazon's Flying Wheel

  1. Diagnosing that e-commerce and cloud computing are high-costs with high-returns. Thus the company should keep or increase the high return while cutting the costs.
  2. Designing the policies of the flywheel. See the picture below.
  3. Building infrastructures and services around the flywheel.

The Amazon business model as drawn by Jeff Bezos on a napkin

I think the "coherent actions" are very interesting.

  • Coherent actions means that those actions should align in the same direction, instead of conflicting with each other. For example, as a manager, when I introduce any process to anyone, my principle is that "I would never do things that are not helpful to your work."
  • Strategic alignment can hardly be arranged in real-time. It is designed by the leader and enforced on the system.
  • Centrally-controlled system sounds bad but each component of the system cannot just operate in absolute autonomy. For example, in the manufacturing industry, the salespeople love to please customers with rush orders, but the manufacturing people prefer long steady production runs. Rush orders and steady production runs cannot happen at the same time. The management has to make a tradeoff.

Good Strategy, Bad Strategy

· 17 min read

Introduction: Targeted Approach

Strategy is about designing and executing a combination of punches: Where is the enemy? Where should we strike, and where should we not? How do we throw our punches? How can the first punch help the second and third?

The core of strategy = Analyzing the current situation + Guiding principles + Coherent actions

Part One: Good Strategy, Bad Strategy

1 Good Strategy is Unexpected

Good strategy is unexpected yet reasonable. For example, in 1997, when Steve Jobs returned to Apple, he drastically reduced the product line and focused on a few profitable products. When asked how to deal with the dominant Wintel alliance, he did not give an elaborate strategic speech or set grand growth targets; he simply smiled and said he would wait for the next wave.

Another example is the Gulf War's Operation Desert Storm, where the main forces were reported to be advancing slowly in the media, while another wave of troops stealthily penetrated the enemy from another direction.

Doing everything and believing everything is important is equivalent to believing nothing is important. Good leaders need to know not only what to do but also what not to do.

2 Viewing Strengths with a Discoverer's Eye

The most fundamental strategy is the SO strategy—Strengths (S) plus Opportunities (O). So where do these strengths come from?

Shakespeare said well in Hamlet: "There is nothing either good or bad, but thinking makes it so." Viewing the world dynamically, strengths and weaknesses are relative. A classic example is the story of David and Goliath. From a secular perspective, David is weak and Goliath is strong; David is a newcomer, while Goliath is an experienced giant warrior. Yet David defeated Goliath with a sling.

The story of Walmart defeating Kmart illustrates discovering advantages from unexpected places. Traditional wisdom in American retail is that a diverse supermarket needs to be located in an area with at least 100,000 people. However, Walmart was able to open in less populated areas. Why? Because Walmart has more efficient supply chain management, creating an organic network between stores, while Kmart's stores were less interconnected, leading to higher inventory management costs and less bargaining power in procurement.

During the Cold War arms race, Andy Marshall's strategy against the Soviet Union was to develop comparative advantages by leveraging America's economic and technological strengths to develop technologies that would be costly for the opponent to counter but would not pose a threat to the U.S., such as improving missile accuracy and developing silent submarines. Ultimately, this strategy led to the downfall of the Soviet Union.

3 Bad Strategy

Bad strategy is formalism and has four basic characteristics:

  1. Empty rhetoric == Fluff ==: Strategy should not be a pile of grandiose terms.

    • For example, a bank might say, "Our core strategy is to be a customer-centric intermediary," but essentially, it means "Our bank's core strategy is to be a bank."
  2. Inability to confront challenges

    • If you cannot face resistance, there will be no strategy. Instead, you will only have an unattainable goal.
    • This reminds me that choosing root-level metrics must be done very carefully; == if it cannot be quantified, it cannot be improved. ==
    • A positive example is DARPA.
  3. Mistaking goals for strategy

    • For instance, a company claims a 20/20 strategy—20% revenue growth this year and a profit margin of at least 20%. This is not strategy; it is merely a goal.
    • Metrics are not strategy.
  4. Sub-goals that are irrelevant or unrealistic

    • Goals are the overall objectives; objectives are sub-goals.
    • Good strategy focuses limited energy and resources on a single or few sub-goals, achieving which can generate new advantages.
    • What constitutes a bad sub-goal?
      1. Putting everything together without prioritization.
      2. Setting unrealistic expectations.

4 Why Are There So Many Bad Strategies?

There are three main reasons:

  1. Making choices is painful.

    • Voting leads to the voting paradox: democratic voting can yield irrational results like A > B > C > A. For example, when DEC was making strategic choices, there were three factions: focus on "servers"? Or "chips"? Or "solutions"? CEO Ken Olsen sought consensus, but essentially, you cannot make a sub-organization automatically give up its own enthusiasm. So in the end, everyone chose a compromise: "DEC is committed to being a leader in providing high-quality data products and services." This is just empty rhetoric.
    • Eisenhower promised to withdraw Soviet troops from Eastern Europe during his 1952 presidential campaign, but after winning the election and conducting extensive research, he made the difficult decision to abandon that promise.
    • Intel CEO Andy Grove faced a tough decision to shift from DRAM to microprocessor strategy.
  2. People prefer to use templates without thinking.

    • For example, mistaking leadership for strategy. Leadership and strategy have similarities but should never be confused.
      • Leadership encourages self-sacrifice and transformation, making people feel good.
      • Strategy is about articulating what transformations are worth pursuing.
    • A similar confusion arises when having a strategy leads one to believe it is a good strategy. Countless books and tutorials provide templates for people to fill in mindlessly, resulting in numerous bad strategies.
  3. People often believe in human dominance over fate, thinking attitude determines everything.

    • Zhang Defen's "Law of Attraction" creates a fantasy of "positive energy" regarding outcomes, leading people to neglect the real efforts that contribute to results, which is a form of mental opium. We should focus more on imagining the process of doing things, akin to simulation training.

5 The Core of Good Strategy

The core of good strategy consists of three basic elements:

  1. Diagnosis: Simplifying problems, identifying challenges and obstacles.
  2. Guiding principles: How to respond to challenges?
  3. Coherent actions: A series of actions guided by principles that mutually reinforce each other.

Here are three examples:

In business, many challenges arise from external changes and competition.

  1. Analyze the structure of specific competition rather than merely listing performance goals.
  2. Choose guiding principles that can broadly address these situations and create advantages for the future.
  3. Set up a series of actions and resource allocations that effectively realize the guiding principles.

In large organizations, challenges often come from within, which is why large organizations frequently undergo restructuring.

  1. External competition is not as important as internal obstacles—outdated processes, bureaucracy, conflicts of interest, lack of cooperation, and outdated management styles.
  2. Choose restructuring strategies that can innovate the organization.
  3. Change the distribution of people and power through restructuring to improve processes.

The flywheel effect of Amazon.

  1. Analyze that e-commerce and cloud services are high-cost and high-return, so reduce costs while ensuring returns.
  2. Design the flywheel effect.
  3. Build AWS's data centers and various cloud services around the flywheel effect, creating the infrastructure and e-commerce services for Amazon.com.

This point about "coherent actions" is particularly interesting.

  • "Coherent complementary actions" means these actions directly help each other to create synergy. For example, as a manager, I introduce the principle that == "I will never make you do anything that does not help your core work." ==

  • Strategic collaboration is not something arranged on the fly; it is deliberately designed and centrally imposed on the system.

  • Centralization can be a bad thing, but a disorganized approach is also ineffective because different sub-organizations have different interests. For instance, in manufacturing, sales may prefer to please customers with urgent large orders, while production departments prefer stable, uninterrupted output over the long term. It is impossible to manage both urgent large orders and stable production simultaneously.

  • Organizational collaboration is time-consuming and labor-intensive; do not pursue it without sufficient benefits. Smart organizations do not aim for 100% communication among everyone but rather achieve just the right amount of coordination.

Part Two: Sources of Strength

The effectiveness of good strategy lies in focusing limited energy on the points that yield the most results. Good steel is used at the cutting edge.

So we must ask, where does this energy come from? Here are some common sources:

  • Leverage: We cannot have infinite power to do anything, but there is always a certain amount of power to do some things. If this power is leveraged, we can achieve more with less effort. Leverage can come from several places:

    1. Forecasting. In competitive strategy, key forecasts often involve buyer demand and competitor responses.
    2. Pivot points. Pivot points can amplify capabilities and resources. For example, when 7-11 was in Japan, it discovered that "customers in different regions of Japan have their unique local tastes" and accordingly adjusted its supply based on feedback from staff and store managers.
    3. Concentration. Many things have a == threshold effect ==; if your continuous investment does not reach a certain threshold, the final effect will be no different from doing nothing. For example, in the advertising industry, continuous small-scale advertising is less effective than concentrated promotion in specific regions. Mao Zedong concentrated superior forces to eliminate the enemy's living strength.
  • Grasp: Kennedy broke down the Apollo moon landing program into several clear, achievable sub-goals or milestones: unmanned exploration, larger propulsion rockets, parallel development of liquid and solid fuel rockets, and building landing vehicles.

  • Chain systems. A system like a chain, where the weakest link determines the maximum pull the entire chain can withstand. To strengthen the entire system, each link must be reinforced. Such systems are extremely difficult to replicate, like IKEA. This investment requires leaders to withstand pressure to advance because the strengthening of the system is nonlinear; only when the last link is reinforced can the effects be seen.

  • Design.

    • Hannibal's Battle of Cannae resulted in one of the most painful defeats in ancient Roman history and is also one of the deadliest battles in global history in a single day.
    • Analysis and design of complex systems: What elements does the system have? How do these elements interact? What trade-offs will there be for optimizing towards what goals?
    • For example, in the U.S. heavy truck market, a thorough analysis of how this system operates identified key persons who could decide purchasing choices, then optimized specifically for the needs of these key persons.
  • Focus strategy, providing specific services for specific groups.

    • For example, Crown Cork & Seal Company survived in this competitive field by focusing on small urgent orders for small manufacturers.
  • Growth. The growth of team size should not be deliberate but rather a natural result of the company's product growth.

    • Again, the aforementioned Crown company made acquisitions, which led to a stock price crash from 55to55 to 5. Similar cases include LeEco and Yahoo.
  • Utilizing advantages. Comparative advantages are domain-specific; a champion runner may not excel in high jumping.

    • For instance, a startup that the author collaborated with wanted to transition from making fabrics to making clothes, mistakenly not realizing that the fabric for clothing and making clothes are entirely different fields.
  • Dynamics: exploit a wave of exogenous change.

  • Inertia, momentum, and entropy. Inertia can be utilized; for example, Microsoft transitioned from a B2B office suite to a B2B cloud. Closed systems decay due to entropy, which may explain why American companies are keen to bring in external managers.

Among these, the point about external change is particularly interesting. Generally speaking, there are two ways to gain strategic high ground that is easy to defend and hard to attack:

  1. Independent innovation.
  2. Riding the wave of change.

It's easy to be an armchair strategist after the fact. To make predictions before taking action requires a deep understanding of the past and present, seeing through phenomena to the essence, and thus being able to deduce the second and third steps. Unfortunately, most people can only see the present.

For example, after television emerged in the 1950s, everyone realized that the film industry would struggle, but few could predict that the next step would be the rise of independent films. Independent filmmakers could break free from traditional studio ties and focus on making good films, as only good films could attract audiences to theaters.

Cisco has occupied three competitive high grounds:

  1. Software and microprocessors.
  2. Corporate networks.
  3. IP networks.

Signposts pointing to competitive high ground:

  1. Fixed costs soar. For example, capital-intensive big productions give rise to large film companies. The development costs of large software systems give rise to large software companies.

  2. Deregulation. For example, China's reform and opening up.

  3. Prediction bias.

    1. The illusion of growth. For example, few can predict when a business or economy reaches its peak and begins to decline. Growth always has an end; a person who has bought one television is unlikely to buy a second immediately. == The faster sales grow, the faster the market saturates. ==
    2. The illusion of winner-takes-all. Yes, it is winner-takes-all, but not necessarily; large companies can suffer from internal issues, and external changes can occur.
    3. The illusion of winners always winning. For example, Yahoo.
  4. The incumbent effect: unwilling to harm short-term interests for reform, similar to the Innovator’s Dilemma. B2B businesses cannot consider helping companies save money; they should help companies make money, or they will offend entrenched interests within those companies.

  5. == Attractor state == or "end-state thinking," the state the market should reach. ==

Attractor state is an interesting new concept. Here, we elaborate on it. It differs from a company's vision in that a vision is unique to the company, while an attractor is the equilibrium that the entire market should reach.

It has two related concepts: accelerants and impediments.

  • A typical accelerant is the "proof effect"; for example, Napster made everyone suddenly realize that 2.5MB of music could be downloaded, copied, and sent, while Bitcoin made everyone suddenly realize that investing in virtual currencies could lead to wealth.

    • Mao Zedong's idea that a spark can start a prairie fire: concentrating forces to eliminate larger enemies, occupying towns, can mobilize a broad base of support and establish a regime across several counties. This can amplify political influence and promote the actual effectiveness of revolutionary peaks.
  • A typical example of an impediment is the public's fear and resistance to nuclear power plants, even though people know that nuclear energy is the trend of the future.

Let's analyze the external changes facing the newspaper industry.

Taking The New York Times as an example, the cost of printing newspapers is about two to three times the subscription revenue, and printing costs are mainly covered by advertising. Since 2009, two problems have emerged:

One is the rise of other easily accessible new media, leading to a decline in newspaper readership, and the other is that advertising in newspapers has been taken over by Google.

Differentiation in news media has three dimensions: space, frequency, and depth. The author believes that the market's attractor leans towards specialization in these niches rather than broad coverage. In the era of "Internet + newspapers," from a cost-reduction perspective, The New York Times should leverage its brand and collaborate broadly with various information sources rather than relying on a small number of professional journalists.

The more precise the reader base, the more advertising revenue can be generated.

Part Three: Thinking Like a Strategist

How to think like a strategist? The answer is "external perspective," thinking about why you think the way you do.

16 What Kind of Discipline is Strategy?

  • Deductive vs. Inductive reasoning

    • The author meets with engineers from Hughes to formulate strategy.
      • Engineers dislike formulating strategy because their thinking is == deductive ==. They plan with certainty; they do not design a bridge that might hold a certain weight.
    • Deductive reasoning only works when one is omniscient; when faced with the unknown, it becomes ineffective.
    • == Deductive reasoning can stifle innovation. == Galileo's trial inspired the Enlightenment, which addressed how to deal with this issue through scientific empiricism.
    • Good strategy is based on hypotheses about what will work.
  • Formulating and implementing strategy is a scientific inductive process: observing and learning, forming hypotheses, collecting data, validating hypotheses, proposing hypotheses, and repeating the cycle. When Howard Schultz founded Starbucks, he had a hypothesis that an Italian café could succeed in the U.S., where cheap coffee was prevalent. He started by investing hundreds of thousands of dollars in a small café to validate the hypothesis, continuously optimizing until achieving vertical integration.

17 Focus on the Process of Thinking

  • Back to basics—list priorities.

    • Steel magnate Andrew Carnegie asked the father of scientific management, Taylor, "Young man, since you are my advisor, if you can tell me what management methods I should know, I will give you 10,000."10,000." 10,000 was a fortune in 1890. Taylor replied, "I would suggest you list the ten most important things and then focus on the first one." A week later, Taylor received a $10,000 check.
    • The author, when young, interviewed an executive and felt that there was nothing significant, just templates, and asked many template questions. However, the executive later felt that this conversation was the most valuable one he had had in the past year.
    • We cannot control thoughts, but we can control the process by which thoughts arise. The list itself may not be important; what matters is the process of generating the list.
  • Where do strategic thoughts come from? Typically, ideas emerge directly from the mind, and people find it hard to realize how these ideas come about; strategic thinking often means stepping outside this shortsightedness.

    • The core solution: == Think about your thinking. ==
  • There are tools that can help you think about your thinking.

    • Develop good habits.
      1. Use tools and processes to combat shortsightedness.
      2. Question your judgments, especially before genuinely engaging in competition.
      3. Record your judgments for future validation and review.
    • Tools and processes.
      • Strategic core: Diagnosis, guiding principles, coherent actions.
      • Q&A: Ask questions, analyze problems, provide answers. First ask why, then ask what.
      • Break and establish.
        • Do not list other options that a straw man might consider; set up a == virtual expert committee. ==
        • == Good strategies are often corner solutions. == This means emphasizing focus rather than compromise, concentrating on helping a subset of people solve specific problems without trying to solve every problem for everyone.
      • Contact review.
        • Three levels of review:
          • Recognizing one's own abilities and biases.
          • Recognizing others and how they will react to information and challenges.
          • Recognizing the market.
        • How to practice?
          • Rehearse.
            • Know as much as possible.
            • Identify important and unimportant factors.
            • Cultivate your viewpoint and be able to confidently disagree with others.
          • == Predict how people will behave before meetings. ==

18 Maintain Your Views

This chapter illustrates a problem through two examples: how to have opinions without being narrow-minded and stubborn. The answer is to introduce external perspectives.

  • One example is that when evaluating a company, one should not only look at the stock price but also consider the fundamentals. Global Crossing made decisions solely based on stock prices and subjective desires, creating a closed loop between stock prices and company decisions, leading to a disastrous outcome. == Gödel's incompleteness theorem tells us that in sufficiently complex logical systems, there are always things that cannot be self-verified within the system. To judge right from wrong, one must rely on external knowledge. ==

  • Another example is the 2008 financial crisis, a product of herd behavior combined with internal perspectives.