State of Sync, Part II

Things - Cloud Sync

My last post received quite a bit of criticism. Some people even said I shouldn’t have written it at all. It has been claimed that the sync problem is solved already. Our experience has shown that this couldn’t be farther from the truth – in particular for Cocoa developers. Dave Peck observed this too, and made some wise suggestions. Here is a quote from his article:

If you’re a die-hard Cocoa developer, the thought of building a scalable and reliable web back-end might just be daunting — daunting enough to cut it out entirely. I’ve noticed a strong resistance in the Cocoa community to building such things.

The Mac community is a great ecosystem and we’ve benefitted a lot from it. Things could not exist without it. This is why creating a cloud sync solution has come to mean more to us than just an improvement of our existing WiFi-based sync. In fact, one of the motivations behind this series of posts, is to start sharing our insights with the community of Cocoa developers.

The first thing you need to do when you want to solve a problem is to get a good understanding of the nature of the problem. The previous post attempted to explain the sync problem in the least technical terms possible – to make it accessible to a non-technical audience as well. Eventually, however, we will be making more technical documents available – directly addressing fellow developers.

Today, I want to talk about the technologies we’ve tried.

Bonjour

Back in the day when Things for the Mac was still in beta we added WiFi sync using Apple’s Bonjour technology. WiFi sync was Apple’s recommended way to realize sync. There are advantages indeed. For example, there is no need to sign up for a web service. It doesn’t even require a pre-existing local network, as any Mac can create its own spontaneous network. The user’s data never leaves the local network.

However, there are notable disadvantages as well: you actually have to remember to sync, and you have to initiate it manually. Relying on the local network, of course, also eliminates the possibility of syncing your work Mac with your Mac at home.

Obviously, we had to provide a solution that would utilize the cloud instead of the local network. The most obvious choice is perhaps MobileMe.

MobileMe

There are quite a number of people using Apple’s MobileMe to sync, e.g., calendar or address book information. For such users, it is only reasonable to wish that Things would sync in the same way, using their existing MobileMe subscription. Unfortunately, the sync technology Apple uses for their own apps is not available to third party developers on iOS devices.

It is available on the Mac though, and we hoped it would eventually find its way onto iOS; this hasn’t happened yet. What some competitors are in fact referring to, when they talk about MobileMe sync, is the use of remote storage through the iDisk.

Dropbox, WebDAV et. al.

Some users have suggested using Dropbox for sync. Like many similar offerings – often based on the so-called WebDAV protocol – Dropbox allows users to store files remotely on their servers. In this sense, it is similar to Apple’s iDisk (assuming iDisk sync is turned on) – what both services do is provide a folder on your computer that is mirrored on a remote server.

Neither Dropbox nor iDisk – or any similar service for that matter – were conceived as a sync solution for apps like Things. They were designed for sharing files – like photos or PDFs. Remote file storage products do not offer merge facilities that come even close to what would be needed for Things.

What is possible, however – and others are in fact doing this – is to use a hack. Without going into detail, it basically means breaking up the database file into a large number of smaller files. Merging and conflict resolution can now be handled using these smaller fragments, which eases some of the pain.

This approach works to some extent, but it is slow and error prone to begin with, and advanced options like push or anything involving user-to-user data exchange is impossible. Developers choosing this approach for apps with complex data models similar to Things paint themselves into a corner right from the start.

Database in the Cloud

Instead of using remote file storage, it is a much better idea to use a custom-designed web service. This is an approach taken by most web applications, and a whole industry has arisen developing, deploying, and maintaining applications that are written in this style. Everyone going this route has ample expertise and help available to them.

In taking advantage of this, we began working together with a great group of web development people. It was a great experience, and one we wouldn’t want to have missed – but eventually we abandoned this approach. Here is why:

If you are thinking in terms of a web application, you are basically considering placing the user’s entire database in the cloud, together with enough logic to safely manipulate that data. This makes the database in the cloud the authoritative version which can be used to determine how the data on every device should look. This sounds like a great thing to have, but it requires that all merging and conflict resolution be done on the server – and this turns out to be really slow.

Merging potentially requires accessing the database, and hence the hard-drive, very often. Hard-drive operations, however, are the most expensive in terms of performance – in particular when many databases are hosted on one server. Of course, there is a solution to this problem, it is called sharding, or in less technical terms: throwing huge amounts of hardware at the problem. But our users have made it very clear that they consider cloud sync essential and don’t want it to become an expensive service.

Doing it Right the Wrong Way

Teams of programmers collaboratively write code by making use of so called source code management systems. In 2009 we switched our source code management system from Subversion to Git. Working with Git provided us with a lot of inspiration. Git uses a decentralized approach where contributors can work with their own local repositories. This setup is very similar to the syncing problem where data needs to travel between local databases.

We were so intrigued that we decided to develop a sync solution based on Git’s core ideas. Since these were general ideas anyway, we decided to create a solution that isn’t tied to the specific properties or needs of Things. Instead we wanted to create a general framework that could be integrated with any application no matter what the specific data model or sync policies of this application were.

But we didn’t stop there. If you create something new, knowing that the technology will be needed on multiple platforms, it is worth thinking about a cross platform strategy. We ended up with detailed plans to create a JavaScript-based cross-platform data model framework with Git-inspired sync built in. This strategy required substantial portions of all versions of Things to be rewritten. It was clearly the most ambitious project we ever took on. Dissatisfied with our previous attempts, we didn’t want to settle with anything short of perfection.

However, the complexities were huge; technical problems – such as the integration of JavaScript and Cocoa on iOS – piled up, due dates passed. We slowly began to realize that we wanted too much at once.

Conclusion

We have tried many things, from underpowered technologies to over-engineered solutions. The approach we finally settled on is one that strikes the right balance, and in our next article we’ll be sharing more information about what that means.

Some people said we shouldn’t have pursued cloud sync with this level of ambition. But then, that wouldn’t be us. It is not how we developed Things. We know that people are coming to Cultured Code because we take this approach. They like companies that care, companies that try – and that is what we will keep doing.

