Feb 10, 2011

Why Google Chrome releases are terrific and IE et al still doesn't get it.


If you are like me testing all the different types of web browsers, you will notice that Chrome releases a new version(major/minor) every 6 weeks. In Agile/Scrum based software development world, it's like two sprints or just one given the planning and testing needed.
On the contrary, IE9 and FF4 have been on the horizon forever recently hitting rc and beta. That's like a typical waterfall model trying to build a monstrous product for months together and releasing it to wild praying for adoption. Doesn't it sound like the old way of building software?
The new way is build something quick, release it and iterate quickly. This way you have something in user's hand sooner and an opportunity to twist and tweak depending on the feedback. You probably run a lot lesser risk this way than trying to build something big that finally may not take off with the user.
Build, release and iterate quick has become the norm for web portals for sure. It's agility! Is Google bringing the same to the world of desktop apps development through Chrome? Why not? After all, we know it works. And, the user feels like their browser is anew every six weeks waiting for the next 6 weeks. It's like Apple releasing something every 6 months. Doesn't matter what is released as long as something shows up to keep the buzz!!
Wait! Does Chrome releases comprise any major change to compare it with the monstrous IE9 or FF4? Not really and need not be. That's the point!
I am tired of waiting for FF4 to get released. It feels eternal! Time to change..

Jan 29, 2011

Was Groupon right to shove away Google's $6B offer?


With so much buzz around Groupon denying $6B offer from Google, I feel compelled to put my take on it. 

If i were Groupon's CEO, I wouldn't sell it for $6B to Google. The explanation is simple. Groupon is all about connecting online users to physical stores. No one has cracked it like Groupon. It's like PayPal cracking the online payment mechanism(when dozens of PayPal competitors never made it!). 

Groupon is all about local unlike Google. An yet untapped market.
 

With the flourishing of online stores like Amazon, eBay etc, it's been a far greater challenge for brick-n-mortar companies to bring the online users into their physical stores. Groupon solves it pretty easily and that's what it does best. Google has been struggling to get into this market on its own(Google Local) and has failed trying to acquire the promising 'local' business-oriented startups(Yelp for example). Facebook is revealing its own 'Deals' product. Amazon has invested $175M in Groupon competitor. Does it ring a bell?
 

Google is merely gambling with bombarding ads online; technologically sophisticated though. Facebook gets better as they know the users' interests far better than Google does. But again, this doesn't mean a financial transaction for the businesses, as the users normally only view the Ad and may choose to ignore it. The advertisers(or the businesses) pay for ad conversions or click-thru-rates(references below) and not necessarily a real business. Now, what Groupon offers is real business transactions where Groupon gets paid if the minimum business transaction set by the business owner is met(this is real money!). How does that sound to a business owner? And, the feedback the business owner gets is very direct unlike the very complex analysis of the click-thru-rates and the combinations of ad words posted on Google. Local businesses can better understand simplicity over the techno CTRs. Do you think a local bread store would hire a Google AdWords agency to put an ad? What is the chance of this ad bringing business with a typical 2% CTR for ads?
 

And, Groupon is building the treasure trove of demographic-specific local needs which is probably an accurate indicator of what really sells in a demographic. So, it gets better at knowing what deals tick. Also,Groupon could make money just selling this data over the years to companies that benefit from it. Does Google have any such stat? NO. Because, Google is an ad-delivery platform and not an ecommerce platform.
 

One last note. Groupon potentially seems like the darling of ailing businesses and helps them succeed. Ailing businesses could make a turnaround with just one deal! And, these businesses have the best chance of survival only with Groupon.
 

Personally, I have bought a couple of deals from Groupon ranging from 50-90% off. You can read about the Groupon teardown article from the references and see the margin they make on the deals.
Links:

Dec 7, 2010

Silverlight: Using Merged Dictionaries of Style Resources and Blend

Resource dictionaries are quite commonly used for theming and centralized styling of Silverlight apps. This post does a step-by-step walkthrough of using dictionaries and their real purpose with examples. Note, this post is for those who don't know what a resource dictionary is. Click the link below to read the article.

Silverlight Scratchpad: Merged Dictionaries of Style Resources and Blend

Dec 2, 2010

Silverlight 5 - Key new features(not coming till 2011 though).

Silverlight 5 sneak peek was held at the Silverlight Firestarter event! Few key features that caught my attention are given below.

1) Databinding debugging support - Debug databinding errors in realtime, showing the details.
2) Ability to resolve datacontext within templates.
3) Layout transitions far easier now with few lines of xaml.
4) OpenType font support - could be less legal hassles.
5) Pivot control now part of Silverlight - Allows large datasets to be visualized and browsed quickly. This the THE control for ecommerce and online retail stores/storefronts in particular. The customers are going to love this shopping tool.
6) Immediate mode graphics API - Ability to directly write to GPU for faster graphics rendering.
7) 3D support - There was cool demo of a Doctor's portal online. Google for it.
8) Enterprise group policy support for out-of-browser apps - for intranet based enterprise deployments.
9) Move individual controls in an Out-of-browser app into separate windows. Something similar to pulling out web browser tabs into separate windows. This one is really useful for UI with a ton of data.
10) Ability to call unmanaged code in out-of-browser mode. This would allow the app to connect to device libraries installed on the system. This may be OS limited feature though (Windows most probably). With this, for instance you can download an xls file from your app and launch in local MS Office.
12) UI automation testing tooling support. Easier way to record and run the UI automation test workflows. The recording is converted to test code which can be run later or integrated into your Continuous Integration setup. Impressive tooling support!
13) Faster startup (not sure how fast .. there will always be pre-requisites and limitations thought :)

Nov 18, 2010

Error HRESULT E_FAIL has been returned from a call to a COM component.

"Error HRESULT E_FAIL has been returned from a call to a COM component." Sounds familiar? 
This error gets thrown across so many places in a whole gamut of microsoft products. But, this post is specific to Silverlight. I would assume that, if you have the source code for the project you are debugging with VS, you should be able to pin point to the exact location of errors and exceptions no matter what caused it. But the above error is very tricky. Even if you have the code in place, VS debugger won't point to the exact location not does it give a meaningful stack information. This is a problem with layered programming languages like .NET and anything built on top of it. If you were to do unmanaged programming, you may have more diagnostic information to look at.

Limitation in Expression Blend for sample data generation.

Expression Blend has a great feature to create sample data for design time use. For instance, if you had datatemplates and building upon MVVM, Blend can generate sample data for your VM class and populate the UI during design time. This way, you can visualize your UI controls during design time. To do this, open your project in Blend.. simply click on the Data tab.. select the "Create Sample Data" icon and choose "Create sample data from class".. now choose your VM or any class that you are binding to your controls. Thats it. You should see your UI controls populated with sample data in design view. This is a great feature in Blend for designers/developers.

But, there is a limitation. The sample data can be generated only for classes. If any of your property has an Interface return type, Blend will not generate sample data. You may need to have an Interface by architecture, but Blend will fail to generate data.

Oct 31, 2010

GMail Delete Keyboard ShortCut - Works in IE, Firefox, Opera

Keyboard junkie myself, i was looking for Gmail keyboard shortcut for deleting email. For some, doesn't show up in official Gmail list. There is an undocumented shortcut though - #(Shift+3 on win) does the job.

Thanks Amit for the tip.