Work has been pretty crazy over the last few months, hence my not finding the time to write much here. As evidenced by my previous posts, when I do write I tend to ramble on for pages at a time, so rattling off a quick new post here and there wasn’t really an option. However, now that I’ve got my weekends back, I might have time to start blogging a little more, particularly on the technical side.

The past six months have been spent working on two projects. The first of these was a fairly significant Silverlight application for a financial services company. The second, which I’m still working on, is an AJAX intensive website for a property company. Somehow, through this work, I’ve transitioned from being a mainly server-side developer to being a mainly client-side one. Right now, 90% of the code I write is client-side JavaScript, which is something of a change from the 100% C# I was writing before this.

It’s certainly a change, but not an unwelcome one. I’ve always had an (un)healthy fascination with browsers and the client-side, um, side of web-development, but traditionally at my ¬†firm, “real” programmers have done the server stuff, while designers and front-end specialists have handled the scripting stuff alongside the photoshop, HTML and CSS work, with little crossover between the two. However, the realities of, firstly, developing in Silverlight, and secondly, developing a complex AJAX interface, have meant the lines have become somewhat blurred.

The Silverlight project was an interesting experience. I’m not really a fan of proprietary web stacks, being more of an open-web advocate. Albeit one who is often driven to despair by the politics of the standardisation process and the glacial rate of advancement (mainly due to IE version lag). It also became increasingly clear as the project went on that Silverlight as a technology was sitting on a rather shaky foundation, as the news coming out of Microsoft regarding its future was not promising. In fact, just last week the shoe dropped, and Mary J Foley all but confirmed that the next release of Silverlight, version 5, will be the last.

What happened to cause this is, of course, the rise of the Smartphone and iOS, and the decline of Flash. Silverlight was developed by Microsoft purely as a competitive move against Adobe, in the days when it genuinely seemed possible that Flash might take over the web. Now that everyone agrees that isn’t going to happen, and focus is instead switching to “HTML5” for the web and integrated app stores selling native apps. Indeed, even as we were finishing up work on the Silverlight app, work was beginning on an alternative HTML version to run on mobile platforms. From what I gather, that version may end up supplanting the Silverlight app on desktops as well.

It might sound like a frustrating experience, to invest that much time in what appears to be a doomed app and platform, but it was actually an incredibly useful one. As I said, I have no love of proprietary web stacks, and will not shed any tears over the death of Silverlight for that reason. On the other hand, I cannot deny that it is a fantastic piece of technology is many respects. It’s clearly the product of some smart people who looked at web development, understood what worked about it and what didn’t, and tried to make a technology that improved upon it. In some respects they succeeded, in some they didn’t. In some respects I think they succeeded even in-spite of themselves.

Working with Silverlight, and learning the patterns and practices required to implement a complex app, really helped me grasp the right way to build for the client-side web, in particular the use of the MVVM pattern and¬†asynchronous operations. In many ways Silverlight forces you, or at least strongly encourages you, down the right path in these areas, and this is tremendously useful when you move back to regular web development using HTML, CSS and JavaScript. That is something I want to expand on in future posts, and go into the kinds of libraries and patterns that have been particularly useful in my latest work project. I think that’ll do for now though.