ailon's DevBlog: Development related stuff in my life

Dear Microsoft, This is not Funny Anymore!

11/23/2010 5:36:42 PM

wp7racistI’ve got my Windows Phone 7 yesterday and so far I really like it (more on that later). Officially there are still no Windows Phones over here in Lithuania, so I had to get mine from abroad. That said, even though it’s sad that I have to go through hoops to get access even to free apps and can’t get paid apps at all, I wasn’t going to write much about it. After all WP7 is not yet officially launched in my country. That is stupid in it’s own merit but oh well.

I thought that it’ll be all resolved once official carriers start selling the phones next month. But today I found out that phones are out in countries like Norway, they can even be WP7 developers (unlike us) but they can’t officially access the marketplace unless they fake their country in settings.


I mean seriously, WTF!?!

I can totally understand why it isn’t possible to provide access to music & video parts of the marketplace. Microsoft doesn’t have full control over that content. But apps? What is the deal here?

It would be interesting to hear the official version of the problems involved in accepting my regular VISA or MasterCard credit card if I feel like paying for some fart apps. Sometimes I have been denied shipping of physical products, downloads of legal music by major labels, but this is really beyond understandable and feels plainly racist.


Developing Controls for Windows Phone 7 as a Business

11/22/2010 10:48:07 AM

Yesterday I couldn’t sleep and was thinking about feasibility of developing Windows Phone 7 (Silverlight) controls as a business. Since I’m already in the the WPF/Silverlight control business and we already have an open-source charting product for WP7 this is a really interesting and sensitive topic for me.

Here are some of my thoughts. Some are facts, some are pure speculation and/or brain dump.

As you probably know, at this stage Windows Phone 7 is a consumer platform and the only way to get and distribute apps is through Windows Phone Marketplace. This makes it pretty easy to see the current state of the whole market/ecosystem.


As of this writing there are almost 2500 apps in the marketplace. Almost 600 are games meaning about 24% of the total number. Obviously the total number of apps is going to grow over coming months and years but I guess we can assume that the proportion of games will stay at approximately the same level. Let’s fix it at a nice number of 25%. Out of the rest of the apps a really large chunk are various “flashlight”, “fart” and other simple apps. These are not a target market for custom controls either. I’d say the number of apps that would benefit from advanced controls is no more than 10% of non-games (pure speculation based on non-scientific observation).

imageSo let’s say apps using 3rd party controls constitute 7% of all apps (I’d say that’s in optimistic range). Also, let’s say that the total number of apps grows to about 50,000 over the next 1-2 years. That’s roughly 3500 apps.

Now I’m not sure where to get the actual average number of apps per publisher but my guess is that what says “1325 Top publishers” in Bing’s Visual Search for Windows Phone 7 Apps is actually a total number at this point in time.

So basically the average is close to 2 apps per publisher. Meaning that with 50,000 apps in the marketplace we’ll have ~1750 publishers interested in 3rd party controls.

Now I believe most of the publishers are one man shops or really small companies. I guess the average number of developers per publisher is not more than 2. So let’s say these publishers are going to spend $1000 per developer on 3rd party controls over the next 2 years (again optimistic number, imho). That makes the market worth no more than 1750 x 2 x $1000 = $3,500,000 over all 3rd party control publishers. And that’s on the optimistic side in my opinion.


This post is pure speculation and I would like to hear your thoughts either based on more facts or deeper knowledge or just higher intelligence, but as I see it now the market is really small.

That said I still see some reasons to participate:

  1. These are still Silverlight controls and should cost less to adopt from desktop Silverlight than writing from scratch. That said WP7 Silverlight is going to be 2 versions behind pretty soon and that imposes serious challenges balancing between doing things the better (new) way and making them work on the phone.
  2. Sooner or later Microsoft is going to open the platform for enterprise development and distribution and that is going to be a much bigger market for control developers. The question is when is this going to happen? But hopefully this happens sooner than later and you’d want to be in the game when it does.

Again, I’m sorry for posting such a speculative rant, but if governments can expect 3% higher budget incomes by upping taxes by 3% why can’t I speculate using the same “Excel logic”?

Tags: , ,

Email of Happiness or How to Stop Hating Email

11/20/2010 1:21:52 PM

The problem

For many, many years my relationship with email could be described by this scheme:


I have a number of public email addresses, with messages forwarded to a single “central” mailbox. For all these years I’ve had this central mailbox always open. If someone sent me an email to any of my addresses I would get it immediately. And I don’t mean it would go to my mailbox immediately. I mean I would read it almost immediately. That became especially true when in several recent years I’ve had this central inbox configured to sync to my phone.

