left arrow

Software

2022-03-25

Automating university coursework time tracking

Go to motivation

Motivation

For some modules at Vilnius University, we are required to fill in a time tracking form (Laiko Fiksavimo Forma in Lithuanian, abbreviated LFF) when doing the coursework. The form covers some of the basic tracking parameters where each row in the form represents a time period when you worked on the crousework:

  • Date
  • Starting time
  • Finishing time
  • Disturbances
  • Total time (= Finishing time - Starting time - Disturbances)
  • Activity name
  • Comments

The original LFF

While the idea of this form is pretty straightforward I found it hard filling it in the way it was meant to be filled in - after working a certain period of time, you are supposed to add an entry to the form. I noticed that I usually filled in all of the form after completing the whole coursework and it took quite some time.

Go to goal

Goal

My goal was to ease the process of filling in the LFF since I found it cumbersome doing it manually. I decided to automate by utilizing git. It was an easy decision since I (and a lot of other students) keep the crousework on GitHub and I'm already doing incremental changes/updates to code - why not make use of the commit history?

Go to implementation

Implementation

A nice thing with this approach is that we already add some data automatically when commiting changes. As an example, the commit has a timestamp which we can interpret as data for the LFF. In a lot of cases, you also start working on the next feature of the coursework after finishing the previous one - we can take the time interval between the current and previous commits. In the commit messages, you specify the activity, comments, etc. and the app will try its best to generate an LFF for you.

Here are some examples of LFF commit messages:

git commit -m "LFF: Documentation" -m "Started writing documentation for new feature"
git commit -m "LFF: Programming" -m "Added feature X <START=13:06>"
git commit -m "LFF: Programming" -m "Refactored UI dropdown component <DISTURBANCE=00:23;Lunch>"
git commit -m "LFF: Planning" -m "Created class hierarchy <START=2022-03-20;16:32><DISTURBANCE=00:18;Taking out trash><DISTURBANCE=00:07;Phone call>"

You can find all of the syntax rules in the Frequently Asked Questions section of the project page

An example of a generated LFF:

Go to improvements-for-the-future

Improvements for the future

I don't have a lot in mind for the future of this project. However, it would be nice to add more exporting options such as Export to CSV. I'm open to suggestions and contributions. Maybe someone will want to improve this since this is an open source project. Feel free to head over to this project's repository.

You can check out the project page here.