Holding Pattern

It’s been an absurd length of time since I’ve written a blog post. For most of the time, that’s because of a combination of both being too busy and also not really doing anything worth writing about, but for the past little while I’ve been reluctant to add new content to this blog as I’m wanting to write my own blog engine and move everything over to that.

I do have stuff I want to write about, like my on-going learning to drive; working at TechCube in Edinburgh; online bullying; a howto on doing generic HA using PaceMaker and DRBD; depression; stuff on the OpenStack box I’m building (cloud-in-a-box!); all sorts of things!

I suspect that waiting until I have time to finish the blog engine is partly an excuse to not sit and write, but there it is.

In the meantime, I Aten’t Dead.

Mid-conference-week notes.

This week is conference week in Edinburgh.

Tuesday saw ScotlandJS, the first JavaScript conference in Scotland and the start of attempts to build JavaScript communities in Scotland. Note that last part, because it’ll be appearing again later.

While JavaScript isn’t my main programming language, it is – like it or not – the language of the web. Peter Cooper’s keynote dredged up a bunch of internet history and reinforced that the history of the web is the history of JavaScript. Tane Piper’s talk on DNode was interesting – distributed processing like that is clearly The Shape Of Things To Come, and so it’s worth keeping an eye on technologies that make it more accessible to hamfisted noobs like me.

What I took away most from ScotlandJS is that you get out of a conference what you put in – and what I put in was a sleep-deprived idiot. I missed the last two talks entirely, and while I had an excellent time and met some great people, I’m pretty sure I could’ve got a lot more out of it than I did. Note this too, ’cause it’ll be important later.

Overall, I’m looking forward to next year’s ScotlandJS, which I suspect will be a lot bigger.

Wednesday was Bootstrapd, an ‘open space’ conference for bootstrappers – people who are doing the ‘tech startup’ thing but without taking investment money. I’ve worked for two startups in the last couple of years, one funded and one not, and while I’m mostly trying to settle into consulting now I definitely have ideas that I want to turn into a business.

I’ve not been to an open space event before, and I found it really good. I’m often reluctant to participate in group discussions, but I had some fantastic discussions at Bootstrapd. At one point a session ended up just being four of us discussing one guy’s issue, which might sound shite, but actually gave me fascinating insight into how a moderately successful business works and the problems they have.

The core focus of the event was how to build a community of bootstrappers. People who take venture capital funding don’t just get money, they also get hooked into a network of highly talented people. If you need a brilliant iOS developer to knock out your company’s new iPhone app, you can turn to your investors for a recommendation and you’ll quickly get back someone who is perfect for the job.

Bootstrapd wanted to see if it’s possible to replicate that network without the funding aspect. There was also an emphasis on community as a source of strength and feedback – people you know you can trust for advice when things are hard, and honest feedback. The metaphor of the day was ‘nobody tells you your baby is ugly and smells of shit’, but perhaps as a distinct community we can make a choice to suspend that rule, and let people get useful accurate feedback without worrying about hurt feelings.

Personally, one of the biggest things I’ve taken away from Bootstrapd was the need to Do Things Now. Reading, and planning, and thinking are all good things, but eventually you reach a point where you need to take action. A repeated message at Bootstrapd was the need to have validated learning (a critical part of the whole ‘learn startup’ thing), and the only way to validate your learning – or ideas – is by implementing them.

Another issue raised was the concept of ‘upgrading yourself’ instead of (or alongside) upgrading your computer. This is basically a reaction against the traditional view of the solitary hacker – working all day, sleeping under your desk for a couple of hours, and eating junk food. Living like that isn’t sustainable and inevitably leads to burn out and failure. I’ve noticed that over the last 18 months of working at home, I’m definitely becoming (even more) unfit, and I think that then gives me less energy to spend on my own projects – and possibly even eventually on the ‘day job’ and daily life.

I need to turn that around, and I need to stop waiting to do it. I need to take more control over my sleeping habits, so that I don’t waste opportunities like ScotlandJS by being half-asleep, for no good reason. I need to get more energy for my personal life and my professional life. I need to stop reading HackerNews and I need to start hacking.

And I need to do it now, because for all my stressing about money, the one resource you can never get more of is time. I’m 32, and I’m staring down the barrel of a reduced life expectancy and death unless I make changes now. I have a limited time to make things and be awesome, and I’ve more-or-less wasted most of it. I cannot afford to keep on the same path.

