.NET Developers – Burger Flippers?

This is probably old news to a lot of people, but it was new to me so I’m writing about it.

A year ago, the CEO of startup Expensify wrote a blog post unintentionally bashing professional .NET developers. The entire post was inflammatory and insulting to the .NET world, with gems such as the following quote littering the whole blog:

The right sort of person is so passionate about coding, they can’t be stopped from doing it.  They typically started before high school — sometimes before middle school — and never looked back.  They write everything from assembly to jQuery, on PCs to mobile phones, doing hard core computer graphics to high level social networking.  They’ve tried everything.

Everything, that is, but .NET.

You can’t make this stuff up. He goes on to explain that he makes all people with .NET experience on their resume at ALL defend that position during phone screens. He doesn’t see .NET as a “real” platform and that .NET developers just sit in their “McDonalds kitchen” pressing buttons that spit out burgers. He claims that .NET devs can’t adapt to situations (although, he very notably doesn’t give any examples of things .NET devs can’t do, but rather stays in his metaphor or burgers).

Here’s a slightly out-of-context quote:

See, Microsoft very intentionally (and very successfully) created .NET to be as different as possible from everything else out there…

He goes on to make some valid points about Microsoft getting people entrenched in their platform and their tools – but the same argument can be levied against many other companies as well. But regardless, the above quote is a bit laughable when you remember that .NET was originally Microsoft’s answer to Java. And .NET is very similar to Java in many ways. It was intended to be their version of Java, not something “as different as possible”.

The CEO also describes his developers as in a fairly humorous and confusing way:

Instead, we look for a very different sort of person.  The sort of person who grew up cooking squirrels over a campfire with sharpened sticks — squirrels they caught and skinned while scavenging in the deep forests for survival.  We don’t want a short order chef, we want a Lord of the Flies, carried by wolves into civilization and raised in a French kitchen full of copper-bottomed pots and fresh-picked herbs.  We need people who can not only cook burgers, but cook anything, from scratch.

Once again continuing the McDonald’s metaphor, apparently the devs this guy is looking for hunt and cook squirrels. .NET is push-button development but his guys can adapt to ANY situation, since they’re hunters and can cook their own stuff, right?

This drama comes to a close last month, when Expensify publicly began searching for a .NET developer. They definitely acknowledged the hilarity of them looking for a .NET guy after bashing .NET so thoroughly. However, some good questions were raised in the comments. If they need a .NET dev (in this case, for WP7 apps) why can’t their squirrel-hunting devs just get in that McDonald’s kitchen and press that burger button?

The sad part is that most of the professional .NET community was warned, via some high-profile blog postings, to stay away from these guys. That means the people applying will have a higher chance of being those “burger flipper” devs that he was insulting.


How Shadow Explorer can save your ass

Shadow Explorer is a neat little tool I found while cruising around the web. In a nutshell, it is a frontend built for Vista’s Shadow Copy tool. Vista Home versions allegedly do not have a frontend at ALL for this service, while higher end Vista copies do, but it’s not that great.

To use Shadow Explorer you can simply download it from the linked site above. It’s very simple to use – just download, run, and run the resulting .exe as an administrator.

Once open, it looks pretty bare, like you’re missing something or something broke. It probably didn’t. There’s a long thin dropdown at the top that will list out all the dates that there are restore points on your machine for. Select a date, and then you should see a copy of your filesystem (or at least the “protected drives”).

From there you can find files and restore them by right-clicking and then exporting them back to your filesystem. Works like a charm. I just had a situation where I saw a neat little popup saying “Files deleted permanently” and sure enough, some files were gone. Not in the trash, not in any temp directories, nowhere. No explanation. Restored them easily with this tool.

Thanks to Microsoft for Shadow Copy and thanks to these guys for making a way to access it! Shadow Explorer is kind of like backing up your whole harddrive (obviously it’s not a replacement for doing so… but it’s like making a LOCAL backup of all your files).

