Friday, July 25, 2008

The story so far

Well it has not been as fruitful as i had hoped but my other non-cyber life has been rather demanding of late. In between meetings I've had a chance though to think of some architectures for my rainlendar mash-up. I have a few options that I'm going to quickly run through,

Peer-to-Peer
This one really fascinated me, I think its the simplest design and fits my needs perfectly. At the moment I need to sync three computers which translate to six because I dual boot on each machine(Note to self -- find rainlender for Linux or calendar supporting ini format). Each machine is configured with a list of other clients that have rainlender running on it. Upon start up, it queries all other machines to find updates of the calendar and update itself accordingly. This would help me avoid seeing old alarms when i boot into a machine after a week or so. (I tend to neglect the slower of my three machines :( )A client that is changed will also update the other clients as soon as it had been updated. While this would work well for my setup it would not scale very well, by some chance should a company use it to have a synced calendar when one machine boots up it would needlessly query X machines where X is a large number. Not good if i do say so myself. Although a simple mechanism of by which the booting computer could query a subset of machines, say 3 and then these machines would reply and confirm to the booting machine that the calendar they provided is the most up-to-date. Over kill for my current situation but interesting nonetheless. Will pursue this further at some point.

Client-Server
This option scales very well, but deciding which machine is the server is a problem. Having GoogleCalendar as a server could suite my needs, although I run into the problem of syncing the to-do list and the event list sans google server. I thought maybe i could upload them as attachements to my gmail account and have the rainlendar deamon query a particular email for the most upto date list. It could work, further investigations are definetly warranted.

The above serve as my initial brainstorming, I'm still to put it all into a fancy mind map but I will get to that soon. I'm leaning torwards the Client-Server model at the moment. It seems future proof and easier to implement anyhow. Maybe a hybrid setup will work where the rainlander deamon will revert to a peer to peer model if it the server is down in the client server model.

That's it for now, I'll probably revise this post later. its 2am and my typing skills are not at their sharpest.