- June 2020
-
Open Source Progress Report
- April 2020
-
Open Source Progress Report
Ruby Concurrency Final Report
- March 2020
-
Improving Net::HTTP Concurrency
- January 2020
-
Ruby Concurrency Progress Report
Open Source Progress Report
- December 2019
-
Ruby Concurrency Progress Report
Open Source Progress Report
- November 2019
-
Open Source Progress Report
- February 2019
-
Early Hints and HTTP/2 Push with Falcon
- January 2019
-
Streaming HTTP for Ruby
- November 2018
-
Fibers Are the Right Solution
- October 2018
-
HTTP/2 for Ruby Web Development
- June 2018
-
Improving Ruby Fibers
Improving Ruby Concurrency
Asynchronous Ruby
- August 2017
-
Using Vulkan fences to avoid corruption
- January 2017
-
jQuery.Syntax, now with less code!
- December 2016
-
3 cool things you might not have known about Rakefiles
- November 2013
-
CloudFlare Dynamic DNS Client in Ruby
Hybrid Tracking using Gravity Aligned Edges
Transform Flow: A Mobile Augmented Reality Visualisation and Evaluation Toolkit
- October 2013
-
Real-time Hybrid Tracking for Outdoor Augmented Reality
- April 2013
-
Orm's Recipes
- October 2012
-
Game Programming Weekend (Early December)
Adaptive Hybrid Tracking for Mobile Outdoor Augmented Reality
Code Signing Auxiliary Executables
Asynchronous DNS with EventMachine
- June 2012
-
Sandboxing Core Data And Migrations
Passenger Memory Check
- February 2012
-
Hacking The Mainframe
- September 2011
-
Simple Garbage Collector
- August 2011
-
Rack (Per-Request) Memory Usage
- May 2011
-
University Sudoku Challenge
Cross-domain AJAX using XMLHttpRequest
Solving Sudoku Efficiently
- March 2011
-
Christchurch Earthquake v2
Lake Tekapo School roles double overnight!
Why are we having earthquakes in Christchurch?
- January 2011
-
Samuel and Ayako's Wedding
There are more useless programs than useful programs.
- December 2010
-
Free Software Games
Implicit And Explicit Delimitation
- October 2010
-
Mr. Painting Robot
Visualising Information Change Over Time
Kai 会
- September 2010
-
Christchurch Earthquake
- August 2010
-
Source Code Visualisation
Augmented Source Code
Java ME Games
Reasonably Efficient RSA Encryption/Decryption with C++
- July 2010
-
Suspended Shelves
- June 2010
-
Aggregate Callback
- May 2010
-
Computer Science in New Zealand High Schools
How do we learn?
Bloom's Taxonomy
The Socratic Method
Vygotsky's Zone of Proximal Development
The Theory of Constructivism
Virtual Schooling
- April 2010
-
Inspiration
Programming Dojo
Image Processing
Updating Installed Gems
- March 2010
-
LaTeX Symbols in Verbatim Mode (using UTF8)
Caching HTTP Resources using Rack
- February 2010
-
JavaScript Loader
Mac OS X Jumbo Frames
SSH Keygen & Multiplexing
FLAC in iTunes
Building & Installing GemSpecs
About Me
- November 2009
-
New Zealand Broadband
Travelling to Japan
Japan: Kozunomori to Osaka
Japan: Osaka to Beppu
Japan: Beppu to Miyazaki
Japan: Miyazaki to Hakata
Japan: Hakata to Matsue
Japan: Matsue to Kurashiki
- October 2009
-
Building a Concrete Bath
Thinking about Programming Languages
Exim4 + ClamAV + SpamAssassin
Secure login using AJAX
Ramaze And Rack
Concurrency And Immutability
Floating Point Numbers
Programming And Debugging
Loading Anonymous Ruby Classes
尺八 (Shakuhachi)
Richard Stallman In Christchurch
- September 2009
-
DNS Server Benchmarking
Cheap Storage
Scanning for specific UNIX permissions
- August 2009
-
Ruby Exceptions
Ruby StandardError & Exception
Time Limited Error Recovery
RubyDNS Released
- May 2009
-
What is abstraction?
Run Time Polymorphism
Compile Time Polymorphism
Matrix Mathematics
AppleScript Insanity
- April 2009
-
Apache WebDAV Configuration
Poll and Kqueue Hack
SiteHost New Zealand VPS
Panasonic AX200 Service Menus
Game State Management
Game State Synchronization
Python Hashes in Ruby
Managing Ruby Environment Variables
Why do we play games?
Linker flags and archives
- February 2008
-
A discrete solution for the inverse kinematics problem.
- May 2007
-
Furry Ball Theorem
Permutation Generation