102 Comments

  1. ifonline Jan 14, 2011

    Very interesting. I’m really enjoying the State of Sync series. Thanks for the peek inside.

  2. Alan van Roemburg Jan 14, 2011

    I for one can’t wait to see what you guys come up with. I’ve basically stopped using Things still this feature is available.

    Look forward to seeing how it all works :)

  3. Brian Cameron Jan 14, 2011

    I’m no technical genius, i have basic understanding of code and application building. However, I find the articles so far an intriguing read – and is building my interest in development of Things, and applaud you for this series.

    I bought things on iphone, then ipad, finally on Mac OSX and sync by wireless. I knew this was the basis of the product on purchase, and am delighted with the reliability and function of the product. I didn’t buy a product based on future development, and future plans. I bought it for what it does on the day i bought it, and for having a company supporting it moving forward. This i believe is the only way you can buy software, unless you want to be in BETA trials.

    As things helped my work and life, i became engrossed in the whole GTD world, and it has helped me tremendously. When my use of things increased ten fold i found the lack of ability to keep my devices in sync without manually syncing wirelessly frustrating, and so now agree with CC and a large part of the user base that Cloud Sync is essential to the product.

    I am intrigued how you intend to implement it, and beyond that, without being rude i don’t care, once the feature is in place and syncing i don’t want to have to think about it. I am pleased that as a company CC seems to agree, and that the implementation is there concern – and they want to deliver me a perfect product that doesnt need me to think about it – sorting conflicts of data etc.

    The majority of the user base want a troublefree product that works that they need give no time or thought to other than for it to just work. Syncing for me is not something i want to add to my GTD schedule – i just want it done.

    I just hope Jurgen, that by Spring / Summer you can give me a product that does this!?!?!?!?

    In terms of the argument of cost. I paid for a product that performed the function as advertised on day 1. I have had many enhancements and features added since. I feel that i have a far superior product today than the product i bought – and i have not paid any extra. If i have to pay an upgrade cost to get a major albeit essential feature then fair enough. if the costs of the final implementation cant be covered by a one off upgrade cost, i.e. the solution is a monthly / annual cost to CC that they must pass on. They sure i would probably pay for the feature if it delivered what i needed. I get the impression however that you yourselves remain unsure, and that the actual final product may be a solution you can retail to other developers for their own apps too.

    I remain intrigued and await your next blog. How often do you intend to blog on this subject?

  4. Tuan Anh Tran Jan 14, 2011

    I switched awhile back but still, I enjoy reading this series. I know you guys are ambitious creating such elegant solution. Hope it will be ready for public soon.

  5. Jonathan Cusick Jan 14, 2011

    I am looking forward to seeing which approach you have taken, when it comes to syncing it is a very interesting subject.

    Thanks for keeping us updated! :)

  6. Marc Rinderknecht Jan 14, 2011

    Thanks for sharing your thoughts.

    I’m really excited about the cloud-sync and desperately waiting for it. I’ve tried some other To Do apps that offer cloud sync – but none of them beats the overall experience of Things. With cloud sync an already great app will get better and better.

  7. Dennis van der Locht Jan 14, 2011

    I know from my experience how difficult it is to develop something that is the best there is and not settle on easy solutions. Often people suggest with much passion how to solve the problem fast but without thinking it through , which is annoying.

    So that’s why I’m patient, because I know that when your solution is there.. it will be a good one!

    But please hurry up though ;-)..

  8. Florian Heiber Jan 14, 2011

    I’ve tried several other task management applications but I didn’t find anything that worked as good for me as Things does. I’m currently using it with Dropbox to “sync” my Macs. With all the downsides this approach brings. So I can’t wait to give it a try.

  9. Dan Palmer Jan 14, 2011

    I think the choice you made was probably not the best for the ‘power users’ of Things, those that needed OTA sync as soon as possible, however, as a developer I can’t help but be very interested and excited to see your OTA sync framework.

    I know you probably don’t want to release more details, but please do a post about it! Is it going to be something other developers can use? Can other developers buy a licence for it to put it on a server and run their own sync services? Will it be open source (well I might as well ask however unlikely :P ) ?

  10. Denis Tarasov Jan 14, 2011

    Your “Things” is a great thing already. :)
    So just do what you do and good luck.

  11. Rich (@space36) Jan 14, 2011

    I’m one of the impatient masses but I can appreciate you don’t want to implement something you don’t believe in due to “peer” pressure.

    My experience of other sync solutions is only 75% good – either regular conflict issues or “sync failed” messages – so I think you’re right to pursue something new to get it right.

    Apple took the same approach with Copy/Paste and Multitasking but I guess bringing people in at an early stage is a double-edged sword.

    I’m still impatient, but I will wait for something that’s done right.

  12. Benedicte Jan 14, 2011

    Thanks for great posts, it is interesting to learn how you have approached the problem.

    I also would like to say I have no problem paying for cloud sync in one way or another. Evernote for instance take money when you want to have offline access, since this is were the merge problems emerge.

  13. Nicolas Stévenart Jan 14, 2011

    Background:
    I haven’t read the all blog but I was once waiting for Things to implement cloud sync. Two years later, let’s just say I stopped holding my breath.

    My 2 cents :
    Why aren’t you building a real web app for Things with the same functionalities present in current clients and then just have other apps be “clients” of the web app (witch could be “server”) ? You know like Remember The Milk for example, or many others in unrelated sectors (DropBox, Evernote, …). I realize that this is a bit more work than juste a sync but I always thought that’s what you were building…
    Was that solution never on the table ?

    PS: English is not my native language, please forgive my errors.

  14. Brian Hite Jan 14, 2011

    I really don’t want to pay for cloud sync. Especially in a subscription model. Things for Mac was WAY too expensive. Things for iPhone was very expensive as well, but I broke down and got it because I needed something simple. I bought it on the premise that I wouldn’t have to spend any more after that as Things was simple, elegant, and all I needed. Plus it didn’t require payments. I was done paying once I had both applications. I’d like to sync my MacBook Air and MacBook Pro, but I don’t care to pay for it. I’ll use an iDisk or Dropbox before paying. Even if you’d let my iPhone sync with two computers, I could transfer all but my repeating things to my new MacBook Air and have extremely similar databases. Or if two laptops could sync, even manually, over a local network.

  15. Vicente de Pablo Jan 14, 2011

    For Godshake, couldn’ t you address some more urgent matters with only one half of that intensity?

    I keep coming back to your blog and FAQs to check if the “we will add more structure to projects” phrase has been actually included in your development agenda and I always find this cloud thing.

    The lack of cloud sync was an issue before deciding for Things and sure that pda + desktop is a must. But once I overcame this, I am so happy with Things, its UX and the approach. I just wish I could apply the natural, easy thinking it enables to everything I do with a little subproject feature, no need to change Thing’s spirit.

    I feel that many users like me will welcome cloud sync but would never leave Things for the lack of it. But couldn’t you run some developments in paralell to bring the Things CORE EXPERIENCE to perfect?

  16. Kevin van Zonneveld Jan 14, 2011

    CouchDB anyone?

  17. Richard Jan 14, 2011

    Just want to point out that while your work is appreciated, there are still some very happy Things customers out there, and I’m one of them. Faster sync would be nice, sure, but your app already has a ton of things going for it.

  18. Carniphage Jan 14, 2011

    I am not reassured, and I am worried that this is being over-engineered.

    The right solution is merging and applying time-coded change lists. These could be saved as XML streams in DropBox.

    It is a solution that would (and does) work. You’d need just one “master/resolved” file and one change-list per device. Typically, three XML files. One large and two small.

    The UI would reflect the Master DB + any local changes.

    At sync, merge events chronologically, and run time forwards until the *oldest* change list was saved. Then create a new master and change files.

    Yes, the user could create conflicting actions – deleting an entity on one device and modifying it on another. But it’s not a tough problem to solve.

    I am concerned because the current WiFi syncing solution (where both devices are simultaneously active) still sometimes fails to converge the two databases. There’s no need for a novel solution. It’s well understood computer-science problem (and nothing at all to do with Cocoa!)

    Here’s a paper.
    http://www.ysaito.com/survey.pdf

    C.

  19. Todd Jan 14, 2011

    I can really appreciate your approach to handing the problem in wanting to do it the right way. That’s great and I look forward to hearing about and using your solution.

    The main issue is that multi-Mac syncing was touted as an upcoming feature from the beginning (years ago) and was one factor for my buying licenses (Mac, IOS) in the first place. I just feel some of the price I’ve paid for your software has been based on the forthcoming sync functionality that still years later has not been delivered.

    Love your software and use it as a part of my daily workflow but this issue has been mishandled. At the very least I sincerely hope that cloud syncing will NOT be attempted to be placed in a version that requires a paid upgrade.

    Good luck!

  20. João Sevilhano Jan 14, 2011

    Hi,

    Thanks for the important and useful information!

    I really like Things on my Mac and iPhone. I haven’t bought it for my iPad because I hate Wi-Fi sync. I’m using another todo app that syncs with my iCal but I really want to change back to Things. That will depend on cloud sync.

    Although I appreciate the information and would love to keep informed about your progress, what I REALLY want is to have cloud sync!

    Keep up the good work! And hope you can solve it fast!

  21. Andrey Tatarinov Jan 14, 2011

    That’s how it gets when bunch of desktop developers are trying to solve algorithmically complex problems. There are different skills and levels of expertise needed for creating a cool looking app and general sync mechanism. (Setting aside that “general” is bad in this case, because it means overengineered.)

    What you should’ve do is to invite at least one backend developer with level of expertise in SCM’s or similar area. I would see the time span needed for this feature reduced by order of magnitude in this case.

  22. Remco Jan 14, 2011

    Great series Jürgen, thanks for allowing us a peek into the kitchen. Even though I’m looking forward to cloud syncing (who isn’t), I for one am happy you take your time to do it “the right way”. Keep up the good work.

  23. Sandro Jan 14, 2011

    I really enjoy reading those blog post, keep them coming!
    as a developer I know exactly what you mean and what kind of problems do you encounter.

    the problem is, many users see all those text editor apps for iOS and most of them sync over dropbox. So they think that syncing is an easy task for every app. but dropbox, as you wrote too, is made for file syncing. for text edit apps, this works great. every doc in your app can be a text file and then dropbox is perfect. but for relational databses with many relations and stuff, this doesn’t work. we encounter the exact same problem, we have an app and people ask for sync. they tell us “hey do it with dropbox, everyone does it with dropbox” but they don’t see and don’t know that it’s not a good solution if you have a complex db.

    so i wish you good luck for your solution, can’t wait to see what you’ve built! i’m sure it will be great and i’m looking forward for the next blog post.

  24. Mattias Thurfjell Jan 14, 2011

    Great post. Can’t wait, but will.

  25. Kristoffer Forsgren Jan 14, 2011

    1Password managed to use Dropbox in a good way, just sayin’… =)

    Also, if it will be uploaded to you system, please make sure tat it is encrypted before it is sent from the devices (host safe hosting) with a key that only the user knows about (it should not be stored in your system). That way users could feel safe that the data stays private even if there would be a security breach in your system.

  26. Ahjo Jan 14, 2011

    I really like Things, but the lack of proper cloud sync is extremely annoying. The quality is most important for You and I get it. It is for all of us. But what I see here is Art for Arts sake, not Art for Users sake. If You really cared about users (which I hope You do) You would introduce sync a looooong time ago, regardless of the technology behind. Yet, You keep on working on something that seems way better that it has to be and leave users empty handed. The quality will never justify the waiting time.

    I started looking for an alternative, because I’m tired of being a donkey that’s chasing a carrot. If You intend on charging for sync I’m OUT! Even if the sync will be the best thing in the word.

  27. Jos Jan 14, 2011

    One thing no one as mentioned yet is: if you are going for a non web server style, distributed sync solution like git, can we still sync our devices without havingto have Things running on them at the same time? Ie. Does sync still only happen when there are at least 2 instances of Things running at the same time? This would seem to be an important feature – to be able to have your data synced whether or not another copy of Things is running.

    Enjoying the articles, looking forward to reading the rest in the series!

  28. Arne Jan 14, 2011

    I do not understand all the hassle for inventing a new wheel. There are other apps that sync without any visible problems with WebDAV/Dropbox, e.g. 1Password.
    Maybe you should team up with those guys …

  29. Joachim Paasche Jan 14, 2011

    Hello guys.

    I am founder of stay.com, rated by time magazine to be one of the 50 best websites in 2010.

    I truly love your product! You guys have true passion and are really good at what you do. In particular you have done a fantastic job in interaction design.

    Once you have the cloud sync you will have the best GTD software for the future.

    I currently use omnifocus until you have the cloud sync ready. Omnifocus has a sync method that is not good enough. You guys have the right focus. You have spent your time correctly at trying to make the perfect sync solution!

    Best regards from a fan!

  30. Jordon Jan 14, 2011

    I have no doubt that these blog posts take time away from working on Things, but as a long-time user on the iPhone and now on the iPad, I very much appreciate them. As someone who is currently not able to sync at all, this is welcome insight into why things are taking so long. I wish sync was here now, but I’m very happy to see it’s being done right, even if that means a longer wait.

    I have a quick question: are there plans to charge for a new version of Things? I have recently bought a Mac, but have held off on purchasing Things because of the concern of buying it now and then having to buy it again in the near future. It seems likely that when cloud sync comes out that Things will go to version 2.0.

    Is a Things license good for all future updates (or at least all foreseeable future updates) or are there plans to charge again when introducing version 2.0 (even if cloud syncing is free)?

  31. RJ Jan 14, 2011

    1. Why not synching with Remember the Milk?

    2. But never give up on the local WiFi synch — some of us like it that none of our data is in the cloud.

  32. Mattias Thurfjell Jan 14, 2011

    @jordon CC have stated that cloud sync will be a part of a free update (that is pre-2.0). This does, apparently, not mean that the actual cloud sync service will be free – however contradictory that sounds.

    Based on what CC have said, I would say: buy!

  33. Chloe Beard Jan 14, 2011

    I am also impressed that you want to get this right. I appreciate the level of detail on the blog post and have a greater understanding of how it all works and why the long delay.

    I searched for the right Task management software for years and finally found Things. Really, truly the best I have ever used. Except that I can’t sync via the cloud. I run a small business and I am at the point that I am forced to stop using Things until the cloud sync is operational. I have been delaying this decision, hoping and wishing for a long time, but I finally have to give up and find another app in the meantime. Please finish soon!

  34. Dave Feldman Jan 14, 2011

    I’m incredibly excited to hear about the sync solution you’re working on, both as a former Things user who’d like to come back and as a developer who’s struggled with developing similar systems.

    I know it’s early to suggest this but I hope you’re thinking about generalizing this once it’s released and making it available to third party developers. I know I’d jump on a system that let me sync my Web or native app with server-side data without having to write such a system myself (and I’d pay for a license or be comfortable asking my users to pay for an account).

    Lastly: one earlier comment mentioned CouchDB as a solution, and it’s been suggested to be as well. If you considered it I’d love to hear about the pros and cons in a future post.

  35. Michael Hendricks Jan 14, 2011

    I find this series of blog articles fascinating and I’m intrigued to see more technical details about the final system/algorithms. I don’t mind waiting for an excellent sync solution for Things.

    For others interested in sync, you might also enjoy Google’s series of posts about sync and collaboration in Google Docs. That’s the last article in the series, follow the links back to find the others.

  36. Philip Stachowski Jan 14, 2011

    Hey Guys. I can’t wait to see your final results. They’re ambitious for sure, but if the final solution becomes as ubiquitous as Sparkle did for application updates, it will be well worth the wait. And I appreciate your dedication and attention to detail, and it’s not like you haven’t delivered ever other feature I have asked for to date. http://culturedcode.com/status/

    Thanks guys.

  37. MikeW Jan 14, 2011

    You’ve now committed a lot of words to this topic. Your passion for excellence is commendable. However, you only need to address 2 topics.

    1) Why is it better than every other option
    2) When is it going to launch (you’ve delivered zero information on this particular topic).

  38. John Jan 14, 2011

    It’s not strictly true that task syncing over MobileMe is done ONLY using data files, you could use CalDAV.

    But apps like Things need to sync projects, contexts etc which would have to be a kind of metadata, the simple way of syncing this over the restricted MobileMe schema would be probably stuffing data into alphanumeric text strings in the notes field, which would be ugly. But it would work.

    I suspect an ideal sync solution would be a hosted WebDAV or CalDAV system with custom XML and custom properties. But I’m no expert.

    But I do manage large projects and if I tried to explain a complete lack of identifiable progress like this over such an extended timeframe to my clients, I would simply be fired on the spot.

    Without wanting to tout a competitor (it’s more of a straight-up to-do app than a GTD app) I sync it with iPhone, iPad and MacBook Pro over MobileMe using CalDAV all day and you could simply use separate calendars for project/context.

    Basically, my rule is if it’s not OTA then it’s not something I will use, so I said goodbye to Things quite some time ago.

  39. Erik N Jan 14, 2011

    Thanks for the update. Like many others, I appreciate the time you are taking to help us understand your processes. Over the last year and a half I have gone back and forth between Things, OF, Simple Task and Toodledoo. I have really come to appreciate the “control” I feel I have with Things.

    I travel often for business and pleasure. Once the sync solution in place, I will be able to travel with just my iPhone and iPad and stay up to date. I look forward to reading then seeing what you can do. Thanks again.

  40. Matt Jan 14, 2011

    Hey, I’m sure this has been asked but can’t seem to find an answer – why not use toodledo or remember the milk? ( @RJ asked above ). I’ve been using 2do, which I like far less than Things overall but it has great toodledo & mobile me syncing option.s

  41. Joe Kohlmann Jan 14, 2011

    Real artists ship.

  42. John Smith Jan 14, 2011

    What everyone that continues to say “Drobox works!” misses is that Dropbox is *very simple*. There is no complicated merging of tasks. The passwords for sites have *no relationship to each other*. Dropbox works great for this. It also tends to work well for documents, as you’re rarely doing massive edits to the document in multiple places at one time.

    It does not work well for complicated data models where there are multiple dependencies where many things could be changing in many places, and need to be merged. So, i.e. Things. This was largely explained in the first segment.

  43. Jim Jan 14, 2011

    All I’ll say is to keep up the great work, Jürgen and team. Many of us encourage you to do for cloud syncing what you did to get Things to this point.

  44. Rob1 Jan 14, 2011

    It is awesome to see you guys opening up and communicating – thank you!

    I’m a bit worried that it has taken a couple of years and so many approaches. It makes me wonder if you have the right experience on your team. That said, cc is a nice app. And now that you all are opening up, I find myself wanting to support and cheer for cc.

  45. Javier Jan 14, 2011

    After the last article on this topic I decided to try the competition’s offering- it works just fine (sync). It sounds like your eventual solution may be great but tbh I think there’s a balance between achieving perfection and providing users with functionality they see daily in other apps (specially if u keep telling people it’s coming). I look forward to trying it one day but wonder if it will be enough to bring me back. Best of luck.

  46. DrHogie Jan 14, 2011

    Folks, Duke Nukem Forever is going to be released before Things cloud sync.

    Think on this for a minute.

  47. Rick Stawarz Jan 14, 2011

    This is tremendously exciting. Now I know what you mean when you said this sync service could stand as another product you license out to other developers. I’m sure your hard work will pay off!!!

  48. Steve Harshbarger Jan 14, 2011

    This is intellectually interesting, but do consider you haven’t shipped a major new release of your product (not to mention any new products) in a quite a long time. Unless your sync framework itself is going to be a product, this seems like a major distraction.

  49. Neil Jan 14, 2011

    I support you guys completely! Keep up the wonderful work. And I find your blog posts really intriguing because you make highly technical work accessible and understandable to lay readers like myself.

    I really like Things, use it every day, and can’t wait to see it able to sync in an elegant way.

  50. Park Life Jan 14, 2011

    A git-over-http web service sounds like it might the right solution to this problem. I’m curious about how you costed out the “Database in the Cloud” approach. You assert that it would be prohibitively expensive, but I have a hard time seeing how the marginal cost would differ greatly from any other cloud solution.

  51. Brandon Adams Jan 14, 2011

    I’m interested to hear more about why you’re going git-style instead of hosting a web service.

    It sounds like the merge problem you describe would only happen if the user were pushing their entire Things instance on every sync. You could reduce the number of conflict merge events by making each call to the web service reference a specific action on a specific object. Then conflicts would only occur in case a user submitted an action on an object that had updates on the server, and you could then prompt the user for resolution. You could also have a batch call to group operations together in case the user has been making too many changes offline.

    I’m also interested in your market research, it seems like if you do this right it could become a recurring revenue stream. I’m still waiting for it to be done right – RTM’s got the web service, but their project paradigm is broken. The first person that gets it right could get up to $10/mo from me indefinitely.

  52. Tyler Smith Jan 14, 2011

    Something that no one has brought up so far is that Things already has a partial “Cloud Sync” solution in place, for those with the right tools.

    I use Things on my iMac at home, which is setup to sync with my iCal Calendar. My iCal Calendar is setup to sync with my Microsoft Exchange Calendar at work. I have Things and iCal set to auto-launch when I startup my iMac.

    Tasks in Things show up in my Microsoft Outlook task list, and changes in either location immediately sync to the other. The Area/project context becomes part of the subject line of the task in Outlook, and any tags show up as well.

    Where this falls apart is in the Things Touch and Things for iPad versions, which don’t have iCal sync functionality (likely due to limitations in iOS). If they did, my Cloud Sync problems would be solved!

  53. Leonardo Avesani Jan 14, 2011

    I literally can’t wait for OTA sync to come. Between two iMacs (home and work), an iPad and an iPhone, my GTD has pretty much gone to hell months ago.

  54. Kemal Yamanlar Jan 14, 2011

    Hi.
    Regarding MobileMe.
    I just started to use the app Wallet. This app is not a Aplle product and I am syncing via MobileMe. So why can’t you?

    I can not understand from your conclusions: will cloud syncing be possible or not.

    Thanks for the blog.

  55. Mike Jan 14, 2011

    Tyler,

    Just because your cloud sync problems would be solved doesn’t mean everyone else’s will be. Most people probably do not use iCal synced up to Microsoft Exchange calendar at work, or anywhere else. The vast majority of users just want a solution to let them manage tasks on the go, and come home to their Macs where they can continue managing tasks on a larger screen with zero interruptions.

    That’s what CC is working on, and it’s not a cakewalk. Reading through the comments here, I can see it’s clear that this problem hasn’t truly been solved in an elegant “no muss no fuss” kind of way. Some syncing services only work 75% of the time. Others generate frequent conflict messages. I think what CC is after is a silent sync that just works in the background with zero interference by the user.

    I haven’t been following this saga–I’ve just been using the product–until recently. It sounds like they could have managed expectations a little better, but then every company (including Apple with its cut-copy-paste) could use a little help there.

    Moral of the story: don’t buy software based on future expectations. If you can’t wait for a feature, figure out a hack. If you can’t hack, well, then you get to be patient.

    I appreciate the transparency and look forward to Part 3. I’m curious as to the mystery behind “…we’ll be sharing more information about what this means” because I feel a subscription service coming on. If you have to describe “what this means” for your users if you’re implementing something, that usually involves a pay wall. I hope I’m wrong.

  56. Thierry Jan 14, 2011

    Why not use Google’s AppEngine, as Dave Peck pointed out on the example of Things?

  57. Jürgen Jan 14, 2011

    @Thierry: Excellent question. More about this in an upcoming blog post.

  58. Dave Jan 14, 2011

    Talk to the people behind 1Password – they use Dropbox to accomplish syncing and it works across multiple devices and multiple OS’s now. Seamless…

  59. Jürgen Jan 14, 2011

    @Dave: Of course, we know 1Password and how they are doing it. The needs of this app are very different from Things.

  60. SunByrne Jan 14, 2011

    The part I think you’re missing is that, with some exceptions (though not many), end users DON’T CARE what the underlying technology is. End users see other products doing “cloud sync” and it appears to work fine, whether it was done the “right” way or not.

    I use a competing GTD product that seems to me over-engineered from a UI perspective. (The iOS versions are actually better than the Mac version in this regard.) It’s expensive–really expensive–too, and I’ve had to pay for it *three* times (Mac, iPhone, iPad). But you know what? It syncs more or less invisibly to me, and that part works just fine from a user perspective. Yes, it’s a file-based sync using iDisk. Is that an inferior technology? I guess–but I don’t care, because they got it to work; it worked day 1 from Mac to Mac, and day 1 from Mac to iPhone when they launched the iPhone app.

    Maybe your new solution will be better, but from the user perspective, it doesn’t matter. (It is, by the way, entirely unclear in what way your solution is “better” from the perspective of the user.) I, and I suspect most other people, don’t generally base purchase decisions on a promise of a higher-quality version of something that is already invisible to us anyway. I have all kinds of other apps that sync, some via Dropbox (e.g., 1Password) and some that sync Mac-to-Mac via MobileMe (e.g., Yojimbo, MacJournal). Maybe these methods are inferior, but they work well enough that it doesn’t cripple the product. Waiting for a “perfect” solution seems like cutting off your nose to spite your face. A decent solution NOW is a lot better than a great solution years later (at least for application software). It’s clear from the comments here that I’m not alone in this. In fact, the VERY FIRST comment on the App Store for the iPhone version is “Things rock, but needs sync.”

    It’s a shame, really, because to be honest, I like the look of the Things UI better than what I’m currently using. However, I couldn’t really consider Things because of the need to manually sync; that’s a deal-breaking omission. And now I’ve invested way too much money in a competing product to even consider switching to Things unless it were free–which it isn’t, not by a long shot. I guess it’ll be good moving forward, because you’ll be able to compete for new customers, but this is too little, too late for me.

    The whole thing is also puzzling, since Things seems in other ways to be designed in ways that are sensitive to the needs of users, so it makes this oversight all the more odd.

  61. Jürgen Jan 14, 2011

    @ SunByrne: I can reassure you that it is all about the user. I mentioned some of the benefits in my posts, but I can see that among the more technical discussion it is probably easy to overlook this. I agree that for a company like CC it would be odd to ignore the needs of users due to oversight. ;)

  62. Policarpo Jan 14, 2011

    A great many thanks for another insightful post. It’s always rewarding to get a peak into how concepts are processed @ a company.

    Really looking forward to future articles and the inevitable upgrade. :)

  63. Simon Jan 14, 2011

    I’m still totally convinced of the “Things-GTD Aproach”, however I stopped using it on my mobile devices, waiting for OTA sync.

    Reading your blog series (I am glad you could resolve at least the “over-the-web” communication problem and I like the solution), I perceive one core problem: In your attempt to find a sufficient (by your own, but not necessarily your customer’s measure) sync solution for your data structure, you have experienced – despite external help – massive problems for over two years now and its unclear whether the light at the end of the tunnel you can finally see, is an oncoming train.

    I do not write IT software and am not familiar with the technical details of the sync problem, but I am with Subversion and also overengineering. I can see why Dropbox and MobileMe is not the way to go, but the longer I hear you talking about how no existing solution meets the needs of your complex database, the more I get the feeling that data synchronization is not the fundamental problem here. Playing the devil’s advocate, what if an overengineered sync solution and all resulting difficulties were just a consequence of an overengineered and overspecified fundamental Things data structure? Because for me, in relation to other GTD apps, the additional data complexity which makes all opponent’s solutions completely worthless, is hard to find in functionality.

    So all I am left with, are two additional core statements: You’ll (probably) expand your focus to data sync solutions, reallocating resources away from Things and I’ll have to pay for OTA sync. Which I certainly will not.

  64. Joe Stevens Jan 15, 2011

    Thanks for clearing this up, I am sure you guys will come up with a good solution. I would have been satisfied with dropbox syncing though.

  65. Eric G. Jan 15, 2011

    Stepping aside from all the ins and outs of writing code in a networked universe, I’m very happy with the interim solution mentioned by several other users, that being the (somewhat limited) use of Dropbox. The only caveat is that you can apparently only have Things open on one of your chosen computers at one time (no biggie). As well, I am only using a laptop and a desktop workstation in concert with an iPhone – there’s not a second mobile device involved in my world and I’m not sure how that would work out. But things with Things and Dropbox seems to be a dream for me so far :-)

    I apologize for re-stating whats already alluded to on the support section here at culturedcode.com, but I personally looked for a specific post like this on the blog and never found one so i’ll share what i’ve garnered.

    1) close Things on all your computers

    2) grab your Things library folder over here:
    /Library/Application Support/Cultured Code/

    3) load it onto your Dropbox folder

    4) open Things on your primary computer, or the one with the most updated tasks, while holding down the alt/option key.

    5) direct the program to find the library at its new location in the Dropbox folder. select ‘chose library’. (when setting up my second computer I had to attempt this several times so don’t give up too quickly)

    6) repeat step#4 at each of the computers that you wish to sync via Dropbox.

    *again, only have Things open on one computer at a time and you’ll be more than happy.

    BTW, the wallpapers kick ass. Cultured Code kicks ass. Thank you so much for the level of transparency that you are engendering. Love it. Great discussion here folks.

  66. GeiIM Jan 15, 2011

    As a professional developer for over 30 years on all type of platforms, including mobile, I am sympathetic to the struggles of getting synchronization to work properly, every time.

    But there’s an axiom by Voltaire that I learned a long time ago, “The perfect is the enemy of the good.” Sometimes it’s better to provide “the good” and a way to deal with its imperfections and problems rather than strive for “the perfect” and never deliver.

    I do appreciate your being honest and sharing your struggles in this arena – it does take a lot of honesty and sincerity and you’ve clearly shared a lot with us.

    But another axiom comes to mind, this time by Ben Franklin, “Well done is better than well said.” Please deliver something in regards to OTA sync soon. The mobile world is moving forward quickly and the current sync method is becoming analogous to the dial-up modem in a broadband world.

  67. Jürgen Jan 15, 2011

    @GeilM: I enjoyed reading quotes from Voltaire and Benjamin Franklin here, but I am not sure your interpretation of Voltaire is the only possible one ;).Your Franklin quote suggest that it is either one or the other here, while we will be doing both. I don’t think that giving background information has ever hurt anyone. In fact, many people have emailed us to ask for exactly that.

  68. Michael Moncur Jan 15, 2011

    This is all fascinating, but I think you guys really need to talk to a PR consultant or two.

    Your customers want the answers to three questions:

    1. When will cloud sync be available?

    2. How much will it cost?

    3. How reliable will it be?

    As a Things user, I’d much rather see a 2-paragraph answer to these questions than more philosophical discussion. Better yet, I’d rather see a Things update with awesome cloud sync before I see a detailed discussion of why you did it the way you did.

    I’m also a programmer, and I do find this interesting information. It just doesn’t make me a happy Things customer.

    (I also think you probably should have given “Database in the Cloud” another chance, but I’ll wait to hear what the actual sync solution is.)

  69. Jürgen Jan 15, 2011

    @Michael Moncur:
    Here are the answers to your questions:

    1. We don’t give ETAs anymore, but see my remark near the end of the first State of Sync post.

    2. As previously stated in a comment to the first post, we will be conducting extensive tests with real Things data to estimate what the actual server costs will be. Based on that information we will then determine and announce possible fees. The next article will contain more details.

    3. In my posts I made a point that we care about quality. That includes reliability.

  70. Alan Vallis Jan 15, 2011

    A couple of notes on Dropbox which may be of use.

    Or not. :)

    As I understand it, Dropbox employs “Alpha sync”. This eliminates problems with syncing large files. In essence, it’s not necessary to synchronize a whole file, only the part which has changed.

    I’ve used Dropbox to successfully sync the following programs with zero problems even when the programs are open in more than one machine:

    Autokey (Linux) and Autohotkey (Windows)
    Basket Notes (Linux)
    Info Select (Windows)
    Stickies (Windows)
    Thunderbird and Firefox (Windows & Linux)
    Tomboy Notes and Zim (Linux)
    Typinator and TextExpander (OS X)
    1 Password (OS X)
    Wiki on a Stick
    Tiddlywiki

    @ Eric G

    Thanks for the info. I see where I’ve gone astray. :(

  71. Jürgen Jan 15, 2011

    @Alan Vallis: Firstly, let me emphasize that I think Dropbox is a great service for what it was designed for. Eric G. (see his comment above) has explained how you can use it to sync different Things for Mac libraries. However, you always have to make sure that only one Things app is running at a time (assuming you have permanent internet access).

    This is a bad user experience and the user is bound to make a mistake earlier or later. As I mentioned in the article, there are ways to hack this, which work for simpler applications (like 1Password). However, using our custom server-side approach we are able to provide a much better user experience and won’t limit ourselves in terms of cool features we can add in the future.

  72. Bill Jan 15, 2011

    Great that you are communicating…finally !

    Two requests:
    a) Can you pick up the pace, please ?
    b) Please publish a release date and commit to it.

    After that I will enjoy reading how you are deploying a unique solution, but without a date of release or external beta it just sounds like buying time.

    Thanks !

  73. Dave Jan 15, 2011

    Think Nike: Just do it!

    I cringe to think about how much business you’re losing due to the lack of this functionality. Give us something and perfect it later. You have the superior product; all you have to do is close this final loop.

  74. Frank Petrie Jan 16, 2011

    Some kind of working within the cloud is necessary. But I have faith in the staff, so I’ll await your solution for this top- notch app.

  75. Matthew Jan 16, 2011

    Tell me if I’m reading too much between the lines here: Assuming that what you are working toward is something that “just works” — more or less invisibly to users — and that you are ultimately successful, then the outcome will be worth waiting for.

    And, to many people it will be worth paying for. To some it will not be, and that’s the calculated tradeoff CC gets to make — but we users are not entitled to anything. You (Jürgen and the CC team) must know this already. You have built a great business charging a premium to customers like me who have decided Things’ approach to GTD is a great fit. We Mac and iOS customers ought to be familiar with this, too, because of course it is also Apple’s MO.

    (I suppose I’m just lamenting that more consumers don’t understand that when we object to a product’s value proposition, we probably aren’t the product’s target market, and so our “Hell no I won’t pay!” opinion has little chance of motivating the producer. This is a pet peeve of mine as a marketer, so … Le Sigh.)

    @ Joe Kohlmann: IMHO, that is unfair. CC has a great track record of shipping damn fine, even artful, pieces of software.

    @Jürgen Best of luck! Looking forward to it.

  76. A Jan 16, 2011

    How about a Windows version of Things Desktop for those of us who don’t want our data flying about the cloud & who would be happy to sync our iPads & iPhones to out desk/laptops-as we currently do to update calendars & contacts etc?

    I know u have Things for Mac computers though & I think it does this..?

    It’s just a shame that I can not work with Things in this way- like I used to with good old Palm Desktop & handheld ;)

    Either way Things iPad is still the best I’ve found- can not wait to start using my current iPad database on my iPhone :)

  77. Jordy Jan 16, 2011

    I gave up Things a while ago, because of the lack of cloud syncing. And to be honest, I think you’re trying to to hard to make the perfect solution and let your users wait to long for it. I’ve been using another product for a while and it syncs trough my iDisk and I have no problems at all. Your posts about the status of this project are interesting to read and I think it’s good your finally sharing some information with your users, but I think there’s only one thing people really want to know…. when will this be available? Personally I don’t really care what kind of solution you come up with or why you have chosen for this, as long as it’s free and I can sync my devices. I’m more interested in a release date.

  78. Pavel Koneski Jan 16, 2011

    Apparently, various people have various needs for Things, some can’t wait for cloud sync, some other don’t care, but are missing other features, some are happy now already.

    I myself have mixed feelings with Things. It is beautiful, nice to use, convenient but there are few shortcomings and annoyances in the GTD model implemented. I don’t need cloud sync (because I have one central work place) but I do need iPhone/Mac sync, and the one implemented right now is clumsy and buggy. My worry is that because of all this enormous focus and effort on cloud sync, other aspects of Things lay under-focused and underdeveloped.

    I use Thing on iPod touch since I need to keep my “things” with me all the time. I have played with the trial version of Things for Mac but decided to put that on hold. It is difficult to decide to pay for an application 6 times more than the main-use iPhone app only for the comfort of large screen task manipulation and questionable and error prone sync. I suppose no one at CC is seriously trying to fix the LAN sync because of the cloud sync priority. If the “cloud sync” is a holy grail of all syncing problems then OK, but if not, then by delivering one day cloud sync CC may make happy only a subset of their clients, alienating other groups depending on other features. Also, I wonder (assuming that cloud sync is a paid service) whether the current LAN sync will be abolished, forcing the users who need it to switch to cloud (or a competitor product…).

  79. J Chris A Jan 16, 2011

    As a developer of Apache CouchDB, I’m biased, but you should definitely evaluate it before doing too much work on other options. Couch has been in development for over five years and is used to provide sync, in everything from huge cloud apps to tiny mobile apps. It’s JSON and JavaScript based, and runs on iOS, so it sound like a good fit for your problem domain. Feel free to email me at jchris@couchone.com and I’ll help you see if CouchDB is indeed a good fit.

  80. Coppi Jan 16, 2011

    Hello Jürgen, thanks for this post. News on repeating tasks ( iOS ) ?

  81. Carniphage Jan 16, 2011

    I think there is some confusion about the potential use of Dropbox.

    Dropbox synchronises (merges) two file systems.
    It is a whole-file syncing mechanism. And is not the type of fine-grained syncing needed for individual tasks in Things.

    HOWEVER that does not make Dropbox value-less. The value of Dropbox for this application is to provide a common file system that is automatically shared between a desktop and mobile clients. It’s a damn fine free data-pipe.

    In this way Dropbox could be used to (elegantly) communicate database changes between a desktop Things client and a mobile client.

    Synchronisation could occur by reading and writing files containing database changes. Specifically, time-coded change lists for each client.
    And the execution of the sync could easily be performed by one of the clients. This merge process is not complex. It simply does not require a server-side solution.

    But what I am describing *does* require a model in which each user database-changes are handled tentatively.

    In an earlier blog post Jurgen said merging time-coded changes would not work. Perhaps he should explain why.

    C.

  82. Rodrigo Munoz Jan 16, 2011

    I WILL pay for cloud syc. I look forward to it. Thank you Jürgen!

  83. Rob N Jan 17, 2011

    I’d be happy to pay for a web option too… but I cannie wait forever…in the meantime toodledo for me.

  84. Steve Jan 17, 2011

    My 2¢ With regard to the question of price:

    I would PROBABLY pay for an upgrade (i.e. Things 2.0) to enable cloud sync (although I would certainly be annoyed with it and complain about it!)

    However, I would not pay a monthly fee for this service.

  85. Christopher Jan 17, 2011

    Thanks again for being so forthcoming and transparent. I am sure this is difficult for any developer.

    As a user understanding your approach and stream of consciousness has been fascinating. Things is solid.

  86. Frojd Jan 17, 2011

    Wow, seems like you’ve put a lot of thought and work into this sync engine. To bad I won’t be seeing any of it, since I’ve happily paid and switched over to a competing product instead. Ambition is great, but shipping something good enough is even better.

  87. daniel Jan 17, 2011

    I hope the final sync solution would involve a way (or option) for us to store the database on our end. I was really hoping the solution would be using webDAV, since we can store it on our end, without our data tapping to a 3rd party provider, or having to pay additional for sync capability….. :|

  88. Tommy Bailey Jan 17, 2011

    This post is a perfect example of why Things is the best GTD application as far as UI and stability is concerned. Keep up the good work, it’s not unnoticed.

  89. Alessio Jan 17, 2011

    Please integrate basecamp on things…..
    it would be nice

    thanks

  90. Richard Brooksby Jan 17, 2011

    No unencrypted data about my clients’ activities (and therefore mine) can leave our network. This is not negotiable. I’m hoping you’re taking this into account!

  91. GeiIM Jan 17, 2011

    Jürgen,

    I think you misunderstood my context – I never intended an either/or context. Rather, one can seek perfection incrementally while providing good in the meantime – there’s nothing wrong with providing an appetizer while everyone waits for the main course.

    As for Ben Franklin, even you must admit that it has been a long time waiting for some form of OTA sync. I’ve been waiting for a year, others longer. Many including myself purchased the program expecting it to be just around the corner. Of course well said comments to keep us informed are welcome, but how much more so well done work.

    It is important to manage perceptions or they will obscure the truth. When the perception is that others can provide what you cannot, then that will become the truth, no matter how inferior the others may be.

    My point is that some delivery is needed otherwise people will settle for less just to satisfy the need. Using my example of the appetizer while waiting for the main course, if the famed main course never comes, people will leave and get a measly sandwich just to satisfy their overwhelming hunger.

    Thanks for responding, I just wanted to clarify my intent of my last post.

  92. Just Spoor Jan 17, 2011

    And what about a sync possibility just between I divides like the iPhone and iPad? For now i will patiently wait for your cloud solution :-) In the meanwhile Things is still the best GTD app ever. Keep up the great design and usability!

  93. Michael Jan 18, 2011

    I have quit Things even though I actually own three versions. My problem is the current sync is not consistent on multiple networks.

    I am now using a competitors todo list that syncs fine. It has a web app that you can sync to whenever. I use it on my iPad, iPhone and web.

    I would go back to things if you can figure out a way to sync.

  94. josh Jan 18, 2011

    Just did a 1password sync via dropbox and it was slow. Pulling over only 300 items took several minutes.

    This speed is fine for an app that doesn’t have a constantly changing dataset, but I think it would get annoying for a todo app.

  95. John Jan 18, 2011

    If I can’t access my own Things data on my own machine, remotely, without having to store my stuff in CulturedCode’s cloud, I’m not interested. You may have invented something as cool as you describe, but if my data has to go on your servers, I’ll start looking elsewhere.

    Run an app on your home machine, leave it on, and open a port, people. We’re on Macs! We’re pretty much safe. Check out Video Player and StreamToMe for inspiration on this architrcture. Buy easyvpn for a couple bucks to be extra safe. No cloud necessary.

  96. Mahmood Jan 19, 2011

    All I can say is that I miss Things… I have been using alternative solutions for a while, exactly because of the sync problem (I am a forgetful person. You can’t leave anything routine to me). I will be really glad if finally the cloud solution comes out.

  97. Max Faraday Jan 19, 2011

    You are re-inventing the wheel.

  98. Francis Jan 19, 2011

    Kevin van Zonneveld mentioned it before, and I was thinking it as well, but it seems like CouchDB really might align with the problem. I’m sure you guys are well underway with a solution, but still seems really appropriate. This is an interesting writeup also: http://guide.couchdb.org/draft/conflicts.html

    What are your thoughts on this?

  99. Jürgen Jan 19, 2011

    @Francis: The past days I had a great email conversation with Chris and Jan from CouchOne. CouchDB is without doubt great technology. There are two reasons, however, why it is not working for us at this time:

    - Using CouchDB would require us to rewrite Things on top of the CouchDB database framework. Currently we are using CoreData on the Mac and SQLite on iOS. Both are relational databases while CouchDB is a document oriented db. This would be a major rewrite which would take up a lot of time and resources.

    - As Jan said, CouchDB is only now getting “interesting” for iOS. Our own development efforts, on the other hand, are already nearing completion. CouchDB for iOS comes to late for us.

  100. Dejan Jan 20, 2011

    I was following your epic journey towards the sync feature for a long time now (I am user of Things for Mac). I must say your latest two blog posts would be very nice read in academic circles in forums for open-source projects. But for a commercial project where people are paying quite substantial fees to buy basically the same product over and over again on each new platform (Mac, Iphone, Ipad), all this communication sounds a bit silly to me.

    I do not dispute the fact that getting these things done properly is a serious undertaking, but then again your are paid to do so. Why convincing us that you work really hard for your money? Face it, many products got this fundamental functionality at least sufficiently well that people can use it and be happy about it. And there is no excuse to provide at least that now that you have sold people your application three times (for Mac, for iPhone and for iPad). To me this seems to be disrespectful towards your customers.

    All this reminds of a really accurate weather forecasting algorithm that would take two days to calculate what the weather would be like the next day; by the time calculation is done, it is not needed anymore. For the sake of your company and for the sake of people who already bought your applications for multiple platforms, I really hope I will be proven wrong and many will benefit from this super trouper feature that some day will become available (hopefully before DukeNukemForever as one of the commenters has mentioned above).

  101. Tom E. Jan 20, 2011

    Thanks for sharing. Like everyone else, I cannot wait to start using whatever it is that you guys come up with.

  102. Javier J. Jan 20, 2011

    @Jürgen, ignore the negative comments! I can’t say enough how much I enjoy these blog posts. Not only am I a customer (own Things for iPhone) but am a software developer and thus really enjoy reading how others work especially those from who I admire greatly and being a user of their software. What you guys do is of great inspiration to many of us. I think its great you openly share your thoughts and how you tackle hard problems. Whether design or programming related. I’ve learned a whole lot and continue too. Please keep it up! It doesn’t go unappreciated.