I have some ideas on how to actually make the changes, but I’ll talk about those after I’ve done them, not before.

Americans should hire remote sysadmins.

Most internet start-ups these days don’t manage their own hardware, unless they’ve got several hundred million dollars in funding and some fairly specialist needs. Pretty much everyone is working just fine on rented virtual machines, dedicated servers, and utility-pricing-model ‘cloud’ services. This doesn’t mean that they don’t need a sysadmin, or ‘ops’ team. However, just because you don’t manage the physical hardware doesn’t mean that the network will somehow manage itself. Unless you tie yourself to an entirely managed platform like Heroku or Google App Engine, you still need to pick an OS, maintain it, and make all the same decisions that operations people have always made.

(And if you are tying yourself to Heroku, fair enough, but you’re going to end up paying for their free customers’ resource utilisation and sysadmin staff costs. PaaS is great if you’re small and probably won’t grow, but long-term it’s a great way to waste money.)

The only difference between the operations role with hardware and the operations role without hardware is that your operations team don’t need to be in the same location, because they’re not responsible for maintaining the hardware. This is where I come in – I reckon that American companies, especially trendy internet start-ups, would do well to hire ops staff from outside America, particularly people based in the UK but outside of London.

I’ll be Terribly Subtle and use myself as an example. I’ve around seven years of Linux server management experience (including actual hardware, like the ancient fossil that I am), and I’ve been using Linux in one way or another since 1999, when it was actually pretty hard to get Linux working on a Mac. (First attempt: SuSE running under VirtualPC, back when it was an x86 emulator and before Microsoft bought it, second attempt: Yellow Dog Linux dual-booting on my B&W G3, that one was actually usable.) I’ve managed hundreds of VMs and physical machines without using configuration management tools, and I’ve managed dozens using configuration management. I know how to scale Ruby applications and how to write Chef recipes. I’ve been in a ‘DevOps’ role, and understand the value of DevOps, especially for small teams. Since you can’t get pagers any more, I have an on-call phone with a week-long battery life instead. I think I’m a fairly typical ops type; I even have a substantial beard.

I also live just outside Edinburgh, and the average Bay Area Unix Sysadmin earns more than twice as much as me. Which is to say, if a Bay Area startup can put up with an eight hour time difference (which can be a benefit as well as an obstacle) they can have an ops person for far less than they think. (Similar maths applies to contracting, so if you want a specialist to roll up and help set up your infrastructure automation it could be cheaper than trying to muddy along without it.)

There’s a stigma attached to ‘outsourcing’ or hiring overseas staff, but I think that in this case at least it’s faulty: this isn’t bulk-purchasing mediocre workers because they’re cheaper, this is targeted hiring of competent and skilled workers because they provide a different set of benefits. There’s no language barrier, and the time zone difference can actually be a benefit for ops staff: what’s ‘out of hours’ to a team based in San Francisco is potentially ‘standard business hours’ to the UK. This gives easier emergency coverage (server implode at 3am PST? No need to wake anyone up, that’s right in the middle of my working day) and allows for less stressful scheduled out of hours work (does anyone really think that those DB migrations at midnight aren’t harder to do than they would be during the day?).

It’s possible to take this beyond just hiring a UK sysadmin. Distributed teams can be more flexible, adaptable, and agile. With a team spread across different countries and continents you can benefit from a range of different viewpoints and can be more aware of different cultural concepts. This can help you avoid traps caused by the entire team operating on the same set of cultural assumptions. Diversity makes for stronger teams and more robust products! But for a company that’s not ready to go ‘fully distributed’, I think that operations staff are a good place to test the waters.

And if that’s convinced you to try it out, why not give me a shout!

Call Out Gouranga And Be Miserable

This was originally written some time before 2003 – probably around 1999/2000, as that’s when I was a student at Strathclyde University and got stopped by the Gouranga cultists every week on my way to and from Glasgow Central train station. A discussion on Twitter reminded me of it, so I thought I’d post it here. It was originally posted on the most horrifically pretentious vanity site I put up around that time, and which is definitely, absolutely, no longer available for the public eye.

Perhaps, like me, you’ve been stopped in George Square and been told to ‘call out Gouranga and be happy’. Perhaps the only time you’ve seen the word Gouranga is in Grand Theft Auto, if this is the case some explanation is in order.

