Freelancing Gods 2014

God
25 Sep 2012

Funconf

This could be a story about a mystery. Or it could be an adventure. Or even a tale of learning and sharing. But ultimately, it really comes down to friendship and trust.

Gaelic Badges

Ah, but where to start? Well, if we look back several years, it starts with my good friend James Healy, introducing me to a programming language called Ruby. That led me to the Australian Ruby community and the very first Rails Camp just outside Sydney, where I met Matt Allen. A year later, Matt Allen introduced me to Geoffrey Grosenbach at RailsConf in Portland, Oregon. A few months later, I found myself in Berlin, where through Geoffrey I met Paul Campbell of Dublin.

And then I met Paul again in Las Vegas, London, Amsterdam, Margate (for another Rails Camp), Berlin, and then finally in his home city of Dublin last year. I now consider myself lucky to call Paul a good friend, and have also had the pleasure of occasionally working with him.

Paul is a man with grand ideas, and one of those is an event he and fellow Dubliner Eamon Leonard concocted called Funconf. Every year as Paul put it together, I would consider travelling around the world to attend, but it just didn’t work out. This year, though, Paul told me the third Funconf would also be last – and so I became determined to be there for it. There were other events in in the same corner of the world I have been keen to see as well, thus it became something of a tour – four months travelling around Europe. Let’s be clear: from the beginning, Funconf was always one of the main reasons for the trip.

But what was I travelling over to be a part of? I knew that it was a conference – well, kind of: there would be some talks, close enough. And it’s a tech crowd that attends, so it’s work related at a stretch. But beyond that, Paul & Eamo weren’t talking.

When tickets were finally released, the website, gorgeous though it was, didn’t shed any light. All it asked was one question: “Do you trust us?”

My answer was always going to be yes.

Even after handing over a not inconsiderable amount of Euros to secure my place, few answers were forthcoming. Food and beds would be covered, but there was no clues as to where those beds would be, let alone what food we would be eating.

So I waited patiently, and began upon my travels. I attended conferences, I wandered through beautiful European cities, and I caught up with many friends along the way.

And finally, I arrived in Dublin at the end of August, still clueless as to what was to come. I wasn’t alone though – about a hundred others had come from across the globe. Most had been to previous editions of Funconf, but they were no more enlightened than I.

We met on Friday morning at a hotel in Dublin – some of us sporting a bit more facial hair than normal, after some tweets from Paul & Eamo – and found ourselves in a situation that felt very conference-like. There was a registration desk, hotel-catered breakfast, and a room with lecture-style seating and a PowerPoint presentation ready to go. This wasn’t what we expected! Werner Vogels, CTO of Amazon, was our morning’s speaker, and the talk was, well, just like any run of the mill conference.

We were being trolled. Or, as we’d say in Australia, Paul & Eamo were taking the piss.

Then, things started to get interesting. We grabbed our bags and were herded onto three big, black limousine party buses (a reference to Funconf 1) and with three shiny Deloreans (a reference to Funconf 2), we were escorted by local police to Heuston Train Station.

The mode of transport stakes were quickly raised – because we were then asked to board a train booked just for us, with the destination being Galway, on the other side of Ireland.

Next stop: Galway

Of course, this was just one piece of the puzzle – what was to come once we arrived in Galway had yet to be revealed. That didn’t bother us much: we all revelled in the experience of the train trip, catching up with old friends and making new ones.

Buses – though nothing fancy this time – took us from the station to another hotel. Again, it was quickly clear that this wasn’t out main destination either as we were led into another function room. This time around, there were no PowerPoint slides, for we were the main attraction: an open mic and an invitation to talk for a few minutes on topics of our choosing.

While most got an opportunity to share – in some cases, more than once – others missed out: as the ideas flowed, Paul was taking a token or so people out of the room at regular intervals, and they weren’t returning. Slowly but surely, the numbers thinned until there were fifteen of us left. If I had been keeping an eye on Twitter, I would have known what was happening – but thankfully, I didn’t catch any of the spoilers. The penny dropped when we grabbed our bags and were led through the back streets of Galway to find helicopters waiting.

Helicopters!

