25 Nov, 2008
Limitations of Adobe AIR
Posted by Bhavin Turakhia | (24) Comments
Most people tend to compare AIR and WPF/.NET. The predominant assumption is that AIR is to WPF as Flex is to Silverlight. AIR is touted as a cross platform desktop application development environment. This assertion holds true for basic widget-type desktop applications with limited functionality. The model begins to fall apart when you begin moving out of basic widgety apps into the realm of true rich and complex desktop applications. Some of the most fundamental shortcomings that come to mind are -
- AIR does not support multi-threading
- AIR does not allow making native calls to the underlying operating system APIs
- AIR does not permit loading native libraries (eg DLLs / C libraries etc)
- Limited Database support (no drivers for diverse databases)
- Limited Networking support (Raw network socket manipulation not available)
- Installer cannot be extended to install ancillary executables or other processes
- Limited to no support for building services / daemons / protocol servers
- Relatively strict sandbox
This is a short list of hurdles that I have come across. There are certainly many more limitations over and above these. AIR is essentially more like an extension of a chromeless browser, meant for running a web application within a desktop environment. It cannot be compared to a powerful desktop programming language like .NET (with WPF). Infact even XUL has better support for writing rich Desktop applications than AIR.
On the flip side I hear many good things about AIR in terms of ease of development. AIR apps can be developed in significantly lower timeframes than in most other desktop development environments. AIR also enables sharing of codebase between a web app and a desktop app.
Hopefully Adobe will catch-up on the missing elements soon, so that AIR becomes a strong enough contender to the current limited number of existing desktop development environments.
11 Sep, 2008
Availability of Developers by City (Mumbai, Bangalore, Delhi etc) and Technology (Java, C++, C#, AIR, WPF etc)
Posted by Bhavin Turakhia | (16) Comments
An alltime favorite question amongst journalists who interview me as a “young entrepreneur” has been – “Tell us about some of the challenges you faced while growing Directi?” and my patent answer has always been that the only challenge we have faced and continue to face is finding good talent. In our bid for finding talent we are now expanding into other cities over the next few months.
In order to determine tech labor availability across the common metro cities in India I compiled a statistical comparison of the count of resumes available on common jobsites for common software development skillsets in the various cities in India, and the findings are very interesting. This blog post compiles these findings. If you are a tech company in India – these findings can help you make technology decisions concerning city selection and platform selection.
The findings
Below are findings from the comparison of the count of resumes of software developers with 0-4 yrs of experience from various cities in India as compiled from a jobsite -
1. Findings by City
- Bangalore has 2.5 times the number of Java resumes of Mumbai
- In terms of total resumes from each city the ranking is in the following order – Bangalore, Hyderabad, NCR, Chennai, Delhi, Pune, and lastly Mumbai
- As an example, here is the citywise count of Resumes that contained the keyword Java
- Bangalore – 123,205
- Hyderabad- 114,561
- NCR – 85,347
- Chennai – 82459
- Pune – 54,086
- Delhi – 53,256
- Mumbai – 43,672
- Every city in India has more available developers than Mumbai with the South taking the lead
- NCR has almost twice the number of developers as Delhi
2. Findings by Technology
- The total count of Resumes of developers with 0-4 yrs experience that contain the below keywords across all 7 cities was -
- C++ – 635,575
- Java – 556,586
- C# – 190,872
- Javascript – 162,343
- Ajax – 41,219
- Flex – 8,668
- Python – 3,429
- Ruby – 2,099
- WPF – 779
- Silverlight – 255
- As you can see Java and C++ are the predominant keywords in Software Developer Resumes
- Flex beats Python and Ruby
- Ajax and Javascript beat Flex/WPF/Silverlight by several magnitudes as keywords appearing in resumes
The results above remain similar in terms of ratio, for Resumes with 4+ yrs of experience.
Click here to download the raw excel sheets for all cities and technologies >>
The methodology
I had my team conduct independent searches for each permutation and combination of the following -
- Keywords – Java, C#, C++, Javascript, Flex, Silverlight, WPF, Ajax, Actionscript, Ruby, Python
- Cities – Mumbai, Pune, Bangalore, Delhi, NCR (Noida/Gurgaon), Chennai, Hyderabad
- Experience – 0 to 4 yrs , 4+ yrs
- Function – Software Development (or equivalent)
- Jobsites – Naukri, Timejobs, Monster
- Date – 3rd June 2008
The above totals upto a whopping 462 searches
. I then tabulated the count of Resumes for each search and put it in multiple excel spreadsheets. You can download the spreadsheets to crunch the numbers yourself.
Based on the above data, Directi and .pw clearly need a presence in the south. The data also demonstrates the lack of penetration of RIA, especially Flex/Silverlight/AIR/WPF, amongst Indian developers.
Hopefully this data can help others make similar decisions. Meanwhile lookout Bangalore/NCR – we are in the process of making an appearance shortly
PS: Interested in joining Directi? – check our openings at http://careers.directi.com
29 May, 2008
Starting off with RIA
Posted by Bhavin Turakhia | (5) Comments
As one of the many companies working with RIA, I would like to share some of our processes we have begun using in percolating RIA within our organization -
Select a RIA technology
There are severalĀ RIA technologies available to choose from. On the web you have Ajax/Flex/Silverlight. For the desktop you have AIR/WPF (though it is kind of a misnomer to classify AIR/WPF as Rich Internet Applications)
Given that Silverlight is just taking its first breath, and that the Silverlight player is not currently available on a large number of Desktops, I would currently recommend Ajax/Flex for a web app. Between the two there are various pros and cons. Flex has an advantage of being ubiquitously standardized, so you will not require to bother with browser compatibility issues in your Flex App. On the other hand there are various readymade toolkits available for Ajax/Javascript that abstract browser compatibility issues and provide a plethora of ready made components.
Standardize on an Ajax Toolkit
For Javascript/Ajax try and use existing libraries and toolkits rather than reinventing the wheel. jQuery and YUI look to be the most promising. Both toolkits offer rich and dynamic controls. Currently jQuery seems to be more popular. It is a good to standardize on one and we are currently leaning towards jQuery within Directi. For a detailed comparison check the bookmark I posted on our Wiki – Comparision of jQuery, YUI, Scriptaculous + Prototype, Mochikit and Dojo. jQuery also has a number of interesting books available.
Be prepared to change the way you think
Conventional HTTP applications have always been request-response-pagerefresh based, to the extent that as developers our thinking patterns are molded by the request-response-pagerefresh cycle. RIA turns this approach on its head, not very dissimilar from the event-driven programming models that existed in the desktop apps world.
If you wish to successfully build rich applications, be ready to shed your older conventions and notions and begin thinking in a different manner.
Encourage Self-Learning within the team
A few weeks ago I wrote an article on what I call the Flexi-Learning model that lists a few of the strategies that we have been adopting within Directi as a part of our training and knowledge sharing processes. Pursuant to that I have added a list of RIA books within our wiki on the Software Engineering Textbooks page. Use similar strategies within your respective teams to percolate information.
Browse as many examples as you can
The biggest hurdle with RIA adoption as I see it is that UI possibilities increase significantly. Given the myriad possibilities for representing a workflow within the browser canvas, the biggest challenge is to be able to come up with a creative way to provide a rich user experience. To me the first step is to figure out the various possibilities. While reading books can give you some guidance – another important step is to view as many examples as you can find. The jQuery website, Flex.org, Silverlight website, YUI website and other such websites have several sample applications, walkthroughs and demos that will not only serve as great catalysts for ideation, but also entertain you, blow your mind, excite you and encourage you to participate
26 May, 2008
AIR vs WPF: Show me the money!!
Posted by Bhavin Turakhia | (2) Comments
I was thinking about AIR vs WPF (or Flex vs Silverlight) from another perspective today. If I wear the Adobe hat and Microsoft hat, I have to ask where is the $$$ in all of this (for Adobe and Msft).
Well firstly, both Msft and Adobe are selling the IDEs (or as they call them XXX Development Studio). But seriously – selling IDEs cant be big business.
Another revenue stream could be licensing the runtime specification for others to build their own runtimes (JDK style). While I may be totally ignorant about this – I don’t think either Msft or Adobe is doing much of this as of today. Some of the specification seems open and free. There is potential to begin licensing the runtime specs for non-PC devices such as mobile phones and set top boxes etc. However, given the competition, runtimes will likely be free for all devices and vendors (in this case Adobe / Msft) will likely go out of their way to have device vendors bundle their respective runtimes.
One more revenue stream would be self-created applications. This is much like Microsoft’s strategy with MS Office which has always been their cash-cow due to the platform ubiquity of Windows. Adobe is building a slew of their own products around Flex and AIR, and an increased adoption of their platform can result in additional revenue from their own applications. Offcourse this is always a sensitive area, since by building these applications they compete with the very app developers they want to attract to the platform. However Adobe has an advantage over Msft in this area due to the platform neutrality of AIR/Flex. Any app built by them is more attractive to an enterprise which has a heterogenous Operating System environment within the enterprise.
This brings me to the last potential revenue stream – an indirect revenue stream through propagation of the platform. Something that Msft has been very good at in the past. They made their fortunes due to the plethora of applications built in VB / VC in the good old days. The more apps that got built the more copies of Windows (and as a result Office) were sold. Here Msft has a distinct advantage. Every WPF adopter creates an additional boost in sales of Windows licenses. Unless I am missing something Adobe has no such incentive.
This indirect revenue stream appears to be significantly larger in scope than selling the IDE or licensing revenues or currently even their respective home-grown apps. If that is the case, then Microsoft has significantly more to gain by becoming a RIA standard as oposed to Adobe. This would in turn mean that Microsoft can afford to invest significantly more resources and $$s in the development of RIA as opposed to Adobe. Greater investment *may* mean more features, greater adoption and eventually platform dominance.
The one way I see for Adobe to counter this is to open up the platform and have the IBMs, Google’s, Yahoo’s, Sun’s of the world involved in AIR/Flex direction and development. This strategy has been very successful with Java on the server side (though I am sure Sun would have liked to get a greater piece of the action than it has) and if AIR/Flex is to become a default option for desktops/RIA, partnership with the rest of the industry will create the momentum it needs.
12 May, 2008
Things I wish AIR and WPF had
Posted by Bhavin Turakhia | (7) Comments
This makes a great follow-up to my last post on the Paradox of Choice. Life would be simpler with a single platform
. Before I start a flame war on that subject let me quickly turn your attention to the real topic of this post. I have been grappling with deciding between AIR and WPF for internal application development and in all honesty, I’d like to have them both. Here are my short list of gripes (or on a more positive note, my wishlist for AIR and WPF)
Missing in AIR
- Advanced socket manipulation functionality (ability to create UDP sockets, NIO etc)
- Talk to any RDBMS
- Multi-threading
- Decent server socket libraries for building server applications (yes I know AIR is a desktop client platform, but given the Web 2.0 world, the line between a client and a server is beginning to blur considerably)
- Accessing global keyboard shortcuts
- Accessing native libraries (the kind that I get with XPCOM on XUL)
- Ability to instantiate external applications
- Greater control on the installer and installation process
Missing in WPF
- Write once, run anywhere ie the ability to run on Mac/Linux (I have already confessed that this is a wish list)
- A full-fledged HTML rendering engine (as opposed to having to instantiate an IE control with limited flexibility)
Hopefully folks at Msft and Adobe are listening









