Nov 24 2009

If you asked the average coder what a cool job might be, apart from "not mine!!", you'd likely hear a few common suspects cropping up - game development, working at Google, or working on an OSS project full time. So you would think that I would be crazy to leave my job as the lead developer of Mahara, a job that sits firmly in the third category. So why did I?

I'm going to explain my situation and motives, because I think my current situation is quite similar to yours. And at the end, maybe you'll see how in the same situation, you might do the same.

Situation: Normal

I might be making blind assumptions here, but the average reader of this post is likely to be a software developer or sysadmin in a small to medium sized company. You're also likely to be a New Zealander, and possibly quite young, but that's about as far as I can guess.

Therefore, I'm guessing that you'd have probably liked my (ex) job, and would have swapped me for it. Sure there's a few of you who really like your current gigs, and I congratulate you for finding a job you like, but I'm guessing that getting paid to lead an OSS software project sounds better than writing Perl/Java/C for $CLIENT under $MANAGER.

And yes, leading an OSS project is fun! You get to manage a codebase, talk with cool people all over the world, write interesting code and (one of my favourite bits) make releases, new versions that gratify your community and bring new people in.

You become proud of your creation, and begin to "own" it, which makes your job even easier. Sure, the hours are sometimes rough if you're lost in coding a new feature or helping someone in IRC, but they all feel like hours well spent. Work becomes pleasurable, and so does your life as a result.

And that was exactly the situation I was in.

"So why change, Nigel? Why throw it all away?" I hear you ask.

Well obviously, it's because I'm crazy!

Crazy

