Ryan Stenhouse's Blog Archive

Are you sure your CI setup is doing anything useful?

I’ve been thinking a lot lately about how Continuous Integration (CI) is used, especially within large distributed teams and kept coming back to a lightning talk I delivered at the Scottish Ruby Conference in 2010.

It talked about the common strategy of running your CI tool off of your ‘master’ or ‘gold’ branch – which is probably the one that ends up going into production – once someone has pushed their code up to that branch of your repository. I’ll call that branch ‘deployable’.

The problem with that is that if someone on your team hasn’t, or couldn’t run your tests / build your application before pushing up – you’ve got broken code right there in the branch that should always be deployable and your CI tool going crazy.

  • Ryan Stenhouse
  • Wednesday, November 30, 2011
A new job for the new year and speaking at SRC 2011

The coming year has me filled with excitement and a little trepidation. For one thing, I’m leaving the wonderful PCCL, where I have been privileged to work since January 2007 to join the team at FreeAgent Central.

This is a big change for me and it seems fitting that I’ll be starting the New Year in a shiny new job. I’ll deeply miss my friends and colleagues from PCCL and am grateful for nearly 4 great years of fun challenges, interesting work and a great working environment.

I’m going to be speaking at the 2011 Scottish Ruby Conference on the subject of the Payment Card Industry’s Data Security Standard (PCI DSS); a subject which has been a very intimate part of the last year of my professional life. If you’re coming along, come see me speak and I’ll talk about how you can use Free and Open Source Software to help reduce the cost of compliance.

  • Ryan Stenhouse
  • Thursday, December 30, 2010
Ruby / Rails the 'Enterprise' and how software works in the 'real world'

The ‘real world’ is an emotive term when it comes to software development. It parcels off your skills and experience to one side and holds it against and in comparison to a mythical archetype of ‘reality’ which seems to have little, if any, relevance to how, where and why you work. In this context, the ‘real world’ is subjective and is defined by the person who is making the comparison.

The ‘enterprise’ is another one of these terms which conjures up different images for different people and is the subject of many debates across the internet, especially in the Ruby world.

In this post, I draw upon my own work and personal experience to discuss both these topics and try to see where Ruby and Rails sit in the ‘real world’ as it pertains to me, and within the ‘enterprise’.

  • Ryan Stenhouse
  • Tuesday, October 26, 2010
Ruby and Rails people are rampant Cargo Cultists

A cargo cult is a type of religious practice that has appeared in many traditional tribal societies in the wake of interaction with technologically advanced cultures. The cults are focused on obtaining the material wealth (the “cargo”) of the advanced culture through magic and religious rituals and practices, believing that the wealth was intended for them by their deities and ancestors.

From time to time, the term “cargo cult” is invoked as an English language idiom to mean any group of people who imitate the superficial exterior of a process or system without having any understanding of the underlying substance.

From the Wikipedia Cargo Cult Article.

You may be familiar with the story that our (the UK that is) Prince Philip (The Duke of Edinburgh) is venerated as a god by the Yaohnanen tribe on the southern island of Tanna in Vanuatu. A similar thing happens pretty much every single time a shiny new ‘paradigm shifting technology’ pops up the the Ruby world.

  • Ryan Stenhouse
  • Monday, September 20, 2010
Introducing Geekspaces - A Business Idea

I tweeted last night about finally talking myself into making a go of a business idea I have been kicking around for a while. Here is the outline of it, I’m putting it out here for feedback and criticisim from my peers to find out if the idea has legs before taking it to the next stage of development

Geekspaces will be a new kind of bar and meeting venue designed to attract customers with a keen interest in Technology who need a casual space where they can eat, drink and use their laptops.

Find out more at the Geekspaces Website. If you like what you read, please take the time to complete the survey.

  • Ryan Stenhouse
  • Friday, September 03, 2010
PCI DSS and some advice from the trenches

For a while now, my responsibilities at my work have revolved around the Payment Card Industry’s Data Security Standards (PCI DSS). As of publishing this article, PCCL are compliant as a Level 1 Service Provider, the highest possible level of compliance.

Ruby played an important part in our overall compliance and I’m going to talk about how Rack and Sinatra play an important part in our compliance in a later post. For now I’ll explain a bit about PCI DSS itself and give some general advice for anyone working towards compliance.

First, I need to give a semi-obligatory disclaimer. I am not a PCI DSS QSA, all of what you’ll find here is based on my own experience as part of the two man team in PCCL who were responsible for designing and building our compliant infrastructure. From this, I’ve gained a good understanding of the specification; but you will need to speak to a QSA if you want advice which you can make business decisions on.

What follows is from my own experience at PCCL and the work undertaken for us to be compliant at this level to the PCI DSS Standard.

  • Ryan Stenhouse
  • Saturday, August 14, 2010
A 'Rescue Mission' is just a job, not a pump for your ePenis

I get rather offended on behalf of other people’s customers when I hear friends and colleagues telling me about horrific ‘Rescue Mission’ projects they are involved with, how feeble and inferior the previous developers of the project were and how only through prodigious effort and liberal application of their own awesomeness, could they and only they, save the day / save the business that hired them.

