How to Implement Autocomplete

January 9, 2020

Implement autocomplete in 79 lines of code. Actually, it's not that easy.

Without the infrastructure discussed in this post, that code snippet mentioned here is useless.

I will walk through my journey to implement autocomplete in this blog post, using my programming language SAMLANG as an example.

My Decade in Review

January 7, 2020

Following the lead of React and JavaScript god Dan Abramov, I decided to also publish my decade in review blog post.

I want to clarify that I intend to present the following content as plain facts. I will talk about the facts that certain events happened, and the facts that I thought and reacted to certain events in certain ways. You should treat them as a totally ordered set of boring logs rather than definitive guidance to something.

(To be friendlier to not-so-technical readers, I italicized all the technical jokes that are not essential to understand the story.)

Move Fast with Automation Powered Monorepo

August 24, 2019

In the last article The Road to Better Engineering, I promised that there will be a new post about my recent website re-architecturing effort. In the past week, I am working to gradually transform the website monorepo into a repository with latest technologies and reliable automation. At the time of writing this article, the transformation is complete and the repository has reached a state that I am mostly satisfied with.

The Road to Better Engineering

August 17, 2019

The Start

About three years ago, a student club welcomes the largest influx of new members in its entire existence. It is considered as a milestone: it’s a de facto recognition that it’s becoming prominent. By that time, its product covers over 40% of the student base and the club is the place for future software engineers to go. The former president of the club publicly celebrated this, and he was thinking about how the club can continue to move fast without any overhead of bureaucracy.

If you have read my blog post before, you know what had happened. Beneath the promising sign of future prosperity, there were huge risks: the main product already hit the upper bound of the user count; the engineering team was not well-trained by the former president; more importantly, the codebase was in a hell state.

That club is called Computerization and that dumb former president was me.

Design Choice of SAMLANG in Alpha

January 12, 2019


In the last summer, I developed my first programming language SAMPL. Measured against my technical skills at that time, it was a clear success. I was able to implement an interpreter and a compiler for a self-designed functional programming language with only the knowledge to implement an interpreter for a toy language in Cornell CS 3110. I was particularly proud of the module system and generics in that language.

Highlights in 2018 and Short-Term Plans in 2019

January 4, 2019

I won't write a reflection on what I did in 2018 because my resume and GitHub commit history are already self-evident. In the first part of this post, I will list some amazing things I created in 2018 for the purpose of summary, because some of the blog posts are long and I know you want to a TLDR version. I will then talk about some short-term plans that I hope to check off before my winter holiday ends.

Computer Science in High Schools

December 31, 2018

This year, I got an intern with a resume that did not mention my high school’s CS project with a single word. Therefore, at this point, either success or failure in my high school CS career does not matter at all, so I can honestly reflect on it. I reviewed again all my computer science related records and writings to ensure the content in this article is as accurate as possible. I hope it still helps.

Critter World is Turing Complete - A Not-So-Rigorous Proof

August 27, 2018

Critter World is Cornell's CS 2112's Final Project. It is a simulated hexagon world where critters, controled by programs, can move, eat, mate, bud, attack, etc. The programming language is very primitive and not Turing complete, but it's still useful and expressive enough to cleverly control one step of a critter move. You can see the spec publicly here.

Automation! Migration to CI/CD System for My Open-Source Projects

August 11, 2018

Badges: Article Good Style Good Examples Good :)

GitHub badges look good. Having them in GitHub README is an indication of a good open source project. In the last blog post, I talked about how I containerized my website. In this post, I will describe how I setup CI/CD for my open source projects.

A Year of Change - Reflection on My Website's Architecture Update

August 1, 2018


I bought the domain in February 2015 and officially started my own website. Before that, I hosted my website on the free tk domain, but I decided to remove that kind of sketchiness when I received my first scholarship. The website is poorly maintained, received no update for almost a year since it's published. After I was admitted to Cornell in December 2016, I started to update my website more often, but still not as frequent as I would do right now. In a quite slow progress, the website finally got to an acceptable shape at the end of July last year.