Jamie's Weblog

Lessons of a startup CTO — and other things

Here I am!

Jamie Lawrence

Jamie Lawrence

I help non-technical founders start their business, build their product, get their first customers, and grow their technical team. I'm a generalist software engineer and I've worked with many different languages over the past 15 years but my current tool of choice is Ruby on Rails. I'm also an enthusiastic photographer and a novice archer

Personal Links

View Full Profile →


January 23, 2015 1

Default has_one instances in Rails without the performance hit

2015-01-23 at 22.07

My first ill-fated attempt A while ago, I added an optional profile object for our users. I thought, in my haste, that the easiest way to provide an default profile instance would be like this: class User < ActiveRecord::Base has_one :profile after_initialize :default_profile def default_profile self.build_profile unless self.profile end end This would build a new […]

Read More
November 23, 2014 0

Schema vs Query-based Multitenancy

2014-11-23 at 23.17

Most SaaS application are “multi-tenancy” to some extent (i.e., host more than one customer on the same system) but typically the term is reserved for apps that have company accounts, each with multiple users, authorisations etc. These companies would like to believe that company.mywebapp.com is their instance of MyWebApp and that you’ve lovingly prepared and […]

Read More
October 23, 2014 0

The Ruby in Rails

2014-10-20 at 17.04

Back in August I did a short talk at Corkdev about the features of Ruby that make Rails so easy to work with. The aim was to show off Rails to a general tech audience but without being all preachy about it. So instead I flew through the actual Rails stuff and then looked at […]

Read More
October 20, 2014 2

Generating a hierarchical graph with Rails & Javascript

2014-10-20 at 21.50

At WorkCompass, we can import a .csv file of employees from a customer but, as anyone who’s done anything with CSV files knows, you need a lot of validation to make sure the data is clean. Among the automated checks are some manual things like “these are the email domains used, are you sure they’re […]

Read More
February 24, 2014 5

Using Guard and Vagrant for Rails development

Background 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 when guard was running inside Vagrant it wouldn’t receive the filesystem events […]

Read More
January 29, 2014 1

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 settings will: a) change over time; b) only apply to a few companies (the […]

Read More
January 27, 2014 0

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 content, postgres database, and the actual app) and it’s scheduled to run […]

Read More
November 7, 2013 0

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 a big pain in modern rails apps. SelfControl for helping you to focus without distracting news sites/blogs etc. […]

Read More
August 2, 2013 0

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 the default setter: “`ruby class User < ActiveRecord::Base # … def email=(email) write_attribute :email, email.strip end end describe User do it ‘should […]

Read More
June 14, 2013 0

Routine backups for your Rails Server

Problem: protecting your user’s data I recently wrote about using tarsnap to backup a linux server and that’s especially important with the recent revelations about PRISM. Tarsnap is “backups for the truly paranoid” but it’s only part of the story and perhaps isn’t the best route for all servers. With a Rails server, you can […]

Read More
Older Posts