A multiplexer for the ever-growing pile of projects

My ~/work directory only ever grows. Big projects, medium projects, one-afternoon experiments that never got deleted, clones of other people's code kept around for reference. Twenty-six directories at last count, and I had stopped being able to answer basic questions about my own machine: where did I put that script …

Continue reading →

GitVersion on NixOS

I was recently working with a dotnet project that used GitVersion to stamp builds with version numbers derived from the git history:

<!-- Directory.Packages.props -->
<PackageVersion Include="GitVersion.MsBuild" Version="6.2.0" />

The project also had a few other unusual build dependencies for a dotnet project — nodejs, Java, and …

Continue reading →

Dotnet core debugging in Apple Silicon (M1)

Apple is transitioning its processors' architecture from Intel (x86_64) to ARM (arm64e) for its line of laptop and desktop computers. The M1 is the first processor in this transition. Programs built for one architecture don't run on the other, but to make this transition smooth, Apple is using a few …

Continue reading →

Advent of Code 2020

Another year, another December, another Advent of Code — an advent calendar where each day you get a problem to solve through programming, all wrapped in a surreal Christmas-themed story. @ericwastl does a phenomenal job of creating very varied problems where several types of computer science knowledge can come in handy …

Continue reading →

Three Years of OnePlus One

Three Years of OnePlus One

This is the phone everyone wants
but only a few can get.

OnePlus One
OnePlus One, the original flagship killer

I used to play Ingress, a geocaching kind of game. It was the predecessor of Pokémon Go. While on vacations, away from my usual territory, I met …

Continue reading →

Controlled Output through Rx Streams

Reactive Extensions make it very easy to create a processing pipeline, especially when some stages on that pipeline are naturally asynchronous operations. This is because just like a Promise (or Task in .NET) can be seen as the asynchronous version of anything that produces a value, the Observable pattern can …

Continue reading →

Going Mechanical: 60 days of Pok3r

The case for the Mechanical Keyboard

If you take your craft seriously enough, there's a point in time where the tool becomes the bottleneck. The warriors' sword, the musician's instrument, the writers' pen. As a software engineer, I spend more time thinking than typing, but I still kind of end …

Continue reading →