benjamin alexander smith

Hacking the Hacker Lifecycle

Hackers, designers, students, wantrepreneurs and a myriad of other kindred spirits wrote a ton of comments, emails and tweets in response to my article a few weeks ago describing the hacker lifecycle. It took me by surprise. Until then, I’d thought that perhaps I was the only nerd stuck in this recurring loop.

Everybody else seems make things happen, ship code, and get things done. But somehow my self-centred lament turned into something more interesting – a sort of manifesto for people like us who strive to build something better but often lose focus after a few months.

So far, so good: I identified a pattern that many of us can identify with. I learned that there are a lot of people out there who want to change their current cycle to get as much benefit out of their efforts as possible. But what good is all the self-reflection unless we know how to hack the hacker lifecycle?

The answer came from one of those time-honoured and well-respected sources of wisdom that we too often overlook: a chat with my mum.

Like father, like son

I called my mum earlier this week to catch up, and she said she’d seen my blog post. Her first reaction had been “like father, like son”.

This took me completely by surprise. When I sit in front of the laptop coding, learning or messing around online he’ll be working, doing some of his DIY projects around the house, or enjoying himself outside.

But of course, that’s exactly it. “His DIY projects.”

My dad has been an avid fan of home improvement since he and my mum bought their first house together. Over the years my dad has wallpapered or painted hundreds of walls, hung doors, fitted windows, landscaped gardens, installed a swimming pool in the back garden, filled it back in again, constructed extensions, laid patio decking, built summer houses, converted garages, knocked down walls, and… Well, you get the idea.

His DIY projects are the equivalent of my coding projects, only more impressive (and way more labour intensive). But my mum had immediately spotted that that just like us, my dad goes through a cycle:

  1. He starts a project and throws himself into it.
  2. He gets bored after a while and stops working on it even though it’s not quite finished.
  3. He gets distracted by a ton of other projects, all of which he immediately wants to do instead.
  4. He eventually gets fed up and doesn’t touch any of them for months.

Sounds familiar.

So I got thinking: what can I learn from my dad’s behaviour? How can I use his experiences to hack my own lifecycle?

Recognise success

Initially, I worried. If my dad hasn’t managed to break the cycle after all these years, how can I?

But thinking back to my original article, breaking the cycle wasn’t the point. Getting the most benefit from the cycle and improving my outcomes – that was what I had in mind. So what do my dad’s outcomes look like, how do his cycles compare to mine, and what can he teach me?

My mum will often joke that my dad “never finishes anything”. But really she is doing just that – joking. When I think about all the things my dad has done, the list is astonishing. He’s built so much, and virtually every project I can think of was finished in the end.

For a DIY enthusiast, a good measure of this might be how people react to your home. And for my parents, the reaction is universal acclaim. They have a wonderful home with some great interior design and some really fantastic decoration. Everyone who visits their house compliments it.

It turns out my dad’s project completion rate is really high, and I think I know why.

You see, his projects aren’t solo. He does a lot of work, but there’s another half to the dynamic DIY duo that transform my childhood home on an almost yearly basis: my mum.

My mum handles the design and aesthetics. When a room is being transformed, my mum will know how she wants it to look. And once the heavy lifting has been completed, she’ll be the one adding finishing touches to the room that really complete the feel of the place.

In many ways, most of my dad’s DIY projects are kick-started or conceived by my mum, and many of them aren’t finished until my mum has lovingly added her contributions at the end. And throughout it all, my dad has the support (and pressure) of my mum to spur him on.

And actually, that tells us everything we need to know.

Co-founder required?

For those caught in the hacker lifecycle, it’s not enough to embark on projects alone. You’ll get off-track too easily. Instead, you need a partner. You need somebody who:

  • will hold on to that long-term vision over a longer-term than you.
  • will rely on you to complete your hard work so they can start on theirs.
  • will keep you focused on the task at hand.
  • will bring their own skills to the table (and learn new ones as required).
  • will provide critical feedback and input to reinforce the value of what you’re doing.
  • will care about the project just as much as you do.

You need a patient, skilled (or quick learning), passionate buddy with a common set of interests, a similar amount of free time, and with whom you get on with like a house of fire. You need a new best friend.

