productivity

I'm going to start pulling my del.icio.us links in as a post like the cool kids do. Here are the links from yesterday to kick things off...

Time in a Bottle

Keeping track of the hours I work for clients has always been a hassle. My standard method was Notepad. Yep, it's sad, but I have a folder for each of my projects—along with a text file full of notes about that project. And I used to jot the amount of time I spent on the project somewhere in the file. Typically I'd have a [date] - [hours] notation, and when it was time to invoice I'd have to go back through emails to find out what those hours were spent doing. Sloppy.

I've tried using time-tracking software. Earlier this year in a fit of organizational desperation I put all of my projects and hours into a program called Timesheets Lite. It tracked hours alright, but trying to get at those hours at the end of the month was a nightmare. I could get an invoice once, but then the hours were "reconciled" and trapped in a database somewhere inside the program. Sure the software had a bunch of "features" like invoicing and reporting, but I like my manual invoicing system fine. And that's what I've found with all of the software I've tried for tracking hours: it provides an entire "workflow solution" rather than a simple way to track hours.

When I stepped back, I realized that all I needed was a stopwatch with a log. I wanted a big green button for go, a big red button for stop, a way to choose which project I'm working on, and list of all my work sessions. So I spent a few non-billable hours coding my own stopwatch, and I thought I'd share it here. It's nothing fancy: no invoicing, no reports, no charts, no to-do lists. Just a simple timer + some notes.

And it's in ASP classic just to make it even less useful. ;) But if you have a Windows server with SQL Server and want your own time-logger, here's how to build it:
  1. Create the database. It's two tables, hours and projects:
    CREATE TABLE time_hours (
    	sessionID int IDENTITY (1, 1) NOT NULL ,
    	projectID int NULL ,
    	startTime datetime NULL ,
    	endTime datetime NULL ,
    	Notes varchar (255) NULL 
    )
    
    CREATE TABLE time_projects (
    	projectID int IDENTITY (1, 1) NOT NULL ,
    	projectName varchar (50) NULL ,
    	projectRate int NULL 
    )
  2. Grab this script: trackhours.asp (Change extension to .asp.)
  3. Add your database details to the top of the script.
  4. Open the script at your server in a web browser, create a project, click Start Timing.
I can add notes to every session, and then go back and edit those notes by clicking on them once the session is finished. (Handy for noting what I actually did vs. what I set out to do.) I can create a new project by choosing "Create New Project" from the drop-down, which gives me a few extra form fields for project name and hourly rate. There's no way to delete a project, but I haven't needed that yet. There's just one session open at a time, and when I'm done working I just click the big red button and that session is added to the top of the list. There's a list at the bottom of the page showing the last 20 sessions or so. In action the script looks like this:

TrackHours screenshot
starting a session

TrackHours screenshot
session in progress

(The data has been garbled to protect the innocent.)

I figured someone else out there might not want to burn the few hours it takes to put this together. I've been using this script for just over a month, and so far it's fantastic. I have a running log of how I've been spending my days, and an estimate of how much I'm making during the week. I'm finally feeling organized when it comes to tracking hours. And since I've been freelancing for about five years, it's about time.

Finding Lost URLs

A week or so ago, a page by Professor Solomon called The Twelve Principles made the link rounds. The prof lays out a 12-step plan for finding any lost object. Most of the principles are mental tricks to get you back to the place you lost a physical object: your keys, your glasses, your cellphone, etc.

Unfortunately, the principles don't translate well to digital objects like URLs. You didn't stick that URL for the Xbox hacking How-To in your junk drawer, and it's not likely to be stuck in the "Eureka Zone" under your keyboard. But I lose URLs all the time. I remember something I saw on the web a couple weeks ago and I can't figure out how to get there again.

I don't have anything close to a 12-principle system for finding lost URLs, but I thought it'd be fun to examine my haphazard ways of re-finding web things. These are probably obvious, but I thought collecting them together would help me start a system for finding those lost pages, blog posts, and other digital artifacts that I'd like to see again.

1. Google - As you already know, Google is great at finding things, and I can usually get back to old URLs by remembering keywords for the document. Even if I don't find exactly what I was after, I can sometimes find good substitute information on the same subject. Unfortunately, a query like "SQL Remove Duplicates" will bring up thousands of documents, and if I'm looking for a specific bit of code I found once for removing duplicate records in a database the search has to go to the next stage.

2. Browse Browser History - Ctrl-H in the browser will bring up your surfing history and it can be a lifesaver if I know I visited the URL within the last week or two. It's especially helpful if I can remember the approximate time I was visiting the page I want to find, and I sort the history by date. But because browser histories only show the domain and page title, it's not very useful if I simply remember the subject of the page. I don't think of pages in terms of the domains they're hosted on, I think in terms of the page's content. (Searching your browser cache with something like Google Desktop might be better because you can search the full text of your browsing history, but I haven't started using this regularly.)

3. Revisit Web Haunts - Chances are good that I probably found the link I'm looking for at one of the sites I read regularly. Since I follow hundreds of sites with the news reader Bloglines, this can be a big search. Unfortunately the "Search My Subscriptions" feature at Bloglines isn't working for me, so generally I'll try to narrow down which site would have had the URL and then go back in time for each site individually using the "Display items within the last x" feature. Then Ctrl-F can help me find specific keywords within past posts. Google can also come in handy here. If I know I spotted a link about SQL on O'Reilly Radar, I can use the site: keyword like this: site:radar.oreilly.com SQL.

4. Search People - del.icio.us just rolled out a feature called your network that lets you track other del.icio.us members. There's no search yet, but you can browse back in time to see what people you know bookmarked at del.icio.us. I think this'll be handy, and I have gone back into specific people's del.icio.us archives looking for a URL. Having them all in one place is good for browsing, and saves time if I can't remember exactly who posted the link I'm looking for.

del.icio.us leads into my primary strategy for finding lost URLs: make links more findable before they're lost. Here's how I do it.

1. Use Web-based Bookmarks - I use del.icio.us (my bookmarks), but there are a bunch of web bookmark systems out there. When I come across a URL I know I'm going to want to get back to at some point, I'll click the del.icio.us bookmarklet and tag it. Searching my del.icio.us bookmarks is easy, but like your browser history, you're only searching titles, tags, and notes, not the full text of the site you bookmarked. Yahoo's My Web, and Google's Personalized Search both do better on the searching front—which leads to...

2. Turn on Search History - Privacy implications aside, I've found Google's Personalized Search handy for finding lost URLs even though I have mixed feelings about it. Once enabled, Google will remember every query you make and every search result you clicked on. You can then search just those sites that you clicked on in the past. Of course, that means everything you've searched for and every site you've clicked on is stored in a digital archive somewhere. I go back and forth, but privacy usually trumps findability for me so I might remove this option from my toolbox soon.

I should echo Professor Solomon's 13th principle: sometimes you can't find what you're after and you have to give up. The Web is ephemeral and pages come and go all the time. Even though it's maddening not to be able to get back to a document I know I've seen, that's life. What strategies am I missing?
Newer posts »