Am I crazy? Maybe. There's two types of crazy, insane crazy and fiendishly crazy. I've been accused of the former many times (and the currymails don't help), but this time I think I'm the latter. Let me explain.

Chris Guillebeau published a brief guide to world domination once. Included was a list of 11 ways to be unremarkably average. They are:

  1. Accept what people tell you at face value
  2. Don't question authority
  3. Go to college because you're supposed to, not because you want to learn something
  4. Go overseas once or twice in your life, to somewhere safe like England
  5. Don't try to learn another language; everyone else will eventually learn English
  6. Think about starting your own business, but never do it
  7. Think about writing a book, but never do it
  8. Get the largest mortgage you qualify for and spend 30 years paying for it
  9. Sit at a desk 40 hours a week for an average of 10 hours of productive work
  10. Don't stand out or draw attention to yourself
  11. Jump through hoops. Check off boxes

(You can read more about this here).

Is your life average? Mine is! I don't think you need to fit all of these to have an average life. There's millions of people, there will still be many "less average" than you who are pretty average. For me, I went to college, have been to England, don't know another language, have only ever thought about starting my own business, have sat at a desk for 40 hours a week [1].. you get the idea.

You might not think that this is a problem - you could have a family, or like the stability of a steady job. If you have a family, you're excused, but if you're young (under 30 especially) and have no dependents, why are you wasting your prime years trekking down the road to mediocrity? Now that's crazy!

Being Average

A guy I know has spent much of his life on the corporate ladder, working his way up to senior management positions. He chose to have a family, which is a noble undertaking (and despite its frequency, something you'll never hear me say is "average"). He had a safe, stable job which allowed his family to grow up successfully.

But just this year, the recession sparked job cuts that saw him out of work for the first time in over 20 years - caught by the economic chainsaw, helpless to influence his own fate. All of a sudden, the safety of a stable job was gone, the mortgage looked tough, and retirement plans were looking downhill.

Now I'm happy to report that he eventually got hired after a few months of downtime. But how safe has your job seemed in the last year? Has it been less secure than previous years?

Being tied to a 9 to 5 job doesn't sound quite as safe as you'd hoped, all of a sudden. You might have gotten lucky this time around, but there will be more, deeper recessions, and next time you might have kids to feed.

Smart People

Now, admittedly, this man had chosen to have a family, and thus exposed himself to the (comparitively small) risk of putting his job's fate in the hands of others. But if you're young and free, why would you even start walking down this path?

Let's face it, developers are smart people. Dude, you know pointers and recursion, and that's something 99.9% of the population cannot remotely comprehend - not your boss that's for sure. So why is he earning more than you? Who's the smart guy now? It's time for you to stop sheepwalking, and start doing something remarkable with your life.

Stop working for someone else, stop living in a cubicle, stop playing office politics, stop doing your boring job. That software or website you always wanted to write? Do it! Those places you want to see? Go there! Ever wanted to write a book, learn a language, play music, take up your sport professionally? Go for it! Do something remarkable. And do it now, because it'll only get harder the longer you wait.

The Reason

That's why I've left my job. Working on an OSS project is not a job to pass up without careful thought, but I've done it for a while and I think it's time to do something new. So, I'm taking number six on the list of things that boringly average people do, and crossing it off, forever. And when I'm done, you'd better not still be in that cubicle.

Which one are you going to cross off?

ps: As Seth likes to say, the best time to start was last year. Failing that, today will do.

[1]I daresay I'm more productive than 10 hours a week, but that's besides the point. Average life!

Like this post? Subscribe to my RSS feed and follow me on twitter to hear about new posts early.

Want to share this post?

Nov 9 2009

Well, this is it. After four and a half years at Catalyst IT on and off since I was merely 17 years old, I have resigned in order to found a startup. More on that in a future post, for now what I want to do is write about what leaving Mahara is going to mean for me.

Actually, regardless of what it means, I'm going to miss it.

I think that's it in a nutshell. I'm basically leaving a community of people that I have worked with for a significant portion of my life, to forge a path into the unknown. Who knows what lies this way? One thing is for sure, at the start it's going to be pretty lonely - totally unlike the friendly community I've been used to for the past few years.

And what a friendly community it is! I think you'd be pretty hard pressed to find a nicer group of people on the internet - and if that's true of the internet, imagine how it would be if we all lived in the same neighbourhood.

I know that initially, Mahara borrowed a lot of the community ideas, and even people, from the Moodle community. That's because they're such a top notch community to be a part of. If you haven't already, heap plenty of thanks onto Martin Dougiamas for that. He may not have known it initially, but building a tribe of progressive teachers, developers, businesses and educationalists was a masterstroke for Moodle, and Mahara is lucky to benefit from that.

But now Martyn Smith and I are heading off to carve our own little niche out of the internet. More on that in a few days [1].

I want to thank everybody for being a part of this world for the last few years, no matter how small your involvement. There have been a few people who have stood out even from the rest of the great community, and I'd like to publicly (and personally, if I ever meet them in real life!) thank them. In no particular order:

  • Mike O'Connor, my boss, who left me a lot of leverage to work on Mahara how I saw fit from day to day. I think I would have... "struggled" under the oversight of a project manager, to be fair ;). Mike - I wish you and Catalyst the very best for the future. If they were rating companies on the good to evil scale, I'd place Catalyst slightly to the "good-er" side of Google.
  • Heinz Krettek, our first fan and loyal supporter. He was the first person to inhabit our IRC channel, and been a great advocate for us in Europe. Things like the German language pack are just the icing on the cake, really. I remember us trying to teach him linux commands for his new ubuntu install that he got because we told him Mahara was better on linux. It was totally worth it. I've never even met Heinz in real life, but one day I'm sure we'll catch up, and finally enjoy a drink together. Heinz - keep on rolling mate, maybe I'll see you in Germany some time :)
  • Penny Leach, core developer on the original project that created Mahara, and has remained heavily involved ever since. We had some pretty heated arguments early on, but out of that and a mutual love for Mahara has come a good friendship based on trust and mutual respect. I think we've both learned a lot from each other, and Penny has certainly helped me grow as a person over the last few years. Penny - I can't thank you enough for being passionate about Mahara, being a friend and just being there in IRC when I've needed to vent.
  • Andrew McMillan - you gave me a shot, which is more than I deserved at the time. But it's sent me off down this road, which has been worth every moment. Meeting you was a life-changing event for the better - thank you.
  • Richard Mansfield, core developer - we've had many great conversations about Mahara's inner workings and ways it could be improved, and between us written a shitload of code - on time and on budget. Except releasing 1.2, which is my fault for delaying everything in order to squeeze more features in, but I know you have plans to fix that issue when I'm gone :). I'd work with you again for sure. Good luck with the reins!
  • Richard Wyles, and in more recent times, the Mahara governance - you trusted the developers with the project, and apart from usability, I think we haven't let you down (and we're fixing that usability as we go ;). I hope Mahara continues to be a developer-lead, academically-guided project like it is currently, because it's a winning model.