In startup parlance, you need a co-founder. Somebody to help you make something greater than the sum of its parts. And in turn, you will provide many of the same benefits to them.

Harder said than done, perhaps.

Are you out there?

The right person does exist, of course. Have you been on the Internet? If so many hundreds of people can identify with a self-centred blog post about my motiviational ebb and flow, you can be damn sure that your perfect co-founder exists too.

Consider this a call to action. Every one of us should start looking for co-founders. Here’s my pitch:

I’m looking for technical, fast-learning, enthusiastic hackers in Oxfordshire or London to buddy up with me and make something happen. To begin with, I’d just like to buy you an overpriced pint. If we get along, let’s build something small in our spare time over a few weeks. And if we work well together, perhaps we can make something bigger.

I don’t want to limit my audience, so it doesn’t matter whether you’re a drop-out, a student, a full-time office worker, one of my co-workers, or you’re already one of my best friends. If you’re ready to hack the hacker lifecycle, get in touch. Let’s make something.

Sundial, Github and Open Source

Sundial is an international telephone number to timezone converter. Give it any telephone number qualified with the relevant international country code, or give it an unqualified US telephone number, and it will tell you the local time and timezone at the other end.

Sundial was first released in 2011 as a PHP hack to solve a common problem at work: “What’s the local time for this American guy I want to call?”

More recently I’ve added full support for international numbers. Again, I was just scratching my own itch: I’ve more frequently been calling clients all over the world. My timezone problem has been getting far worse.

This year, I rebuilt Sundial as a Sinatra application using Ruby and made it freely available as an open source project under the MIT licence on Github.

Now that I’m part of the open source community, what did I do when it came to add international support? Did I just go ahead and build all the functionality and gather all the relevant data myself? Hell no. I searched Github to see whether anybody else had already solved the problem.

It turns out that the answer was no. But several projects had produced libraries to parse international phone numbers, and one of them (phonie) had a Ruby gem that enabled me to easily pull out the international country code for any given telephone number. From there, I could use another Ruby gem, TZInfo, to get a local timezone and time.

Through the magic of open source, I could add support for international phone numbers to my app with very little effort. And better yet, it also gave me a chance to give back to the community.

A few guys at work started to use Sundial and quickly spotted that it didn’t support Mauritian or Korean telephone numbers. But thanks to the wonders of Github and the generousity of the guys who open sourced their parsing code, I could do something about it.

I spent half an hour researching Mauritian and Korean phone number formats, wrote a few tests, then wrote a little code. And now my contribution has added Mauritius and Korea telephone number support to phonie!

What goes around comes around. Only a day or two later, a kind soul raised an issue on Github to point out that Sundial would return 404 responses on particular inputs. I was able to add some new tests to cover the unexpected input, fix the issue quickly and easily, push the new code to Heroku, and voilà! The world is a better place.

Releasing software to the community as an open source project is a great experience. Giving something back is fantastic, however small my contribution, and being able to participate in the back-and-forth of issues and pull requests has already been highly educational.

If you’ve got a project on your hard drive that might be of interested to even one other person, consider making it available to the world. And if you do, tweet me a link or drop me an email - I’d love to take a look.

The Hacker Lifecycle

In general I’m a very motivated person. But during my free time, my motivation is cyclical – it waxes and wanes over the course of 9-12 months. I’ve started to think of this as the hacker lifecycle.

For the last 2-3 months of the cycle, I am content to spend my free time playing video games, catching up on the few good shows on television, and reading fiction. But for the other 7-10 months of my motivational cycle, I spend the every second of my spare time being trying to achieve something. I learn voraciously, I practice my new skills, I build, I create, I hack. I try to do something productive with my time. I am a doer.

When I look at my habits with hindsight, it is clear to me that I’ve spent the last five years in a repeating patten of continuing education. But I’ve subconsciously settled into a cycle that is rather different to the typical term structures found in British universities. Instead, my cycle has four phases, each of which last 2-3 months:

  1. Focussed efforts towards a life goal
  2. Structured self-education
  3. Side projects to practice new skills
  4. Burnout and rest

This motivational cycle has dominated my personal life for a long time now, and I feel sure that I can’t be alone in experiencing this pattern.

It’s time to think a little more deeply about the cycle and what can be done either to gain more benefit from it or break free of it altogether.

