For many years, I have wanted to move on from Microsoft technologies and do a mix and match where I have the choice of which platform I target or what phone I develop for.
This was hard to do in the old days where one was stuck in the ecosystem one chose from the start, but I see it is much more possible nowadays to go across platforms and you do not have to choose your poison from the start, but you have more flexibility in what you want to target later in the game.
As software developers, the concepts and what you have learnt is pretty much the same across all platforms, so your knowledge is not lost at all and only the tools change.

2 things kept me in the Microsoft ecosystem…the Windows Phone and Visual Studio, which is the best IDE out there (even now). Also, the tools make it easy to deploy to the cloud or Microsoft Azure, so that is my cloud of choice for now.

But now I see the Windows Phone is not going anywhere (for a while, at least) although it was a wait and watch game for a while, and I was hoping that it would catch on.
It is ironic because the Windows Phone has the best interface, but the iPhone and Android phones far outweigh its popularity and use.

With tools like Xamarin Studio and PhoneGap, it becomes easier to target other platforms and so one is not stuck with only developing for the Windows Phone in C#.

So, lets analyze and breakdown things and understand where we are as developers.

As an architect, it is my responsibility to not be biased towards one platform but to provide the solution and platform which has the best bang for the buck.
Of course, the solutions and platforms run a whole gamut from open-source software to the paid, more proprietary stuff.

There is no general answer but it is subject to the needs and the circumstances of the client and the answer is similar to what most Architects will give you…”It depends”.

Let me list the various features of every platform (of the big players out there), so as developers, we know what choices there are, and where to go from here…

Common, across all platforms and companies
————————————————————

Client-side technologies – jQuery, Javascript, CSS, Knockout, Modernizr, etc.

 

Microsoft
————–

IDE – Visual Studio

Platform – .NET

Languages – C#, F#, Visual Basic, Typescript, etc.

Technologies – WP8, Kinect, Windows 8, Microsoft Azure

Client-side technologies – SignalR, Knockout (in the box), Modernizr (in the box), LeSS, TypeScript, etc.

 

Google

———–

IDE – Eclipse, NetBeans, etc.

Platform – Java runtime, ChromeOS, etc.

Languages –  Java, etc.

Technologies – Maps, G+, BigQuery, Glass.

Client-side technologies – JavaScript, etc.

 

Apple
———

IDE – XCode

Platform – OS X, Linux

Languages – Objective C, C++

Technologies – iPad, iCloud, iPhone, etc.

Client-side technologies – etc.

Advertisements

Let’s all agree to one fact: There’s no such thing as a free lunch.

Similarly, it takes money to generate any type of content.

Many websites offer free content, relying on ad revenue and other means to pay for their costs and make their content free to the user.
But unless done well, this leads to bad design and is a failing model for many. Search for the numbers and you will see.
The ads are ugly pieces floating here and there and do not fit in well with the content and design.

Sites have lesser content now and more material for ads and other links. They opt for spreading their content across pages, so that they can increase the number of hits, and show more ads.
As a user, you are forced to wade through all this broken glass but, hey, the content is free.
The overall content is what neither of us would like to see, and some users pay a premium so that only the subject matter is shown to them, and not the rubbish.

So as a free user, you are paying a price, in terms of time and bad design and this actually means money. You would pay if you had the money.
So, websites are offloading their costs of hosting, etc. on to you, in a way.

The ultimate price is paid by the user in terms of bad design, security (many websites sell your email address or profile), etc.

The next time you use a free website, notice how they could improve their design, and they make users like you pay for their crap, and how much better the design would be if you paid for it.
But, of course this business model is here to stay, and people want this but I’d like to make you aware that you are paying a price without knowing it, unfortunately.

A freemium model aims to give users the required content or functionality for free, with ads or other means to pay for things, and if they pay a premium, they will only be shown the required content or have that functionality.

Many businesses have adopted this so-called called the freemium model now, but that leads to a compromise in design.

