Archive

Search website

PRs are dead, long live PRs?

Published

Pull requests are an important part of programming culture. They serve multiple purposes and vary across teams, organisations and even technologies. In essence, they reflect how a team constantly evolves, both through its individual members and its code. They can be used to teach, fix bugs, refactor code, spark new ideas …

Semantic search in Rails using sqlite-vec, Kamal and Docker

Published

I’ve been reading a lot about search lately: kNN, BM25, RRF and related ideas, both within Elasticsearch and in isolation. With the advent of LLMs, especially open-weight models, plus modern hardware, it feels like a good time to approach some of this in a pragmatic way. On the blog I'm already using a form of BM25 via …

Kamal, Rails deployments, and Rega turntables

Published

Lately I've started to put my turntable back into working order. It's been disconnected from my main audio chain for about five years. The TT is a Rega RP3 with a bog-standard Rega Carbon cartridge. Why now one might ask? It wasn't my top priority and streaming Spotify to the WiiM Mini then via a DAC directly into my NAD …

The analogue programmer in the land of LLMs

Published

It's been a while since I've posted, for obvious reasons a lot has changed in the realm of programming. LLMs, "agentic" coding et al. I've started using them almost from day one, when they were pretty bad and they could barely generate some readable text in their images. When it comes to coding, being in my late 30s, I'm …

Moving from iTerm2 to Kitty for simplicity and performance

Published

I love iTerm2, but it can be sluggish sometimes on my old late 2016 MacBook Pro. Plus, many of its features I never use. I had tried Alacritty before, but making it look and act like iTerm2 was a no-go. This time, I tried Kitty, and within two hours of work, it looked and behaved just like my iTerm2 configuration. This …

Ruby meets LISP: Unveiling alien tech at Friendly.rb's lightning talk

Published

Originally published after the 2023 Friendly.rb conference in Romania, this is an archival account of that talk. At the Friendly.rb conference in Romania, I explored an experimental blend of Ruby and the Lisp family, implemented here through Clojure. This journey was more about embracing the spirit of experimentation …

Harmonizing Projects: Navigating the Graph of Estimation and Detail

Published

As someone who finds solace in the rich nuances of sound, I often draw parallels to the world of development. Ponder this: Just as the quality of music affects the depths of my appreciation, the broad overview of a project offers a satisfying clarity. Yet, the devil, as they say, is in the details. In much the same way I …

Don’t stress, use the right gear for the job

Published

Whilst I consider myself an audiophile, I also like to think I’m a pragmatist i.e. best of both worlds: don’t go over the top with snake oil gear but at the same time recognise that sound quality plays a pivotal role in how I listen and enjoy music. As developers, we use various ways to relax, in my case music plays a …

Hierarchy of perceptions

Published

I was thinking of the old conundrum of how we perceive the objective world or reality - it’s always through our limited sensory organs. Then it has to be processed: some small latency in the brain, maybe some evolutionary heuristics, our genetic background, etc. after all this we get a tainted fragment of the world. We …

Tips: macOS save screenshots as JPEG in a different location

Published

I'm not really sure why taking screenshots in macOS defaults to PNG file format. I just googled this and the "answer" was: MacOS captures screenshots using PNG as the default image format, which provides lossless compression and preserves image quality while creating relatively small files. OK - I can understand somewhat …

Interesting links - Is logging a "code smell" ?

Published

I was reading this article , and it raises quite an unexpected question - "Can we consider logging as a code smell"? Clearly - the answer is more nuanced than that and whilst I do enjoy the event bus approach from the article - that seems like overkill for most applications. It's interesting that Aspect Oriented …

Multiple data stores and eventual consistency using micro-services

Published

There are cases where ownership of the data consumed by a fleet of microservices is distributed across several systems of record. Derived data is then scattered across multiple storage solutions, each designed to solve a specific problem using a subset of it. It may be mirrored and synchronized into a specific format …

The perils of writing request specs using concurrent-ruby under the JVM

Published

This article describes a 2017 JRuby, concurrent-ruby, and RSpec setup. Current APIs, integrations, and behavior may differ, so the workaround below should be read as historical rather than current guidance. When I write an API, though I'm not a hard core TDD practitioner, I do like writing specs - especially request specs …

JRuby, RVM and Vim walk into a (performance) bar

Published

I'm not sure why RVM is still my default Ruby version manager, but the issue at hand should be reproducible on rbenv too. Historical note: this article reflects a Vim 8.0, JRuby, RVM, and macOS system Ruby setup from 2017; versions and defaults differ on current macOS systems. Let's add a bit of context to this: we have …

Keep your Rails logs free of unwanted noise

Published

I like to use Rollbar 's default plan for small apps or prototypes that are works in progress. Getting production exceptions in my inbox can be quite useful but most of them are actually 404s - sure there are a multitude of ways for filtering out the noise (Fail2Ban , hand-written iptables rules , etc.) Historical note: …