Quick Note on Crostini + Chinese IME

Crostini is the new Google project to bring Linux apps to ChromeOS. Input method is on the roadmap but it has not been implemented yet in the current preview version of Crostini. The situation is a little bit different from the regular Linux one because it is running Wayland and using Google’s sommelier project to passthrough into the ChromeOS host Wayland.

Implement Night Mode on Twitter Lite

We have just launched Night Mode on Twitter Lite recently. Night mode is an exciting feature in regards to engineering. It is a highly demanded, visually pleasing and the primary driver for our effort of moving our CSS to CSS-in-JS. Let’s dive into what did we do to bring this feature to life!

Infinite List and React

I have worked on Twitter’s new mobile website for the past year. We rebuilt the website using the latest web technologies: React, Redux, Node.js/Express to name a few. It is absolutely an exciting project to work on since you rarely get a chance to rework a large-scale website from the ground up and experiment with the latest tools without having to worry about any historical baggage.

One of the problems that we realized early on is that our Tweet is fairly complex in both the React tree and the DOM tree. A Tweet does not only contain the body text and metadata; it also involves processing #hashtags, @mentions, cards and a lot of Unicode ordeals (one of the most prominent examples is emoji) to make sure we are rendering everything correctly across all platforms.

OpenSesame: Reverse Engineering BLE Lock

Open Sesame. Sesame is a smart door lock from the CandyHouse. It uses Bluetooth Low Energy to communicate wirelessly with smartphone apps. We are going to explain its BLE protocol and how we can write a script to control it. The protocol is reverse engineered from its Android app. This is not a full protocol documentation. I only reversed it just enough to lock/unlock the door.

Introduction to Twitter's Zipkin

Zipkin is the Twitter open-source implementation of Google’s distributed tracing system, Dapper. It’s a great tool for people who wants to understand the bottleneck in their multi-services system. The only downside is that I found its documentation isn’t quiet clear about the tracing format, so I decided to write a blog post that gives an overview of the system and its communication protocol.

Two-Factor Authentication for Windows

I had a remote running Windows with Remote Desktop enabled. I’m really uncomfortable about just putting it online with the bare minimal Windows authentication protection, so I went online to do a little research and I found out that the algorithm Google Authenticator is using (it’s called TOTP) could be integrated to Windows authentication system. Here is how to do it.

(My Way To) Write a Hangman AI

I was asked to write a hangman AI as a challenge last week. I was asked not to leak the detail, so I will not post my solution here. However, the hangman problem itself is a well-known problem, I would like to share some thoughts that I used to build my hangman solver.

Applying PhD for Dummies

Applying for a PhD degree can be troublesome. There are agencies out there helping people deal with the process. Is it really necessary to pay lots of money for it? My answer is simply negative. All you need is a right set of tool to track the progress. I will share my experience of applying both the PhD and F-1 VISA (this part only applies to students in Taiwan, as your experience may vary). I started working on my application very late and it resulted in a rush application process. Hope by sharing my experience, you can apply for PhD programs more easily. :)

The Solarized Dark Vim

Today, I spent a whole day on reconfigure my Vim. Vim is a powerful monster that needs care. Once you feed it with (your precious) time, Vim will pay you back with a nice and pretty editing experience.