Phase 1: Focussed efforts towards a life goal

The productive periods of my life often start with a strong desire to change something about my life. It was during my first year of university early in 2006 that I first set a series of long-term goals for myself. Although I’ve achieved a good number of them, one or two remain elusive. Those goals still form the focus of my motivation, even 7 years after I first wrote them down. One of the most important is financial independence – I want my day job to be a lifestyle choice, not a requirement.

As my motivation waxes at the beginning of a cycle, I find myself with a craving to take steps towards that goal. I do so by starting a project which focuses on one thing only: building a new income stream. As a result of this single-mindedness, the content or subject of the project is often less interesting than it otherwise might have been.

If I’m honest, during these projects I find myself working on things that I am not even remotely interested in just to make it easier to build income. Naturally this has an impact on the longevity of the project; the lack of intellectual stimulation means that I find myself losing interest after 2-3 months. My work rate dwindles. The first phase of my motivational cycle ends.

By this point I have usually got far enough into my project that I have learnt some useful lessons about the reality of making money online. What’s more, the project is usually bringing in some some extra income too.

Most of the projects I work on during this phase still provide me with pocket money today. Unfortunately, the short time spent on each project due to a lack of interest means that the magnitude of the income is far lower than I had hoped for – and realistically, lower than could have been achieved with persistent effort.

Phase 2: Structured self-education

Having ceased work on the passive income project from phase 1, I find myself keen to be productive but hungry for intellectual stimulation. At this point, I almost always decide to teach myself a new technical skill or pick up some new technology. Earlier this year, I enrolled and completed a Coursera course (Dan Grossman’s wonderful Programming Languages module) and learnt all about functional programming concepts via SML and Racket. A few cycles ago when I was less familiar with modern web technologies, I took the Javascript course on Codecademy and ran through Michael Hart’s wonderful Ruby on Rails Tutorial.

This is usually the most satisfying period of my cycle. I am learning a new skill or technology which I know will enhance my employability, allow me to build things I previously could only have daydreamed about, and will ultimately be useful for many years to come. The period only comes to an end as I finish the course or set of tutorials I’ve been working through and find myself desperate to practice the skills I’ve been acquiring.

Phase 3: Side projects

