Wednesday, October 05, 2005

Pysystray progress - Lessons learned so far

pysystray-0.6.0 and pysystray-0.6.1 (a bugfix release) are out in the wild now :)
The major work in the 0.6.X branch is to make the menu's modifiable on the fly.
Now, this is what brings me to the crux of this post. On my own, there are some plans I had for pysystray, these plans are no where near what it is now. My point is that my own scope when compared to what pysystray can currently do in its relatively short lifetime, was terribly myopic. Its amazing what real life situations can do to a software project, even a very small one like pysystray.
This brings me to another thought. Imagine that I was a company, producing pysystray. Ofcourse, one can say that my users will also eventually create the ecosystem akin to the one i've described. I agree. But the question is, what chances would a single guy like me, have of convincing the next Joe Schmoe to actually Buy n License pysystray? Well, I really don't know the true answer to that, but i have a feeling that it has been easier to build an ecosystem b/cos of the BSD license.
That said, I think the most important difference is this. Under a Buy n License arrangement, (aka. Get em, lock em in ;) ), it would seem that once I have my customers, locked in and dependent on me, I am likely to drive the code in any direction that I see very fit, regardless of wether this is neccessary or not. I could decide to begin to add features, and even begin to dream up integration into other products of mine that i'm dreaming up. I can then use that product as a leverage to move other products of mine into the unsuspecting consumers hands. This seem like a wise Marketing move to me. Eventually what could happen, is that small simple pysystray, could be Pysystray Professional 2005 :-), and i'll have standard versions, enterprise editions that can connect to Oracle and even SAP!!! :-) (i can't even say that with a straight face!!! LMAO!!! )
Anyway, you get the picture. Let me paint the second picture. In the second case, the code is opensource, so my selfish interests can be uneccessarily served, because once i begin to move in a direction that is undesirable, someone else can very rightly grab the source and fork the project, and i'll be left with a product with no users :). Instead of being selfish, I have to learn to listen to the community that is growing around the project. Some of the users are using it for some very serious projects, and will have really demanding requests to make. Its in the interest of the project, to try to satisfy these real needs as much as possible. That way, the small project gets better and more usefull, and everyone goes home happy :)
Let me say here, that the first scenario doesn't neccessarily always happen, but it can happen (and has happened too many times than is good). I belive software should be as small and simple as possible (and no smaller/simpler), serve one purpose (and better serve it well),  and be reusable in ways not originally imagined by the creator. If software does this, it will proove over time to have survival insticts of a virus, as it will keep finding itself used by larger projects.
Software written in this way, is easier managed too, and is simpler to finish too. I'm beginning to find that some of my biggest beef with some software, is my total inability to bend them to my vastly superior will (yeah right!!). But seriously, I'm not dumb, and I want to be able to do things the arthur didn't even think possible. This is my idea of Genetic Mutation / Natural Selection as applied to software. If your software can't easily mutate to serve new needs (b/cos there will always be new needs), it is doomed before it is even released.
In conclusion, I've been learning that there is truly "Nothing New Under The Sun", as most ideas we think are new, are slight variations of already known ideas. If you combine this with "Scratch Your Itch", then you can really have a successfull project. If you build something just for the sake of building it, its almost likely to fail, or become stuck in a rut later in life. If you build something you actually use yourself, chances are you'll lovingly take care of it, and strange as it may sound. Successful opensource software have a loving arthur, who painstakinly guards against dirty code, wrong ideas, etc, but most importantly, keeps the code lean and mean and relevant.
Phew!!! That was a mouthfull...
Essien... out.

XMLHttpRequest - Good or Evil

They've been having fun with studying AJAX at Artemis ( recently (i'm jealous :) ). Anyway, that article arthur ticked me off the wrong way, especially with his conclusions... I thought he was going to be objective and balanced, but he wasn't, so here goes my two kobo reply.

I think its unfair to paint Ajax as unsafe in the face of similar data that CAN and using the authors phrase, HAS been ganered from users using Desktop apps too. Truth is, once you’re on the internet, Security and Privacy gain a whole new meaning. I mean, the term "spyware" came up way before AJAX. Assuming that the Web was safe before AJAX (or safer), is a false premise, check out what cross-site-scripting can achieve. Agreed with AJAX you can do these things easier than before, that doesn’t mean that without AJAX these things totally can’t be done.


