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.

Sunday, June 8, 2008

The journey of a thousand lines of code...

First things first, if you're here via chroniclesofsushi then you know what this is about. If not I'll make a brief introduction as this blog is to resist any postings of the rambling nature.

  • I want to improve my coding skills
  • I want to learn new languages
  • I want to master (eventually) the languages that I know already
  • I want to develop on at least two platforms (Linux and windows, MACs do not exist in Africa)

At some stage I will sit down and do a mind map and set goals and what not for this site. For now I have an assignment due 3 days ago that i have to get to so I will just get the ball rolling.

My vision so far for this blog is to share my coding experiences as I go along, I want to improve because better code never hurt anyone. As of today the languages that I know are
C/C++ and Java. I don't program often enough to be as familiar enough with the languages as l'd like to be but given enough time I tend to produce working code even though it might not be the most efficient. I would also like to dabble in some web languages. Php, JavaScript and XML are at the top of this list. I like network centric programming so you might see a lot of that, that's most because i'm studying to be a telecomms engineer.

I will also share my code on the web, it will be released under the GNU license (I've always wanted to write that somewhere). Not that I expect a lot of re-use but mainly because I want people to see and point out areas where I can improve. For now projects will be chosen on a "what i need to do now but cant find anything to do it on the internet" basis. Sometimes solutions will be there but i will still attempt to tailor them to suite my needs and for experience's sake.

I picked my project a few days ago, as mentioned above its very much network centric.

AIM : to sync two or more rainlendar calendars on various networked machines.

More details to follow in the next post. So far I'm going for a client server approach, java will be the language of choice mainly because of the GCalDaemon. It works perfectly but I will be tailoring it to my specific needs.