<?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>Caffeinated Coder &#187; Musings, Rants</title>
	<atom:link href="http://www.caffeinatedcoder.com/category/3/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.caffeinatedcoder.com</link>
	<description>A Grande, Triple Shot, Non-Fat Core Dump by Russell Ball</description>
	<lastBuildDate>Tue, 16 Aug 2011 02:08:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Patent on Reading Blogs Pending&#8230;Prepared to be sued</title>
		<link>http://www.caffeinatedcoder.com/patent-on-reading-blogs-pendingprepared-to-be-sued/</link>
		<comments>http://www.caffeinatedcoder.com/patent-on-reading-blogs-pendingprepared-to-be-sued/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 04:50:14 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/patent-on-reading-blogs-pendingprepared-to-be-sued/</guid>
		<description><![CDATA[Up until recently I thought I had to resort to the lottery or white collar crime to fund my beach house. However, soon after hearing a story on NPR about software patent trolling, I decided to finally apply for that patent on the blog reading technique that I’ve worked so hard on inventing (patent # [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/07/troll.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px; padding-top: 0px" title="troll" border="0" alt="troll" align="right" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/07/troll_thumb.jpg" width="244" height="244" /></a>Up until recently I thought I had to resort to the lottery or white collar crime to fund my beach house.</p>
<p>However, soon after hearing a <a href="http://www.npr.org/blogs/money/2011/07/26/138576167/when-patents-attack">story on NPR</a> about software <a href="http://en.wikipedia.org/wiki/Patent_troll">patent trolling</a>, I decided to finally apply for that patent on the blog reading technique that I’ve worked so hard on inventing (patent # c7c0f810-e5b8-4b64-9cfc-e7a93cc1d9cf). </p>
<p>Needless to say, my invention is extremely complicated. It involves the internets, procrastinating at work, and anonymously leaving lots of rude, off-topic comments on blogs. </p>
<p>My lawyer, Guido, will explain it to all of you in more detail while you cut me a big fat check (I captured your IP Address when you loaded this page). </p>
<p>Unfortunately, I won’t be able to go after most of the software giants, who <a href="http://www.reuters.com/article/2011/07/02/us-dealtalk-nortel-google-idUSTRE76104L20110702">spend billions to purchase random software patents</a> for no other reasons than to <a href="http://googleblog.blogspot.com/2011/04/patents-and-innovation.html">defend themselves through the threat of the counter-suit</a>.</p>
<p>On the other hand, if something happens to my beach house and I can’t manage to think of any more incredibly obvious ideas on my own, I could always follow the lead of <a href="http://www.npr.org/blogs/money/2011/07/26/138576167/when-patents-attack">Oasis Research</a>, who purchased a broad patent from 1998, formed a company with no operations, no products, no employees, and started suing the hell out of people.</p>
<p>Since defending against a patent infringement suit cost millions of dollars and most companies are willing to settle even non-meritorious suits they consider frivolous for several hundred thousand dollars, it’s a pretty lucrative business model.</p>
<p>Then again, if I get really ambitious, I could always follow the lead of <a href="http://ipwatchdog.com/2010/12/09/intellectual-ventures-becomes-patent-troll-public-enemy-1/id=13711/">Intellectual Ventures</a>. They managed to raise 5 billion in venture capital, purchase 35,000 patents, and then charge protection money…oops, I mean fees… to their clients so that their butcher shops wouldn’t get burned down…oops I mean so that they wouldn’t get sued.</p>
<p>Welcome to the new world of software innovation.</p>
<p>Now pay up.</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1257&type=feed" alt="" />

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/patent-on-reading-blogs-pendingprepared-to-be-sued/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guest Post: Good Programmers Make Bad Designers</title>
		<link>http://www.caffeinatedcoder.com/guest-post-good-programmers-make-bad-designers/</link>
		<comments>http://www.caffeinatedcoder.com/guest-post-good-programmers-make-bad-designers/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 03:26:42 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/guest-post-good-programmers-make-bad-designers/</guid>
		<description><![CDATA[I got an email request to publish this article a few days ago. I was actually on the verge of moving the email to the trash when I noticed the first name of the author: Rand. For those of you not familiar with the Wheel of Time series, the main character’s name is Rand. I [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I got an email request to publish this article a few days ago.</p>
<p>I was actually on the verge of moving the email to the trash when I noticed the first name of the author: Rand.</p>
<p>For those of you not familiar with the <a href="http://en.wikipedia.org/wiki/The_Wheel_of_Time">Wheel of Time</a> series, the main character’s name is Rand.</p>
<p>I admit that it’s an embarrassing weak reason to respond to a strange email, but reading some 10,000 pages of a fantasy series obviously messes with your mind.</p>
<p>Then again, it’s probably no stranger than Rand Mendoza wanting to publish his article on this blog to begin with.</p>
<p>Anyways, enjoy…</p>
<p>********</p>
<p>&nbsp;</p>
<p>Do Not Get a Good Programmer to be a Systems Analyst, Software Engineer or Software Architect</p>
<p>When you are on the lookout for someone who will occupy the coveted position of Software Architect or Designer in your team or company, the first thing that usually comes to mind is to hire the best programmer that you can afford. Don’t. Avoid hiring good programmers for the position. Promoting one of your senior programmers for it is just as bad.</p>
<p>It might sound weird at first. Why should I not get a good programmer to design solutions? After all, she will be designing <em>programs</em>, won’t she? Actually, yes, she will be. But the thing to remember is that <em>designing</em> programs requires a totally different skillset than writing programs or <em>programming</em>.</p>
<p>Let us see why a good programmer will not be a good software designer. But first, let us ask ourselves what makes a programmer good, or even brilliant. To be a good programmer, you must be able to implement real world, critical software. Being able to write a simple text editor is simply not enough.</p>
<p>To be capable of implementing non-trivial, complex programming problems, a programmer needs to have years of experience in a particular programming language. This means she has to focus on this language in order to be fluent in it and to be familiar with its idioms. Herein lies the problem.</p>
<h2>To Someone Who Only Has a Hammer, Every Problem Begins to Resemble a Nail</h2>
<p>If you focus only on one language to gain proficiency in it, you will be restricted to the paradigm of the problem domain for which your language was designed. In short, if all you know is PHP, then every programming problem starts to look like Web development problems. In the same manner, if Java is all you know, you will try to approach every problem from the object-oriented standpoint even if the problem is better solved using procedural programming as in the majority of systems programming.</p>
<p>Knowing only one or even two programming languages as good programmers should, will severely limit your capability to solve problems. For example, if your language is C, you will find it very difficult to think of the problem at hand in an object-oriented way because your programming language does not readily provide that functionality. Unlike Haskell programmers, C++ programmers cannot approach a problem the functional way either. Whether your programming language offers structs and enums or not can greatly affect how you attempt to dissect the problem. If your language is inadequate or if you only know a few languages, your ability to solve problems efficiently will likewise be hampered.</p>
<h2>Language Shapes the Way We Think</h2>
<p>Some say that <a href="http://www.nytimes.com/2010/08/29/magazine/29language-t.html">our language shape how we think and perceive the world</a>. I tend to agree. A speaker whose language requires that the gender of nouns be specified obviously thinks differently than someone who thinks that the police are not feminine. Someone who speaks a language that does not distinguish the color Blue from the color Green obviously perceives the world differently compared to a person whose language does.</p>
<p>If we look back at the Trivium, they are described as follows: <em>Grammar</em> deals with how concepts and objects are represented in writing and in speech so that they may be dissected in thought using <em>Logic</em> and thereafter communicated to another mind with the aid of <em>Rhetoric</em>. For our purposes, grammar is the syntax of our programming language. If our language is inadequate, we will also have an incomplete view of objects and concepts and how they are represented.</p>
<p>Language, the kind we use to talk to humans and to computers, clearly affects how we think. The richness and number of the languages we know can either aid or hinder our problem solving capability.</p>
<h2>So, Who Would Be a Better Fit?</h2>
<p>Therefore, a good programmer, who is a specialist in one or two programming languages, will have limitations in approaching a problem. She is restricted to what her programming language allows her to do. As such, she cannot be a good designer or analyst.</p>
<p>But if we shouldn’t hire a good programmer, who could we call upon to design our software? Certainly not someone who doesn’t know programming at all? Certainly not, but we need someone who is a generalist. A good designer must be familiar with procedural, object-oriented, functional, and logic programming languages—not to mention good software engineering practices. She must not be tied to a single paradigm like the specialist. Of course, she cannot write a complex program herself because of her broad but shallow approach to learning programming languages; nevertheless, she can properly determine the right tool for the task. If the problem is a nail, she can bring someone in who is well versed with a hammer; if the problem is a boulder, well, she could call in the explosive ordnance division instead of pounding it up futilely with a hammer.</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1254&type=feed" alt="" />

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/guest-post-good-programmers-make-bad-designers/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>SSIS: The Ninth Circle of Merge Hell</title>
		<link>http://www.caffeinatedcoder.com/ssis-the-ninth-circle-of-merge-hell/</link>
		<comments>http://www.caffeinatedcoder.com/ssis-the-ninth-circle-of-merge-hell/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 02:52:56 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/?p=1249</guid>
		<description><![CDATA[If there is such a thing as divine retribution, then I’m pretty sure that most of the people on Microsoft’s SSIS product team will be spending eons merging SSIS packages. I took the following screenshot from an issue I reviewed at my old job. The developer who resolved the issue only made two property changes [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>If there is such a thing as <a href="http://en.wikipedia.org/wiki/Divine_retribution">divine retribution</a>, then I’m pretty sure that most of the people on Microsoft’s <a href="http://msdn.microsoft.com/en-us/library/ms141026.aspx">SSIS</a> product team will be spending eons merging SSIS packages.</p>
<p>I took the following screenshot from an issue I reviewed at my old job. The developer who resolved the issue only made two property changes and realigned the boxes in the visual designer (can you say OCD), so I expected to see a small diff but instead saw this unholy mess.</p>
<p><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/SSIS_Merge.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SSIS_Merge" border="0" alt="SSIS_Merge" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/SSIS_Merge_thumb.png" width="454" height="231" /></a></p>
<p>For those of you who are not familiar with <a href="http://www.scootersoftware.com/">BeyondCompare</a>, all those red bars on the left represent changes to the file (100’s of lines).</p>
<p>Since only two meaningful changes occurred in the revision, that means that the vast majority of it is noise related to tracking the positions of all the elements rendered by the visual designer.</p>
<p>Is the visual tooling here so essential that it is really worth losing the ability to track and comprehend how the code has changed over time?</p>
<p>What about the ability to collaborate or work in parallel on tasks?</p>
<p>At my last job it was extremely common for devs to work on different features at the same time that touched the same code files. Unless the exact same lines of code were changed, the devs were able to merge these files with little or no effort.</p>
<p>However, when it came to SSIS packages we were forced to ditch the last 10 years of software engineering best practices and instead expend vast amounts of effort in planning and endure ridiculous amounts of inefficiency just to ensure that no devs even thought about touching the same SSIS package at the same time.</p>
<p>If the dreaded merge window did ever appear during the <a href="http://codebetter.com/jeremymiller/2005/07/25/using-continuous-integration-better-do-the-check-in-dance/">check-in dance</a> on an SSIS package, devs habitually ditched the merge tool and instead relied on the extremely tedious and error-prone approach of manually reapplying all the changes through the visual designer. </p>
<p>I realize that there are quite a few developers who work in small shops and don’t have to deal with scenarios involving extensive collaboration and parallel development, but what about the case of a hotfix that happens in the middle of a multi-week project? </p>
<p>With a normal code file you would be to follow a simple mainline-release pattern, make a change to the release branch, then merge back into the mainline branch. </p>
<p>However, with SSIS the only alternatives are to either lose work, try to do some wonky work-around with a data load, or else just throw throw yourself at the mercy of your boss and try to convince them to delay the hotfix until the larger project is done. </p>
<p>Did nobody on the SSIS team consider these issues when designing the product or was SSIS really just meant to be a basic end-user tool like Access? </p>
<p>Perhaps this is one of those situations like with VSS where everyone who actually works at Microsoft uses some other ETL tool that allows them to follow basic modern software development practices. </p>
<p>Then again, maybe the development community as a whole has just become so blinded by the desire and expectation for visual tooling that it trumps all other considerations.</p>
<p>Whatever the reason, there is no way I would ever voluntarily use SSIS again. </p>
<p>Does anyone know of any more source control friendly alternatives?</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1249&type=feed" alt="" />

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/ssis-the-ninth-circle-of-merge-hell/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Tech Support Gem</title>
		<link>http://www.caffeinatedcoder.com/tech-support-gem/</link>
		<comments>http://www.caffeinatedcoder.com/tech-support-gem/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 13:45:40 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/?p=1242</guid>
		<description><![CDATA[Here’s a tech support session from a friend of mine trying to log into his bank account. Web Customer: I&#8217;m trying to log in to my online account but the system is telling me that a session already exists. Can you cancel that session manually or do I have to wait for it to timeout? [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Here’s a tech support session from a friend of mine trying to log into his bank account.</p>
<p><strong><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/Pseudo_c9.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Pseudo_c9" border="0" alt="Pseudo_c9" align="right" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/Pseudo_c9_thumb.jpg" width="124" height="141" /></a>Web Customer:</strong> I&#8217;m trying to log in to my online account but the system is telling me that a session already exists. Can you cancel that session manually or do I have to wait for it to timeout?     <br /><strong>Customer Support:</strong> You must close all browsers, wait about 10 seconds, then start a fresh browser session.     <br /><strong>Web Customer:</strong> I think I did that and it didn&#8217;t work. If that&#8217;s the case, what&#8217;s the next step?     <br /><strong>Customer Support:</strong> I would clean off cookies and temporary internet files, then <font style="background-color: #ffffff"><strong></strong></font><strong><font color="#ff0000">reboot</font></strong>.<font style="background-color: #ffffff"></font></p>
<p>Geez…I know I’ve been away from UI stuff for a while, but I didn’t know web apps had changed THAT much.</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1242&type=feed" alt="" />

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/tech-support-gem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Revenge of the Blink Tag</title>
		<link>http://www.caffeinatedcoder.com/revenge-of-the-blink-tag/</link>
		<comments>http://www.caffeinatedcoder.com/revenge-of-the-blink-tag/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 03:52:19 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/?p=1212</guid>
		<description><![CDATA[I was browsing through JQuery plugins the other night when I stumbled across this little gem. Vibrating Buttons? Really? I assumed that this was the product of some geeky joksters blowing off steam after being forced to participate in some grueling SOX or PCI compliance audits. After all, who in their right minds would want [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I was browsing through <a href="http://plugins.jquery.com/most-popular">JQuery plugins</a> the other night when I stumbled across <a href="http://www.nextcode.it/demo/vibrate/">this little gem</a>.</p>
<p><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/JQuery_vibrate.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="JQuery_vibrate" border="0" alt="JQuery_vibrate" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/JQuery_vibrate_thumb.png" width="454" height="248" /></a></p>
<p>Vibrating Buttons? Really?</p>
<p>I assumed that this was the product of some geeky joksters blowing off steam after being forced to participate in some grueling SOX or PCI compliance audits.</p>
<p>After all, who in their right minds would want to resurrect an only slightly snazzier version of the <a href="http://en.wikipedia.org/wiki/Blink_element">blink tag</a>, which epitomizes everything that was gaudy and cheap about the early days of the web? </p>
<p>I mean the only thing that could possibly be tackier would be one of those ubiquitous “under construction” images that site creators used back in the day to highlight all the features that they would probably never get around to implementing.</p>
<p>Then it occurred to me that I might be able to discover some clues by looking at the <a href="http://www.nextcode.it/">corporate site</a> where the plugin is hosted.</p>
<p><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/VibratePlugin_UnderConstructin.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="VibratePlugin_UnderConstructin" border="0" alt="VibratePlugin_UnderConstructin" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/VibratePlugin_UnderConstructin_thumb.png" width="454" height="171" /></a>.</p>
<p>Wow.</p>
<p>Any bets on whether their new site will lead off with a fancy flash video (a.k.a animated gif) to round off their ninety’s resurrection theme?</p>
<p>This moment of zen was brought to you by our Italian developer brethren at <a href="http://www.nextcode.it/">NextCode</a>. If you feel like showing them your appreciation, then head over to JQuery.com and give their little surreal plugin your 5 star endorsement.</p>
<p>Arrivederci. </p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1212&type=feed" alt="" />

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/revenge-of-the-blink-tag/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How Windows 7 System Restore Saved My Arse</title>
		<link>http://www.caffeinatedcoder.com/how-windows-7-system-restore-saved-my-arse/</link>
		<comments>http://www.caffeinatedcoder.com/how-windows-7-system-restore-saved-my-arse/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 05:58:52 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/?p=1199</guid>
		<description><![CDATA[A few weeks ago I accidentally installed the wrong Cisco VPN Client while trying to set up a VPN connection and as a result I lost all network connectivity. I wasted a good 45 minutes uninstalling the bad software, reinstalling my laptop’s network drivers, and fiddling with the various network settings before I remembered about [...]


Related posts:<ol><li><a href='http://www.caffeinatedcoder.com/slinging-windows-with-winsplit-revolution/' rel='bookmark' title='Permanent Link: Slinging windows with WinSplit Revolution'>Slinging windows with WinSplit Revolution</a> <small>Thanks to my new employer, I’m now happily a member...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I accidentally installed the wrong Cisco VPN Client while trying to set up a VPN connection and as a result I lost all network connectivity.</p>
<p>I wasted a good 45 minutes uninstalling the bad software, reinstalling my laptop’s network drivers, and fiddling with the various network settings before I remembered about Window’s <a href="http://windows.microsoft.com/en-US/windows-vista/What-is-System-Restore">System Restore</a> functionality.</p>
<p>I had never actually used it before and was a little hesitant because I remembered it having a really bad reputation for not working back in the early days of XP. However, I was tired of troubleshooting the problem, so I figured it was worth a shot. </p>
<p>I simply typed in ‘System Restore’ in the Run menu (still one of my favorite Windows 7 features) and was soon greeted with a plethora of possible rollback points, since Windows automatically takes checkpoints on both a scheduled basis as well as before every program install and windows update.</p>
<p><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/WindowsRestore.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="WindowsRestore" border="0" alt="WindowsRestore" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/WindowsRestore_thumb.png" width="454" height="370" /></a></p>
<p>I selected the rollback point prior to the bad install and within a few more clicks I had my internets back!</p>
<p>If you’re like me and prone to F’ing up your computer from time to time, then you’ll be happy to know that this handy feature is available in Safe Mode as well as from the windows installation disk.</p>
<p>I also discovered that you can even manually create checkpoints with Powershell using the Checkpoint-Computer cmdlet, which I thought was pretty cool only because I’ve been getting my PowerShell freak on all week with build automation scripts.</p>
<p>Mostly, it was just nice to be pleasantly surprised by a piece of Microsoft software, which in general has been pissing me off more times than not lately.</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1199&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.caffeinatedcoder.com/slinging-windows-with-winsplit-revolution/' rel='bookmark' title='Permanent Link: Slinging windows with WinSplit Revolution'>Slinging windows with WinSplit Revolution</a> <small>Thanks to my new employer, I’m now happily a member...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/how-windows-7-system-restore-saved-my-arse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security through Reverse Psychology</title>
		<link>http://www.caffeinatedcoder.com/security-through-reverse-psychology/</link>
		<comments>http://www.caffeinatedcoder.com/security-through-reverse-psychology/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 05:26:33 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/?p=1188</guid>
		<description><![CDATA[Let’s face it. We’re all losing the password length arms race. Today&#8217;s GPUs can process two teraflops (a trillion floating-point operations per second), which means that my nephew’s high end gaming PC has roughly the same processing power as a multi-million dollar super computer did ten years ago. Thanks to the power of the GPU [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Let’s face it. We’re all losing the password length arms race. </p>
<p>Today&#8217;s GPUs can process two teraflops (a trillion floating-point operations per second), which means that my nephew’s high end gaming PC has roughly the same processing power as a multi-million dollar super computer did ten years ago.</p>
<p>Thanks to the power of the GPU and modern algorithms like <a href="http://en.wikipedia.org/wiki/Rainbow_table">rainbow tables</a>, there are now commercial products available that can churn through nearly 3 billion passwords a second on a standard desktop computer</p>
<p>This may prompt the more conventional among us to follow the advice of a pre-eminent researcher in the field like Richard Boyd, who <a href="http://www.gtri.gatech.edu/casestudy/Teraflop-Troubles-Power-Graphics-Processing-Units-GPUs-Password-Security-System">recommends a minimum password length of 12 characters</a> to protect against brute force attacks.</p>
<p>Then again, you might be inclined to follow the <a href="http://www.adobe.com">Adobe</a> way and try to outwit hackers with some cutting edge reverse psychology self-defense.</p>
<p><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/Adobe_fail1.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Adobe_fail" border="0" alt="Adobe_fail" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/06/Adobe_fail_thumb1.png" width="454" height="137" /></a></p>
<p>I know…you’re probably wondering why any moron ever thought it was a good idea to <strong>limit the password length</strong> as part of their security policy.</p>
<p>But think about it…</p>
<p>If I were a hacker, I would naturally assume that such a pre-eminent software company like Adobe would require at least a minimum of 12 characters. As a result, I would tailor my brute force attack to focus only on lengths above that threshold, thereby making their systems impenetrable.</p>
<p>Brilliant!</p>
<p>…and I thought that Adobe only excelled at creating massively <a href="http://www.zdnet.co.uk/reviews/business-productivity/2008/05/20/annoying-software-a-rogues-gallery-39419834/2/">bloated</a> and <a href="http://www.techrepublic.com/photos/gallery-10-most-annoying-programs-on-the-internet/202392?seq=2">annoying</a> software that <a href="http://www.foxitsoftware.com/products/reader/">nobody in their right mind uses anymore</a>.</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1188&type=feed" alt="" />

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/security-through-reverse-psychology/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pleasant Surprises: the Razor view Engine</title>
		<link>http://www.caffeinatedcoder.com/pleasant-surprises-the-razor-view-engine/</link>
		<comments>http://www.caffeinatedcoder.com/pleasant-surprises-the-razor-view-engine/#comments</comments>
		<pubDate>Tue, 31 May 2011 02:51:54 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/pleasant-surprises-the-razor-view-engine/</guid>
		<description><![CDATA[I recently switched jobs and am now happily spending my day actually doing development again rather than just telling other developers what to do (seems like a cyclical trend in my career). In my new role, I’ll soon be doing some greenfield web development, so I’ve been brushing up on my UI skills as well [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I recently switched jobs and am now happily spending my day actually doing development again rather than just telling other developers what to do (seems like a <a href="http://www.caffeinatedcoder.com/breaking-up-is-hard-to-do/">cyclical trend</a> in my career).</p>
<p>In my new role, I’ll soon be doing some greenfield web development, so I’ve been brushing up on my UI skills as well as exploring some new frameworks and libraries as we try to settle on the stack we’ll be using.</p>
<p>One of the more refreshing discoveries has been the Razor view engine for the ASP.NET MVC framework.</p>
<p>There are a ton of cool features that I could enumerate, but to be honest I was pretty much won over as soon as I compared the syntax for doing simple for-loops and if-else branches.</p>
<p>Here’s an example using the traditional Web Forms engine (.aspx) page:</p>
<p><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/05/WebForms_Example2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="WebForms_Example" border="0" alt="WebForms_Example" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/05/WebForms_Example_thumb2.png" width="351" height="151" /></a></p>
<p>Here’s what the same code looks like using the Razor view engine (.cshtml):</p>
<p><a href="http://www.caffeinatedcoder.com/wp-content/uploads/2011/05/Razor_Example2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Razor_Example" border="0" alt="Razor_Example" src="http://www.caffeinatedcoder.com/wp-content/uploads/2011/05/Razor_Example_thumb2.png" width="350" height="166" /></a></p>
<p>The noise reduction makes my heart go pitter-patter.</p>
<p>If you’re interested in finding out more, Scott Guthrie has some superb <a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx">introductory</a> <a href="http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx">posts</a> covering both Razor and the new MVC 3 features in general.</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1157&type=feed" alt="" />

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/pleasant-surprises-the-razor-view-engine/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Website Hall of Shame</title>
		<link>http://www.caffeinatedcoder.com/website-hall-of-shame/</link>
		<comments>http://www.caffeinatedcoder.com/website-hall-of-shame/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 03:22:08 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/?p=1085</guid>
		<description><![CDATA[Today&#8217;s featured website: European Visa Online I visited this site for the first time today and was greeted with this page. Seriously? In case you&#8217;re curious, I&#8217;m running firefox 3.6.3. Web developers and designers have scorned and mocked IE 6 for years now due to hoards of bugs and non-compliant behavior that cause endless development [...]


Related posts:<ol><li><a href='http://www.caffeinatedcoder.com/security-through-reverse-psychology/' rel='bookmark' title='Permanent Link: Security through Reverse Psychology'>Security through Reverse Psychology</a> <small>Let’s face it. We’re all losing the password length arms...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><strong>Today&#8217;s featured website:</strong> <a href="https://www.eu.visaonline.com">European Visa Online</a></p>
<p>I visited this site for the first time today and was greeted with this page.</p>
<p><img class="aligncenter size-full wp-image-1086" title="blog_visa_shame" src="http://www.caffeinatedcoder.com/wp-content/uploads/2010/04/blog_visa_shame.png" alt="blog_visa_shame" width="450" height="354" /></p>
<p>Seriously?</p>
<p>In case you&#8217;re curious, I&#8217;m running firefox 3.6.3.</p>
<p>Web developers and designers have scorned and mocked IE 6 for years now due to hoards of bugs and non-compliant behavior that cause <a href="http://www.virtuosimedia.com/tutorials/ultimate-ie6-cheatsheet-how-to-fix-25-internet-explorer-6-bugs">endless development headaches</a>.</p>
<p>However, IE 6 rose to a new level of infamy earlier this year when it turned out to be the culprit behind the <a href="http://siblog.mcafee.com/cto/operation-%E2%80%9Caurora%E2%80%9D-hit-google-others/">Operation Aurora</a> exploits, which led to Google and others to officially drop support for the browser due to security risks.</p>
<p>It also led to many European governments, such as <a href="http://news.bbc.co.uk/2/hi/technology/8463516.stm germany">Germany</a>, <a href="http://news.bbc.co.uk/2/hi/8465038.stm">France</a>, and nearly <a href="http://www.theregister.co.uk/2010/02/02/internet_explorer_6_petition/">the UK</a>, to officially urge its citizens to switch browsers.</p>
<p>That made this page all the more surprising since it came from the European branch of Visa.</p>
<p>Then again, maybe I shouldn&#8217;t be surprised.</p>
<p>One of the very next pages prevented me from changing my initial password because the password generated by <a href="http://keepass.info/">KeePass </a>with the default settings was too long&#8230;.that&#8217;s right&#8230;.too long to meet their password validation rules.</p>
<p><img class="aligncenter size-full wp-image-1089" title="visa_strike4" src="http://www.caffeinatedcoder.com/wp-content/uploads/2010/04/visa_strike4.png" alt="visa_strike4" width="450" height="167" /></p>
<p>I easily have over 100 passwords in my password database and I can&#8217;t remember the last time I&#8217;ve had this problem.</p>
<p>It doesn&#8217;t exactly inspire confidence in the area of security, especially considering that Visa is one of the most prominent and ubiquitous financial institution around.</p>
<p>Sigh&#8230;</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=1085&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.caffeinatedcoder.com/security-through-reverse-psychology/' rel='bookmark' title='Permanent Link: Security through Reverse Psychology'>Security through Reverse Psychology</a> <small>Let’s face it. We’re all losing the password length arms...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/website-hall-of-shame/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>The Zen of “Go Away” Rates</title>
		<link>http://www.caffeinatedcoder.com/the-zen-of-%e2%80%9cgo-away%e2%80%9d-rates/</link>
		<comments>http://www.caffeinatedcoder.com/the-zen-of-%e2%80%9cgo-away%e2%80%9d-rates/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 13:38:21 +0000</pubDate>
		<dc:creator>Russell Ball</dc:creator>
				<category><![CDATA[Musings, Rants]]></category>

		<guid isPermaLink="false">http://www.caffeinatedcoder.com/?p=725</guid>
		<description><![CDATA[A friend of mine recently revealed a super, ninja-level consultant secret to me. Whenever his work pipeline floweth over and an unknown client approaches him with a job, he quotes them a ridiculously high rate that he assumes they would never accept. He calls it his “Go Away” rate. The only problem is that these [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-726" style="padding:10px" title="wine-label-324x205" src="http://www.caffeinatedcoder.com/wp-content/uploads/2009/10/wine-label-324x205.jpg" alt="wine-label-324x205" width="250" height="158" align="right" />A friend of mine recently revealed a super, ninja-level consultant secret to me.</p>
<p>Whenever his work pipeline floweth over and an unknown client approaches him with a job, he quotes them a ridiculously high rate that he assumes they would never accept.</p>
<p>He calls it his “Go Away” rate.</p>
<p>The only problem is that these clients often do accept his proposal.</p>
<p>In fact, my friend admitted to me with a certain amount of amusement that he has noticed that clients are actually much less likely to balk and haggle over his “Go Away” rate than they are his normal, more reasonable hourly rate.</p>
<p>It reminds me of a <a href="http://dsc.discovery.com/news/2008/01/14/wine-brain-behavior.html">recent wine tasting experiment</a> that I read about where subjects did a taste test for a variety of wines and the only piece of information they were given was the price.</p>
<p>Not surprisingly, the subjects of the experiment overwhelmingly reported enjoying the pricier wines more even though the sneaky researchers often swapped the price labels between the cheap and expensive wines.</p>
<p>What is surprising, however, is that according to brain scans that were conducted by researchers during the experiment, people actually did experience more pleasure while drinking the cheap wines that they thought were pricier and not simply falsifying their answers to avoid looking uncultured.</p>
<p>In other words, the wine actually tasted better to them simply because they believed that the wine was higher quality.</p>
<p>While that improves the prospects for many consultants hoping to take that 4 week vacation to the Bahamas this year, what lesson can us poor salaried corporate slaves glean from this experience?</p>
<p>Although most developers don’t have the luxury of being able to quote a “Go Away” rate, they often do (at least on a subconscious level) have the option of giving a “Go-Away” estimate.</p>
<p>Don’t believe me? Consider the following scenario.</p>
<p>Your boss asks you how long it takes to code a CRM system from scratch using your dream technology stack. Do you actually sit down and give him the bad news, which is that the project probably won’t be finished until after he retires or is fired for incompetence or do you succumb to the typical developer’s hopeless optimism and mumble a couple of months?</p>
<p>Now, what if on the same day your boss asks you to give an estimate of how long it would take to change the color of some text on a legacy PowerBuilder app?</p>
<p>Just to make it interesting, let’s assume that the app in question is written using an unsupported version of PowerBuilder. Moreover, the data travels through no less than <a href="http://www.rubegoldberg.com/">6 rube goldbergian</a> layers, the highpoint of which is an excel worksheet written by a disgruntled accountant and a 5000 line .bat file written by the network admin who just sent to prison for embezzlement. To top it off,  it interacts with a mainframe you’ve never heard of that was scheduled to be retired a decade before you started working there.</p>
<p>In the second scenario, would you err on the side of optimism or would you promptly ask your HR person how much time is left before you vest and then multiply that answer by 8 in order to derive your very own “Go Away” estimate?</p>
<p>If you noticed yourself leaning towards the second option, then you may want to stop and consider what we’ve just learned from the wine researchers.</p>
<p>If you over-inflate your time estimate too much, then you may inadvertently make your boss want that change all the more.</p>
<p>Quote too high of a &#8220;Go Away&#8221; estimate, and you’ll soon find yourself in a product kick-off meeting heading up a team of “high quality” consultants, all of whom are charging “go-away” rates, and listening to your CIO give a <a href="http://www.caffeinatedcoder.com/motivational-anti-patterns/">sunshine up the arse speech</a> about how the new TCII (Text-Colorization Improvement Initiative) is going to revolutionize the way you do business.</p>
<p>Don’t say I didn’t warn you.</p>
<img src="http://www.caffeinatedcoder.com/?ak_action=api_record_view&id=725&type=feed" alt="" />

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.caffeinatedcoder.com/the-zen-of-%e2%80%9cgo-away%e2%80%9d-rates/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