Make sure before you use this that Shadow Copy is enabled, though. Usually it is but I’ve seen at least 3 people who didn’t due to some errors in their configuration. To check, go to Control Panel, System (in classic view), System Protection, and then in the middle of the screen you should eventually see all your protected drives and unprotected drive. Simply check the drives you want to copy and hit apply or ok. You can also manually create a restore point if you want.


.NET 3.5: A LINQ to the Past

With the release of Visual Studio 2008 comes .NET 3.5, the newest iteration of the .NET framework. Unfortunately, .NET users are also greeted with a rise in popularity of the age-old question: Stored procedures or in-line SQL?

I won’t bore you with the details of LINQ (Language INtegrated Query) itself, as nothing can beat Scott Guthrie’s nice introduction on his blog. Something I’ve noticed about these new piece of technology, though, is that debate seems to rage up about how exactly to use it.

 LINQ has the nice ability to eliminate the need for many data layer projects and simplifies everything down significantly. To put it rather succinctly, you have the option to make a database object and call pre-made stored procedures like methods, or perform “in-line” LINQ to SQL commands.

The temptation to use in-line calls is tempting. That eliminates any database work besides initial creation and relationships. No more creating stored procedures and then calling them from code. Everything is contained in one place. You can even view your entity relations from inside of Visual Studio 2008.

However, many people point out that in-line SQL is not very efficient. The database optimizer doesn’t get a chance to be run on the query, not if it’s created dynamically. Therefore, traditionally stored procedures have been the “optimal” choice for database calls.

With LINQ, however, this may not be the case, or at least not as much as would be expected. Visual Studio magazine explains that LINQ can use eager or lazy loading to run its queries.

Eager loading loads up a ton of data at once, entire entities and relations. Lazy loading is a more “on-demand” type loading. What this means in more simplistic terms is that with lazy loading, there are many many roundtrips to the database, each one retrieving a smaller amount, whereas eager loading makes fewer trips for more data.

It seems that with LINQ, the hot topic is performance, and how to maximize it. Ultimately, you will probably take a slight performance hit from switching to LINQ. Is it worth it? That’s the question many many people around the world are asking themselves right now.

There are many methods of optimization, though, like pre-compiling in-line queries and just sucking it up and using stored procedures (which, as I mentioned earlier, can still be added to Visual Studio as methods of an entity object).

If anyone has some comments about LINQ I would be happy to hear them!

Microsoft Popfly – exciting new mashup builder

Microsoft Popfly

Okay, I didn’t mean for this blog to seem so Microsoft-centric, but it’s kind of hard not to talk about the exciting things that are coming out of Redmond lately.

Microsoft Popfly is the latest mashup creator from Microsoft. They seem to be directly targeting Yahoo! Pipes with this new too, as well.

Microsoft Popfly feature overview

Microsoft Popfly is an easy new way to create websites, gadgets, and mashups, and best of all it is free!

Currently still in Alpha, this new tool promises to deliver an anyone-can-use type of interface, essentially dragging and dropping tools and sets of information (“flckr photo accounts” etc) to a workarea.

For advanced users, there is always an HTML editing mode so you can have more direct control over the code. Microsoft is also allowing users to share their mashups and alter them.

You can even turn your web gadget into a Widows Sidebar gadget.

Definition of a mashup

For those of you still wondering what a mashup is, a mashup is basically a web application (or with the release of Google Gears and Adobe Air, a desktop application that uses the internet for its data) that draws information from multiple sources.

An example of this, straight from one of the Popfly tutorials, is taking the traffic information from Yahoo! Traffic, and combining that with a map from Virtual Earth to create a nice traffic map.

Social networking

One of the neat things about Popfly is that social networking is built into it. You can “connect with creators” of gadgets and sites you like, keep track of them, etc. Seems to me to be a little like existing social networking concepts but overall I think it’s a plus to have it included.

Now Microsoft just needs to develop a mash network like the one found in the OLPC program! (More on that later)

Questions? Comments? Feel free to contact me, James Martin.
Email me, or leave a comment!

