Google App Engine - First impressions
* It is free, but with quotas. The business model is probably to get others to build apps so that Google can get users, searchable data & then eventually offer a business edition.
* You don't have to worry about hosting, load balancing & scaling which is indeed huge since writing the web application is the easiest among all of the above.
* The initial release is not ready for business apps, it doesn't have an SLA nor does it have a good support for authentication & authorization.
* You need to learn Python if you haven't already, but future support for ruby or php could be expected soon.
* There are no issues in hosting flash or flex application except for the login to google account issue.
* Python frameworks like Django are natively supported, but you can use your own framework as well.
* It is possible to do GQL queries and Google full text search support.
* And there is the full offline sdk for those who can't get an account yet.
* Just use your own user model instead of Google's to avoid lockin.
* Some have even gone ahead and ported AppEngine to Amazon EC2 even though without the BigTable support.
* I wonder how Amazon EC2 & other $5.99 webservice providers are going to react?
Monday, April 14, 2008
Thursday, March 13, 2008
iPhone SDK - First impressions.
This is probably the most comprehensive SDK released for a mobile OS, even though Windows Mobile probably is similar. It must have been easy for Apple since most of the functionality was already in in Mac OS, throw in a different UI framework & a bunch of innovations on touch, acclerometer and location sensing you have the mobile SDK. RIM's blackberry SDK is many years old but is so immature compared to this.
It is not without it's own set of problems though. The reliance on old Mac tools means you need a Mac computer running Leopard to use it. The support for favorites like Java(upcoming from Sun)/C# is minimal and programming in Objective C is closest to programming in Win32. So, developer productivity takes a hit and would automatically reduce the number of developers who can produce business applications for example. It also doesn't expose some of the phone & SMS functionality to prevent misuse unlike similar offerings from competitors.
The availability of Xcode makes debugging & deployment so easy that you can write the first application in less than 5 minutes. Some of the UI design guideline docs are a must read if you are interested in how to design a great UI experience on any platform.
The distributions problems etc are discussed all over the net, but I don't see anything wrong in Apple trying to keep it's platform secure. Besides, small time developers get marketing & distribution for a 30% cut. But for mass market applications there has to be some sort of an agreement which they can work out with Apple.
Sunday, December 16, 2007
Parallels vs VMWare
Just a mental note to myself to keep off Parallels on Mac if I have a choice, it wasted almost my entire weekend since it had trouble after I upgraded the OS to Leopard & installed new parallels trial. XP image kept on crashing after a Windows update. Finally, I switched to VMWare and had to reinstall all OSes. Hopefully, it is just a problem with the trial copy, but I found VMWare to be trouble free. I had a great opinion about Parallels, but all that changed this weekend. My vote - VMWare!
Tuesday, October 09, 2007
Ruby on Rails
It is hard to be excited over a new language nowadays, but recently I came across one which seemed to make web & database development fun again.
I am referring to the combination of Ruby & Rails (RoR). This was a framework built for real world development problems rather than for 'building a framework' as per it's founder.
It has several interesting features:
1. Lack of strong typing & support for 'duck typing' - it works even though you feel lost sometimes if you have been a C/C++/Java/C# programmer.
2. Configuration by convention - no need to configure stuff if you follow the convention, but you can configure if you need to as well.
3. Brevity of expression - introduced by C which can easily get you a cult following. eg. one line to write a program which prints itself.
4. Dynamic nature - ability to add methods or redefine methods on the fly - to any class in the system, even built-in ones.
5. script/console - a hidden gem, difficult to live without once you use it.
6. code generation & metadata programming - similar to wizards in VS, but used for many more tasks and ActiveRecord takes metadata programming to next level.
7. production vs development vs test modes - is there any web app which has the same env in development & production? RoR acknowledges that.
8. Agile development, unit tests & scaffolding - it is constantly evolving, encourages testing, scaffolding is now getting obsolete in EdgeRails but useful.
9. AJAX & REST - supports the latest trends in web development, Java is just beginning to have a JSR to support REST!
10. Moreover, it encourages you to provide features and not spend time write ORM xmls or waste your machines resources running a J2EE server!!
Some of these features are 'interesting' and could be scary to a C++/Java developer or someone with an enterprise development background.
But, you have to consider that this is mainly for web server side development with a lot of work on databases!
JAVA had it's run with banks & financial institutions but it seems RoR just needs a corporate sponsor to mature & succeed in the long run - Hint: IBM, Oracle, Sun.
Note: RoR is already several years old now.
Sunday, August 19, 2007
The end of SOAP webservices.
It is probably a bit early to say this, but SOAP webservices doesn't have a future.
I had been a myopic fan of SOAP webservices and one of the early adopters of the technology in various implementations - .NET 1.0, axis, xfire, JAX-WS, BPEL, JSR 180 etc.
It is a great example of how excitement about a new technology can blind your judgment.
It failed the single most important test - it was just not _simple_ enough to succeed in the long term.
1. complexity meant few stable implementations. eg. jboss changed their webservice implementation twice or thrice already.
2. complexity meant inherent concerns about it's security after deployment. eg. how does it handle a malformed request?
3. it needed client & server support which meant changing platforms as your clients change. eg. javascript, actionscript, java, .NET clients.
4. it was supposed to be cross platform, but it required another standard (ws-i profile xx) to standardize the standard. Still, it is a challenge getting a .NET client to talk to a JAVA SOAP webservice.
The answer for the future is some form of REST API. The paradigm shift here is the focus on data instead of services. This has it's own problems. But, it is simple and works for all your clients - very important if you are developing a global distributed service. Examples of this include the GData API & JSR 311.
If you missed the SOAP webservice bandwagon, consider yourself lucky and develop yours using RESTful APIs.
Wednesday, July 25, 2007
Future of the web.
The answer is right in front of you even if you don't see it already:
The web started with simple HTML.
Then came the dynamic web where content is dynamically generated for the users.
Then came the wikis which enabled editable webs.
Then web applications got more interactive with AJAX.
The next level of interactivity is where applications execute and behave like Desktop applications within the browser.
Then there will be the web OS where you store all the important data in the web and access the same from everywhere.
* The web OS sounds grand but the closest we have today for the client is Flash/Flex & Silverlight & XUL to a lesser extent.
* This will blur the line between desktop apps & web apps further.
* Making toy applications for web will no longer fly & traditional players might get another shot. (MSFT vs GOOGL)
* The recent acquisition of 'Parakey' by Facebook is an indication of where the future is going.
* HTML or AJAX(to a lesser extent) will still be around as there are applications for which they are suited more.
* AJAX was a mistake, making a Java VM to virtualize the development or coding for 'n' browsers is not the future.
* Flash/Flex is the underdog here where people often associate Flash with those 'flashy' sites. It is no longer the case.
* With cross-platform support in Flex & Apollo along with synchronization & native db support it is an example of how the web platform of the future is going to be!
* And then, sometime in the future we will have a web OS which has some features from Omnidrive & Parakey.
Saturday, April 28, 2007
Importance of "keeping it simple".
Sometimes you have to keep repeating a message so that everyone gets it, at the risk of sounding like a broken record.
There was a quote in this month's Popular science which applies to software world as I had been trying to say in earlier posts- "good engineers find solutions to hard problems that are complex and hard to understand, but great engineers find solutions to hard problems that are so simple that you wonder why you didn't think about it in the first place"
Simplicity is not only important in software design but also to the user. I remember working on a product which had a versioning scheme which was so complex that even the QA required several days of training to understand it. You can imagine the frustration for the customer and how long the feature existed in the product!
The next level of simplicity is in the user interface, Microsoft Office 2007 UI is a great example of how to scare the user by showing all options. 37 signals has some good examples of how to design a simpler UI. Sometimes you just don't want to see the configuration or edit controls unless you need it.
It is the job of every engineer and designer to ensure what they are working on is simple. If not, you are just working hard to make life hard for others!!!
