Palm Strip: Fork and be Merry

2009-02-10 19:00:00 -0500

We’ve mentioned in the past that we’re no longer supporting or developing Strip on the PalmOS platform. Even so, people still ask about looking at the code and making updates. Strip for Palm OS is free and open-source software, so we’ve pushed the code up to Github to facilitate any further development others may wish to do. It’s the beauty of open source – feel free to fork it, hack it, send pull requests, or release your own version. Fair warning – the code was written a long time ago on an ancient (in relative terms) platform so it might leave something to desired if you’re used to more modern toolkits!

The State of MySQL: The Elephant in the Room

2009-02-09 19:00:00 -0500

It’s been in the news for a few days: two of the MySQL execs, Martin Mickos and Monty Widenus, are leaving Sun Microsystems, Sun having bought and absorbed MySQL AB.

I’ve always been a Sun fan (Solaris FTW), but it’s a well-known joke that being bought-out by Sun is the kiss of death. So what happens to MySQL now, and what happens in the open-source database space? Drizzle, an open-source and derivative project led by Brian Aker, doesn’t seem to have clearly defined its space (“the cloud?”), with people wondering if it’s really just a SQLite competitor (alternative might be a better turn of phrase because it’s got a long way to go before it could “compete” with SQLite). Speculation aside, what is known is that it drops many of the features that make MySQL a full-featured relational database.

Ladies and gentlemen, I think that we have a winner, the elephant in the room: PostgreSQL. Somebody’s gotta say it. Sorry to gloat. PostgreSQL is and has been “the most advanced open-source database,” long before these MySQL upstarts came along.

In the end, MySQL was never a completely open project. MySQL AB offered a GPL version but only included code that they owned the copyright to. Contributing developers wouldn’t see changes included in the core unless they were rewritten by MySQL AB or donated (read sign over their IP) to the company. It’s pretty heinous to tout such a model as an open-source success story, and it looks like the opposite is now true: MySQL is clearly floundering.

Strip: News from the Workbench

2009-02-09 19:00:00 -0500

It’s a been a little while since I’ve given any kind of update on our progress with STRIP for the iPhone platform. We’ve been hammering away at our data model and at this point I think we’ve arrived at a fairly stable first implementation and work-flow for the app. After changing it what seems a billion times, I think we’ve got it. For now.

There are still some tweaks we need to make before we start the beta of the initial version. Also of note: wireless backup and sync won’t be available in the initial version. It will be done, oh yes, and it will be done well, but not in time for the first release. We want to at least get this out there for Strip fans to test it out and make sure we’re going in the right direction here. This feature is really important to us, as it’s one of the features that really made the previous versions of Strip stand out, and we’re committed to its implementation.

We’ve put together a mailing list just for Strip (low volume, announcement only) for those of you who want to be alerted directly when we’re ready to do the beta. Sign up for it over on the Strip page.

We still need to put together an export tool for old Palm OS Strip users who want to migrate to various systems, and a means to import that export into the iPhone version. We intend to have that piece in place by the end of the beta, before we go live, but I can’t commit to a time-frame just yet.

Thanks again for your patience as we work hard to get this right.

First Takes

2009-02-05 19:00:00 -0500

On the 37Signals blog today there was some talk about Axl Rose and Frank Sinatra, two musicians I love to gab about:

Sinatra’s one take style produced classics. Axl’s dithering produced a pile of mush. We can all learn something from that. It’s easy to fall into a trap of nitpicking over things that don’t really matter. Instead, focus on the essence of what you’re doing. Press record, get it done, and get it out there.

Lately I’ve taken our first takes on demos for the new band, or just scrapping them and coming back to it when the time is right. Sometimes that means a different approach, sometimes a better room sound. I almost always go for a first take on a guitar solo, if I don’t double it with another one for maximum shred \m/.

With that in mind, an update on our progress with Strip should be forthcoming.

Evolving Tempo's Command Line

2009-02-05 19:00:00 -0500

Tempo Working on Cli

When we set out to build Tempo time tracking, we knew it would be important get out of the user’s way when they need to entering time. The way we saw it, there were three problems:

  1. Staying productive while busy is challenging – we often change tasks (and therefore the client we are billing changes).
  2. It can be difficult to accurately remember how much time we spend on individually tasks.
  3. It can be a real work-flow interruption to load up a website and type information into a form.

That’s why we created Tempo’s command line text interface. For instance, I can simply type in what I am working on next, and Tempo will time me. When I need to change tasks I just type in what I’m working on next and the last timer stops:

doing a screenshare demo #bigcorp @support

Similarly I can log time via this command line, not just start timers:

3:00 re-worked DataModel #strip @iphone @development

But if you don’t already have Tempo loaded in a browser then starting things up to enter your time can be an interruption in the flow, a disturbance in the force. Thankfully, text entry can come from anywhere! So we created various alternate ways to quickly enter time with minimal impact:

Tempo Widget Shot

This text syntax has been a big win for us and our customers. While we’ve seen a few services out there implementing similar features, we’re pretty much the only game in town that takes it this far.

We’ve found that when people first try Tempo, the convenience of the command line and all these points of entry go unseen for a little while. We have a core group of customers that love these features, but many folks who might use them don’t know they are there until we show them and explain how it works. Then a light bulb goes off and we’ve won some new fans.

Obviously, that means we’ve got some work to do on the UI. The good news is that the awesome team at nGen Works is working with us to help us improve the ease of use and aesthetics of the application.

Meanwhile we want to expand what Tempo’s command line is capable of, and we could use your input here. Many of our customers have been asking for new features and we’d like to add in some of our own. But to do this we need to make some changes.

First the initial commands themselves (log time and start a timer) don’t actually have a command! This isn’t such a problem when the command itself is easy to distinguish — the widget, the bookmarklet, the website itself all send in a specific piece of text to parse. Things get much trickier with e-mail, where the commands also have to work, and where we have to scan the message for the command.

E-mail comes with a lot of junk in it, especially e-mail from web-based services, or e-mails quoting other e-mails. There are lots of tricks to parsing out what you don’t want, but finding a start command like this is like trying to find a needle in a haystack:

I am doing stuff

Yup, that would be a valid start-timer command. Now, if you check our text-entry cheat sheet, you’ll see that I’m fudging things a little bit here. We do require a keyword for timers sent in by email – start. We are thinking about standardizing the use of keyword prefixes across text entry methods. For instance, this is our proposed syntax for timers:

start writing about the CLI #tempo @bloggingstop

And this is our proposed syntax for logging time directly:

log 1h did some stuff #tempo @developmentlog 1:30 …

Requiring a keyword at the beginning of every command would allow us to expand the syntax and add new features in the future like these:

stop 2h [ stop timer and add two hours ]stop -30m [ stop timer and take off 30 minutes ]start 1h … [ indicates I started an hour ago ]log start 3pm stop 4pm [ record 1 hour between 3 and 4 pm ]

We’re fairly sure this is where we want to take it, but we’d love to get some feedback. Let us know what you think.