FEIFAN ZHOU • BLOG INDEX

2025-09-17
Index
9.17
01.

YEAR 1 REFLECTIONS

2025-09-14

When I was 21, I promised myself that I'd be working on my own company before 30. I didn't feel ready at the time (and, in hindsight, I definitely was not). Now, 9 years on, I've fulfilled that promise…

02.

TANAGRAM ROADMAP: SEPTEMBER 2024

2024-09-03

Tanagram is no longer a nights-and-weekends project — I'm now working on Tanagram full time, with support from Pear.

03.

STREAMING LOGS IN SWIFT TO THE CLOUD

2024-06-22

Ahead of getting a few friends to be Tanagram's first users, I wanted to have streaming logs — logs that would show up automatically in a web service as soon as they were emitted. Since Tanagram is a...

04.

TANAGRAM ROADMAP: JUNE 2024

2024-06-04

Tanagram remains a nights-and-weekends project. My progress pace during May averaged about 1.5 workdays per week. Would you like to receive these updates over email? I'm also publishing these to...

05.

TANAGRAM ROADMAP: MAY 2024

2024-05-05

Tanagram remains a nights-and-weekends project. My progress pace during April averaged about 1.5 workdays per week. Would you like to receive these updates over email? I'm also publishing these to...

06.

TANAGRAM ROADMAP: APRIL 2024

2024-04-08

Tanagram remains a nights-and-weekends project. My progress pace during March averaged about 1.3 workdays per week.

07.

TANAGRAM ROADMAP: MARCH 2024

2024-03-05

Tanagram remains a nights-and-weekends project. My progress pace during February averaged about 1.5 workdays per week. Would you like to receive these updates over email? I'm also publishing these...

08.

TANAGRAM ROADMAP: FEBRUARY 2024

2024-02-06

Tanagram remains a nights-and-weekends project. My progress pace during January averaged about 1.0 workdays per week.

09.

TANAGRAM ROADMAP: JANUARY 2024

2024-01-07

Tanagram remains a nights-and-weekends project. My progress pace during December averaged a bit under 1.0 workdays per week; I was on vacation for much of the month Would you like to receive these...

10.

TANAGRAM ROADMAP: DECEMBER 2023

2023-12-03

