East coast technology blog

Programming

Post navigation

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.

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

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?

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.

RSS feeds are used all over the internet these days. Blogs come with them pre-configured for you. Browsers are beginning to integrate RSS Readers directly into their functionality. If you’re using IE7, you can see an icon on the toolbar menu.

If this icon is orange, click it to see the RSS feed on the page you are currently viewing. If it is grey, there is no feed on the current page. For firefox users, there are plugins you can download to mimic this feature. My favorite is Sage, although it is not as nice as the IE integration. You can also subscribe to feeds using these feed readers. But what is an RSS Feed and an RSS Reader?

An RSS Feed is a method of content distribution, Really Simple Syndication. As a web publisher, or blog writer, when you create a new piece of content, you want regular readers to know about it as fast as possible. An RSS Feed is basically an XML document that describes your page’s content. When this is updated, people who have subscribed to it can see the change in their browser without even visiting your site. They can read the new article from their Feed Reader.

An RSS Feed Reader is a plugin that we talked about that you can use to create a bookmark of content. Everytime you check for new content, instead of visiting all your favorite sites, you can merely click a single button and it checks for you. New articles show up with previews and the ability to see the content in your browser without visiting the site.

Very handy for compulsive webheads like myself.

This may seem undesireable to webmasters, but it’s not. The first thought in many people’s heads is “but if people can see my content without visiting my site, I will lose hits!” Yes, this is true, at first. However, your content is also reaching regular readers. If someone subscribes to your feed, they can be considered a “regular” in my book. You can also implant ads into your feed if you wish, although this may turn some people off.

What RSS feeds are NOT is a way of “inputting content” into your own website. You can, in theory, strip the content out of an RSS feed from another website in order to populate your own with content. However, this is for all intents and purposes stealing content. You may be taking copyrighted materials and copying them illegally, which can get you blacklisted by search engines. Even if it not illegal, it is still immoral.

There are syndicated feeds that allow you to take the content of them to display them on your site, though. This is not, or at least, should not, be the main focus of RSS feeds.

However, RSS can play a big part in search engine optimization. It may be a more indirect effect, unlike most other techniques. You can generally actually SEE a change with SEO, whether it’s titles, content changes, whatever. With RSS Feeds, though, you’re relying on getting your content to as many people as you can. Hopefully, they will blog about it or link to the article on their site. Even if they read it without visiting your site, links to your site will help out immensely for Google, who is very link-centric when it comes to search result placement.

So the upshot of all this is using RSS to distribute your content as quickly as possible increases the likelihood of more people reading it (it’s easy). This in turn increases potential links to your site, hopefully with decent anchor text. This gets you more new visitors at the expense of seeing regular visitors in your stats. This also increases your likelihood of moving up the search engine rankings.

Registering your RSS Feed with syndcation sites will also give you immediately linkbacks to your page, as well as greater content exposure.

RSS Feeds are also fairly trivial to set up. Even if you have your own personal site instead of a major blog site, coding your own RSS functionality is no big deal for any halfway decent programmer – it’s merely a matter of creating an XML document that matches a certain schema.

The best part of all is that there’s no real downside to having an RSS. If you screw things up, it won’t hurt you, so there’s no real reason not to have a feed in this day and age.

Speaking of RSS feeds, there’s a handy RSS feed button located on the right sidenav of this blog! Feel free to use it!

There’s been a lot written about search engine optimization, and the topic can be controversial. Developers think it’s marketing, marketing also thinks it’s marketing and then fails, and content writers are glad they don’t have to worry about such things. This is the state of many companies right now, and probably one of the biggest reasons that SEO is such a lucrative field right now.

As a developer, I find it invaluable to learn SEO tactics and techniques. Here’s why:

1. Initiative in the workplace

Most developers know nothing – or more accurately, care nothing – about search engine optimization. It’s not our job, who cares? If you take the time to learn, and take initiative to enforce its practices, then your value to the company will go up. Or your job will be outsourced to some third party vendor.

Developers are more interested in new technology to worry about optimization of old technology, much less technology that no one really understands. New versions of Visual Studio, .NET, Gnome, upcoming tools like Silverlight and LINQ can distract developers away from boring old optimization. With SEO skills you will stand out in a crowd, add to your resume, and provide a skill that relatively few people possess.

2. Save time now, play harder later

The fact of the matter is, unless you hire a hands-on consultant, developers will be doing the actual grunt work behind search engine optimization. HTML coding including alt tags, page titles, etc. usually fall under that jurisdiction. Certainly changing IIS settings can be included in a dev’s job in a pinch. If you start of coding things for SEO, then you will definitely save time later.

