The Tudumo Times



11.10.10

Sync!

Last week I uploaded a version with the single most oft-requested feature...and the one that has been most personally draining to develop. To get it done, I put almost all other features on hold. It’s meant many rewrites, different languages, technologies and architectures, changes, pauses, restarts while the cloud landscape changed and while I found extra nooks and crannies in the code that have needed updating.

But here’s the good news: you can now sync your tasks between computers, via the Tudumo server! Change a task on one computer and Tudumo will automatically upload it after a brief pause, and fetch any changes that the server might have. Or click this button anytime:


It sounds so simple when put like that!  Haha, devil in the details, indeed.

You can also use it as an online backup, or when moving your tasks to a new computer. Sync up on the old computer, sync down on the new one.

What will it cost you?

Nothing. Free. As much as possible, I’d like it to remain free for simple sync usage. I’ve put a lot of effort into writing it on the aforementioned cloud architectures and taking much care with efficiency, so costs are low.  Despite the huge effort and needing many changes under the hood, you won’t pay any upgrade fees either - I consider the app still in version 1, so users who bought even a couple of years ago don’t pay a cent extra. In fact, I’ll say that all you’ll get from me this year are more features, for free.

Where to next?

Well, this thing has to settle first. There’s no way that I won’t get bug reports, and what makes sense to me might be utterly irrational to you. There are also some aspects of sync that I’d like tightened up, like syncing task order.

And (future) features?
  • Web view
  • Use Dropbox (or other file sync solutions) for sync. Tudumo will just load changes from the file system, so you have options.
  • Sending actions to predefined friends
    (“oh look. fix the tap. can’t wait!”)
  • A 3D view that you need special glasses for
Yes. I make joke.

So if you’re just interested in the sync - go play with it.  For those that are interested in the technical back-story:

I initially built the sync backend on Google App Engine, in Python, while it was in a very limited test of 10 000 developers. In the early test phases Google heavily restricted the amount of time an operation could take so that meant I had to be really careful with the time each operation took. So, ok - split up whatever I’m sending into tiny bits. Also, there was a relatively high error rate, the technology needed lots of work-arounds (XML? Ah. Tricky. Hand-write that. Send it as text, or as a zipped file? Well - have to hand-write parts of that too) and it just felt unbaked to me. It worked, but wasn't confidence-inspiring.

Then Microsoft released a developer version of Azure which seemed less restricted and more 'enterprisey', so I rebuilt the server in C# for Azure. Now I could re-use some code between the client and server, reducing weirdness in communication. That seemed fairly good until I deployed the app and started testing it, and then they released the pricing. (Yup, should have waited for that!) With Azure you pay even if nobody looks at it, and you have to manage how many 'instances' you use. If you go over 1GB, the cost doubles (approximately). If you need another server (for performance or reliability) you need to manage it yourself and then pay about three times the original price (2 servers + extra storage). You couldn’t send mail at the time - had to use an external server for that. It’s cloud, Jim, but not as we know it.

At some point Google released the Java version of App Engine, all the while increasing their limits and generally making the service more bulletproof.  I’m an old hand at Java and while it’s definitely more effort to write than Python, I wanted the languages on both ends to be relatively close - C# is similar to Java - so coding constructs can be similar. I tried it on a side project and it went well, so I ported the server code again. This time it felt top-notch. With all systems there are hiccups but with some of the cloud providers you can bet that the hiccups will drop over time, as they get better and better at figuring the problem space out. In terms of costs I don’t pay until you really hammer the server. When it gets busy I start paying for usage, but if written carefully the cost isn’t bad at all. For basic sync - which is what most consumer users will need - that’s perfect. No minimum and no (effective) maximum and you can sync every time a task changes instead of e.g. waiting 20 minutes for enough data to send up. And if the server goes down in the middle of the night some exceptionally smart people are worried about getting it back up. Sure there’ll be mishaps, but I’m leveraging Google’s ability so we all benefit from any improvements they make in future. Foursquare went down a week or so ago, for about 17 hours over two days. They have 30-ish people and funding and lots of experience. What chance a single developer or small team will do better, in a 24/7 world?

A view of my web-scale dashboard. Those (daily) limits can be raised in minutes - just apply cash

