I am the ghost of groovymother.com. Woooooo!

This is an old page from Rod Begbie's blog.

It only exists in an attempt to prevent linkrot. No new content will be added to this site, and links and images are liable to be broken. Check out begbie.com to find where I'm posting stuff these days.

Filed under 'programming'

August 23, 2011

AbstractSingletonProxyFactoryBean (Spring Framework API 2.5)

This is real. Also, why I’m glad I don’t program in Java any more.

September 27, 2010

A user's guide to websites, part 1: If it wasn't broken why fix it?

Fab post by Rev Dan Catt which handily summarises why I ignore anyone that ever uses the “#fail” hashtag on Twitter.

“Can’t you just give us the option to continue using the old version, it’s just a check-box and you have all the old code anyway. I manage the Databases for my company so I know its not that hard!”

July 2, 2010

Commit Message Generator

For those times when you don’t know what to put in your commit message. “oops, forgot to add the file”

March 3, 2010

2010 CWE/SANS Top 25 Most Dangerous Programming Errors

Every programmer should read this list now. If you don’t have a high-level understanding of all of these (and a deep understanding of the ones that affect the platform you build on), you’re dangerous.

January 7, 2010

Don’t Be Cute with Your Test Data

Exciting news to start my day. A piece I contributed to O’Reilly’s forthcoming 97 Things Every Programmer Should Know has been picked for inclusion in the book. I’m “published”!

Below is my piece. The opening example isn’t exactly historically accurate, but it’s pretty close to something that almost got me fired from my first job!

It was getting late. I was throwing in some placeholder data to test the page layout I’d been working on.

I appropriated the members of The Clash for the names of users. Company names? Song titles by the Sex Pistols would do. Now I needed some stock ticker symbols — just some four letter words in capital letters.

I used those four letter words.

It seemed harmless. Just something to amuse myself, and maybe the other developers the next day before I wired up the real data source.

The following morning, a project manager took some screenshots for a presentation.

Programming history is littered with these kinds of war stories. Things that developers and designers did “that no one else would see” which unexpectedly became visible.

The leak type can vary but, when it happens, it can be deadly to the person, team, or company responsible. Examples include:

  • During a status meeting, a client clicks on an button which is as yet unimplemented. They are told: “Don’t click that again, you moron.”
  • A programmer maintaining a legacy system has been told to add an error dialog, and decides to use the output of existing behind-the-scenes logging to power it. Users are suddenly faced with messages such as “Holy database commit failure, Batman!” when something breaks.
  • Someone mixes up the test and live administration interfaces, and does some “funny” data entry. Customers spot a $1m “Bill Gates-shaped personal massager” on sale in your online store.

To appropriate the old saying that “a lie can travel halfway around the world while the truth is putting on its shoes,” in this day and age a screw-up can be Dugg, Twittered, and Flibflarbed before anyone in the developer’s timezone is awake to do anything about it.