In the past, we had advertisements (ads) that were written in Flash and corporations disabled the Flash plug-in in the browser, with the side-effect of not loading Flash sites properly, but most business sites did not use Flash, so that was ok.
This worked to reduce distractions and users could no longer punch a chimp or shoot someone.

But then gif ads were still prevalent and a few people wrote plugins for the browser that would avoid these too.

These can be avoided too, on a Windows machine:
Get a program called Fiddler (it’s free; do a search for it) that shows requests made from the browser .
See what domains the ads come from (they usually be a different address than you typed/went to).
Locate the hosts file (usually in /windows/system32/drivers/etc).
Open notepad.exe and drag-n-drop this file into it.
Add the offending ad domains in here.
Map them to 127.0.0.1.
Save the hosts file (remember where you store it because in Windows 7, etc., you may not be able to save it in the system folder)
Overwrite the original hosts file with the new one
Load your web-page and you should not see ads from the domains you added.

For doing away with most ads completely, go tohttp://winhelp2002.mvps.org/hosts.htm and basically they provide you with a hosts file and a batch file to put the hosts file in the right location (it did not work for me, but I was able to use their exhaustive list of domains).

Hope that helps…

For those of you following Microsoft and Windows 8 might have noticed a shift in the way that the company does things. Microsoft has moved from the “Ship it and Forget it” model to one of continuous iteration, online or or out-of-band releases.
This is more like what Google does since most of its products are online anyway.
This is more evident in the Office365 products, where the releases are hidden from the user, and new functions and features can be updated on the website and Visual Studio with NuGet being the main vehicle of delivery (especially for MVC). Windows 8 has the app store where an application can be updated through the common Marketplace mechanism rather than each app having an update button.
This implies that Microsoft has moved away from its traditional model of software products in a box or online to a pay a subscription for a service model, and that is a bold move for a company that has relied on traditional products.

Expect this to be more evident in Windows 9, and the OS is slowly evolving from a traditional installed piece of desktop software (ala Windows 8 Pro) to a more open and dynamic system (ala Windows 8 RT that relies on Javascript), and this also be the case for the products from them. It will be interesting how vendors of audio products like Ableton or FL studio will work and play ball with the concept. They already have the concept of VST plug-ins, so this is nothing new to them.

As a business, you want to offer your services in the cloud.
This has advantages in terms of business and infrastructure.
You can offer a service or some functionality at a price and can reach many more users.

In terms of infrastructure, the cloud provides an alternative to not have servers on-premises or in hosting providers (like Rackspace), and have a reduced IT department as such, NOC to be more precise.
Let the cloud provider handle redundancy and backups and all those overheads.

There is also a big saving on software required to run the servers.
You no longer need to license server software.

Services offered in the cloud come in multiple flavors.
These are XaaS services (where aaS stands for as a service), and these are Software-as-a-service (SaaS), Platform-as-a-service (PaaS), Infrastructure-as-a-service (IaaS).

A company might figure out that it wants to offer more than just a function point at a price and I will explain how one can go from a SaaS to a PaaS or IaaS.
Selecting what your offering is is a choice you have to make. You might decide that you want to only offer a SaaS. Not everyone can or wants to offer a PaaS or IaaS.

To have a PaaS, you can have some sort of framework that offers multiple function points in the cloud and one can extend these and offer their own services on top (SaaS). This is one step below a SaaS.
One can go further and be agnostic to the platform being run in the cloud, and be able to run Linux or Windows or whatever on these machines at will and you have an IaaS. Remember, this also includes different Windows versions and not just Linux and Windows.

Cloud services usually offer an IaaS, and you can spin up VMs there or install your own server software. It depends on the vendor and mostly they offer are a virtual box up (a virtualized box) in the cloud.
As of now, a few vendors offer this service, and those in order of popularity are:
AWS by Amazon at http://aws.amazon.com/
Azure by Microsoft at http://www.windowsazure.com
Managed Virtualization by RackSpace at http://www.rackspace.com/cloud/private/managed_virtualization, etc.

