Blog posts index page 1

Limit concurrent HTTP connections to avoid crippeling overload

Midjourney prompt: Three people too big to squeeze through a door simultaneously are blocking the entrance for a whole line of people behind them.

Even the fastest web servers become bottlenecks when handling CPU-intensive API work. Slow response times can cripple your service, especially when paired with an API gateway that times out after 29 seconds.

I solved this using a simple middleware that eliminated 504 - Gateway Timeout responses and significantly reduced unnecessary load on my service API.

Read more...

Stumble upon in January 2026

Midjourney prompt: Two people walking towards each other and bumping into each other. One person is looking down at their smartphone the other person is looking at the sky. Subtle highlight. concept art, oil on canvas painting.

AI tries to make everything easy… convenient, but life without discomfort is not something to desire. The label ‘PC compatible’ is a reminder of how complex (inconvenient) things can be.

Read more...

Rant: Updating Samsung NVMe firmware uncessarily complicated

Midjourney prompt: Poor user experience during debugging a NVMe hard disk being detached while the system runs.

The other day, I was taken back to the “good old days”, and not in a good way. I had assumed that a major hardware provider like Samsung nowadays would ensure a decent user experience during firmware updates, regardless of the operating system. But I was in for a disappointment.

My home server running Linux has been crashing occasionally for a while. But since a reboot would temporarily “fix” it, sometimes for weeks, I never prioritized finding the underlying problem… until now. It feels like a recent kernel update now triggers the crash more often, but I have no data to back this statement up.

Read more...

Using idempotency for application interfaces like REST APIs

Midjourney prompt: A hand is submerging a small beige cloth into water. In the background drives a bus by the harbor promenade. Simple picture. Teal is the primary color. - Did a few edits to remove 'noise'.

Applying retry strategies on API calls to make them more robust often brings its own set of problems. Occasionally, rather than losing an entity-creating call, you end up with multiple, and trust me — duplicates are a pain to clean up.

However, idempotency can neutralise the inconveniences from retries, making the pair a powerful combo. 💪

Read more...

Exception handling differences between Clojure map & pmap

Midjourney prompt: Seven digital gates are placed next to each other on a long line with even spacing between them. Separated by closed gates, two open gates have digital threads flowing into the circuit board floor. Using image from core.async post as style reference.

With this post, I am in deeper waters than usual. What might sound like a recommendation in the following could be a potential disaster in disguise. Be warned.

Personally, I prefer not to know about implementation details about the function I’m calling. Although that was the situation I suddenly found myself in, when a function I call replaced map with pmap.

Here is how I approached the weirdness with exceptions tangled with pmap.

Read more...

Scalable LEGO brick labels in SVG

Monochrome illustrations of LEGO bricks for labels with a nice purple-orange gardient to make the monochrome pop - by Jacob Emcken

It just looks amazing when things are neatly organized, so of course, I wanted some crisp-looking labels for my drawers with LEGO.

There’s a cool solution for those in possession of an actual label printer, but since that isn’t me, I needed something a bit more “generic”.

Having flirted with Inkscape in a previous lifetime, I turned to SVG.

Read more...

De-stressing with Lego

Pink Lego bricks (Stock photo from Pixabay by Alexandra_Koch: https://pixabay.com/users/alexandra_koch-621802/)

The last couple of years, I’ve been finding stress at work more often than I’d like. Apparently, experiencing problems, having the skill to address it, but not being allowed to, is something that really gets to me.

So much that I don’t even feel like working on side projects, open source and writing posts on my blog.

Enter Lego

Read more...

A local AI setup using Ollama and Open WebUI

Midjourney prompt: Electronic brain take-off using pixel art.

Until recently, my AI usage has been limited to ChatGPT and a bit of Midjourney.
No Copilot, no Claude, no nothing.

The most serious thing I’ve used AI for, was getting ChatGPT to give feedback on paragraphs for new blog posts, and Midjourney to help create featured images for blog posts.

The few times I’ve tried using AI (read ChatGPT) for programming related stuff, I very quickly got frustrated with the lack of quality in the responses. To be fair, I’ve mainly wanted it to create Clojure code, and Clojure’s niche status and very different syntax are likely the main reason. That, and the fact that ChatGPT is the “wrong” tool for the job.

Anyway, I’ve acquired some hardware to build a local AI, including a second-hand Nvidia RTX 3090 with 24Gb vRAM, and I thought I’d document and share my progress so far.

Read more...

Browse posts by tags

The posts touch a lot of different topics in no particular order. It might be more convenient to browse by tags if you have a topic of specific interest.