The maze book for programmers!

Algorithms, circle mazes, hex grids, masking, weaving, braiding, 3D and 4D grids, spheres, and more!

DRM-Free Ebook

The Buckblog

assorted ramblings by Jamis Buck

Dealing with project overload

16 February 2008 — 2-minute read

I’ve got my plate full of projects that need attention, and the stress has been getting to me. Everybody has different ways of dealing with stress, but I think mine is the least effective: ignoring things doesn’t make them go away.

So, I’m taking a more active approach. Starting immediately, I’m going to be spending one hour, every day, six days a week, clearing away the backlog of projects. I’ll post a comment each day to keep myself honest—if I don’t leave a comment, you may assume I did not do any work that day!

Here is a list of what I’ll be working on, more or less in order of priority:

  1. Capistrano 2.2.0. This will primarily be a maintenance release, and mostly requires that the patches that are pending be tested and applied. It will also update the Net::SSH and Net::SFTP gem dependencies so that they explicitly exclude any 2.0 versions of those gems.
  2. Net::SFTP 1.1.1. This is a super minor release with no new features. All it will do is update the gem dependency on Net::SFTP such that it won’t try to load Net::SSH v2.
  3. Net::SSH v2, Net::SFTP v2, Net::SCP v1. These will be released simultaneously. They are an 80% rewrite of the original code (and yeah, rewrites are evil, but sometimes they are necessary). The API has changed, and scripts written against the existing API will almost certainly be broken by the upgrade, so make sure you are depending on version 1.x.
  4. Capistrano 2.3.0. This is another maintenance release, which simply modifies Capistrano to work with the new Net::SSH and Net::SFTP versions. (Possibly Net::SCP, too, not sure about that yet).
  5. SQLite3/Ruby 1.2.2. A maintenance release. Haven’t seen a release on this for a long, long time. No new features planned, but lots of bug fixes are pending.

I’m not even going to try and give an ETA on these. Just know that I’m working through them, an hour a day, and that progress is finally being made. I’ll post what I worked on in the comments to this thread, for those who want to follow along.

Reader Comments

Great to hear about capistrano 2.2. Been waiting for the git-related updates.

And yes, I’ve found it’s helpful to (if possible) have set work schedules for your different projects. 8 am to 10 am for open source stuff, 10 am – 5 pm for real work or whatever.

The whole Internet is watching you now, Jamis. You better do your homework!

Haha, I share your pain :) I’ve recently found that all the administration involved in going self employed has sucked all my development time, so I’ve got loads of technical things I’ve wanted to play with for ages that have just sat there. It’s really frustrating having more things you want to do than time to do them (although it’s actually a good sign – at least shows you’ve got some ideas!).

Do you follow Getting Things Done? I find that just writing EVERYTHING down that needs to be done puts it in perspective. At least then everything is just an item on a list, and not some nagging, draining worry at the back of your mind.

I’m having similar problems. It’s a good exercise for me to look at how other people are doing it.

Just a quick update: today has been crazy and tomorrow will be worse, so I may already have to break my resolution. :( I’ll do what I can, though, even if it is just reviewing and applying a single patch to Capistano.

Applied the following Capistrano patches this afternoon: #10918 (Git module for Capistrano should use checkout instead of merge), #10922 ([PATCH] fixes the bzr export functionality), #10928 (bzr module should support next_revision), and #11107 ([PATCH] define roles as blocks). I’m particularly excited about the new dynamic role feature (from #11107)!

Congratulations on committing those patches Jamis! It’s no small accomplishment to get something done in the face of such a massive list you’ve compiled.

Tonight: I reviewed #11137 ([PATCH] Distributed Git support for Capistrano 2.1.0) and wanted to apply it, but due to other git patches I had already applied it would not apply cleanly. I left a note for the author to update the patch. I was able to successfully apply #10819 (PATCH[TINY] capistrano deploy.rb: doc s/cap setup/cap deploy:setup/), and I fixed bug #10093 (cap deploy:stop brings “Couldn’t find any pid file … matching ‘ and bug #10911 (capistrano “cap -e” command doesn’t work in an emacs shell buffer).

At this point, all Capistrano-related tickets in trac have been reviewed and commented on. I’m awaiting some action on a few of them, others are open pending patches from others. I’ll let this stew until next week to give people a chance to respond, and then we’ll start moving forward on a Capistrano 2.2.0 release. In the meantime, I’ll start moving down my todo list!

Today I closed the following tickets, to tidy things up: #10801 (marked wontfix), #10411 (marked invalid), #9999 (marked wontfix), and #9947 (marked incomplete). I also sent an email to Matthew Elder (the maintainer for the Mercurial module in Capistrano) asking him to review #11187. Lastly, I applied the patches for ”#11137”: (Distributed Git support for Capistrano 2.1.0) and #10264 (Throttle capistrano to only run against max_hosts connections at once). The ticket list for Capistrano is now at a much more manageable number: four!

I applied #11187 (Capistrano’s Mercurial module doesn’t support prompting for SCM passwords), as well as a change suggested by James Duncan Davidson regarding an alternative server-centric method to define servers and roles. I then packaged up a preview release of Capistrano 2.2.0—please check it out and give it a try.

Applied #11202, and commented on #11203. I wanted to try and package up Net::SFTP 1.1.1 tonight, but that’ll have to wait for Monday.

Tonight, I packaged and released Net::SFTP 1.1.1. Feels great to be (finally) making some steady progress on these things!

Worked on the tests for Net::SFTP v2. This is where we start hitting some of the slow going. I feel like I’m slogging through, only getting a few lines of code per session. Testing Net::SSH and Net::SFTP is one of the most challenging things I’ve done, and unfortunately I don’t feel like I’m doing it very well. Still, once it is done, it is done. :)

Ignore my comment in the other thread, I didn’t see this post before that comment.

It’s good to hear that things are picking up again in the Net::S** realm. I realize it’s hard work, but know at least that it is very much appreciated. :)

Cap 2.2.0 is alive!

More slogging through the tests in Net::SFTP v2. Baby steps, baby steps…

More work on Net::SFTP v2 tests and documentation.

I moved the v2 repositories for Net::SSH and Net::SFTP to git, hosted at github. Links to the repositories themselves can be found on my profile page at github. I’m still new to this git thing, but I’m really liking it!

I also wrote some more Net::SFTP tests and documented a bit more.

I worked with @halorgium today to get Capistrano mirrored at github (et voila). I’ve also continued to work on documenting and testing Net::SFTP v2 (also at github).

So, I guess I kind of stopped updating the comments here. :) I’ve not been idle, though. For further updates on what I’ve been working on, feel free to check out my github profile, which includes a stream of all commits to my github-hosted projects (including net-ssh, net-sftp, and net-scp, as well as capistrano, which is currently being mirrored there).

Jamis, I’ve always wondered where you find the time to produce so much great stuff. It’s amazing and inspiring! I hope some of it is on 37signals time because you make them look good!

Anyway, don’t feel bad ignoring us greedy masses for a while, we’re not worth causing you any stress! :-)