Taking a step back from this and looking the pheomenon from the outside, you can draw some fairly reasonable assumptions:

  • The company doing the hiring has a mission-critical product that needs to be finished
  • Extra manpower is needed
  • External contractors are hired to help
  • The contractors help finish the product and it ships on time

This seems to me to be fairly common set of circumstances in the freelance world, at least from my own experience. Does that mean that every time I’ve worked in that situation I’ve been on a ‘Rescue Mission’? No, it means I was hired to do a job and did it.

  • Ryan Stenhouse
  • Tuesday, August 10, 2010
My review of REWORK; surprisingly good book. Read it.

I’ll admit to have being a little bit hostile towards REWORK in the beginning; I avoided the book like the plague, thinking it was yet another attempt for someone to cash in on a reputation they (rightly or otherwise) have built for themselves.

I ended it up on my Nook only because I wanted to test the integration with the B&N Bookstore on the device.

I won’t say I feel I was entirely wrong with my initial opinion about the book, its a very good marketing ploy that promotes 37signals all the way through; however where I was wrong was in thinking that this book is not useful.

Once you get past the (rather expected) boastful, attitude filled writing style, you are left in no doubt that the book is written by knowledgeable people.

  • Ryan Stenhouse
  • Thursday, June 03, 2010
Live Blogging of the Scottish Ruby Conference 2010

The Scottish Ruby Conference comes to Edinburgh on the 26th and 27th of March, 2010.

Over the two main days of the conference, there will be three tracks with many, many interesting and informative talks from all corners of the Ruby world. Armed with my Netbook and a 3G connection just incase the WiFi goes; I’ll be there to bring you live coverage of the whole event.

I’ll be paying special attention to the questions and answers after each of the talks, and I’ll also be covering the lightning talks after the conference on the 26th. Hopefully those who can’t make it to the conference or the lightning talks will find it useful.

If you would like to join in with the livebloggery, then please drop me an e-mail and I can give you access to post too.

The liveblog from the conference will be visible from the Liveblogs section of this site and will make use of my Radiant CMS Liveblog Extension.

  • Ryan Stenhouse
  • Thursday, March 18, 2010
New Project: Prawn::Graph - Put some Graphs in your PDFs

Prawn is the fastest pure Ruby PDF generation library available. It really is pretty cool and takes most of the ouch out of generating print-ready documents.

I recently had the need to be able to generate report documents in PDF format, and found Prawn to be the best out of all the available Ruby tools to do the job.

The thing that was missing, however, was built-in support for adding graphs and charts to these reports I was generating. Of course, I could have used something like Gruff to generate a pretty PNG or JPEG of a graph and then embed that in the PDF; however to me this seemed inelegant and I was loath to add another bunch of dependencies to my application (Gruff, RMagick).

And so, I created Prawn::Graphs, It’s a very simple abstraction on top of prawn/graphics that draws Graphs. Find out more about it and see some usage examples on the project page.

The most nifty thing about this implementation is that it only relies on Prawn and the methods it exposes through prawn/graphics to do its work. That’s right, no RMagick, no embedded images, just native PDF graphs.

  • Ryan Stenhouse
  • Friday, February 12, 2010
New tutorial posted - Dynamic database switching

As part of adapting the talks that didn’t quite make it into this year’s Scottish Ruby Conference, I’ve put together a tutorial which shows you how easy it is to switch databases within your rails application.

It would be particularly useful to people wanting to provide software-as-a-service to their users without needing to inefficiently deploy duplicate instances of their applications to keep customer data separate.

You can read it over here or by looking in the Tutorials & Essays section.

  • Ryan Stenhouse
  • Sunday, February 07, 2010
Vim - All the IDE you'll ever need, and then some

I use Vim as my editor of choice for all of my programming work these days. Lately, I’ve begun to scratch the surface of the more advanced features of the editor and it’s rather brilliant extensibility.

IDEs, in my experience, tend to be rather heavy affairs ([Aptana][4] on OS X weighs in at a whopping 130MiB). Often, they’ll include their own version of things which you already have on your computer if you’re using it for development.

Do you really need this duplication? I don’t think so. I think that you need to be able to efficiently edit your source code files; be able to interact with the environment your programming for and, if possible, not waste precious storage space.

  • Ryan Stenhouse
  • Sunday, January 24, 2010
The 2010 Haiti Earthquake - Please help.

I apologise for this break from the usual content of my blog and website. I appreciate that most of my readers come here for the technology articles and perhaps to view my portfolio and current projects, however the scale of this disaster and the level of suffering we all are witnessing on the news has lead me to make this post.

There’s nothing technical here, no programming, no tutorials – just a plea from me for all of my readers and to the wider internet for those who are able to, to consider making a donation to the DEC or ICRC.

  • Ryan Stenhouse
  • Wednesday, January 20, 2010
Why I love Linode and why nobody else measures up to them

I’ve done a fair bit of evangelising for Linode since becoming their customer. I’ve been using their services off-and-on since mid 2008, and, while I’ve been around-the-block in terms of VPS and hosting providers; I’ve yet to find anyone who can compare on cost, features, service and support. Now that Linode have opened up their first data-centre in Europe; they have finally ticked all of my boxes.

  • Ryan Stenhouse
  • Monday, January 18, 2010
