Search website

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

I've been reading a lot about semantic search (kNN, BM25, RRF, etc.) both within Elasticsearch and in isolation). With the advent of LLMs and especially open-weights ones mixed with modern hardware, it's a perfect time to approach them in a pragmatic way. On the blog I'm already using a form of BM25 via SQLite FTS5's ...

Kamal, Rails deployments, and Rega turntables

Lately I've started to put back into a working state my turntable. 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 ...

The analogue programmer in the land of LLMs

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, ...

Moving from iTerm2 to Kitty for simplicity and performance

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

Recently at the Friendly.rb conference in Romania, I explored an experimental blend of Ruby and LISP, particularly through Clojure. This journey was more about embracing the spirit of experimentation intrinsic to Ruby, rather than direct comparison. A big shoutout to Jakob , whose suggestion that I do a lightning talk ...

Harmonizing Projects: Navigating the Graph of Estimation and Detail

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 ...

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

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 on how I listen and enjoy music. As developers, we use various ways to relax, in my case music plays a ...

Hierarchy of perceptions

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 is 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 the world. We ...

Tips: macOS save screenshots as JPEG in a different location

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 ...

Interesting links - Is logging a "code smell" ?

I was reading this article 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 Programming ...

Multiple data stores and eventual consistency using micro-services

There are cases where there isn't a single source of truth when it comes to the data that a fleet of micro-services consume. The data is thus sparse across multiple storage solutions, each designed to solve a specific problem using a sub-sets of it. This can be either mirrored via syncing to a specific format (think for ...

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

When I write an API, though I'm not a hard core TDD practitioner, I do like writing specs - especially requests specs that test the whole stack. Adding them into an API is fast and yields quite good results compared to an app with an UI where you have to use chrome-cli or phantomjs just to get near of that level but at ...

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

I'm not sure why RVM is still my default Ruby version manager yet the issue at hand should be reproducible on rbenv too. Let's add a bit of context to this: we have an API written in Ruby and running on JRuby i.e. via JVM which implies slow start-up times compared to CRuby (yes, even with export JRUBY_OPTS='--dev'). I ...

Keep your Rails logs free of unwanted noise

I like to use Rollbar 's default plan for small apps or prototypes that are wip. 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.) The main idea here is to ...

How to reduce the size of your VMs (macOS Update)

​ Lately I'm also running macOS virtualized for testing various apps. After some heavy usage the same problem popped up: the .vmdk uses way too much space on my quite small 256GB SSD. Currently is at around 70GB. The process is similar to what I did on Windows and Linux i.e. write a null file that is erased at the end ...

Next page