What .NET going Open Source really means

Microsoft and Open Source are two terms that are almost never seen in the same headline, unless it’s a negative one.

And yet today Scott Gu’s blog announced that .NET 3.5 is going open-source … kind of.

First of all, it won’t be fully open-source. At least, not at first. The move to open up .NET will be gradual, but eventually all class libraries will be open. Eventually.

Second of all, it is released under MS-RL, Microsoft Reference License. This is the most restrictive of all of the Microsoft shared source licenses. Essentially this means you can look, but not touch. The license is for reference only, accordig to Redmond.

This news will be disappointing to the many of Open Source gurus out there hoping Microsoft will jump on the open source bandwagon. It’s not really in the spirit of open source to release something that cannot be changed or touched at all.

So what does this news really mean?

For .NET developers this means that the code they are running their programs on can be debugged. An integrated debugger for .NET built into Visual Studio 2008 will allow devs to step into the .NET code and view the stack calls there.

Useful in some situations. Definitely a good PR move for Microsoft as well. The appearance of embracing open source without actually having to go through with it.

In all seriousness, what harm would it do to allow users to alter and redistribute their own additions to .NET? Microsoft releases the framework for free anyway, it’s not like it is a product in and of itself. You would think that they would appreciate the extra hands that would work on .NET for free.

Ultimately though, another added benefit is that more eyes can now look at the source and identify bugs. Right now it is somewhat difficult to report obscure bugs, as you need to get a tech support agent to reproduce the error. Then you generally get the message that your problem will be relayed to a developer, and that’s the end of it.

Now, with all eyes on Microsoft, hopefully they will see that people appreciate the gesture, but ultimately crave more.

Questions? Comments? Feel free to contact me, James Martin.
Email me, or leave a comment below!

Why Microsoft Silverlight can succeed

Microsoft Silverlight

So by now, many people are familiar with the term Microsoft Silverlight. It is Microsoft’s attempt at a Rich Internet Application platform, similar to Flash. That’s enough for the average nontechnical person to know, really.

Why can Microsoft stand any chance? There are a few reasons.

Market saturation

Flash currently has a large market share. The latest version alone has 93% exposure online. That means 93% of all internet users have Flash 9 capable browsers already.

How can Microsoft possibly penetrate this humongous market?

Easy, if you ask me. Windows Update. With the power of Windows Update, any Windows user can automatically have Silverlight integrated into IE. In theory, this would spread Silverlight – instantly – to a majority of web users. The best (or worst, depending on your stance on Microsoft) part is that most users wouldn’t even know there was a transition, it would just be taken care of for them.

Annoying IE “feature”

Many people might voluntarily choose to develop in Silverlight merely because of the annoying Flash IE “feature”. This feature is that Flash does not embed correctly in IE. In fact, I don’t believe any third-party apps can be embedded in IE without the annoying “Click to use this application” message. You have to click to activate and use any Flash control.

I assume this will not be the case with Silverlight. Sure, there are javascript workarounds for Flash, but there are so many non-standardized methods it’s hard to know where to start (I recommend SWFObject).

Aggressive Marketing

Silverlight is getting aggressively marketed by Microsoft. I have never seen a Flash advertisement (to clarify, I mean an advertisement for Flash. I see Flash ads all the damn time).

While Flash has become “a part” of the internet, I don’t doubt that Microsoft can create the same kind of brand awareness that Flash shares.

Integration into Visual Studio/.NET

With Release 1.1 of Silverlight, it is possible to write application code for Silverlight in C#/VB instead of javascript. This opens up developmet to many more developers, and bridges the gap nicely between the idea of Flash being a designers tool and a developers tool.

With Visual Studio being one of the development platforms, many people will be familiar with the tool already as well. This makes development just that much easier.


Overall, Adobe Flash and Microsoft Silverlight are, on the surface, very similar. In the end, I think it’s the small differences that will really matter.

Questions? Comments? Feel free to email me, James Martin.
Email me, or leave a comment below!