I shall talk more about where IaaS is nowadays, and what the possibilities are there.
Stay tuned…

CMSes are an overhead for any organization and a Marketing Manager always wants them but Product Managers (PMs) hopefully understand that Developers dislike the drudgery of doing all that work. But then, that’s life.

Big CMSes add to a Product lifecycle and the overall infrastructure and might end up even governing which technology to use because you remember the last time you got burnt by it and so want to avoid using the CMS but one has to, so you opt-out if you can.

Nowadays, light-weight CMSes are preferred by PMs, because they are more localized and do not need a buy-in from the major players.

One resource I found helpful in evaluating these was http://www.cmsmatrix.org
It is an extensive look various CMSes and what all they support or provide.

I had a few issues while making my phone (which is a Nokia Lumia 800) into a hot-spot, and I’ll note some steps here, hoping to help someone with the same need.
I think this also applies to the Nokia Lumia 710 unless one of you says otherwise.

For tethering, one needs to use Internet Sharing, which can be found under Bluetooth in the Settings of the phone (application with the gear icon).
I hear this process is much simpler on Android.

First of all, the Lumia 710 and 800 did not not come with the Internet Sharing feature by default ( it might, in the newer phones). I had to use Zune, and under Settings (in the top), I had to select “Phone” and then “Update”.
This is also known as the Tango update.

After a bunch of steps, that included downloading the software, etc, I saw the “Internet Sharing” option in Settings.
To set this up, one has to add an APN for the network. This is done by selecting the “Network Setup” app on the phone and adding a name, and simply adding “internet” in the Internet APN setup section.

FYI, there is a website with a number of APN settings for various phones and operators worldwide).
Add a proxy if you’re using one, or just leave it blank.
I am not sure if you also have to set up the APN screen (in the Cellular section), like above too.

Power down the phone (by holding down the Power button and sliding down the Lock screen and to power on, hold the Power button again) – this is important.

Once this was done, I turned the Internet Sharing ON and was able to browse the net.
Hope this helps you…

At the end of October 2012, Microsoft announced the Team Foundation Service, not to be confused by Team Foundation Server (TFS).
This is essentially TFS online or TFS in the Cloud. You can create a unique URL for yourself and have 1 project up to 5 users for free. Any more of either and you have to pay extra for it. This will be a stable offering in 2013.

I have been looking for a source-control solution for some time now, and the only options were GitHub (paid for a private project, free for open-source) and BitBucket.atlassian.com (free, but you need a Git project). I do not want to manage a server, so Subversion or TFS was not an option.
In fact, BitBucket seems to be the only free option.

So, TF service was a welcome thing.
Note: The URL for it is: http://tfs.visualstudio.com and the old URL for tfspreview would be carried forward to this new one. The old URL will be deprecated. So, if you created your projects there, you will get them at the new URL.

Let’s say you want to delete a project you made. This is a no-no, as stated by the TFS team and they say a collection cannot be deleted. With a workaround, a Team Project can be deleted. This is not possible from the GUI (keep looking), but a simple command line command should do the trick.
To do this, go to the Visual Studio command prompt and let’s say you have a project called “foo” you want to delete. Type the command:
tfsdeleteproject /collection:https://foobar.visualstudio.com/defaultcollection foo

tfs capture

This deletes the foo project from the default collection. This is a complete hack and is insecure because no credentials need to be supplied. This also means that someone else could potentially delete your project, so be weary of this for now, and maintain a separate backup locally in case this happens and always think it could. I would expect this hole to be plugged in the near future, so don’t count on it to be there when you try..

http://blogs.msdn.com/b/bharry/archive/2011/09/19/deleting-a-team-project-from-the-team-foundation-service-on-windows-azure.aspx has this info.