Sunday, August 30, 2009

OSX Snow Leopard ... Apple Retail Experience

I upgraded my primary work machine from Leopard to Snow Leopard (see image of the real animal taken in Afghanistan).

So, what has changed? Nothing really observable.

Applications do start up noticably fasters (esp. the Apple software). Apart from that ... as far as I can tell, nothing much else. There are a number of tweaks -- but my personal user experience has not changed. I do however like the incremental changes that Apple makes to their product line -- rather than ground breaking modifiations to the entire user experience -- which would be rather annoying on a machine that I use everyday, esp. if I cannot find stuff that I used to be able to easily.

In terms of the user experience changes, Windows 7 will be a shock to the majority that will move from Windows XP. There are a lot of changes ... enough to cause a lot of frustration -- esp. Windows explorer and the fact that the menu bar seems to be dissapearing from more and more Microsoft applications. Eventually, I feel that Windows will have a single menu bar anchored at the top of the screen exactly like Apple.

I also spent some time yesterday at the Apple Retail Shop ( Doncaster, Australia). My younger son liked it a lot, esp. since they had machines placed on a kids-desk with games. This clever distraction for the kids essentially meant that I had to spend way longer than planned in the shop -- observing everything else. The really interesting part is that the shop was busy -- they seem to be selling a lot of products. I did not notice anyone walking out with computers (in the short duration I was there -- so no reflection on reality), but a lot of iPods seem to be sold and many more accessories. There were a lot of Apple people (in brightly colored t-shirts), so it was easy to get attention, despite the crowd. I could not place anything specific that seems to be so compelling, but the overall retail experience is nice. The real irony is that Telstra attempted to mimick the Apple retail concept -- only the Telstra shops seem to be permanently empty -- with staff in suits glued to their computers at the far end of the shop, as opposed to wandering the store enthusiastically.

The other interesting observation I made was that most of the store employee's were relatively young and male. It certainly has nothing to do with capability of older people or girls -- rather it seems to be a reflection of interest and preference (or Apple has a hiring policy that breaks the law, which is unlikely).

Now that Microsoft has stated they will also be into retail .. lets see how they compare against Apple. I'm sure it will be a great job explaining the differences between the 5 editions of Windows 7 (every day) and working as a MS technical support that helps remove viruses from a machine.

-- rv
PS: The real wierd bit is that the kid wants to go back to the Apple shop again -- no doubt to play games (atleast it is cheaper than a trip to the zoo).

Friday, August 21, 2009

Creating a simple cloud ready application..

IBM DeveloperWorks just posted a fantastic article on how to create a simple application for the Google App Engine cloud infrastructure.


Looking back around 9 years ago when I was fairly new to the Web application land -- the cost of what is currently being offered by Google App Engine for near free easily ran into many thousands of dollars (software/hardware/routers alone were well over $20k). Further, if you setup custom infrastructure you end up needing Network administrators (part-time contractors at a minimum), system administrators (to patch O/S and monitor infrastructure) -- this skilled work added to the underlying costs as well. If you had a good concept and wanted to take it into the Internet land -- you would have spent $200k - $300k just setting up the IT infrastructure and hiring the engineers to look after it. Of course the hardware and software depreciates exponentially. In the early days start-up companies still setup and ran their own e-mail servers (most of the time very badly managed).

I still recall attending an auction a few months after the collapse -- $25k Sun Servers were being sold for less than $5k (including all the software on it -- but no one realised the legal implications of transfering the software license). The irony at the auction was that the only items that held value were the fancy furniture many of these startup's bought (at least you did not need a $100k engineer to maintain them).

The new cheaper infrastrucutre world (not to mention the reduction in deployment and maintenance costs) will contribute towards a reduction in overall IT costs -- but, the real benefit is that it allows developers with good idea to translate them into software and make it available at a farily low cost.

The side effect of all this is that the developers can come from any part of the world, the infrastructure capital requirements are now sufficiently low that skilled engineers from a lot more countries (I'm thinking India, China, Eastern Europe, Russia, Brazil) can create software and compete for market share. Will this oppertunity be taken up .... I do not know the answer, but we will soon find out.

-- rv

Thursday, August 20, 2009

The future of software development is cloudy!

This post was triggered by an article I read recently about Apple Inc's Cloud Ambitions. Apple is building one of the world's largest data centers' -- however they have not officially indicated a purpose or motivation. Microsoft has also embarked on a similar data centre venture (potentially to support their Azure platform). Google has its App Engine, Amazon has EC2. Adobe and Yahoo are wandering on the outer-rim, but with no firm roadmaps. There are a whole stack of other domain specific platforms out there as well (SAP, Oracle, SalesForce to name a few).

Currently, we are still in the pre-beta land for these cloudy ambitions. In another 5-7 years, these platforms will be mature. I'm going to be bold and predict that you will get the following from each vendor:
* A fully integrated IDE (one that will plug into the cloud, potentially running directly on the cloud -- i.e. runs within a web browser)
* A mature API stack (significantly more mature than what we currently have -- potentially domain specific maturity as well)
* A database system (to store/retrieve data -- file systems etc.)
* Language support for: Java, C#/, C and Python [others maybe -- but will certainly have to target either the JVM or the .NET CLI]. If Apple joins the fray at this level, expect Objective-C as well.
* Legal/deployment terms that will work for a number of different commercial domains (even finance and govt.).
* Services that will allow export of data stored on the cloud (e.g. GMail offers the ability to pull down all email to a local client if you want).

Why only a few languages? Cloud architectures rely on a method to distribute execution of code across multiple machines -- currently we have maturish platforms that will execute Java and C# applications. Support for other languages may never get the funding needed (esp. given the current financial climate) and hence will stay within academia or within a small group of enthusiasts. For a new language to take off, it has to offer something much much more. Java has a very large library pool built over the last decade (its core strenght), C# has 20k engineers just at Microsoft, it also has some strong language features.

What does it mean for software development? New projects will start to consider a cloud platform and very likely get locked in (kinda like they do now, if they choose SQL Server, .NET/Java, Oracle etc.). The key difference will be obvious in the Job ads -- companies will want Azure experience or Google App. Engine experience with knowledge of a certain set of API/libraries.

One of the largest change that I expect to see will be in the way we interact with database management systems. Currently, developers still have to be careful with the way they write queries and how they store data (i.e. the data structure). However, my personal experience has been that over the last 10 years -- developers have be able to get sloppy with the way they program because machines are fast and most developers are now able to get away with in-efficient code. This will now extend into the data-structure and query world in the cloud. If you have Google like retreival at your finger-tips, why bother thinking through your database schema at any level of depth? Do queries matter that much -- just throw keywords and guess till it starts to get the rightish data back. There are still going to be a few aspects that need a bit more attention, but nothing like we do now.

Once the clouds start to spread, the biggest change will be to current "PC" industry. In another 5-10 years, many more TVs, iPods, Mobile phones, Automobiles will have a full internet connectivity, quick CPUs, very likely a sizeable hard-disk and ability to hook into the cloud (turned on the default). The question is, will we still need a separate desktop PC at home?, for what purpose? If you thinking gaming ... consoles have already won this battle -- PC only games are no longer a growth market.

Good news: There will be plenty of work as we migrate legacy applications into the cloud. New innovations.

Bad news: More learning (hopefully, this will last our careers)