These people that stop you are Hare Krishnas, and “Gouranga” refers to Lord Chaitanya, who is apparently responsible for all Hare Khrisnas, everywhere: “Lord Chaitanya introduced a process that is simply joyful – simply chant Hare Krishna.” I’ll leave as an exercise for the reader what recompense Lord Chaitanya should earn for this delightful bit of service to humanity.

Now obviously most Glaswegians find this highly annoying. When you’re soaked to the skin, your train’s just been canceled and the Tesco Metro didn’t have any boxes of Scott’s Porridge Oats you really don’t need some smartarse in a silly outfit telling you to be happy! But I think that there’s something more important here than simple annoyance. Consider, for a moment, that some poor unsuspecting person actually says this magic word and is suddenly happy. Now I don’t just mean winning a tenner on the lottery happy, or even getting the last parking space in the city happy. I mean deeply profound physical, mental and spiritual happiness, of the kind usually only experienced through the dedicated use of the very highest quality class A drugs. What then?

What happens next? This isn’t a question that the deranged people chanting at you seem to like to consider. You have a moment of pure bliss and joy, and then you turn around and notice that you’re still in the middle of Glasgow, you’re still going to have to run if you want to make your bus home and you’re still up to your arse in rain. That’s going to be one hell of a come-down, but perhaps your new-found joy will let all these minor problems wash over you. Or something. So you get on with your newly joy-filled life, and all will be right with the world, right?

Wrong. You’ll still have to go into your dead-end job every day, until they sack you because that stupidly huge grin on your face made everyone uncomfortable. You’re still going to have to pay your rent every month, unless you think there’s an especially wonderful joy about sleeping in a joyful cardboard box. Perhaps that won’t happen – you could get a silly outfit of your own, and go and live in a commune somewhere, and tell other people to call out Gouranga and be happy!

Sounds great, eh? Of course, you’re still going to be living in shit; wars are still going to happen; millions of children all over the world are going to starve to a slow and painful death; police in various backwards, brutal countries are going to beat people to death on a fairly regular basis; religious fanatics are going to kill people; other religious fanatics are going to kill other people; greedy businessmen are going to ensure that people who worked hard their entire lives have nothing to show for it; mobile phones are still going to ring in cinemas; evil, both great and small, will happily continue grinding the world down until all that’s left is you, sitting in a corner, chanting ‘GOURANGA, GOURANGA, GOURANGA’ over and over. For all the good it does, you might as well be chanting ‘I CAN’T HEAR YOU, I CAN’T HEAR YOU, I CAN’T HEAR YOU’ with your fingers in your ears.

And as if that weren’t a horrific enough thought, consider this: how annoyed do you get when someone pesters you to ‘call out Gouranga and be happy’? Do you snap at the next person you talk to because of it? Perhaps not often, but just every so often, isn’t it enough to just tip an acceptable day into a bad one? Imagine how many people one person saying ‘call out Gouranga and be happy’ can pester in a single hour, let alone a single day. If even a small percentage of those people get annoyed by it, and those people pass on their annoyance, pretty soon you’ve got a wave of irritation and general bad feeling spreading out over the entire city, as it hits train stations and bus stops it jumps out into the suburbs, where the actions of one person in a silly custome causes dozens of people to snap at their children and kick their dogs. Call out Gouranga and be happy? Unlikely. Call out Gouranga and be miserable? I think so. If these people wanted to make the world a happier place the best thing they could do is stay at home, chant their little chants to themselves, and stop pestering a world that doesn’t care about Lord Chaitanya, but does care about getting to the bus station before they’re stranded in the city for another hour.

Hugs are not transitive.

A project that wasn’t on my last from earlier in the week is the idea that was going to go on inappropriatetouching.com, which I registered back in September.

The idea was derived from Paul Wilson‘s idea for a web site to resolve beer debts. You know how you post to Twitter going ‘Argh, Thing X doesn’t work! Can anyone help?’ and then someone saves the day and you say you’ll owe them a beer? Most of the time the person you owe beer to is in some far-off strange place (like America) so actually purchasing them a beer is difficult. But maybe they owe beer to someone who lives near you, and by following the chain of beer-debts you can find someone who you actually can buy a pint for.

It’s a nice idea, and I hope they actually make it some time.

