Here are the 10 latest blog entries. Enjoy!

#

Thu Jun 10 21:54:00 +0000 2010

Ralph Three, He Is Is Here

all right
%um
this is exciting for me because 
%uh 
I've been talking about
ralph three
for a long time and %uh
last year and I think even 
before that 
%uh
we were talking a lot 
about all the plans
we have peremptory all the 
wonderful things that 
we wanted to do
but it always feels kind of
%uh
hollow
to be talking about future Co
it is much more interesting in 
my mind too talk about
excess think about 
which is why today highs 
along with special
because
ralph three
he is is here

(turn on CC w/ translated audio)

#

Sun May 30 10:02:29 +0000 2010

Weeknotes - 1670

Ah, and what a week it's been. Actually, I've no idea yet, as I started writing this (this, this here) on Monday. It's sunny!

More office fun

We've looked at taking some desk space in Moo's office, although on Wednesday we found out that we might be able to move into our own space later in the summer. There's been quite a bit of to-ing and fro-ing, dealt with mostly by Kalv, but hopefully everything will work out nicely.

Doxie

In my quest to avoid clutter, I bought a document scanner. I'm pretty pleased with it so far, though I've only had it for a day. It's fast, simple, and very compact.

Due to a family/birthday mixup, I might end up with a spare one. If you're interested in taking it off my hands, get in touch.

Projects

Some of FreeRange went up to Birmingham to visit Mudlark, with whom we're building Chromaroma. It was a two day workshop, with lots of brainstorming prior to starting our next round of development, codename "Aldgate". Overall I think it was a very useful two days; despite feeling talked-out towards the end of our time, everyone managed to contribute constructively. I'm looking forward to replacing the talking with building.

There's also some very positive noise surrounding the future of hashblue; hopefully I'll have more to say about that next week.

EuRuKo

I'm at EuRuKo this weekend, but rather than taking any notes, you can read some good EuRuKo notes courtesy of Markus Prinz here (update: day 2 as well).

I'm still not sure if conferences work very well for me in terms of learning, or indeed socialising, but I suspect that's something to do with how I approach conferences, and not exclusively a problem of the format.

Hmm. These posts need some embedded movies and pictures. Perhaps I'll do that in week 1671.

#

Sun May 23 20:28:29 +0000 2010

Weeknotes - 1669

It was my birthday this weekend, so I didn't get much time to write anything up, but here goes:

  • Our office space fell through, but we have some other options that we're following up;
  • We're starting to look more earnestly into proper co-operative legal structures
  • The weather has been far too nice to be working so much!

That's all for now. I'm going try and write up 1670 as the week goes, so that I don't end up with such a crappy post next time.

#

Sun May 16 10:44:00 +0000 2010

Weeknotes - 1668

See, I told you I wouldn't forget.

This week has been a bit of a breather; a chance to clear the decks and take care of any loose ends, before FreeRange ramps up again it it's more streamlined form. As was mentioned when looking at some space in the same building as RIG and BERG:

If we're an F-14, then this is the point when we are sweeping our wings back.

Also, I'm happy to see that I'm beating RIG in terms of weeknote consistency, despite the 1666 hiccup. Bazinga.

Office space

One outcome of the conversations I mentioned last week is that we (FreeRange) are going to place more of an emphasis on co-location than we have up to now. We've started looking for an office. In the interim we'll still be using each other's flats, but this week we spent a couple of days poking into various spaces around London.

We looked at a variety of different types of office, from serviced office complexes to bare ex-warehouse space. It's not easy finding the best tradeoff between a space that we can make our own, whilst not requiring huge security deposits and becoming tied into long agreements with utilities and so on.

It's possible that we discover an office isn't important, or that it becomes unnecessary after some time, and it would be a pain to have to service that overhead for any longer than necessary. Equally, it's possible that we might discover it's absolutely essential, and further that we might want a space that we can properly make our own. At that point, we'll be in a better position to jump through all hoops that come with office tenancy, but not yet.

We have found somewhere which fits our current requirements very well, but nothing is confirmed yet so I'll keep schtum about it for the moment.

FreeRange internals

We're on track to start our new phase of FreeRange on Monday. I keep wanted to call it FreeRange 2.0 or something like that, but have always managed to resist. Except just then. Dammit.

