of Ding.

The Roman Numerals kata

Sandi Metz's Make Everything the Same post got me thinking about my own solution to the Roman Numerals kata and how it differed from so many others'

Self-sourcing bash profile

Get ~/.bash_profile changes to self-source.

Using ssh bastion hosts without going mad

A simple ssh configuration to transparently agent-forward through a bastion host.

In search of better PeopleSoft effective date queries, Part 2

A continued exploration of alternative techniques for making PeopleSoft effective date queries more readable and maintainable by composing subrelations and destructuring with the WITH clause.

Simple markdown note taking—launched from the command line

How I ditched Evernote for markdown/vim with a tiny bash script for taking notes.

In search of better PeopleSoft effective date queries

A join-based approach for speeding up PeopleSoft effective date queries and un-burdening your brain with WHERE clauses that are a mile long.

Query for primary keys on a PeopleSoft table

PeopleSoft tables don't use real primary keys—they use logical primary keys. So if you want to find the keys for say, the acad_prog_tbl table, one usually has to resort to venturing into the PeopleSoft web application (or worse, App Designer). If you want to save yourself this pain, you can query these keys from one of PeopleSoft's setup tables, pskeydefn.

Display git revision in your Rails application footer

It's always nice to know which version of your code is deployed. When your product owner discovers a bug in your staging/test instance especially, you want to know 'what version was that?'. Or, more importantly, 'who checked in and deployed that code?!'.

Getting Clojure/Leiningen to talk to Oracle

How to build a Clojure/Leiningen project that uses Oracle ojdbc6.jar without getting the dreaded `SQLException: No suitable driver found for jdbc:oracle:thin:...` error.

jquery-objectdiff — a jQuery plugin for comparing objects

I recently worked on a javascript project that involved a simple workflow where an unprivileged user could request changes to certain bits of enterprise data. The requested changes would then route to a privileged user who would either make the requested changes or deny the request. I wanted to provide a some kind of diff to the privileged user so they didn’t have to compare two sets of data and manually find the changes. It’s 2011—no human should ever have to manually perform a diff!