Coffee, Diaspora, and Indulging in the Test-first Kool Aid
Today was a day to be thankful for caffeine. I truly don't know what I'd do without coffee. Even when I'm not tired, I need to have my cup. My favourite, when I'm not freezing (in other words, for about 3 months of the year in Edmonton) is the iced americano. It was one of the worst tasting drinks I've ever had when I first tried it, but it grew on me. A lot. When nothing else can get me out of bed in the morning, the thought of iced coffee will. Coffee, in general, functions as an energy booster, a social thing, and creativity enabler all at once for me. Some people instantly feel more creative with a cigarette hanging out of their hands. For me, it's coffee. My only real addiction. And you have to admit, there are worse things in the world than coffee to be addicted to.
But enough about coffee. Today was also the day we all heard about Diaspora, a "new" social network idea that will decentralize social networking and allow users to own their own data. They've raised a hundred and twenty-five thousand dollars the last time I checked, before any code has even been cracked. I found this amusing for a couple of reasons. One, it's certainly not a new idea. I wish I could find the article I read a couple of years ago on it. It was as intriguing then as it is now, but everyone was just so enamoured with Facebook at the time. I also remember a friend of mine who's like the canary in the mine shaft, talking feverishly about the need for people on social networks to be able to encrypt their data so that they are able to turn it off at any point. I'm not really sure how that would have worked, but as usual my friend was before his time in wanting to give users more control. Had he waited a bit for the world to suddenly have social networker's remorse, maybe he could have been collecting a bunch of startup seeding. If you happen to run into this friend of mine and you don't understand what he's saying, write it down somewhere and meditate on it every day for the next few years. And in 3-5 years, you'll be the only one who isn't surprised about the way things are. The other thing that I found amusing was the fact that people I'm pretty sure don't care much about privacy were suddenly cheering these guys on, and I'm sure I'll have to keep biting my lip a bit over the weeks to come. Don't get me wrong. I fully support what they're doing. It just bugs me when the success of an idea outshines the idea itself. Make no mistake, if these guys are successful (and there have been attempts before them to do the same thing), it won't be because they raised a bunch of capital. It'll be because (a) they truly believe in the right for people to be able to control their own data and (b) the world at large has recognized the disadvantages of entrusting its personal data to a handful of organizations.
It's funny because most of us in growing up have at some point "learned" that idealism is inherently wrong. It's a mark of maturity when you start to scoff at those silly idealists who think ideas alone can change the world. Ideas are nothing. Execution is everything. And yet right now is the perfect time to be an idealist. True, ideas are bountiful, but so are busy, busy people who don't really know what they're doing. While marketing companies scramble to concoct the next great viral sensation, a squirrel (Canadian, I might add), can pop out of nowhere and take the world by storm. Why? Partly because it's funny. And partly because of the idealism of remix culture, which has the audacity to think that you can just take a couple of pictures without asking and photoshop them together to create something interesting. It may very well be that to be a true pragmatist these days is to denounce the dogma of pragmatism.
Anyway, this has taken a sharp turn into philosophy land. I admit, my bias has always been towards looking up to the people who first bring ideas into the world, rather than towards the ones who figure out how to mass market them. That might also be why I like smaller companies. They don't have enough resources to coast on a bad idea for too long, nor to follow too far behind someone else's good idea. They don't have the inertia. The only way they're going to make it is if the idea's good and they genuinely believe in it. That actually creates inertia, and any time I see it, I want to be a part of it. I don't think you can ever truly fail unless you give up on the idea that lit the fire in the first place. Hmmm... sounds like good advice. Maybe I should follow it more often myself ;-)
Seems we haven't left philosophy land just yet... wait... I think I see the exit somewhere up ahead.
I got to pair program with Sean from M7 (who is also a fellow musician) today. What is it about tech people and music? Anyway, I think that after we get the remote coding down to a science, we should try a remote jam fest. Sure the latency will be horrific, but it'll simply remind me of the good old days of digital recording. I've been pampered by this 10 millisecond stuff for too long. It's time to go back to the old neighbourhood like Rocky did in Rocky III.
The company is also starting to look at making user interface refinements, and although it can sometimes make for frustrating coding to tweak things at that level of detail (it tends to cause a lot of back and forth movement with any given feature), I think the result will be worth it. When you know all the ins and outs of a system at the code level, it can be easy to forget how confusing it can look to an end user, even a very technically proficient one. Sometimes changing a font or adding a bit more whitespace can make all the difference.
Lastly, I got to see the good side of test first development today as Sean and I solved a bug that at first seemed really strange, but became more and more obvious as we came up with the perfect test for it. And while making the fix, other tests that started failing kept us on the right path. In the end, everything passed again, and we were quite confident with the fix. I'm hoping to study up a lot more over the next few weeks on the philosophy behind when to write a test and what kind of test to write. I think it's going to be one of those things where the more I learn about it, the more I'll realize there's way more to learn.
There you go. Your second last regular stream of consciousness post before I start to slack off on my tech blogging duties.