Open-source maintainer, speaker, rebel. About me.

fastcat - A Faster `cat` Implementation Using Splice

Lots of people asked me to write another piece about the internals of well-known Unix commands. Well, actually, nobody asked me, but it makes for a good intro. I'm sure you’ve read the previous parts about `yes` and `ls` — they are epic. More »

That Octocat on the Wall

So I'm in a bit of a sentimental mood lately. Github got acquired by Microsoft. While I think the acquisition was well-deserved, I still wish it didn't happen. Let me explain. More »

Ten Years of Vim

When I opened Vim by accident for the first time, I thought it was broken. My keystrokes changed the screen in unpredictable ways, and I wanted to undo things and quit. Needless to say, it was an unpleasant experience. There was something about it though, that kept me coming back and it became my main editor. Fast forward ten years (!) and I still use Vim. Why is that? More »

Refactoring Go Code to Avoid File I/O in Unit Tests

At work today, I refactored some simple Go code to make it more testable. The idea was to avoid file handling in unit tests without mocking or using temporary files by separating data input/output and data manipulation. More »

A Tiny `ls` Clone Written in Rust

In my series of useless Unix tools rewritten in Rust, today I'm going to be covering one of my all-time favorites: ls. First off, let me say that you probably don't want to use this code as a replacement for ls on your local machine (although you could!). As we will find out, ls is actually quite a … More »

Rust in 2018

I wrote about the future of Rust before and it seems like nobody stops me from doing it again! Quite the contrary: this time the Rust core team even asked for it. I'm a bit late to the party, but here are my 2 cents about the priorities for Rust in 2018. More »

Functional Programming for Mathematical Computing

Programming languages help us describe general solutions for problems; the result just happens to be executable by machines. Every programming language comes with a different set of strengths and weaknesses, one reason being that its syntax and semantics heavily influence the range of problems which… More »

Rust for Rubyists

Recently I came across a delightful article on idiomatic Ruby. I'm not a good Ruby developer by any means, but I realized, that a lot of the patterns are also quite common in Rust. What follows is a side-by-side comparison of idiomatic code in both languages. The Ruby code samples are from the origi… More »

Making Myself Obsolete

In December 2015 I was looking for static analysis tools to integrate into trivago's CI process. The idea was to detect typical programming mistakes automatically. That's quite a common thing, and there are lots of helpful tools out there which fit the bill. So I looked for a list of tools... More »

Modern Day Annoyances - Digital Clocks

This morning I woke up to the beeping noise of our oven's alarm clock. The reason was that I tried to correct the oven's local time the day before — and I pushed the wrong buttons. As a result I didn't set the correct time, instead, I set a cooking timer... and that's what woke me up today. More »
« Next Previous »