For my choices, does that make App Engine better than Azure?  No. As usual it’s a case of “use the right tool for the task”. There are still some exceptionally good reasons to use Azure (or Amazon's EC2 stack), and I'll likely use it for some things. Basically, all the cloud services are locked in an arms race which developers and users benefit from.

My choice was to make a long-term problem (cheap development but pay more over time, and continue worrying about any scaling and management) into a short-term one (pay more upfront in development costs, reduce ongoing expenses and risks), but wow - quite a long short-term! Not the most effective way to get the feature out and I “wasted” quite a lot of time bumbling around, surely irritating many users who actually don’t care about the storyline as much as they want to Just. Sync. Tasks.  But now that’s done, with a solid roadmap and predictable costing, and I've learned a lot that will be strategically important in future.

In truth, partly due to the choice of technologies the server part wasn't that hard, once the basic design was up. The client, Tudumo, needed many, many changes under the hood to handle sync in a fine-grained fashion that would work for multiple sync connectors (for example, Outlook) and in a (hopefully) elegant way. No matter how much you follow good design principles, there’s always a family of surprises waiting around each door!

Conclusion

The lessons I learned (expensively) confirmed what I already knew: Do a simple first version, avoid the bleeding edge, don’t optimise prematurely. On the other hand, any hard problem usually has competing principles. I’d rather have Google administering/securing/scaling a server with your data on it, than me. The distant problem was scaling, but the near-term (and ongoing) one was security. I can focus on the application level issues and leave the operating system, web server and whatnot alone. Outsource that to the experts.

16.8.09

Will an iPhone Improve my Productivity?

This question came up on a software business-related forum. I started answering it but figured maybe it’s better to discuss it here, since you’re the Productivati!

It sounded to me like the developer in question was trying to convince themselves to buy an iPhone, or possibly a Blackberry. But let’s assume they wanted to improve their productivity, really. They said it would cost them around $100 a month, give or take.

My first thoughts were: What are your goals? Can you achieve them without a phone, or iPhone specifically? Is the tool the catalyst to better productivity?

Expanding on that:
  • Is your goal improved contact with customers? 

    If so, the Blackberry is probably the ideal mobile email machine. It’s not called Crackberry for nothing. The iPhone is a phenomenal device but it’s not linked to serious focused antisocial email answering…yet.

  • Do you need to take or recall notes, ideas, contacts when you’re on the go?

    Any smartphone, and many un-smart phones, will do fine. How often do you need to do this? More than $100 worth a month?

  • General productivity?

    Maybe.  I’ve had many customers say Tudumo has improved X, Y or Z, but I wouldn’t want to claim that it will do that for you. Who knows? I suspect that’s a bit cart-before-the-horse. I figure it’s possible that buying a given tool will suddenly make you a madly productive action monster, but…the odds are better that you can do something else to improve productivity. For example, work on time management (for free!) or buy one of the many books on productivity for much less than $100 a month. If you find a technique that needs (or is improved by) a smartphone (or any tool), then buy it. Or try one – sometimes the tool can help you learn the skill. But try it cheaply – don’t commit $100 a month on a hunch!

  • What is your limiting factor?

    If you spend a lot of time on a subway and you're looking for a way to make that time more productive, then maybe a given tool could help. But for most people, their limiting factor might be that they aren't using their time well enough, or that they don't have goals to work towards. A new tool can't help you there. Paper and pencil and a few hours of quiet reflection would probably give a better result.
Note: if you're talking productivity, you probably mean something like getting-to-your-goals-faster, or as Wikipedia would say:
”Productivity refers to metrics and measures of output from production processes, per unit of input. Labor productivity, for example, is typically measured as a ratio of output per labor-hour, an input. ...”
en.wikipedia.org/wiki/Productivity

So you want more of X result with as little as possible of Y input. As a person starting a business with limited resources, you need to generate at least $100 a month of extra money, or equivalent free time, or improved service – whatever you or your customers value. Then, measure that against the economic cost – the alternative use of that money. I’m pretty sure I can think of many ways of spending $100 to get me closer to my goals. Additionally, consider that the cost  is every month! I have no problem with once-off payments because you can amortize them over the lifetime of their use so it’s easier to find ways to generate value from them. Monthly payments I avoid like the plague, especially if they lock me in for a period of years, unless I can’t get more benefit somewhere else.

Having said all that, would I buy it?

Yes. Ahem, probably around the end of the month, when my service provider gets the 3GS!

Surprised? For me, now, there are many reasons to have an iPhone and it’ll cost about the same as my current phone plan (we get ripped off in South Africa) and I'm very overdue for an upgrade. I get inspired by good user experience and Apple are masters of the art. Also – what’s happening on the app store? Any opportunities? Any good ideas? There’s something to be said for serendipity and I won’t discover anything by sitting here and grumbling about costs. You wouldn’t believe how many requests I get for iPhone support. So I get various tangible (new phone) and intangible (possible business opportunities) benefits with little or no extra cost.

However, it won’t be because I’m looking for improved productivity.

12.7.08

Start Your Own Business

If you have been wanting to start your own business, do something about it today.  Anything - just a plan, a few ideas, maybe write some code, a web page or a document about sales.  Maybe, maybe buy a book - I say maybe because it's too easy to read about someone else's life instead of building your own, to pretend that reading is action instead of a preparation for action.

If you're not sure which of three ideas to follow up on, put your toe into the water of each, until the answer is obvious.

If you don't have the time, spend 20 minutes on it on Sunday evening.

Why?  Well, because until you have a stake in the ground around which you build your dream, you can't benefit from serendipity.  People won't mail you with their ideas or business proposals, you won't have a chance meeting with a like-minded person who you can collaborate with.  Until you're at a particular point in space and time, the ideas that come up only when you're there...won't.

You know how time seems to move faster as you get older?  Today the time is moving slower than it will.  Excellent time to start something.

29.5.08

How I increased my productivity in under a minute

I find the links toolbar in Firefox very useful.  I add all my commonly-used links, grouped into folders.  E.g. under "Tools" I have "application" sites like online banking.  Under "News" I have Google Reader and a few news sites I like to keep up with.  Under "Discuss" I have a few forums.  That's not the trick, though - here's the trick:

 

A few days ago I moved all forum and news-type sites to a new folder...

..."Waste Time".

 

Seriously, it works.  Now instead of unconsciously opening a news site when I'm thinking about something and blowing half an hour (that I can't afford), I'm very aware of what that folder represents!  I'm treating sites in that folder far more gingerly.  Every time I wander over to get a dose of news I see "Waste Time" and I slink back to doing some work!

