Editor’s note (2026): This is a strongly worded 2010 opinion, not hiring or accessibility guidance. Modern web work includes both deep specializations and generalist roles; basic HTML and CSS syntax can be approachable, while production UI work also carries substantial accessibility and standards obligations. Current …
The frontend backend debacle
Programatica 2010 after thoughts
Editor’s note (2026): This is a contemporaneous conference report from 2010. Product names, prices, hosting sites, terminology, and feature comparisons below describe that moment and are not current purchasing guidance. Java EE later became Jakarta EE. CodePlex—not SourceForge—was Microsoft’s separate forge, and Microsoft …
The half-life of a programmer
Half-life (t1/2) is the amount of time required for the amount of something to fall to half its initial value. The term is very commonly used in nuclear physics to describe how quickly unstable atoms undergo radioactive decay, but it is also used more generally for discussing any type of exponential decay. I had this …
On writing artisanal code
Every artisan at a certain point in time just stops and starts thinking about the inner workings of his craft. He ponders on the whole process from the outside while trying to make connections between apparently dissimilar entities that his craft is made of. One might argue that this is a purely subjective endeavor: well, …
Using Firebug as a scalpel, yet not for web development
Historical and safety note (2026): Firebug reached end of life; its functionality moved into Firefox’s built-in Developer Tools. Adobe ended Flash Player support on December 31, 2020, and Flash is unsafe to install. Deleting a DOM node in Developer Tools is temporary and local: it does not change the server, undo requests …
Making Rails asset pipeline faster
This article reflects the 2016-era Rails asset pipeline—Ruby Sass, libsass, Compass, therubyracer, and Node.js 6—and is not current Rails asset guidance. We all know that for a rather large Rails app with a substantial front end, the asset pre-compilation and more importantly - development mode changes are far from …
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, I'm …
Building a small blog cms in rails
Editor’s note (2026): This is a 2010 architectural sketch, not a current Rails security tutorial. RBAC is not inherently required for a single-author blog, production is not a substitute for automated or staging security tests, and authorization should fail closed under a current threat model. Current guidance Securing …
Installing a rails mysql stack on my laptop was a bit tricky
Historical instructions (2010)—do not follow on a current machine. Ruby 1.8/1.9 and Rails 2.3/3 are unsupported and lack current security fixes. Manually copying DLLs into runtime directories is unsafe and brittle. The commands below are retained only as a record of the old environment; use supported Ruby/Rails versions …
How to Web Conference, random thoughts, mostly live
Archive note (2026): The opening paragraph contains the corrupt fragment I’vevolatile and utopic place most of the time.; it cannot be reconstructed safely and is left untouched pending an original source or backup. Sadly, today I’ve arrived a bit late, where "a bit" means a lot; I’vevolatile and utopic place most of the …
On Ruby modules and concerns
Modules are useful for highly specialized code that can be injected into other classes for fun and profit or for creating namespaces. An interesting approach is to use modules as an alternative to classical inheritance (without the usual trade-offs) : the core idea is to share an abstracted role that can be included in a …
Chunked transfer encoding in Rails (streaming)
Anyone who has written a little PHP knows what the flush() family of functions do. The ideal usage scenario for using chunked transfer[0] is when we have something costly to render e.g. the first three most recent articles on a blog. Why, one might ask? Why stream It is rather simple: in a normal Rails render, the server …
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 2.2.0 Preview 1 quick Rails benchmarks
Great news everyone! Ruby 2.2 preview 1 has been released ! I'm really curious about the Incremental GC and Symbol GC so let's run some quick Rails benchmarks on a normal Rails API app. Archive note (2014): Ruby 2.2.0-preview1 was prerelease software and must not be used now. Ruby 2.2 reached end of life on 31 March 2018; …
Interesting links - Is logging a "code smell" ?
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 …