.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.


Best 6 ways to keep on top of technology trends

Technology trends” is a pretty vague and generic term, but it’s still applicable to many peoples’ jobs. For example, a web developer should know about upcoming technology, even if their company isn’t using that tech yet. Keep up on trends also keeps developers or other technology fields aware of other techniques that might just make things easier for a company. Worst case scenario, it let’s you as an individual know what the rest of the world is doing in case you want to jump ship.

Here are some of the best ways to keep on top of technology in its ever-changing yet totally-interesting glory.

1) Read Digg, Slashdot, and other peer-submitted sites

Sites like digg and slashdot are (or used to be) somewhat unique, in that the content is user-generated. This let’s you know that the information is relevant to readers. Of course, this is only useful if you know the demographics of the readers, but come on. It’s digg and slashdot. You can probably make some fair assumptions here and be right on target.

Reading news stories submitted by your peers is a great way to track trends. You’ll see upcoming technology that’s interesting, and you’ll see criticisms of technology that doesn’t work. In fact you’ll see a lot of criticism, but that’s also very useful, so you’ll be aware of all the negatives of something before jumping into it.

EDIT: Thanks to xionon for pointing out that Reddit is one I forgot to mention, but it is actually much more developer oriented.

2) Check out traditional news sites

By traditional news I don’t necessarily mean CNN and BBC and Fox news and places like that. Although these can be useful tools to learn about technology, most of the time this would be useful only for existing or already on-its-way-out technology, or technology that would appeal to people on a larger scale. This is changing, of course, but that still does hold a bit of truth.

A more relevant technical “traditional news” site might be something more like engadget, or gizmodo. These are traditional because they aren’t peer-submitted, but have their own editorial process to screen content. As such you know that the content coming through is at the very least somewhat well-written, and has passed some sort of screening process related to content so you get what the site advertises.

Of course, it being April Fools Day, those sites are a bit of an exception right now, but usually that’s true!

3) Build a social network of developers and other technical people

Whether this is through AOL Instant Messenger, Gmail, Twitter/blogs, Facebook, Myspace, whatever, building a network of technically-minded friends will really help you keep on top of things. One of the most important – and most fun – aspects of technical work is swapping stories with people who can appreciate your horrible socially-crippling nerdiness and, god forbid, actually identify and respect your inner geek.

Social crutch aside, you can swap ideas, learn new techniques, and hear about technology solutions you’d never have encountered otherwise merely by having friends and talking to them once in a while.

4) Attend conferences

This might sound boring, but go to official conferences. You get free swag, you meet other professionals, and this is a great way to build your network.

Plus, free swag.

It can help you understand a new topic to listen to a speaker who is an expert on the topic, as well. To be fair, it can also confuse the hell out of you, so make sure you’re attending the RIGHT conferences!

5) Join usergroups

Joining a local usergroup (through meetups.com or whatever that site is, or just looking through Yahoo! groups, or Google groups for a tech group) can have many great effects. One of which is free pizza once a week. Another is that you get a group of people, usually wanting to focus on a specific, similar topic or goal. Think of it as a study group for adults.

That said, you might want to tell your girlfriend that you joined a bowling league. If she doesn’t like bowling, break up with her. It’s probably for the best.

One example is in my area, obviously the Boston area, there’s a usergroup that’s been meeting to go over .NET 2.0 and onwards training, in order to get Microsoft certification. Much easier to study when you have someone to ask questions, instead of reading a book, friendless and alone.

6) Ask coworkers

Kind of a lame one to end on, but asking coworkers is often forgotten by many tech people. Coworkers can often have nuggets of knowledge (if I ever write a book I am calling it Nuggets of Knowledge) buried in their brains much the same way a squirrel buries acorns for winter. Spring is here, and you want the acorns of their intelligence. Dig them up!

One Laptop Per Child – Buy one!

