Lapsus

May 4, 2009 | Leave a Comment

I’m making a Desktop time tracking application for the Mac called Lapsus. When I tell people Lapsus is a time tracker without timers, their first reaction is usually “OK… so how does that work then?”

So in this post I want to talk about exactly how Lapsus works. I’ll cover a whole raft of features I’m considering.

In Brief

Lapsus allows you to track your time without manual timers. Just work as normal and Lapsus tracks your computer usage in the background.

The Core – Time Tracking

Lapsus does away with timers by polling the active window every few seconds. It tracks documents, URLs and other activity.

Document Tracking

You tell Lapsus which folders on your hard drive are for projects. It gets the path of the active document in the background. If this document is within a project folder, it assigns the time spent to that project.

URL Tracking

Lapsus gets the URL and contents of pages you visit. Commonly unproductive domains will be supplied as standard – Twitter, Facebook, etc.

URLs that relate to different projects all the time like http://localhost will log time to the last active project – perfect for those who test the web sites they’re developing locally.

Lapsus has a list of URLs that is associated with each project. This list updates as it learns your behaviour. For more details see Daily Review.

For URLs that don’t come up repeatedly, Lapsus will learn what project they are for based on the text on the web page.

Tracking Non Document Applications

Non Document Applications don’t operate on documents on disk. Examples are Mail, Terminal, iChat, DVD Player, iCal, Address Book. Lapsus will have an architecture that allows anyone to develop a plug-in that will work with any of these applications to determine what project the user is working on.

Example 1 – iChat

The plug-in could look at the contact the user is chatting with. It could get the email address of that person and by accessing the Address Book, find out what project that contact belonged to then attribute the time to that project.

Example 2 – Terminal

The plugin would scan the history of the Terminal prompt, looking for certain commands. It could assign that time to certain projects based on the command, or the directory in which the command was being run. For example, you could assign time to a specific project when sshed into a specific IP address.

Tracking Offline Time

Lapsus could guess what you were doing when you were off your computer. If you went to a meeting, for instance, when you returned to your keyboard, Lapsus would check your calendar in iCal. If the time you were away coincided with the meeting, it would assume you had been at the meeting and would assign that time to that project.

Daily Review

At the start or end of every day, Lapsus will prompt you to review your times. The interface for this will be based around iCal – a calendar view of your week or day and coloured entries to represent how you spent your time.

As well as reviewing how you spent your time, you can correct any mistakes made by Lapsus.When you correct mistakes, Lapsus will store this information and learn your behaviour.

I hope to develop an algorithm that guesses what project you’re working on with 70% accuracy out of the box. After a few weeks training, this should increase significantly. After a few months, corrections should only be occasionally needed.

Plain English Activities

Lapsus will be able to give a plain English description of an activity by looking at what file type you were editing, what application you were in or what project you were working on. Each activity will have some properties associated, such as if it’s Billable or not.

Examples

  1. If the active application is Mars Edit, activity is “Writing a Blog Post”
  2. If the active document was a Ruby file, activity is “Editing Ruby Code”
  3. If the URL is http://localhost:3000, activity is “Testing Code”
  4. If the Terminal is active and ssh is in the running processes in the current tab, activity is “Running Remote SSH Session”
  5. If the active application is iChat, activity is “Chatting to *Name of Contact*”

Integration

Once Lapsus has accurate time information about what projects you were working on, you can choose how you use this data. Lapsus will be able to send times to other Desktop and Web Applications to Invoice, Collaborate or Report.

Examples of such apps would be Excel, Billings, BaseCamp, Harvest, Less Accounting, Free Agent, Mite, Tempo, Intervals or Unfuddle.

Progress

Currently Prototyping

I’m currently still trying out many of these ideas in prototypes. When I’m happy that I’ve got it working for me in a rough way, I’ll be building the first Alpha.

I’m initially aiming the application at Ruby on Rails developers. Long term, it’ll be an application that can work for any freelancer, but because of the complexity, I need to focus my time and energy on getting Lapsus to work really well for just one group of people at first.

Alpha Testers

I’m on the lookout for brave testers for my very early Alphas. If you’re a Ruby on Rails developer who’s interested in my idea and has some time each week to give feedback, please contact me using the details on the About Me page.

Timescale

I’m aiming for a public Beta by Christmas 2009. If you’d like to be kept up to date with the progress of Lapsus, please contact me using the details on the About Me page. I hope to release Version 1 in April 2010.

Wrap Up

I hope that this has cleared up some questions about how Lapsus will work. I’d love to hear people’s feedback in the comments.

Post to Twitter Post to Delicious Post to Facebook Post to Reddit Post to StumbleUpon

Comments

Leave a Comment