26.5.08

Just seen on the David Allen Forums

When you just know that their intent isn't quite GTD-related :)Posting

13.5.08

Do you procrastinate? Want to know why?

Just in case you weren't aware of the link between procrastination and somebody swallowing random stuff from your medicine cabinet, there's an article over at the GTD Times, the new "semi-official" GTD blog, that will reveal all!

There's also some useful reading over at www.procrastinus.com, including a definition with synonyms (shillyshally? that's a synonym?), some really interesting research on why we procrastinate and various treatments.

"Of note, most procrastinators have a wide streak of impulsiveness in them and likely are looking for the "quick fix." Unfortunately, the more powerful the remedy for procrastination, the longer it takes to work."

So my advice is:

  1. Get a cup of coffee.
  2. Read www.procrastinus.com.
  3. Close your RSS reader!
Naturally, Tudumo can help as well. I'm not sure how it'll stop you swallowing random medicines but let's start with the easy stuff!

16.4.08

On supporting online GTD and to-do list applications

Today I received a comment on my previous post asking if Tudumo should support  Remember The Milk (RTM) - partly as a solution to multi-instance Linkssyncing.  I thought I'd answer it here so you're more aware of my roadmap.

On the face of it, it could help the business case for Tudumo and be pretty useful for the many people who already use RTM.  RTM is one of the most successful web task applications, so it wouldn't be a bad choice, if I were supporting only one app.

However, I get similar queries every so often - for Remember The Milk, BaseCamp, Google Calendar, even a project management system that a user sells!  For the record, there are also calls for Palm support, Windows Mobile support, Outlook, Mac, iPhone, Lotus Notes - you get the idea.  Even if I were only supporting one app it would mean differences in data between Tudumo and the target website and likely some limitation in what the API will let me do.  All of that doesn't feel right to me.

<vapourware alert>

I'd prefer to have a default Tudumo online service that has a focus on syncing between Tudumo instances and which can be a gateway to all the online service providers.  This reduces the amount of code I need to shove into Tudumo to maintain every possible sync target.  It also increases the quality of the sync between Tudumo instances because the peg and the hole are both round.

</vapourware alert>

Google App Engine excites me because it should be able to handle high-load sync with ease and should never cost me very much to keep running.  That ties in nicely with my wish of providing the sync service for free and having run as well as possible.  While my current server could likely handle it fine, with Google I don't have to think about "what happens if".

I could add other reasons but the vapour level is really getting to my head...