We suffered the effects of ambiguity again towards the end of the week, culminating in a somewhat tortuous conversation with the couple of members of FreeRange who aren't signing up as part of the fully-engaged team.

I won't go into too much detail here; I shouldn't be surprised about these things any more, but it just goes to show that it's quite possible (even likely) for people to leave the same conversation with quite different understandings of what the outcomes are.

Even more than that, I'm surprised that it's so common to sit back and wait to be prompted for a reaction, rather than think through consequences and then explicitly state a position and what you plan to do. This is obviously just my perspective, but it goes to show that it's important everyone is on the same page if you're going to be effective at making decisions as a group.

I'm hoping our accountants will demonstrate that they are worth the money they cost by helping us out with some awkward questions around missing transactions and VAT filings. What fun it is to service the accounting requirements of a limited company.

Hashblue

We met with O2 to discuss hashblue at the start of the week, and are ready to pick up development again. Hashblue has been an interesting project because we're trying to help demonstrate that an agile style of development can be more successful than the more monolithic approaches normally used by large organisations. A significant part of this is engaging the users of the software as we build, rather than only at the very start or the very end of the project.

As we approach the end of the initial budget, our focus is definitely going to be the issues brought up by the community who are using the software, along with any novel features which can be used to get insight about what O2's customers really want.

That's probably all for this week. I realise a lot of this is FreeRange-focussed, and I'm not sure if that's a good thing or not. Perhaps week 1669 will be different!

#

Sun May 09 15:30:00 +0000 2010

Weeknotes - 1667

I skipped a week, but in my defence it was the week of the devil - week 1666. Here we are safely on the other side, and while the government might be in chaos, the waters are calm here at interblah mansion.

#Blue & Warblecamp

We've wrapped up the initial phase of development on hashblue, and are taking a little pause for breath before we pick up for phase two. One of the really nice things to come out of this work is the API, which we were able to provide at last weekend's warblecamp. There were a couple of great hacks build using it, but I'm still hankering for a menu-bar notifier. If time allows I might use that as an excuse to get up to speed with Mac OS X development using macruby.

I got my first actual grope of an iPad at Warblecamp. It's definitely a desirable device, but I'm not sure I want to add yet another gadget to my menagerie quite yet. I can't overstate how grubby the screen looks when it's turn off and all of the fingerprints are revealed, but once the backlight is on, you don't see them at all.

Chromaroma

I'm also pleased to say that we're going to pick up development on Chromaroma again in May. I'm excited to start getting other members of FreeRange involved, which should be much easier in the future (see below).

I've personally enjoyed working on this project, not just because it's quite different from typical client work, and nor because Mudlark are great clients to have, but because it's a fun development problem, even in the abstract. Plus, who wouldn't enjoy building a game?

FreeRange internals

After more than eight hours of internal discussion, both between myself and my co-founder, and with the rest of FreeRange, it's likely that we're going to be shaking things up a little internally. While some of the original goals of FreeRange were doubtlessly laudable - lots of flexibility, very low commitment internally - the last six to twelve months have left several of us wondering about whether or not this flexibility was actually delivering freedom, or just an illusion of freedom.

As my colleague Jason put it:

I've realised that my original idea of allowing ideas to evolve, and prefer an organic approach is actually aversion and delusion of what I perceived to be freedom. I now know that discipline and defined action, which followed through daily is the best way I have found to cultivate freedom and happiness.

By trying to build in lots of flexibility, our organisation may have become a bit too loose. We haven't completely figured out our new form, but it's certainly that we're tightening up, and I'm excited about the momentum that should bring.

Onwards and upwards. See you back here for week 1668. I promise I won't forget.

#

Sun Apr 25 15:30:00 +0000 2010

Weeknotes - 1665

Despite the intention, it's lucky that I didn't officially sign up for project 52, because I'm failing hard at it. Anyway, a bunch of folks have been doing or talking about 'weeknotes', and so I thought I'd take the opportunity to jump on that bandwagon. Lets start by calculating the week of my life so far: week 1665.

#Blue

This week I've been working almost exclusively on #blue, which is an application FreeRange is building on for O2. It exists for a number of reasons, but you can think of it as a 'reimagining' of their Bluebook service, using modern technologies and 'agile' development techniques. There's been some mild frustration as we've tried to integrate one of the final pieces of the account confirmation process, so unfortunately we still can't send out proper beta invites yet.