Helicopters!

And so, we arrived in grand style at our actual destination, Inis Mór of the Aran Islands (just off the west coast of Ireland).

All this, and it’s just the journey to get us where Funconf was taking place – the support act, if you like. Of course, with Paul & Eamo planning, the journey is as important as every other aspect of the event.

From there, it was a matter of collecting our amazingly crafted badges (thanks Kilian!) and bags (thanks Kilian’s mum!), settling into a bed & breakfast, and then wandering across the island in search of food, drink and friends.

Arriving on Inis Mór marked a change of pace: not only had we reached the event location (if an entire island counts as such), but part of the mystery of Funconf had been revealed. A large question mark still hovered, though: we had no idea what the next day would contain.

But we would have to wait until the morning for that. Friday evening was set aside for dinner and socialising – a fine way indeed to bring to a close such a uniquely wonderful day.

And once Saturday morning arrived, the rest of Funconf was revealed – well, to some extent. We had our venues: the local church, a nearby hall, a pub; and we had a schedule of when to be at each. The specifics of what would happen in each location was only divulged when required.

Those specifics, for the most part, were talks, and very good ones. None were technical, all were interesting, and they were generally stories or ideas. I shan’t recount each at length, as I would not do them justice (and, well, you had to be there), but my two favourites were Michael Lopp and Tom Preston-Werner (known as @rands and @mojombo, respectively). Fittingly, the focus for both was the topic of trust.

But beside the talks? Well, some of us visited the imposing cliff ruins of Dún Aonghasa, some of us got drenched riding bicycles in the rain (and some of us did both), but throughout there was a constant hum of socialising. While the talks were top notch, I can say with some certainty that the main reasons everyone came to Funconf were the people and adventure.

The evening brought with it a clever talk from Derek Sivers, a rocking performance by Kíla, and much partying – but all too soon, it was Sunday morning and time for us to board the ferry back to the mainland. A subdued ferry ride was followed by buses, and then another private train returning us to Dublin in time for the BBQ after-party.

And just like that, Funconf 3 was finished. A grand success indeed, and perhaps it’s for the best that there will not be another one – for I’ve no idea how Paul & Eamo could top that, plus it makes my experience all the more special, shared with such a superb group of fellow adventurers.

Paul, Eamon: thank you ever so much. I have no regrets for putting my trust in both of you, for it was a brilliantly crafted weekend.

16 Jun 2012

Supporting Smart Social Enterprises in Cambodia

About 18 months ago, I posted here about a campaign some friends of mine ran to kick-start some social enterprises in Cambodia through their not-for-profit organisation Kinyei.

These businesses have taken off, and now my friends want to step back and hand them over to their local staff, so they become completely locally owned and run. This push is also in need of some funds though, and so there’s another campaign. The money raised from this will ensure that the necessary training can be given to the staff, so they’re ready to manage the businesses.

There’s only a few days before the fundraising deadline, and much like Kickstarter, if the target is not met, none of the funding gets passed through – and Kinyei haven’t quite got to that target yet. So, if you can chip in, please do!

Kinyei and Friends

I’ve been lucky enough to visit Battambang in Cambodia in the last year, and was able to see the projects in full flight – and it’s quite clear that the local staff have gained a massive amount of knowledge, skills and life experience from being involved. Particularly of note is their cafe baristas, who have become so well regarded that they compete at the country barista championships and train baristas at other cafes and hotels in Cambodia.

So if you can send some money their way, I know it’ll go to a great cause and make a clear difference. Just head on over to their campaign page to donate.

Seyla, Me and Chouert at Kinyei

02 Mar 2012

Drop in at Inspire9

I was about to write a new post about something technical, but that can wait for another day. Right now, I want to highlight to the world Inspire9, a coworking space here in Melbourne.

Now, Inspire9 is also a web development business, run by the talented and generous Nathan Sampimon. When the word spread a few years ago that he had an office for himself but others could drop by, I started visiting – as did others. Slowly the numbers grew, and instead of being just “Nathan’s office”, there was a growing sense of community and shared ownership, and it had become a much-loved coworking space.