The reason for this is optimizing is incredibly easy if all the wheels are turning on a project. It can be like a beautiful machine, all the gears turning and everything falling into place, if people are educated from the get-go. However, retrofitting existing projects can be a chore. A terrible, complicated chore. Scour a website and find all the images, add alt text, change the filename to something meaningful, and make sure all the links are updated. Test, because that’s a major change. After testing, push live. Repeat for all the other minor yet significant changes.

Now consider getting a set of images already named correctly from a designer and placing them on a new page during the development phase. No new work so far, you do that anyway. The designer made a very subtle change in the way they work and things are already progressing smoother. Then consider getting a list of alt tags from a content person with a key to what image they belong to. Place alt tag in image tag, and you’re done. That’s it. Much easier than hunting and pecking each existing image, and the best part is this was all done without spending any extra money.

3. Save the company money on consultants

Consultants cost. They can cost big time. And yes, consultants can be useful if you don’t know what you are doing, or if the boss deems it necessary to double-check and validate what you are doing. Learning SEO techniques will make this process smoother, at the very least, minimizing costly consultant time. It can also eliminate the need for consultants if a knowledgeable person takes the time to educate others. Some companies may be more comfortable having an outside come and explain things to them for whatever reason, but internal resources should, and often do, take precedence.

And who knows? More money in the company coffers may mean more money for you at raise time.

4. Personal use

It may not seem like there are many personal uses for SEO, but there are. Consider wanting to start your own personal site, say a natural dog food recommendation site. Right now there is a lot of competition for “natural dog food”, the search term brings up 28 million hits on Google. According to the tool overture, the term gets searched only 4482 times in the month of January.

This means the ratio is:

4,482 / 28,000,000 = 0.000160071429

That is obviously not ideal. Very very small number of people looking for the same thing as you. Broadening out to just “dog food”, though, gives you the following: 26,964 searches in a month, and 84 million pages. This time the math looks like:

26,964 / 84,000,000 = 0.000321

Still not ideal, but a step in the right direction. The higher the ratio, the more likely you are to get hits on your new site. This can be used to target a specific niche audience and get great search results. Search results translate into higher number of visitors, and your site may be off to a successful start. In the example above I chose some random keywords based on things I saw around me (wordpress’ suggested tags, actually) and came up with those numbers. If I were really making a site about dog food I would play around with keywords / searchers more trying to get that ratio up. Is there a specific brand or area I could single out, or a highly searched brand that gets little sites mentioning it, etc.

All done through a little bit of knowledge. SEO is an important skillset, and should be a tool in the repertoire of many programmers, but sadly it is often overlooked. The results you can get by a little bit of applied knowledge can surprise you.

Search engine optimization (SEO) is one of the cornerstones of a successful website. Unfortunately, many people are unaware of the benefits of proper SEO management and are further unaware of the ease at which it can be implemented with proper planning.

I am currently fighting the good fight where I work, attempting to get SEO awareness adopted by management, content editors, developers, web designers, project managers, and everyone in between. And I won’t lie, it’s a hard sell. Sadly, people in charge of technology rarely fully understand it. This is not a rip on managers and business types, but rather just an observation that many people in positions of power lack the technical expertise that people like developers have come to take for granted.

For instance, one person I tried to convince to hop on the SEO bandwagon said that it was not necessary to plan for SEO unless marketing tells you that there is a problem. Obviously, people with technical knowledge of web development would tend to disagree, considering that it is umpteen times more difficult to retrofit an existing web page with search-engine oriented code than it is to start from the ground up.

With a new project, you can plan for all the little things that add up – image names, formatting the page titles correctly, setting up sitemaps, making meaningful links, etc. After a site is deployed and has grown for a few months or years, you may lose track of all the images that exist, or all the links to images, or a multitude of other things.

Another tempting argument against adopting SEO company-wide is that you need “a guy” for SEO. This, I heartily believe, is a mistake. It’s tempting to want to hire “a guy” to handle all that for you, but this is not in the spirit of SEO. A consultant may come on temporarily to help out, but ultimately it is the company itself that needs to change. Small changes, sure, but “a guy” will not help out as much as it would seem.

The bottom line is that SEO is not a marketing thing, a development thing, a design thing, or a content thing. It is a combination of all of these groups and teams that need to come together to market the site. Cross-department pollination, so to speak. Marketing needs to come up with key terms and monitor the status of things like advertisement (adword keywords, for example), and those key terms should then go to content people to make sure they are including them in the content.

Likewise, content people should inform marketing if they are using a term that is not on the list regularly that deals directly with the site. This list of keywords should then be kepy