My less nice variant was like that, but for hugs. You may also have noticed how people are unhappy, or something bad happens in their life, and across the internet people send *hugs*. Now, it’s nice to be in someone’s thoughts, and it definitely does help to send people ‘virtual hugs’ like this – it helps to remind people that they’re not alone and that they have friends they can turn to for support. So why not do the same thing, to enable actual physical human contact, to trade ‘owed’ hugs?

Because unlike beer, hugs are not transitive. A beer from one person tastes as good as a beer from someone else, but close personal contact isn’t the same at all. I personally dislike hugs from people other than my wife, even if they’re close friends, and even less twitchy people are unlikely to want hugs off total randoms.

It would, in fact, be inappropriate touching.

Projects

I guess like many a geek, I’ve a laundry list of half-started or only-exists-in-my-head projects. Every year I decide I’m going to work on them more, and then I don’t really. (See: last year, the year before that, and the year before THAT.)

So, in keeping with tradition I’m going to come up with another way to get me working on these maybe-cool-ideas I have. Maybe I’ll even break with tradition and stick with it. Who knows?

This year’s half-arsed attempt at personal productivity will come from the combination of the schedule I tried to stick to a couple of months ago (and will be reinstating after the holidays) and focussing on a single project.

But what project to pick? I’ve a handful of different ideas that I’ve either started on or been pondering for a while. In no particular order:

  1. A cat-based social networking website. No, seriously. It’s a bit more niche an idea than Catster, and I’ve got an existing proof of concept in the form of a LiveJournal community. The actual trick here isn’t the site per se, it’s that I want to build it as an example of a highly-resilient web application which should be able to scale automatically and have a worst case (ie, losing an entire data centre/Amazon Region) MTTR that’s limited mainly by DNS TTLs.

    This project is rated ‘very hard’.

  2. Version 2 of fatfuckingbastard.com. The major work with the ‘business logic’ has already been done, so the interesting part of this is that it’s going to use SQLite for storage and needs to be able to scale to many people viewing it at once. My plan for that is to cache objects, possibly JSON objects, in Redis.

    This project is rated ‘moderate’.

  3. An iPhone app based on the idea I tweeted here. This would involve learning ObjectiveC, which I’ve never really used before. Historically I’ve not had much success with statically-typed languages. It’s also involve some machine vision stuff, although there’s libraries available to help with that stuff.

    This project is rated ‘very hard’.

  4. An implementation of a TinyMUSH-like game in Ruby, with the in-game language being derived from Ruby and Redis for the datastore. (TinyMUSH used GDBM, which is a simple key/value store, I reckon Redis’ additional object types might be useful here). This is a pretty big undertaking, not least because my lack of traditional CompSci background means I’ve never written a parser before (and even if the built-in language is derived from Ruby it’d still need a full parser since you can’t just eval() user input and not expect to have problems). There’s also the minor issue of writing a stable multi-user server.

    I’d probably develop this one as open source, so at least once it gets to a certain level of development I can maybe find other people who look back on telnet-based services with the same nostalgia I do.

    This project is rated ‘really fucking hard’.

I think all four are good projects in their own right, plus offer a good learning opportunity even if the core idea turns out to be rubbish.

So starting from next week which should I be hacking on in the evenings? Let me know what you think of these four ideas in comments to this post, or by sending me a tweet!

Fat Fucking Fail

This last weekend I assembled the exercise bike and actually started to use it and record data on fatfuckingbastard.com. After settling in to using it every day, today – the fifth day of using it – the thing went ‘clunk’ and stopped feeding data to the ‘trip computer’. Annoyingly it did this at four minutes and 25 seconds, and since today’s minimum time was five minutes I got a zero score.

While the bike itself still appears to work as a bike, without being able to record distanced travelled my plan for encouraging myself to keep going is pretty much fucked. I’m pretty scunnered about this, and my options aren’t great either. I doubt I could take it back to Argos, given that I’m substantially heavier than the bike is rated for and that could be the direct cause of it breaking. I don’t fancy my chances of keeping it up every day without some scoring/tracking mechanism, and with the heart rate monitor I bought being hilariously unreliable (to the point of claiming that my heart rate was zero) – and heart rate numbers not being great for calculating a score from anyway – the only metric I can really measure is time spent, and that’s not really enough.

