Blog Archive 2012 Enumerating results from an asynchronous network call in Objective-C Nov 02 2012 Site44.com deploy task for Octopress Oct 15 2012 Generate a site44.com redirects file for your Octopress blog Oct 15 2012 Feed is moving, again Oct 08 2012 What a week Aug 24 2012 Rediscovering my passion for Software Development Jun 02 2012 2011 Choosing my religion Oct 02 2011 Detecting unspecified method arguments in Ruby Apr 11 2011 2010 How I tell a story Aug 05 2010 Trading Design Pain for Runtime Pain Jun 03 2010 Functional programming in object oriented languages Mar 01 2010 Tests as documentation Feb 11 2010 Lazy spec task creation Jan 21 2010 2009 Why Object-Oriented Languages Need Tail Calls Dec 24 2009 Responsibility Traps Oct 31 2009 Plugins: Grab ‘em while they’re stale Sep 19 2009 Random thoughts on our current Agile process Aug 31 2009 We’re Recruiting Aug 01 2009 Less delicious, yet more satisfying Jul 14 2009 Problem Solving Jun 25 2009 Collaboration Jun 25 2009 No, Sleep, Till Bedtime Jun 14 2009 Shameless Self Promotion May 15 2009 Web standards and all I got was this lousy website Apr 17 2009 A Title Case Gem for Ruby Feb 02 2009 Plugins move Jan 18 2009 Blog move Jan 17 2009 Rails, meet Drupal. Jan 12 2009 Acts As Teapot Jan 12 2009 2008 TimeMachine FTW! Jul 25 2008 Prevent accidental deployment with a prompt Jun 07 2008 Generating lots of little test cases Jun 07 2008 Quickly Migrate all database times to UTC Jun 03 2008 Deploying branches with Capistrano May 30 2008 JavaScript Date Helpers May 13 2008 Giving the Anchor tag some Ajax Lov’n May 13 2008 HTTP Ranges for Pagination? Apr 22 2008 Finding the index of an item using a block Apr 18 2008 It’s OK for GET Requests to Update the Database Apr 16 2008 Getting Too Fancy with HTTP Response Codes Apr 15 2008 Drag & Drop Prioritizable Lists Apr 12 2008 Getting Chronic to Parse Non-U.S. Dates Apr 10 2008 Fixing lowpro form submission failures Apr 03 2008 Culturally Sensitive JavaScript Mar 20 2008 Cognescentised Mar 12 2008 TimePustule Mar 06 2008 Git: Pushing with Every Commit is Flawed Mar 06 2008 Censorship Mar 06 2008 Managing Views with ActiveRecord Migrations Feb 21 2008 Ambitious Scoping Feb 15 2008 Lock Your Screen with LaunchBar Feb 08 2008 Values Jan 28 2008 HELP: Developing with WebSphere Jan 28 2008 Making del.icio.us work for me Jan 26 2008 Call for Survey Participants Jan 18 2008 Yes, more Rails plugins Jan 13 2008 Out on the Range Jan 13 2008 Content Management Simplicity Jan 13 2008 2007 Stripper Nov 07 2007 A Diamond in the Rough Oct 25 2007 Conventional Validations Oct 12 2007 FarceBook Oct 08 2007 Turning Japanese Sep 07 2007 Vanilla Ice Was an Agile Visionary Mar 28 2007 Leaking Locks Mar 28 2007 Learn to Say “No!” Mar 23 2007 Continuous Integration for Rails Just Got A Whole Lot Easier Mar 17 2007 Installing RedHill on Rails Plugins via HTTP Mar 16 2007 Bug Reporting 101 Mar 14 2007 Monitoring Java Processes under Mac OS X Mar 06 2007 Rails, PostgreSQL and Case-Sensitivity Feb 21 2007 WYSIWYL Feb 20 2007 Semantic APIs Feb 15 2007 Design Improvement Workshop Feb 14 2007 Hear Me Sort Feb 13 2007 Yes, the rumours are true. Feb 12 2007 Just Tell ‘Em Joe Sent You Feb 12 2007 Integrating with MacPorts Feb 12 2007 Pulse on PostgreSQL Feb 01 2007 2006 Reading PostgreSQL Meta Data Dec 07 2006 RedHill on Rails Plugins 1.2 Dec 02 2006 Conventions Were Made to be Broken Dec 02 2006 Aikido: Saito Hitohiro Soke Seminar, Melbourne, April 2007 Nov 17 2006 Feeling Poor? Nov 14 2006 Email Signatures Nov 14 2006 How to Entice People to Vote Nov 09 2006 Rails Housekeeping Oct 28 2006 Plugging a Team City Security Hole with a Little Obfuscation Oct 27 2006 A City Full of Code Thieves Oct 26 2006 A City of Trojan Ants Oct 20 2006 Lies, Damned Lies and Statistics Oct 12 2006 Abstract ActiveRecord Classes by Convention Oct 11 2006 Perforce Client Setup Oct 02 2006 Zip and Preserve File Permissions with Ant Oct 01 2006 No Really, Perforce Does Suck Sep 29 2006 Deploying to Multiple Rails Environments Sep 29 2006 Perforce: Just A Faster CVS? Sep 27 2006 ActiveRecord Identity Map for Rails Transactions Sep 19 2006 Automatically Validate Uniqueness of Columns with Scope Sep 15 2006 validates_presence_of association Gotcha Sep 14 2006 Procrastinating in Ruby is Delicious Sep 14 2006 RedHill on Rails Plugin Refactoring Sep 10 2006 Not My SQL Sep 10 2006 Foreign Key Associations Plugin Sep 07 2006 Transactional Migrations Plugin Aug 15 2006 Hoopla Aug 14 2006 Ploojins Jul 22 2006 A Plea to the Ruby on Rails Core Team Jul 22 2006 Schema Validations Plugin Jul 19 2006 That Weird Devil Number Jul 18 2006 Daily Musings Jul 14 2006 A Plea to JetBrains Jul 11 2006 A Nation of Zombies Jul 06 2006 No More Delicious Links Jul 05 2006 No Software Keys Required Jun 28 2006 svn:externals Jun 22 2006 Perhaps Pluralize Means Something Other Than I Thought Jun 14 2006 They say we go through three career changes but really… Jun 08 2006 Schema Defining Plugin Jun 04 2006 Row Version Migrations Jun 03 2006 Alias a Static Method in Ruby May 28 2006 Publishing My Rails Plugins May 18 2006 Auto-Generate Foreign-Key Constraints in Rails May 17 2006 Using a Single Development Database For all Rails Applications May 08 2006 Transactional DDL May 04 2006 Hej Sweden (and Norway) May 04 2006 Bulletproof Web Design May 04 2006 More Managing Multiple Rails Environments May 02 2006 Managing Multiple Rails Environments May 01 2006 The Days I Turned Pluralisations: Off Apr 24 2006 Real-estate on Rails Apr 18 2006 Simply Delicious Mar 24 2006 Aussie, Aussie, Aussie. Oi Oi Oi. Mar 24 2006 Writing Under a Doppleganger Mar 22 2006 eBay Schmeebay Mar 14 2006 CSS: Debugging Position and Size of Elements Feb 05 2006 The Joy of Mighty Mouse Jan 13 2006 Databases: A Necessary Evil? Jan 10 2006 Subversion Gotcha #17 Jan 07 2006 2005 How To Write eql?() in Ruby Dec 28 2005 Here Come The Minions Dec 21 2005 Patching Rails Dec 19 2005 The Ruby Way(tm) Dec 17 2005 Dojo or Prototype or …? Dec 05 2005 Don’t Give Razor-Blades to Children Dec 04 2005 Ruby on Rails: 100,000 morons can’t be wrong Nov 26 2005 Thank-God for Wireless Nov 16 2005 Mocking my Visitors Nov 06 2005 Sufferin’ Sukertash Nov 04 2005 Constraining Design in Search of Elegance Nov 03 2005 Domain Specific Languages: Objective-C, Ruby and Java (and Groovy) Oct 19 2005 The Computing Disease Oct 05 2005 My Biggest Peeves With JavaScript Sep 19 2005 ActionScript: JavaScript in Flashy Pants? Sep 19 2005 Managing Sensitive Data on Mac OS X Sep 09 2005 MT 3.2 Atom Feed Template Problem Sep 05 2005 Multiple Mac (Tiger) Logins for Testing Sep 02 2005 MovableType Weirdness Again Sep 01 2005 All Your Keystrokes Are Belong To Us Sep 01 2005 Attack of the Killer GPUs Aug 31 2005 Pull Me Push Me Anyway You Want Me Aug 30 2005 Godwin’s Law of Java Aug 25 2005 PGP for Mac Mail Aug 24 2005 Scraps of JavaScript Aug 23 2005 Invasion of the Battery-Life Snatchers Aug 23 2005 Getting Soft or Getting Smarter? Aug 20 2005 Prevent Mac Droppings on Network Drives Aug 18 2005 You See I Am Trying To Be Objective About It. Jul 28 2005 Not Writing Myself Off Just Yet Jul 23 2005 Dis-appointment May 29 2005 Desperately Seeking Key Bindings May 05 2005 Make Core Values Explicit Apr 28 2005 Mine’s Better Than Your’s Apr 15 2005 Two Tigers For Two Days In Two Minutes Apr 01 2005 Writing Readable Code Mar 24 2005 I Suppose I should Be Flattered Mar 24 2005 I’ve Finally Been Subversioned Mar 24 2005 When is a String not a String? Feb 21 2005 The hidden chambers that nobody can understand Feb 11 2005 It’s Like Being Back At Work Only I Don’t Get Paid Feb 05 2005 2004 South Africa Dec 27 2004 JRules Memory Leak Gotcha Dec 04 2004 Assistant Orange Peelers Nov 28 2004 Using Lucene To Find A Date Nov 22 2004 Where’s The Problem? Nov 19 2004 Environmentally-Friendly Configuration Nov 17 2004 Unit Tests As Complexity Sponge Nov 11 2004 Something Tells Me This Could Be Bad Nov 10 2004 CVS Saves My Life Once Again Nov 08 2004 McAppy Time Nov 07 2004 The Sound Of One Man Snapping Nov 05 2004 Mac OS X House Keeping Nov 04 2004 Don’t Panic! Nov 04 2004 Speculative Optimisation Nov 02 2004 Occam Need Not Apply Nov 02 2004 Death To Blog Spam Arrgghhh Oct 31 2004 When Corporates Embrace Open Source Oct 27 2004 Why Type When I Can Skype Oct 23 2004 Project Risks Oct 21 2004 Beware The Cross-Product Join Oct 21 2004 Paste Your Code Oct 06 2004 Drools Schmokes! - Part II Oct 06 2004 Drools Schmokes! Oct 05 2004 Care-Factor Nine Mister Spock Oct 03 2004 Stop Calling Me Shirley Oct 01 2004 Programmeurs Sans Responsabilité Sep 24 2004 java.util.ThrashMap Sep 22 2004 Business Rules != Scripting Sep 22 2004 Build Watermarking Sep 22 2004 How The Other Half Work Sep 15 2004 You Are What You Measure Sep 09 2004 Sunshine And Party Pies Sep 07 2004 If Code Could Speak Sep 01 2004 JSR-94 Not Useless But Certainly Trivial Aug 21 2004 What Does Business Analysis Really Mean Aug 12 2004 The Lost Art of Database Design Aug 07 2004 Rule Engine Notifications Aug 01 2004 Don’t Just Think, Feel It Aug 01 2004 Covariant Return Types Aug 01 2004 Webpshere 4 Lock-In Jul 28 2004 IKVM Jul 03 2004 Suite Memories Jul 02 2004 Network That Printer Jun 27 2004 Well Behaved Rules Jun 25 2004 Trivia Jun 23 2004 When Only An Example Will Do May 27 2004 Shake The Etch-A-Sketch May 27 2004 Business Rules Fallacy #1 May 26 2004 re: Appeal To Authority May 20 2004 Encapsulation vs Hiding May 12 2004 Business Rules Goodness - Continued May 03 2004 Planned Obsolescence Is Poor Design May 02 2004 I’ll have to start blocking email from myself now! May 02 2004 The Best Approximation Of The Least Crappy Solution We Could Possibly Build May 01 2004 BAL Cancer Apr 28 2004 The day I got the metaphor Apr 24 2004 The Irksome Power of Ignorance Apr 19 2004 Unit tests should play nice Apr 18 2004 Fatally flawed password schemes #27 Apr 18 2004 Comparing Collections Apr 18 2004 Why I prefer constructor-based depency injection Apr 17 2004 Sometimes crappy tests are better than none at all Apr 17 2004 Noise Reduction Apr 09 2004 JRules - The story so far… Apr 09 2004 Extreme Smart Arses Apr 09 2004 Collections gotchas #472 Apr 09 2004 Meatballs and perls Apr 03 2004 Sometimes the problem does just go away Apr 02 2004 More Business Rules Goodness Apr 01 2004 Let me rephrase - what is a test anyway? Apr 01 2004 Tests and Refactoring Mar 31 2004 More Broken Tests Mar 27 2004 Build Speed Mar 27 2004 Code Normalisation Mar 26 2004 Broken Tests Mar 26 2004 Software Ghettos Mar 13 2004 Naming Tests Mar 13 2004 re: Spiking and TDD Mar 09 2004 JRules - A brief overview Mar 09 2004 It wasn’t me, I was framed! Mar 05 2004 TDD and Genetic Programming Feb 28 2004 Dead code elimination Feb 13 2004 Testing thread safety - updated Feb 10 2004 Testing thread safety revisited Feb 07 2004 Adding a comment feed Feb 07 2004 Don’t touch my privates Feb 06 2004 Lots of little classes Feb 04 2004 Ignorance was once bliss Feb 01 2004 Exceptionally Challenged Jan 29 2004 Simian bake-off Jan 26 2004 My foray into C# - Part III Jan 21 2004 My foray into C# - Part II Jan 20 2004 My foray into C# Jan 19 2004 2003 Generics Dec 30 2003 Immutable Collections Dec 29 2003 Be gone ye foul smelling custom type-safe collections! Dec 29 2003 Be Assertive Dec 27 2003 Best Practices Dec 26 2003 Testing with factories Dec 24 2003 I’d like to coin a phrase… Dec 24 2003 What are your intentions? Dec 15 2003 Inversion of Control Dec 15 2003 Don’t blame the brace Dec 14 2003 Domain Driven Design Dec 14 2003 Question for all you blogging gurus Dec 12 2003 It’s an obsession Dec 12 2003 Why EasyMock Rocks Dec 11 2003 Static imports Dec 09 2003 Price / performance at what cost? Dec 09 2003 Analysis patterns Dec 09 2003 Crossing the road Dec 08 2003 When is a clock not a clock? Dec 07 2003 My stuff is too complex to test Dec 07 2003 Help save the object Dec 05 2003 Definition of insanity Dec 04 2003 It’s not a democracy Dec 03 2003 Aren’t classes supposed to have both data and behaviour? Dec 03 2003 Ahh crufty code Dec 02 2003 Adapter classes Dec 02 2003 Don’t panic, just cluster Nov 29 2003 Servlets are for integration Nov 24 2003 HTTPUnit is NOT! Nov 23 2003 Don’t mock infrastructure Nov 23 2003 Abstract classes are not types Nov 01 2003 Novel use of Hibernate? Jul 16 2003 FIRST POST! Jul 11 2003