One may argue that with spyware, you have to install them... well... have you ever decompiled/disassembled that program you use most on your system, to make sure its not spying on you? Oh... i c... you took the Software Companies word for it... And now you're not going to take their word for it if they tell you their website is not spying on you? Whatever... Me, I don't believe any of them anyway... I just limit how much of my info can be compromised so at anytime the amount of info I loose is really minimal. How do I do this? I TRY to allow only OpenSource software have access to my most personal data, and where I can't, I don't bitch if I can't fix it. I'm I still very safe? Ofcourse NOT!!! What kind of world would this be if we were all totally safe? Unrealistic... that's the truth of Life... deal with it.


It is also not ground enough for the author to say: *Are you not yet fearful and angry? Not ready to rise up and strip the XMLHttpRequest code from your browser?*


As a matter of fact, I think that’s just a dumb conclusion (IMNSHO). Every Network Admin worth his salt, infact, any Engineer or human that deals in innovations, knows that when adding features to a product/design, most features can be used for Good as well as for Bad. If you asked me, I would say that in Nature everything comes in ionized (for want of a better expression) pairs – Positive Side n Negative Side.


Take the most basic of human abilities – Choice. This is the single factor that allows us to have great men like G. Washington, A. Lincoln, Essien Ita Essien (no… that’s not a typo :P), its also the same factor that allows us to have some of the worlds worst Tyrants like A. Hitler, J. Stalin, etc. Is choice a Bad Thing? I’ll say a resounding NO!!! But I’m guessing that the Arthur of that article is likely to recommend that the UN recommend all Nations of the world to pull out Choice from all New Human Beings. Soundz hilarious right? Exactly, that’s what reading that ‘pessimism’ laden paper feels like to me.


I would appreciate an article that highlights the potential security holes, and a way for users to be wary of them better than an out-on-out attack on AJAX (just b/cos it’s a new technology, and wasn’t pushed to the fore by some *traditional* big name, b/cos i'm almost certain that where this angst is coming from), and a conclusion that we should Strip Out XMLHttpRequest from our browsers!!! That just silly.


Anyways, any browser that likes, can go ahead and pull out XMLHttpRequest from its implementation and then sit back and watch satisfactorily as its Market Share torpedos downward (Oh, and if you've somehow missed the news, Opera the browser is free now too!!!). Yeah, and they can quote me as having said so (who am i? baaah…. Go away… that’s not important… YET :-) ). XMLHttpRequest has come to stay. AJAX is a technology that grew up in the wild of real software solutions (as opposed to a carefully designed paradigm), as such, it has _Darwinically_ earned its right to survive and my o my… survice it will, or mutate into something even more crazy it will.


My advice for all Nay Sayers? Wake up… shesssh… get real… this is NOT _Duh Maytreex_, this is actually… _Duh Reelwhurled_ :-) and as such, AJAX is here to stay.


Oh and lest I forget, better get more educated on safe browsing habits, and don’t worry, the next generation of Data Protection is just around the corner… trust me, I use Firefox!!!


Essien... out.

Tuesday, October 04, 2005

Web 2.0 - What do you think it is?

Bunmi ( recently sent a mail around the office that related to Web 2.0, I replied and in so doing, crystalized my own thoughts for Web 2.0. Here is my unaltered reply below.


Web 2.0 is the emerging webscape that is basically driven by small, decentralized, hackable and open platforms. It incorporates a lot of things, but the thing that seems to have really got it kicking off is AJAX. At the very core of web 2.0 is dynamism (and dynamic frameworks with its starchild – RoR) , transparent data (RSS, Atom), simple frameworks (a brave new RESTafarian web as opposed to SOAPsuds :-)), and oh! Did I mention a connection back to Google? :-)


I like to think of it as the desktop, slowly distilling its most important parts, onto the browser. What I mean is that Web 2.0 aims at pulling the basic underlying things we do on our desktop, and making them doable from the browser. This doesn’t mean we’ll soon have M$ Office running in Firefox / Opera / IE, but it means that a lot of what we do today on the desktop, will be increasingly done in a browser, hence making the most important platform of the next couple of decades, NOT the Operating System, but the BROWSER.


This also means relevance in this emerging techscape is going to be judged a lot on hackability / trustability (I define hackability as the property of a platform that allows it to be easily extended/modified/maintained, without relying on lots of theory and/or _advanced_ tools. I consider trustability of a platform, as the property that allows it to be easily extended/modified/maintained, without loosing peace-of-mind™. Think continous_integration, test_driven_development, worse_is_better, release_frequently_release_early, feature_driven_development.


This is ofcourse my own understanding of the current webscape and events I see unfolding in the industry. Whatever eventually happens, I’m sure glad to be alive and coding in these times == >