Showing posts with label eclipse. Show all posts
Showing posts with label eclipse. Show all posts

Tuesday, January 12, 2016

How I Log My Time In My Sleep

Photograph by: apops, Fotolia.com
Every day last week, I woke up to see that my development time had been logged.

But I haven't logged in to FreshBooks since 2015.

Like many other development teams, our company uses FreshBooks to track our time and invoice clients.  It's a great tool with all the features we need for day-to-day operations. However, as a programmer, over the years I have failed to use this tool properly, and neglected my time logging duties until it was absolutely necessary. This neglect often required "time logging parties" with other members of my team who had been equally neglectful, which was a kind misnomer for stressful sessions of reading through e-mails, project management tools, git logs, hand-written notes, and anything else to help us remember just how much time we spent working on something.

And, like many other development teams, I work on multiple projects per day -- sometimes per hour!

For me, the most frustrating thing about logging time is essentially having to record my operations so many times. First, when I tell a client what I'm going to do. Again when I code the thing I was supposed to do. Then, I write fairly detailed commit messages describing what I did. Finally, I communicate with the client that the thing was done. And now I have to write all this again in an time tracking tool?! Ugh.

It doesn't often get done. And when it does, it isn't efficient. Time should be logged in-process.

I've tried stopwatch solutions, but they simply don't work when you forget to hit the button. And I'm too busy (forgetful) to hit the button. Or, I get distracted with something else going on, or a client calls, or I need to task switch immediately, etc. etc.

Why can't I just code and have my time tracked as I code?

Well, now I can, thanks to WakaTime.

WakaTime advertises itself as FitBit for programmers, and that's a pretty spot-on description. In the same way that FitBit tracks your statistics just by you doing your everyday tasks, WakaTime tracks your time spent in your IDE of choice (Vim, Eclipse, Android Studio, and many more) and automatically uploads that information to the web. At the end of the day, just by coding, you've got a picture of everything you've worked on for the day. For free.

"Yes!"
To complete the puzzle, though, I needed to get the time out of WakaTime and in to FreshBooks. There wasn't anything out there that did that for me, so I created it:


WakaTimeFreshBooks is a Java command-line client that pulls the time logged for a given day in WakaTime and pushes that information as time entries into FreshBooks. After a couple minutes of setting up my API keys and matching up the WakaTime projects I wanted to log with FreshBooks projects I wanted to send the time to, I was up and running. Simple, yet effective.

On December 28, 2015, I set this to run as a daily cron job, and I haven't logged time since.

Now eventually, I'll have to edit my time sheets to include useful notes for invoices. And I still need to log out-of-band communications, as well as testing and video conferences (although, WakaTime is working on solutions for those things!). But, for now, I know that my coding time has been submitted, and that it's fairly accurate, which is much more than I could say merely a few weeks ago.

And I didn't have to do anything but code.

--
Carl Scott
Software Developer, Solertium Corporation
View Carl Scott's profile on LinkedIn View Carl Scott's ohloh profile

Wednesday, April 8, 2009

OSGi and Eclipse Make Me Smile

So, I finally did it.  After some preliminary research and a bit of procrastinating, I went all in and began to adopt the newfangled OSGi approach.  Er, maybe not so new, but new to me.

Surprisingly, everything now seems to just ... work.  After months of toiling with Eclipse trying to ensure that my classpath settings were right, and dreading every completely updating as I knew my classpath would be shredded to bits by a co-worker, the combination of some built-in plug-in development tools from Eclipse and some knowledge of OSGi have brought me to tears ... of joy.  

Anyway, a while back, somewhere between the research and procrastination, I came across a very helpful presentation that got my feet wet, and I'd recommend as a nice starting point for newcomers:


The conversion of my projects from the traditional monolithic project to the multiple modules approach was not initially fun.  I'd actually compare it to the transition from creating verb-based Web Services to RESTful Web Services, to a degree.  The presenation below goes into more detail on things related to that.


So, tying this all into Eclipse: if you've got a fresh version, a lot of the work is done for you via the Plug-in Development Tools!  Simply take the time to appropriately fill out your Manifest information for your bundles (er, plug-in projects), create an Application using said bundles (again, it's built-in), and you're off to the races!  And one thing you've got to appreciate is work already done for you!

:)

Anyway, you can of course find Eclipse-related resources on their site, which has treated me pretty well in regard to finding information I'm looking for.  But the links above were particularly helpful for me to start from scratch and sink my teeth into OSGi.  Hope you find them useful, and feel free to submit your own references!

--
Carl Scott
Software Developer, Solertium Corporation
View Carl Scott's profile on LinkedIn View Carl Scott's ohloh profile