It was pretty common that I would wake up in the middle of the night for some random reason, look at the clock on my phone, notice that there’s an email waiting, read it and loose sleep for the rest of the night. During the day, when I was working on some project, I would see that I have new email, switch out of my mental work state, read the email and switch back to my work state. This sounds instantaneous but it’s not. And in many cases the email would consume me and I’d start doing things related to that email, abandoning what I was doing before for longer periods.

The most ridiculous thing is that I thought this was normal for a proud geek like me. It took me reading Timothy Ferriss’s “The 4-Hour Workweek” book to realize that there was something wrong with this scheme.

Timothy Ferriss’s Solution

The idea is that most of emails you get are not urgent and can easily wait for a few hours without anyone even blinking. And if there’s something really really urgent, they’ll call. Obviously this is not always true. If your work is answering emails, this won’t work. But we are not talking about edge cases. This definitely works for me. So I switched to checking email twice a day (around 11am and 4pm). Which can be represented by this scheme:


You’ve probably noticed that there’s no smile on the face. This approach didn’t cause any problems where one might expect them. In almost a month I’ve been practicing this, I haven’t got any real complaints from anyone noticing that I reply a few hours later than before.

Problem is that in addition to “problematic” email, I get some “happy” email (notifications of licenses for my products sold, messages from nice people, etc.). Reality is that I’m absolutely not worried that I’ll get a bug report 2 hours later than before, but I have a psychic itch for happiness. What if I made an extra $1000 and don’t know about it yet. I don’t want to delay happiness for later. I don’t mind happiness interrupting whatever it is I’m doing.

Enter my solution…

Email of Happiness

What I decided to do is create another “secret” (non-public) mailbox. This email address is not to be exposed to anyone (even your loved ones, best friends, VIP clients, etc.). In other words email should get into it through only one source – my central mailbox. In the central mailbox I setup rules to forward “happy” email to this new address and have that new mailbox “always on” while still checking my “central” mailbox twice a day:


I figure that if I ever need to have an important email exchange with someone which doesn’t fall in “happy” category, I can setup a temporary forwarding rule for this conversation and remove it when I’m done.

Technical Difficulties

I’m currently in the process of setting this up and it turns out a little more challenging than I expected. The challenge is not to expose your “happy” address to anyone for as long as possible (via replies, appointments, chats, etc.) and this proves a little difficult using different systems (webmail, phone, etc.) but I think I’ll figure it out and update this post once I do.

Tags: , , ,

Who Wants HTML5 to Succeed?

11/19/2010 5:45:29 PM

Yesterday I’ve had a short twitter-chat with Laurent Bugnion in response to this tweet:


This chat got me thinking about motivations of most of the biggest players driving HTML5 forward. Here’s what I think.


Apple resorts to praising HTML5 only when they need to justify why there’s no Flash (Silverlight, etc.) on iOS devices. In these cases HTML5 is the answer. But when it comes to comparing HTML5 apps to native iPhone apps there’s no comparison – native apps win hands down. And apparently there’s going to be an app store for the desktop Mac OSX. So Apple’s main interest is in controlling the apps (and I’m not even talking about sales revenue here) that run on top of it’s operating systems/hardware. I don’t see HTML5 fitting well into this plot.


Adobe was close to world domination in RIA (or at least de-facto standard) up until Apple killed their dreams with the no-Flash debacle on iOS. And HTML5 was Apple’s weapon. I’m sorry but I’m not seeing Adobe as someone who want’s HTML5 to succeed.


Microsoft came up strong about HTML5 in IE9. It sounded strong enough for some people to pronounce Silverlight dead. But why would Microsoft want something that could run on Linux, Macs, etc. as well as on Windows to be a RIA platform of the future? I can see 2 answers here:

  1. they are confused and will come to their senses later;
  2. they will “extend” the standard to a point that “cool” apps run only on Windows.

Now in the second case that won’t be the HTML5 generating the buzz right now. That will be MSHTML5 or something.

Browser vendors

I’m not talking about Microsoft, Apple or Google here. I’m talking about the other 2 major browser vendors who have browsers at the core of their businesses: Mozilla and Opera. I don’t think they have any end-game in this. They are just trying to make great products that users would want to use to browse the web and what that web is will be decided by other players.


That leaves us with Google. I believe they are the only big party that has a genuine interest in making HTML5 succeed as a cross-platform standard. After all they have the deepest current investment in the area with all of their awesome web apps, Chrome OS, Google TV, etc. But I doubt that they are strong enough to overcome the obstacles in form of above mentioned companies. After all Google is currently in direct competition with all of them, so why would they hand the torch to Google?


