Tuesday, 28 January 2014


The obligatory 2013 summary

I had a wishlist to Microsoft 1 year ago. Since then they started sorting out the mess they created with their separate platform libraries. Microsoft changed even the licensing of the portable class libraries and made them available for Xamarin. Windows Phone is doing well on some markets and I can see at least one device a week on the tube here in London. The app market however still misses some key applications and I know about people leaving the platform because they miss some application. And this year at last Microsoft ported Photosynth to their mobile platform. Congrats guys.
Steve Ballmer's resignation was very exciting news. I really didn't like what the company (not) did under his leadership. But there are no effects in 2013 yet.
And there is a new Xbox. Depending on the next leader and what strategy Microsoft chooses, if they do choose a strategy at last, I still believe that Xbox is The Microsoft Product most households will have five years from now. Not that sure about any other Microsoft presence.

I asked Google to pioneer in the platform unification. They didn't and they did. Android is not going to desktop, at least not by Google. Others do it instead. What Google does is that they are transforming Chrome, the browser, into a full OS. That, and the success of the Chromebook is a more interesting way to rule the desktop world than a desktop Android.
Google also killed some of their products, including the RSS reader. That one resulted a rise of better RSS readers than The One. I have the feeling that Google reached that level of presence where they don't need to keep products alive that are good for the users but have no added value for Google. Living in the Google world (Gmail, Blogger, Picasaweb, Chrome, ...) it is not a good feeling.

I asked Apple to be amazing. They are not. Actually they had a very boring year. I switched to iPhone 5s after Nexus 4. It is still a decent device, it is still the best for me(!), but it is not outstanding.

This year was the debut of Firefox OS. I am watching it since the very first entry I had on this blog :)

On the front of programming this year's fad was the Functional Programming, and the ever-growing JavaScript presence on all possible hardware and software.

It was a quiet year in all other fields: curved TVs, 4k TVs, death of 3D TV (that wasn't ever alive), some Google Glass news, bigger and bigger mobile devices, ... practically 0 innovation.

Saturday, 25 January 2014

Why do we read code the ancient way?

This is a video about Code Bubbles. One year later the idea is applied to Visual Studio under the name Debugger Canvas (though it doesn't look that cool). I have only one question: Why on Earth are we still reading and debugging code in textfile-view four years later?! Actually the question is: Why we do it forty years later?

Sunday, 5 January 2014

Yet another post about Duck Typing

"If it walks like a duck, and quacks like a duck, it’s probably gonna throw exceptions at runtime."

The Three Articles

The first article in my rss reader I ignored. I know what duck typing is, so I don't read a post about it. Seeing the second title I raised my eyebrow. But when a third one appeared on the list I decided I need to read them: I don't follow fools' blogs, so three posts about the topic clearly means that something is worth a look there.
Eric Lippert expresses his confusion over the Wikipedia page about Duck Typing. I skimmed his article: he's pointing out some weaknesses of the Wikipedia's definition. Nothing interesting here. There are facts and there are community-edited articles. Let's move on and see what the other two posts are about. As I expected, those are reactions to the first one. Still nothing interesting... except! Except that Glenn Block calls Eric Lippert (the author of the original article) "one of the fathers of C#". Okaaay. So either The Fathers Of C# have no idea about the basic definitions of programming type systems and the IT industry is doomed, or I missed something. At this point I re-read Eric's post properly and a long journey's began.

My Two Pennies

I have no two pennies today. After reading some more articles and a research paper I still don't have a final conclusion. Here are three vague definitions of duck typing I have after all this reading:
"Structural Typing may be thought of as a kind of compiler-enforced subset of Duck Typing." (by Mark Rendle in the comments of Eric's post)
"Duck typing can be seen as the run-time, dynamically typed equivalent of structural typing" (from the publication above)
"Structural Typing which provides a way to do Duck Typing in a compiler safe manner that works with static types" (by Glenn Block)
The definition of early binding/late binding (or static typing/dynamic typing) are clear just as structural typing is. Duck typing is the only one that just doesn't feel like a well-defined entity but it still feels like "something": Python and JavaScript clearly have duck typing. And the C# dynamic keyword feels like it is not duck typing, but Glenn Block, among others, disagrees with this. And I myself also disagreed one hour ago. Occam's razor to the rescue: probably duck typing is not different from late binding. I accept this until I see a late binding that clearly is not duck typing.