Welcome to the re-designed home of Zetetic! While the company has always been named Zetetic, most of our big clients have known us through our DBA, Identicentric. We decided that one awesome brand is better than two, and as part of our consolidation we had nGen Works come up with a new logo for us, and a whole new website design.
For those of you reading the RSS feed, I encourage you to click on over, check out the site, and leave us your thoughts in the comments. It’s not quite so hid anymore, I promise. Here’s the new logo, that has us really stoked:
One thing I really love about it is that it tells you how to pronounce our name. The badge is actually green on the site, although I think it will be white background when printed without color. But I digress!
We’ve only got the basics up right now: home page, blog, contact. Soon we’ll have the rest of the pages up, including documentation and links for our various resources, products, consulting services, and open-source projects.
Today is the day we unveil the newest release of Tempo: Analyst!
It’s been quite a few months in the making, built on our own experiences using Tempo to do our time tracking and billing, and from the constant feedback of our users and beta testers. I can’t stress enough that good communication with our users has been just as valuable as elbow grease. If you’re used to the old interface, you will find the change a bit jarring at first, but we are positive that once you make the switch you really won’t want to go back (for the past three months we’ve used the Analyst interface exclusively and can’t bring ourselves to use the old interface).
For new and old users alike we’ll take a fresh look at Tempo, its unique approach to both tracking and reporting, and show off the new interface along the way. There are a lot of time trackers out there. Many claim to be the simplest; triumphs of design over functionality. Others are top-heavy in functionality but oblivious to how real people work and bill their clients. Our focus with Tempo has always been to make the act of tracking time so natural that it doesn’t interrupt your workflow while providing the powerful reporting you need to keep your business on track and manage your billing cycle.
Simple time entry
Tempo supports quick text entry for logging time or starting timers so you don’t have to track time yourself. You can specify tags using common @tag @notation, and you can specify a #project, #too, or Tempo will figure it out based on your previous billing.
Veteran users will notice a new feature in that screen clip above – quick stats on your personal reporting for easy reference.
Multiple methods of entry – work your way
Why should you have to fire up a whole web app just to log time? We want you to be able to quickly fire off a timer or time log without interrupting your workflow. To achieve this, Tempo supports input via Twitter, E-mail, a Dashboard widget for Mac OS X, a bookmarklet, mobile and iphone-optimized entry screens, and the web app itself. Typing any of the following will log time or start timers:
45m meeting with clients in NYC #conglomo @meetings @onsite
1h debugging evil NullPointerException @maintenance
1:30 full test of single sign-on system #konstrux @testing
working on blog post about Tempo:Analyst! #tempo @blogging
building encryption into iPhone app #internal @discovery
Notice those last two – they start timers! Just leave the time off the beginning of the string and off they will go (more examples). Each new timer you start will stop any other running timer and the time you spend on a task is automatically calculated for you.
Our reporting interface didn’t just get a make-over – it got far more powerful, and faster to boot! For veteran users the major changes are obvious: we moved the controls up top and made the data report wide-screen. But there’s more to it than that:
The controls don’t submit on click, which was very annoying with large reports
Stream-lined drop-down options and easy-to-read display of selected options
Pagination! This is an incredible boon when you’ve got a lot of entries in a report
Optional HH:MM formatting, so you don’t have to think in decimal anymore ;-)
Sortable columns in the report! Imagine that!
An exclude option for tags! This makes our tag based reporting incredibly dynamic
Clearly, I’m so excited that I can’t stop typing!!!!1
With the new Exclude filter you can pull up all your entries tagged “development” and exclude anything tagged “design”, or “oracle”, for instance. We’ve always preferred tagging as a more realistic means for categorizing billed time in an effective way, and being able to exclude entries with a certain tag from a report adds the missing dimension. I don’t think you will get more dynamic reporting from any other time tracker out there.
Being able to quickly dial in your report options makes analyzing your data even easier because in Tempo…
What you see is what you get!
When you go the Reports screen, you are looking at a living, breathing…report, the Current Report. All of our charts, exports, and analytics are based on the current report, like the Heads-Up Display:
It gives you fast metrics to help you determine how things look, and each of the metrics can be clicked to bring up the appropriate chart. Here we can see that I’m at 90% utilization – the percentage of the workday that I spend actually billing time. Win!
Let’s step through Tempo’s reporting so you can get an idea of how this all works together:
1. Dial in a report
Here we see our heroic fictitious contractor Keith Kogane pulling all of his billable projects:
2. Save it!
He saves it for later – you’d normally do this for your Monthly, but here he saves it as Billable YTD:
3. Run it again at any time
Our hero needs to run that report again! Quickly now!
Clicking a saved report is like activating a saved set of filter controls. The new report appears with your settings already dialed-in.
4. View charts
Because Keith has pulled up a saved report, the Current Report displays the entries in the data view, but also modifies all the charts to this report. Keith needs to see a visual break down of hours per project, so he clicks the Project pie-chart icon and gets a modal chart display (that he can print!):
Ah, looks like this year’s bread and butter for Keith is that Conglomo project! He suspected as much, but being able to pull up a pie chart to visually confirm saves him from running a report on each project, writing down the total hours and comparing them. Here he can see visually how much his Conglomo work dwarfs the smaller projects like Konstrux. This kind of insight is important in deciding where to take your business and what priority to give your projects.
5. Export data
Like any smart fellow, Keith doesn’t want to be tied to one product forever, he needs to be able to access the very records that are the life blood of his business. In addition to an XML API, Tempo provides exports for your data:
Clicking the Time Log CSV will give you an Excel-ready export of your data:
Usually you need to export to Excel to hook into your invoicing solution. However, if you already use Blinksale or Quickbooks, you can use Tempo to…
6. Generate invoices!
There’s not much to tell here except that it’s a real nice time saver for us and a lot of the other Tempo users.
Playing to Win
There are a lot of time trackers out there, we know. But we think most of them got it wrong. Tempo is simply the best tool out there for freelancers, boutiques, and small to mid-sized consultancies. No other system makes it as easy to track your time and gives you tools to analyze what you’ve done so far and where you’re going.
Feel free to sound off in the comments, or e-mail us.
It’s not often you get to see a merge this awesome:
155 files changed, 9382 insertions(+), 918 deletions(-)
\m/ >_< \m/
New version of Tempo is live! We’ll have more to say about it here tomorrow morning.
Check it out
Tonight we made the following adjustments to PingMe:
- When you specify a ping without a year, and the date has already passed this year, the parser assumes you mean next year and adjusts the schedule accordingly.
- Our follow-back code for Twitter should be a bit more reliable.
More to come in the weeks ahead, stay tuned.
Over the Summer, Stephen and I attended the excellent RubyFringe conference in Toronto, hosted by Unspace. One of the best events was FAILCamp, hosted by Joey Devilla. In FAILCamp we all shared our stories of failure, big and small. It was an interesting way to get to know everyone and to share strategies for working through screw-ups and taking something decent away from them.
So, in keeping with that experience, we’re going to share a bit of FAIL; today’s story is brought to us by the PingMe Address generator.
When we need to provide a user with a remote e-mail address on one of our services, we usually want it to be somewhat obscure to that it would be difficult to guess, like firstname.lastname@example.org. The user can change it, but we set an initial one for her as a convenience, and include it in the welcome e-mail. The design goal was to ensure the address was somewhat random, but somewhat easy to remember, so we’ve been using a big word dictionary to smash two words together with a number in between. We do this as a security measure to prevent attacks that would try to deliver spam using PingMe’s messaging transports
Now, as you might expect, we did go through the dictionary to take out some words that would pose obvious problems. But we missed a really obvious one and weren’t as imaginative as our address generator can be, and as a result we got a pretty angry letter yesterday:
I won’t be using your sevice as it lacks professionalism. Scroll to the bottom of this e-mail and look at the generated pingme e-mail address. – Frank [not real name]
Ouch! Fail! Apparently Frank had been assigned email@example.com, something that we really ought to have caught.
Taking a real close look at our word list I started seeing lots of possibly problematic combinations with regular words in the dictionary: “closet55bugger”, “douche44monger”, “goat11fakir”. Now some folks are probably fine setting their own address, or clicking the “suggest another” button, but some folks are bound to be a tad more sensitive.
So I started going through the word list looking for any classic cusses that we might have missed, but also things that might be sensitive to some folks and are just best avoided. While I was doing this, two important things occurred to me:
- I need an intern.
- I can’t guess at every potentially disastrous or offensive word combination in the dictionary. No way.
Everyone’s got different quirks and different cultural backgrounds, and I honestly make a poor censor. The chances of me personally (or even a team of three of us) knocking out every word that might lead to disastrous results in a list of thousands are very poor indeed. I’m willing to bet that this is an NP problem, but I’m not about to draw up a proof.
I don’t think the problem here is that we are using a large dictionary, nor do I think we really should have to cleanse the list. The trick is to get the obvious offending words out of the way, and to also provide the user with a bit more context. In Frank’s case, he doesn’t know that these are two random words, he didn’t have any exposure to the process by which it was selected. Adding something like this to our welcome message will probably cut down on this lack of understanding in the future (I hope):
If you’d like to create Pings on the road, add firstname.lastname@example.org to your mobile’s contacts and your e-mail address book. This address was generated randomly to protect you from SPAM. If you find it undesirable you can change it at any time on your profile page in PingMe.
You can’t make everyone happy (would that be NP-Complete?), but a little clarification can go a long way.
So that’s our story of fail. Perhaps we can make a meme of this – have you any stories you want to write-up and share? Feel free to post links in the comments.
Update: Question to our users: Would anyone like to see purely random addresses like we generate for Tempo? There we use use a pretty long series of random numbers converted to Base26, so they end up looking like “email@example.com.”
Later Update: I almost forgot: the FAIL address assigned to the user was firstname.lastname@example.org.