Posts by Adam Pope

Find out more about Adam.

Dave on data!

Last week Dave spoke at Future Of Web Apps (FOWA) in London on data. If you don’t already know, he has spent the last month tracking our every move here at Storm, from the number of cups of tea we drink to when we take breaks and even what we think of the buskers outside!

Screen Shot 2013-11-01 at 14.26.24

Dave found some entertaining insights into our business – who would have guessed that those of us who have an early cup of coffee end up being less productive?

We’re also a fairly happy bunch, based on the data we input over the month. We tracked the individual perceived mood and perceived productivity of each member of the team, and overall we came out pretty well.

There were some entertaining outcomes – as the buskers outside deteriorate, so does our mood – until they get so bad that it’s either funny or we stick our headphones on, and suddenly we get a lot happier again!

While the results have been quite funny, there is also a serious outcome of this monitoring. As Dave shared with his audience at FOWA, having data is useless if you can’t interpret it and use it to improve a situation.

At Storm we’ve been lucky, we’ve just moved offices so we’ve been able to make some really simple changes that will have an impact on productivity. We’ve created social spaces, so our team can get away from their desks at lunchtime, we’ve got a better heating system so we can boost the temperature of rooms in the morning (we found warmer days were more productive) and we have even got music in each room now to cancel out the buskers!

We have also installed an intelligent phone system so that no one  has to answer too many calls in a short space of time, and we have 11am standup meetings to get the teams’ day into sync.

The feedback from Dave’s talk at FOWA was great, and those of our team who went to the conference had a really good time. It almost made having our loo breaks monitored worthwhile!

We’ve moved in!

You’ll know that we’ve been stripping back and completely redecorating new offices for a couple of months now, so we’re really excited to say that we’re finally finished and moving in tomorrow!

The office is next door to our current space, so we don’t have to move far. We’ll have a lot more space in the new office, with a new boardroom, meeting rooms on each floor and even a staff dining room.

We’re looking forward to our official opening next week, and hope to see many of you there!


We’re hiring!

Here at Storm we’re looking for a really good Ruby on Rails developer to join our fantastic team.

We offer great benefits and a really fun work environment right  in the centre of Bath. If you’re interested check out the job description and get in touch!

Using Pow with RVM 1.19′s .ruby-version and .ruby-gemset files

With the upgrade to RVM 1.19 you are asked to convert your old .rvmrc file into .ruby-version and .ruby-gemset files.

You are using ‘.rvmrc’, it requires trusting, it is slower and it is not compatible with other ruby managers, you can switch to ‘.ruby-version’ using ‘rvm rvmrc to [.]ruby-version’ or ignore this warnings with ‘rvm rvmrc warning ignore /Users/danielkehoe/code/railsapps/rails-prelaunch-signup/.rvmrc’, ‘.rvmrc’ will continue to be the default project file in RVM 1 and RVM 2, to ignore the warning for all files run ‘rvm rvmrc warning ignore all.rvmrcs’.

A typical .ruby-version file would contain


The .ruby-gemset file would have


You can add the gemset name into the .ruby-version file as ruby-2.0.0-p0@MyProject but that breaks compatibility with other Ruby version launchers.

Pow needs RVM to be loaded and for it to select the correct Ruby version to run your app with.  You do this with the .powrc file.  Mine looks like this:

if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".ruby-version" ] && [ -f ".ruby-gemset" ] ; then
  source "$rvm_path/scripts/rvm"
  rvm use `cat .ruby-version`@`cat .ruby-gemset`

That’s all there is to it!

Dave’s on the front of Agenda!

Our very own Digitally Enhanced Dave is all over the front of this month’s digital focused ‘Agenda’ magazine, stepping out of a watery iPad.

Agenda is delivered to every business in the city, and this month it is focused on Bath Digital Festival, and includes two interviews with Dave about the future of digital in Bath and the role of companies like Storm in creating jobs and opportunities.

Dave isn’t thrilled that we’re posting this on here, but we think you’ll join us in agreeing that he looks quite fetching! If anyone would like a copy of the magazine we have about 100 here…

photo copy

Storming WordPress!

This year, as part of the Bath Digital Festival, we’re running a fantastic new event that we’ve decided to call Storming WordPress! We’ll be introducing beginners to WordPress as a blogging platform and outlining some of the wider applications they can explore, as well as running a session for more experienced developers where our team will answer their questions and help them reach the next stage.

Thanks to Bath Innovation Centre for supporting the event with use of their space and providing us with lunch. We’ll be running two sessions there on Friday 22 March.

For more information about the event and to sign up to attend, see the Bath Digital Festival website.

Job: Full time Web Developer

Storm is a web development agency based in Bath, UK with a growing reputation.  To meet our ever increasing demand we’re looking for some new talent to join our skilled team.

  • Role: Web Developer
  • Basis: Full time
  • Salary: Based on experience
  • Location: Storm HQ, Bath, UK

Continue reading

How to save the uploaded file name with carrierwave_direct and S3

So you’ve setup carrierwave_direct and you’re happily uploading files to Amazon S3. In this example I’ve mounted CarrierWave on a field called csv_file, but that can be whatever is appropriate to your app.  

You’ve probably got two controller methods

def upload
  @model =

  @uploader = @model.csv_file
  @uploader.success_action_callback = upload_successful_model_url(@model)

def upload_successful
  @model = Model.find(params[:id])

  # Now what??

You need to save the file name to the model so that it can be referenced later. The documentation (at the time of writing) offers no indication of how you might go about that. The secret is in the key attribute that CarrierWave adds to your model.

def upload_successful
  @model = Model.find(params[:id])
  @model.key = params[:key]

  redirect_to model_path(@model)

Simple. When you know how!

Paul in Agenda magazine

Happy new year from everyone here at Storm!

We’re all looking forward to 2013 and like a lot of companies, we’re setting targets for the year ahead. However, now is also a good time to check that you’ve got all of the basics right in terms of your IT provision.

Our own Paul Leader has been giving advice to our local business community on just that – and you can read his piece below in Agenda, Bath’s local business magazine.

Paul in Agenda magazine

Paul in Agenda magazine

Using tomdoc to document a scope in a Rails model

I’m playing around with Tomdoc for documenting my latest Rails project.  The documentation is (ironically) a bit thin on the ground.  It’s taking a bit of trial and error to get some things working.  The most recent brainteaser was how to get tomdoc (or even rdoc) to document a scope declared on a Rails model.

Continue reading