Proposals Submitted for Scottish Ruby Conference

I’ve submitted two proposals to be considered for inclusion in the Scottish Ruby Conference this year (2010).

The first is entitled: Sometimes you just need a Jobby.

You’ll find out all about Jobby, the mechanism for handling heavy, long running tasks in Rails (and almost anything else, for that matter). As well as briefly explaining the reasons behind its development, Iʼll cover in detail how it works, why itʼs different and present some interesting use-cases where it is especially useful.

The second is entitled: :has_many client_databases.

If you have an application you offer as a service to others (think Google Docs and such), youʼre going to run into the problem of needing to keep data separate between your customers. Youʼll want to do this as efficiently as you can, with as little code as possible. Iʼll discuss methods you can adopt to solve this problem and prove with real-world examples that itʼs not quite as difficult a problem as it seems to be.

Fingers crossed, one of these talks will be accepted and I’ll be able to have the fun of presenting!

  • Ryan Stenhouse
  • Monday, January 11, 2010
Happy New Year! Have some Jobby Rails!

You might already know about Jobby, the generic forking process manager written in Ruby which is designed to make handling the offloading of long running, complicated tasks as straightforward and resilient as possible. If you aren’t familiar with it, please check out Mark’s wonderful introductory article over on his blog.

The Rails interface to Jobby, Jobby Rails, has now been extracted from our work at PCCL and is ready for careful consumption. You can see more about it on it’s project page. It’s under heavy development and I would like to encourage anyone to fork away and get hacking on it, report issues and generally get stuck in and enjoy!

  • Ryan Stenhouse
  • Sunday, January 10, 2010
Take ThoughtBot's Ruby Survey

The folks over at ThoughtBot have put together a really nifty survey to track coding-style, preferences and habits in the Ruby Community.

It’s informative too, I for one was blissfully unaware of rescue nil, and am now trying especially hard to forget ever seeing it.

You can take the survey here, you’ll probably want to allow a few minutes for it.

  • Ryan Stenhouse
  • Saturday, December 12, 2009
Linode all moved to London!

The wonderful people over at Linode have painlessly migrated me over to their shiny new data centre in London.

I really can not sing Linode’s praises enough – If you’re with Slicehost or Webbynode or anything similar, ditch them! You’re paying to much and getting far too little.

  • Ryan Stenhouse
  • Tuesday, December 08, 2009
My Portfolio is now Online

A selection of my past and present work is now available to browse online at my Portfolio Page.

Please have a look through the page – if you have any questions or comments about the work, please don’t hesitate to contact me.

  • Ryan Stenhouse
  • Saturday, November 21, 2009
Moving Away from Dreamhost

It’s been a long time coming, in all honesty. Dreamhost are quite possibly the most awful, unreliable and downright oversold hosting service I have ever used. I’m sick of the constant passenger spawn errors because all the RAM in my host machine has been eaten, I’m sick of the slow connection to the site because they have third-world levels of connectivity. Most of all, I’m sick of the terrible customer service and the caviller, off-hand manner they deal with problems on their own network.

I’ve been sitting here with a Linode doing almost nothing for a few months, excepting hosting a few small applications and some client sites. The time has finally come to get the finger out and migrate everything over. The fact that you’re reading this blog-post is proof-enough that the migration worked.

  • Ryan Stenhouse
  • Wednesday, November 11, 2009
Sometimes its own Worst Enemy

This is a re-post and updated version of the original article I published in March 2007.

Before I start off with the rest of this post, I should probably tell you all a bit about myself and my background before I, as some people will no-doubt say, “start throwing the FUD around”:

I’m a Software Engineer with a company which runs almost exclusively on Free and Open Source Software. All of our desktops run Fedora, our servers Red Hat. We develop using Free tools such as vim and gcc and code in free languages and frameworks such as C, Python, Ruby, Rails. I myself run a a fair whack of different operating systems. On my Desktop: Windows XP, Vista, Ubuntu, Fedora and Free BSD. I own a MacBook which dual-boots into Ubuntu Jaunty and have an Acer Aspire One which dual boots Linpus and the latest version of Ubuntu Karmic. I develop for all of these different operating systems and most importantly use all of these operating systems on a daily basis (with the exception of FreeBSD).

  • Ryan Stenhouse
  • Wednesday, November 11, 2009
RSWC Up And Running

It’s been such a long time coming – but I’ve finally got this website live and in a useable state. Apologies for the delay – I was suffering like the proverbial cobbler’s son.

All that aside; what can you expect from this site?

Well, I’ll be putting up my thoughts and probably more than a fair share of my opinions. I’ll be blogging about technology in general; Ruby, Ubuntu, Fedora and related subjects in specific. There will probably be more than a few ‘essays’ posted too and hopefully a few tutorials.

Primarily, this place will serve as a hub for me to organise everything I’m working on and to share what I can with the world at large. I’ll be aggregating content from my GitHub, BitBucket and Redmine.

  • Ryan Stenhouse
  • Wednesday, November 11, 2009