Archive

Archive for the ‘projects’ Category

Projects and Productivity

March 19th, 2007 kirk No comments

I’ve come to an important realization: Projects are very important to me and I’m very bad at them. The only projects outside of work that I’ve really had any luck with in the (almost) ten years since college are:

* a few patches to the Linux kernel in 1998
* NaNoWriMo 2007

That’s basically it. And NaNoWriMo didn’t result in an actual deliverable, as I wanted, though given my lack of writing experience, that is understandable.

I have tried a variety of things. My goal when I moved to Seattle (after graduating) was to make it on my own. I had problems back then with taking initiative and being in control of my life, so I moved to Seattle where I barely knew anyone and tried a bunch of stuff, made mistakes, and learned lots. So I’m not too disappointed with my adult life.

However, there are many things I haven’t completed:

* second language: see post from last night
* knit sweater: about half done
* countless software projects: most aren’t even half finished
* music: I’ve spent a lot of time learning music theory and playing a few instruments, but never focused enough to have anything worth showing off
* countless half finished books: everyone has this problem, but few are as bad as me
* half marathon: was running very regularly and got up to 8-9 miles (not bad for a former sprinter) but never actually did the half marathon

There are many other things but that is a good sample.

I’ve thought a lot lately about why I want to do all these projects and why I’m unhappy that I haven’t made more progress. I’m not sure I’m ready to answer that yet.

Instead, I’m focusing on ways of improving my habits so I can be more productive and focused and actually deliver something of interest or value to the world.

NaNoWriMo was an eye-opener in terms of turning off the inner critic. I’ve talked about that a lot already, so I won’t say it again. I’ll just say that I encourage everyone to try it.

Getting Things Done (the book and various online resources and communities) seem like very good ideas. I’ve had a little luck with the techniques and tips from sites like 43 Folders, but something hasn’t quite clicked yet.

I need to figure out how to focus. In the short term, I need to be disciplined and not check email or RSS every few minutes. In the long term, I need to continue a project until it is finished, get the reward, and then move on to the next project.

And I need to learn to pick projects up after they’ve been sitting for a while. I’m surprisingly bad at this. I’m almost completely incapable of seeing the value in anything I did over two weeks previous. I seriously have some messed up neurons in that part of my brain. I’ve started countless projects over only to stop halfway through. Again and again.

One thing I’m thinking of trying again is free software. It might not be as fun as it was the first time I got a patch accepted into the Linux kernel, but the energy of working with a lot of other people from around the world is a useful tool.

I also want to mix in some non-creative projects, such as learning a second language. After 8 hours of programming, I find it difficult to expend the mental energy necessary for creating interesting stories or writing complex code. But sitting down with flash cards or a book on grammar is pretty easy.

I’ll write more later but it feels good to get this much down. It is both frustrating and motivating to see all the things I haven’t done.

Categories: gtd, productivity, projects Tags:

December Project

December 2nd, 2006 kirk 1 comment

I’ve decided on a software project for December. Lines of code should make a good replacement for NaNoWriMo’s word count, though I don’t know what a good LoC quota would be and I doubt I’ll stick to it as closely as the word count goals of last month. It is important to have that arbitrary measurement of progress, I think, in order to keep the perfectionist inside me from ruining everything.

In this post I mentioned an integrated software testbed, which doesn’t really mean anything. What I want to create is difficult to explain.

I recently remembered making school presentations with HyperCard in the 9th grade. Are there any software packages like HyperCard anymore? Keep it in mind, as that is kinda/sorta how I want this project to look.

A lesson I learned early in my programming career is that breaking almost everything up into a library is generally a good idea because it allows for reuse. In fact, I have this ideal in my mind about how all programs should consist of dozens of libraries and a simple main.c file that just pulls in everything and ties it together.

Unfortunately, it seems that breaking code up into libraries often doesn’t help. Libraries that involve socket I/O often try to handle all file descriptor event processing (via select/poll). Data structure libraries might require that the data objects contain a next pointer as the first element. Or a library might require the use of threads when using threads isn’t desired.

Another issue I have with software is how difficult it can be to get at external data. How often do programs ask the user for data that really shouldn’t be too difficult for the program to get directly? Or perhaps the program could probe the network or hard drive for some possible clues and present them to the user for choosing?

To be fair, Apple and a few other companies seem to write software that often presents user with intelligent choices. I think the situation could still be improved, though.

As a professional developer I know why it is rare – software is complex and the data might be difficult to access. Perhaps the data is on another machine or there is a library to parse the data, but it requires the use of threads or it is slow and blocks the rest of the program while running (see above).

An issue related to external resources is the program screen. I love the way it allows me to run many programs on a system, detach, go to a different computer, and reattach to that session with all my programs in the same state. What I’d like is for that to apply to all of my programs, not just my Irssi and Emacs sessions.

Finally, I want software to be more flexible. That may take some more thinking, though, before I can explain it.

So my project is to create a testbed application that can be attached/detached, allows for easy access to internal or external data, can easily be enhanced with an internal scripting language, allows for true reuse of code, and is very flexible (again, more on this later).

Yeah, that’s all. Piece of cake.

Fortunately, this will work well as a month long project where the goal is to just write lots of code. It will certainly require lots of code to get running and even more for the benefits to become apparent.


I’ve started using git for revision control with my non-work projects. Over the past 8 years at 3 jobs I’ve used SourceSafe, CVS, Perforce, and Subversion. Perforce is pretty good and SVN is not bad. So far I like Git best. It is the type of revision control system I’d expect from a kernel developer, which makes sense as Linus started it.

Categories: projects, software Tags:

New Projects

November 29th, 2006 kirk No comments

After NaNoWriMo is over and I take a couple days off, I’m hoping to jump right back into the same schedule of working at least an hour a day on one project for at least a month. If that project gets boring after a couple days, I won’t move on to something else, only to give it up after a couple days.

Some ideas for the next project:

  • integrated application testbed
  • new novel or short story
  • electronics

I’m too tired to write out details tonight but I think one of those will make for an interesting project next month.

The key lesson I learned from NaNoWriMo is to cut the perfectionist crap when working on my projects outside of work. Just do it. Don’t assume an idea will work and that it’ll get done someday. Results are everything. Etc.

Categories: projects Tags: