Brian Ritchie
Blogging on .NET & technology
-
Microsoft joins the rest of us...and counts down to the end of IE6
Microsoft launched a website dedicated to the demise of IE6. Here's their pitch...10 years ago a browser was born. Its name was Internet Explorer 6. Now that we’re in 2011, in an era of modern web standards, it’s time to say goodbye. We'll watch Internet Explorer 6 usage drop to less than 1% worldwide, so more websites can choose to drop support for Internet Explorer 6, saving hours of work for web developers.Thanks Microsoft! We've been waiting for this day to come for a long time. Of course, it would have been nice if IE6 was gone 5 years ago...but who's counting. -
Using extension methods to decrease the surface area of a C# interface
An interface defines a contract to be implemented by one or more classes. One of the keys to a well-designed interface is defining a very specific range of functionality. The profile of the interface should be limited to a single purpose & should have the minimum methods required to implement this functionality. Keeping the interface tight will keep those implementing the interface from getting lazy & not implementing it properly. I've seen too many overly broad interfaces that aren't fully implemented by developers. Instead, they just throw a NotImplementedException for the method they didn't implement.
-
Retrieving upcoming calendar events from a Google Calendar
Google has a great cloud-based calendar service that is part of their Gmail product. Besides using it as a personal calendar, you can use it to store events for display on your web site. The calendar is accessible through Google's GData API for which they provide a C# SDK.
-
Populate a WCF syndication podcast using MP3 ID3 metadata tags
In the last post, I showed how to create a podcast using WCF syndication. A podcast is an RSS feed containing a list of audio files to which users can subscribe. The podcast not only contains links to the audio files, but also metadata about each episode. A cool approach to building the feed is reading this metadata from the ID3 tags on the MP3 files used for the podcast.
-
Creating a podcast feed for iTunes & BlackBerry users using WCF Syndication
In my previous post, I showed how to create a RSS feed using WCF Syndication. Next, I'll show how to add the additional tags needed to turn a RSS feed into an iTunes podcast.
-
Serving up a RSS feed in MVC using WCF Syndication
With .NET 3.5, Microsoft added the SyndicationFeed class to WCF for generating ATOM 1.0 & RSS 2.0 feeds. In .NET 3.5, it lives in System.ServiceModel.Web but was moved into System.ServiceModel in .NET 4.0.
-
The importance of clock alignment between AppFabric servers
In our latest release, we are taking advantage of the new AppFabric Caching Service to host our session state. AppFabric provides fault-taulerance for session data within our web server farm. However, the AppFabric cache servers were crashing every hour or so in our QA environment with the following exception:
-
Thoughts on improving IE9 integration features
The new desktop integration features of IE9 are great. However, I have a few thoughts on how they could be improved.
-
Internet Explorer 9 adds innovative desktop integration
I've been using Internet Explorer 9 for a few days now & I really like it. The browser has a very clean UI...most of it is similar to what has been seen with Chrome & the latest Firefox browsers. As you've also probably already heard, it is pretty fast and standards compliant. It looks like Microsoft is finally serious about making a good browser.
-
Configuring AppFabric Session Hosts Dynamically
Windows Server AppFabric has finally brought a performant, fault-taulerant session provider to ASP.NET. Originally, this technology was part of the Velocity Project. Very cool stuff. There are lots of articles out there about how to configure this new service via web.config. Now, I love web.config as much as the next person, but it makes my deployment process painful. Sure there is the new web.config transformation process, but it requires the code to go back through the build process which makes it hard to move from environment to environment. To solve these and other problems, we have a custom configuration system to handle environment specific settings.