These courses and tutorials are almost inevitably followed by phase 3 of the cycle: practicing what I’ve learnt. At this point, I build something that scratches my own itch (like Sundial or oh!vents, or I build something that seems like fun (like Grokily).

This phase provides a lot of great experience from practicing a new skill and (sometimes) shipping code. It’s always great fun, but after a few months of this, a voice in the back of my head starts to pipe up. Why are you working so hard on this project when it doesn’t bring you any closer to your goal of financial independence?

I find myself questioning the value of the project. Where’s the money? What’s the business model? How can we take this beyond a toy and into the marketplace? And so after a few iterations of fun development, I let the goal-focussed part of my personality bully my creative self back towards business.

And at last, after 6-9 months of hard work in every spare second of free time, I find myself burning out. I want to push back towards revenue-generation, projects that have a viable business plan attached. Thinking them up isn’t the problem. The problem is the timescale attached. Having worked for so many months without much significant relaxation or downtime, I find myself unable to commit to a new project with a 12 month lead-time. And so, at last, the motivated phases of my cycle are over.

Phase 4: Burnout and rest

At this point I find myself unwilling to embark on a new project that doesn’t excite me (phase 1), unable to teach myself another new set of skills without feeling like I should be working towards my life goals instead (phase 2), and unable to commit to a new viable business project with a long timeline (phase 3). My options are all boring or guilt-ridden, and so – trapped in a snare of my own devising – I submit to the siren call of escapism and dive into video games and TV.

In many ways, I’ll spend this period as ferociously devoted to my leisure activities as I was to my productive tasks. I’ll sink deep into a complex RTS, obsessively challenge myself to beat harder difficulties on FPS games, or watch full seasons of TV shows in mere weeks.

But after a few months of this, I start to feel an itch. I should be achieving something. I want more than this. And so the cycle begins anew…

Breaking the cycle

Over time I’ve come to understand this cycle and accept it for what it is. But now that I can hear the rhythms controlling my free time, should I try to change them? Should I break the cycle that traps me?

In many ways, I’m happy with this state of affairs. Each cycle I emerge with some concrete benefits:

  1. I have a new passive income stream (albeit minor)
  2. I have experience of a new skill or technology
  3. I have another project to demonstrate my competencies
  4. I have a better understanding of what motivates me

These are all great, and I’m genuinely pleased that I can look back on the last 8 years of my life and see that I spent majority of my free time productively. What’s more, I really do believe that my continuing education enables me to make many small steps towards my life goals.

But could I have spent that productive time more wisely? Could my small steps have been great strides?

Arguably, I need to temper myself as I drive back into phase 1 of a new cycle. If I can be patient and embark on a longer-term and more interesting project rather than a boring one that will earn me a quick buck, maybe I can avoid the internal conflict that ultimately leads to my burnout.

Is it just me?

Overall, I’m not unhappy with the hacker lifecycle that has dominated my free time since I graduated. It brings me concrete benefits and improves my life. But perhaps by combining all three phases I can make greater progress towards my goals in a shorter time – and that’s surely worth aiming for.

In the meantime, I’m interested as to whether the pattern I’ve described above is familiar to other wannabe-hackers and wantrepreneurs out there. Does anyone else recognise this pattern? How have you adapted it, broken free of it, or used it to your own benefit?

Migrating From Wordpress to Octopress

Having neglected my personal blog for almost 2 years and my personal website for closer to 4 years, I’ve made the decision to switch technology in the hope of revitalising my online presence.

The original and now defunct site was built in 2009 on a combination of PHP-based homebrew with hand-cranked XHTML and CSS. The blog that went with it was based on Wordpress with a custom theme tweaked to match the rest of the site design. I was quite happy with it in 2009, and maybe even in 2010, but in this modern age of client-side Javascipt, HTML 5 and SCSS it felt like time for a change.

In recent years, I’ve found myself more comfortable writing Markdown in vim than composing content in a fancy WYSWIG editor online. I use git during development of a myriad of projects at home and work; likewise Ruby. With this background, it felt natural to search for a solution based on these wonderful technologies.

Jekyll is a static site generator built on Ruby which offers good integration with Github. So far, so good - it satisfied a lot of my wishlist. Unfortunately it also left a lot to do.

Luckily it wasn’t long before I found Octopress, a Jekyll-based project with a blogging focus. Again, it’s Ruby-powered, Github-friendly, and Markdown-based. But it’s also almost ready to go right out-of-the-box. Perfect.

I’ve only recently ported my site to Octopress, but already I feel happier with the content generation workflow and the resulting website. Now I just hope that this enables me to produce interesting blog posts with a little more regularity.

The Joy of Running

I started running around 4 months ago. I was immediately entranced by it and even blogged about my experience, extolling the virtues of run commuting and the dramatic benefit I received from the activity.

I was particularly smitten in my last post, having managed to run over 5 km on the road with­out a rest in just 27 minutes and 38 seconds. I gushed about how each and every run made me feel great about myself, and enthusiastically announced my goal to begin running at least 15 km per week (ideally over 20 km).

Given my subsequent silence, you might suspect that my running activities gradually faded out. But surprisingly, this is one exercise fad which hasn’t fallen off with time. This fad has become rather more than just a phase; it’s become a lifestyle.

The week after my blog post in June I hit my target and ran just over 20 km. The week after that I ran my first ever 10 km route. During the month following my post, I ran an average of over 15 km per week, hitting my target. I kept that up right through July.

In the latter half of July I ran my first ever non-stop 10km, and the week after that I ran a non-stop 16 km out-and-back route. In August I ran a total of 66 km, even though I was away at a festival for four days.

September was expected to suffer from slow progress: I was going away on holiday for an all inclusive week of binge eating and lounging in the sun. Despite that, I ran 10 km non-stop, 13 km non-stop and 16 km non-stop. I even ran 5 km three times during my holiday in Tenerife! The hard work paid off, because I ended up running 84 km (averaging almost 20km a week). If keep that up for a year, I’ll have run over 1,000 km.

October continued the trend, and it has been a very good month. In 31 days, I’ve run over 125 km. I ran a 36 km week, a 20 km week, a 42 km week and a 27 km week. I ran my fastest ever 5 km route (24 minutes and 19 seconds), my fastest ever 10 km route (51 minutes and 10 seconds) and my first ever half marathon (a self-imposed race which took me 2 hours and 9 minutes).

I’ve achieved a lot. But what are the results? To quote from my last post:

Aside from the immediate boosts following the activity, I really do feel better over­all. I have more energy. I feel more productive. My mind is more active. I need less coffee. My muscles feel stronger, my lungs strain less, my body feels less flabby and I’m gradually los­ing weight.

It’s all still true. I feel comfortable in my skin. I’m in the best shape I’ve ever been–mentally as well as physically. I’m fit, I’m happy, and I’m healthy. My BMI is now rapidly approaching 25, and I’m about to hit “normal weight” for the first time since I reached adulthood.

When I feel tired, I run to perk myself up. When I feel energetic, I run to let myself go. When I feel stressed, I run to clear my head. When I feel peaceful, I run to enjoy the rhythm of my feet.

For me, running has been life changing. I can’t recommend it enough.

Knuckle Tattoo Generator

Last winter, I saw a post by Twitter comedian and voiceover performer Scott Fletcher joking about how awesome a knuckle tattoo generator would be. You know what I mean by knuckle tattoos, right? Picture the classic love and hate tattoos, each letter on a different knuckle.

Scott’s throwaway tweet made me chuckle. Pick two random four letter word, and tattoo them onto a pair of fists. Hilarity is bound to ensue. Well, I found myself bored one evening a few weeks ago and figured I’d spent a couple of hours cooking up just such a generator. It didn’t take too long–the recipe was simple.

  1. Crack out some basic PHP, and whisk together a quick script.

  2. Add one lovingly photoshopped image.

  3. Layer the base with a suitable open source font from The League of Moveable Type.

  4. Add a dash of HTML structure and CSS positioning to hold the mixture firm.

  5. Gently fold a 2,000 word list into the mixture. Do this gradually, painstakingly refining the list as you go to ensure it contains only the funniest four letter words.

  6. Bake at 180°C for 2 hours, and allow to cool.

Voilà! You now have your very own knuckle tattoo generator. I call mine Fistbump.

If you fancy wasting a few minutes, check it out and let me know what you think. Refresh the page or click the Randomize link to get a new word combo, or use the Permalink option to save your favourite phrase.

Of course, all credit for the idea goes to @MrScottFletcher.

Fitter, Happier, More Productive

There are plenty of articles online that tell us that working out makes us better entrepreneurs, makes us more successful, keeps us awake, and so on. Exercise is regularly billed as being an excellent way to improve your general alertness, productivity and lifestyle while getting fitter and adding years to your life in the process. No surprises there, then.

Well, I recently decided that it was time to start listening to this wealth of medical advice. I’ve been overweight since my sixth-form college years (around 17-18, for the non-British readers). I haven’t been a full-on fatty, but I’ve been larger than I’d like to be. A BMI between 20-25 is considered normal, 25-30 is considered overweight, and 30+ is considered obese. I moved gently but consistently from a BMI of around 24 in 2005 to a BMI of 31 in 2009.

I’ll say that again. By 2009, I was technically considered obese.

I’d like to stress here that realistically I was by no means obese, but I was certainly overweight and–more importantly–I was unhappy with my body shape. I was unfit, easily caught out of breath and flabbier than I was happy with. Several times over the course of my degree I’d attempted to break this cycle through exercise, and I repeatedly failed.

In 2009 I figured out there are two secrets to success for me.

  1. Eat smaller portions. You’ll be full anyway, and you’ll consume signficantly fewer calories.

  2. Find a way to integrate exercise into your daily routine in such a way that it does not detract from your free time.

I used those methods with vigour, and by 2010 I was down to a BMI of 27.5. Not technically a “normal” mass, but outwardly I appeared healthy enough, I’d reduced by waist size significantly from 38 inches to 34 inches, and I felt better about myself. I kept a balance for the next 18 months, didn’t change much in terms of weight, and aside from the loss of some muscle mass I’d built up I remained in pretty good shape.

Fast forward to Spring 2011. I’m bitten by an overwhelming urge to lower my current BMI of 28 and finally hit that “normal weight” to which I’d always aspired. I had moved house to a new location around 5km from my place of work, yet despite cycling to work every day and eating sensibly I didn’t really seem to be able to lose any weight. But moving house really opened up a new door for me: the realistic prospect of “run commuting”.

Now, I’m no runner. Between 2005 and 2011 I probably ran less than 100 km - and that includes a summer during which I ran on a treadmill almost daily! So why was I so keen to run to work? Well, running has a quintessential property which seems to be missing from cycling: it feels like hard work.

You know what? It is. I threw myself in at the deep end and just decided I’d run to work - and if I couldn’t manage it, I’d have to damn-well walk. So I did. And I ran further than expected. I had to stop regularly to walk, but it felt really good. I ached, but I felt as if my body was energized all day. It might be my imagination, but I thought I could feel the increased metabolism.

It was great. So the next week I did it again - this time using RunKeeper and the accompanying Android app to track my pace, location and distance. And the next week, I did it again. Twice.

It’s now just over a month since I started run commuting, and in that time I’ve run over 55 km. This morning I ran over 5km on the road without stopping for the first time in my life, and I did it in 27 minutes and 38 seconds - a personal best. Every time I run I feel great about myself, and every time I run I’m driven to go further and faster than I did before. I now plan to start running three times a week, with a minimum distance to cover of 15 km per week (ideally over 20 km).

What are the results? Aside from the immediate boosts following the activity, I really do feel better overall. I have more energy. I feel more productive. My mind is more active. I need less coffee. My muscles feel stronger, my lungs strain less, my body feels less flabby and I’m gradually losing weight - now sporting a BMI of around 27 (and falling).

Run commuting has been an unmitigated success, and I would recommend it to anyone who lives less than 4 miles from work. Just try it, take walking breaks as often as you need to, and soon enough you’ll be running the whole distance non-stop. It won’t be long before you’re fitter, happier and more productive.

Entrepreneurship in 10 Words

Even the most slovenly of brains are constantly solving problems. We look for ways to make our lives easier, to make ourselves happier, to make ourselves richer or even just to pass the time. We all solve problems all day, every day. Our brains are churning out novel solutions to everyday problems in every waking moment. For some of us,

There’s only one difference between entrepreneurs and the rest of the world. To sum it up in 10 words: Entrepreneurs don’t just have ideas. They bring them to life.

Next time you wonder what the difference is between you and the next young millionaire (or billionaire), I want you to stop pretending you don’t know the answer. It’s simple: everyone has ideas, but entrepreneurs make their ideas into reality. Now stop reading Reddit, stop watching TV, stop playing games and get out there and build something.

Diaspora’s Privacy Model

I just wanted to write a quick follow-up to my post yesterday on Diaspora’s failure to practice what they preach and implement real privacy controls on basic user information.

Yesterday I said that to date, the Diaspora developers had “failed to integrate their most basic premise into the soft­ware design. They’ve missed the point from first principles.” Well, a couple of friends on Twitter called me out on this and asked whether I’d actually checked out the back-end code to be sure about my accusations. Maybe Diaspora was just lacking a UI to make the relevant changes? This is alpha software, after all.

Well, they had a point. And thanks to the beauty of open source source, I was able to download the source code directly and take a look for myself. I only got as far as looking at the database schemas, but it looks to me like the database layer would require significant work to bring profile information into their aspect-based privacy model.

The aspect model is clearly built around controlling visibility of posts, which starts out by encompassing “wall posts” and will cascade to include comments, photos, mentions, videos and everything else that flows from there. At first glance, the team have done well. They seem to have laid the foundation of their privacy approach on bedrock, building their philosophy into the software from the ground-up. Their initial design will naturally affect everything based on their central idea of a “post” as the network grows and features are added.

The only problem? Profile information does not sensibly fall into this model in any way. It’s currently stored in fields in the Profile model in a non-extensible way which is entirely disconnected from posts. To allow profile information to fall into line with the rest of their aspect-centric approach, they’d need to refactor the user profile models pretty heavily (which admittedly they will likely want to do anyway eventually, given the limited nature of their current design) and they will also have to rework with the basis of the aspect model or the way in which users and user profiles are connected.

In other words, their foundations aren’t built on bedrock at all. They’ve laid them two storeys up, establishing their groundwork on top of the hastily-constructed user model they already had in place.

Fixing this omission certainly doesn’t look like a trivial job. And in addition, let’s not forget that any reworking of their basic models at the database layer would naturally have to fall through the rest of the MVC layers to the UI too. This is not an insubstantial overhaul. Given that the Diaspora project doesn’t even have a note about this on their roadmap, my initial assumption that they’ll have to hack this support in and bolt it on later when it’s too late to refactor properly seems accurate.

All of the above shouldn’t be taken to mean that nothing can be done and the problem is unresolvable, but there is a reasonable amount of work involved and it would mean pretty fundamental changes to their core models. It’s not something that could get implemented as a quick patch; this change would require full support of the core development team. Open source is indeed beautiful thing that enables us to trust our software and gain understanding of how it works, but sometimes you just have to hold your hands up and admit defeat.

Diaspora is fundamentally missing the point of their own philosophy, and there’s nothing we can do but wait and see how they end up fixing it later down the line. Will it be a Facebook-style mess of privacy controls? I hope not, but at present the odds aren’t looking good.

Diaspora: Fallen at the First Hurdle?

I was recently able to sign-up to Diaspora thanks to the kindness of some friends on Twitter. I’d been quite excited at the idea of an open-source network, distributed across many machines and administered by anyone who cares to run their own instance (or “pod”, as Diaspora calls them). The pods interconnect, the network grows, and everyone can feel lovingly involved in a real social network that was built from the ground up on open technology.

It’s a bit dead at the moment, and very lacking in features compared to any other service you might care to join, but that’s fine. It’s in alpha, and missing features are to be expected (along with a good helping of bugs). My real issue with the service, and the one that lead me to compose this blog post under such a dismayed title, is that Diaspora is already failing to meet the expectations they set about control over privacy and sharing.

One of the core thrusts of Diaspora is the big bold message on their homepage: “Share what you want, with whom you want.” In accordance with this, they have implemented aspects: contacts must be categorized into different sets of users (which may overlap as required) so that you can choose what you share and only disclose it to the chosen contacts. This, they suggest, allows you to share the 3 nice pictures from your night out with colleagues while your friends can see the full damage (i.e. the other 47 images). It’s a nice idea, and one that appeals to me. It’s simpler than Facebook’s messy privacy model and seems to be built-in from the ground up. Or does it?

One of the first things I tried to do was to hide my birthday from anyone other than close friends and family. It’s a silly thing, but I thought it would be nice to share my real date of birth only with my friends; the rest of the world should see nothing, or perhaps just the year in which I was born. Not a big deal, but a reasonable thing to want to protect given how often date of birth is used in various security mechanisms.

I flipped to my Profile Settings, but couldn’t see how one might restrict certain parts of one’s profile to particular aspects. Neither biography, location, photo, or birthday could be hidden away. It’s not just that I was in the wrong part of the website, which was my first thought: there is no way to control which of your contacts see which parts of your user profile.

This is a very basic starting point. Even Facebook gets this right. Yet Diaspora–the social network that allows you to “share what you want, with whom you want.”–has missed the point entirely.

I know this is almost silly. After all, there’s not much in your profile you’d realistically want to restrict at present. But there are use cases for doing so now, even paranoid security reasons. And what’s more, when you can eventually add information like employment details, religion or sexuality, one might very well want to restrict certain information to close friends or family.

I did post a contracted version of this rant on Diaspora itself, and a friend commented that perhaps I should try to get involved with development. It’s not a particularly satisfactory response. Indeed, the only bad thing about open source technology is that one cannot make disappointed noises without somebody else suggesting they get involved and fix the issue themselves. It’s a poor response when people say it on the Gentoo forums, and it’s a poor response when it gets trotted out on a social network too.

To date, the developers have failed to integrate their most basic premise into the software design. They’ve missed the point from first principles. And, like security models, trying to bolt the right behaviour on to the application later down the line will be a losing battle: you’ll never plug all the holes. I’m not sure any individual hacking on the existing codebase can make a real difference.

Despite all of the above, I will indeed keep a close eye on Diaspora and I’m not going to give up on it. But at present, the disparity between their marketing blurb and their software is almost unpalatable.