As part of that growth, we had clearly outgrown our existing space – a measly 77 square metres – and so plans were hatched for something much larger. Halfway through last year, we moved into our new residence at 41 Stewart St, Richmond (right beside Richmond Station), with 370 square metres to work and play in (and that’ll eventually double to 720).

IMG_2927

Our office is now a bustling hive of activity – there’s usually somewhere between 20 and 30 people in each day at any one point. Many of us have dedicated desks (it is something I happily pay for). That said, not everyone who works from Inspire9 are residents – anyone is welcome to drop by and use a desk, and it’s free.

IMG_5187.jpg

It’s occurred to me to write about Inspire9 now because of what’s happened in the last 24 hours. Last night, someone stole Kealey’s iPhone while she was making sure an event in the office was running smoothly. Kealey is not only our events manager, but also a key part of the heart and soul of Inspire9 – so we were all pretty upset, and doubly so because it happened in our midst, in our home.

Not content with this situation, this morning Ned got a pledgie running to help fund a new iPhone for Kealey. Within two hours we had the funds, and by the end of today Kealey had a shiny new iPhone in her hands. The full story has been covered on the Inspire9 blog, and I particularly love the title, a very appropriate ‘Restoring Balance’.

While Inspire9 is a fantastic place to work, it’s the community that makes it stand out. I consider myself very lucky to be a part of it.

So, if you find yourself in Melbourne, please do visit. You’re welcome to pull up a chair and get some work done, or perhaps challenge someone to a game of pool. We also now host the Melbourne Ruby and Python meets every month (as well as plenty of other events), and we’re a friendly bunch – don’t be afraid to say hello!

18 Feb 2012

The Ballad of Roger and Grace

One of my favourite times to be in Melbourne is April, because that’s when the Comedy Festival happens in this fine city. And Comedy Festivals are especially fantastic when Daniel Kitson is in town performing – which he will be this year, with a new show.

Daniel Kitson, if you’ve not heard of him before, is not only a talented comedian. He’s also a brilliant storyteller, and often his performances are cleverly woven, heartwarming, and human.

As a rare treat (recordings of his full shows are extremely scarce), he’s put one of his older storytelling shows online – a collaboration between him and his good friend, musician Gavin Osborn, titled The Ballad of Roger and Grace. I actually have raved about it already, back when they performed it in 2008.

If any of this has caught your interest, then I recommend you go and spend the £2.50 (a bargain indeed), set aside an hour, and soak in the intertwined stories and songs.

And then perhaps you should consider buying a ticket to Daniel Kitson’s show at this year’s festival – they’ll soon be on sale, and will disappear quickly (I’m far from the only person in Melbourne who’s a fan).

22 Jan 2012

Backing up with Backup

I’ve found myself singing the praises of Michael van Rooijen’s backup gem twice in quick succession lately – and so, I just want to run through how I’m using it, and how useful I find it.

For those not familiar with it, Backup provides a neat DSL for creating backup scripts with archiving files and databases through to common data stores (S3, Rackspace, SFTP, etc), with notifications via email, Campfire and others. If you want a rundown of all the options, click the link above – there’s quite a few. I’m using the gem to make sure all critical data for Flying Sphinx is stored in multiple locations – and particularly, with different providers.

The documentation’s pretty solid, so I won’t keep you long, but here’s two examples. First up, here’s my script for copying an archive of essential files (including a SQLite database) off to Ninefold – with the private details changed:

Backup::Model.new(:database_backup, "Database Backup") do
  archive :oedipus do |archive|
    archive.add '/mnt/sphinx/oedipus'
  end

  compress_with Gzip do |compression|
    compression.best = true
  end

  store_with Ninefold do |nf|
    nf.storage_token  = 'STORAGE_TOKEN'
    nf.storage_secret = 'STORAGE_SECRET'
    nf.path           = "oedipus/#{`hostname`.strip}"
    nf.keep           = 20
  end

  notify_by Mail do |mail|
    mail.on_success = true
    mail.on_failure = true

    mail.from      = 'support-at-flying-sphinx'
    mail.to        = 'pat-at-freelancing-gods'
    mail.address   = 'smtp.sendgrid.com'
    mail.user_name = 'SMTP_USER_NAME'
    mail.password  = 'SMTP_PASSWORD'
  end
