來學開飛機 Part. 1

This is an article about my experience learning how to fly an airplane. Given it’s rare in Taiwan to have a chacne to learn general aviation, I’m gonna write this article in Traditional Chinese instead, an English version might come later.

說來想學開飛機的想法也已經存在很久了,但都一直沒有付諸實現。要開始學飛雖然不然,但也很多雜七雜八的事情要思考跟計畫,所以就一直拖拖拖到現在才終於正式開始。這篇先來聊聊正式開始學飛之前會遇到的東西。

Cross-Compile for Raspberry Pi With Docker

I am a lazy person so I’ve been really just compiling the code I want to run on Raspberry Pi … well, on Raspberry Pi. It was slow but it is super simple to setup. However, sometimes you just want to compile something larger than the Raspberry Pi can handle. What now?

#BlackLivesMatter

The #BlackLivesMatter is happening in the US. It feels like a very very distant event for Taiwanese and yet it is happening right beside me. I’ve seen a lot of viewpoints from the Asian American community and that got me thinking: What am I feeling and thinking as a Taiwanese expatriate living in the US.

Marking Helmet Cam Highlights While on a Motorcycle

I want to talk about one problem that has been bugging me as a motorcyclist for a while. I usually ride with a helmet cam with me. For example, I’ve been to Japan for some motorcycle road trips before. I’ve collected hours and hours of videos of the roads ahead and some other different angles. However, it is really hard to find a highlight in the video.

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.