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 …
Harmonizing Projects: Navigating the Graph of Estimation and Detail
macOS Sierra upgrade from a developer's perspective
Historical note: these are macOS Sierra 10.12-era procedures. SIP paths, Karabiner, Notes, and photoanalysisd behavior may differ on current macOS releases. Most developers (myself included) usually wait for the point one release of the next major macOS upgrade. This is mostly in order so that all the related …
Programming archaeology: PHP's dollar sigil
I started out with Java as my professional language and before I discovered Ruby, PHP was my main programming language of choice for new projects. This was probably six to seven years ago or more. I had some pretty good times with CodeIgniter [0] and various libraries like HHMVC [1]. In any case, I digress - even back …
Improve Rails performance by adding a few gems
After working with Rails for some time, you start nitpicking about how to improve it. This is the first in a series of articles on how to improve (even marginally) Rails's performance. Archive note (2014): This is Rails 4.1-era advice. Do not copy these dependencies, native extensions, or global monkey patches into a …
How to Web conference, random thoughts, mostly live - five years later
Almost five years since the last post about How to Web [0] - wow, that's a large slice of the space-time continuum. I recall I almost started this blog for stuff like this, good memories [1]. Archive note (2015): This is a contemporaneous conference diary; links, organizations, and social-media handles are preserved as …
Using RVM for quite some time? You should clean it up a bit
I can't even remember the last time I ran rvm implode, I'd reckon I've been using RVM for about three years. Sure: I always update it via rvm get stable but I never really clean up old Rubies or gems, I only run bundle clean --force in each repository from time to time since I don't always use bundle exec. In any case, …
Is Rubinius 2.2.3 production ready ?
Ruby 2.1 was released this Christmas, great news everyone! It sports a better GC (RGenGC — generational GC), hierarchical method caching, some small syntax changes and non-experimental refinements. All in all one can expect 5% to 15% performance increase which is quite awesome. Archive note (2014): Rubinius 2.2.3, JRuby …
On zygohistomorphic prepromorphisms
There are words in programming that look like jokes. Zygohistomorphic prepromorphism is one of them. The first time you encounter it, you assume one of two things must have happened. Either someone lost a bet, or category theorists were left unsupervised for too long. Both explanations feel plausible. And yet the term …
Tomorrow is the first day of How to web 2010, this should be fun
Archive note (2026): The conference URL and discussion refer to the 2010 event. HTML5 was unfinished then; W3C published HTML5 as a Recommendation in 2014, and HTML is now maintained as a Living Standard by WHATWG. Current context How to Web · HTML Living Standard Just got to Bucharest, tomorrow I’ll be at How to Web 2010 …
The perils of writing request specs using concurrent-ruby under the JVM
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
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 …
Ruby meets LISP: Unveiling alien tech at Friendly.rb's lightning talk
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 …
Kamal, Rails deployments, and Rega turntables
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 …
Buzzwords and manifestos
Editor’s note (2026): Here “NLP” refers to neuro-linguistic programming, not natural-language processing. Evidence reviews have found little support for claimed health outcomes. The HTTP-era links below may now be unavailable or changed. Source context Archived NHS introduction Do we really need them? I mean sometimes I …
Shedding some light into UUID version 4 in Ruby and Rails
Ruby's standard library and Rails's PostgreSQL adapter use by default version 4 UUIDs. This could be changed in Rails migrations via: Archive note (2015; updated context 2024): These excerpts describe Rails 4.2-era behavior, not current defaults. RFC 4122 was obsoleted by RFC 9562 in May 2024; UUIDv4 has 122 random bits …
Multiple data stores and eventual consistency using micro-services
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 …
A few words on frontend performance optimizations
Editor’s note (2026): This describes a 2010 jQuery and script-loader setup. RequireJS and LABjs are historical tools, and the performance result is anecdotal because the promised graphs and test method are absent. Third-party CDN scripts also introduce availability, privacy, and supply-chain considerations. Current …
Keep your Rails logs free of unwanted noise
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: …
On semantic Ruby block constructs
I was cruising around my Github notifications and I found an interesting open issue created by Jim Weirich : “The Semantic Rule for { } vs. do/end” in the Ruby style guide repository . The semantic rule The semantic rule says use { } for blocks where the primary purpose of the block is to return a value, use do/end for …
How I speeded up my browsing experience by a really nice margin
Historical Windows/Firefox optimization (2010)—do not move a current browser profile using these instructions. RAM disks are volatile, so data disappears on shutdown or a crash. Moving the wrong profile path can lose history, sessions, cookies, or other user data. Back up the profile and treat this only as a dated account …
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 somewhat …
How to reduce the size of your VMs
As the host OS I use Windows 8 (just upgraded to 8.1), Well, why, one might ask? It is rather simple: Steam and after some dreadful searching and configuring tools I managed to install the basics for writing and deploying code: Vim, Git, PuTTy and a decent console replacement like Console2 [0]. Of course those aren't …
Semantic search in Rails using sqlite-vec, Kamal and Docker
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 …
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 …
On Ruby 2.0 memory usage, Unicorn and Heroku
On UNIX-like operating systems (e.g. Linux) there's the concept of process forking via the fork() system call. When one calls fork from a parent-process it will spawn a new child-process - that is a copy of its parent, then both processes return from fork. The child-process has an exact copy of the parent's memory in a …
On font rendering consistency across browsers
Back in the day (i.e. when Firefox's version was a single digit) font rendering was at its best on Mozilla's browser. I remember comparing Firefox's anti-aliasing to the new-kid-on-the-block Chrome : the difference was huge. Time went by and we all know what happened : most web developers found themselves using Chrome as …
On unnamed abstracts, entities and happiness
Editor’s note (2026): The first definition link is no longer a dependable source. The quotation is a broad summary of classical utilitarianism, not a definition shared by every utilitarian theory. “All abstractions are leaky” also echoes Joel Spolsky’s 2002 Law of Leaky Abstractions. Further context Utilitarianism — …
The inherent entropy in our lives: to resist or to...
Editor’s note (2026): This essay uses information-theory entropy as a metaphor for uncertainty in life; it does not claim that the mathematical definition directly models a human life. The Forge38 and Twitter URLs below are retained as archival provenance and may no longer resolve. Background A Mathematical Theory of …