Archive

Search website

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

Published

​ 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 …

Programming archaeology: PHP's dollar sigil

Published

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 …

macOS Sierra upgrade from a developer's perspective

Published

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 …

Using RVM for quite some time? You should clean it up a bit

Published

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

Making Rails asset pipeline faster

Published

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 …

How to Web conference, random thoughts, mostly live - five years later

Published

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 …

Shedding some light into UUID version 4 in Ruby and Rails

Published

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 …

The half-life of a programmer

Published

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 …

Ruby 2.2.0 Preview 1 quick Rails benchmarks

Published

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; …

Improve Rails performance by adding a few gems

Published

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 …

Is Rubinius 2.2.3 production ready ?

Published

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 …

How to reduce the size of your VMs

Published

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 …

Chunked transfer encoding in Rails (streaming)

Published

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 …

On Ruby modules and concerns

Published

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 …

On zygohistomorphic prepromorphisms

Published

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 …

On semantic Ruby block constructs

Published

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 …

On Ruby 2.0 memory usage, Unicorn and Heroku

Published

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

Published

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

Published

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 — …

On writing artisanal code

Published

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

Buzzwords and manifestos

Published

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 …

The inherent entropy in our lives: to resist or to...

Published

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 …

Using Firebug as a scalpel, yet not for web development

Published

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 …

Programatica 2010 after thoughts

Published

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 …

A few words on frontend performance optimizations

Published

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 …

The frontend backend debacle

Published

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 …

How to Web Conference, random thoughts, mostly live

Published

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 …

Tomorrow is the first day of How to web 2010, this should be fun

Published

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 …

Installing a rails mysql stack on my laptop was a bit tricky

Published

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 I speeded up my browsing experience by a really nice margin

Published

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 …