Yep, the community will be the thing I miss the most. But also, Catalyst itself. Catalyst doesn't try to be groovy, dramatic, evil or sneaky. It's full of good, hard working, geeky and sometimes quirky people, and this is reflected in the company itself. Catalyst isn't corporate, it's defined by it's people - and who wouldn't want to work at a place full of open source geeks? "Why, you!?" I hear you say. I'll cover that in the next post.. stay tuned [2].

[1]Martyn isn't actually leaving Catalyst, but he and his girlfriend Kate are putting me up while I work on things full time.
[2]Here's a teaser: the truth is more that I'm leaving in spite of working at a company full of open source geeks, mainly because I'm stupid.

Like this post? Subscribe to my RSS feed and follow me on twitter to hear about new posts early.

Want to share this post?

Aug 23 2009

Here's a snapshot from my point of view about what's going on across all aspects of Mahara.

Hackfests

Yesterday, Penny, Jordi (both from Mahara partner Liip) and I had another weekend hackfest. Penny has been adding a framework for unit testing, and managed to get the first test working. Jordi was working on swapping Smarty for Dwoo, while I continued hacking on View Themes support. Pics: Switzerland end, NZ end.

Penny has been working on unit testing, as it's something we developers have realised has been lacking in Mahara for some time now. What unit tests do is give us more confidence that when we make a change (whether it's a bug fix or new feature), that the rest of Mahara continues working exactly the way it used to - i.e., we didn't inadvertently add any more bugs. This has the result that we can continue development safe in the knowledge that we didn't break anything that worked before, which will result in better quality. It will also make it easier for enthusiastic hackers to make changes to Mahara and know they haven't broken anything important.

Unit testing isn't the only way we've been trying to integrate testing - Gerald Quimpo from Catalyst has been resurrecting the Selenium tests that come with Mahara, and has done an excellent job in getting them working again, while also setting up a Continuous Integration server (Hudson) so the tests will be run regularly. Soon, we'll have that available publicly so everyone can see which tests are currently passing and failing.

