On MicroSD card problems (2010)
The microSD ware for January 2010 was not an incidental post. It is actually snapshot of a much longer forensic investigation to find the ground truth behind some irregular Kingston memory cards.
Visualizing Docker Containers and Images
This post is meant as a Docker 102 -level post. If you are unaware of what Docker is, or don't know how it compares to virtual machines ...
Finding an Optimal Keyboard Layout for Swype
An overview of my work on optimizing phone keyboard layouts for Swype and T9. There's some interesting history here as well as a novel simulation-based approach to keyboard optimization.
Vim's speed is not really the point (2013)
I am a Vim user. And a Vim fan.I was fiddling around for some time, you know, just knowing the basics, because it is convenient to do small changes on servers without having to worry about installi…
Mastering Git submodules
Hair-pulling. Helpless rage. Clusterfucks. They leave much to be desired, yet sometimes are the right tool for the job. Let’s tame them!
LeakCanary: Detect all Android memory leaks
The Corner is Square's technical blog covering software engineering, APIs, data, open source and more.
Tools for debugging, testing and using HTTP/2
With CloudFlare's release of HTTP/2 for all our customers the web suddenly has a lot of HTTP/2 connections. To get the most out of HTTP/2 you'll want to be using an up to date web browser (all the major browsers support HTTP/2).
Grepping logs is still terrible
The other day, I wrote a controversial piece about why grepping logs is terrible , the reactions were interesting. I've got some great feedback (thanks!), and there were a lot of hostility too. I've been called incompetent, lazy, stupid and a systemd-fanboy and various other things. By people who didn't read past the…
GNU make insanity: finding the value of the -j parameter
The other day at work a colleague posed the seemingly innocent question "Can I find out the value of the GNU make -j parameter inside a Ma...
The convergence of compilers, build systems and package managers
Abstract. The traditional abstraction barriers between compiler, build system and package manager are increasingly ill-suited for IDEs, parallel build systems, and modern source code organization. Recent compilers like go and rustc are equipped with a fully-fledged build systems; semantic build systems like Bazel and…
Data Backup Strategies: Why the 3-2-1 Backup Strategy is the Best
A Backblaze survey found 54% of people know someone who’s lost data. Learn how the 3-2-1 backup rule can help prevent data loss and keep your files secure.