“Own the Stack”

Office #2 - Co-Working at WorkSpace (Photo Credit: Jean Cloutier / IN2CC)
Office #2 - Co-Working at WorkSpace (Photo Credit: Jean Cloutier / IN2CC)

Now that I’ve set out on my own, my plan has been to set aside a couple of months to solely work on “my project”, without the distraction of getting involved in any freelance client work. I think that it has been a great idea to set aside time to do this, as it has really allowed me to really catch up on what’s happening going on out there. I only wish that I was able to set aside even more time. It’s been about a month so far, so it’s time for an update.

So far, most of what I have been doing in the past month falls under the category of “triangulation”. Mostly, I have been looking at what is happening in various open source areas, and I have been digging deep into the projects which are of particular interest to me. I have some very ambitious goals, so I have to be strategic about what I take on. I’m very excited by what I have found so far.

I’ve got one more free month. Then, starting in October, the plan is to start doing freelance contract work for various clients in the Vancouver area. I’m very encouraged by the amount of interest I’ve received so far. In September, I am going to concentrate on improving my infrastructure, so I can quickly “spin up” a development environment to work on any component of the software stack that I support. As Brian Shire said at his OpenWeb Vancouver talk, it’s important to “own the stack”.

The “stack” that I am interesting in “owning” is quite a large one, encompassing all of the software I use on a daily basis. I run a server with Xen and Linux, plus I have some additional inexpensive VPSs, and I want to incorporate various “cloud” services such as Amazon’s EC2/S3 and Google App Engine (but without the vendor lock-in). On top of that, I want to target the client side in a cross-platform manner. That means utilitizing “Open Web” technologies and working with Web Standards and Javascript. And beyond that, there is still the need to build native client-side applications and virtual machine environments for the mainstream platforms - Win32, OS X, Linux. Plus there’s all manner of interesting embedded platforms out there (I have an iPhone now).

There’s a lot of work there. I’m ambitious, but I’m also a pragmatist. There are a few tools that are missing that would really make it easier to digest such a huge a amount of software. My first “project” is going to revolve around plugging some of those gaps. I’ll try to sketch out the first big problem I’m going to try to tackle.

Most software these days is characterized by the following:

  • Very deep stacks, from the UI, through the network, all the way down to the OS and underlying CPU microarchitecture
  • Lots of virtualization, so parts of the stack can be interchanged
  • Lots of modularity, with lots of plugins or drivers
  • A wide selection of very good languages and APIs to choose from
  • Less optimization, because the chips just keep getting faster

There is a whole lot of software behind a typical application these days. Even seemingly trivial applications may invoke the work of literally thousands of previous contributors at various levels of the stack. The complexity is incredible.

The most interesting software that I am finding lately is all at the “edges” of various free software / open source projects - typically, a developer builds a plugin for use in a prototype of a system, and just tosses it out there. Unfortunately, most plugin authors do not have the time or resources to build a full project around their creation, so usually the code just sits out there for a long time until it gains some adoption. More often than not, the code does not get immediate adoption (even though it might be really good) — meanwhile, the underlying APIs and interfaces it is built upon continue to evolve and change. There is an awful lot of contributed code out there that is really cool, but has been afflicted with “bit rot“, so it takes extra effort to get it working again with the latest stuff.

There’s a simple solution to the “bit rot” problem — build unit tests, and do continuous integration.

The big problem is that most continuous integration platforms are not at all geared towards the needs of individual plugin authors (or users). Generally speaking, all of the available continuous integration systems involve a huge amount of setup and are oriented towards use with a centralized code repository. With the advent of distributed version control systems such as git, mercurial, bzr, darcs and monotone — more and more development is moving to the “edge”. It would be really nice to have a “distributed” continuous integration system that would have less of an “impedance mismatch” with the new world of distributed version control systems.

I don’t really have a name for this new project yet. Although, I imagine a good slogan might be “Continuous Integration for the Long Tail”.

For the next post, I’ll talk a bit more about some of the really cool technology I’m going to attempt to do the front-end UI with.

2 comments August 30th, 2008

My new gig

My new office
My new office

Last Friday was my last day at Bycast. I decided to leave in order to pursue a new project I’ve been planning for a while. It has been a great 2 years, I loved the people there and I really think the company is on to a really good thing. They’re going to be very successful. If you need a distributed storage system to archive your super valuable data for decades or more, it’s hard to top the solution that they have come up with.

Since 2000, I’ve been working for various proprietary software companies in Canada and California. I’ve learned a lot, and I’ve achieved a basic level of financial security. But I’ve really missed being fully involved in the free software community, like I was prior to 2000. While I’ve been working for other people’s companies, I’ve been working with free software — but I haven’t really had the opportunity to put my own stuff out there.

Finding time to do my own thing on the side has been a problem. After slaving 40 hours a week in front of a computer screen, I don’t think it’s really healthy to then spend nights and weekends spending more time in front of the computer — even if it’s to do something you love. I’ve been trying to keep involved in the community at a certain level, eg. running my server, hosting stuff for projects such as Kaffe and
Classpath
. However, just doing that was time intensive enough (due to server problems, etc.) that I really didn’t have enough energy left to really work on the stuff I wanted to do.

So now I’m finally free to start working on some things I’ve wanted to do for a long time. I have some money saved, so no worries there. My plan goes something like this:

  • For the next 2 months - I’m going to solely work on building up my infrastructure, as well as some metadata and demo applications (and a presentation to go along with it all). I’ll be working out of my home in Yaletown, as well as WorkSpace in Gastown.
  • Beyond that, I’m going to continue to develop my project. But I’ll start doing freelance work in order to support myself and continued development of the project. I believe that there’s more than enough work in Vancouver to get me started.
  • Ultimately, I think the project is going to be useful to enough people that they will base their own projects on it. I will be available to help support them in a contracting/consulting capacity, and I plan to build up a local team to help me scale up the level of support that I will be able to provide.

I don’t really consider the project to be a new “business” - it’s more of a free software thing. But I am going to be available for freelance work, so do keep me in mind, particularly if you are in Vancouver, and have work in related areas.

I’ll have more information on the new project in subsequent posts, as I implement things. Stay tuned…

July 29th, 2008

Vancouver Timelapse

Via Darren Barefoot

November 19th, 2007

Finally moved

This weekend, I moved into the new place. It’s really nice!

I moved!

October 2nd, 2007

$1 CDN = $1 US

The Canadian loonie is now worth the same as the US dollar. That’s pretty amazing to me, since the Canadian dollar was as low as 62 cents US when I was living down there just 6 years ago.

Here’s my first test of dollar parity. I just bought a small portable projector for my MacBook, so I needed the Apple mini-DVI to VGA dongle.

Apple VGA Adapter

The US Apple store: $19

The Canadian Apple store: $30

I needed it now, so I went over to Best Buy, and paid the thirty bucks + tax. It’s hard to avoid the feeling that I’m getting screwed somehow.

I imagine over the next few years, inflation will probably increase prices in the US, and prices will drop in Canada.

September 21st, 2007

Previous Posts


Links