<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Annoyed.ca &#187; Life</title>
	<atom:link href="http://annoyed.ca/category/life/feed/" rel="self" type="application/rss+xml" />
	<link>http://annoyed.ca</link>
	<description>Life - Technology</description>
	<lastBuildDate>Fri, 30 Mar 2012 21:58:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Why Are We Still Using Internet Explorer 6? &#8211; Part Two</title>
		<link>http://annoyed.ca/2010/11/14/why-are-we-still-using-internet-explorer-6-part-two/</link>
		<comments>http://annoyed.ca/2010/11/14/why-are-we-still-using-internet-explorer-6-part-two/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 02:24:24 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2010/11/14/why-are-we-still-using-internet-explorer-6-part-two/</guid>
		<description><![CDATA[Nearly a year and a half ago I wrote this post about why many large organizations are still using Internet Explorer 6. Every now and again, the post is re-discovered and is re-circulated and I get some great feedback about &#8230; <a href="http://annoyed.ca/2010/11/14/why-are-we-still-using-internet-explorer-6-part-two/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nearly a year and a half ago I wrote <a href="http://annoyed.ca/2009/07/27/why-are-we-still-using-internet-explorer-6/">this post about why many large organizations are still using Internet Explorer 6</a>. Every now and again, the post is re-discovered and is re-circulated and I get some great feedback about it. I’ve decided that it is time for a bit of an update on the subject, so here goes.</p>
<p>I’m going to assume that you’ve read my original post, but in one line, the reason many large organizations still use Internet Explorer 6 is application compatibility. My employer (a large government department) has recently experienced this first-hand, having had to postpone deployment of Internet Explorer 8 after discovering compatibility issues (mid-deployment) with some important business applications. I have no idea how come they only discovered the issues after starting to deploy. Either someone didn’t do due diligence and test before-hand, or worse, they were completely clueless about the risks of incompatibilities. Either way, as a fellow IT employee in the same organization, it’s down right embarrassing.</p>
<p>One of the most frequent comments I receive as feedback on my original post is that folks get the compatibility issues, but they believe that we wouldn’t be in this situation if these incompatible applications had been written using web standards. It’s the fault of the application developers that their applications only work properly with Internet Explorer 6.</p>
<p>  <span id="more-1127"></span>
<p>It is definitely true that Internet Explorer 6 isn’t very standards compliant… well, not by 2010 standards anyways. Thing is, these incompatible apps weren’t written last week, or last year. The state of web standards was very different when many of these applications were written.</p>
<p>Time for a little web history lesson. Let’s go back in time, about 13 years or so to late 1997.</p>
<p>HTML 3.2 is an W3C recommendation (HTML 4.0 will be a recommendation by the end of 1997, but will be updated and re-published again in April 1998). CSS level 1 is also a W3C recommendation. In the world of browsers, the world is basically using Netscape 4.0 or Internet Explorer 4.0 (I’m ignoring Opera, cause lets face it, most other folks did too). Both of the 4.0 browsers support HTML 3.2 and some CSS 1, but both browsers have serious bugs in their CSS implementations. At this point, other than HTML 3.2, neither browser is really “standards compliant”. Opera was closer, but web site designer/developers weren’t about to implement standards compliant sites if it would only work in Opera.</p>
<p>Fast forward a couple years to 1999. HTML 4.0 has been published (twice) as a W3C recommendation, as has CSS level 2. Internet Explorer is now at version 5.0 and Netscape has… essentially vanished from the scene. The Netscape story is a long and interesting one, but in a nutshell, they open sourced a large part of the code, started building version 5 on top of that, but discovered that the code was a complete disaster. So they tossed it out and started from scratch. Netscape 5.0 would never see the light of day. Internet Explorer 5 on the other hand included improved CSS and HTML standards support. In fact, Internet Explorer 5.0 for Mac was the first browser to achieve full support of CSS 1 (it had even better standards support than Opera). Internet Explorer 5.0 was also the first browser to include XMLHttpRequest, the basis for AJAX, the technology on which almost every major web site today depends (there is no “#NewTwitter” without AJAX &amp; XMLHttpRequest). XMLHttpRequest in IE5.0 wasn’t script accessible, but it was there behind the scenes.</p>
<p>Move forward another year to 2000. Nothing has changed in the world of W3C web standards (they went off and focussed on XML, XSLT, etc. for the next few years, I think) Netscape 6 is re-born, with a largely re-written codebase. But the browser is bloated, and generally doesn’t work well on any PC that isn’t relatively new. By the time a couple of minor versions (6.1 &amp; 6.2) come along to improve the performance situation, the world has been introduced to Internet Explorer 6.0. Shortly thereafter, the world is also introduced to Windows XP, with which comes a bundled IE6. This is about where I (and a huge chunk of the rest of the world) made the switch to Internet Explorer as my personally preferred web browser. Both of the IE and Netscape 6.x browsers support the current W3C standards, but the realm of CSS 2 in particular there is a huge difference in the implementation. Both products still contains major bugs and in many cases each product has interpreted some aspects of CSS 2 differently (so-called CSS 2 errata, clarified in CSS 2.1). In fact, the next revision of CSS, version 2.1 will drop parts that nobody implemented correctly, and will change other parts to match how the browsers of the day actually worked. The browsers drove CSS 2.1, rather than the other way around. By this time, it is important to note, Internet Explorer 6.0 accounts for almost +90% of the browser market share. Internet Explorer 6.0 is for all intents and purposes, <strong>the</strong> standard. It has bugs in its implementation of CSS (most notably in the box model). But in the first few years of the 21st century, if you build a site to 100% W3C standards, it’s going to be broken in +90% of the worlds browsers.</p>
<p>This is the era in which these applications which are incompatible today, in 2010, were built. To the Internet Explorer 6 de facto web standard.</p>
<p>Over the next 4 years, the situation doesn’t change much. HTML stays at 4, CSS stays at 2. Netscape and Opera (and several other smaller browsers) continue to release updates with improved implementations of W3C standards, but can’t seem to gain (or re-gain) any significant market share. In fact, Internet Explorer remains at version 6 (with a couple of service packs added) and peaks at +95% market share. Of course Microsoft is also been investigated for anti-trust issues related to their bundling of Internet Explorer with their operating systems. All this to say that frankly they haven’t got much motivation to release newer browser versions. The only other significant thing to come out of these years is XHTML, which frankly was a misguided detour which thankfully will likely be abandoned as a result of the adoption of HTML 5. The reasons why deserve their own post, but in a nutshell, there isn’t a single released version of Internet Explorer available today which supports XHTML. At least not when served by a web server using the correct MIME-type (application/xhtml+xml). So most web servers deliver XHTML with a MIME-type of text/html which most browsers parse as HTML (not XML or XHTML). Even if your site is XHTML compliant, if you serve it with the correct MIME-type to a supported browser, it won’t look the way you’d expect. Only a tiny percentage of sites are XHTML coded and served, on purpose and by design, using the correct MIME-type. And most of those are owned by computer science academics and grad students. But I digress.</p>
<p>Things begin to change at the end of 2004, when a little browser known as Firefox begins to actually take a chunk out of Internet Explorer’s market share. What made Firefox different from the dozens of other browsers that had tried before? I honestly couldn’t tell you. Probably just a good example of right place at the right time. I know I jumped on Firefox at about 1.0 and haven’t looked back. But Firefox re-ignited the so-called browser-wars of the late 1990’s, but in the 2000’s one of the things that earns you points is standards compliance. It also re-ignited the actual <strong>development</strong> of web standards: CSS 2.1 (2005 &amp; 2007), CSS 3 (2005) and HTML 5 (2008 draft).</p>
<p>The thing I want you to take away from this post is that these critical business applications which today are holding us back from moving forward with more standards compliant browsers were in fact developed to the standard that existed in their day. Namely, Microsoft Internet Explorer 6’s (buggy) interpretation of HTML 4 and CSS 1&amp;2. With +90% market share, for better or for worse, Internet Explorer 6’s version of the standard was <strong>THE</strong> standard.</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2010/11/14/why-are-we-still-using-internet-explorer-6-part-two/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ottawa circa 1907</title>
		<link>http://annoyed.ca/2010/05/31/ottawa-circa-1907/</link>
		<comments>http://annoyed.ca/2010/05/31/ottawa-circa-1907/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 01:39:13 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2010/05/31/ottawa-circa-1907/</guid>
		<description><![CDATA[Source: Baedeker’s Canada (published in 1907). I purchased this book at a used book sale about a decade ago for 25¢.]]></description>
			<content:encoded><![CDATA[<p><a href="http://annoyed.ca/wp-content/uploads/2010/05/ottawa19072.jpg" target="_blank" rel="lightbox[866]"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ottawa-1907" border="0" alt="ottawa-1907" src="http://annoyed.ca/wp-content/uploads/2010/05/ottawa1907_thumb2.jpg" width="466" height="335" /></a> </p>
<p>Source: Baedeker’s Canada (published in 1907). I purchased this book at a used book sale about a decade ago for 25¢.</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2010/05/31/ottawa-circa-1907/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Are We Still Using Internet Explorer 6?</title>
		<link>http://annoyed.ca/2009/07/27/why-are-we-still-using-internet-explorer-6/</link>
		<comments>http://annoyed.ca/2009/07/27/why-are-we-still-using-internet-explorer-6/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 01:25:07 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://annoyed.ca/?p=442</guid>
		<description><![CDATA[There has been some discussion online recently between public servants about how the public service is still overwhelmingly using Microsoft Internet Explorer 6. I got involved when someone tweeted a link to this site: http://hey-it.com/download.html. The site provides cute posters &#8230; <a href="http://annoyed.ca/2009/07/27/why-are-we-still-using-internet-explorer-6/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There has been some discussion online recently between public servants about how the public service is still overwhelmingly using Microsoft Internet Explorer 6. I got involved when someone tweeted a link to this site: <a title="http://hey-it.com/download.html" href="http://hey-it.com/download.html">http://hey-it.com/download.html</a>. The site provides cute posters asking the IT folks to basically get off their arses and give us a newer web browser. I responded back that there are other issues involved when upgrading web browsers, such as legacy application compatibility, and that things aren’t as clear cut as it may seem from the perspective of someone outside IT.</p>
<p>Well, responses to that included “don’t punish users for your deployment issues” and “are you afraid of losing your job if I upgrade my own browser”? Oh, and the term “visionless IT geeks” was tossed around. My response to this was a flurry of tweets quoting other folks rhyming off reasons why large organizations all over still use Internet Explorer 6. I then signed off Twitter and did not log back in for two days.</p>
<p>I essentially had a hissy-fit.</p>
<p> <span id="more-442"></span><br />
<blockquote>
<p>Screw you guys… I’m going home! – Eric Cartman</p>
</blockquote>
<p>Not particularly mature, but what can I say. I’m passionate about IT and took things a bit more personally than I should have. But I’ve spent several days since thinking about it and have decided there is an opportunity here to share some knowledge of how the IT group in a large organization views a web browser upgrade. As folks who know me can attest, I am not one to miss an opportunity to share (or receive) knowledge, so here goes.</p>
<p>First, a little about me for the sake of context.</p>
<ul>
<li>I am an IT guy. My entire professional career has been IT, all within the same department (the name has changed more times than I can count, but it’s still the same department). I am NOT a LAN support/Helpdesk person. I am NOT an IT standards person. I am NOT an IT Security person.     </p>
<p>In other words I personally have NO control what so ever about what gets installed or not installed on your GoC workstation (nor do I have anything to do with what Internet sites are blocked, by the way). I am simply a programmer, and like everyone else, I have to deal with the consequences of what “IT” deems suitable.</li>
<li>While my entire career has been IT, I spent the first several years of it OUTSIDE the IT group, in what would be labelled a shadow IT group. A shadow IT group is basically folks that the business people deal with to get things done. They get stuff done independently, and regardless of what the official IT group says. We had our own servers, our own un-filtered Internet connection and our own, separate network and workstations (we ran Linux on our desktops). To be clear though, our stuff was completely separate from the corporate stuff. We were a much smaller threat than the average shadow IT shop (I don’t mean threat to IT jobs, but threat to the security/stability of the department).
<p>So I know first hand the “I/We can do it better than IT” mentality that exists in large organizations, outside of the IT group. Been there, done that.</li>
<li>I also side-line as a web developer/designer. I own a company that started life as a web design firm. I am VERY well aware of the limitations of Internet Explorer 6. Access to my own stuff is broken when I am at work.</li>
</ul>
<p>So, why one standard browser?</p>
<p>Once upon a time there was a large government department with some 24,000 employees and two Internet browsers, Netscape 4 and Internet Explorer 4. This was in the height of the so-called browser wars and things that worked in one browser didn’t necessarily work in the other. Applications were increasingly being developed as web-based applications, because it was simpler: they can be centrally managed and there is no need to worry about incompatibilities between products on workstations. Think about it: standardize on one web browser, make your web application work for that web browser, and your application will just work for everyone! Bliss!</p>
<p>And that’s exactly what happened. Internet Explorer was likely chosen because it is basically built right in to the Windows operating system. You can’t really uninstall Internet Explorer, like you can Netscape. So Internet Explorer it is. I suspect the same story played out in other departments, and in fact in other corporations around the world.</p>
<p>One browser also has the advantage that it means only one product to monitor for vulnerabilities and patches/security updates. Internet Explorer updates, additionally, can be deployed using the same infrastructure that is publishing Windows operating system updates, Office Suite updates, etc.</p>
<p>Time marched on, Netscape all but disappeared from the scene and for awhile Internet Explorer was just about the only game in town. During this time, internal applications continued to be developed targeting Internet Explorer 6. Third-party companies developing software for large organizations could also pretty much guarantee that those organizations were using Internet Explorer 6 so they to targeted their software at that platform.</p>
<p>Fast forward to today and that 24,000 employee department has 100s (if not 1000s) of applications that were built to target Internet Explorer 6. Some just work in Internet Explorer 7, others have some minor things that don’t, and some just don’t work at all. And the story is even worse when we contemplate a switch to a completely difference browser, such as Firefox, Opera, Safari or Chrome.</p>
<blockquote><p>But Internet Explorer 7 is free. There is no cost to upgrade.</p>
</blockquote>
<p>Okay, let’s talk about where that reasoning breaks down. Say that in our 24,000 employee organization, 500 use Product X, sold to us 7 years ago by Company ABC. Product X works with Internet Explorer 6, but doesn’t work at all with Internet Explorer 7. Product X is an essential tool for those 500 people to do their jobs.&#160; We contact Company ABC for an update for IE 7, but it turns out Company ABC was bought 2 years ago by its competitor, Company 123. Company 123 has no update, but instead has their Product Z with works with IE 7. And it will only cost $10 million for licenses. And $1 million for a consultant to help migrate data from Product X to Product Z. And $1 million to train the users on Product Z.</p>
<p>But you know what? I don’t think we can’t legally just upgrade from one company’s product to another. We have to go through a Request For Proposal process, to allow other company’s to also compete on the contract. Optimistically that’s a 2 year process, just to acquire the new software. The process also requires the business area’s time, because it’s their software. They have to make sure that the replacement is capable of handling everything they need it too. Oh, and the business area has to pony up the money too.</p>
<p>Think about that from the business side’s point of view. You’ve got 500 employees working each day, happy doing their jobs. Then IT comes to you and says “We’re going to upgrade to IE 7. But first we need 2 years of you time (for the RFP alone, plus deployment, migration and training) and $12 million of your dollars (doesn’t include salary dollars). I know what my response would be, but I am too polite to actually publish it here.</p>
<p>And that conversation would replay 100s of times across the organization.</p>
<p>Internet Explorer 7 is nowhere near free. Not even close.</p>
<p>Internally, or in-house, developed applications are a similar story. They need to be upgraded, but the resources that would be used for the upgrade have to be prioritized. Government, business/program and IT priorities all have to be balanced. So instead of upgrading existing applications for Internet Explorer 7, IT is implementing Common Look and Feel 2.0 before the Treasury Board deadline passes, or they’re re-themeing existing web sites because the old red and white theme was too “Liberal” for the current government’s tastes (seriously, this is what you tax dollars get spent on).</p>
<p>Oh, by the way. Internet Explorer 7 requires Microsoft Windows XP or better. For a 24,000 employee organization, an on-going migration from Windows 2000 to Windows XP is an expensive and time consuming task, which suffers from its own set of compatibility issues (they are applications in use that don’t work in Windows XP).</p>
<p>Upgrading a web browser on your PC at home is an easy task. In a large government department however, it’s a huge tangled web of issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2009/07/27/why-are-we-still-using-internet-explorer-6/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>My Current Thoughts on the OC Transpo Bus Strike</title>
		<link>http://annoyed.ca/2009/01/28/my-current-thoughts-on-the-oc-transpo-bus-strike/</link>
		<comments>http://annoyed.ca/2009/01/28/my-current-thoughts-on-the-oc-transpo-bus-strike/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 02:08:40 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2009/01/28/my-current-thoughts-on-the-oc-transpo-bus-strike/</guid>
		<description><![CDATA[The union is doing what it has to do. They are being asked to give up certain benefits (i.e. the ability to control their scheduling). From the union&#8217;s perspective it&#8217;s a dangerous precedent if they start giving stuff up so &#8230; <a href="http://annoyed.ca/2009/01/28/my-current-thoughts-on-the-oc-transpo-bus-strike/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The union is doing what it has to do. They are being asked to give up certain benefits (i.e. the ability to control their scheduling). From the union&#8217;s perspective it&#8217;s a dangerous precedent if they start giving stuff up so they HAVE to hold their ground.
<p>The problem I think is that the majority of Ottawa residents (myself included) believe that the drivers don&#8217;t deserve to have control of the scheduling (in part because, true or false, we hear that they abuse it). The residents who most want this strike settled at any cost are those who are suffering the most because of it. Therefore the union needs as many people as possible suffering, so that the strike gets settled at any cost, most likely in the union&#8217;s favour. That is why the union had to strike just before Christmas, in the dead of winter. Maximum pain = union&#8217;s best chances of getting/keeping what it wants.
<p>The union and drivers are prepared to see this through, because we&#8217;ve heard them say that they banked up their overtime in the summer (presumably by abusing their scheduling privileges) so they can afford to keep fighting.
<p>For highlights of their last contract, Google &#8220;oc transpo collective agreement&#8221; (should be the first result, a PDF).
<p>Their starting salary is more than what mine would be if I was starting out today. They start earning 6 weeks of vacation 4 years before I will. The most senior drivers will get 7 weeks, which isn&#8217;t even possible for me. They have just as many paid holidays as I do.
<p>I&#8217;m a federal civil servant working in the Information Technology (IT) field, for goodness sakes. I thought I had one of the cushiest jobs in the world, but apparently OC Transpo bus drivers do.
<p>I am in my early 30s and don&#8217;t have a drivers license. I&#8217;ve lived in Ottawa all my life, and my reasoning has always been that I don&#8217;t need a license because we had an awesome bus system. I&#8217;ve defended the bus system.
<p>I&#8217;m beginning to change my mind.
<p>I&#8217;ll either be getting my drivers license soon, or leaving Ottawa.
<p>Seriously.
<p align="center"></p>
<div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f34988fd-ba59-430b-a0c5-43b0ed08167d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px; text-align: center">
<div id="b400eace-4273-4acc-954d-5d72378459e6" style="margin: 0px; padding: 0px; display: inline;">
<div><a href="http://www.youtube.com/watch?v=rhsEa1NuPuQ&amp;eurl=http://www.rickcurrie.com/AV.htm&amp;feature=player_embedded" target="_new"><img src="http://annoyed.ca/wp-content/uploads/2009/01/windowslivewritermycurrentthoughtsontheoctranspobusstrike-12956video0a041c113a4c.jpg" galleryimg="no" onload="var downlevelDiv = document.getElementById('b400eace-4273-4acc-954d-5d72378459e6'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/rhsEa1NuPuQ&amp;eurl=http://www.rickcurrie.com/AV.htm&amp;feature=player_embedded\&quot;&gt;&lt;\/param&gt;&lt;param name=\&quot;wmode\&quot; value=\&quot;transparent\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/rhsEa1NuPuQ&amp;eurl=http://www.rickcurrie.com/AV.htm&amp;feature=player_embedded\&quot; type=\&quot;application/x-shockwave-flash\&quot; wmode=\&quot;transparent\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2009/01/28/my-current-thoughts-on-the-oc-transpo-bus-strike/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working from Home</title>
		<link>http://annoyed.ca/2008/12/17/working-from-home/</link>
		<comments>http://annoyed.ca/2008/12/17/working-from-home/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 03:18:45 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2008/12/17/working-from-home/</guid>
		<description><![CDATA[In case you weren&#8217;t aware, we are on day 8 of a transit strike here in Ottawa. I don&#8217;t drive (at all) so I normally rely heavily on the bus system here (which, in my mind, is top notch, when &#8230; <a href="http://annoyed.ca/2008/12/17/working-from-home/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In case you weren&#8217;t aware, we are on day 8 of a transit strike here in Ottawa. I don&#8217;t drive (at all) so I normally rely heavily on the bus system here (which, in my mind, is top notch, when it&#8217;s running). Fortunately the nature of my work (and my manager) has allowed me to work from home on most of the strike days so far.</p>
<p>I was a little worried about working from home. I wasn&#8217;t sure how productive I&#8217;d be. But as it turns out, I am more productive at home than I am in the office. Here is a quick pro and con list of my experience working from home so far:</p>
<p>Pros:</p>
<ul>
<li>I control the work environment (temperature, lighting, etc.)
<li>Quiet! I am all by myself all day (heaven for an introvert like me)
<li>More screen real-estate. At the office I have dual 17&#8243; monitors (both @ 1280&#215;1024). At home I am using a laptop (@ 1600&#215;1050), plus the laptop is hooked into my 2nd monitor via the KVM (@ 1280&#215;1024) PLUS I have my 24&#8243; monitor (@ 1920&#215;1200) connected to my home PC, which I can use for web browsing, media, etc). That&#8217;s over 5 million pixels in all!
<li>Quiet! I can get focused and stay focused (again, for an introvert, getting focused, or getting back into focus, can be difficult)
<li>Lunch and snacks are closer, and cheaper.
<li>I have full access to the office network (via VPN) and my office PC&#8217;s hard drive.
<li>Better chair than the one in my office.
<li>I can play my music as loud as I want!</li>
</ul>
<p>Cons (both relatively easy to resolve):</p>
<ul>
<li>The laptop only has 1 GB of RAM!
<li><strike>I haven&#8217;t been able to get the laptop to share my mouse and keyboard (the mouse works, but it&#8217;s laggy. No wonder though: USB Mouse -&gt; USB to PS/2 adapter -&gt; KVM -&gt; KVM Cable -&gt; PS/2 to USB adapter -&gt; laptop)</strike>. <strong>Update</strong>: Resolved via laptop docking station borrowed from the office.</li>
</ul>
<p>Here&#8217;s my home office setup:</p>
<p align="center"><a href="http://annoyed.ca/wp-content/uploads/2008/12/windowslivewriterworkingfromhome-13043img-2150-2.jpg" target="" rel="lightbox[160]"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="250" alt="IMG_2150" src="http://annoyed.ca/wp-content/uploads/2008/12/windowslivewriterworkingfromhome-13043img-2150-thumb.jpg" width="326" border="0"></a> <a href="http://annoyed.ca/wp-content/uploads/2008/12/windowslivewriterworkingfromhome-13043img-2151-2.jpg" rel="lightbox[160]"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="250" alt="IMG_2151" src="http://annoyed.ca/wp-content/uploads/2008/12/windowslivewriterworkingfromhome-13043img-2151-thumb.jpg" width="327" border="0"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2008/12/17/working-from-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Investigating a .Net Web Application&#8217;s Performance Issues</title>
		<link>http://annoyed.ca/2008/11/08/investigating-a-net-web-applications-performance-issues/</link>
		<comments>http://annoyed.ca/2008/11/08/investigating-a-net-web-applications-performance-issues/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 03:28:26 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2008/11/08/investigating-a-net-web-applications-performance-issues/</guid>
		<description><![CDATA[Yesterday my boss and I meet with a group that has been having some significant performance issues with one of their web applications. It&#8217;s a basic .Net web forms application (in C#). Their issue was that they had one page &#8230; <a href="http://annoyed.ca/2008/11/08/investigating-a-net-web-applications-performance-issues/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday my boss and I meet with a group that has been having some significant performance issues with one of their web applications.</p>
<p>It&#8217;s a basic .Net web forms application (in C#). Their issue was that they had one page that was taking upwards of 75 seconds to load! Seriously. 75 seconds! They said they were using NHibernate and they had tracked the issue down to one method that was taking up the majority of those 75 seconds. They also said they had tried some direct database (Oracle) queries that returned MUCH faster than the NHibernate.</p>
<p>We suggested that they look at caching the results of the database queries and that they confirm exactly what queries NHibernate is making on their behalf (I think they assumed it would execute the same query they had tested directly, which may or may not be the case).</p>
<p>Now I am a fan of NHibernate, and I have done some things with it that resulted in less than stellar performance, but I&#8217;ve always found tweak things to near direct database performance levels without much effort by changing/correcting some basic assumptions I had about the data and model. So when I left the meeting I felt that NHibernate had unfairly been labelled as the source of the performance issues, so I decided to have a look at the code for myself.</p>
<p>After grabbing a local copy of the code from their source control repository, I ran the code in debug mode and quickly came to the conclusion that the method they had identified as taking a long time to execute was in fact really taking a long time to execute. So I had a closer look at that method, and here (essentially) is what I saw:</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #008000">/* ... */</span>
IQuery query = CreateQuery(<span style="color: #006080">"SELECT ..."</span>);

<span style="color: #0000ff">for</span> (i = 0; i &lt; query.List().Count; i++)
{
    <span style="color: #0000ff">if</span> ((!((<span style="color: #0000ff">object</span>[])(<span style="color: #0000ff">new</span> ArrayList(query.List())[i]))[0] == <span style="color: #0000ff">null</span>)
       &amp;&amp; (!((<span style="color: #0000ff">object</span>[])(<span style="color: #0000ff">new</span> ArrayList(query.List())[i]))[2] == <span style="color: #0000ff">null</span>))
    {
        String <span style="color: #0000ff">value</span> = (((<span style="color: #0000ff">object</span>[])(<span style="color: #0000ff">new</span> ArrayList(query.List())))[2]).ToString();
    }
}
<span style="color: #008000">/* ... */</span></pre>
</div>
<p>I am &#8220;paraphrasing&#8221; a bit (the real code was worse).</p>
<p>The query.List() call returns an IList instance containing all the results of the SQL query. I don&#8217;t know if each call to query.List() actually executes the database query again (there may be some caching involved somewhere) but each call to query.List() did involve some database activity (according to my network sniffer). You notice that query.List is being called 3 times per loop (in the real code it was more like 6 times per loop)!</p>
<p>Changing this code to make one call to query.List, storing the results in a local IList variable and subsequently re-using that local variable shaved nearly 50 seconds of the response time.</p>
<p>On top of that there would also be improvements by removing the code that creates 3 ArrayLists per loop (again in the real code, 6 ArrayLists per loop), copies the IList of database results into each ArrayList, uses each of those ArrayLists to access only one single item and them discards the ArrayLists (only to recreate them again on the next loop).</p>
<p>NHibernate wasn&#8217;t the source of their problem&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2008/11/08/investigating-a-net-web-applications-performance-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Day Spent Refactoring Code</title>
		<link>http://annoyed.ca/2008/10/28/a-day-spent-refactoring-code/</link>
		<comments>http://annoyed.ca/2008/10/28/a-day-spent-refactoring-code/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 01:09:02 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2008/10/28/a-day-spent-refactoring-code/</guid>
		<description><![CDATA[I spent a good part of today refactoring some code I&#8217;ve inherited. It&#8217;s a VB.Net wrapper around some commercial address verification software. Two examples of the type of functionality the software provides are address correction and address formatting. Here is &#8230; <a href="http://annoyed.ca/2008/10/28/a-day-spent-refactoring-code/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I spent a good part of today refactoring some code I&#8217;ve inherited. It&#8217;s a VB.Net wrapper around some commercial address verification software. Two examples of the type of functionality the software provides are address correction and address formatting. </p>
<p>Here is a simplified version of three of the classes I was given to work with: Address, CorrectedAddress and FormattedAddress. An Address is what you would provide to the verification software and the other two classes would be returned from either the address correction or address formatting functionality.</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">Public</span> <span style="color: #0000ff">Class</span> Address
    <span style="color: #0000ff">Public</span> AddressLine <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
    <span style="color: #0000ff">Public</span> City <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
    <span style="color: #0000ff">Public</span> Province <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
    <span style="color: #0000ff">Public</span> PostalCode <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
    <span style="color: #0000ff">Public</span> Country <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
<span style="color: #0000ff">End</span> Class</pre>
</div>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">Public</span> <span style="color: #0000ff">Class</span> CorrectedAddress : <span style="color: #0000ff">Inherits</span> Address
    <span style="color: #0000ff">Public</span> Status <span style="color: #0000ff">As</span> CorrectedAddress.Status
    <span style="color: #0000ff">Public</span> Message <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>

    <span style="color: #0000ff">Public</span> <span style="color: #0000ff">Enum</span> Status
        Valid
        Invalid
        Corrected
        [<span style="color: #0000ff">Error</span>]
    <span style="color: #0000ff">End</span> <span style="color: #0000ff">Enum</span>
<span style="color: #0000ff">End</span> Class</pre>
</div>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">Public</span> <span style="color: #0000ff">Class</span> FormattedAddress
    <span style="color: #0000ff">Public</span> AddressLineOne <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
    <span style="color: #0000ff">Public</span> AddressLineTwo <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
    <span style="color: #0000ff">Public</span> AddressLineThree <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>

    <span style="color: #0000ff">Public</span> Status <span style="color: #0000ff">As</span> FormattedAddress.Status
    <span style="color: #0000ff">Public</span> Message <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>

    <span style="color: #0000ff">Public</span> <span style="color: #0000ff">Enum</span> Status
        Valid
        Invalid
        [<span style="color: #0000ff">Error</span>]
    <span style="color: #0000ff">End</span> <span style="color: #0000ff">Enum</span>
<span style="color: #0000ff">End</span> Class</pre>
</div>
<p>Note that CorrectedAddress inherits from Address, but FormattedAddress does not. Both CorrectedAddress and FormattedAddress have a Status and Message properties (implemented as public fields above only for brevity). The Status properties both return similar, but not identical enumerations. In the actual code there were six classes like these two, but I am focusing only on these two for simplicity.</p>
<p>The whole thing didn&#8217;t seem quite right to me, and I struggled a bit to put my finger on how this should have been implemented. But then it hit me. CorrectedAddress isn&#8217;t really an Address. It&#8217;s a result of an address correction (that happens to have an address). &#8220;Is A&#8221; versus &#8220;Has A&#8221;. Remember the oft quoted Object-Oriented design principle:</p>
<blockquote>
<p>Favour Composition over Inheritance</p>
</blockquote>
<p>So I pulled the Address class out of the inheritance hierarchy, renamed CorrectedAddress and FormattedAddress to CorrectedResult and FormattedResult respectively and even threw in some Generics stuff to deal with the similar but different Status enumerations.</p>
<p>The result (the Address class was left as-is):</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">Public</span> <span style="color: #0000ff">MustInherit</span> <span style="color: #0000ff">Class</span> Result(Of T <span style="color: #0000ff">As</span> <span style="color: #0000ff">Structure</span>)
    <span style="color: #0000ff">Public</span> Status <span style="color: #0000ff">As</span> T
    <span style="color: #0000ff">Public</span> Message <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
<span style="color: #0000ff">End</span> Class</pre>
</div>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">Public</span> <span style="color: #0000ff">Class</span> CorrectedResult : <span style="color: #0000ff">Inherits</span> Result(Of CorrectedResultStatus)
    <span style="color: #0000ff">Public</span> Address <span style="color: #0000ff">As</span> Address

    <span style="color: #0000ff">Public</span> <span style="color: #0000ff">Enum</span> CorrectedResultStatus
        Valid
        Invalid
        Corrected
        [<span style="color: #0000ff">Error</span>]
    <span style="color: #0000ff">End</span> <span style="color: #0000ff">Enum</span>
<span style="color: #0000ff">End</span> Class</pre>
</div>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">Public</span> <span style="color: #0000ff">Class</span> FormattedResult : <span style="color: #0000ff">Inherits</span> Result(Of FormattedResultStatus
    <span style="color: #0000ff">Public</span> AddressLineOne <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
    <span style="color: #0000ff">Public</span> AddressLineTwo <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>
    <span style="color: #0000ff">Public</span> AddressLineThree <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span>

    <span style="color: #0000ff">Public</span> <span style="color: #0000ff">Enum</span> FormattedResultStatus
        Valid
        Invalid
        [<span style="color: #0000ff">Error</span>]
    <span style="color: #0000ff">End</span> <span style="color: #0000ff">Enum</span>
<span style="color: #0000ff">End</span> Class</pre>
</div>
<p>Much better!</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2008/10/28/a-day-spent-refactoring-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Survived a Busy Long Weekend</title>
		<link>http://annoyed.ca/2008/10/15/i-survived-a-busy-long-weekend/</link>
		<comments>http://annoyed.ca/2008/10/15/i-survived-a-busy-long-weekend/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 00:58:19 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[Google Reader]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2008/10/15/i-survived-a-busy-long-weekend/</guid>
		<description><![CDATA[Went up to Quebec City with the family this past weekend. The wife and I both have family up there so we try to go up at least once a year (this was our second trip this year). We leave &#8230; <a href="http://annoyed.ca/2008/10/15/i-survived-a-busy-long-weekend/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Went up to Quebec City with the family this past weekend. The wife and I both have family up there so we try to go up at least once a year (this was our second trip this year).</p>
<p>We leave Friday night after work and drive as far as Trois-Rivieres, which after a full day of work and several hours in the car with the little one is far enough. We crash overnight in a hotel, then cover the last couple hours to Quebec City on Saturday morning. We spend most of Saturday with my family, then Saturday night we crash at the in-laws place. Sunday is time spent with the wife&#8217;s family, and some touristy activities. Then Monday we head back home. This time we stopped in Montreal and spent a few hours at the Bio-Dome. It&#8217;s a pretty cool place, but a little on the expensive side.</p>
<p>We got home Monday night and did nothing but unpack and watch a little TV. I spent last night and most of tonight getting caught up on 5 days worth of emails (approximately 1600, 75% spam) and my Google Reader feeds (1000+ articles). I&#8217;ve still got 900+ unread items in Google Reader.</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2008/10/15/i-survived-a-busy-long-weekend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Impressions: Rogers Video Direct (aka Zip.ca)</title>
		<link>http://annoyed.ca/2008/10/09/first-impressions-rogers-video-direct-aka-zipca/</link>
		<comments>http://annoyed.ca/2008/10/09/first-impressions-rogers-video-direct-aka-zipca/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 01:58:21 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Movies]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2008/10/09/first-impressions-rogers-video-direct-aka-zipca/</guid>
		<description><![CDATA[I&#8217;ve been a subscriber of Rogers Video Direct (a Rogers branded version of Zip.ca) for about a month now and so far it&#8217;s working out for me. Basically how it works is that you sign up for an account, choose &#8230; <a href="http://annoyed.ca/2008/10/09/first-impressions-rogers-video-direct-aka-zipca/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a subscriber of Rogers Video Direct (a Rogers branded version of Zip.ca) for about a month now and so far it&#8217;s working out for me.</p>
<p>Basically how it works is that you sign up for an account, choose a plan which dictates how many DVDs you can have out at once and how many you can have shipped to you for free each month. I started out with 3 at a time, unlimited per month, but have switched to one at a time, unlimited per month after getting a feel for exactly how long it actually takes me to watch a DVD given my schedule. Even on the 1 at a time plan there is a &#8216;Refill&#8217; feature which you can use to indicate that the DVD you&#8217;re returning is in the mail. They&#8217;ll basically send out your next DVD before before they receive the last one. In my experience I receive my next DVD the same day that they receive to previous DVD return.</p>
<p>Anyways, once you&#8217;ve signed up, you browse their selection of DVDs and add the ones you&#8217;re interested in to you ZipList. You can rank the DVDs on your list and what they do is send you the highest ranked DVD on your list that is available.</p>
<p>I am currently on my 4th DVD. I find the DVDs in my mailbox within 2 days of receiving notification that they&#8217;ve shipped and the return trip seems to take about the same time (2 days after I mail the DVD back it disappears from my current rented DVD list.</p>
<p>I&#8217;ve got years of movies to get caught-up with!</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2008/10/09/first-impressions-rogers-video-direct-aka-zipca/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feed Me&#8230; RSS</title>
		<link>http://annoyed.ca/2008/10/04/feed-me-rss/</link>
		<comments>http://annoyed.ca/2008/10/04/feed-me-rss/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 20:22:32 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Google Reader]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2008/10/04/feed-me-rss/</guid>
		<description><![CDATA[I&#8217;ve become a hard-core Google Reader user lately. It has gotten to the point where I have all the RSS feeds of my (former) daily-visit web sites plugged into Google Reader. Google Reader is setup as my start page in &#8230; <a href="http://annoyed.ca/2008/10/04/feed-me-rss/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterfeedmerss-e255image-211.png" rel="lightbox[61]"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="111" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterfeedmerss-e255image-thumb1.png" width="113" border="0"></a></p>
<p>I&#8217;ve become a hard-core Google Reader user lately. It has gotten to the point where I have all the RSS feeds of my (former) daily-visit web sites plugged into Google Reader. </p>
<p>Google Reader is setup as my start page in my browser and as a result I rarely visit any of the sites I used to visit several times per day.</p>
<p>My Slashdot and CBC news stories all appear in Google Reader, as do my daily comics, my friends sites and blog. I receive Facebook updates there too. The Globe and Mail, MySQL product releases, Stack Overflow, Wired top stories, Woot one day deals! You name it!</p>
<p>If it interests me, I will probably hear about it via Google Reader!</p>
<p><a href="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterfeedmerss-e255image-211.png" rel="lightbox[61]">&nbsp;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2008/10/04/feed-me-rss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recent Additions to my Bookshelf</title>
		<link>http://annoyed.ca/2008/10/02/recent-additions-to-my-bookshelf/</link>
		<comments>http://annoyed.ca/2008/10/02/recent-additions-to-my-bookshelf/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 01:51:14 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://annoyed.ca/2008/10/02/recent-additions-to-my-bookshelf/</guid>
		<description><![CDATA[&#160; &#160; &#160; &#160; The first 4 (Head First Design Patterns, User Stories Applied, Design Patterns and Refactoring) I have finished reading and can highly recommend, the last 4 (xUnit Test Patterns, Test-Driven Development, Code Complete and Implementation Patterns) I &#8230; <a href="http://annoyed.ca/2008/10/02/recent-additions-to-my-bookshelf/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterrecentadditionstomybookshelf-12f58image6-1.png" width="209" border="0"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterrecentadditionstomybookshelf-12f58image12-1.png" width="186" border="0"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="215" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterrecentadditionstomybookshelf-12f58image18-1.png" width="172" border="0"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterrecentadditionstomybookshelf-12f58image24-1.png" width="194" border="0"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterrecentadditionstomybookshelf-12f58image3-1.png" width="182" border="0">&nbsp; <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterrecentadditionstomybookshelf-12f58image9-1.png" width="198" border="0">&nbsp; <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="211" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterrecentadditionstomybookshelf-12f58image15-1.png" width="176" border="0">&nbsp; <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://annoyed.ca/wp-content/uploads/2008/10/windowslivewriterrecentadditionstomybookshelf-12f58image21-1.png" width="184" border="0">&nbsp; </p>
<p>The first 4 (Head First Design Patterns, User Stories Applied, Design Patterns and Refactoring) I have finished reading and can highly recommend, the last 4 (xUnit Test Patterns, Test-Driven Development, Code Complete and Implementation Patterns) I am currently reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2008/10/02/recent-additions-to-my-bookshelf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>my daughter&#8217;s first car&#8230; they grow up so fast&#8230;</title>
		<link>http://annoyed.ca/2007/06/08/my-daughters-first-car-they-grow-up-so-fast/</link>
		<comments>http://annoyed.ca/2007/06/08/my-daughters-first-car-they-grow-up-so-fast/#comments</comments>
		<pubDate>Sat, 09 Jun 2007 01:55:04 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Parenthood]]></category>

		<guid isPermaLink="false">http://annoyed.marge.bluephyre.com/?p=5</guid>
		<description><![CDATA[Someone looks excited/happy!]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-16" title="normal_dsc00285" src="http://annoyed.ca/wp-content/uploads/2008/06/normal_dsc00285.jpg" alt="normal_dsc00285" width="400" height="300" /><img class="aligncenter size-full wp-image-15" title="normal_dsc00276" src="http://annoyed.ca/wp-content/uploads/2008/06/normal_dsc00276.jpg" alt="normal_dsc00276" width="300" height="400" /></p>
<p><a href="http://annoyed.marge.bluephyre.com/wp-content/uploads/2008/06/normal_dsc00285.jpg" rel="lightbox[5]"></a></p>
<p>Someone looks excited/happy!</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2007/06/08/my-daughters-first-car-they-grow-up-so-fast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a hectic day at work&#8230;</title>
		<link>http://annoyed.ca/2007/05/10/a-hectic-day-at-work/</link>
		<comments>http://annoyed.ca/2007/05/10/a-hectic-day-at-work/#comments</comments>
		<pubDate>Fri, 11 May 2007 01:06:32 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://annoyed.marge.bluephyre.com/?p=6</guid>
		<description><![CDATA[&#8230;for everyone but me. I must have pissed lot of people off yesterday. I wasn&#8217;t included in anything today despite being the project&#8217;s senior programmer/analyst. The day just seemed to drag on&#8230;]]></description>
			<content:encoded><![CDATA[<p>&#8230;for everyone but me. I must have pissed lot of people off yesterday. I wasn&#8217;t included in anything today despite being the project&#8217;s senior programmer/analyst. The day just seemed to drag on&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2007/05/10/a-hectic-day-at-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>poof!</title>
		<link>http://annoyed.ca/2007/05/01/poof/</link>
		<comments>http://annoyed.ca/2007/05/01/poof/#comments</comments>
		<pubDate>Wed, 02 May 2007 02:06:15 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[House and Home]]></category>
		<category><![CDATA[My Blog]]></category>
		<category><![CDATA[Parenthood]]></category>

		<guid isPermaLink="false">http://annoyed.marge.bluephyre.com/?p=7</guid>
		<description><![CDATA[and just like that, the old site is back, resurrected from the ashes of daphne. some parts of the site still need some tweaking, and hopefully i&#8217;ll do that over the next few weeks. if you come across any broken &#8230; <a href="http://annoyed.ca/2007/05/01/poof/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>and just like that, the old site is back, resurrected from the ashes of daphne. some parts of the site still need some tweaking, and hopefully i&#8217;ll do that over the next few weeks. if you come across any broken links or error messages, drop a note in the comments of this post. thanks!</p>
<p>so, what have i been doing for the last 13-14 months? enjoying being a father mainly. my daughter emma was born april 6, 2006. there is nothing quite like the look on her face when you come home from a long day at work. just cheers you right up.</p>
<p>we also moved last october to a townhome, not far from where our terrace home condo was. it&#8217;s nice to have a little backyard, even if it is the size of a postage stamp!</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2007/05/01/poof/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Books to Read!</title>
		<link>http://annoyed.ca/2006/02/20/new-books-to-read/</link>
		<comments>http://annoyed.ca/2006/02/20/new-books-to-read/#comments</comments>
		<pubDate>Tue, 21 Feb 2006 01:04:17 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://annoyed.marge.bluephyre.com/?p=8</guid>
		<description><![CDATA[Amazon.ca is awesome! My orders always seem to come a week earlier than the estimate. I order on Thursday afternoon and it is sitting in my mailbox waiting for me when I get home on Monday. My first read will &#8230; <a href="http://annoyed.ca/2006/02/20/new-books-to-read/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Amazon.ca is awesome! My orders always seem to come a week earlier than the estimate. I order on Thursday afternoon and it is sitting in my mailbox waiting for me when I get home on Monday.</p>
<p>My first read will be &#8220;Freakonomics&#8221; which has been on the New York Times best-seller list (non-fiction) for 44 weeks. I&#8217;m one chapter in and already it&#8217;s an interesting read.</p>
<p>Next will be &#8220;The Mythical Man-Month&#8221;, the classic book on the human aspect of software engineering. It was first published over 30 years ago now.</p>
<p>Finally I will finish up reading my very own copy of &#8220;The Art of Project Management&#8221; which I had mentioned in an earlier post.</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2006/02/20/new-books-to-read/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;gotta kick at the darkness &#8217;til it bleeds daylight&#8221;</title>
		<link>http://annoyed.ca/2006/01/27/gotta-kick-at-the-darkness-til-it-bleeds-daylight/</link>
		<comments>http://annoyed.ca/2006/01/27/gotta-kick-at-the-darkness-til-it-bleeds-daylight/#comments</comments>
		<pubDate>Sat, 28 Jan 2006 02:14:10 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://annoyed.marge.bluephyre.com/?p=11</guid>
		<description><![CDATA[I love the Barenaked Ladies&#8217; rendition of &#8220;Lovers in a Dangerous Time&#8221;.]]></description>
			<content:encoded><![CDATA[<div class="blog_message">I love the Barenaked Ladies&#8217; rendition of &#8220;Lovers in a Dangerous Time&#8221;.</div>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2006/01/27/gotta-kick-at-the-darkness-til-it-bleeds-daylight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>recent reads</title>
		<link>http://annoyed.ca/2006/01/11/recent-reads/</link>
		<comments>http://annoyed.ca/2006/01/11/recent-reads/#comments</comments>
		<pubDate>Thu, 12 Jan 2006 01:47:57 +0000</pubDate>
		<dc:creator>Christopher Hyne</dc:creator>
				<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://annoyed.marge.bluephyre.com/?p=13</guid>
		<description><![CDATA[I thought that I would give y&#8217;all the heads up on a few good books I&#8217;ve been reading of late. &#8220;The Broker&#8221; by John Grisham: A little bit different from most of his other books in that this one is &#8230; <a href="http://annoyed.ca/2006/01/11/recent-reads/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I thought that I would give y&#8217;all the heads up on a few good books I&#8217;ve been reading of late.</p>
<p>&#8220;The Broker&#8221; by John Grisham: A little bit different from most of his other books in that this one is almost a spy story, rather than a legal/political one. Though the main character is an ex-lawyer, so I guess it&#8217;s not that different. But I found it gripping. I couldn&#8217;t put it down and finished from cover to cover in a few days.</p>
<p>&#8220;God&#8217;s Debris&#8221; by Scott Adams (of &#8220;Dilbert&#8221; fame): Adams describes it as a &#8220;thought experiment&#8221;. I found it to be a really interesting read, and polished it off in a few days as well. This one is available <a href="http://www.andrewsmcmeel.com/godsdebris/" target="_blank">free online.</a></p>
<p>&#8220;The Art of Project Management&#8221; by Scott Berkun: This one is, of course, non-fiction. Written by an ex-Microsoftee it&#8217;s definitely written from a IT project management point of view, but the author is quick to note that much of the advice applies to managing other types of projects. I found it well written and easy to read with lots of useful advice.</p>
<p>&#8220;.Net Gotchas&#8221; by Venkat Subramaniam: Pretty heavy technical reading. If you really want to become a .Net guru it a good read. You really need to be able to focus on the text when you read it and you should have a fairly good knowledge of the .Net framework to get the most from this book.</p>
]]></content:encoded>
			<wfw:commentRss>http://annoyed.ca/2006/01/11/recent-reads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

