Log Structured Merge Trees
A detailed look at the interesting LSM file organisation seen in BigTable, Cassandra and most recently MongoDB.
Comparing Rust and Java
It may not be obvious from my other blog entries, but I work as a Java developer. I also freely confess to enjoy it, which probably makes me part of some minority.
Finger Trees: A Simple General-Purpose Data Structure (2006)
Finger Trees: A Simple General-purpose Data Structure
People suck at technical interviews (2014)
Most technical interviews test the wrong things: memorized syntax, whiteboard coding, brand-name employers. Instead, hire for learning ability, intellectual honesty, clear communication, and basic decency. "Team fit" is bias in disguise. Homogeneity means you're hiring wrong. Good hiring is hard and slow, but worth it.
500 Byte Images: The Haiku Vector Icon Format
Haiku uses a custom vector image format to store icons. This is surprising both because most OSes consider bitmaps to be totally sufficient to represent icons and because there are plenty of vector graphics formats out this (e.g. SVG). The goal of the Haiku Vector Icon Format (HVIF) is to make vector icon files as…
135M messages a second between processes in Java (2013)
Taking a lock free queue off heap and using it as an IPC mechanism to deliver 135M messages a second between processes in Java.
After reading “Rails is yesterday’s software”, I need to reply
After reading a blog post provocatively called “Today I accept that Rails is yesterday’s software” I felt the need to reply. I’m not sure why, I’m not going to convince anyone of anything, definitely not the author of that post. I want to reply because Rails is my current platform of choice, and let’s be honest…
Reflections on Rusting Trust
The Rust compiler is written in Rust. This is overall a pretty common practice in compiler development. This usually means that the process of …
Beware of Developers Who Do Negative Work
Not all developers make positive contributions. Some create more work for others than they do themselves.
Rust and Nix = easier Unix systems programming
Lately I’m writing lots of Rust , and I’m particularly interested in systems programming on unix. I’ve been using and contributing to a library called nix 1 , whose mission is to provide ‘Rust friendly bindings to *nix APIs’.
A SoundCloud client in React and Redux
Build a React + Redux SoundCloud Client. It is a huge tutorial where you build an example real world application. Learn React JS and Redux along the way. Consume the SoundCloud API, login and interact...
Image unshredder by simulated annealing (2015)
On another page , I unleash the simulated annealing algorithm on a toy problem. It generates an image full of random colorful pixels, and rearranges the pixels so that similar colors are near each other.
The Elegance of Deflate
A little while back I found need of a PNG loader for a small project of mine . Being a complete tool I of course decided to write my own -- after all, why save yourself effort when there are still wheels waiting to be reinvented? You can check the source to the inflater code here if you so like - it's quite cleanly…
Falsehoods programmers believe about video
Inspired by numerous other such lists of falsehoods. Pretty much every video player in existence gets a good chunk if not the vast majority of these wrong. (Some of these also/mostly apply to users, though)
Four months with Haskell
At the end of January of this year, I switched to a new job, almost exclusively because I was enticed by the idea of being able to write Haskell. The concept of using such an interesting programming language every day instead of what I’d been doing before (mostly Rails and JavaScript) was very exciting, and I’m…
Want to spell check? Read the fine print
Update : This post has hit Hacker News - you might want to follow the comments over there.
Go 1.7 toolchain improvements
This is a progress report on the Go toolchain improvements during the 1.7 development cycle. All measurements were taken using a Thinkpad x220, Core i5-2520M, running Ubuntu 14.04 linux.
Using attrs for everything in Python
Use attrs. Use it. Use it for everything.