Tripping over a Milestone

One interesting aspect of this week was our removal of a milestone. We had originally set a date by which we wanted to start inviting beta testers, and scoured our story backlog and icebox for anything that might represent a blocker to achieving that. Any new features were pushed below the milestone, to keep our focus up.

Eventually, only one major story remained, blocked by external processes that we couldn't control (see above), so we found ourselves in the strange position where there were no more significant stories above the milestone. We started to ask "what should I work on" more frequently. We started, I think, to lose a bit of momentum.

The solution was obvious, in retrospect: get rid of the milestone. It was acting as a dam, stopping us from continuing to add value to the project in different ways while we were blocked. Once we did that, our relationship to the stories that had been pushed below the milestone changed; while we're still spending a great deal of time trying to unblock the story that lies between us and beta testers, we have our momentum back.

REWORK

I finished reading REWORK at the weekend, and while it was principally aimed at businesses building and marketting a product, there were nine or ten chapters in particular that resonated with my own feelings about working effectively as a group. I've made some notes in Google Wave, which I may or may not share, but it was a useful exercise in clarifying my own thinking about how teams operate.

Meetings, and feeling like a team

We have been trying to have weekly 'meetings' with everyone involved in FreeRange since before the start of the year, but in week 1664 - last week - we decided (well, I suggested) we should halt them in favour of more ad-hoc conversations.

In any business-like context, having a meeting has a special meaning for me - it's time spent directed at achieving some specific and clearly-defined thing. Meetings should be measurable in terms of effectivity. If you're shooting the shit, you're not having a meeting, you're doing something else - and that might be perfectly valid, but it's not focussed on achieving anything specific.

The meetings we were having had become formulaic and chore-like, so it felt appropriate to change the tone of those conversations. I'm hoping that the others involved will actively try to instigate and participate in these ad-hoc discussions, but only time will tell.

This comes back to one of the underlying themes in my thinking over the past few months, being the balance between structured vs. free-form, chaotic interaction; someone at SRC last month suggested it was like communism vs. anarchism, and perhaps they are right.

Co-locating (and feeling like a team)

Recently I've become more and more convinced that some amount of co-location is important in making an endeavour like FreeRange work. Originally I was quite adamant that "no office will be required and we can all work remotely", but I suspect now that I was conflating a few different things in that statement.

In a nutshell, there's a difference between accepting the overheads that an office brings with it, and just doing work in the same space. The latter doesn't require the former - we can work together in any number of non-office spaces, in someone's home, or a suitable cafe or a co-working space (like The Hub).

And don't get me wrong, some amount of independent time is still important, and I have no strong desire to work to any kind of office hours, but I think the discipline that semi-regular co-location brings is a useful force in keeping everyone pointed in the same direction.

Even my thinking about renting office space has started to shift. A shared space is an easy way for a group of people to start establishing their shared identity. Think about it like a bedroom - when you are growing up, and starting to define your own identity, the first place this is expressed is in how you arrange your space. You chose the posters on the wall, and the niknaks on the shelves to help reinforce the kind of person you are aiming at being.

An office can work in exactly the same way. In many cases I am sure that it doesn't, and that offices are soul-sucking bland canvases, arranged so inoffensively as to become offensive by reaction. But the potential is there. Anyway, one thing I've discovered doing FreeRange is that it's hard to build this shared sense of identity. I am thinking a lot about this these days.

Of course, I may change my mind completely during week 1666, but that's the beauty of it.

#

Fri Jan 01 16:16:00 +0000 2010

Thoughtbot Ruby Survey 2009

I wasn't hugely into the Thoughtbot 2009 Survey, because (and as they noted), the questions were very poorly constructed:

There are questions that are too narrow or too broad. There are questions that are missing options. There are questions that assume too much about an “either/or” scenario, when people really behave differently depending on context. There are questions which insult people’s core beliefs, I guess. Fortunately for all of us, the results of this survey aren’t being used to decide anything too important.

However, I'm still not sure they get it:

Maybe most encouragingly, when asked about whether the types of questions in the survey mattered or were a huge waste of time, nearly 90% chose the “I think it’s worth caring about your craft, and these questions are professionally relevant” option.