This is my 23rd monthly public roadmap update for Tanagram development (I'll stop counting after this one; see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace...

11.

TANAGRAM ROADMAP: NOVEMBER 2023

2023-11-05

This is my 22nd monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has averaged...

12.

TANAGRAM ROADMAP: OCTOBER 2023

2023-10-02

This is my 21st monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has averaged...

13.

TANAGRAM ROADMAP: SEPTEMBER 2023

2023-09-04

This is my twentieth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

14.

TANAGRAM ROADMAP: AUGUST 2023

2023-08-06

This is my nineteenth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

15.

TANAGRAM ROADMAP: JULY 2023

2023-06-28

This is my eighteenth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

16.

TANAGRAM FEATURES GUIDE

2023-06-26

Updated for version 202309-01

17.

TANAGRAM CHANGELOG

2023-06-24

202308-01 Direct download This version adds a wizard to automate most of the work of creating a compilation database. See the README for details. It also improves UI layout in a few places in the...

18.

TANAGRAM ROADMAP: JUNE 2023

2023-06-05

This is my seventeenth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

19.

TANAGRAM ROADMAP: MAY 2023

2023-05-04

This is my sixteenth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

20.

TANAGRAM ROADMAP: APRIL 2023

2023-04-02

This is my fifteenth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

21.

HOW TO USE SOURCEKIT-LSP

2023-03-05

Background: I'm building Tanagram, a tool to browse and edit code like a relational database (instead of text files). I'm using SourceKit-LSP to implement code-understanding for Swift. There was very...

22.

TANAGRAM ROADMAP: MARCH 2023

2023-03-05

This is my fourteenth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

23.

TANAGRAM ROADMAP: FEBRUARY 2023

2023-02-06

This is my thirteenth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

24.

TANAGRAM ROADMAP: JANUARY 2023

2023-01-09

This is my twelfth monthly public roadmap update for Tanagram development (see previous updates here). Tanagram remains a nights-and-weekends project. My progress pace over the past month has...

25.

TANAGRAM ROADMAP: DECEMBER 2022

2022-12-04

This is my eleventh monthly public roadmap update for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also...

26.

TANAGRAM ROADMAP: NOVEMBER 2022

2022-11-07

This is my tenth monthly public roadmap update for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also provide a...

27.

TANAGRAM ROADMAP: OCTOBER 2022

2022-10-03

This is my ninth monthly public roadmap update for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also provide a...

28.

TANAGRAM ROADMAP: SEPTEMBER 2022

2022-09-05

This is my eighth monthly public roadmap update for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also provide...

29.

TANAGRAM ROADMAP: AUGUST 2022

2022-08-07

This is my seventh monthly public roadmap update for for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also...

30.

TANAGRAM ROADMAP: JULY 2022

2022-07-05

This is my sixth monthly public roadmap update for for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also...

31.

TANAGRAM ROADMAP: JUNE 2022

2022-06-05

This is my fifth monthly public roadmap update for for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also...

32.

TANAGRAM ROADMAP: MAY 2022 + DEMO #3

2022-05-08

This is my fourth monthly public roadmap update for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also provide...

33.

FEATURE-LESS SOFTWARE

2022-04-04

Most software is feature-ful: built from an amalgamation of individual features, which are usually atomic ways to do something specific, arranged in a singular interface that has to work for every...

34.

TANAGRAM ROADMAP: MARCH 2022

2022-03-06

This is my third monthly public roadmap update for Tanagram development (see previous updates here). I'm publishing this update to document my progress and hold myself accountable, and also provide a...

35.

TANAGRAM ROADMAP: FEBRUARY 2022

2022-02-07

This is my second monthly public roadmap for Tanagram development (see January's here). As with last time, I'm publishing this roadmap because I believe doing so will increase my accountability for...

36.

TANAGRAM ROADMAP: JANUARY 2022

2022-01-03

I've been writing monthly roadmaps for Tanagram development in private for a few months. For 2022 I've decided to publish them, in part because I believe doing so will increase accountability for...

37.

TANAGRAM: CREATING A DATABASE-BASED CODEBASE

2021-10-29

I've been working on Tanagram, a programming environment that's trying to make it easier to browse codebases and build programs by turning code into data. This post is a refinement of previous ideas...

38.

TANAGRAM DEMO #2

2021-07-24

I've been working on a new way of writing and working with software. This is the second demo (demo 1 here), and although this, too, looks like a toy, I think it's a good encapsulation of what I'm...

39.

TANAGRAM DEMO #1

2021-05-09

I've been working on a new way of writing and working with software. Although it's still very early along[^3] and looks very much like a toy, I'd like to share a demo:

40.

THE DATABASE INSIDE YOUR CODEBASE

2021-02-14

Navigating codebases of any meaningful size is difficult. Most of a programmer's time is spent jumping through the codebase, reading or skimming to build a mental model of the constructs and...

41.

COMPUTERS HAVE GONE WRONG (AND IT'S ALL SOFTWARE'S FAULT)

2021-01-29

Computers Have Gone Wrong (And It's All Software's Fault)

42.

TEACHING MENTAL MODELS

2021-01-01

I was recently trying to explain the concept of mental models to my younger brother — how to build them, and how they could be useful. Ironically, I didn't really have a good idea of how they worked,...

43.

PHOTOGRAPHY

2020-12-28

Currently, I take photos with my iPhone 12 Pro Max (often using Halide), a Nikon D7200, and a Skydio 2.

44.

BUILDING A NEW BLOG

2020-11-13

I've moved my blog off of Wordpress — in part because of limitations with Wordpress.com's hosted offering[^0] — and onto a custom-built site[^1].

45.

THE DREAM MACHINE: A STORY OF CREATIVITY, TINKERING, AND CROSS-POLLINATION

2020-09-22

> "Creativity is a function of freedom" – George Pake

46.

COMPUTERS AREN'T FUN ANYMORE

2020-07-27

Throughout The Dream Machine, a history of the early days of computing, tinkering and having fun was a recurring theme throughout the decades. I wasn't around to experience the early days of...

47.

NO ONE CARES ABOUT SOFTWARE QUALITY

2020-06-22

No one cares about software quality anymore. I mean, yes technically that is untrue and there are demonstrably some people who do, but for the most part, quality software has become a niche...

48.

INADEQUATE EQUILIBRIA: A SUMMARIZED REMIX

2020-04-07

In late 2017, Inadequate Equilibria spread like wildfire across my Twitter feed. Having worked through it, I’d now easily rank this book as one of the most impactful I’ve ever read on the way I see...

49.

NEVER WASTE A GOOD CRISIS

2020-03-24

The past few weeks, indefinitely isolated at home, has given me time to think about the civilizational optimizations and limitations that COVID-19 has revealed and the stunning interconnectedness of...

50.

REMOVE THE MIDDLE OPTION

2020-02-11

Recently I was talking to a friend who’s thinking about getting a car and wanted to get my thoughts on leasing for 3–5 years vs buying/financing. As it happened, I have also been thinking about...

51.

AN EIGHTY-YEAR CAREER

2019-11-12

When I was a kid living at home, I remember my dad, from time to time, wistfully looking forward to retiring. I would often ask him why, since retirement sounded so boring, but I don't remember ever...

52.

HOW TO DO MY JOB

2019-09-09

Recently, I was talking to a future coworker (who didn’t work as a software engineer), and I found myself indelibly curious about what exactly his job was like and what I would need to know if I...

53.

DOCUMENTING SOME THOUGHTS AROUND TANAGRAM

2019-08-09

Tanagram is the name of a project idea I’ve been thinking about for a while. I trace the idea’s lineage back to a little prototype I built in late 2013. I didn’t think much of it at the time, but...

54.

INTRODUCING LEETCODESOLUTIONS

2019-07-23

On a Saturday afternoon last fall, I found myself in front of an expansive whiteboard covered in diagrams, tables, and somewhat legible hand-writing. I was there with a new coworker, and we had just...

55.

NEXT STEPS

2019-07-23

Last week was officially my final week with Trustwork, a seed-stage startup where I joined about two years ago as the second engineer. It’s an equitable conclusion to a personal journey that began...

56.

LEARN HARDER THINGS

2019-03-05

When you take the time to learn something new on your own time, it’s better to learn things that are conceptually harder than, or paradigmatically different from, what you already know, rather than...

57.

DECISIONS ≠ OUTCOMES

2019-01-02

While reflecting on how well I make decisions, I realized that it’s possible, and in fact important, to separate the evaluation of the decision-making from its outcome. In other words, the process of...

58.

APPLE WATCH: NOT-A-REVIEW

2018-12-12

There seems to be an inverse correlation between how much I pay for an Apple product and how much I enjoy using it. My Macbook Pro (2016, Touchbar) is functional at best, and unusably glitchy...

59.

ON FRUSTRATION AND ANGER

2018-08-28

When I was younger, I used to be easily frustrated when things weren’t going my way. I would feel a surge of emotion wash over me, and I would indulge in that burning warmth while it lasted. The...

60.

APHANTASIA AND THE SPEED OF THOUGHT

2018-07-17

A recent Twitter exchange reminded me that we all perceive the world differently. For me, one of these differences is that I’m not really able to visualize anything in my mind.

61.

AN INTRODUCTION TO JSCODESHIFT

2018-07-07

Recently, I had to make a straightforward change over dozens of files spread across our entire frontend codebase. I didn’t like the idea of finding all the files and manually make the change; in the...

62.

SO-WHAT-NESS

2018-06-25

I’ve noticed a sense of so-what-ness that permeates a lot of the conversations I’ve had or observed. It’s a sense of mild cynicism that hangs over a conversation or idea, where it feels like every...

63.

NOTES ON FASTING

2018-06-01

The hardest part of not eating for 120 hours and 11 minutes was the boredom. From the afternoon of May 17th until a late lunch on May 22nd, it was as if I found myself living in a boundless void....

64.

THOUGHTS ON PERSONALIZING SOFTWARE

2018-05-22

I’ve been obsessed with productivity software for most of my life. I’ve sampled dozens, from simple personal tools (like Apple Notes) to full-featured productions complete with the kitchen sink (like...

65.

WORK ON GOOD IDEAS

2018-05-07

Despite what some people might want to believe, there is such a thing as bad ideas. In the context of building valuable ventures, bad ideas are typically bad in a few ways:

66.

TECH STACKS ARE OVERRATED

2018-04-30

In the process of interviewing dozens of junior and intermediate engineers, the questions candidates ask implicitly say as much about them as the rest of the interview. One question that comes up...

67.

SERVICE OBJECTS AS TEST FIXTURES

2018-04-25

In our Rails codebase at work, we often have tests that begin with many lines of setup code — declaring relevant variables, creating and updating models — to setup the database so we actually test...

68.

HOW I THINK ABOUT SALARY

2018-04-23

Nobody gets rich from a salary.

69.

EVALUATING WORK OPPORTUNITIES

2018-04-06

Recently, I spoke with a friend about job opportunities. I briefly shared with him my framework for deciding between companies, which I developed during my job search last summer. I want to expand on...

70.

THERE’S MORE TO CODING THAN JUST WRITING CODE

2018-03-26

For most of my life I firmly believed that a Computer Science degree wasn’t necessary to work as a software engineer; there exists a massive amount of resources and practice opportunities to learn...

71.

BEHAVIORAL OBSERVATIONS FROM TAKING OVER SXSW

2018-03-20

I just got back from taking over SXSW with Trustwork. We ran a scavenger hunt with multiple stations giving out free stuff in exchange for user signups. This post is the second of two posts on...

72.

PERSONAL LESSONS FROM TAKING OVER SXSW

2018-03-19

I just got back from taking over SXSW with Trustwork. It was an exhausting eight-day marathon, complete with an air mattress in the office, questionable food, and hundreds of rejections a day. I...

73.

MIND-MAPPING

2018-03-03

For many years, I dogmatically resisted using mind maps to take notes or organize my thoughts. I was always afraid I’d get “stuck” if I used pen and paper — that my map would end up too cramped (or...

74.

ROI: IN-UNIT LAUNDRY

2018-02-23

I walked past a fancy laundromat + café place today. As a business, I think it’s a great idea (although somewhat indulgent as well), but it got me thinking (as one does) about the economics of...

75.

VIEWING IMESSAGE HISTORY ON A COMPUTER

2018-02-20

I occasionally want to go back and browse conversations I’ve had, either to lookup some detail or to revisit a discussion (many of which might become future blog posts 🙃). Aside from work Slack, the...

76.

FALCON HEAVY

2018-02-09

I didn’t expect to get chills racing down my spine, but I did. Even now, after the initial excitement has worn off, I still think the Falcon Heavy launch and booster landing is one of the coolest...

77.

DELETING FACEBOOK

2018-02-05

A week ago I deactivated my Facebook. It’s tempting to indulge in hyperbole and say that it’s the best thing I’ve done for my life, but I don’t feel any different. And I think that’s the point.

78.

BREAKFAST: EGGS

2018-02-01

I didn’t know how to make eggs for a very long time. That’s mostly because I was squeamish about touching raw eggs. It might’ve also been related to my inability to crack an egg without making a mess...

79.

START WITH WHY

2018-01-31

> This is my blog. There are many like it, but this one is mine.

INDEX PAGE 01