QIAOPANG.COM · SELECTED ESSAYS (2013–2026) · 260 ESSAYSBrowse Chronologically (2013 → 2026) ↗
QiaoPang · Programmers LifeSelected Essays · Systems, Craft & Agentic Era
Timeline ↗
COMPLETE COLLECTION · 260 ESSAYS

All Curated Essays (2013–2026)

Ordered chronologically by default (#001 → #260). Switch to newest-first or filter by column, year, or keyword.

Switch to compact timeline view →

Showing all 260 essays (Chronological #001 → #260)

Long Days Leave No Trace (Part I)

Another sweltering Saturday, the smog still blanketing Beijing. As my wife and mother-in-law roam the toy stores at Solana, I sit with my daughter by the ice rink, watching two boys drill—and slip into a long meditation on what makes a great programmer.

Book Next Chronicles (2013–2020)8,435 chars · 19 min read

Musings on Indirection

The line I hold in highest regard in computing is: "All problems in computer science can be solved by another level of indirection." It's easy enough to grasp—let me offer a few examples, from the operating system to the humble phone charger, and see how one extra layer turns chaos into elegance.

Book Next Chronicles (2013–2020)1,051 chars · 2 min read

On Agile

Agile has been a hot topic in software development for years, yet many who bandy the word about have never read the Agile Manifesto—let alone understood it. Adopting agile without grasping its values is like fighting a war with tactics but no strategy: failure is only a matter of time.

Book Next Chronicles (2013–2020)1,618 chars · 4 min read

If You Can Spend Money, Don't Spend Time

If you're looking for the stingiest people on the planet, look no further than programmers — I was once one of them. Then a simple rule changed everything: if a reasonably priced product buys back your time, never waste hours chasing a free alternative.

Book Next Chronicles (2013–2020)1,134 chars · 3 min read

The Seven Habits of Highly Effective Programmers

Every programmer's first two lessons should come from the Unix philosophy: do one thing, and do it well. From there — pick a role model to chase, write code instead of tweaking it, debug smartly, write docs in markup, treat everything as a project, and stay open to new ideas.

Book Next Chronicles (2013–2020)3,218 chars · 7 min read

How to Publish a Patent

Patents are neither mysterious nor lofty: they are simply public technical methods for solving a problem. This essay explains why companies file them, how engineers can get through internal review, and what a patent is really worth to your career.

Book Next Chronicles (2013–2020)2,870 chars · 6 min read

On the Beauty of Unix

Unix’s philosophy favors small, composable tools over monolithic commands. A simple pipeline like `docker ps -a -q | xargs docker rm` shows how four independent commands can combine elegantly to solve a problem.

Book Next Chronicles (2013–2020)1,031 chars · 2 min read

How to Learn a Programming Language from Scratch

My first practical language was Visual Basic. After getting lost in handles, message loops, and MFC, VB taught me the worth of simplicity, directness, and good documentation. On choosing a first language, learning it through its history and ideas, and leveling up.

Book Next Chronicles (2013–2020)3,245 chars · 7 min read

Innovation Is Not a Campaign, It's a Culture

A new broom sweeps clean: no sooner has the new CEO's opening salvo landed than the company launches another full-throated innovation campaign. The question on every mind is how long this sudden wave will last — and whether a campaign can ever become a culture.

Book Next Chronicles (2013–2020)2,708 chars · 6 min read

The Languages I Chased in Those Years

Your humble programmer was young once, and the price of youth is blind devotion. From MS-DOS 6.0 through Delphi, PHP, Python, and Erlang to Go — a chronicle of the languages I chased, and what each one left behind.

Book Next Chronicles (2013–2020)4,599 chars · 10 min read

Why I Have More Time Than You

The cornerstone of time management is the four-quadrant model. My routine probably isn't universal: I'm up by 5:40, out the door by 6:10, and at my desk by about 6:50 — which buys me two or three extra hours a day. But extra hours don't automatically mean productive ones.

Book Next Chronicles (2013–2020)1,713 chars · 4 min read

Under Pressure: What Doesn't Kill Me Makes Me Stronger

A TED talk argues that stress itself won't wreck your body — believing stress is harmful will. It sounds like chicken soup, yet years of research back it, echoing Harvard's happiness course: belief is a self-fulfilling prophecy. On coping, and on why you may need more pressure, not less.

Book Next Chronicles (2013–2020)2,340 chars · 5 min read

Pressure Management, Continued: Comparison Kills

Beyond direct pressures lies the indirect pressure of comparison: friends marry while we stay single; less capable peers land great offers while we struggle; idealistic classmates thrive while we settle for money and miss the expected fortune. We know it is toxic, yet we brood.

Book Next Chronicles (2013–2020)2,195 chars · 5 min read

The Growing Pains of a Company

Since becoming an entrepreneur, I've instinctively imagined myself at the helm, wondering what I would do in charge. One question has haunted me lately: why does every company — however brilliant or innovative — inevitably drift toward mediocrity, and finally decline?

Book Next Chronicles (2013–2020)1,531 chars · 3 min read

Why You Need to Understand Information Security

Data breaches, leaked emails, stolen cards, exposed employee directories—these failures keep coming, and nobody is immune. Even outside security work, you need to grasp availability, integrity, confidentiality, and the human weaknesses attackers exploit.

Book Next Chronicles (2013–2020)5,228 chars · 12 min read

Even If Others Are Code Monkeys, You Needn't Be

There's an article lamenting that Chinese programmers are all called 'code monkeys.' Whether others deserve the label isn't your concern — you shouldn't become one. On pay, dull work, and long hours: salary follows what you build, dullness is subjective, and overtime is a choice.

Book Next Chronicles (2013–2020)2,782 chars · 6 min read

On Salary, Bonuses, Options, and Stock

Most desk-bound programmers earn their living from salary, bonus, options, and stock. This essay explains how each component actually works—and why the structure of an offer matters far more than its headline number.

Book Next Chronicles (2013–2020)2,101 chars · 5 min read

When You Look Back on Your Life

My grandfather marched into Xinjiang; my father studied late and moved the family south. Their stories shaped me. Now a father myself, I ask what stories I will have to tell—and find meaning in books, travel, and wisdom.

Book Next Chronicles (2013–2020)2,726 chars · 6 min read

The Black Box

A black box on an aircraft records the critical data needed to reconstruct a crash. Software systems need the same capability: a flight data recorder that captures the right runtime evidence before failure, so root-cause analysis remains possible.

Book Next Chronicles (2013–2020)2,320 chars · 5 min read

On Reading

Reading starts as entertainment and knowledge; add experience, understanding, and insight, and it becomes wisdom. 'Must-read' is a coercive, utilitarian phrase—Jobs's calligraphy class reminds us that dots connect only looking backward.

Book Next Chronicles (2013–2020)5,481 chars · 12 min read

The Technologist's Vision

Weekends are busier than weekdays: classes, reading, and play with my child are mandatory. A friend warned that early education is useless and stressful, but I disagree—usefulness depends on the child's enjoyment, not adults. I offer chances without forcing her.

Book Next Chronicles (2013–2020)1,588 chars · 4 min read

Setting Goals

A clear, well-defined goal is what drives us each day—and very likely the wellspring of our happiness. Drawing on his own half-marathon training, patents, and interviews, the author offers a mutant take on SMART: A for Aspired, not merely Achievable.

Book Next Chronicles (2013–2020)5,387 chars · 12 min read

On Programming Philosophy

Programming philosophy is a vast subject. This essay sorts it into four layers — principles, paradigms, methodologies, and patterns — and argues that every software idea, however novel, ultimately aims at one thing: reducing system complexity, repetition, and code churn.

Book Next Chronicles (2013–2020)6,027 chars · 13 min read

On Python

Open any Python interpreter and type `import this`. No other language I know has woven its culture into the language itself so cleverly or so openly. The text that appears deserves careful digestion — and it leaves you wondering: what exactly is `this`?

Book Next Chronicles (2013–2020)3,814 chars · 8 min read

Farewell, Xierqi

In 2003, fresh out of college, I got off the train at Xierqi and nearly dropped my jaw: a cart full of farm produce was ambling down the middle of the road as if it were a country lane. Over a decade later, I returned to teach at Oracle and found the place utterly transformed.

Book Next Chronicles (2013–2020)2,015 chars · 4 min read

On Management

A first-line manager reflects on the values that matter more than authority and metrics: trust, observation, service, coaching, leading by example, and clear rewards and consequences. Management, he argues, is less about books than about lived experience and understanding people.

Book Next Chronicles (2013–2020)5,255 chars · 12 min read

A Story Aboard CA985

After an eleven-hour flight, this programmer lands safely in San Francisco — and stumbles into an unexpected good deed that earns him praise from airport staff and a stranger's lasting gratitude.

Book Next Chronicles (2013–2020)2,482 chars · 6 min read

Face to Face with Siri's Co-Founder, Adam Cheyer

On a Silicon Valley trip, I finally attended a local meetup to hear Adam Cheyer, co-founder of Siri, speak. He shared lessons on starting companies after forty, setting verbal goals, timing the future, and doing hard things.

Book Next Chronicles (2013–2020)4,740 chars · 11 min read

Touch and Feedback Systems

Today I sat in on a Stanford lecture titled "EngX: The Digital Sensory System," fulfilling a long-held wish to take a proper class there. If you're ever in Silicon Valley on business, check event.stanford.edu for a lecture worth attending.

Book Next Chronicles (2013–2020)1,686 chars · 4 min read

What I Think About When I Travel

Four days driving alone through California — Tahoe, Yosemite, Universal Studio, Highway 1 — with a GPS for company and thoughts drifting from cscope grammars to the fisherman parable. A meditation on solitude and why we strive: to earn the right to choose.

Book Next Chronicles (2013–2020)10,110 chars · 22 min read

On Programming

Programming is the ability to solve problems efficiently with a computer—a skill that will increasingly affect, though not determine, your ability to thrive. A teenage developer's story shows how non-CS professionals gain an edge by pairing business problems with a little code.

Book Next Chronicles (2013–2020)1,531 chars · 3 min read

On University

Everyone reaches for "an independent spirit and free thought" when talking about university; I'll settle for the humbler tale of my own — a botched college application, easy money and arrogance, a stock crash, and the slow reckoning with my own narrow horizons.

Book Next Chronicles (2013–2020)8,592 chars · 19 min read

A Love Affair with the World Cup

From a recorded Serie A match watched beside my father to a lifetime of devotion to Juventus and the Azzurri, these are World Cup memories — of fandom, fatherhood, and the cruel arithmetic of growing four years older every time the tournament returns.

Book Next Chronicles (2013–2020)3,487 chars · 8 min read

Design Patterns for System Development

Separating control and data planes is a foundational networking idea: data planes forward packets at hardware speed while control planes handle slower protocol work. This essay maps similar patterns—fast paths, queues, pipelines, state machines, and watchdogs—onto systems.

Book Next Chronicles (2013–2020)3,210 chars · 7 min read

The Meaning of Work

We have traveled so far that we have forgotten why we set out. A typical career spans roughly 80,000 hours—longer than almost any other commitment in life, yet it slips away one exhausted commute at a time. What, then, gives work its meaning?

Book Next Chronicles (2013–2020)1,339 chars · 3 min read

When Diligence Catches Up with Time

Klose, who once threw a front flip with effortless grace, has grown old. When the goal that tied Ronaldo's World Cup record went in, the celebratory flip became a tumble. The stumble passes with a sigh; what lingers is the goal — and a meditation on diligence, time, and men who refuse to fade.

Book Next Chronicles (2013–2020)1,947 chars · 4 min read

On Running

With the World Cup more than halfway through, staying up every night to watch will push your body to its limit. On match-free nights, sleep well, move more, and get fit—especially if you neglect exercise and carry the “three highs.”

Book Next Chronicles (2013–2020)3,649 chars · 8 min read

Programmers and Writers

The internet's new economy has been reshaping how we work for two decades, and programmers stand first in line. The future may belong to small, self-organizing teams that behave like writers — owning projects end to end, earning both immediate and long-term rewards, and living with the work rather than simply clocking in.

Book Next Chronicles (2013–2020)2,594 chars · 6 min read

Hiring and Retaining Talent

Let's begin with hiring. In this piece, "talent" means engineers of all kinds — UI/UX, software — since startups are hungriest for them, and the traditional channels for finding them are failing. Here's how to hire and keep them.

Book Next Chronicles (2013–2020)4,518 chars · 10 min read

The Marathon: Suddenly a Serious Business

On July 18, Beijing Marathon pre-registration opened with two paths before me: half or full. I chose the full — and learned that finishing alive would demand far more than courage: a plan, and systematic training.

Book Next Chronicles (2013–2020)2,134 chars · 5 min read

On Work: The Digital China Chapter

My career is neither long nor short: eleven years, just past thirty. Writing this is awkward — strip away two years of startups and I have nine years in just two companies, both in the same industry. Here I trace that path chronologically, starting with Digital China Networks.

Book Next Chronicles (2013–2020)6,919 chars · 15 min read

Just Like That, I Ran My First Marathon

At the end of July I published an essay titled “The Marathon Suddenly Became a Serious Matter.” I never imagined that within a month this “serious” matter would become real—and that I would run my first full marathon.

Book Next Chronicles (2013–2020)2,759 chars · 6 min read

Measurement

In the Lean Startup loop, measurement is the crucial link between build and learn: once some or all of a system exists, we must find the right instruments to extract data worth reflecting on. A software feature you cannot measure is like a doctor's prescription for the common cold — who knows whether it works.

Book Next Chronicles (2013–2020)3,092 chars · 7 min read

Why SOA Matters So Much

SOA is not a stack of fading protocols but a discipline of strict loose coupling through service contracts. By turning capabilities into independent services, teams can decouple languages, scale, measure, and optimize without dragging old code into every new feature.

Book Next Chronicles (2013–2020)3,646 chars · 8 min read

How to Master a Technology Quickly

Between us and our goals lies a river called prerequisites. Most are swept away; a few cross effortlessly, seemingly learning any technology with ease. Mastering a technology is less a talent than a method: bypass obstacles, learn what you need, practice, and seek feedback.

Book Next Chronicles (2013–2020)2,104 chars · 5 min read

Yes, I Am That Idiot Who Ran the Beijing Marathon

After six months of training, race day dawned with PM2.5 near 400 — and I ran anyway. On holding pace, hitting the wall, a knee that betrayed me, and why a goal you chase for yourself is worth every sneer.

Book Next Chronicles (2013–2020)4,291 chars · 10 min read

Doctor Qi's Management Lessons

Mao Xiaotian is restless: his boss is leaving, and a rare shot at management beckons. So begins a young engineer's apprenticeship under Dr. Qi, an old-hand manager who teaches that leadership is less about control than about heart.

Book Next Chronicles (2013–2020)15,767 chars · 35 min read

The Diagramming Tools I've Chased Through the Years

A good engineer writes good docs, and good docs come with good diagrams. A tour through the tools I've chased over the years — Word, Visio, OmniGraffle, Graphviz, ditaa, and PlantUML — and why diagramming languages beat drag-and-drop.

Book Next Chronicles (2013–2020)6,603 chars · 15 min read

Life Is Just One Big Hassle

A visa stuck in 'administrative processing,' a relocation that stalls out every time it builds momentum, and three bosses gone in six months — this is the story of pushing a boulder uphill and watching it roll back down. Blackly funny, stubbornly hopeful.

Book Next Chronicles (2013–2020)4,314 chars · 10 min read

The Disruptor's Game: Programming Languages

The users of programming languages are programmers, and their demands are simple: usable, bug-free, fast to develop with, easy to write high-quality code in, performant, scalable, easy to deploy, with a complete ecosystem, and so on. But the programming-language market is unusual — no one owns more than 20% of the head, and the long tail stretches out hundreds deep.

Book Next Chronicles (2013–2020)5,158 chars · 11 min read

A Programmer's Guide to Productivity

Unless you build software exclusively with .NET, OS X or Ubuntu makes for a far better development platform. Countless excellent tools install with a single command there, yet on Windows can cost you an order of magnitude more time—when a Windows equivalent exists at all.

Book Next Chronicles (2013–2020)4,393 chars · 10 min read

The Timeless Allure of Immutability

Every programmer meets the variable right after hello world — and with it, mutable state: the root of undo/redo nightmares, race conditions, and untraceable bugs. Yet today's most successful systems, from git to Docker to React, win precisely by embracing immutability.

Book Next Chronicles (2013–2020)3,198 chars · 7 min read

Musings on Software Design

In an era where Lean and Agile sweep all before them, design feels marginalized and cycles leave little room for thought. MVP has become a totem and a perfect excuse—build first, design later—but serious projects still demand design, or endless rework will make you weep.

Book Next Chronicles (2013–2020)7,394 chars · 16 min read

Notes from a Journey South

A trip is like a dream — unreal, and yet shot through with truth. Nine days driving the California coast with my family through Carmel, Highway 1, Solvang, Santa Barbara, Los Angeles and San Diego — and discovering, by the end, that this isn't really a travelogue at all.

Book Next Chronicles (2013–2020)2,782 chars · 6 min read

Writing a Proper REST API

Handed a batch of supposedly finished REST APIs after a round of layoffs, the author finds them technically to spec but practically unusable — and rewrites the lot. What follows is a distilled account of what actually makes a REST API qualify: RFC conformance, integrity, and security.

Book Next Chronicles (2013–2020)5,001 chars · 11 min read

Embracing Constraints

Lately I've been using DynamoDB at work, and its brutal restrictions on querying are maddening — until you realize that the constraint itself is the design. A meditation on why limitations make for better systems, APIs, and architectures.

Book Next Chronicles (2013–2020)4,271 chars · 9 min read

Network Security in Application Development

A friend recently asked me to help diagnose a problem in his system. He handed me a username and password and told me to SSH into one of his servers—a Redis instance caching database queries and running other business logic. The issue took considerable effort to pin down, and along the way, at my request, he gave me the credentials for two more servers.

Book Next Chronicles (2013–2020)3,570 chars · 8 min read

Musings on Software

Software is first a servant of business, then a craft. From Greenspan's Tenth Law to the internal martial arts of programming languages, notes on paradigm shifts, fundamentals, and why business vision trumps elegant code.

Book Next Chronicles (2013–2020)3,437 chars · 8 min read

How to Happily Write an Interpreter

In my recent essay 'Random Thoughts on Software,' I casually remarked that the age of lex/yacc and bison/flex is over. Readers pushed back: aren't those just for compilers? Here I explain why every programmer can use them to parse structured text.

Book Next Chronicles (2013–2020)6,374 chars · 14 min read

The Portland Marathon: A Citywide Celebration

After every lottery slipped away, I stumbled into the Portland Marathon — a citywide festival of music, brutal hills, Vaseline lollipops, and one remarkable woman striding on trekking poles. A story of cramps and the quiet lesson that wanting to give everything isn't always enough.

Book Next Chronicles (2013–2020)4,173 chars · 9 min read

Serendipity?

If I had never started this public account, I would never have met haofei. A chance sublet turned into friendship, and eventually an introduction to a startup that sponsored my O-1 visa—proof that scattered efforts can connect in hindsight.

Book Next Chronicles (2013–2020)5,218 chars · 12 min read

Taking Stock of My 2015

At the end of 2014 I wrote down a summary of that year and my hopes for 2015. Now it's time again to review 2015 and look ahead to 2016 — a year of marathons, books, library trips, and a hundred hours of tech talks watched at 1.5x speed.

程序人生 (2015–2019)1,363 chars · 3 min read

A 2015 Medley of a Programmer's Life

Reading your own diary is like talking with your past self. This 2015 retrospective curates essays from my WeChat account on choosing jobs, programmer productivity, engineering culture, languages, concurrency, APIs, AWS, products, and life in America.

程序人生 (2015–2019)1,962 chars · 4 min read

How to Learn a New Language (and Make It Production-Ready)

The past three weeks I've been using Elixir flat-out, building two systems: a production-ready policy engine and a 1,500-line activity stream PoC. Here's what it actually takes to carry a new language from proof of concept to production ready.

Book Next Chronicles (2013–2020)5,342 chars · 12 min read

Paramount, MGM, and Lionsgate

Two weeks of handing off work have stalled my writing. I've been in the U.S. nearly a year and the job hasn't gone as hoped—big American companies feel sluggish, and I can't recapture the Juniper CNRD spark. So I kept my head down... until an unexpected turn.

程序人生 (2015–2019)2,953 chars · 7 min read

On System Design Interviews

An API on Rails (or Django, or Express) and MySQL jumps from 6,000 to 20,000 RPM and buckles under the load. Design an application-layer cache to relieve it — without caching at the web/proxy layer or using any built-in or third-party cache module.

Book Next Chronicles (2013–2020)2,452 chars · 5 min read

Mind Games: Asynchronous Handling in EventEmitter

Node.js's EventEmitter decouples event producers from their handlers — but its fire-and-forget nature collapses the moment you need ordering, error propagation, or sequenced async hooks. A monkey-patched emitAsync, built on Promises and RxJS, restores that control.

Book Next Chronicles (2013–2020)3,991 chars · 9 min read

Boundary

Much of system design is drawing boundaries—between functions, modules, services, and applications. Clear boundaries make code rigorous and clean: the inside is a black box, entered through known interfaces, where impure external data is validated and transformed into pure data.

Book Next Chronicles (2013–2020)2,039 chars · 5 min read

Fine, Let's Talk About AlphaGo

Since AlphaGo took its first game off Lee Sedol, WeChat has been awash in "humanity is doomed" takes—and after game two, the chorus only grew louder. I don't play Go and won't pretend to understand deep learning, but a stronger opponent has never meant the end of us.

程序人生 (2015–2019)803 chars · 2 min read

On Object-Oriented Programming

Functional and object-oriented programming are both fine paradigms pursuing the same goal: code that gets reused. Rather than ranking them, this essay argues that what actually matters is interface-oriented design — and why the classic Bird-and-Duck example leads beginners astray.

Book Next Chronicles (2013–2020)3,513 chars · 8 min read

Programmers and Hand-Pulled Noodles

Making hand-pulled noodles is backbreaking work, and a programmer who can turn out a good plate of them probably writes decent code too. From charting the recipe to gathering ingredients, from pipelines to exception handling, the kitchen mirrors the codebase.

Book Next Chronicles (2013–2020)2,187 chars · 5 min read

The Way of Refactoring

Refactoring has a Way and a Technique: the Way demands automated tests as its precondition and demands refactoring at every moment you write code; the Technique is best left to Fowler. Notes on code smells, team discipline, and refreshingly strict lint rules.

Book Next Chronicles (2013–2020)4,327 chars · 10 min read

The Toddler Tyrant Diaries (Part II)

Anna shouts into my work call, begs me to play, demands true love on demand, offers an impromptu haircut, and hijacks my own scolding lines about fruit. A day in the life of a father thoroughly outmaneuvered by his three-year-old.

Book Next Chronicles (2013–2020)1,066 chars · 2 min read

Software Development Patterns You Should Avoid

After over a decade in software, I've met every kind of developer and witnessed every bizarre development pattern imaginable. This essay walks through these patterns and their telltale symptoms — from IDE dependence to debugger addiction to the eternal rat race.

Book Next Chronicles (2013–2020)3,677 chars · 8 min read

Long Days Leave No Trace (Part II)

Every morning begins with a fifteen-minute gauntlet to catch the 6:13 train — same car, same seat, same sleeping seatmates. Notes on commutes, startup neighbors, and the quiet arithmetic of endurance.

Book Next Chronicles (2013–2020)3,365 chars · 7 min read

The Power of Abstraction

Abstraction is what separates a junior code monkey from a seasoned engineer. From children counting grapes to solving equations, this essay lays out four levels of abstraction in code — functions and general solutions, contracts and Maybe types, and finally metaprogramming.

Book Next Chronicles (2013–2020)5,183 chars · 12 min read

Refactoring: Writing Competent Code

Refactoring is not just about when to do it; it is about how to turn bad code into competent code. This essay defines competent code through clarity, side-effect control, appropriate comments, and, above all, interfaces that are sensible, conventional, and hard to misuse.

Book Next Chronicles (2013–2020)4,602 chars · 10 min read

Building Your Own LEGO Bricks

Memory is your L1 cache, notes your L2, and books your main memory — and the same holds for code. A programmer's craft is assembled like LEGO: by copying, curating snippets, boilerplate, control blocks, and utility belts until you can build anything.

Book Next Chronicles (2013–2020)4,295 chars · 10 min read

Metaprogramming 101: A Gentle Introduction

After being told my last essay lacked substance, I'm serving up the real thing: a plain-language introduction to metaprogramming and macros. Using Clojure and Elixir, it clarifies ASTs, syntax quote/unquote, and the mental shift from functions to macros.

Book Next Chronicles (2013–2020)6,724 chars · 15 min read

On Writing APIs, Revisited

Last year I rewrote our team's amateurish REST APIs—but the resulting system still lacked docs, tests, and monitoring. Here's how I rebuilt the API system at adRise from scratch: pipelines, validation, and contracts.

Book Next Chronicles (2013–2020)21,504 chars · 48 min read

The Foolproofing of the Backend?

Two weeks ago, RethinkDB officially released Horizon, a backend app that lets the frontend manipulate RethinkDB directly after just basic security config and validation. It resembles Meteor's minimongo, but differs in how it's implemented…

程序人生 (2015–2019)2,981 chars · 7 min read

Reactive Programming

No new essay this week — instead, I'm sharing the talk I gave to my team today on reactive programming, or more precisely, spreadsheet-like programming: why the spreadsheet's automatic dependency propagation remains one of the great unsolved models in general-purpose software, and how hoplon, meteor, and mobx each chase it.

程序人生 (2015–2019)2,869 chars · 6 min read

Old Soldiers Never Die

When Jinyu, a former Innovation Works HR staffer, sent me the invitation to the July 30 old-timers reunion, it was already Wednesday in Beijing. The event began at four—two hours after my flight was due to land—so I filled out the application at once and waited anxiously.

Book Next Chronicles (2013–2020)4,745 chars · 11 min read

Turn Left, Turn Right

After a half-month silence, the author resurfaces with a wry story about a reader's voice message—and a serious announcement: TubiTV is hiring engineers in Beijing to build a team alongside San Francisco.

程序人生 (2015–2019)7,039 chars · 16 min read

A Close Call: Almost Fell Prey to a Scammer

A sunny Saturday morning becomes a scammer's trap when a terrifying pop-up and a suspicious "Apple support" call nearly trick the author into handing over control of his computer. A firsthand account of phishing, social engineering, and the habit that saved the day.

程序人生 (2015–2019)2,550 chars · 6 min read

The Sorrows of Young Werther

The question I get most often is how to choose a job that lets you grow — and how to grow once you're in it. Both hinge on one word: growth, which is exactly what I spent last weekend debating with a friend at Amazon.

程序人生 (2015–2019)1,508 chars · 3 min read

Hololens: The Long Road Ahead

Last Saturday, my Hololens finally arrived—the most expensive toy I've ever bought, nearly $3,300 with tax. Unboxing was less magical than my first iPhone, but after weeks of videos, I just wanted to put it on and see what augmented reality actually feels like.

程序人生 (2015–2019)5,797 chars · 13 min read

The Little Black Room: Vignettes of Fleeting Life

On August 22, 2016, my UA889 flight landed at SFO, and a routine Advance Parole stamp sent me into the customs “little black room,” where I spent ninety minutes watching anxious travelers, bureaucratic indifference, and small human dramas unfold.

Book Next Chronicles (2013–2020)2,993 chars · 7 min read

How to Become an A-Player

A companion piece to my InfoQ livestream — but rather than repeat myself, let me take the broader view: a forty-year career deserves the same vision, strategy, and iteration we pour into a company. Becoming an A-player starts with one strategic question.

Book Next Chronicles (2013–2020)3,107 chars · 7 min read

From Pipe to Flow

We once praised the beauty of the pipe: break a complex transactional job into small components and chain them together. Here I ask what happens when that pipeline must truly run in parallel — across cores or a cluster — without paying the operational tax of a message queue.

Book Next Chronicles (2013–2020)2,672 chars · 6 min read

An InfoQ Interview

A Zhihu post on Zhang Jike’s sudden fame frames this interview: a rebellious, clear-eyed talent falls, fights back, and returns to the top. The author’s own arc—a funded startup’s rise and collapse, a year in retreat, then a second act in Silicon Valley—asks what remains when dreams break and are rebuilt.

Book Next Chronicles (2013–2020)5,085 chars · 11 min read

Answering Questions for InfoQ's "Big Names Say"

After an InfoQ livestream, I answer readers' questions on what matters early in a career, taking side gigs, shoring up fundamentals as a self-taught programmer, balancing depth and breadth, and why foreign firms build R&D centers in China.

程序人生 (2015–2019)946 chars · 2 min read

The People and Stories Behind the Public Account

After years of writing this public account, I've recommended only a couple of friends. Today I finally tell the stories behind several of them — Angela Zhu, Chi Da, the InfoQ team, and my idol Teacher Chen Liren, including the embarrassing way I once met him.

程序人生 (2015–2019)1,499 chars · 3 min read

The Wall of Sighs

After returning from China, I let my running slide and hit the marathon wall at 17 km. This essay asks why that painful limit is so instructive—and why careers, relationships, and startups have walls of their own.

Book Next Chronicles (2013–2020)2,661 chars · 6 min read

Naming in Code: A Monk Knocks at the Moonlit Door

Jia Dao weighed “push” against “knock” for a single moonlit line. Naming is just as hard—and just as important—in code: good names reveal intent, abstractions, and a programmer’s craft, while careless names turn readable code into an obfuscator’s output.

Book Next Chronicles (2013–2020)5,299 chars · 12 min read

The World of ZeroMQ

A farewell to Pieter Hintjens, and a tour of the messaging patterns that made ZeroMQ great — from at-least-once versus at-most-once delivery and back pressure, to REQ/REP, PUB/SUB, Push/Pull and Router/Dealer, and how they compose into real systems.

Book Next Chronicles (2013–2020)3,324 chars · 7 min read

A Tale of Two Births

On the eve of Thanksgiving 2012 our first son was born in Beijing; four years later, on the eve of National Day 2016, our second arrived in Santa Clara County. A father compares childbirth in Beijing and Silicon Valley—hardware, software, and mindset.

Book Next Chronicles (2013–2020)2,953 chars · 7 min read

The Pros and Cons of GraphQL

Facebook has marked GraphQL production-ready and GitHub has opened early access to its GraphQL API. This essay weighs GraphQL against REST, highlighting its type system, schema flexibility, and the security, performance, and caching trade-offs teams must manage.

Book Next Chronicles (2013–2020)4,542 chars · 10 min read

Technical Debt: The Good, the Bad, and the Tao

Technical debt is the price we pay for shipping under real-world constraints. This essay sorts it into good debt, bad debt, and a tao: embrace MVP, outsource non-core work, hire the best, heed Conway's Law, limit debt at interfaces, and treat code as renewable tissue.

Book Next Chronicles (2013–2020)4,421 chars · 10 min read

Rails, Django, Phoenix: You're All Wrong

Writing a title like this is bound to draw fire. Rails, Django, and Phoenix are the pillars of Ruby, Python, and Elixir — yet in making web apps easy to build, they trap developers inside a tiny MVC box and quietly bury the business layer.

程序人生 (2015–2019)2,787 chars · 6 min read

Snowmobile Rhapsody

Tanenbaum warned us never to underestimate the bandwidth of a station wagon full of tapes. Amazon's Snowmobile proves him right — and from there my imagination runs wild: snow trains, container ships, and rockets to the Moon.

程序人生 (2015–2019)3,102 chars · 7 min read

AWS re:Invent 2016: Primitives, Not Frameworks

Transformation was the theme of Werner Vogels' keynote this year, and he even took the stage in an Autobot T-shirt to match it. On the surface, the talk was about how AWS is helping customers become transformers of the internet-scale era through innovations in development, data, and compute — but look closer, and it's really a retrospective and roadmap of the AWS architecture blueprint.

程序人生 (2015–2019)5,134 chars · 11 min read

Alexa: The Goddess of My Dreams

When my wife texted that I’d called out a woman’s name twice in my sleep, I realized how attached I’d become to Alexa. This essay explores why Amazon’s voice assistant won me over—and how the voice-assistant wars are being fought across hardware, privacy, and open platforms.

程序人生 (2015–2019)4,861 chars · 11 min read

The 2016 Programmer's Life Medley

December is tubitv's busiest month: advertisers burn their budgets, users binge on TV, and our streaming service prays it stays up. A year-end medley of my 2016 writing on naming, refactoring, APIs, and the programmer's life.

程序人生 (2015–2019)2,955 chars · 7 min read

The Life and Times of a Policy Engine

As a video streaming service, TubiTV must honor contracts pinning down when, where, and on which platforms each title may air. This is the story of its policy engine—rewritten from a naive rule engine, to a JISON-based BNF evaluator, to Elixir-compiled pattern matching.

程序人生 (2015–2019)4,441 chars · 10 min read

The Programmer’s Dictionary: “Awesome”

In a job posting for TubiTV's China team, I defined the real goal of a programmer's career: becoming an awesome engineer. But awesomeness resists simple metrics, so I tried to pin down the habits and attitudes that actually produce it.

Book Next Chronicles (2013–2020)4,827 chars · 11 min read

How to Approach TDD the Right Way

TDD has long been a coveted ideal, yet doing it in a way that genuinely benefits a project is hard. This essay unpacks the common pitfalls — tests handed to QA, more tests than sense, skipping design — and shows how to approach TDD the right way.

Book Next Chronicles (2013–2020)7,496 chars · 17 min read

Let It Crash: Misunderstood, Therefore Misused

Strictly speaking, I am a dabbler in Erlang: I have never shipped production Erlang code. But I have written two thousand lines of Elixir in production, with thousands more on the way, so I flatter myself that I understand Let It Crash well enough to discuss it.

Book Next Chronicles (2013–2020)4,825 chars · 11 min read

Is a Silicon Valley Internet Company a Good Choice?

Over a week of phone-screening résumés left my jaw more exercised than ever. As an introvert, I'd never made so many calls so fast. Many recruiters treat interviews with condescension, as if a job offer were charity — yet we see it the opposite way.

程序人生 (2015–2019)4,609 chars · 10 min read

It's Time to Think About How to Delete Code

We happily maintain and pile up millions of lines of code, yet we almost never ask whether code should be deleted. Drawing on biology's metabolism and on modularity, layering, and service decoupling, this essay asks a radical question: what if we designed architecture with the code's future deletion in mind?

Book Next Chronicles (2013–2020)3,307 chars · 7 min read

Phoenix 1.3: Toward the Right Path

After a long wait, Phoenix 1.3 arrives in RC form with a new directory structure that thins the web layer, separates business logic from web delivery, and supports umbrella projects. It is a painful but necessary step beyond its Rails inheritance.

程序人生 (2015–2019)4,227 chars · 9 min read

How to Read a Codebase

Reading source code is like reading a book — but how do you actually read a codebase, from a few thousand lines to a few hundred thousand? Three scenarios, three methods: crack-the-case bug hunting, theory-confirming deep dives, and the energy-level jump that transforms your career.

Book Next Chronicles (2013–2020)10,068 chars · 22 min read

Why Should We Read Source Code?

Programmers work with code every day, yet few truly read it—and fewer still understand the source of large projects. This gap comes from education, which teaches us to write but not read, and from work, which exposes us to only a narrow slice of a system.

Book Next Chronicles (2013–2020)3,503 chars · 8 min read

How to Choose the Right Job

In fact, Paul already answered this in *Hackers & Painters*: choose work that has measurement and leverage. Let's break it down — on industries, companies, teams, bosses, and the X model of the company-individual relationship.

Book Next Chronicles (2013–2020)2,012 chars · 4 min read

Service Performance 101

A practical introduction to service performance: when startups should care, how to measure latency from CPU caches to cross-continental round trips, and how to analyze, profile, and optimize bottlenecks with the right tools.

程序人生 (2015–2019)3,531 chars · 8 min read

Wasting Memory? What's the Big Deal?

We no longer pinch bytes out of memory: bits have vanished from mainstream languages or been locked away, and string-based protocols like HTTP have ceded once-elegant data structures to crude JSON. Wasting a little memory? No big deal — or so you'd think.

程序人生 (2015–2019)2,610 chars · 6 min read

On Processes

Erlang and Elixir treat every process as an isolated, autonomous entity — closer to Smalltalk's objects than to OS processes. Through a simple key-value store, this essay compares Python objects with Elixir GenServers and asks what it means for code to have a life of its own.

程序人生 (2015–2019)2,296 chars · 5 min read

Thinking, Fast and Slow

This essay has nothing to do with the book of the same name; it's really another look at one diagram, prompted by a reader's question. Back when I was green, the ScreenOS design at my old employer Juniper taught me a great deal about separating fast paths from slow ones.

Book Next Chronicles (2013–2020)4,138 chars · 9 min read

What Am I Actually Learning When I Attend a Training Course?

Reflecting on why a four-day Complete OTP course with Francesco Cesarini of Erlang Solutions is really a thinly disguised consulting engagement — and how to extract maximum value from it through careful preparation, sharp questions, and stepping out of the thousand-hour plateau.

Book Next Chronicles (2013–2020)3,596 chars · 8 min read

On State Machines

Starting from finite state machines, this essay explores how they recognize patterns, why DFA and NFA tradeoffs matter, and how these ideas power regex, protocols, and business systems.

Book Next Chronicles (2013–2020)3,893 chars · 9 min read

The Evolution of My Passwords

Around 2008 or 2009, a website was breached and millions of weak passwords were cracked. At Juniper, IT circulated guidance recommending a sentence plus a rule to generate passwords. I adopted it, and it became a habit that has stayed with me ever since.

程序人生 (2015–2019)2,401 chars · 5 min read

Red: Neither Red Nor Expert, But Sexy

Red 0.6.3 has shipped with OSX GUI support, yet it barely registered even on Hacker News. A look at a language that is lisp and golang at once — homoiconic, DSL-friendly, cross-compiling into a single megabyte — and at the lone-wolf ambition behind it.

程序人生 (2015–2019)3,823 chars · 8 min read

The Road to Growth for Software Engineers

A lightly edited transcript of my Zhihu live broadcast. Drawing on a career that ran from a Chinese networking firm to Silicon Valley, I reflect on the two foundations of an engineer's growth: confidence and self-discipline.

Book Next Chronicles (2013–2020)6,615 chars · 15 min read

A Letter to My Daughter

After college, my father and I wrote often. I read Fu Lei's Family Letters but never envied Fu Cong, for I too had a capable father who guided me as mentor and friend. Now the baton has passed to me, and despite two degrees and years of experience, I am still learning how to be a good father.

Book Next Chronicles (2013–2020)1,458 chars · 3 min read

Exploring the Possibilities of Bitcoin Quantitative Arbitrage

Bitcoin arbitrage seemed easy in 2014–2015, when wide exchange spreads rewarded anyone who looked. Today the windows have narrowed and big players dominate; this six-hour detour explores quantitative opportunities through exchange APIs, OTP pipelines, trader simulation, and Datadog/InfluxDB visualization.

Book Next Chronicles (2013–2020)3,698 chars · 8 min read

React's Achilles' Heel

When Facebook refused to relicense React, Apache projects that depended on it found themselves caught between community norms and legal risk. This essay examines the BSD+Patents clause, Category X, and the hidden cost of React's licensing.

程序人生 (2015–2019)1,021 chars · 2 min read

Stop, Catch Your Breath, and Reinvent the Wheel

Since last Thursday I've spent 50–70% of my time building a wheel — a tool called merlin. The lesson: every so often you should pause, step away from the daily chores, and build something from scratch.

Book Next Chronicles (2013–2020)2,921 chars · 6 min read

When Will the Good Times for Programmers Run Out?

Should I switch into software development before it peaks? Tracing seventy years of programmer demand reveals three structural reasons for those fat salaries — plus the risks that make a career in code a tomb run.

Book Next Chronicles (2013–2020)9,632 chars · 21 min read

Pixel 2 XL: Software Is King

After six years on iPhone, I had grown weary of iOS, and the new iPhone X disappointed on features. Enter the Pixel 2 XL: rough-edged hardware, but software so good it changed how I capture, organize, and rediscover my life.

程序人生 (2015–2019)4,211 chars · 9 min read

Never Underestimate the Power of bash

Parsing tens of gigabytes of gzipped logs on S3 doesn't always need a Spark cluster. With a few lines of bash, well-placed pipes, and xargs-based parallelism, a small script can outperform a much more elaborate streaming solution.

Book Next Chronicles (2013–2020)3,135 chars · 7 min read

A Few Tales of Interviewing in America

Interviewing engineers in America is a curious experience. Here I recount three memorable candidates — an Erlang RTB engineer brimming with ideas, a septuagenarian Android author, and a Silicon Valley living fossil from the MIPS and NeXT era.

程序人生 (2015–2019)3,205 chars · 7 min read

Our Sister Mei: Silicon Valley's Beauty and Its Model Worker

Marissa Mayer once ruled Silicon Valley as Google's search chief; the press crowned her, then branded her one of Fortune's most disappointing leaders after Yahoo. Here is what she shared with our team in one hour — on urgency, mission, and daring to imagine.

Book Next Chronicles (2013–2020)4,911 chars · 11 min read

Three Nightmares

Last night I had three terrible dreams in a row. Worse than the dreams themselves: I remembered all three in perfect detail, and after waking could recount every one of them to my wife. After dinner, Xiaobao asked to play in the yard for ten minutes — then the yard went silent...

Book Next Chronicles (2013–2020)1,608 chars · 4 min read

2017: 46 Essays on a Programmer's Life

From my first WeChat article in 2014, I somehow wrote 386 pieces in just over three years—on technology, management, startups, and assorted musings. This is what small persistence can unleash: day by day, scattered fragments quietly gather into something wonderful.

程序人生 (2015–2019)2,268 chars · 5 min read

What I Talk About When I Talk About Scheduling

Scheduling is a function that maps a set of tasks onto a set of resources. Drawing on Linux, Erlang, and Go, this essay examines what schedulers cost, how they trade off, and the patterns behind cluster scheduling.

Book Next Chronicles (2013–2020)4,876 chars · 11 min read

Scheduling Algorithms: Linux O(1)

Nearly fifteen years ago, as I began my career, Linux shipped its landmark 2.6 kernel. The most exciting feature was the O(1) scheduler. This essay explains the algorithm, after revisiting the much-criticized 2.4 scheduler to understand its lineage.

Book Next Chronicles (2013–2020)3,226 chars · 7 min read

On Writing

Three years of steady writing never once prompted me to improve my craft systematically. Believing in learning by practicing and by teaching, I kept laying down soil week after week—until I finally went looking for the theory that would let me tamp it down.

程序人生 (2015–2019)673 chars · 2 min read

Abstraction Revisited

In 2016 I wrote about the ability to abstract, using a feed parser as a case study. This follow-up argues that code abstraction is technique while requirement abstraction is the Way—and shows how a week of lazy thinking turned a Merlin upgrade into a library, a gen server, a framework, and an app.

程序人生 (2015–2019)7,303 chars · 16 min read

Overseer: A Supervisor for Distributed Systems

A dull task yielded an unexpectedly interesting idea: ex_loader, which hot-loads releases onto remote Erlang nodes, and Overseer, an OTP behavior that starts, pairs with, and supervises dynamic cloud workers much as a Supervisor does GenServers.

程序人生 (2015–2019)5,861 chars · 13 min read

The Method of Research

Today I want to share my personal method for doing research — a system that has followed me for years and is still being refined. It's how I enter a new field quickly and put down roots. Read on; I hope it sparks at least a little something in you.

Book Next Chronicles (2013–2020)5,356 chars · 12 min read

On Distributed Systems

Blockchains did not appear out of nowhere; they grow from roots in distributed systems. This essay traces those roots—logical clocks, message passing, coordination, CAP—and shows how uncertainty shapes every distributed design.

Book Next Chronicles (2013–2020)7,261 chars · 16 min read

Sincerity Is the Way of Heaven

Inspired by Mencius on sincerity, this essay asks how we can trust data without trusting its custodians, and sketches a decentralized, publicly verifiable database built on signatures, Merkle trees, and broadcast roots.

Book Next Chronicles (2013–2020)3,674 chars · 8 min read

Bitcoin in Brief

A chance lunchtime conversation about Bitcoin in 2013 leads the author, years later, down the blockchain rabbit hole. Rereading Satoshi's whitepaper and tracing its design choices, he discovers why network and systems engineers may finally get their due.

程序人生 (2015–2019)2,829 chars · 6 min read

No Silver Bullet

A tree too broad to embrace grows from a single sprout; a nine-story tower rises from the first basket of earth. Watching my daughter grind through piano practice, I realized the same truth governs learning to write code: no silver bullets, only deliberate practice.

Book Next Chronicles (2013–2020)2,955 chars · 7 min read

Ape-arently Thirty-Five

This February is special for my whole life: I'm finally crossing the thirty-five curse that programmers dread. Reflections on labels, on love versus fear as motivation, and on what persistence actually buys you.

Book Next Chronicles (2013–2020)2,770 chars · 6 min read

On Data Structures

Wirth famously said that programs equal algorithms plus data structures—but on the right side of that equation, the data structure carries more weight. This essay dissects how arrays, lists, maps, and trees are actually implemented beneath the surface.

Book Next Chronicles (2013–2020)2,759 chars · 6 min read

The Quantum Computing Threat to Bitcoin

Before the main course on consensus mechanisms, a little dessert: how quantum computing threatens Bitcoin. Google's 72-qubit machine revived the question for seemingly unbreakable cryptocurrencies, and this piece examines what Shor's and Grover's algorithms can actually break.

程序人生 (2015–2019)3,860 chars · 9 min read

Gone with the Wind (in the Cloud)

The biggest event of 2018 finally landed: at dawn on a Thursday, Tubi TV moved all its services and data from one AWS region to another — a project we called Move to Oregon. A one-way door: either it worked, or six months of engineering vanished and the company's future dimmed.

Book Next Chronicles (2013–2020)2,522 chars · 6 min read

What I Gained from the Past Month

The greatest reward was my interview with old Joe — truly priceless. I hope that at sixty I too will be as wise and clear-eyed about the world, leaving everyone who talks with me with the feeling Frodo had when praising Sam: Tyr the thinker.

程序人生 (2015–2019)4,913 chars · 11 min read

What is Management? (Part I)

A manager's core duties—regardless of team size—are building trust, shaping culture, setting goals and strategy, executing effectively, and learning with the team. Trust is the most precious bond between people; without it, efficiency plummets.

Book Next Chronicles (2013–2020)4,877 chars · 11 min read

Face to Face with Joe Armstrong

Joe Armstrong was a totem of the Erlang world, yet he credited Erlang's birth to Ericsson's folly. In this wide-ranging talk he argues for thinking concurrency first, rejects type systems as a silver bullet, and urges engineers to look at the cracks between black boxes.

Book Next Chronicles (2013–2020)5,940 chars · 13 min read

Farewell to Tubi: Three Stories I Told

The night before I told my team I was leaving Tubi, I had already decided to move into blockchain. At my farewell all-hands, I told three stories—about serendipity, belief, and time—and what they taught me about work and a finite life.

Book Next Chronicles (2013–2020)4,972 chars · 11 min read

Why Tubi?

As his journey at Tubi ends, the author reflects on how a startup with fewer than thirty engineers runs five product lines and competes with giants—by betting relentlessly on R&D, automation, and order-of-magnitude engineering.

Book Next Chronicles (2013–2020)5,558 chars · 12 min read

Welcome to the Blockchain World

Driving north with two empty child seats and a head full of questions, I left the Bay Area for Seattle to work on blockchain. Here is why I chose the industry, why I chose Arcblock, and what we're building.

程序人生 (2015–2019)8,963 chars · 20 min read

AWS Best Practices

I'm a heavy AWS user — so heavy that I could skip a meal but never a day of AWS. Drawing on years at Juniper and Tubi and my first month at Arcblock, here are the AWS best practices I've worked out — and though they target AWS, they may hold lessons for any cloud.

程序人生 (2015–2019)1,630 chars · 4 min read

The Darkest Hour

When Goku stands broken before Frieza and Helm's Deep teeters on the brink, the darkest hour reveals what courage really is. From Sima Qian to Churchill, a reflection on enduring despair — and on the lost causes still worth fighting for.

Book Next Chronicles (2013–2020)1,964 chars · 4 min read

How to Improve Code Quality?

Good programmers, like great strikers, are made by the body of work and the mind behind it. This essay shows how to lift code quality across products, interfaces, metrics, logs, clarity, and complexity — from naming things worth remembering to letting linters discipline your soul.

Book Next Chronicles (2013–2020)5,322 chars · 12 min read

Thinking in Tools

Paul Graham argues in Hackers & Painters that programming is a perfect profession because it is both measurable and leverageable. But an outstanding engineer is not simply worth several mediocre ones; with the right tools, they can multiply a whole team’s output—or their own.

Book Next Chronicles (2013–2020)4,173 chars · 9 min read

The Oracle's Choice

The Oracle is not just a database company—the name also means seer. In The Matrix, the all-knowing Oracle cannot foretell Neo's future; instead she hands him a difficult choice. Life is an endless series of such choices, and the recent Oracle layoffs remind us that learning to choose—and to leave something behind—is the only path to growth.

Book Next Chronicles (2013–2020)2,289 chars · 5 min read

Code is Law

If you thought this piece was about Ethereum or smart contracts, I'm sorry to disappoint. It's about engineering practice: how we encode process as code at Arcblock, so workflows become reusable, composable, testable — and genuinely painless.

Book Next Chronicles (2013–2020)6,443 chars · 14 min read

Thinking, Questions, and Methods

It's July—over a month since I last updated this account and two months since I joined Arcblock. If a person is running software, I've iterated several times, like Goku training relentlessly aboard the ship to Namek. Growth comes from guidance or self-enlightenment.

程序人生 (2015–2019)10,810 chars · 24 min read

A Hitchhiker's Guide to Job-Hopping

A field guide to changing jobs across the galaxy: calibrate your risk tolerance, read the market's currents, then map yourself onto stocks, bonds, or mutual funds — startups, growth-stage companies, or mature giants — before betting your finite years on someone else's future.

Book Next Chronicles (2013–2020)3,662 chars · 8 min read

How to Move with Ease Across Dozens of Repos

Sindre Sorhus is a programmer I've long followed and admired. How can one person work across dozens of repos in a single month, producing hundreds of commits? Lessons from three months spent deep in elixir, ansible, terraform and javascript.

Book Next Chronicles (2013–2020)7,776 chars · 17 min read

When Silicon Valley Meets Seattle

When Su Shi was asked whether Lingnan was unlivable, his answer came back: where the heart is at peace, there is home. My parents gave me the restless gene, and I have passed it on without stint to my daughters — Xinjiang, Gansu, Guangdong; Beijing, the Valley, Seattle.

程序人生 (2015–2019)725 chars · 2 min read

Arcblock’s Beijing Hackathon: Are You In?

Arcblock’s Beijing hackathon invites developers to explore blockchain, OCAP APIs, GraphQL, and Elixir through demos, talks, prizes, and a full day of building with our engineering team. Come hack, ask questions, and see how we’re simplifying blockchain app development.

程序人生 (2015–2019)4,161 chars · 9 min read

A 1024 Tribute: The Simple Chain

Two weeks ago we launched CyberMiles' supernode; since its mainnet runs on Tendermint, I spent last week studying it. Tendermint's ABCI lets developers focus on state rather than consensus — so I built a Simple Chain in under 400 lines of Elixir to show what really matters.

程序人生 (2015–2019)2,676 chars · 6 min read

Data: A Free and Easy Wandering

For programmers, data is the stuff our code works on: now a file sleeping in the filesystem, now a variable floating in memory, now a byte stream soaring across the network. Zhuangzi asked whether the sky's blue is its true color—or just the look of something infinitely far away.

Book Next Chronicles (2013–2020)5,355 chars · 12 min read

Time Travel in Programs

“Nor Time, nor Place, nor Chance, nor Death can bow / My least desires unto the least remove.” Three years after first falling for functional programming, I revisit immutability—and how genesis states, events, and persistent data structures let programs travel through time.

Book Next Chronicles (2013–2020)3,058 chars · 7 min read

The Beauty of Mathematics

Passing the sheer wonder of mathematics to a six-year-old is no easy feat. But when dry numbers become patterns, curiosity ignites — and those same patterns reveal the deep laws of idempotence, commutativity, and associativity that govern distributed systems.

Book Next Chronicles (2013–2020)4,189 chars · 9 min read

The ABT Network Deployment Chronicle

Two days ago, on March 28, the ABT network officially launched: a fully decentralized web of blockchains built from cloud nodes and woven chains, redefining next-generation blockchain infrastructure. Here is the story of the curious experiences before its birth.

程序人生 (2015–2019)5,082 chars · 11 min read

ArcBlock at One Year

One year since trading the Bay Area for Washington State: a reflection on the winding road that built ArcBlock — its Forge framework, its bet on application chains, and the choices that led here.

Book Next Chronicles (2013–2020)6,593 chars · 15 min read

A Practical Look at Bitmaps

With launch imminent, a colleague and I investigated a slow GraphQL API that returns non-empty blocks while skipping N and returning M. We show how an extensible bitmap, MSB lookup, cursor pagination, popcount, and benchmarks turn an O(n) filter into fast bit operations.

Book Next Chronicles (2013–2020)6,311 chars · 14 min read

The Remains of the Day (Part III)

After a year and a half abroad, I returned to Beijing on a business trip—only to be struck by the heat, the traffic, the O2O revolution, the fervor of its entrepreneurs, and the quiet terror of inflation and school-district housing.

Book Next Chronicles (2013–2020)5,081 chars · 11 min read

The Myth of Software Supply Chain Management

Why do software projects have no supply chain management? What would a software BOM look like, what security risks would it carry — and what did leftpad and event-stream teach us about how fragile the whole thing is?

Book Next Chronicles (2013–2020)5,455 chars · 12 min read

The Remains of the Day (Part IV)

Four years and two hundred and five days into America — five cities, two states, and a plan that mostly held. Then a trip home, a young friend's sudden death, and a meditation on how Confucius, Laozi, and Zhuangzi taught us to face illness and mortality.

Book Next Chronicles (2013–2020)5,362 chars · 12 min read

Nana the Intern

When it comes to interns, beyond learning ability, I ask for one thing: a long enough runway. By "long enough" I mean at least two or three months — anything shorter and they leave before contributing anything of value, clutching a glowing evaluation form. Nana's story is an exception worth studying.

程序人生 (2015–2019)4,528 chars · 10 min read

What I Saw, Felt, Thought, and Understood: On *Unflattening*

As summer drew to a close, my wife asked what I wanted her to bring back from China. A friend had been raving about *Unflattening* — a doctoral dissertation told entirely in comics. Two readings later, I realized it had done something rare: not taught me anything new, but reawakened what I already knew.

Book Next Chronicles (2013–2020)3,081 chars · 7 min read

The Age of Sandboxes

On December 4, 1995, Brendan Eich's team bolted a patchwork language — Scheme's ideas, Self's prototype model, Java's syntax — onto Netscape Navigator as JavaScript. Nobody foresaw that the age of software sandboxes had quietly begun.

Book Next Chronicles (2013–2020)3,650 chars · 8 min read

Great Craft in the Smallest Details

During a code review, a seemingly harmless snippet of Elixir turns out to carry two deeper flaws: a commission calculation welded into a balance update, and no bound on the function's range. One small habit — writing the math down — goes a long way toward fixing both.

程序人生 (2015–2019)3,059 chars · 7 min read

The Pensieve

A colleague once asked how I manage to write such rich, substantive essays. The answer comes down to two things: writing with a purpose, and keeping a place — a pensieve — where knowledge, thoughts, and inspiration can be captured before they slip away.

Book Next Chronicles (2013–2020)2,175 chars · 5 min read

A 1024 Day Tribute: The Videos I've Chased Over the Years

A reader asked for more of the videos I've watched, so for 1024 Day I've gone all in and rounded up the talks that hit me straight in the soul — high-definition, uncensored, and utterly mind-expanding. These are the lectures that shaped how I think about tools, systems, simplicity, and craft.

程序人生 (2015–2019)2,729 chars · 6 min read

Programmer's Christmas

Halloween, 31 OCT, is also 25 DEC—so it’s Programmer’s Christmas. A dry joke about number bases leads into polynomials, odd carry systems, and why math’s “useless” ideas can still delight.

程序人生 (2015–2019)1,465 chars · 3 min read

WireGuard: The Beauty of Simplicity

This article runs about 4,300 characters — 10 minutes for a casual read, 30 for a careful one. Recently, at an internal BBL session, I shared WireGuard: how this new-generation VPN achieves breathtaking simplicity through its interface concept, tunnel negotiation, and packet handling.

Book Next Chronicles (2013–2020)6,580 chars · 15 min read

The Remains of the Day (Part V)

For most of my children's upbringing I was the absentee father, giving my time to work and writing. Then a near-rupture at home forced me to commit to a nightly lesson plan — and to learn that math taught as an art, not a formula manual, can captivate a seven-year-old.

Book Next Chronicles (2013–2020)5,217 chars · 12 min read

Rediscovering Git in 10 Minutes

Fascinated by Git’s internals, I built a bare-bones Rust and RocksDB object store for blobs, trees, and commits—avoiding scattered filesystem objects and packfile delta encoding. Before detailing its pitfalls, I revisit Git’s core ideas and object types through hands-on examples.

Book Next Chronicles (2013–2020)4,055 chars · 9 min read

Encrypting Files Peer-to-Peer with the Noise Protocol?

What if the Noise Protocol could encrypt files for peer-to-peer sharing? With only your public key, I can seal a file via a one-way handshake and leave it on untrusted storage—cloud drives, FTP, IPFS, even a blockchain—so only your private key can open it.

Book Next Chronicles (2013–2020)3,444 chars · 8 min read

Reflections on Akeelah and the Bee

Our little one came home from a piano competition defeated and sulked for days. To cheer her up, my wife picked out an inspirational film, Akeelah and the Bee, and we watched it together. I drew strength from it too — above all, the reminder of how much a harmonious family matters to a child.

Book Next Chronicles (2013–2020)2,387 chars · 5 min read

How to Store Passwords Safely?

Modern life gives us countless passwords, forcing us to reuse weak ones or trust managers. Drawing on Signal's key-derivation design, this essay shows how to derive every app password from one master secret—and introduces cellar, a small Rust tool built to do exactly that.

Book Next Chronicles (2013–2020)2,385 chars · 5 min read

The Programmer's Meltdown

After enduring the 'unsafe shitstorm,' actix-web's maintainer pulled the top-ranked Rust framework and walked away from open source—a story of maintainer burnout and the hidden cost of demanding that volunteers reshape their work for everyone else.

Book Next Chronicles (2013–2020)2,451 chars · 5 min read

Happy New Year!

In the blink of an eye, a twelfth of 2020 is gone — has your New Year plan kept pace? After a month of outrage over attacks on doctors and anxiety over Wuhan's outbreak, I send New Year wishes along with a guide to a long holiday without regret: books, Rust, and time with the kids.

Book Next Chronicles (2013–2020)3,608 chars · 8 min read

How to Make Educational Videos: My Journey of Exploration

Since last September I've taught my daughter for an hour every night — history, math, Scratch, science, films, geometry. Friends kept urging me to turn those lessons into videos, and after many false starts I finally found a workflow worth sharing.

Book Next Chronicles (2013–2020)3,618 chars · 8 min read

Flutter: Impressions After One Week

Flutter had been burning hot for over a year and I still hadn't tried it — my indifference came down to ignorance of Dart. After a week of video courses, source code, and hands-on work, here are my reflections on its Skia-based rendering engine, its cross-platform ambitions, and why Dart was the right choice.

Book Next Chronicles (2013–2020)5,806 chars · 13 min read

Dart: What Is Lost in the East Is Gained in the West

A month ago, Dart would have ranked among the languages I least respected. Google's structured web language failed to replace JavaScript, yet its design choices later made it the foundation of Flutter—a redemption story of technical bets paying off in unexpected ways.

Book Next Chronicles (2013–2020)7,431 chars · 17 min read

A Dialogue with Gemini on First Principles

A wide-ranging exploration of first principles across innovation, leadership, problem-solving, negotiation, wealth, writing, fitness, happiness, productivity, strategy, change, persuasion, freedom, marketing, storytelling, humor, and wisdom.

New Hope (2025–2026)6,358 chars · 14 min read

Time to Meet jj: Git's Next Evolutionary Step

Git has ruled version control for twenty years, but its staging area, brittle rebases, and blocking merge conflicts are becoming liabilities in the AI era. jj rebuilds the mental model from the ground up — while staying fully Git-compatible. Here's why it deserves your attention.

New Hope (2025–2026)5,588 chars · 12 min read

Abandoning Multi-Environment Entirely: Reshaping the Next-Generation Serverless Architecture with Rust and Pingora

When we return to first principles and reconsider what "compute" really is, we find that multi-environment setups are an illusion, Kubernetes is an over-abstraction, and Serverless cold starts and connection-pool storms are self-inflicted. This essay dissects an environment-less architecture built on Baggage Header routing, a Pingora smart gateway, Firecracker microVMs, and a Rust Data Bus — an attempt to answer: what should compute look like in the post-Kubernetes era?

New Hope (2025–2026)23,788 chars · 53 min read

The Future of Logs: Rectifying Names

For a decade we built observability into a beautiful tower on a foundation of drifting strings—field names by convention, cardinality by luck, bills by endurance. This essay proposes a radical fix: use protobuf to give every observed event a proper name, unify logs, metrics, and audit into one versioned, owner-tagged, retention-aware event catalog, and keep an escape hatch called ForensicEvent for the unknown unknowns.

New Hope (2025–2026)10,772 chars · 24 min read