About Me
Welcome! I’m Richard, a senior software developer from Canada, now living in Berlin. I’m passionate about building software, learning languages, and continual improvement. I have been building software since I was 14 years old, and it’s still something I enjoy doing in my free time.
I am serious about creating the highest quality software I can, and I like to have fun while I do it. That’s why Ruby is currently my favourite programming language.
For me, the purpose of life is, at least partly, to have joy. Programmers often feel joy when they can concentrate on the creative side of programming, so Ruby is designed to make programmers happy. - Yukihiro “Matz” Matsumoto
I also love learning natural languages. I can speak German at a B2 level and Icelandic at a B1 level. Icelandic was a big success for me, as I had to learn it independently. Feel free to write to me in German or Icelandic if you want to.
Continual improvement is also important to me. I’m always looking for new skills to learn, and new techniques to improve what I already know. Frustrated by how many things I’ve forgotten from university, I am particularly interested in how our memory works. As an introduction I recommend the course Learning How to Learn, followed by reading Universe of Memory if you want to go deeper.
I also love Open Source software. Here’s an incomplete list of contributions I’ve made over the years. It’s here as a reminder to myself for the next time I think “Oh, I haven’t made any contributions in a long time” that this is not necessarily true :)
Roughly in chronological order, newest first:
- Usability improvement in Mongoid: Unmask Enumerable#find
- onesignal-ruby: Added a previously unsupported API call
- retry_it, a Ruby gem to conditionally retry a block of code (such as an HTTP call)
- ruby_odata: Regular expression bug fix
- ruby_odata: Bug fix in error handling
- meteor-persistent-session: Module for Meteor to persist values across page refreshes
- meteor-image-upload: Module for Meteor to enable easy upload of images
- Meteor: Upgrade version of AmplifyJS
- meteor-raven: Catch uncaught global exceptions and log them
- meteor-raven: Add gotcha to documentation
- node-cas: Bug fix
- node-cas: Support passing options to https
- fix in Jasmine: Guarantee that afterEach and after blocks are always run
- acts-as-taggable-on: Bug fix
- better-logging: Convert to proper Gem
- nyan-cat-formatter: Default to rspec2
- i18nify: A cleaner way of doing i18n in Ruby
- 2006-2009: Incubation committee member for OSGEO
- 2006-2008: Project Management Committee and Module Maintainer for GeoTools project
- 2004-2007: I made significant contributes to GeoTools, uDig, GeoServer while working at Refractions Research