Home avatar

David Feng

How to present the differences between vegan and vegetarian diets

Today I decided to figure out what are the differences between vegan and vegetarian diets. Google pointed me to this page which contains the following table:

vegan table

While the information is very detailed and helpful, IMHO the table could use some better design. So here is my revised version:

name eggs dairy fish/seafood meat poultry
Semi-vegetarian or flexitarian Y Y maybe maybe maybe
Pescatarian Y Y Y N N
Vegetarian or lacto-ovo vegetarian Y Y N N N
Ovo-vegetarian Y N N N N
Lacto-vegetarian N Y N N N
Vegan N N N N N

The "Greek to me" Graph

In English, when people don’t understand what you are saying, they might say “it’s Greek to me”. We can represent this relationship with a direct edge from an English node to a Greek node. This Wikipedia page collects similar idioms in various languages. We can construct a graph from this!

I was excited about this brilliant idea until I googled ‘greek to me graph’. Of course, people have already done it. This post (2015) shows how to use python to parse the Wikipedia page and generate the graph, highly recommended.

What is agile (for a software developer)?

(Adapted from an internal talk)

The tech world has seen a lot of talking about agile/scrum, almost to the point that it is the silver bullet for software engineering. The new meaning is even in the definitions that google gives.

On the contrary, some people absolutely hate it, some say that process matters far less than everyone pretends it does (which I agree). I also saw a very interesting theory from HackerNews: the agile process improves the productivity of a C-level developer, but it slows down your A-level developer at the same time, so everyone ends up at B-level. Since C-level developers are much more common than A-level ones, the overall gain is positive.

Cleaning up CollisionViz - advice to new programmers

CollisionViz is a data visualization app which shows car crashes in the New York City. I wrote it when I was at AppAcademy in 2017. Since then, I haven’t spent a lot of time on it. Recently I found out that it stopped working. Software is like cars - it needs maintenance. In addition to fixing it, I gave it an overhaul. Below are some advice that I wise I knew when I first wrote CollisionViz, and hopefully it is applicable to other new programmers.

Clean Code in React

I published this article on codeburst/Medium on 2018/01/28. It has received 12.6k views and 1.96k claps as of 2019/01/05.


My first full stack project is Bara, a single-page Yelp clone. After weeks of development and refactoring, I am pretty happy with the result. The UI looks good; the functionality works fine: users can sign up, log in, CRUD businesses and reviews.

Recently I’ve been reading Clean Code, and I begin to appreciate the importance of keeping the code clean. Programmers are authors; the code is like books we write, except our reader almost never begin to read from page 1. Usually the reader directly dives into a module/component to fix a problem or add a feature. To help the reader (could be your teammate, or even future you!), it is the author’s responsibility to make sure that the code is easy to read (and to change, but that’s another big topic). Martin Fowler said: