The original eyepad

  1. Camera: iPhone 5
  2. Aperture: f/2.4
  3. Exposure: 1/17th
  4. Focal Length: 4mm

I always forget the difference. Here’s a nice simple explanation.

Armin Ronacher published this slide deck last week of his recent experience with mongoDB.

He’s gone a lot deeper with mongoDB than I have and I’m glad it was him and not me to discover a lot of these things. One of the quotes that caught me was “static typing with an escape hatch to dynamic typing wins”. On my last couple of projects I’ve been making a lot of use of the Postgres HSTORE type using the activerecord-postgres-hstore gem for Rails. This allows me to add dynamic key/value pairs to my tables without the need for schema changes and migrations. I use these for optional, non-indexed properties. They’re also really useful for single-table inheritance so that you don’t end up creating a superset of nullable columns for all of your subtypes.

I’m also keeping an eye on:

Nice clear reference for doing something other than linear movement.

One of the projects I’ve been working on for quite a while has come to fruition.  I’ve partnered with BladeNet to release a family of iOS apps for scores, schedules & standings for the following minor hockey associations.

This all started because I have a kid in the GTHL and another in the MHL and I didn’t like using my mobile browser to look at the schedule.

GTHL (Greater Toronto Hockey League)

MHL (Mississauga Hockey League)

NYHL (North York Hockey League)

For next season I’m hoping to add Android, box scores and lots more goodies.

For the technically inclined readers, the coolest thing about this app is that it syncs data from BladeNet’s web services into a local Coredata database, so the data is always offline, and only downloads when it has changed.

Also the credit for the sweet hockey card UI motif goes to friend Pendar Yousefi who also really helped with a lot of the major UX ideas.

I’ve looked at many people’s thoughts on good RESTful design.  This is the best I’ve seen yet.

I kept reading about how wonderful Sparrow is as a Mac email client.  So when it went on sale this week, I bought it and tried it for several days.  At first I liked how clean and cool the UI was.  One of the first features I discovered while setting up my accounts was email aliases.  This was great because I usually have several for each account.  Now I could actually choose which ones to use when sending.

Then I started to find features that Mac Mail had that were missing like quick view, playing media files in place, and exporting to iPhoto.  The tipping point was when I realized that search was simply not finding some emails that Mac Mail was finding.  So I went back to Mac Mail.

Today I realized that I had lost the email alias feature.  Or had I?  Searching help revealed nothing as usual.  But Google to the rescue.  It turns out that its a well-hidden and apparently undocumented feature.  Check out this Apple Support knowledge-base article.

a little too close to home

In the rails project I’m working, one of the more complex areas was user profile pictures.  There’s a lot of small challenges that all add up to large challenge.  Some of the things that you have to figure out are:

  • Uploading
  • Storage
  • Format validation
  • Reformatting
  • User controlled cropping

I may post later about a few of these, but today’s shout-out is for the gem I used to handle the validation, reformatting, and the server side of the cropping.  Dragonfly is a Rack framework for dynamic image processing.  It can operate by itself or in conjunction with Rails.  It also has some nice Mongoid support, and allows the images to be stored in S3.  For the image processing, it relies on the amazing ImageMagick library.  Thankfully Heroku provides the native ImageMagick as part of their platform.