• Raising the Bar

    I started my professional career with PHP in the year 2000. Professional in the sense that I got paid to program, not so much because of my knowledge of PHP. continue reading
  • Advent of Rust // Day 11

    I love that each Advent of Code reminds me at one point that I never paid much attention in math class. Part one of day 11 was, as usual, straightforward. With the divider gone and the number of rounds up to 10.000 in part two, I knew I was fucked. continue reading
  • Advent of Rust // Day 7

    I spent this morning trying to build a super generic directory tree structure using dynamic types and ended up being frustrated because I don’t get how ownership, lifetime, and all that jazz works in Rust. continue reading
  • Advent of Rust // Day 3

    I was surprised there’s no built-in way to find the intersection of multiple sets. I started to implement a function for this, but quickly discarded it in favor of a more specific one for the task at hand. After all, there’s exactly one character to find for each bunch of strings. continue reading
  • Advent of Rust // Day 2

    The second day was still easy on the puzzle side. I guess I went a little overboard with the implementation, but I wanted to play with the language. I had a lot of first ones today: First struct, first enum, first use of impl to add functionality, passing functions as arguments, and adding behavior with derivable traits. continue reading
  • Advent of Rust // Day 1

    Today is December 1st and thus the first day of Advent of Code. This year I decided to give Rust a try. As with my attempt with Haskell two years ago, I come unprepared with virtually zero knowledge about Rust. The only things I did beforehand were install the Rust compiler, the IntelliJ Rust plugin, and run the canonical “hello world” program. continue reading
  • Colocating Tests and Production Code in PHP(Unit)

    Colocating tests and production code is the default in some programming languages and has become the de facto standard in others. I have to admit that while I liked it in Go and TypeScript, I always felt a little queasy about doing it in PHP. I couldn’t really name it; it was more a sense of “it doesn’t feel right”. continue reading
  • Keyreative KAM Wraith

    Even though I hoped people would come for my manifold and perceptive writing, one of the most visited pages on my little website is this picture in the pipstagram section. Someone even emailed me a while back asking where I got these keycaps. So, for all y’all folks interested, those are the KAM Wraith keycaps. continue reading
  • There's a new kid on the block...

    … and they have a sharpie. I like street art. Although I appreciate the well crafted ones the most, I often find myself fascinated with sophomoric dauberies or other ridiculous things that probably weren’t even meant to be art. A few weeks ago I walked by a torn-down poster and stopped because of the scrawl on it. continue reading
  • I wouldn't write a test for that

    Last week, I was helping a colleague who was working on a small application. One component was responsible for sending data to a configured recipient. I suggested writing a test to verify that an email was actually sent containing the relevant data in the body. This led to the following discussion: continue reading
  • Lost Tracks

    I often joke that I’ve lost more tracks than other people have produced in their lives. Regardless of whether that’s true or not, I certainly have the problem that I’m never satisfied with what I have. There’s always something to be improved, re-recorded, or worked on. Often it’s just not “right” yet. continue reading
  • A story about not saying goodbye

    My dad died. Not recently, though - it’s been 15 years as of today. Although much time has passed, this story still haunts me, and occasionally memories of those days surface. I often thought about writing it down to get it out of my head, and also to preserve the memories before they fade. continue reading
  • Advent of Haskell, Part 2

    It’s already been more than two weeks since I started my little Advent of Code + Haskell adventure. So it’s time for a little update. Here’s what I got done. Day 2 Puzzle description Regular expressions are often my first choice when I have to parse something. Like in this case, to get the values easily out of strings like 6-8 b: bbbnvbbb. continue reading
  • Approaching 100% code coverage in a healthy way

    One question the always comes to my mind in the discussion about code coverage is: What does the percentage refer to, anyway? This is probably a stupid question. It seems to be common sense that it is the whole codebase. But does it really have to be? What is the value of code coverage, again? continue reading