Jamie's Blog

Ruby developer. CTO. Swimmer. Always trying to write more

Avoiding the Metrics Blackhole

I’ve been looking lots of various analytics services recently, particularly those for SaaS businesses that will calculate metrics, track events, and segment users. It’s a burgeoning industry.

But there’s a problem: these services are all POST, POST...

Why I swam 2 miles this morning - the power of habits

Img 0992

Because I like it. True, although the first 1000m are pretty much torture and I can’t skip them. I have to swim the hardest lengths every single time. 30-60 minutes listening to the sounds of lapping water can be quite meditative and/or a bit like...

A quick privacy audit of common web services

The issue of data protection and privacy was brought up recently so I’ve done a quick audit of our services to see which are compliant with the EU Safe Harbor standards. I’ve thought about this before but mostly at the superficial level (i.e., is the...

Mental and Physical Awareness for Programmers

Keyboard and trackball

I was working a new office today which made me acutely aware of a few things going wrong. It’s taken years, fuck it, decades to get this awareness. Previously I’d have suffered along and only noticed weeks later when I had crippling pain.


The Questions to be Answered (by metrics)

Img 9926

I was listening to a great podcast on the Jobs to be Done Radio with Des Traynor when they started talking about web analytics (from 14min onwards).

Consumption Analytics

I’ve been looking at analytic tools a lot recently because I have a ton of...

Using Guard and Vagrant for Rails development


I do all my development in a Vagrant VM and it’s mostly a seamless experience — except when using I was using guard. guard listens to file changes and runs the matching specs — it’s invaluable when doing any test-driven development. But...

No, but

If you’re a consultant, freelancer, CTO, product manager, then your default answer to all requests should be:

“No, but…”

That sounds negative and obstreperous doesn’t it? I’ll explain (though rest assured, phrasing also matters — see later). If...

Let’s be clear: Maximising time-in-app is hostile to users

2014 02 13 at 12.01

I’ve been thinking a lot about how we can measure the value of a service to its users recently. This has led me to look at some ‘engagement’ metrics which often boil down to “how much time does the user spend on the site / in the app?”. The goal, apparently...

Unhinged Founders are the best VC fodder

Seriously though, /I’ve/ never made money investing in steady, reasonable, well-adjusted founders.

says Chris Sacca

Never make the mistake that a win for a VC is a net-win for the founders.

What are you passionate about?

Avdi wrote an excellent rant about the use of the word ‘passionate’. Go read it, it’s brilliant.

I was at WebSummit in 2012 and I’d just walked around the floor for the first time. I was already shell-shocked by the gazillion social media startups...

The Engineering Spectrum

Example engineers

There are lots of ways to characterise and evaluate engineers but I like to think of us along a single spectrum. At one end is electronics, binary code, assembler, registers and interrupts. At the other end of the spectrum is graphic design, art, photoshop...

Implementing User Settings with Rails 3.2, Postgres and Apartment

  • ok, so I’ll actually be talking about Company settings, not User settings. You get the idea.

I needed to start storing some per-company configuration settings in a client app. I could obviously start adding columns to the Company table but these...

Did the backup run?

So, after a major screw-up today I discovered that the daily backup process hadn’t run for the past two weeks (ASIDE: after you update ruby, remember to reinstall all the non-bundled gems)

I use the backup gem to automate the backup process (user...

On dashboards, metrics and chartporn

There’s a trend, nay a bubble (bubbles are all the rage these days), in all sorts of dashboards and metrics services. Librato, StatsMix, Klipfolio, and Ducksboard are just a few that I’ve looked at over the last few days They’re all really really pretty...

Links from last night’s RubyCork meetup

Here’s a quick selection of links from last night’s RubyCork meetup:

  • Schema_plus: A very nice gem that let’s you create indices within create_table migration
  • jsRoutes incredibly useful gem which bring your Rails routes into your Javascript. Solves...

Sneaky Ruby tricks me again (and and && and or or ||)

You see, I had this little piece of code like:

if last_statistic.blank? or last_statistic.different?(options)
  # do stuff

but I wanted to make it a bit more obvious what that condition represented so I changed it to

create_new = last_statistic

PSA: Strip your user’s (email address)

Help preserve your sanity by strip'ing your user’s email address unless you enjoy being confused by things-that-should-work-but-don’t when confronted by a email address like ‘ jamie@ideasasylum.com’.

Rails makes this exceptionally easy by overriding...

Printing story cards from Pivotal Tracker

The advantage of tools like Pivotal Tracker is that you can easily collaborate online but, just occasionally, it’s nice to print out a stack of story cards, lay them out on a table and physically move them around.

Pivotal Tracker doesn’t have a means...

Ruby Markers for Sublime Text

Have you ever wondered how Avdi gets those results-as-comments in his Ruby Tapas episodes? I did. And apparently it’s one of the most asked questions he receives. The answer is xmpfilter and it comes with extensions for vi/Emacs.

But if you’re a Sublime...

The Beauty of Hopelessness

![ Hope](images/20090131182305_pict8036-398x600.jpg) Since 1995, I went by the username hopeless as my online identity. In explaining it, I would tell the story of how when I went to university I was replaced by a puppy called Hope (from the Hope Valley...

Page 4 of 47