I think I’ll have to agree with Laurent’s statement. I believe there will be HTML5 “standard” in the near future, but it will be along the lines of what all the other HTML incarnations always were – good in theory but requires a lot of duct-tape to glue it all together into something working across browsers. And it will be up to enthusiasts (like the creators of libraries such as jQuery) to make it all kinda work.

I’d like to end this post with “History Repeating” by Propellerheads. Enjoy…

Tags: , ,

Flex 4 for Silverlight/.NET Developers. Part 1. Introduction

11/9/2010 11:22:34 AM

As readers of this blog probably know, my main occupation over the last couple of years was .NET (WPF/Silverlight/WP7) side of amCharts product line. If you are familiar with the product you know that it started as Adobe Flash product and now expanded into Adobe Flex world too. I always wanted to be able to understand first hand what’s going on in our Flash/Flex products but was delaying the dive into Adobe world time after time. Now I finally got an opportunity to do something with Flex and had no excuse to skip it once again.

I decided to give Adobe’s own video course titled “Flex in a Week” a try and finished “Day 1” at this point. From the first second I felt that I’m looking at everything through .NET (WPF/Silverlight) developer’s perspective and thought that I’m probably not alone at this and it could be useful for people like me to have some articles about Flex targeted at .NET developers. So here we go…

Disclaimer: I’m not leaving .NET or something like that. This is just a side project to widen my personal professional horizons and be in the loop of stuff happening in other parts of amCharts product family and RIA world.


I won’t try to disprove the myth that developers working on MS stack are very dependent on tooling and start straight from the tools.

The Visual Studio equivalent in Flex 4 world is called Flash Builder (formerly Flex Builder). Here’s how it looks

Flash Builder

It’s an Eclipse based IDE which is available as both Eclipse plugin or standalone package. I haven’t worked much with it yet but from what I’ve seen even though it’s not as sexy as VS2010 or Blend it looks like a pretty capable decent modern IDE with all the color-coding, code completion, design mode, property editors and other stuff one would expect.

Flex itself is an open source framework and it’s SDK is available for free. Flash Builder on the other hand is a commercial product which will set you back from $249 for Standard Edition to $699 for Premium Edition. There’s a 60 day trial which I’m currently using, but there’s no equivalent of Express editions of Visual Studio. So if you want an official professional IDE be prepared to shell out real money.

Terminology and conventions

Flex projects are compiled into SWF files (pronounced as “swiff”) which are equivalent of XAP in Silverlight. You can run Flex projects in browser via Flash Player or on desktop/mobile via AIR runtime. However (at least as I understand it at this point) unlike Silvelright you have to decide upfront if your project is targeted at Flash Player or AIR.


Flex uses a markup language called MXML for declarative UI layout (XAML in Silverlight) and ActionScript for code. ActionScript is ECMAScript based language (think JavaScript on steroids). A default MXML page looks like this:

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <s:Application xmlns:fx="" 
   3:                xmlns:s="library://" 
   4:                xmlns:mx="library://" minWidth="955" minHeight="600">
   5:     <fx:Declarations>
   6:         <!-- Place non-visual elements (e.g., services, value objects) here -->
   7:     </fx:Declarations>
   8: </s:Application>
Pretty familiar, eh?

Visual Studio solution equivalent is called workspace, projects are just projects. Projects can be packaged (exported) into a single FXP file (for easy sharing?) and imported back into workspace.

What we, .NET developers, call controls is called components in Flex world. In standard component world there are 2 sets of components with basically equivalent default look and feel. Why is that? Well, historical reasons.

First is the older MX library which can be customized via property settings and styled with CSS (!) but has a hardcoded layout. So, if you want to customize it beyond what you can achieve via properties, you have to create your own class inherited from the standard component.

The new component library is called Spark and can be customized via what .NET developers call templates, which are called skins in Flex. The skinning/templating mechanism is pretty similar to Silverlight. One thing I’ve noticed so far is that Flex skins (can) contain ActionScript code.

   1: <s:Button x="70" y="126" label="Button" skinClass="mySkin"/>

As for custom/user components there doesn’t seem to be any differentiation like in Silverlight (user controls vs. custom controls).

Classes are named using Pascal case notation which was called “upper camel case” in the videos. Differently from .NET world all class members are named using camel case.

Data binding is done using curly bracket syntax where you just place the name of the object and property to bind to:

   1: <s:Panel x="38" y="12" width="198">
   2:     <s:TextInput id="myTextBox" text="test" x="14" y="12"/>
   3:     <s:Label text="{myTextBox.text}"  x="14" y="46"/>
   4: </s:Panel>

This code results in the output like this:


As you can see even though obviously there are differences so far it doesn’t feel like a totally unfamiliar ground for Silverlight developers.

to be continued …


Copyright © 2003 - 2018 Alan Mendelevich
Powered by BlogEngine.NET