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.

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.

Show last modified date in Middleman

It is very convenient to build a static website using middleman along with some tools like compass, twitter’s bootstrap framework. You can easily build a professional looking website while maintaining high code readability and maintainability.

Trying out the impress.js

There is a interesting javacsript library being released on the github these days, the impress.js. Impress.js is a framework for making presentations on a open canvas, or so called the Prezi-style. I tried out the Prezi few years ago. It’s cool, but as the README from the impress.js said: ``impress.js may not help you if you have nothing interesting to say ;)’’. I don’t really have a chance to make a will-use-on-the-stage presentation on a Prezi.