I don’t really want to buy another bike. Yeah, I got 1/3 off this one, so it only cost £33, but if I replace it at normal price I can expect to pay £10 a day if it lasts as long as this one did. That’s just stupid. I could get a bike that’s actually designed for my weight. John Lewis will sell me one that’s rated for near enough for around £300, which seems like a lot of money to spend on a bike that doesn’t go anywhere. (They have one that’s actually rated for above my weight. It’s described as a ‘basic’ model and costs £900 – or more than the fee for my wife’s citizenship application. Madness.)

I could try taking the thing apart and see if I can fix it myself. As a child I always loved taking things apart, and that still lingers on as an adult – but I can’t imagine that I’d have much luck getting it working and there’s a fair chance of destroying the basic cycling functionality which does still actually work.

What to do? Suggestions from the audience are welcome.

Fat Fucking Bastard

If you’ve met me, you might’ve noticed that I’m a massive fat cunt. This has been the case for all of my life, and I’m mostly happy with it. It keeps me warm in winter and if I fall overboard on a boat I’ll float.

What I’m so not happy about is my level of fitness. While I’ve never been what you’d call ‘sporty’, working from home this year has absolutely destroyed what little fitness I had. It’s amazing what difference the small amount of exercise I was getting during my commute must’ve been making. A year ago I could make it from my house to the train station in five minutes – albeit exhausted when I get there. Now it takes ten minutes, and I’m just as exhausted.

This is shit, and so I’ve decided to do something about it. Going out for a run/jog might seem like a good plan, but it’d be like beating my knees with hammers. I weigh around 150 KG, my old bones can’t handle me stomping around like an elephant. I suppose I could go for a walk, but I live in Inverkeithing and there’s fuck all here, plus I don’t fancy playing ‘dodge the ned’.

The other week I bought an exercise bike and a heart-rate monitor with the plan of using them to get some exercise, and also record my progress. Since I’m a proper geek I’ve decided to calculate a score and write a wee Rails app to record it and display a pretty graph.

The site is Fat Fucking Bastard, and I’ll summarise from there how the scoring works.

My goal is to reward improving fitness, which I’m defining as being able to exercise with a high heart rate for an increasing length of time. The score is comprised of two elements: a minimum length of time I need to keep my heart rate up for and the ‘distance’ travelled on the exercise bike. If I don’t meet the minimum length of time then my score for that session is ’0′, otherwise I multiply the time in minutes by the distance in metres.

I picked those factors to encourage me to exercise for longer or harder (distance) and to keep increasing the minimum duration (the system calculates when it should be increased based on my actual times) so that I’m presented with a non-trivial – but still achievable – challenge.

In time I want to add a Twitter integration so I can spam my friends – and get them to harass me when I don’t exercise – but what I’ve got right now is enough to start gather data and drawing the graph.

Well, it will be once the bike is taken out of its box. That’s planned for tomorrow, so if that graph doesn’t start updating in the next few days, feel free to harass me on Twitter.

Awesome New Job

After a pleasingly brief period of unemployment (where I mostly applied for jobs online and watched The West Wing), I’ve managed to land myself a job with PickLive, who are doing cool and interesting things with live event pool betting.

They’ve even announced it on their blog, which is kinda cool.

I’m going to be doing Ruby dev and sysadmin stuff, which is pretty much exactly what I want out of a job right now. I’ve not met the team yet, but so far I get the impression that their main concern might be my lack of sports enthusiasm. I don’t think it’ll be a problem, though, since I’m going to see if I can convince them to do pool betting on Doctor Who. (How many times will Rory die in the autumn half season? Place your bets, please…)

Picky Eater: revisited

Last year I decided to do something about being such a picky eater. What I did was drink orange juice.

And it worked, I no longer dislike orange juice, and will tend to grab a bottle of it to drink with my breakfast when I’m out and about. At this year’s Ruby Conference I even tried the sandwiches and while I couldn’t actually eat anything, the previous year I hadn’t even tried.

Being a picky eater is a huge chore. It gets in the way and is annoying. I need to do more to fix it – orange juice is all well and good, but it’s not making a huge impact in my life.

I’m not sure what the next step is, but I think since now’s a professional transition point it’s a good time to look at this kind of change too. I’m going to think about it over the weekend and decide how to expand my diet from next week – and if any of you people out there on the internet have any suggestions, I’d really appreciate hearing them.