end

For the above, I added Ninefold support to Backup, and Michael was kind enough to merge my commits in.

For my next script, though, I’m syncing directories to both S3 (in Singapore) and Rackspace (in the UK). The current releases of Backup don’t support syncing to Rackspace – but I ended up taking inspiration from fellow Melburnian Ryan Allen’s Sir Sync-a-Lot and rewrote the S3 support with his bulk MD5 approach. The code was simple enough – thanks to Wesley Beary’s excellent Fog – so I adapted the code to handle Rackspace as well.

However, I’ve not written tests for this, and my code does not yet support mirroring – so, I’ve not yet provided a patch back to Michael. If you want to use my code, feel free – but I will get to submitting a proper patch soon.

All that said, here’s the script:

Backup::Model.new(:volume_backup, "Sphinx Backup") do
  sync_with S3 do |s3|
    s3.access_key_id      = 'ACCESS_KEY'
    s3.secret_access_key  = 'SECRET_KEY'
    s3.bucket             = "fs-#{`hostname`.strip}-sync"
    s3.region             = 'ap-southeast-1'
    s3.path               = ''
    s3.mirror             = false

    s3.directories do |directory|
      directory.add '/mnt/sphinx/oedipus'
      directory.add '/mnt/sphinx/flying-sphinx'
    end
  end

  sync_with Rackspace do |rs|
    rs.api_key  = 'API_KEY'
    rs.username = 'USER_NAME'
    rs.auth_url = 'lon.auth.api.rackspacecloud.com'
    rs.bucket   = "fs-#{`hostname`.strip}-sync"
    rs.path     = ''
    rs.mirror   = false

    rs.directories do |directory|
      directory.add '/mnt/sphinx/oedipus'
      directory.add '/mnt/sphinx/flying-sphinx'
    end
  end

  notify_by Mail do |mail|
    mail.on_success = true
    mail.on_failure = true

    mail.from      = 'support-at-flying-sphinx'
    mail.to        = 'pat-at-freelancing-gods'
    mail.address   = 'smtp.sendgrid.com'
    mail.user_name = 'SMTP_USER_NAME'
    mail.password  = 'SMTP_PASSWORD'
  end
end

I’ve been running the first script for several months, and the second for close to a month – both via cron – and had no problems at all. If you’ve not got a solid backup system in place because you’re finding it complex and frustrating, you’ve now got one less excuse.

21 Nov 2011

Cut and Polish: A Guide to Crafting Gems

As I mentioned here earlier in the year, a few weeks ago I had the pleasure of visiting Ukraine and speaking at the RubyC conference in Kyiv. My talk was a run through of how to build gems, some of the tools that can help, and a few best practices.

The video of my session is now online, if you’re interested:

There’s also the slides with notes, if you prefer that.

One of the questions asked towards the end was about publishing private gems, which I’d not dealt with before. However, Darcy was quick to tweet that Gemfury looks like a promising solution for those scenarios.

Please let me know if you think I’ve missed any critical elements of building and publishing gems – or if you have any further questions.

And many thanks to the RubyC team for putting together the conference and inviting me to speak – I had a great time!

19 Oct 2011

A Sustainable Flying Sphinx?

In which I muse about what a sustainable web service could look like – but first, the backstory:

A year ago – almost to the day – I sat in a wine bar in Sydney’s Surry Hills with Steve Hopkins. I’d been thinking about how to get Sphinx working on Heroku, and ran him through the basic idea in my head of how it could work. His first question was “So, what are you working on tomorrow, then?”

By the end of the following day, I had some idea of how it would work. Over the next few months I had a proof of concept working, hit some walls, began again, and finally got to a point where I could launch an alpha release of Flying Sphinx.

In May, Flying Sphinx became available for all Heroku users – and earlier today (five months later), I received my monthly provider payment from Heroku, with the happy news that I’m now earning enough to cover all related ongoing expenses – things like AWS for the servers, Scalarium to manage them, and Tender for support.

