Work Tracking

When I started my first IT job, my supervisor gave me one piece of advice that took to heart, and immediately ignored at the same time:

“Buy a notebook and put it on your desk. Write down everything you do, and everything that is asked of you. Don’t rely on your memory – come Monday, you won’t remember half the stuff that happened on Friday.”

Sure enough, I bought a notebook, took it to work and installed it on my desk. Then I proceeded to never, ever use it because I am not a fucking stone age caveman. Writing stuff by hand is a bit barbaric and uncivilized, don’t you think? So I used my trusty notebook for doodles, and writing down all kinds of reference numbers: case numbers, FedEx tracking numbers, license numbers, phone numbers, etc..

But, the advice above is solid. If you work in IT, you should write stuff down. Ideally, you should use a company wide issue tracking system for this. Every time something happens, someone calls you, or gives you a task, you open a new issue in the system, and then you close it once you are done with it. This creates a nice log of your activities which you can use as a proof that you didn’t just play Nethack and browse Reddit the other day – you did other stuff too.

But of course we do not live in an ideal world, so this solution may not be 100% applicable to your position. For example, lets say you don’t have an issue tracking system. Maybe you have a bug tracking system, and you are not supposed to log stuff like:

“I just spent four fucking hours on the phone, trying to explain to the new guy how to use SVN… Kill me NOW!”

There is a whole class of issues, mini-tasks and chores that you might want to track for your own purpose (ie. covering your own ass when the boss asks why your shit is late) which may not happen to be metrics that you company is interested in tracking. Call it auxiliary memory that you can use to supplement the shitty, flaky and unreliable biological wetware you were born with.

In the past, I tried to implement this sort of logging by using a popup dialog that would ask me what I was doing every hour or so. As you can imagine, this was a horrible idea. No, seriously – if you are thinking about doing something like this, don’t. Unless of course you like to be interrupted every hour on the hour. In fact, if you do like that stuff, why don’t you implement your interruption script to use the Clippy avatar in order to make the experience even more enjoyable.

Clearly this is not the way. Besides, you only want to log stuff that is worth logging. Hourly updates are useless, and they tend to populate your log with messages like “still waiting for my shit to compile”, and etc… You want to log stuff on your terms.

Let me show you a trick that I have learned few years ago, and have been using to log Windows server configuration changes in an easy, hassle free way. Granted, this only works on windows but it is neat, and you could use it as a running work log without stooping down to something as barbaric as a dead tree notebook.

Here is what you do:

  1. Open Notepad
  2. Type this in on the first line: .LOG
  3. Save the file somewhere
  4. Close it

Got it? Good. Now open it up again (using Notepad). If you did it right, Notepad will append current date and time to the end of the file, then insert a carriage return putting your cursor directly below it. This is a built-in hidden feature that most people have no idea about. But once you learn about it, you will love it.

As shitty as it is, Notepad makes for a fairly decent logging tool. Using this trick is quick, easy and simple. The only downside is that the file is not properly structured – the date and time is ass-backwards, and sorting the file is not trivial. Searching for entries from a particular day may require some scrolling, or using Notepad’s built in search. And since the format puts time of the entry on a different line than the entry itself, tools like grep and find can’t be easily used for keyword searches.

I decided to create my own tool that does the same thing, only slightly better. It looks like this:

Work Log Tool - a Screenshot

The basic idea is this: every time you type something into the text box, and hit “Save” this tool will try to append it to a file named something like 2011-05-04.txt, or whatever happens to be the current date written in ISO format. If the file does not exist, it will create it. The little calendar tool can be used for browsing the past entries with ease.

The log files are friendlier to basic text search tools since timestamps are on the same line as text entries, and file names are associated with the date of creation.

I’m not claiming this is the best tool for this job. I’m not even claiming it is a good one. But I figured I might as well share it. Some of you might find it useful. You can grab the installation file from

If you have an idea on how to improve it, feel free to fork it. The code is available on GitHub and the app is released under GPLv3.

Oh, and if you find a bug, let me know.