Here are the choices people were given in the survey:

  1. I think it's worth caring about your craft, and these questions are professionally relevant.
  2. This is a huge waste of time, you guys are a bunch of psychos, just get back to coding.
  3. It sure is, and I'm not capable of or willing to work on a team with anyone who disagrees with my correct answers.

Obviously people want to agree with

I think it's worth caring about your craft

but in doing so, we are also saddled with agreement to

these questions are professionally relevant

The fact that lots of people did choose answer one unfortunately doesn't support whether or not the questions were a "huge waste of time" or not. Any to be fair, even if the questions are relevant, the available answers were not. This means that any data derived from this survey is fundamentally worthless. It's a shame, really, but that's the truth of it.

I'm not taking this seriously - it would be crazy to, naturally, and clearly it's been composed with humour and good intentions. That said I can't help feeling it's a bad omen. Despite it's lack of rigor, we are presented with some conclusions - for example:

A solid 75% of people always use parentheses on method definition — maybe enough to justify criticizing people who don’t?

There is value in consistency, and this does apply to a community's behaviours as well as those of a team, or indeed of an individual, but consistency is only secondary to consideration. Blindly criticising behaviour because it doesn't match a poorly-derived norm feels sufficiently similar to our earlier readiness to declare things as evil without much research or understanding to make me take notice.

The most important sentence in this whole thing is

the results of this survey aren’t being used to decide anything too important.

Lets make sure that's true. Trying to define best practices using only the results of the Thoughtbot 2009 Survey would be a sad step back in the direction of cargo-culting.

If the Ruby community is trying to more clearly define itself and reach an adulthood of sorts, perhaps we should stop paying attention to these effectively-meaningless yes-me-too manifestos and start actually changing the way real people experience our work.

#

Thu Sep 10 13:57:03 +0000 2009

Wake Remote Machine Automator Action

I've whipped up a nice Automator action for waking a remote machine, which works great with the new 'wake over wireless lan' feature in Snow Leopard.

While you need an Airport-type router to get the most of the feature, there's nothing stopping you sending the magical 'wake up' signal from any other computer.

Here's a screenshot of how you might want to try and use it in a workflow:

One possible workflow

Download the Wake Machine action here, and the source is on github.

It may only work if you are on the same network, depending on how you are set up, but regardless, it's great to be able to wake up my Mac mini from my laptop, automatically, and whenever I want.

#

Mon Sep 07 20:28:29 +0000 2009

FreeAgent Widget Update

(another update: please grab FreeAgent Widget 1.3.2 here.)

FreeAgent Timesheets Widget

The most notable new feature is that it will preserve unposted time across restarts (or crashes), so if you restart while working, you won't lose track of how long you've been working for. Honestly, this has bitten me so many times.

See the original announcement for more details, and the source is always available on github. As before, if you have any problems, get in touch via github issues.

Also please note that you'll need API access turned on; for more details see the recent post on FreeAgent Central.

#

Fri Aug 21 14:20:20 +0000 2009

Gratitude

A slide from the first Ruby conference I spoke at. I had emailed Why to ask permission to use his Foxes, which he graciously did.

My only actual connection with Why was through this slide, from my Canada on Rails presentation many years ago. I had emailed him to ask permission to use the Foxes, and he naturally obliged.

I got to meet Why briefly in Chicago, where I said thanks in person for letting me use the image, and that his (poignant) guide to Ruby had been the red pill that got me hooked on Ruby. I can remember reading it, whilst learning to use Ruby in my PhD research, and allowing his contagious enthusiasm soak my mind, often spilling over, on which occasions I'd be compelled to email my friends to rave about how sweet being able to write code like

10.times { |i| puts i }

Ruby is much bigger now, of course, than then. We can pay the bills with it, and quite seriously talk about 'productivity gains' and 'test first' and so on. But it's easy to forget that simpler time, when really everything was on ruby-talk, and people were really just exploring the delights, the quirks, and the elegance of this great language that we'd all stumbled across in the wilds of comp.lang.

I finished my PhD not knowing if I'd be able to get a job using Ruby, but knowing that I really didn't want to program in anything else, after the delight that I'd found. And I'm glad that I stuck by that.

I owe Why a beer. No, many beers.

10000.times { me.buy_beer_for(Why) }