In case you’ve been living under a rock, the One Laptop Per Child (OLPC) group has been attempting to make a cheap (read: cost effective) laptop. This laptop, though, is not for consumer benefit, but rather to support education in the third world. Some people have been wrongly criticizing the laptop for it’s poor performance, silly look, and lack of Windows. I am here to tell you why you should buy one!


$100 for $400? Why?! 

The first thing you need to know about this laptop is that they did not reach their goal of making a laptop for $100. That was a lofty goal, and they fell short. Not to say that the result is not still impressive, it is $200. And you can buy one too, but if you want one it will probably cost you $400.

What? A 100% increase for the retail price? Not quite. The $400 will actually get you two laptops. They come in pairs. You only get one of them, however, the other gets donated to a third world country.

And yes, it’s tax deductible.

Features and nice touches

It has a lot of features that many people will be excited about. It is convertible into a tablet PC. Large stylus area. It’s sturdy. It has built in wireless, and a long battery life. There is a built in gamepad, audio, and webcam.

The most exciting features to me, though are completely built on open-source software, and the mesh network.

The entire OS is built from the ground up to be an intuitive GUI for kids. The interface is described like this by the OLPC team:

Beginning with Seymour Papert’s simple observation that children are knowledge workers like any adult, only more so, we decided they needed a user-interface tailored to their specific type of knowledge work: learning. So, working together with teams from Pentagram and Red Hat, we created SUGAR, a “zoom” interface that graphically captures their world of fellow learners and teachers as collaborators, emphasizing the connections within the community, among people, and their activities.

Mesh Network

The mesh network is the real heart and soul of this laptop. The idea is basically peer-to-peer connections between laptops in a sort of local wireless network. You can see nearby laptops, and what they are doing. If one of these laptops on the mesh network has an internet connection, it can share that connection among the others. This feature has the most potential of incredible use than any I have described so far.

One other use of the mesh network is the ability to share custom programs with other users. Each program (most programs anyway) on the OLPC laptop can be altered in true open-source fashion. The source code is visible with the touch of a button, and the kids can alter it all they want. There is also a “restore” option for the laptop that will probably be used many times, to fix any mistakes they make when coding.

Educational use

The mesh network is like a social networking tool. You can see what your friends are up to and share ideas. The educational uses alone are astounding. The teacher will be able to read papers as students write them so he or she can better tailor their class on the fly.

The video camera will also be useful for teachers to send home notes to the parents. Many parents in third world countries may be illiterate, and a video recording would potentially help them get more involved in school.


Overall, it’s easy to see the raw stats:

433 MhZ processor, an ISA port (wow!), 256MB DRAM, a gig of memory total, etc.

It has a very childish look, big bubbly plastic, antenna, and a super simple interface.

This is more than enough to turn most people off. But if you can look below the surface you will find an innovative machine, and a humanitarian one at that.

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

Top 5 reasons the desktop is dead

The desktop computer is a dying beast. Sure we still have them, but in the near future, the desktop will be phased out. Here’s why.

1. Rapidly declining cost of laptops

Laptops are getting cheaper and cheaper. I’m not even talking about the OLPC program, but cost in general. The new ASUS EEE machine is going to cost very little for an internet-enabled machine. Flash memory is getting cheaper all the time, and is more stable in portable devices. With laptops getting so inexpensive, most people will begin to make their next home computer purchase a portable one.

2. Portable power

Portable devices such as laptops are getting more and more powerful every day. They are actually beginning to catch up to desktops in terms of raw power. Combined with the convenience of portability and having all your data in one place, wherever you are, whenever you want, then there’s really not much of a reason to buy a desktop.

One of the biggest reasons to buy a desktop in the past was gaming. High-requirement games come out all the time, requiring the latest and greatest machines to run them at peak efficiency. This is still true today, but with the gap between desktops and laptops closing quickly, pretty soon laptops like the Acer Ferrari and outrageously overpriced Alienware laptops won’t be the only powerhouses suitable for hardcore gaming.

3. Internet-enabled gadgets

