<?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>OJ's rants &#187; WTF</title>
	<atom:link href="http://buffered.io/category/wtf/feed/" rel="self" type="application/rss+xml" />
	<link>http://buffered.io</link>
	<description>What would OJ do?</description>
	<lastBuildDate>Mon, 06 Sep 2010 09:30:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Wrong Decision by the Wrong Person</title>
		<link>http://buffered.io/2010/01/28/the-wrong-decision-by-the-wrong-person/</link>
		<comments>http://buffered.io/2010/01/28/the-wrong-decision-by-the-wrong-person/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 12:35:29 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Being in the Industry]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[WTF]]></category>
		<category><![CDATA[bad decisions]]></category>
		<category><![CDATA[software developer]]></category>

		<guid isPermaLink="false">http://buffered.io/?p=796</guid>
		<description><![CDATA[There is one thing about my industry that I still find truly amazing (and not in a good way). This is despite the fact that it has happened to me so many times that you think I'd be used to it! I'm talking about non-technical people making technical decisions. For some reason, it's a very [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://buffered.io/wp-content/uploads/2010/01/pizza.jpg" title="The wrong tool." rel="lightbox"><img src="http://buffered.io/wp-content/uploads/2010/01/pizza.jpg" alt="The wrong tool." title="The wrong tool." style="float:right; margin-left:5px; margin-bottom:5px;"  width="150"/></a>There is one thing about my industry that I still find truly amazing (and not in a good way). This is despite the fact that it has happened to me so many times that you think I'd be used to it! I'm talking about non-technical people making technical decisions.</p>
<p>For some reason, it's a very common practice for those people who don't have expertise in a certain field to make decisions for people working in that field. The best example I can think of off the top of my head is the answer to the question: <em>"Which technology should we use?"</em></p>
<p>Let me take a step back in time for a moment. </p>
<p>I applied for a job with a certain company (which shall remain nameless) that was looking for a number of C#/.NET developers of a certain level of experience. After confirming an interview date and time, I turned up to find myself facing a panel of 3 interviewers. One of those people held a technical position, though I found out later that the position he held was self-appointed and certainly not an indication of the person's level of technical knowledge or expertise. The other two were in non-technical positions.</p>
<p>During the interview we had the usual discussions and questions around technial knowledge, depth of understanding of certain areas of the .NET framework, views and approaches to dealing with people in teams, agile experience, etc. It all went very well. At the end of the interview I was given my chance to ask a few questions. The main one I wanted to ask was <em>"Why did you decide to use .NET for this project?"</em></p>
<p>For the record, the <em>previous</em> version of the system was written using an older Microsoft technology stack. The decision had been made to go with .NET for this new version. Can you see the correlation?</p>
<p>The answer was quite stunning. The only reason the project was using .NET was because the previous version was a Microsoft-based solution.</p>
<p>The first thing I thought was "surely that can't be it?". As a matter of fact, that wasn't the <em>only</em> reason for it, but it was the <em>main</em> reason. The decision wasn't made by a technical person, it was made by someone in upper management.</p>
<p>Scary huh!?</p>
<p>In my personal opinion, there is one particular technology that I think would have done a much better job of solving this particular problem, and it's not a Microsoft solution. It's not a Sun solution, or any other mainstream option for that matter. In my view, <strong>Erlang</strong> would have been perfect.</p>
<p>I don't think that a company like that would have ever even considered Erlang as a viable option. Mainly for two reasons. The first is that the amount of skilled Erlang developers available on the East Coast of Australia is extremely small. The second is fear of the unknown/non-mainstream tech. That is, companies like to go with what other companies are going with.</p>
<p>The crazy thing about this scenario is that management go to market to hire people who are domain experts, and then proceed to tell them which technologies to use. Surely you would be better off hiring people to know how to solve problem X really well, and then listen to what they have to say about the technology stack that should be put in place? No, not in this industry. Probably not in my lifetime either!</p>
<p>So if you're a non-tech person leading a team of techies, please PLEASE listen to what they have to say. Ask them what they think is the right approach and the right toolset. Don't take control of the technical decisions. Let them do what you hired them to do: Solve the problem, and use the right tool for the job. If they don't know the answer, or the answer is always the same, then you've got the wrong developers.</p>
<p>Thanks for listening <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2010/01/28/the-wrong-decision-by-the-wrong-person/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>I Don&#8217;t Need Your Frickin&#8217; Framework!</title>
		<link>http://buffered.io/2009/04/13/i-dont-need-your-frickin-framework/</link>
		<comments>http://buffered.io/2009/04/13/i-dont-need-your-frickin-framework/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 04:09:39 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Being in the Industry]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[WTF]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[bloat]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[overengineering]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://buffered.io/?p=682</guid>
		<description><![CDATA[How many companies have you worked with/for that have their own framework? How many have been in the process of developing their own framework? How many have been in the process of redeveloping their own framework? How many have taken another framework and hacked improved it? When I attempt to answer the questions listed above, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://buffered.io/wp-content/uploads/2009/04/scaffold_fail.jpg" title="Scaffold Fail" rel="lightbox[682]"><img src="http://buffered.io/wp-content/uploads/2009/04/scaffold_fail.jpg" alt="Scaffold Fail" title="Scaffold Fail" width="200" style="float: right; margin-left: 5px; margin-bottom: 5px;" /></a>How many companies have you worked with/for that have their own framework? How many have been in the process of developing their own framework? How many have been in the process of <strong>re</strong>developing their own framework? How many have taken another framework and <del>hacked</del> improved it?</p>
<p>When I attempt to answer the questions listed above, I start to shiver. I feel the need to burn my clothes and take a very long shower. </p>
<p>In the early days of my career, frameworks were few and far between. These days it is no longer the case. An alarming number of companies are carrying the burden of their own frameworks. A huge number of private and public sector organisations are <em>currently paying people to write new frameworks</em>! For some reason, many naïve project managers and team leads feel the need to invest a great deal of time and <abbr title="Cash">moolah</abbr> into building the next-generation, latest-and-greatest, all-singing-all-dancing, cover-every-possible-web-and-rich-client-case framework before they start to do what they're being paid to do: <strong>solve a business problem</strong>.</p>
<p>The last job I worked on was one of those places. On my first day I was told that the project team (which at that point was just 2 of the 6 developers) were building a new framework. They were also building a code generator that used this framework. This dynamic duo of programs would be used in conjunction with each other to build any kind of application under the sun. It would solve all of the issues without the developer having to think, all while making poverty history.</p>
<p>What a joke. The code generator was never finished and the framework was never used. The money that was intended to be burned while <em>adding more features to an existing application</em> disappeared in a blur of <a href="http://en.wikipedia.org/wiki/Greenfield_project" title="">Greenfield</a> over-engineering of a framework that simply <strong>was not required</strong>.</p>
<p>This kind of problem happens so much these days, and it's just appalling. What I want to say is: <em>I am <a href="http://www.urbandictionary.com/define.php?term=frickin" title="">frickin'</a> tired of it!</em></p>
<p>The example I mentioned above is probably the worst I've seen for a while. I'd love to go into a fair bit of depth to uncover some "interesting" features of the framework, but it's not worth it. I <em>would</em> like to highlight just a few points about it though:</p>
<ul>
<li>It was based on <a href="http://www.lhotka.net/cslanet/" title="CSLA">CSLA</a>, which is already a rather large framework that attempts to do way too much via an enormous amount of code. The author decided that some parts of CSLA weren't good enough and hence needed to be "improved". The "improvements" were atrocious.</li>
<li>It was supposed to be Open Source, but as far as I'm aware it never made it onto the Web, hence I can't point you at it.</li>
<li>In some areas of code, you were required to invoke functions through a generic <kbd>MessagePortal</kbd> helper object which invoked the required function via reflection after attempting to infer a stack of unnecessary information. This was interesting, as you knew what you needed to call. But you still had to pass in function names as string parameters, hence losing knowledge, and wait for the framework to regain that knowledge by inspecting the code at runtime. Even though the excessive use of reflection was &lt;sarcasm&gt;an obvious win&lt;/sarcasm&gt;, we also copped the added bonus of having another 35 (yes, that's right <strong>35</strong>) function calls appearing in our call-stack.</li>
<li>Those developers who attempted to use it were bitten constantly by esoteric and undocumented pitfalls in the design.</li>
<li>It took around 3 times longer during development to do the "basics" (such as create objects and have them load from a DB). This is compared to using no framework and loading objects manually via ADO.</li>
<li>It was unable to load any form of object graph.</li>
<li>It not only leaked database connections every time you made a database call, it leaked <em>two extra connections</em> during start-up while it attempts to read some database information, such as schema, into memory.</li>
<li>The code generator was written in such a way that the first half of the generator would be used to generate the other half (epic fail)!</li>
<li>The author wasn't able to use it.</li>
</ul>
<p>I hence conclude that this framework was a large, unwieldy, bloated, over-engineered, slow and riddled with design flaws. This is all for something that was actually totally unnecessary. Why? ...</p>
<p>.. because this was <strong>"The Framework" v2.0!</strong> Yup, it was the second version. The first was also a dog's breakfast, but at least it was finished.</p>
<p>So what's my point? Am I trying to say that use of <em>any</em> framework is bad? Having helper libraries and well-designed platforms to build on are an epic fail?</p>
<p>Most definitely not. What I am saying is this: there are people out there with minds immeasurably superior to ours who have already done a better job of solving this problem. Stop writing your own frameworks. Stop writing code generators. There are already options out there.</p>
<p>So to all of you wannabe framework developers: stop what you're doing. You're wasting cash and not adding value. We've already got a framework. It's called <strong>Microsoft .NET</strong>. Now get out of the way and let me use it!</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2009/04/13/i-dont-need-your-frickin-framework/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Always Question the Source (aka &#8220;Don&#8217;t Lock on Type Objects&#8221;)</title>
		<link>http://buffered.io/2009/02/10/always-question-the-source-aka-dont-lock-on-type-objects/</link>
		<comments>http://buffered.io/2009/02/10/always-question-the-source-aka-dont-lock-on-type-objects/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 11:22:27 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[WTF]]></category>
		<category><![CDATA[assumptions]]></category>
		<category><![CDATA[lock]]></category>
		<category><![CDATA[multithreading]]></category>
		<category><![CDATA[stupidity]]></category>

		<guid isPermaLink="false">http://buffered.io/?p=623</guid>
		<description><![CDATA[For one reason or another, I recently found myself perusing some code based on the CSLA framework. While nosing around I came upon a snippet of code that I found rather disturbing. An example can be found here in the function called InitializeAuthorizationRules. For those who are lazy, here is the particular snippet of code [...]]]></description>
			<content:encoded><![CDATA[<p>For one reason or another, I recently found myself perusing some code based on the <a href="http://www.lhotka.net/cslanet/" title="CSLA">CSLA</a> framework. While nosing around I came upon a snippet of code that I found rather disturbing. An example can be found <a href="http://www.lhotka.net/cslacvs/viewvc.cgi/trunk/cslacs/Csla/Core/BusinessBase.cs?revision=3690&#038;view=markup" title="BusinessBase.cs">here</a> in the function called InitializeAuthorizationRules.</p>
<p>For those who are lazy, here is the particular snippet of code that caught my eye:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">lock</span> <span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">GetType</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
  <span style="color: #008080; font-style: italic;">// .. stuff ..</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>If you want to see more, head over there and read up. There are quite a few instances of the code listed above.</p>
<p>So why is this disturbing? If you're not sure of the answer, take a bit of time to go and read up on C#'s <a href="http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx" title="lock Statement (C# Reference)">lock</a> keyword. When you're done, ask yourself "what kind of object should I be using alongside the lock keyword?".</p>
<p>If the answer escapes you, then toodle over to <a href="http://www.mail-archive.com/bdotnet@groups.msn.com/msg06816.html" title="Why Lock(typeof(ClassName)) or SyncLock GetType(ClassName) Is Bad">this little doozy</a> for a blow by blow account. I'll quote a rather gifted developer friend of mine (who for now shall remain anonymous) who summed up nicely one of the issues that could occur if the above code makes it into your code base:</p>
<blockquote><p>This is terrible, terrible, terrible.</p>
<p>Good luck with the cross-appdomain deadlock which brings down prod and can't be diagnosed without 2 weeks behind windbg.</p>
</blockquote>
<p> Soooo true.</p>
<p>Now that you know it's bad you might be wondering how a framework like CSLA managed to get polluted by it. Time to speculate!</p>
<p>You may have noticed that the article I linked above mentions that the practice of locking type objects was actually demonstrated/advocated on MSDN:</p>
<blockquote><p>
This is even done in MSDN sample, makuing it the holy grail.<br />
.<br />
.<br />
Rico Mariani, performance architect for the Microsoft® .NET runtime and longtime<br />
Microsoft developer, mentioned to Dr. GUI in an e-mail conversation recently that a<br />
fairly common practice (and one that's, unfortunately, described in some of our<br />
documentation right now, although we'll be fixing that) is actually quite problematic.
</p>
</blockquote>
<p><em>Note: Spelling mistakes and awful grammar in the quote above are, for once, not my fault.</em></p>
<p>I'm guessing that the author(s) of CSLA were reading up on some multithreading documentation on MSDN and came across a sample which demonstrated locking type objects as shown above. Since they were reading MSDN, the apparent Bible for all things .NET, they may have assumed that whatever they saw could be taken as Gospel.</p>
<p>Unfortunately, no resource is perfect. Not even MSDN.</p>
<p>This is where I have my gripe. The authors of <strong>any</strong> software should <strong>always</strong> critique <strong>all</strong> of the code they come across during the course of development. Whether they wrote it themselves, got it from MSDN, read it on a blog site while researching or saw it in a book written by the author of the language. <em>NEVER EVER</em> assume that the code you are reading is 100% sound.</p>
<p>If the authors had thought about the <em>meaning</em> of the lock statement and had an understanding of exactly what <a href="http://msdn.microsoft.com/en-us/library/system.object.gettype.aspx" title="Object.GetType Method">GetType()</a> does (ie. always returns the <em>same</em> reference when called on the same type), then perhaps they might have figured out that using a lock on something that's accessible from <strong>any object in the process</strong> is a bad idea. It is opening the door for potential deadlocks if somebody else decides to do the same.</p>
<p>So I say again: <em>do not assume that the code you get off the Internet is safe!</em> Scrutinise it. Pull it to pieces. Understand it. Then, if all is safe and you're still comfortable with it, consider using it in your software. Don't assume that the author of the code knows what they're doing...</p>
<p>... unless it's me of course <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_wink.png' alt=';)' class='wp-smiley' /> </p>
<p>
<!-- Begin Google Adsense code -->
<p><center>
<script type="text/javascript"><!--
google_ad_client = "pub-5662448744756930";
/* 468x60, created 2/11/09 */
google_ad_slot = "8047929723";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></center></p>
<!-- End Google Adsense code -->
</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2009/02/10/always-question-the-source-aka-dont-lock-on-type-objects/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>The Admin is an Idiot</title>
		<link>http://buffered.io/2008/12/27/the-admin-is-an-idiot/</link>
		<comments>http://buffered.io/2008/12/27/the-admin-is-an-idiot/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 02:51:11 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WTF]]></category>
		<category><![CDATA[idiot]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://buffered.io/?p=593</guid>
		<description><![CDATA[Yes, and that admin is me! I usually do a fairly decent job of keeping the server patched, up to date, and clean. Over the Xmas period where I wasn't really looking at anything online, something went wrong. I logged on this morning only to find that the server wasn't responding. I could connect via [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, and that admin is me!</p>
<p>I usually do a fairly decent job of keeping the server patched, up to date, and clean. Over the Xmas period where I wasn't really looking at anything online, something went wrong.</p>
<p>I logged on this morning only to find that the server wasn't responding. I could connect via SSH, but nothing was being served via HTTP. So I tried to reboot <a href="http://litespeedtech.com/" title="LiteSpeed technologies">LiteSpeed</a> to see if that would resolve it (as you do <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_wink.png' alt=';)' class='wp-smiley' /> ). The service stopped, but failed to restart! </p>
<p>I was a bit concerned when this happened. So I thought I'd check to see if there were any server updates (in case there was a known issue preventing the server from working). I found that there had been an update, so I jumped to my first conclusion and assumed that this was broken. I attempted to download the new version onto my <a href="http://en.wikipedia.org/wiki/Virtual_private_server" title="Virtual Private Server">VPS</a>, but it failed. The error message said that it couldn't download the file because I was out of disk space!</p>
<p>A quick run of <a href="http://www.computerhope.com/unix/udf.htm" title="Linux 'df' command">df</a> told me that the error message was indeed correct. 19GB out of 19GB was used. Crap.</p>
<p>I then jumped to my second conclusion and immediately blamed <a href="http://en.wikipedia.org/wiki/Portage_(software)" title="Portage">portage</a> for downloading too much stuff that it didn't need. After a quick <a href="http://linuxlore.blogspot.com/2007/04/howto-cleanup-gentoo-portage-distfiles.html" title="Clean up Gentoo Portage Distfiles">eclean</a> I was presented with a huge saving of 350MB. Crap.</p>
<p>I then had to fall back on <a href="http://www.computerhope.com/unix/udu.htm" title="Linux 'du' command">du</a> (<em>du -h --max-depth=1</em> to be exact) to try and narrow down the folder(s) which were chewing up disk space.</p>
<p>To cut a long story short, there were two culprits. The first was the linux source folder. I had 15 copies of the Gentoo source in there, and freed up 4.7GB by deleting 13 of them. The second was, much to my shame and dismay, the web server log files folder. Oh woe is me.</p>
<p>Schoolboy error. I scrapped all the unnecessary logs and freed up yet another 5.6GB. Amazingly, everything has started behaving itself again! Who'd have thought.</p>
<p>So the server is now back online. Normality has been restored. I also have more proof that I'm an idiot.</p>
<p>That is all <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2008/12/27/the-admin-is-an-idiot/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Epic Fail &#8211; Cuil Search Engine</title>
		<link>http://buffered.io/2008/07/29/epic-fail-cuil-search-engine/</link>
		<comments>http://buffered.io/2008/07/29/epic-fail-cuil-search-engine/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 22:55:52 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Fail]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[WTF]]></category>
		<category><![CDATA[hype]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://buffered.io/?p=435</guid>
		<description><![CDATA[Don't believe the hype. EPIC FAIL Mike G and Dare are dead right.]]></description>
			<content:encoded><![CDATA[<p>Don't believe the <a href="http://www.hurricanesoftwares.com/2008/07/28/ex-google-engineers-launched-cuil-a-better-search-engine/" title="Cuil">hype</a>.<br />
<div id="attachment_436" class="wp-caption aligncenter" style="width: 510px"><img src="http://buffered.io/wp-content/uploads/2008/07/cuil_fail.png" alt="EPIC FAIL" title="Cuil" width="500" height="227" class="size-full wp-image-436" /><p class="wp-caption-text">EPIC FAIL</p></div></p>
<p><a href="http://twitter.com/MikeG1/statuses/870514922">Mike G</a> and <a href="http://twitter.com/Carnage4Life/statuses/870561061">Dare</a> are dead right.</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2008/07/29/epic-fail-cuil-search-engine/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>HRM Revenue &amp; Customs &#8211; Idiots!</title>
		<link>http://buffered.io/2008/03/20/hrm-revenue-customs-idiots/</link>
		<comments>http://buffered.io/2008/03/20/hrm-revenue-customs-idiots/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 12:07:02 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://buffered.io/2008/03/20/hrm-revenue-customs-idiots/</guid>
		<description><![CDATA[Today I received a nice letter from HRM Revenue &#038; Customs (yet another site that doesn't work without being prefixed with "www"). It states: Notice of determination of penalty for a late Tax Return for the tax year ended 5 April 2007. I did not receive your Tax Return by the due date so you [...]]]></description>
			<content:encoded><![CDATA[<p>Today I received a nice letter from <a href="http://www.hrm.gov.uk/">HRM Revenue &#038; Customs</a> (yet another site that doesn't work without being prefixed with "www"). It states:</p>
<blockquote><p>Notice of determination of penalty for a late Tax Return for the tax year ended 5 April 2007.</p>
<p><em>I did not receive your Tax Return by the due date so you are liable to a penalty.</em></p>
</blockquote>
<p>Oh how nice! Upon reading further I found out the following information:<br />
<blockquote>
<p>As a result the penalty imposed on you under Secxtion 93(2) of the Taxes Management Act 1970 is &pound;100.00</p>
</blockquote>
<p>This "fine" comes to around $217 Australian. Happy Easter eh!? </p>
<p>But wait, there's more!<br />
<blockquote>
<p>If you want to appeal you must do so:
<ul>
<li>in writing, <strong>and</strong></li>
<li>within <em>30</em> days of the date of this Notice</li>
</ul>
</blockquote>
<p>See if you can guess what the "date of notice" is? Wait for it.... <strong>Date 19 FEBRUARY 2008</strong></p>
<p>Awesome! So I've already missed the deadline to whinge about it, purely because I'm on the other side of the planet. I wonder what it means for me now that I have missed the deadline...<br />
<blockquote>
<p><strong>Penalites for late Tax Returns</strong></p>
<ul>
<li>A penalty of &pound;100 is imposed automatically if the Tax Return has not been received by the due date.</li>
<li>A further &pound;100 penalty is imposed automatically if the Tax Return has still not been received 6 months later.</li>
<li>Further penalties up to a maximum of &pound;60 a day can also be imposed.</li>
<li>If the Tax Return is more than 12 months late there can be a penalty up to the amount of tax payable for the year.</li>
</ul>
</blockquote>
<p>So I could be up for some serious fines then! Awesome, just what I wanted to hear.</p>
<p>By now you're probably wondering why I'm blogging about this. Well the answer is simple. Before you read on you need to bear in mind the following:
<ol>
<li>The U.K. Tax Year goes from the beginning of April, through to the end of March the following year.</li>
<li>This notice is stating that I'm being fined for not submitting a Tax Return for the tax year that ended April 2007 - which means it's for the tax year of 5th April 2006, to the 4th April 2007</li>
</ol>
<p>Amy and I flew back to Australia on March 24th 2006. I stopped work in the U.K. on the 3rd March 2006. I had a Tax Return done for the last year I was there while I was at home. How the f*** can I possibly be in need to submit a Tax Return for a tax year that I had <strong>absolutely nothing to do with!??!</strong> I wasn't even in the country! Now I have the fun job of chasing it up from the other side of the planet, which will no doubt take ages due to the "efficiency" of the U.K. Government workers. What a joke.</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2008/03/20/hrm-revenue-customs-idiots/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Reactivate? AGAIN!?</title>
		<link>http://buffered.io/2007/12/27/reactivate-again/</link>
		<comments>http://buffered.io/2007/12/27/reactivate-again/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 02:29:45 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Digital Rights]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[WTF]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://buffered.io/2007/12/27/reactivate-again/</guid>
		<description><![CDATA[This is just a quick post to say how much Microsoft and their draconian OS licensing mechanism are pissing me off right now. Last week my computer stopped booting. I didn't get around to looking at it until a few days ago because I had visitors over from the UK. Not just that, it is [...]]]></description>
			<content:encoded><![CDATA[<p>This is just a quick post to say how much Microsoft and their draconian OS licensing mechanism are pissing me off right now.</p>
<p>Last week my computer stopped booting. I didn't get around to looking at it until a few days ago because I had visitors over from the UK. Not just that, it is Christmas, and the last thing you want to be doing on your Christmas break is to be fixing computers. </p>
<p>I spent an hour or two playing with bits and pieces to try and determine the error. The problem was that the third <a href="http://en.wikipedia.org/wiki/DIMM" title="DIMM">DIMM</a> slot on <a href="http://us.dfi.com.tw/Product/xx_product_spec_details_r_us.jsp?PRODUCT_ID=4556&#038;CATEGORY_TYPE=LP%20UT&#038;SITE=NA" title="DFI Lanparty CFX3200-DR">my motherboard</a> (which, incidentally, has been a bit of a nightmare since I bought it) is dodgey. I removed a 512MB RAM stick from the offending slot over to slot two and the machine started to come alive again. I was pretty happy about this, despite the reduction in RAM speed due to the configuration, since I didn't need to buy anything to make it work again!</p>
<p>So I left the machine for a couple of days again as I was happy with what I achieved. But today, because the study was in a bit of a state due to the bits of computers, manuals, and various other things I'd strewn around the room while investigating, I thought I'd finalise everything and tidy up.</p>
<p>Since my computer case was open, I thought I'd do a bit of housekeeping. I wasn't really happy with the way it was laid out inside so I thought I'd tidy that up a bit first. I removed <a href="http://www.linksys.com/servlet/Satellite?c=L_Product_C2&#038;childpagename=US%2FLayout&#038;cid=1150490054358&#038;pagename=Linksys%2FCommon%2FVisitorWrapper" title="Linksys WMP54G">my WLAN card</a> because it was flaky at best in 64-bit, and I'd had enough of the lag spikes (time to go back to cabled LAN). I moved <a href="http://www.hisdigital.com/html/product_ov.php?id=217" title="HIS Radeon x1900xtx">my video card</a> to a different slot to create a bit more space between it and <a href="http://www.scythe-usa.com/product/cpu/006/scnj1000p.html" title="Ninja Scythe">my HSF</a> (which is awesome, and does a great job even if it is a behemoth!). I also adjusted the fans a bit, cleaned up a lot of the dust, and moved a few of the cables around to improve air-flow.</p>
<p>So with all that done, I fired up the machine.</p>
<p>.. and got nothing. <strong>Shit</strong>.</p>
<p>The investigation started again. I thought that I'd go right for the previous culprit and rip out the RAM stick that I'd moved to see if that would resolve the problem. Thankfully, it did. So right now I'm running on 1/2GB RAM, not ideal to say the least but the machine is booting which is a lot better than it not.</p>
<p>The machine booted, and up came windows. It was at this point that I remember it telling me that a few days back it wanted me to reactivate Windows because of a <em>substantial change in hardware</em>. Of course, I ignored this stupid box because at the time I hadn't changed <strong>anything</strong>. I'd <em>moved a RAM stick</em>!</p>
<p>But today, it greeted me again. This time the message was different. In essense, my 3-day "window" of reactivation had expired, and I was being forced to reactivate it now. And I do mean <strong>now</strong>. Now as in right now before I was allowed to log on. Oh, but there's a problem here you see, because prior to logging on, there's no network connection. So when you try and activate Windows before logging on, it can't activate over the Interweb because it can't get to it. Of course, the activation fails. But does it let me log in? No. What does it do? I ties itself into an infinite loop of ...
<ol>
<li>Try to log in.</li>
<li>Fail because it's not activated.</li>
<li>Try to activate.</li>
<li>Fail to activate because it's not logged in and hence can't connect.</li>
<li>Goto step 1.</li>
</ol>
<p>Not happy. Not happy at all. Not only had I <strong>not</strong> changed any hardware in the system (all I'd done is move it around, and remove a WLAN card) to force the reactivation, I am now stuck with a machine that won't let me log in. Nice eh?</p>
<p>Here's a nice little side-note for the Linux fanboys <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> (yes, you know who you are). For yonks, a slight modification in anything to do with the video hardware in my machine would result in my linux graphics setup shitting itself. I'd then have to spend a chunk of the day trying to get it to work again with my dual-screen setup. But not this time. I'd mucked around with everything inside the machine, and what happened when I booted Linux??</p>
<p>Wait for it... WAIT FOR IT!</p>
<p>Nothing. It booted as if nothing had changed. Video settings were the same. Dual-screen worked. I sat here a little stunned for a while and I was brought back from my daze by the little blinking icon in the system tray telling me that I had updates to download. The network had connected, and everything was sweet.</p>
<p>See that Microsoft? Right there. <strong>That</strong> is what <em>should</em> happen. Nothing more, nothing less. When I reboot after a hardware change, I expect you to continue as if nothing had happened. I expect the network to connect without me dicking with it. I expect a nice little "Hello OJ, you legend, how else can I make your life easy today?"</p>
<p>So hats off to you <a href="http://www.linuxmint.com/" title="LinuxMint">LinuxMint</a>. You made my day! Now, if only you hadn't borked my Firefox install <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> Time to update you to the last version me thinks, and give you a bit of the love and attention that you deserve.</p>
<p>As a final note, it looks like I'm going to have to buy some new RAM, and while I'm there I'm going to ditch this UK keyboard as it has been driving me nuts for the last year and half. Time to get back to the Aussie (some might say US) layout.</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2007/12/27/reactivate-again/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Rancid Bloatware</title>
		<link>http://buffered.io/2007/11/01/rancid-bloatware/</link>
		<comments>http://buffered.io/2007/11/01/rancid-bloatware/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 02:53:04 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Freeware]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WTF]]></category>
		<category><![CDATA[bloatware]]></category>

		<guid isPermaLink="false">http://buffered.io/2007/11/01/rancid-bloatware/</guid>
		<description><![CDATA[I'd love to know what on earth got into Adobe's head when they decided to turn their PDF reader into a stinking pile of sluggish bloatware? Who here remembers the old days when the Adobe Reader download was less than 10MB? Take a look at the details on their current download page (which I was [...]]]></description>
			<content:encoded><![CDATA[<p>I'd love to know what on earth got into <a href="http://www.adobe.com/" title="Adobe">Adobe's</a> head when they decided to turn their <a href="http://www.adobe.com/products/reader/" title="Adobe Reader">PDF reader</a> into a stinking pile of sluggish bloatware? Who here remembers the old days when the Adobe Reader download was less than 10MB?</p>
<p>Take a look at the details on their current <a href="http://www.adobe.com/products/acrobat/readstep2.html" title="Reader Download">download page</a> (which I was recently forced to visit because of a <a href="http://www.theregister.co.uk/2007/10/26/new_gozi_strain/print.html" title="New Strain of Gozi Trojan Prowls the Net">security flaw</a> in the Reader's functionality that has now been patched): </p>
<blockquote><p><b>New Adobe Reader 8<br />
</b>
<ul>
<li>Work <i>smarter</i> - a clean new look, custom toolbars and an RSS reader</li>
<li>Work <i>faster</i> - 2D acceleration (requires video card support, Win only)</li>
<li>Work <i>together</i> - new online conferencing with Acrobat Connect</li>
</blockquote>
<p>WTF? I want a simple, fast PDF reader...
<ul>
<li>Do I want custom toolbars? Actually, no, I don't. I want a single standard one with a few helpful buttons, and that's it.</li>
<li>Do I want an RSS reader? <strong>HELL NO!</strong> Give me a SMALL download. If I want a local RSS reader, I'll go grab one. Otherwise I'll stick to tools like <a href="http://www.google.com/reader/view/" title="Google Reader">Google Reader</a>.</li>
<li>Do I want online conferencing from a bloody PDF viewer? No, I most certainly do not.</li>
</ul>
<p>I don't see the reasoning behind all this crap. It's another example of software going off the rails. The authors are just trying to squeeze in too many features. A PDF reader is <em>not</em> a platform for collaboration or communication. It should render a document for me to read. That's about it. What makes it worse is that they claim it to be fast, but it's not!</p>
<p>On top of this, you have to have some shitty little Adobe Agent running all the time, which undoubtedly gives this application the "amazing speed" they seem to be talking about.</p>
<p>For another kick in the nuts, they require you to <strong>reboot</strong> your machine after installation! Oh. My. God. Why?!</p>
<p>Here's the icing on the cake...<br />
<blockquote>
<p>Adobe Reader 8.1.1 - 22.3MB</p>
</blockquote>
<p>Holy crap. <em>22.3MB</em>!! What a joke. That's an obscenely large download for a document viewer. People wonder why I stick to <a href="http://www.foxitsoftware.com/pdf/rd_intro.php" title="Foxit Software">Foxit Reader</a>?! It's fast, it has all the functionality I need, and it's only <u>2.1MB</u>. That's what we need more of. Software that's small, functional and hits a point of pain, nothing more.</p>
<p>So, other than the obvious candidates (Windows, Norton Product Suite, etc) what bloatware have you suffered lately?</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2007/11/01/rancid-bloatware/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>WTF: Random Memory Contents</title>
		<link>http://buffered.io/2007/09/03/wtf-random-memory-contents/</link>
		<comments>http://buffered.io/2007/09/03/wtf-random-memory-contents/#comments</comments>
		<pubDate>Mon, 03 Sep 2007 05:40:45 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://buffered.io/2007/09/03/wtf-random-memory-contents/</guid>
		<description><![CDATA[If any of you out there are able to give me ONE GOOD REASON why anyone would do something like this, then please let me know. Below are "customised" realloc() and malloc() I recently stumbled across (yes, they get called. A LOT): void *mcRealloc&#40; void *P, int SIZE &#41; &#123; int oldSize = _msize&#40; P [...]]]></description>
			<content:encoded><![CDATA[<p>If any of you out there are able to give me <strong>ONE GOOD REASON</strong> why <em>anyone</em> would do something like this, then please let me know. Below are "customised" realloc() and malloc() I recently stumbled across (yes, they get called. A <strong>LOT</strong>):</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>mcRealloc<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>P, <span style="color: #0000ff;">int</span> SIZE <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  <span style="color: #0000ff;">int</span> oldSize <span style="color: #000080;">=</span> _msize<span style="color: #008000;">&#40;</span> P <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
  P <span style="color: #000080;">=</span> <span style="color: #0000dd;">realloc</span><span style="color: #008000;">&#40;</span> P, SIZE <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> P <span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> oldSize<span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> SIZE<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span> <span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
      <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> P<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
  <span style="color: #008000;">&#125;</span>
&nbsp;
  <span style="color: #0000ff;">return</span> P<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>mcMalloc<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> SIZE <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>P<span style="color: #008080;">;</span>
&nbsp;
  P <span style="color: #000080;">=</span> <span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span> SIZE <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> P <span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> SIZE<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span> <span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
      <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> P<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
  <span style="color: #008000;">&#125;</span>
&nbsp;
  <span style="color: #0000ff;">return</span> P<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Is it just me, or is this a <strong>huge</strong> WTF?</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2007/09/03/wtf-random-memory-contents/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Biosham &#8482;</title>
		<link>http://buffered.io/2007/08/23/biosham/</link>
		<comments>http://buffered.io/2007/08/23/biosham/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 06:20:32 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Being in the Industry]]></category>
		<category><![CDATA[Digital Rights]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://buffered.io/2007/08/23/biosham/</guid>
		<description><![CDATA[I can fully understand the desire a developer has to protect their creation from being copied illegally. I can understand why some steps would be taken to mitigate the risk of losing money due to piracy. What I can't understand is why some companies go so far with their anti-piracy measures that it starts to [...]]]></description>
			<content:encoded><![CDATA[<p>I can fully understand the desire a developer has to protect their creation from being copied illegally. I can understand why some steps would be taken to mitigate the risk of losing money due to piracy. What I can't understand is why some companies go <em>so far</em> with their anti-piracy measures that it starts to have an impact on the honourable, paying customers.</p>
<p>I have <a href="http://buffered.io/2006/10/14/microsoft-vista-licence-restrictions/" title="Microsoft Vista License Restrictions">bitched</a> in the <a href="http://buffered.io/2006/09/10/office-registration-and-activation/" title="Office Registratoin and Activation">past</a> about how activation is a pain in the neck. But that example is nothing like what <a href="http://www.2kgames.com/" title="2K Games">2K Games</a> have recently inflicted on the buyers of their latest creation, <a href="http://www.2kgames.com/bioshock/" title="Bioshock">Bioshock</a>. Rather than throw a few links to a bzillion blog and forum posts that have covered it already, let me just give you the short version:</p>
<ol>
<li>Bioshock comes with <a href="http://www.securom.com/" title="SecuROM">SecuROM</a>.</li>
<li>It requires online activation before it can be played.</li>
<li>It can only be activated <strong>twice</strong>.</li>
</ol>
<p>On the surface this might not sound so bad, but when you think about it a little deeper it becomes obvious why this is such a pain in the arse. </p>
<p>SecuROM has a bit of a reputation amongst gamers, and not a good one at that. Most people who fork out the dollar to purchase a game don't want to be harassed afterwards. SecureROM does a good job of exactly that - harasssing. It usually requires you to insert the CD/DVD of the title while you play it. Again, this isn't a biggie for most people. But for a lot of gamers, changing CDs and DVDs constantly is annoying. I'd go as far as to say that it shits them up the wall! (yup, that one's for you, Vorlath, if you're reading <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_wink.png' alt=';)' class='wp-smiley' /> ). If you buy the game legally, and you install the game legally, you should be allowed to play it legally without having to muck around with the discs.</p>
<p>Activation of games is fairly commonplace these days, but I don't think that's a good enough reason to enforce it on the buyer. In the case of Bioshock, the SecuROM activation does some sort of hashing of your hardware and operating system information before passing it to the Mothership for archiving. If you install it on another machine, the process happens again. Each time your hardware or operating system changes, you end up with a new "fingerprint". According to 2K Games, you're allowed two of these "fingerprints" against a given serial number and that's it. Do you think that's reasonable?</p>
<p>Before giving your answer, make sure you consider all the possible scenarios that might result in the need for reinstallation. Such as ...
<ul>
<li>... Windows biting the dust due to malware.</li>
<li>... hardware biting the dust for any reason.</li>
<li>... the need to put the game on a different machine which has higher specifications and hence can provide a more enjoyable gaming experience.</li>
<li>... the game refusing to run on a certain version of Windows (<em>cough</em> Vista <em>cough</em>).</li>
</ul>
<p>There are probably more reasons as well.</p>
<p>2K Games are saying that it's possible to uninstall the game before reinstalling on another machine and everything will continue to work fine. That's all well and good so long as you <em>can</em> uninstall the game. What happens if your machine is fried? Fat chance of uninstalling a game from a hard disk that burnt to a cinder. Good luck removing software from a machine that's been trashed by some nast virus. If any of the above does happen to you, then you're in for a rough ride convincing the support team to allow you to reinstall past your 2-installation limit.</p>
<p>I'm one of those people who frequently rebuilds their machine. When I do, I don't uninstall every bit of software before wiping and starting again. Usually the disks are repartitioned and the OS is reinstalled. I don't think twice about it. I don't think I'm the only one who would end up suffering because I forgot to uninstall a game that I know I have the original discs for.</p>
<p>Let's consider the long term issues that might arise from a mechansim like this. What happens when 2K decide that they've had enough of supporting Bioshock, and users require help with their activation? Simple: the users are left high and dry.</p>
<p>If you think buying a copy of the game through <a href="http://www.steampowered.com/" title="Steam">Steam</a> is going circumvent this level of protection, think again. Steam not only has its own security in place to prevent piracy, but it also delivers the SecuROM anti-piracy gizmos that you get in the boxed version. So you're not safe.</p>
<p>There are already reports of people in strife due to this stupid level of control. Legal users of the software are unable to play the game because they've been forced to reinstall operating systems, or try on different machines because of the hardware requirements of the game. This is just crap. If you buy the software, it shouldn't come with a stack of crap which prevents you from being able to use whenever and wherever you want.</p>
<p>What makes this worse is that those people who <em>do</em> pirate software do not have to put up with this kind of crap! They download, install and play. That's it. No tales of woe. No activation issues. No concern of not being able to reinstall on a beefier machine. Nothing. The pirate is the winner, not the legal consumer.</p>
<p>I take my hat off to 2K for being monumentally stupid. You've tarnished an arguably amazing game with your stupid anti-piracy antics. You've also managed to piss off half of the game playing population...</p>
<p>.. and that's <em>before</em> we take into account the <a href="http://kotaku.com/gaming/shortscreened/bioshocks-widescreen-pissing-people-off-291697.php" title"Bioshock's Widescreen Pissing People Off">widescreen</a> issue.</p>
<p><em>Edit: Have a read of <a href="http://forums.steampowered.com/forums/showthread.php?t=589874" title="Steampowered Forums">this</a>, <a href="http://forums.2kgames.com/forums/showthread.php?t=5527" title="2K Forums">this</a> and <a href="http://digg.com/pc_games/More_Bioshock_stupidness_you_can_only_install_the_game_twice_WTF" title="More Bioshock Stupidnesss (Digg)">this</a> if you want to see what other people are saying.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2007/08/23/biosham/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
	</channel>
</rss>
