That One Idea

You probably have a list of project ideas. You wrote it down on a an actual piece of paper a long time ago. After a while you moved it to a text file on your desktop, which you later moved to a file on Dropbox so that you could add ideas from anywhere. Next, maybe a note on Evernote or Google Keep so that you could strike out an idea you completed (always fun). You maybe even graduated to a Trello board.

There are couple of items on that list that survived all of the transitions. They’re not amazing by any means, but they’re solid, and someday, soon, you’re gonna strike them off as well. I just started working on one of those ideas that have been with me for a long time, and it feels good to see it come to life slowly but surely.

The idea came from a real need. I had a long period at work where my days were very busy and yet I felt I was not advancing the main project I worked on. At the end of each day I would try to break down why I didn’t have time to work on my main task, what were the distractions (meetings, other projects, mentoring other developers) and how much time I put into each one, but the hours just didn’t add up. What I wanted was a time tracker (which there are tons of), but one where I could just put down a sentence describing what I just spent time on and how much time and let the tool do all the rest. The concept I came up with is super simple, and you will probably understand it in five seconds. I call it hashtime.

</img> Click the image to pause the animation.

The Stack

I usually use my side projects as an excuse to learn and experience some new technology, library or framework, but it’s not easy to keep the balance between putting time into learning something and actually advancing the project. The stack for the last side project I worked on included React, Redux, PostgreSQL and NodeJS. All were new to me except for node so it took a while to get going, and by the time that happened I kind of lost my momentum. Oh I’ll get back to it, it was a great idea, but it kind of fizzled out. For hashtime, I thought it would be cool to dogfood the tool for the actual work I put into it, so I wanted to get something working really fast and I figured I’d maybe use stuff I already know instead of learning something new. Turns out I didn’t need to comprise.

I chose Firebase for the backend and database, and vue.js for the frontend. Firebase is a “backend as a service” which used to be based around a real-time database, but has recently grown into a full blown backend with the addition of hosting, authentication, storage, analytics and more. The first thing I usually work on is authentication and a user model which usually takes some time, but with firebase you get pretty much everything out of the box, including a drop-in UI solution for web, iOS and Android. Getting up and running was super easy and I had something working in no-time. Not having a backend feels weird, but so far it hasn’t set me back in any way.

For the frontend I felt that I needed something lightweight, as this seemed to me like a simple application (don’t they all at first). I’d heard a lot about the simplicity and straight-forwardness of Vue.js and decided to try it out. The boilerplate I used is based on Webpack and it’s pretty good. It includes hot-reload, linting, testing and CSS extraction. Together with vue-router I got a basic SPA application up and running pretty fast, which let me test out the tool using the work I had put into it which is pretty cool.

Long But Not Lost

Like many other projects, this is not the first time I’ve started working on this idea, and it probably won’t be the last. It’s typical (for me at least) to start working on something, lose momentum and stop only to come back to it again starting fresh with a different stack (obviously, otherwise where’s the fun?). Will I finish it this time? Well no project is ever really finished is it? it can always be better. I think the better question to ask is will I put it out there this time? It being a polished product, or a working prototype. Maybe a proof of concept? Some screenshots? A Blog post?


Feedback Wanted

If you have some suggestions or if you would like to use hashtime, shoot me a comment/email/tweet.