A downloadable tool for Windows and Linux

Why use it?

Why not? Besides, you’ll be able to create, duplicate, move, rename, archive, restore and delete tasks at the distance of one (or two) key stroke(s). You’ll also be able to edit the time spent on a task by adding, subtracting or setting the time you want. But that’s not all!

With the Track’n’Close technology, you won’t need to keep the app always open. Once you start tracking time for a task, the app will keep track of it, even if you close it or turn off your computer.

Count seconds, minutes, hours, days, and even years… all the way up to infinity* thanks to the not-so-new technology of 64 bit integers.

Be amazed by the compact interface that automatically adapts the time representations while maximizing the displayed precision.

Cleanup the workspace by moving your finished tasks to the archive. Want to bring back some archived tasks? No problem, just switch into the archive view and restore them.

Ever felt like your data is being held hostage? Not anymore! Import and export your tasks using the widely supported CSV text file format.

Want to be part of the last frontier? Grab the new bleeding edge stuff: Version 2 brings sorting capabilities; better text input with UTF8 support; possibility to archive and reset all current tasks with a single command; and allows to merge tasks with the same name. As an extra , you'll need to export and re-import your tasks due to some database incompatibility (oh, the joy). With version 3 all your data is stored in CSV format, so that you can migrate your database one last time (yay)!

And if you don’t like what you’re seeing, this is your lucky day! Because you have access to the source code, you can adapt it to your needs!

Task Time Tracker - You may not need it, but I enjoyed making it!

* Although the app cannot count to infinity, it surely displays it (∞) if the time goes to 9999.5 years or above. Also, it will display a minus (-) if you force a time to have negative values.

Why create such tool?

I like to keep track of the time spent on my daily job’s tasks. It helps me be aware of time pits, and improve my time estimates. This motivated me to search for a simple app that allowed to take measurements without too much effort.

After skimming through all cloud-based and too-complex apps, I eventually landed on some text-based user interface (TUI) apps. The one that almost convinced me was worklog, but I just couldn’t come to terms with its interface.

So, after spending more time than I’d like to admit searching for a task time tracker, I decided to take matters on my own hands. Maybe I just needed to improve my search-fu. Maybe it was just an excuse to write some code. Either way, I wasn’t turning back.

Why use C and ncurses?

I’ve been looking for an excuse to revisit C, which I haven’t used for more than a decade, and this seemed like a good opportunity: a simple app with a small set of features. But how would I build the user interface? I didn’t want to learn an advanced toolkit just for this small project, and since the TUI apps had somehow resonated with me, I decided to try out the ncurses library which has been surviving the test of time.

Because this was an hobby project focused in exploring C and its standard library, I allowed myself to obsess with whatever details I wanted to. This serves to justify the lousy code, and explains the fun I had.

Overall, it was a satisfying experience with occasional moments of frustration whenever “string” manipulations were required. And now that the first part is completed the best part begins: let’s try to implement it in Jai and get some hands-on experience of how the two compare. See you on the other side. 🖖

What is Jai?

Jai is a temporary name used for the programming language being developed at Thekla, Inc.

Why port it to Jai?

Because I love to explore, and I needed an excuse to try out the Jai compiler I got access in the meantime. This allowed me to experiment and compare this new programing language against the original C implementation.

During the initial pass to port the code, I made some small adaptations due to syntax differences, and improved some data types (finally, I could replace all those *u8 with proper string). The initial pass was easy, so I decided to add some features I missed while using the app on my daily job.

Still, the ncurses dependency was bothering me. Although the language is well prepared to interact with C/C++ libraries, and I was able to quickly setup the necessary bindings to use ncurses, it didn’t fell right… this dependency was blocking me from building this app for different operating systems (OS). Could I replace ncurses with something native to this language? Yes… but that require much reading and coding, and that’s what I did.

After surfing an uncountable number of websites and manuals about linux, terminals, escape codes, and whatnot, I ended up creating TUI, a simple terminal user interface module that provides basic functionalities similar to the ncurses library, written in Jai to allow portability between OSs.

Working with this new language was a joyful experience. Most of the time it felt like I was simply cleaning up (simplifying) the code, with very little friction. There was no hiccups setting up the project or adding new modules, it all just worked. I really hope this language gets to spread its wings.

Download

Download
task_time_tracker-v3.2.tar.gz 211 kB
Download
task_time_tracker-v3.2.zip 217 kB
Download
task_time_tracker-v2.2.tar.gz 206 kB
Download
task_time_tracker-v2.2.zip 213 kB
Download
task_time_tracker-v1.0.tar.gz 43 kB

Development log

Leave a comment

Log in with itch.io to leave a comment.