PocketPCs, PDAs, Blackberries, iPhones, Smartphones, Internet tablets – these devices are here and they are here hard. Spreading through the world like a zombie infestation, it’s only a matter of time until everyone is infected. Sure there will be a lone group of survivors camped out on the roof of a nearby shopping complex, but eventually, they will fall. It is inevitable. One of the survivors will make a mistake and it will doom them all. Then there will be nothing left except a zombie wasteland with a surprisingly decent network.

More technology needs to be compared with zombie infestations. I am making my stand here.

4. Thin clients

Definitely NOT a new concept, thin clients have been around almost as long as computing has. Originally called terminals, thin clients are basically stripped down PCs that communicate with a server. Most of the time there is no harddrive at all, save for a small bit of flash memory for an OS. Sometimes this is also absent. Processing is mostly done on a server.

These are becoming more and more popular as well, since more and more data is being stored on the internet. With a thin client you can easily and affordable do most computing tasks in a company and access as much data as the server can handle. Wikipedia lists the advantages and disadvantages of thin clients, and they say it better than I ever could. Needless to say, there is a large list of pros and not many cons.

5. Free wifi

The abundance of free wifi everywhere is a strong argument for portable devices. Everywhere from cities and coffeeshops to airplanes and airports, you can access the internet from almost anywhere these days. Using PCAnywhere, or logmein, you can access another PC from anywhere in the world. While this may seem like an argument for desktop PCs, I beleive that it is more of a transitionary effect that will help us seque off of desktops entirely.

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

Why Adobe Flex is evil

Adobe Flex, heralded by many as the coming of a newer age of web development, is evil.

Flex logo

I will admit right off the bat that the version I used was 1.5, and they are now on higher iterations of the product. I still maintain that, while in theory the concept of Flex is intriguing, it is way too seductive to web developers who simply don’t know what they are doing.

Flex promises to make it easy for web developers to build Flash applications for the web. The idea is that programmers do not have either the capacity to learn the animation-oriented Actionscript-based programming model  of Flash, and so Flex is a simple alternative. Build a Flash animation for a website using a different method of programming, using an XML-based programming language called MXML. Then, provide little documentation on how it actually works.

The result was a rash of programmers back when Flex first came out who scrambled to jump on board. Some websites integrated Flex nicely, although I imagine (and know from experience) that it adds a layer of complexity to the maintenance of sites that use it. It requires a Java-based web server like Apache to run as well. This complexity is added when you consider smaller companies who are reliant on IIS learning both a new programming language, but a new web server at the same time.

The call of Flex is hard to resist, though. XML-based content delivery into a Flash file that is compiled from a command line interface? More programmers would be comfortable with that then Flash.

If you ask me, Flash programming is a strange combination of programming and web design. I think that web developers can program Flash, and web designers can program Flash, and that sort of makes Flex completely unnecessary and redundant. The one major advantage is that you can easily add dynamic content from an XML file – at least, that’s how some people sell Flex over Flash. Those same people, of course, don’t realize that Flash can do the exact same thing easily.

In the end, Adobe was only competing with themselves when Flex was developed. There was no real competition to Flash like Microsoft Silverlight is proving to be. There are a few differences between Flex and Flash, but even wikipedia is really stretching to list them. “Drag and drop” and “charts and graphs” are not features unique to Flex in the slightest. In fact, to me that sounds like marketing spin to try and make it sound like Flex is the latest and greatest in Web 2.0 (which most people associated with the term “drag and drop”, for some reason).

Flex is a needlessly complicated, redundant piece of software. In the end anyone would be better off hiring a Flash developer over implementing a Flex-based site. Flex can be nice for the occasional small integrated application, but is the overhead worth it?

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

Top 4 up-and-coming web technologies

It is an exciting time to be a web developer. What used to be a time-consuming process is now becoming easier and easier with tools like Visual Web Developer, intellisense, and easier and more streamlined web-oriented programming languages and libraries.

