RSS Amplifier

Blog

fabian writes.

Recent posts on capnfabs.net

capnfabs.netRSS feed ↗78 posts

Latest posts

A method and calculator for building foamcore drawer organisers

It is a truth universally acknowledged, that a man in possession of a good set of drawers, must be in want of a good organization system. Neat. Last year, I bought a Bisley chest of drawers on wheels (it also doubles as a handy pull-out seat if you slap a cushion on top), and it’s been drawer chaos since then. Absolute mayhem; cables getting tangled with old keyrings, snacks sitting…

A custom cardboard insert for Forest Shuffle + expansions

The latest board game obsession in my household is Forest Shuffle. It’s an extremely cute game that’s just the right amount of competitive; if you like Wingspan, you’ll probably like this (I think it’s easier to pick up, and less engine-building-y). Since it first came out, the developers have released two expansion packs which make the game even better (and also, one of…

I vibe-coded an app. And also made some jewelry.

Last weekend, I took a silvercasting workshop run by a friend and made an absolute chonker of a ring. I’m going to oversimplify enormously – first, you carve the shape out of wax: This bit took ages and I also broke the first one Then you press it in to sand and oil: You have to clean it out a bit after you make an imprint in the wax Continue reading ➡

A low-distraction Spotify player for the home

I built a weird little remote control for my stereo system from a bluetooth macropad. Continue reading ➡

The Windows 98 taskbar, now on macOS

Are you a macOS user? Do you enjoy the elegant user experience? And yet, do you ever stare at your empty desktop in the morning, and think… wow, I wish I just had a little bit more inspiration? A little bit more motivation? A bit more enthusiasm? Do you find yourself thinking… I just wish I knew where to Start? Introducing: The Windows 98 Taskbar, now available for macOS. On the…

Five good hikes around Berlin

Here are five good hikes, mostly about 10 or 15km long, each reachable with public transport, around Berlin. this isn’t a cooking blog, but you’re still getting the preamble In late 2020 I made a habit of walking somewhere in nature once a week. In October that year, a cascading set of planning failures meant that I was stuck in Berlin but very, very desperate to spend some time…

Let's talk about alcohol.

On alcohol use and recovery. Continue reading ➡

We all need more reasons to celebrate.

Have you ever thought about how weird birthdays are? Don’t get me wrong – age is a useful concept, it’s just measured arbitrarily. We measure it in fractional orbits around the sun, but we could just as meaningfully choose: the number of times the moon has orbited the earth (~lunar months), or the height of a specific tree in the middle of the town that you live in, or the…

How to: Run spotifyd or librespot when a USB sound card is connected (on Linux)

Ok, this blog post has a really specific title, but I’m sure a lot of it generalises to other devices and other software. 😅 I bought a stereo system recently! I don’t own any physical music media anymore – I left all my CDs behind when I moved to Germany seven years ago, and mostly just use Spotify now. So I needed a way to get Spotify on the stereo. There are amps that support…

Berlin weather forecasts on an E-ink display

Every few months, I become wildly dissatisfied with my relationship with my mobile phone and vow to take steps to change it. Typically, that has meant removing reasons to pick it up – I want to be able to come home, throw my phone in a drawer and then not think about it until I leave home again. In the past, this has resulted in: Suggestions to my friends that we should all get landlines…

A walk from Brighton to Eastbourne (via the Seven Sisters)

I had a spare weekend in London before a work trip in February. I booked late, and rather than spending €€€ on a convenient flight, I took a 7:05am flight from Berlin to Gatwick on Saturday morning. I thought I’d go for a walk. There’s (fast!) trains from Gatwick to Brighton every 15 minutes or so, and from Brighton, it’s a 44 km / 28 mi walk along the coast to Eastbourne, which…

Parse huge XML files quick with Rust + Serde + quick-xml

Recently, I wondered whether songs were being increasingly released with entirely lowercase titles. I ended up using MusicBrainz’ library as a datasource, which comes packaged up as a Postgres database, but the data source I considered initially was one of Discogs’ monthly data dumps, which is made available for download as a set of (gzipped) XML files. The file I was interested in…

kids these days are releasing all their music with lowercase titles

Kids these days are speaking in lowercase on the internet. I mean, kids were always speaking in lowercase on the internet; I dunno if it’s because it’s too much effort to hold down the shift key or if it’s because of the aesthetic or because of something else. I remember messaging people on MSN Messenger in mostly lowercase in the early 2000s, maybe because I was trying to sound…

2022 was

Hello, friends. Here’s my annual(-ish) retrospective. Previous editions are available here. When I was a kid, my mum would type out a letter about all the things that had happened in the last year and tuck copies into the Christmas cards that they’d send to friends and family (“Fabian is in Year 8 now and started learning guitar”, “Marcus and Mike went on a trip to…

A Walk and a Pop-up Newsletter

In November, I walked for eight days along the Rennsteig, a famous, old ridge road in Thüringen, Germany. I’ve been doing solo hikes every year since 2018, but this time I did something new: I set up a short-lived “pop-up” email newsletter, and published photos, stories, rough essays from the road. This post is about the pop-up newsletter as a format. The pictures in this post…

Where is Fabian, now?

I’m going on a hike, and writing / photographing some things on the way. Come with. Continue reading ➡

Almost deleted photos, 2007 - 2020

Last week, I deleted a bunch of old photos while trying to back them up. By the numbers: 2793 photos deleted by accident 2531 restored from a backup through a complex, heavily manual process 160 restored from a copy on another computer 102 photos lost forever All the files lost were from 2019, but the files almost lost were from 2007 through to 2020. The files I almost lost were saved by a backup.…

Why is this Floppy Disk Drive Clicking Incessantly?

To head this off before I get questions: yes, dear Reader, it is 2021, and I am writing about a floppy disk drive. Specifically, a USB floppy disk drive that’s connected to a Raspberry Pi. His name is Stefan This is a story about tracing a weird behaviour in a complex computer system. I’ve always thought floppy disks were super cool. They’re really pleasingly tactile; they have…

Quarantine Diary, Day 12

Content Note: Covid-19 My housemates caught COVID-19 on the last weekend in February. On the 28th of February, one of them started developing symptoms. On the 2nd of March, a close contact informed them that they’d tested positive. On the 3rd, they both tested positive with antigen tests. Jackie and I went to get tested immediately, so we could figure out if we wanted to partition the…

What on Earth is this Encryption Scheme?

I have taken a couple terabytes of photos over the years, and have a mild phobia of deleting data, so I keep my photos on a Synology DiskStation NAS. I’ve got all the files on the thing: backed up to the cloud encrypted, because back in 2016, my apartment was broken into and thieves took all the electronics. I’ve been slightly paranoid ever since. The Synology NAS generally works…

2020. It's over!

2020 is over, and ooh wee it’s been a weird year. There were fireworks on New Year’s, but significantly fewer than in previous years. That’s probably due to the fact that the sale of fireworks was banned as a measure to reduce stress on hospitals, and so if you wanted to get your hands on them, you had to drive to Poland1. But there were still fireworks, and honestly, I kinda…

Mushroom Studies, Autumn 2020, Brandenburg

Some people are searching for God. But my wife and I – we’re searching for mushrooms. It comes down to the same thing – God, and the mushrooms, aren’t always where you’re expecting to find them, and many who are looking for God find the Devil instead. He’s always somewhere nearby, like how the Fly Amanita is always somewhere near the Porcini. Or maybe it’s…

Cross-Compiling Rust Apps II: Linux Subtrees and Linker Shenanigans

FYI: this is Part II of a series! In the last instalment, we set up cross-compilation for a large-ish rust app (spotifyd) using cross and a custom Dockerfile. If it seems like I’m skipping over something that doesn’t make sense to you in this article, go check there, and please let me know. ✨ Enabling dbus_mpris Now that we’ve got a working cross-compile setup for the base…

Cross-Compiling Rust apps for the Raspberry Pi

FYI: this is part one of a two-part series! Part two is available here. I’m picking up a project again which, for a complicated set of reasons, requires me to make changes to a large Rust application which is going to run on the Raspberry Pi. There’s just one problem: The Rust compiler requires a lot of RAM and CPU My Raspberry Pi (model 3+) has exactly 1GB of RAM and a very small…

It's 2020, and I still can't figure out why I'm getting your marketing emails

I added email subscriptions to my blog1 and, in the process, signed up for four different email providers to test them out. A week later, I noticed I was getting marketing emails from all of them. I thought this was weird – I’m based in the European Union, and thought that the GDPR forbade companies from emailing me without asking. I’m also usually careful about “sign me up…

Tech Jobs, Mobile Dev, Blogging: A conversation with Chelsea Troy

Chelsea and I spoke last week about software engineering, jobs, and blogging; here’s the audio! Like a podcast, but without intro music or a mattress ad. Continue reading ➡

How to ask questions well, asynchronously

I’ve been writing and reading a lot of questions on camera and programming forums recently, which got me thinking a lot about how to write questions well. Why should you care about this? The most direct answer is “well written questions solicit better responses quicker”, but my motivations are different to that, so it’s maybe more instructive to talk about those directly. I…

Regarding the Willows on the Landwehr Canal

It is already the hot, latter half of the Berlin Summer, and I have learned a small mystery about the Willows on the Landwehr Canal. Continue reading ➡

Notes on Speaking at EnthusiastiCon 2020

I gave a talk at EnthusiastiCon on the weekend and it was really fun. The format is a bunch of 10 minute talks and a 40 minute keynote, and this year, it was online-only because, y’know, Corona etc etc. Ente-thusiasticon. – ente_ente_ente_ente_ on Instagram This post is about things I learned while prepping for / delivering this talk. But first… Real brief thoughts on the…

What is a digital photo, really?

I gave a talk at EnthusiastiCon about the very basics of digital photography and how pixels are actually made of lies 🤐. Here’s the talk + some additional resources! Continue reading ➡

Hello Colemak 👋

On April 30, I committed to learning the Colemak keyboard layout. I’m still entirely unsure of the value of this decision, so I’m writing it up here in order to reflect upon it a little more, and to share my experiences with others who might decide to attempt the same thing. ✨ Cole-who? Colemak! It’s pronounced Coal-mack, and is a keyboard layout, exactly like how QWERTY is a…

Animating SVGs with Python Scripts

I’ve just published a piece on how Fuji’s RAW file compression algorithm works. I’d spent about two weeks trying to develop an implementation in Rust, and found that the underlying concepts were consistently difficult to explain using words alone. This algorithm is easiest to understand by thinking spatially, so being able to represent things visually in two dimensions is…

How Does Lossless Compression in Fuji RAF Files work?

I spent 3 weeks earlier this year digging in to and reimplementing the lossless compression algorithm in Fuji’s RAF Camera RAW files. This post discusses the fundamentals of how it works. Continue reading ➡

I Guess you Could Call this a Crash Landing

Content Note: Covid-19 stress and societal impact. We’ve been back in Berlin for two weeks now. We left New York in a hurry. My original flight was supposed to be today – I’d planned to take a few days after my batch at the Recurse Center in NYC, figuring out what my time there had meant. I’d expected it to challenge my mentality around work, and art, and creativity, and my…

Adding Margin Notes to my Hugo Theme

This website now uses margin notes instead of footnotes if your browser window is wide enough. In this post, I talk about how I made it work. Continue reading ➡

The Bagel Code

Ordering a bagel in NYC is like cracking a code. What kinds of bagel are there? Do you call it a bagel or a sandwich? Is it wrong to put egg and cheese on a Cinnamon-Raisin bagel (I hope so)? You’re somehow expected to just know, and if you don’t, then you’re clearly new to the city. And that’s not a terrible thing – people are mostly tolerant – but it’s a…

2019. It's done!?

2020 is here, and I’m writing this from Brooklyn Roasting Company off the tail of about 7 hours of accumulated jetlag. I’m in New York! This is crazy and surprising and surreal, and my first impressions are… New York is cool? I mean, that’s not exactly an original thought; but I like that it’s clean, and there’s parks, and holy crap the metro network is…

Ghosts in the Snow

There’s something glorious about disappearing into the mountains, alone. Continue reading ➡

When do you Stop Writing?

Yesterday, I published a rather long post about the way that SQLAlchemy uses database transactions. This was one of the most difficult things I’ve written about, not so much because of the subject matter, but because I couldn’t figure out when to stop writing. In the end it took two and a half months to finish, mostly because it was intimidating as heck. Today I want to unpack why I…

How Does SQLAlchemy Manage Database Transactions?

I’ve been working on database stuff for the last few months at Sendwave. It’s… unexpectedly satisfying? There’s so much thought that’s gone into making databases reliable and useful and fast and somehow mostly text-based. Sendwave is using the SQLAlchemy ORM for database operations, and we’re getting to a point now where scale and performance concerns demand…

To Read the Heretics

2019 is almost done. And I am procrastinating on everything because there is too much change in progress. Zen gardening the filesystem on my hard-drive. Getting ready to wipe and reinstall the OS on my computer. Time to make everything new again. I’ve been thinking a lot about the concept of time this year. My eyesight got a notch worse sometime between turning 29 and 30. There’s that song…

3 Novel Features for Hugo Themes

A few months ago; I switched this blog over from Jekyll to Hugo, and in the process, built a new theme. I like building blog themes! Front-end HTML/CSS development is sorta how I got into the whole “programming” thing, and every couple years when I come back to it, I’m blown away how much the technologies, ideas, and aesthetics have changed. I don’t want to talk so much about the…

Grouse, a difftool for static site generators

Yesterday I released the first version of Grouse, a diff tool for websites generated with Hugo. There’s install instructions on Github and you can see the announcement post on the Hugo discussion forums. In this post, I’m going to discuss why I built Grouse, some of the design decisions I made, and some of the things I learned along the way. Continue reading ➡

Just Diff It

When working with anything semi-automated, you sometimes run into a situation where the following are true: The environment you’re working in has a lot of interlocking pieces, and changing one thing can result in unexpected changes to lots of other things You have to change just one thing You want to make sure that there’s no weird side effects. Have you ever added an extra two or…

The tripod mount screws fell out of my Fuji X-T2

Two weeks ago, I got back from a hiking trip in Austria and South Tyrol, and discovered that my Fuji X-T2 had developed a rattle. I gave it a quick check over, and discovered that the rattle was being caused by something rather offputting: the tripod mounting thread had disappeared into the body of the camera, and was jiggling around as I moved it. Continue reading ➡

How To: Find and Fix Light Leakages on a Film Camera

My good pals Tom and Mikaely moved from the greater Wollongong area to Roseburg, Oregon, back in 2015. Mikaely got a job in a zoo, and Tom got a job doing sales at an engineering company. I was chatting with Tom about film photography – one of my colleagues is super into it, and we’d been talking about it for most of the week. Tom says “hey, actually, I’ve got four film cameras – you…

Techniques for setting boundaries around your remote job

Remote work is, on balance, great, but one of the disadvantages compared to a normal job is that it’s harder to switch off from work in your lunch break, at the end of the day, or when you’re on holidays. You see, remote companies are built on the ability to contact your colleagues using technology; which means you need to be much more deliberate about how you use the technology in…

Emoji Haikus, and the deepest secrets of the unicode specification

I rebuilt my Emoji Haiku generator over the last month or so, and learned a bunch about how text is rendered on computers. Continue reading ➡

Eleven days on the E5 Long Distance Hiking Trail

In late September, 2018, I hiked for eleven days along the E5 long-distance hiking trail. If you walk the whole thing, it starts off on the West Coast of France and takes you all the way to Verona in Italy, but when people talk about walking the E5, they mean they “hiked from Oberstdorf in Germany, to Meran in the North of Italy”. That piece is referred to as the Kernstück in German,…

Is Fabian Still Alive?

Back in May 2017, I took a solo backpacking trip through Georgia and Armenia. In the lead-up to the trip, a lot of friends and family asked me to text them along the way “to let them know I was still alive”. It was mostly a joke (?), but it still felt like an odd request, and the frequency was uncanny. I’m of the opinion that both Georgia and Armenia are (a) incredibly safe, and…