Hello! I’m Daniel, a Software Engineer based in Edinburgh. This is where I note down useful things I don’t want to forget and also where I document some of the personal projects I’ve worked on.
Blog Posts
Converting FLAC to ALAC on macOS
Logitech K380 keyboard: Page Up/Down/Home/End with Logi Options+
In a previous post, I described a way to configure page up, down, home and end on the Logitech K380 keyboard when used with macOS and Logi Options. Years have passed since then, and a helpful comment on the previous page from Bob C pointed out that the newer Logi Options+ made it much easier to configure these keys. So, if you’re facing this problem in 2025, you might want to give this a try instead.
Running Large Language Models locally
The easiest way to get started with Large Language Models (LLMs) like GPT-4 is to use the OpenAI API or Azure OpenAI. However, since the LLaMA leak a variety of LLMs have been created that can be hosted locally. I was interested to see what it would take to do this and what tools are available.
Steam Deck setup
I caved and finally bought a Steam Deck. The internet was full of guides to upgrade and modify it so I’m documenting some of the things I’ve tried here.
Logitech K380 keyboard: Page Up/Down/Home/End workarounds
Note: This post is pretty old now so you might also want to read this newer post that describes configuring the latest Logi Options+.
Issues with floating point
Floating point values normally just work, but there are a few issues with them that are useful to be aware of! My previous post discussed the representation of values, but this one will talk more about the times where things might not work quite as expected. I’m aiming for this to be a practical guide with some simple rules to follow, rather than an exhaustive study into all the issues with floating point.
Floating point numbers: some basics
A recent discussion with a colleague about issues with floating point comparisons made me realise that my knowledge of best practices boiled down to comparing floating point values using tolerances and switching to double
if issues with accuracy popped up. I figured it was time to look into it further and get a better understanding of what is actually going on.
Python collection classes: a summary
Following on from the C++ collections post, it’s time to create a similar overview page for Python! There are more collection classes than this, but I wanted to revise the basics.
C++ collection classes: a summary
As I work through a bunch of algorithm problems in C++, I thought it would be useful to create a summary of the collection classes built into the standard library.
Thoughtworks Technology Radar Vol. 19: Notes
I spent a little time over the New Year catching up on some reading, giving me an opportunity to skim through the 2018 ThoughtWorks Technology Radar to get an overview of interesting developments in the field. Here are some of the things that caught my eye.