Less time coding the basic stuff leaves more time to code the fun stuff, the flashy things, the bells and whistles that sets a website apart from competitors. And now more than ever there are some amazing tools and technologies that can make that job easier.

1. Microsoft Silverlight

Microsoft’s newest attempt at jumping headfirst into the web seems to be their best yet. Microsoft Silverlight could best be described as a Flash-killer. Ultimately, it’s nothing new. Flash has done something like this for years, and Silverlight looks like it is, on the surface, very similar.

One of the biggest differences, of course, is looking at it from a developers’ point of view. Flash is fine, and Action Script is okay, but Silverlight may just blow Flash out of the water in this area. Silverlight is .NET based, which means .NET developers everywhere are already familiar with the libraries and concepts. Intellisense (proper intellisense) is a major plus, as is the integration of timelines in the silverlight editor and the code-behind editor in Visual Studio.

From a users’ perspective it will pretty much work like Flash, except I imagine Windows users will not have to install any special players. It would be stupid of Microsoft to not include the Silverlight browser plugin in some kind of automatic update. The market saturation at that point would be amazing.

The biggest difference to users is that Silverlight is fast. Very fast. It delivers on most of its promises to delivery content quick, whether it’s a simple movie or a HD-quality streaming video through services like Netflix.

2. Google Gears

Google Gears is the newest thing from Google. Google Gears promises to bridge the gap between offline and online applications. It allows websites to communicate with a SQLLite database on your home machine and store information there.

The upshot of this is that you will have access to your online data even if you are working offline. It’s a simple concept, but one that to my knowledge has not yet been tackled.

I imagine that websites like Gmail will probably have this integrated into them, as well as Google Docs, so you can access your email and any shared documents in an offline format. I can see it getting tricky to seamlessly synchronize data between offline and online mode, but knowing Google they will take this into account and provide either some automated process for doing so, or ample instructions on how to accomplish this.

3. Twitter

Most people probably know what Twitter is already, but I felt that I should include this here. Twitter is a microblogging application that could almost be seen as an “away message” for your blog or website. You can send a text message with your current activity, and that message is then displayed on your website in real time.

This is not exactly new technology (at least not relatively, considering the age of the internet in general), but still worth mentioning. Social networking like this is huge right now, and I can only see it getting more and more popular.

What else can it be used for, though? Some people suggest that Twitter may be used by a company in order to get clients. The idea here is that a client who knows what it’s partner is up to is more likely to build trust. Communicate to your clients, in real time, what you are up to on their contract or product.

Right now, sadly, it is used as a way of letting everyone know what the blogger is currently eating (I am eating jellybeans), or to send text messages to multiple people at once.

4. Microsoft Office Sharepoint Server 2007 (MOSS)

This is a big one. MOSS. Companies right now are going nuts for MOSS. To many people, this is the holy grail of web applications right now. But what is MOSS?

Microsoft Office Sharepoint Server is best described as a platform. It is .NET based, which as mentioned above is good because that means many people are familiar with it off the bat. It allows “click” creation of web sites, meaning click a button, add a brand new site with a predefined template.

It is a Content Management System, but it is much more than that. It includes web-parts, customizable and programmable web-widgets. It allows complete and total management of your web sites, not just some of them but all of them in one environment. It is a web-portal. It allows you to have a nice intranet out of the box without having to touch anything. Internal Collaboration. Programmability using Windows Sharepoint Services API, or Sharepoint’s own API.

It has built in blogs, wikis, templates, RSS feeds, RSS readers, Excel and Infopath integration, content and document management systems… the list goes on and on. It has integrated into it almost every web-based feature you can think of. If there is something you can think of it doesn’t have, you can build it in!

It’s not without it’s share of quirks and bugs, of course. No one is perfect. Technology like this, though, makes web development much more about the web, and much less about the actual development. It cuts out the tedious repetitive coding and allows programmers to focus on more productive and rewarding code.

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