A New Project, Part 1


sticky, part 1



About six months ago I was juggling a half dozen ideas in my head and I decided that I needed to write them down to help manage them. My preference was to do it on the computer, rather than on paper, as my handwriting isn't that great and it would be useful to be able to organize and search the notes. Since I've been using various Wiki implementations at work for years, I chose to install an instance of TWiki on my home server for personal use.

That worked. For about 2 days. While I'm a fan of TWiki at work, I found that there was just enough overhead (page load, editing steps) to make it more of a burden than it was worth. I checked out the half-dozen lightweight Wikis out there (such as TiddlyWiki), but none of felt exactly right. I had something else in mind.

What I wanted was this: web based sticky notes, like the yellow paper things made by 3M or their digital analog on the Mac. But they had to be client/server -- I wanted to be able to access them from any machine, anywhere. And in the fashion of Wiki's, I wanted it to be easy to link one note to another.

From that I began to develop a vision of a web application that allow users to sign up and create their own pages of sticky notes. The notes themselves would be rendered in the web browser with CSS and JavaScript -- they would feel like a client-side application, even though the data was persisted remotely. The more I played with the idea and did some quick mockups, the more I wanted it. I even looked to see if the stickywiki domain was available.

Time being the scarse resource that it is, the project slipped into the background. Work keeps me busy, as does my personal life, and it's all I can do to just code a few small projects (such as the OpenSearch Product Search) in my free time.

Then the other day I started writing down some more thoughts about the project (in a cool new Moleskine notebook that M. bought for me), and I realized that if I partition the project well enough, then it was actually pretty manageable. There are still a ton of independent pieces, but none of them were invididually that challenging. The trick was to think of a way to make progress that embodied the Agile spirit.

A productive morning's worth of thinking (basically, the only thing an hour commute each way is good for) and I had a solid sense of what I needed to do. But still, the gating factor was time. There is never enough of it.

This morning I considered my goals for the project. What I really wanted was to just get the application built. I knew I could do it myself -- that wasn't the challenge. If I worked on it full-time then it should take about a week to get a reasonably functional version going. Of course, there were parts that I could use help with. I considered sending an email to some of my coder friends asking if they wanted to participate in a "coders collective" on this and other projects. But that felt to me like I'd be spending time managing and coordinating and motivating -- not how I wanted to spend my evenings.

Then it occurred to me that I could just build the project myself, but write about each step along the way here on unto.net. The project could still take months to complete, but perhaps people might jump in and lend a hand. And even if they didn't, then at the very least I'd be forced to artictulate the decision making process, keeping me honest about the hard technical choices that invariably arise. Since better engineers than me read this site, then perhaps feedback in the comments would help improve the whole project.

And more than that, publicly documenting the development and decision making process might even serve as a useful resource for younger engineers and those simply curious about the world of web application development. While I'd obviously like to see this project be a success in terms of being high-quality and widely used, I wasn't out for any particular individual gain. The code itself would probably be open source. The site hosting it wouldn't serve ads unless bandwidth got ridiculous. I'm not looking for a new job (there isn't a better one out there than mine at A9.com anyway) or someone to buy (heh) me out.

(Okay, perhaps there is another motivation. I wouldn't mind a book deal someday. I don't have any definite plans in this regard, but I would like to write the type of book that software engineers buy for their managers, and managers buy for their non-technical executives. A book that helps explain the world of software engineering as it impacts the business as a whole. Too many companies thrive or fail based on the work of their software development teams without a robust understanding of what can be done to improve the process. I'm not sure if I can help, but I'd like to try.)

So, with that introduction, I will try to post on unto.net the gory technical details of how a web application can be developed.

Will it ever be finished? Only time will tell.

(BTW, I wouldn't be surprised if someone commented here saying "don't bother with this, application X already does everything you need." If so, great! Like I said, I just want to see it built.)