Even your source code isn’t necessarily free of scrutiny. In 2004, when a tarball of the Windows 2000 source code made its way onto file sharing networks, some folks merrily grepped through it for profanity, insults, and other funny content. (The comment // TERRIBLE HORRIBLE NO GOOD VERY BAD HACK has, I will admit, become appropriated by me from time to time since!)

In summary, when writing any text in your code — whether comments, logging, dialogs, or test data — always ask yourself how it will look if it becomes public. It will save some red faces all round.

August 26, 2009

Episodes: for timing web pages

Framework for tracking web performance on end-user machines, from Steve Souders, author of “High Performance Web Sites”.

Deep Profiling jQuery Apps

Fell into my lap serendipitously this afternoon, as I was thinking about the very issue of speeding up user-side code.

July 31, 2009

Anatomy of a feature

Great description of all the thought that is needed for “a quick feature”. Just gone through implementing one of these this evening!

May 29, 2009

The Origin of Ada Lovelace

Fantastic comic strip on the origin of the first programmer.

Filed under : : :
via |

April 21, 2009

Some Notes on Distributed Key Stores

Leonard Lin’s summary of “the market” of distributed key stores. I haven’t needed to do anything terribly large-scale yet, so redis has been Good Enough for me.

November 1, 2008

October 4, 2008

Programmers Don't Like to Code

“Programmers don’t like coding, they like problem solving.” Yes! Coding is that dull chore between solving a problem and finding out if your solution works.

Filed under :
via |

September 29, 2008

Hadoop + Python = Happy

Framework that combines Jython and Hadoop to make writing distributed mapreduce in Python easy. This might finally get me to dive into Hadoopyness.

Filed under : : : :
via |

July 31, 2008

It's a Different Set of Rules - The Daily WTF

Forwarded to me by a co-worker after a grammar argument. “The comma is supposed to go inside the quotes.”

Filed under : : :

July 8, 2008

Protocol Buffers: Google's Data Interchange Format

A smidgen of Google’s secret sauce — a lighter-weight-than-XML data interchange format, with heavily optimized cross-language serialization routines. Just the thing for shuttling and persisting data.

Filed under : : :
via |

The Greatest Bug of All

Or “Why you need to understand operating system fundamentals if you want to ship end-user software”

Filed under : : : :
via |

July 5, 2008

Queue everything and delight everyone

Good thoughts from Les Orchard — Your webapps don’t have to do all your work the second a user clicks the button on a form. Queue up tasks and respond quickly, and everyone wins.

Filed under : : :

March 18, 2008


“Can’t think of a good class name? Try this” Also handy for filling in status reports. “This week, I optimized the WritableCommandVector.”

Filed under : : :
via |

December 26, 2007

SpiderWorks: Learn Objective-C on the Macintosh by Mark Dalrymple and Scott Knaster

I’m giving Mac programming a go over the festive break — This seems to be a good (cheap) e-book to get me started with Objective C.

Filed under : : :

Cocoa Dev Central: Learn Cocoa

Mega-wicked-simple “getting started with Cocoa” tutorial.

Filed under : : :
via |

December 14, 2007


Control AppleScript from Python. The prospect of using Python to hack on my iTunes library is massively exciting!

Filed under : : : :

September 21, 2007


JUnit test tester. Works by changing your code and making sure your unit tests break! Wonder if there’s a Python version…

September 19, 2007

Strategy Letter VI - Joel on Software

Good article on where Joel sees web development going — some kind of higher-level language that compiles down to Javascript, HTML, and whatever else runs in browsers. I think there needs to be “Assembler programmers don’t have groupies.” t-shirts.

September 18, 2007

SSCM ( Simultaneous Source Control Managers (manager) )

Tool for syncing source control over multiple systems — seems ideal for those times that “corporate” insist on a standard version control package that everyone hates, and you want to use SVN/git/whatever.

Filed under : : : :
via |

August 19, 2007

Scratch | Home | imagine, program, share

Graphical programming “language”/environment. Designed as a tool to let kids learn programing.

Filed under : : :

May 28, 2007


“Programming the LOL way.” I CAN HAS TURING COMPLEET?

Filed under : : : :
via |

May 16, 2007

Coding Horror: Bill Gates and DONKEY.BAS

Tribute to billg’s programming triumph.

Filed under : : : :
via |

April 26, 2007

Hackety Hack: the Coder's Starter Kit

Simple easy-to-get-started programming tutorial, based upon Ruby and Mozilla. Written by “Why the Lucky Stiff”. The “Hackety Manifesto” is worth reading.

March 23, 2007

Unusual software bug - Wikipedia, the free encyclopedia

“A Schroedinbug is a bug that manifests itself apparently only after the software is used in an unusual way or seemingly at the point in time that a programmer reading the source code notices that the program should never have worked in the first place, at which point the program stops working entirely until the mysteriously now non-functioning code is repaired.” I’ve coded a few of these in my time.

Filed under : : :
via |

March 14, 2007

Adobe edits the development cycle | Reg Developer

Some good thoughts on how to manage code quality in a product development world. “Probably the most effective thing we did was institute per-engineer bug limits: if any engineer’s bug count passes 20, they have to stop working on features and fix bugs instead. The basic idea is that we keep the bug count low as we go so that we can send out usable versions to alpha testers earlier in the cycle and we don’t have the bugalanch at the end.”

February 27, 2007

code slate: you don't bury survivors

“What was your contribution to the team?” “Light both ends of fuse one and one end of fuse two. When fuse one burns out, light the other end of fuse two.”

Filed under : : :
via |

February 13, 2007

ChipLog: VMware Workstation 6.0 beta 3

Wow, Record/Replay sounds useful. Similar to the Java Omniscient Debugger, but capturing the whole machine state. Looks like VMWare are doing a good job of differentiating their free and pay-for versions.

January 17, 2007

The Complicator's Gloves - The Daily WTF

Best Daily WTF in a while. “Take a good, hard look at your first revision and just say to yourself, ‘gloves.’”

January 4, 2007

The Xapian Project

Open-source C search engine. I still prefer Lucene, but PyLucene is notoriously flakey under mod_python, so I’m using XapWrap to power the groovymother search.

Filed under : : :

November 8, 2006

Ned Batchelder: Subversion branching quick start

Handy guide to understand the purpose of branching in source control, and examples of how it works in Subversion.

November 4, 2006

REST Web Services

Spec for a forthcoming book from Leonard Richardson and Sam Ruby. I look forward to finding out how to raise my web service designs above the level of “HTTP+POX”.

Filed under : : :
via |

October 22, 2006

Brainfuck - Wikipedia, the free encyclopedia

“The brainfuck language is an esoteric programming language noted for its extreme minimalism. It was designed to challenge and amuse programmers, and is not suitable for practical use.”

Filed under : : :
via |

July 21, 2006


Python package for modelling and graphing networks. Looks like it’ll be easier to work with than GraphViz.

Filed under : : :

July 16, 2006

Coding Horror: Separating Programming Sheep from Non-Programming Goats

Summary of a really interesting paper: Can you give potential CompSci students a test that will weed out those that will Just Never Get It?

Filed under : :
via |

March 1, 2006

Ten reasons why you need to build an API

Very attractive presentation by Shaun Inman (author of Mint) on the benefits of building an API into your webapp.

February 21, 2006


Search engine for the code samples made available for download by programming book publishers.

Filed under : :
via |

January 18, 2006

What Works In Software Development

A really good summary of the best bits of Agile, XP, etc. plus some common sense. Turns a bit Perl-centric near the end, but that aside it’s an excellent read for software engineers.

December 27, 2005

Seven Habits of Highly Effective Programmers

Some excellent tips for living the programming life, with plenty of examples.

December 7, 2005

web.py: makes web apps

New minimalistic Python web framework from Aaron Swartz.

Filed under : : : :
via |

November 7, 2005

Visual Studio Express

Microsoft have release the various versions of Visual Studio Express for free. Very smart move on their part — It reduces the cost of Windows programming to essentially zero for those who aren’t willing to pay, and MS can make up the money with their “professional” Team solutions and MSDN subscriptions.

About This Site

This is an archive of groovmother.com, the old blog run by Rod Begbie — A Scottish geek who lives in San Francisco, CA.

I'm the co-founder of Sōsh, your handy-dandy guide for things to do in San Francisco this weekend.