Remember The Milk Time Management

Saturday, June 12, 2010

If you're a system administrator, chances are you're always pressed for time. Between supporting end users, working on new projects, and just maintaining all those systems you administrate, it's hard to find the time to get everything done. I know I've found time management to be a difficult thing to tackle, but there's a book I've read that addresses our particular situation. Time Management for System Administrators by Tom Limoncelli is a great read for anyone who either needs help organizing their time, or could use some original and effective strategies for our line of work. It says "for System Administrators," but it is a great "getting things done" book for anyone who has a high volume of things to do and a lot of interruptions that create new tasks.

In the book, Limoncelli puts forth a method (called "The Cycle") to tackle day-to-day tasks in a logical way that maintains task priority, even while being bombarded with more things to do. I have taken this system and modified it to fit my own needs. I have been using Remember the Milk (RTM) as a way to implement the system, and I have found it to work perfectly with this method.

For this system, you'll need a single list to store everything you have to work on. This can eventually be more than one list, such as one for personal, one for work, etc., but you'll want to group large portions of tasks together. To start, enter all of the things you don't want to forget about, but don't plan on actively working on in the immediate future. Enter these with no due date, and you can classify them further by priority if you desire. Next, enter future due dates for any tasks that need to be set aside for a later date (such as following up with a vendor after a week). Finally, enter a due date of today for everything else. I should note that even though you're setting this due date of today, that does not necessarily mean you will be working on those tasks today.

For everything that you set due today, you'll need to assign priorities because these tasks will be your list of things that follow you day-to-day until they can be completed. Limoncelli's system uses A, B, and C, which corresponds perfectly to Remember the Milk (1, 2, 3). Priority 1 (P1) should be everything you actually plan to do today. Plan this seriously with how much you know you can do, and mark fewer tasks than what you think you'll actually accomplish. Priority 2 (P2) is everything that you need to do tomorrow. You will change these to P1 tomorrow when you are planning out your day. Priority 3 (P3) should be for everything else. At this point, you're all set to begin the daily process of using this system.

According to the system, your day's work will come from all P1 tasks due today. If you happen to finish those, you can move on to the next priority (tomorrow's work), although this is not expected. The following day, your tasks jump up a priority, and you have what you're working on that day. As you're interrupted during the day, you can quickly throw the tasks into P3 for today (for example, "Fix Susan's e-mail configuration today !3"), or at a higher priority as needed. The key to the system is to document new tasks that come up, but forget about them until it's actually time to do them. The less brain power you waste on keeping track of things, the more you can spend on actual work.

An added bonus you'll get from RTM is the search list. You can create a search for your daily tasks by searching your main list for everything P1 that's due today. After prepping for the day, you can switch to this search list so you can actually finish everything on your to-do list for the day! It's very disheartening to look at your list of hundreds of things to do, with no hope of ever emptying it (if you did empty it, you might not have a job :)). This search list lets you complete everything on the list, and actually feel accomplished.

There are several other bonus features that are extremely convenient. One feature is time estimates. By filling this in for your tasks, your search list will give a nice total time estimate of how much work you have left for the day. You also will benefit from repeating tasks. Have to swap a tape every Monday? A P1 task due every week on Mondays will make sure it's always in your daily list when it's necessary. Finally, you can have a great repository for all of your completed tasks with RTM. It's great for job reviews, since you can see everything you've worked on over the year in one convenient location!

This system has definitely increased my productivity, and has helped me make sure nothing falls through the cracks. Plus, it keeps me motivated by fighting back constant interruptions and letting me see the end of a list to know I accomplished something!



Excel VBA Macro to Execute a Stored Procedure

Sunday, September 20, 2009

The other day I came across a problem of running an MS SQL 2005 stored procedure in an Excel VBA macro. I had set this up before with another stored proc, which worked just fine. Copying this code (and later trying several other ways of doing it) always ended up with a closed recordset being returned. My exact error was a run-time error 3704 with the message "Operation is not allowed when the object is closed." The code looked something like this:


' Create new recordset object
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

' Get data to populate spreadsheet
' Assign the Connection object.
rs.ActiveConnection = cn

rs.Open "exec database.dbo.storedProcName", , adOpenDynamic, adLockPessimistic

' The error came up here
Application.Workbooks("Spreadsheet.xls").Worksheets("InvAdj").Range("A2").CopyFromRecordset rs
' Clean up
rs.Close
Set rs = Nothing

There didn't seem to be anything wrong with the proc, which ran fine in the management studio, and the VBA code was identical to what I had used in another macro to do the exact same thing (just return data). A lot of Googling didn't turn up much, but it sort of led me to believe it had something to do with the temp tables used in it. Going off of this, I finally found my problem. The proc was returning multiple recordsets, and the first one I get back after the .Open was empty. I needed to add the following after the open:


Set rs = rs.NextRecordset()
Set rs = rs.NextRecordset()
Set rs = rs.NextRecordset()

Although ugly, this got me through the other recordsets I got back and let me get to the data I needed. My hope is that I can get this p
ost crawled enough to show up sooner in some other poor soul's searches for this same problem.



AJAX and PHP WebMail Clients (and other ramblings about apt-get dist-upgrade)

Sunday, March 15, 2009

There was recently an article I saw online (Slashdot or Lifehacker, I can't remember) about 10 AJAX and PHP webmail clients. The article is here. I check them all out one night and I ended up liking RoundCube the best. Since I started trying out IlohaMail for a webmail client with my IMAP server, which was very plain and not very user-friendly at the time, I figured it would be a good opportunity to give it a try.

I installed it on my laptop, just to test it out, and it worked great. I immediately brought it to my server to set up and start using. There is a good installer built-in to help with any initial configuring, but it's only really 2 config files and some permission setting, so I just copied it over from my laptop and edited the configs. Unfortunately, I found that it uses a command (mb_check_encoding) that requires a higher version of PHP than what I was running. Since I update every night, I found out that my installation of Ubuntu Dapper was getting pretty old. I figured this would be as good a time as any to upgrade...

I ended up upgrading from Ubuntu Dapper to Ubuntu Hardy, which led to problems with php5-mysqli (it became a part of php5-mysql, but I hadn't done a complete upgrade yet). After I finally got everything settled, I attempted a reboot to get the new kernel. Of course, this led to more problems with Evms. My /etc/fstab was changed to include those stupid "UUID" entries instead of the actual devices (ie, /dev/hda1). After booting into the old kernel, editing the fstab, and removing evms (I noticed the problem originally because it spit out a kernel message like "dm-linear device lookup failed" every half a second), I was back in business. Plus, as a nice bonus, IVTV is now built in to the kernel, so I don't have to worry about adding it as a module anymore.

So, to get back to my original topic, RoundCube is a very nice webmail client, which I found out when writing this uses IlohaMail code for handling IMAP. It uses AJAX in a way that makes it easier to use the application, but doesn't go overboard. It very simply handles your IMAP mail and folders, and has an additional address book. It's perfect for getting to your e-mail quickly when you're at someone else's computer.



Installing Google Gears on Ubuntu 64-bit

Sunday, March 15, 2009

As an avid user of Remember the Milk, I recently noticed that my offline support wasn't installed on my Linux laptop (Ubuntu 8.04, 64-bit). I went to install Google Gears for this, but realized that it was only available for 32-bit at the time. A little bit of Googling and I found this site. This guy put together the .xpi files for a patched version, which I have found to work completely normally.

Just in case it becomes unavailable at that site, here is the latest version I downloaded from there. Note that he says it is current as of February 2, 2009, so it could become outdated pretty soon, but at least it's here until there is an official version out for 64-bit.