Now, I’m not rolling in cash, and I’m certainly not earning enough through Flying Sphinx to pay rent, let alone be in a position to drop all client work and focus on Flying Sphinx full-time. That’s cool, either of those targets would be amazing.

And of course, money isn’t the be all and end all – even though this is a business, and I certainly don’t want to run at a loss. I want Flying Sphinx to be sustainable – in that it covers not only the hosting costs, but my time as well, along with supporting the broader system around it – code, people and beyond.

But what does a sustainable web service look like, particularly beyond the standard (outmoded) financial axis?

Sustainable Time

Firstly (and selfishly), it should cover the time spent maintaining and expanding the service. Flying Sphinx doesn’t use up a huge amount of my time right at the moment, but I’m definitely keen to improve a few things (in particular, offer Sphinx 2.0.1 alongside the existing 1.10-beta installation), and there is the occasional support query to deal with.

This one’s relatively straight-forward, really – I can track all time spent on Flying Sphinx and multiply that by a decent hourly rate. If it turns out I can’t manage all the work myself, then I pay someone else to help.

It certainly doesn’t look like I’m going to need anyone helping in the near future, mind you – nor am I drowning in support requests.

Sustainable Software

Ignoring the time I spend writing code for Flying Sphinx (as that’s covered by the previous section), pretty much every other piece of software involved with the service is open source. Front and centre among these is Sphinx itself.

I certainly don’t expect to be paid for my own open source contributions, but it certainly helps when there’s some funds trickling in to help motivate dealing with support questions, fixing bugs and adding features. It can also provide a stronger base to build a community as well.

With this in mind, I’m considering setting aside a percentage of any profit for Sphinx development – as any improvements to that help make Flying Sphinx a stronger offering.

(I could also cover my time spent on Thinking Sphinx either with a percentage cut – either way it would end up in my pocket though.)

Sustainable Hardware

This is where things get a little trickier – we’re not just dealing with bits and electrons, but also silicon and metals. The human race is pretty bad at weaning itself off of limited (as opposed to renewable) resources, and the hardware industry certainly is going to hit some limits in the future as certain metals become harder to source.

Of course, the servers use a lot of energy, so one thing I will be doing is offsetting the carbon. I’ve not yet figured out the best service to do this, but will start by looking at Brighter Planet.

From a social perspective, there’s also questions about how those resources are sourced. We should be considering the working conditions of where the metals are mined (and by whom), the people who are soldering the logic boards, and those who place the finished products into racks in data centres.

As an example, let’s look at Amazon. Given the recent issues raised with the conditions for staff in their warehouses, I think it’s fair to seek clarification on the situation of their web service colleagues. And what if there were significant ethical issues for using AWS? What then for Flying Sphinx, which runs EC2 instances and is an add-on for Heroku, a business built entirely on top of Amazon’s offerings?

I could at least use servers elsewhere – but that means bandwidth between servers and Heroku apps starts to cost money – and we introduce a step of latency into the service. Neither of those things are ideal. Or I could just say that I don’t want to support Amazon at all, and shut down Flying Sphinx, remove all my Heroku apps, and find some other hosting service to use.

Am I getting a little too carried away? Perhaps, but this is all hypothetical anyway. I’m guessing Amazon’s techs are looked after decently (though I’d love some confirmation on this), and am hoping the situation improves for their warehouse staff as well.

I am still searching for answers for what truly sustainable hardware – and moreso, sustainable web services – financially, socially, environmentally, and technically. What’s your take? What have I forgotten?

RssSubscribe to the RSS feed

Recent Links

Recent Posts

Tag Density

About Freelancing Gods

Freelancing Gods is written by , who works on the web as a web developer in Melbourne, Australia, specialising in Ruby on Rails.

In case you're wondering what the likely content here will be about (besides code), keep in mind that Pat is passionate about the internet, music, politics, comedy, bringing people together, and making a difference. And pancakes.

His ego isn't as bad as you may think. Honest.

Here's more than you ever wanted to know.

Ruby on Rails Projects

Other Sites

Creative Commons Logo All original content on this site is available through a Creative Commons by-nc-sa licence.