Do you write stuff down, or otherwise track your work in any way? What do you use? Maybe you have a way better tool than mine. Please share your log writing tricks in the comments.

This entry was posted in technology. Bookmark the permalink.

14 Responses to Work Tracking

  1. Gothmog UNITED STATES Google Chrome Windows Terminalist says:

    I actually use Evernote for things like this, Luke- but usually to track issues and off-site contacts. Evernote has an insert time stamp shortcut (Alt+Shift+D) that gets alot of use.
    My Evernote work notebook is FILLED with entries like:
    Moronic ShoreTel Problem with reports and workgroups
    tags: ShoreTel, Phones, Reporting
    3/4/2011 9:33 AM Left VM for Don @ ShoreTel enterprise support asking for an update to ticket 4543466
    3/6/2011 9:37 AM Left 2nd VM for Don
    3/8/2011 9:23 AM Left 3rd VM for Don, still no reply- he’s obviously a douche- will call his boss
    etc etc etc

    I find it works really well for me, not to track my time- but to track interactions. That way, once I get ahold of Dons boss- I have plenty of ammo to get Don in trouble and that in turn leads to better customer service for me.

    That reminds me, I gotta give Don another call… *sigh*

    Reply  |  Quote
  2. Tino UNITED STATES Mozilla Firefox Ubuntu Linux Terminalist says:

    I was reading this:

    In the past, I tried to implement this sort of logging by using a popup dialog that would ask me what I was doing every hour or so. As you can imagine, this was a horrible idea.

    This just gave me an idea. How about just silently make a screenshot of your desktop every hour and save it with a timestamp as its filename? Of course, this doesn’t catch e.g., you being on phone. But for everything you do on the computer, it should give you a rough idea if you are playing nethack or writing code.

    Reply  |  Quote
  3. Luke Maciak UNITED STATES Mozilla Firefox Linux Terminalist says:

    @ Gothmog:

    I always thought Evernote was more for Web clippings and whatnot. Never actually considered using it like this.

    @ Tino:

    Well… It’s an idea but, I have 6 virtual desktops and 2 physical screens on this machine.

    – Desktop 1 is email running Zimbra Desktop client on one screen, and various email related windows (open attachments, etc..) on the second screen

    – Desktop 2 is Firefox desktop. I have one FF window open for current research on the primary screen, and a dedicated reddit window on the second screen.

    – Desktop 3 is running a VM with an instance of Windows XP. I have the folder that is shared between the host and the gues open on the second screen so I can drag and drop files there.

    – Desktop 4 usually has 3-4 Remote Desktop windows for the Windows servers I’m maintaining on both screens.

    – Desktop 5 usually has the issue tracking app in full screen and related documents on second screen

    – Desktop 6 is extra, in case I need more space.

    Granted, I only usually do one thing at a time, but still. The stuff I do at the computer I can usually remember, or there is some record of them (emails, timestamped files I edited, diff vs backups etc…). What I blank on is the real world stuff – like who I talked to on the phone, what they said, what their name was, etc..

    Reply  |  Quote
  4. Tino UNITED STATES Mozilla Firefox Ubuntu Linux Terminalist says:

    @ Luke Maciak:

    Nice desktop setup. I’m a big fan of virtual desktops myself. I run dual x-servers so that I can switch the desktops independently. This comes with the pretty bad tradeoff that I cannot move windows between the screens, but I wouldn’t for the world switch away the ability of combining any two things of my choice. In fact, I think this is how the default behavior should have been for dual screen virtual desktops also on one x-server.

    As for the screenshot suggestion, what I had in mind was to simply capture what is currently visible, i.e., the virtual desktop you are looking at. That would record the thing you work on that exact moment. But, sure, it does not record real-world stuff.

    Perhaps one could also record a 1 minute sound clip every hour, and store that along with the picture. Even better, make your phone record a one minute sound clip every minute, so you get a log even if you are not at your desk.

    But perhaps you first need to check the laws for hidden recording where you live :)… Also, better keep these logs hidden.

    Reply  |  Quote
  5. After reading this I was thinking “logging parts of your life that honestly no-one really cares about, and wanting it timestamped”… “twitter”

    Why not just build your own little “twitter” script on your site, then you can move around be anywhere on any computer, or even on the phone… and update your “worklog”.

    I remembered this quick script from nettuts: -12-and-php/

    Reply  |  Quote
  6. Stefanie BELGIUM Mozilla Firefox Ubuntu Linux says:

    Hm, interesting idea. The app seems to be windows only?

    Reply  |  Quote
  7. Luke Maciak UNITED STATES Mozilla Firefox Linux Terminalist says:

    @ Tino:

    1. Record everything using a system of hidden cameras
    2. Publish online
    3. ???
    4. Truman Show

    @ Travis McCrea:

    Sir, this is an excellent idea. I am now inspired to write an online version of this. I would like it to look less like twitter and more like personal timeline with no social aspects, and good search features.

    @ Stefanie:

    Actually it works fairly well under mono as well. :)

    Reply  |  Quote
  8. Justyn UNITED STATES Google Chrome Windows says:

    @ Luke Maciak:
    If you make something like this (public), that would really be cool. Just make sure it’s easy to submit something using curl/wget/etc so that it can be updated from the cli without opening another browser tab :D

    Reply  |  Quote
  9. Yeah well I wasn’t thinking highly twitter like, but the same basic “micro-blog” minimalist feel. Glad I could set you up in a fun new direction.

    The thing about projects like these, I always find that I spend more time building a system to keep track of what I am working on, then actually spend on working on the stuff I am supposed to. Its like using all your money to buy a nice wallet. :P

    Reply  |  Quote
  10. Luke Maciak UNITED STATES Mozilla Firefox Windows Terminalist says:

    @ Justyn:

    I could make this a Google App Engine project, and hand off authentication to Google. :) The question is, whether or not people would be willing to trust me with their work tracking data.

    @ Travis McCrea:

    LOL! Yes, I’m the same way. Around the time it’s almost finished, I’m already starting to get bored with it.

    Reply  |  Quote
  11. vacri AUSTRALIA Mozilla Firefox Linux says:

    And since the format puts time of the entry on a different line than the entry itself, tools like grep and find can’t be easily used for keyword searches.

    Look up grep arguments -A and -B (‘after’ and ‘before’). They return the number of lines specified from the target line.

    In this case, you’d grep -B 1 (timestamp) and you’d get returned your timestamp and the one line before it (for each instance, of course)

    Also, on the physical pad thing: it’s something engineers do, and it’s damn useful to have it in hardcopy. After using it for a bit, you get to know what kind of information to store. While it may not suit your workflow, there are workflows where a physical notepad is superior to an electronic one. For me, though, it doesn’t matter what I use, I never make entries :)

    Reply  |  Quote
  12. Ben UNITED STATES Internet Explorer Windows says:

    This is an interesting way of doing this. I always thought of work tracking as based around the action item, which usually grows cumbersome. This stream-of-(corporate-)consiouness workflow tracking seems to be much easier to fit in.

    It would be pretty sweet to highlight a section of the calander on there and have the field populated with what was done over the selected time range. I guess I will have to look at an awk script for that.

    Reply  |  Quote
  13. Stephen UNITED STATES Google Chrome Ubuntu Linux says:

    Before we were forced to use netsuite something horribly inferior, i used the hamster program found in the ubuntu repos. Terse, logged to sqlite3 for convenient python parsing and reporting. Very non-intrusive.

    Reply  |  Quote
  14. @ Stephen:

    Incidentally hamster now ships with a cli command for making things really friction-free. I alias it to hc (hamster-cli), and do things like this:

    hc list
    hc start ‘working on ticket-314’
    hc start ‘working on ticket, forgot to enter start 5 mins ago’ -5
    hc stop

    pretty nice, and really nice stats graphs.

    Reply  |  Quote

Leave a Reply

Your email address will not be published. Required fields are marked *