Backtracking a tiny bit - Jordi has been working on swapping Smarty for Dwoo, a change we would like to do for a couple of reasons. Firstly, Smarty is bigger and slower, perhaps largely due to the fact that it needs to support PHP4 (which Mahara doesn't support). Secondly, Smarty doesn't make it easy for us to output variables that are HTML escaped by default - which is currently the leading cause of security vulnerabilities in Mahara. We haven't had many security vulns actually, Mahara is reaping the benefits of a security-oriented development ethic. But of the few we've had, almost all of them have been because someone forgot to put |escape on the end of a smarty variable. So switching to Dwoo will cut down that entire avenue of attack.

Mahara 1.2

We released the first beta of Mahara 1.2 last week. That means we're looking for bug reports now, and encourage people to download it and try out the new features. Here's a short list of the coolest new features in 1.2:

  • Import and Export - Mahara supports the LEAP2A standard for import/export, and in addition, allows you to export an HTML version of your portfolio (including a nice HTML represntation of an individual View).
  • "My Files" and file handling improvements - now the My Files section makes it easier to quickly upload files, and degrades to work without javascript. You can now upload files directly into Views, and use a standard directory browser to choose files in Views. For developers, we created a pieform element for uploading/attaching files, which will make it easier than ever to do this in custom plugins.
  • Theming - we're shipping with 6 themes, to give people an idea of how they can customise their Mahara. We've done a lot of rework of how themes are created, so from 1.2 it'll be even easier to create a custom theme. We even documented the process (finally!).
  • Usability/Comprehension tweaks - Now groups get a default forum, and blogs get a default blog. If there is only one forum or blog, users are taken straight to it. This should really help in preventing the problem where people create a blog as if it's a blog post, and should make the forums an even more useful tool.
  • Improved Moodle/Mahara integration - with a custom patch to Moodle 1.9, you'll be able to submit a View to Moodle for assessment as an assignment answer. How useful is that? Now people can keep their data in their portfolio, and mash it together into a View for assessment over on Moodle, where all the useful grading functionality is :)

There's s still a bit of work to go before Mahara 1.2 will be ready though. I need to finish off LEAP2A import - currently resume import is only half finished, and view import is just begun. We'll also need a fancy UI for it, and of course there are some inevitible bugs that will need squashing.

Also, I'd really like to get view themes to a point where it can be merged also. That'll really help people personalise their environment. If I get around to it, maybe we can add a theme chooser for users to change how they see the entire site, not just individual Views.

Other than that though, I think we're looking pretty good!

Code Contribution Policy

We are currently preparing a policy for contributors to the codebase. We aren't going to be wanting copyright assignment, but we are going to make sure all contributions are as legal as we can make them ;). Unlike many open source projects, Mahara is actually in a pretty good position legally, as most members of the team are well aware of the legal issues around open source and licensing, and we take legal issues seriously. Our policy won't be onerous, but will ensure we stay legit now and into the future.

Mahara 1.3

Though 1.2 is not out yet, talk is already shifting in some departments to the plans we have for Mahara 1.3. The big focus there will be usability, and we're going to target that in a couple of main areas - the navigation, and View creation.

For the navigation, our current plan is to adopt a dropdown menu structure, organised more to how users think when they're looking for something. The main categories will be roughly along the lines of "My Stuff", "Friends & Groups" and "Sharing". We'll build a demo of this at some point after 1.2 so the community can see it in action and give feedback, though I've seen it in action elsewhere and it's easy to grasp. Furthermore, the addition of "horizontal navigation" - where when you're at one page you're given suggestions about what else you might be looking for - should help tremendously as well.

We're also going to have a good look at the View creation process. The Drag and Drop and layout concepts won't be changing, but the layout of the editing screens themselves will be improved a lot. We're hoping we can even ditch a step to make things simpler. I think the biggest gains will be seen on the View Access screen, which currently can be a bit of a minefield to navigate. We'll get mockups out some time after 1.2 also.

Other stuff we might do could include Group Views, a User Dashboard (as a View of course!), and overhauling the notification system.

Mahara Growth

And last but not least, here are some interesting statistics about Mahara and its community:

We now have over 3000 members of the mahara.org community, with 17 partners worldwide. The community growth has been steady since we launched the new mahara.org last November. The site receives nearly 25,000 visits a month (for the geeks among you: 57% firefox and 27% IE). Of these visitors, we get the most from the US, followed by the UK, Germany, Spain, Australia and then New Zealand.

Since we added the ability for sites to register on mahara.org in May, we now have over 50 sites doing this every week. These sites together add to some 12,000 users, but this doesn't include mahara.org, or the New Zealand MyPortfolio service - if these numbers were included, the total would rise to nearly 25,000. Again for the geeks - we are seeing a 75/25 split of MySQL to PostgreSQL. Hopefully things will skew more to the PostgreSQL side of that equation as time goes on :). Of the registered sites, the largest seem to be run by Blackpool University, Uni Krems (Austria) and Birmingham City University, all of which have thousands of users.

Like this post? Subscribe to my RSS feed and follow me on twitter to hear about new posts early.

Want to share this post?