Blog

2023

Blogging with Word in your Jamstack (December 07, 2023)

Pro Kotlin Web Apps from Scratch (February 02, 2023)

2019

It's christmas, and time for failure! (December 24, 2019)

The #1 bug predictor is not technical, it's organizational complexity (December 18, 2019)

The green padlock (December 17, 2019)

Validating data after storing it (December 16, 2019)

According to Microsoft, the number one predictor of software bugs is... (December 15, 2019)

The amazingly amazing amaze of lazy data structures (December 14, 2019)

What is WSL, and how can it possibly even? (December 13, 2019)

Field manual - choosing React Native (December 12, 2019)

Why I ditched macOS, Linux, and chose Windows for development work (December 11, 2019)

A short recipe for setting up the Microsoft SQL Server docker image (December 10, 2019)

My all-time favorite talks (December 09, 2019)

You have to know about persistent data structures (December 08, 2019)

Field manual: choosing Flutter (December 07, 2019)

The important difference between layout and rendering (December 06, 2019)

Linux exists only because of a happy accident (December 05, 2019)

DevOps: The magic of going back in time with Datomic (December 04, 2019)

You should use rebase/fixup in IntelliJ IDEA more often (December 03, 2019)

How to set up a Windows 10 development environment - for macOS and Linux users (December 02, 2019)

It's christmas, and time for blogging! (December 01, 2019)

Here are some of my failures (October 14, 2019)

Datomic: Querying for the history of an entity (v2) (June 11, 2019)

2018

Datomic: Look at all the things I'm not doing! (Cont.) (April 21, 2018)

Datomic: Look at all the things I'm not doing! (April 20, 2018)

Datomic: Traditional databases only spend about 25% of their time actually writing to and reading from the database (April 20, 2018)

2016

Notes on my attempt to move from Linux/Mac to Windows (November 25, 2016)

Datomic: The most innovative DB you've never heard of (January 20, 2016)

2014

That WoW server blade (August 08, 2014)

Self hosted e-mail with Node.js and dspam (August 06, 2014)

OS X: Extract JDK to folder, without running installer (July 10, 2014)

Bitten by bits (June 27, 2014)

Multifail with multiboot (May 16, 2014)

Effin' EFI (May 03, 2014)

GDB progress (April 02, 2014)

JDK8 + Facebook React: Rendering single page apps on the server (March 20, 2014)

Learn all the things! (March 18, 2014)

Text is boring (February 27, 2014)

Progress has not HALTed (February 18, 2014)

To be or not to EFI (February 12, 2014)

An immutable VM? (February 04, 2014)

An immutable operating system (February 02, 2014)

Erlang R17 gets maps (February 02, 2014)

2013

Dependency errors in Grails plugins when updating to Grails 2.3 (December 30, 2013)

ZeroMQ instead of HTTP, for internal services (July 22, 2013)

Datomic: Direct index lookup (July 17, 2013)

Ordering of :db.cardinality/many attributes in Datomic (May 04, 2013)

Truly concurrent user interfaces (April 19, 2013)

Asynchronous and flexible modal popups in AngularJS (March 11, 2013)

Finding by ID (primary key) in Datomic (March 10, 2013)

Converting from Sorcery (Rails plugin) to plain BCrypt (February 21, 2013)

Using ZeroMQ from Clojure (January 26, 2013)

Querying Datomic for the history of an entity (January 20, 2013)

2012

How this blog is made (May 17, 2012)

Make form_for not call methods on your model (January 16, 2012)

2011

OpenID authentication with attributes in Play (October 16, 2011)

Unobtrusive Google Maps with jQuery (March 05, 2011)

Installing Noctua NH-U9B SE2 CPU cooler on ASUS P5E motherboard (February 08, 2011)

Unit testing iOS: Core Data with multiple and/or versioned models (January 31, 2011)

2010

iOS and Objective-C block quickref (December 08, 2010)

iOS unit testing Tips & Tricks (November 27, 2010)

Custom scrollbar, native behaviour (October 27, 2010)

Unzipping files with JavaScript (February 01, 2010)

Monolithic e-mail validators sucks (January 17, 2010)

Dynamic session expiration time in Rails 3 (January 16, 2010)

A better Net::HTTP cheat sheet (January 07, 2010)

Ruby Net::HTTP cheat sheet (January 06, 2010)

2009

S3 upload Snow Leopard service (August 31, 2009)

Creating your own validations (July 03, 2009)

Global gitignores (June 25, 2009)

Styling Rails URLs (June 14, 2009)

2008

Load path (December 28, 2008)

Procs, blocks and anonymous functions (November 08, 2008)

How Rails selects which view to render (October 09, 2008)

Case or hash (September 26, 2008)

Things you can do in Ruby (September 19, 2008)

Result equals new array (September 12, 2008)

rescue nil is not awesome (September 11, 2008)

Method arguments (September 10, 2008)

to_proc (September 08, 2008)

Just a little Rubinius trick (September 03, 2008)

Classes and constants magic (September 01, 2008)

Recursively doing stuff with hashes (August 31, 2008)

Active Record anywhere! (August 31, 2008)

Screwing up fixnum (August 31, 2008)

Constant lookup and blocks (August 19, 2008)

2007

Third Rails patch (December 19, 2007)

World of Warcraft on Ubuntu (December 16, 2007)

Second Rails patch (December 14, 2007)

Creating edge apps (December 13, 2007)

Upgrading to Rails 2.0 (December 10, 2007)

Extending Ruby classes in a Rails app (December 06, 2007)

How to go edge (December 02, 2007)

before_filter-like stuff in Ruby (November 30, 2007)

Asserting unauthenticated actions (November 28, 2007)

Syntax highlighter (November 26, 2007)

File upload and images (November 25, 2007)

Simple human input boolean parser (November 24, 2007)

Filter hashes by keys (November 22, 2007)

First Rails patch (November 21, 2007)

HTML list helper (November 21, 2007)