<?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>Pervasive Code &#187; humor</title>
	<atom:link href="http://www.pervasivecode.com/blog/category/humor/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pervasivecode.com/blog</link>
	<description>Jamie Flournoy's Software Development Blog</description>
	<lastBuildDate>Mon, 26 Jul 2010 05:29:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Clickwrap UI mini-rant</title>
		<link>http://www.pervasivecode.com/blog/2008/08/27/clickwrap-ui-mini-rant/</link>
		<comments>http://www.pervasivecode.com/blog/2008/08/27/clickwrap-ui-mini-rant/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 16:08:16 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2008/08/27/clickwrap-ui-mini-rant/</guid>
		<description><![CDATA[When I am ruler of the universe, this will be my first edict:
Any clickwrap license which:
(a) is longer than 1000 words, OR
(b) is longer than ten (10) times the height of the text box it is enclosed in, OR
(c) is displayed in a text box that uses less than 5% of the total display area [...]]]></description>
			<content:encoded><![CDATA[<p>When I am ruler of the universe, this will be my first edict:</p>
<p>Any clickwrap license which:<br />
(a) is longer than 1000 words, OR<br />
(b) is longer than ten (10) times the height of the text box it is enclosed in, OR<br />
(c) is displayed in a text box that uses less than 5% of the total display area and cannot be resized by the user for easier reading, OR<br />
(d) cannot be selected for copying and pasting into another document, OR<br />
(e) cannot be read before purchase,<br />
IS AUTOMATICALLY NULL AND VOID.</p>
<p>Inspiration abounds, but today it&#8217;s the Firefox 3 clickwrap license window&#8217;s that fails (c) and probably also (a) and (b) which reminded me of this common UI issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2008/08/27/clickwrap-ui-mini-rant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bad, Bad Code</title>
		<link>http://www.pervasivecode.com/blog/2007/08/04/bad-bad-code/</link>
		<comments>http://www.pervasivecode.com/blog/2007/08/04/bad-bad-code/#comments</comments>
		<pubDate>Sat, 04 Aug 2007 22:21:02 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[labor]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[offshoring]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/08/04/bad-bad-code/</guid>
		<description><![CDATA[I&#8217;ve written before about tips for offshoring. One specific thing I said to watch for is the bait-and-switch of talent: during the sales process you&#8217;re shown rockstars, but the real code you get is written by clueless newbies. When you set up a project such that you&#8217;ve minimized the cost per hour of development, but [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written before about <a href="http://www.pervasivecode.com/blog/2007/02/20/tips-for-offshoring/">tips for offshoring</a>. One specific thing I said to watch for is the bait-and-switch of talent: during the sales process you&#8217;re shown rockstars, but the real code you get is written by clueless newbies. When you set up a project such that you&#8217;ve minimized the cost per hour of development, but you don&#8217;t have anyone checking the work product (i.e. code reviews) coming from the subcontractor, very bad things happen.<br />
<span id="more-40"></span><br />
Here&#8217;s a doozy: <a href="http://www.discursive.com/blog/2007/07/in-2007-people-are-still-writing-jsp.html">In 2007, people are still writing JSP like this&#8230;</a></p>
<p>Check out the 4th message in the thread, with the big code sample.</p>
<ul>
<li>Table based HTML layout, and no CSS at all? Check. Heck, the table width % values don&#8217;t even add up to 100%.</li>
<li>SQL in the JSP? Check.</li>
<li>Making a new JDBC connection for each page view, instead of using a connection pool? Check.</li>
<li>Unescaped strings in the SQL? Check. (Not strings coming from the browser in this particular JSP page, but you don&#8217;t know where those strings originate. Why wouldn&#8217;t you escape it just in case?)</li>
<li>Failing to use a prepared statement? Check. (That would also solve the escaping problem.)</li>
<li>Using a string literal in a SQL or command line context, so you can&#8217;t log it beforehand? Check. Even better, the code makes a query string first, prints it (commented out), and then <i>uses a different string in the actual query</i>. Nice!</li>
<li>Using the JdbcOdbc driver? Check. (From <a href="http://java.sun.com/docs/books/tutorial/jdbc/basics/connecting.html">Sun&#8217;s JDBC Basics</a>: The JDBC-ODBC Bridge driver provided with JDBC is recommended only for development and testing, or when no other alternative is available.) I&#8217;m guessing that the use of ODBC here is the only reason why the database username and password aren&#8217;t embedded in the code sample and posted for all to see.</li>
<li>Empty exception catch block? Check.</li>
</ul>
<p>I&#8217;d have a hard time coming up with a fake example of bad code that was worse.</p>
<p>But wait, <a href="http://forum.java.sun.com/profile.jspa?userID=908177">what else has this person asked about</a>?</p>
<p>No way. Yes! <a href="http://forum.java.sun.com/thread.jspa?threadID=5156702&#038;messageID=9593464#9593464">Error in Socket and File Writing</a>!<br />
The post includes the router&#8217;s username and password, and its configuration including:</p>
<ul>
<li>Its IP address, and all of the routes it contains, and all of its interfaces and where they go</li>
<li>A couple of other passwords stored in the router</li>
<li>A crypto key that appears to be to a VPN (looks like a pre-shared key, meaning not a public key but one that must be kept secret)!</li>
</ul>
<p>I&#8217;m not gonna say &#8220;you get what you pay for&#8221; since open source software has served me very well, but I will say that you get what you bargain for. If your bargain includes not looking at the work product of the people you hire, which is to say, hiring the cheapest people available and not supervising them, you&#8217;re not going to be happy with what you get.</p>
<p>Of course, this <em>could</em> have been written by a U.S. citizen who works in a cube on-site and makes $200/hour. Point is, hire carefully, and supervise your workers. It seems simple when put that way, but it&#8217;s amazing how often companies are willing to hire software subcontractors carelessly (solely on price?) and then pay little or no attention to the resulting work, when the arrangement involves offshore outsourcing.</p>
<p>By the way, the IP addresses in the original post (with the awful code sample) are listed next to the name &#8220;Areva&#8221;, implying that this code is part of a project for Areva. Who is Areva? <a href="http://www.areva.com/servlet/operations-en.html">They make nuclear power plants</a>. Sweet dreams!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/08/04/bad-bad-code/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Funny: LOLCODE</title>
		<link>http://www.pervasivecode.com/blog/2007/06/27/funny-lolcode/</link>
		<comments>http://www.pervasivecode.com/blog/2007/06/27/funny-lolcode/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 07:36:59 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/06/27/funny-lolcode/</guid>
		<description><![CDATA[LOLCODE is a silly idea that people have apparently turned into actual running code.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://lolcode.com/">LOLCODE</a> is a silly idea that people have apparently turned into actual running code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/06/27/funny-lolcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prefactoring</title>
		<link>http://www.pervasivecode.com/blog/2007/05/18/prefactoring/</link>
		<comments>http://www.pervasivecode.com/blog/2007/05/18/prefactoring/#comments</comments>
		<pubDate>Fri, 18 May 2007 21:13:45 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/05/18/prefactoring/</guid>
		<description><![CDATA[I have a text file full of links and notes extracted from about a month of reading everything posted to the 2 dozen Ruby, Rails, Postgres, and web tech blogs that I subscribe to via RSS. There&#8217;s so much going on in Ruby and Rails in particular, especially when it comes to convenient shortcuts that [...]]]></description>
			<content:encoded><![CDATA[<p>I have a text file full of links and notes extracted from about a month of reading everything posted to the 2 dozen Ruby, Rails, Postgres, and web tech blogs that I subscribe to via RSS. There&#8217;s so much going on in Ruby and Rails in particular, especially when it comes to convenient shortcuts that save you work, that there&#8217;s something new and cool and slightly revolutionary on a daily basis that you could use to make your app prettier.</p>
<p>So I&#8217;ve been in a state of analysis paralysis for about a week.</p>
<p>I was trying so hard to be clever and state of the art that I forgot to get something working.<br />
<span id="more-24"></span><br />
Really, I have an admin login page that&#8217;s done poorly, and a list of user visits that is pointless but follows the RESTful paradigm that&#8217;s so popular nowadays. The admin login <em>works</em>, because I decided I didn&#8217;t care if it was pretty, I just wanted something to work front-to-back, HTML template to database, so I hacked it. The regular login <em>doesn&#8217;t work</em>, because I let myself get scared into trying to use advanced stuff that I don&#8217;t understand when I also don&#8217;t understand the basic stuff intuitively yet.</p>
<p>I dub this antipattern <strong>Prefactoring</strong>. If <a href="http://www.cookcomputing.com/blog/archives/000084.html">premature optimization is the root of all evil</a>, prefactoring is the reason engineering-dominated projects tend to <a href="http://thrillingwonder.blogspot.com/2007/05/all-cranes-are-doomed.html">fall over sideways</a> while the developers, like <a href="http://en.wikipedia.org/wiki/Lotophagi">lotus eaters</a>, are perfectly happy to keep playing with bright shiny new doodads and never get anything working.</p>
<p>I&#8217;m ready to get some stuff working (ugly code, but with tests so I know it works) now. I&#8217;ll refactor it later.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/05/18/prefactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bruce Tate on learning J2EE</title>
		<link>http://www.pervasivecode.com/blog/2007/04/27/bruce-tate-on-learning-j2ee/</link>
		<comments>http://www.pervasivecode.com/blog/2007/04/27/bruce-tate-on-learning-j2ee/#comments</comments>
		<pubDate>Fri, 27 Apr 2007 17:17:44 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/04/27/bruce-tate-on-learning-j2ee/</guid>
		<description><![CDATA[I&#8217;ve been listening to the Ruby on Rails Podcast over the last month or so, starting with the first episode from way back in July 2005 and now I&#8217;m up to the March 10, 2006 episode with Bruce Tate. There&#8217;s a great section in this podcast where Bruce describes the immense amount of information that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been listening to the <a href="http://podcast.rubyonrails.org/">Ruby on Rails Podcast</a> over the last month or so, starting with the first episode from way back in July 2005 and now I&#8217;m up to the <a href="http://podcast.rubyonrails.org/programs/1/episodes/bruce_tate">March 10, 2006 episode with Bruce Tate</a>. There&#8217;s a great section in this podcast where Bruce describes the immense amount of information that programmers have to learn in order to approach J2EE.<br />
<span id="more-22"></span></p>
<p>This section is at <a href="http://en.wikipedia.org/wiki/2112_%28album%29">21:12</a> in the podcast:</p>
<blockquote><p>There are a couple of other interesting markets that I found as I was interviewing people for the book. One of the models was that we found that if there&#8217;s an entrenched Java shop that has religion, you&#8217;re not going to sell them on Rails; don&#8217;t try.</p>
<p>But there was a surprising customer set, and that&#8217;s the set of customers that&#8217;s been very conservative, and they&#8217;re just now getting into Java, and to learn Java they find that they have to learn this set of specifications that&#8217;s about 2-3 feet high, right? This stack of binders, you know?</p>
<p>&#8220;Okay learn this Servlet thing, which means you&#8217;ve got to learn this XML thing to deploy it. Oh this XML thing has added this Namespace thing and this Schema thing, and oh you need some kind of middleware, and the middleware is maybe the Spring framework, or Enterprise JavaBeans, so you have to pick which one. And then once you have that picked, then you have to plug the persistence engine into that. And oh, by the way, after you&#8217;ve picked one, and hopefully picked right, you have to do the web UI and model view controller layer and then you&#8217;re talking about JSPs. And oh what tag library do you want to use with that?&#8221; and it is just absolutely overwhelming.</p></blockquote>
<p>Definitely. I feel lucky that I got started with Java before J2EE, because I kind of understand where JSP and EJB and XML came in and how they grew, and yet there are so many APIs in J2EE that I haven&#8217;t ever used, and honestly I don&#8217;t think I&#8217;ve ever met anybody who used them. It&#8217;s a beast. There&#8217;s a reason why startups that don&#8217;t need asynchronous message queues and &#8220;Java Authorization Contract for Containers&#8221; and all that stuff are sticking with PHP or Ruby on Rails. There&#8217;s just less stuff to learn.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/04/27/bruce-tate-on-learning-j2ee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A funny rant about SOAP</title>
		<link>http://www.pervasivecode.com/blog/2007/02/13/a-funny-rant-about-soap/</link>
		<comments>http://www.pervasivecode.com/blog/2007/02/13/a-funny-rant-about-soap/#comments</comments>
		<pubDate>Tue, 13 Feb 2007 07:48:06 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[articles]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/02/13/a-funny-rant-about-soap/</guid>
		<description><![CDATA[I have encountered SOAP firsthand once (as opposed to reading about it) and I was kind of appalled at its ickiness. It looks like I&#8217;m not the only one; here&#8217;s an amusing post from a couple of months ago:
The S stands for Simple, by Pete Lacey.
]]></description>
			<content:encoded><![CDATA[<p>I have encountered SOAP firsthand once (as opposed to reading about it) and I was kind of appalled at its ickiness. It looks like I&#8217;m not the only one; here&#8217;s an amusing post from a couple of months ago:</p>
<p><a href="http://wanderingbarque.com/nonintersecting/2006/11/15/the-s-stands-for-simple/">The S stands for Simple</a>, by Pete Lacey.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/02/13/a-funny-rant-about-soap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ugly Data Centers</title>
		<link>http://www.pervasivecode.com/blog/2007/01/07/ugly-data-centers/</link>
		<comments>http://www.pervasivecode.com/blog/2007/01/07/ugly-data-centers/#comments</comments>
		<pubDate>Sun, 07 Jan 2007 22:03:16 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[servers]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/?p=10</guid>
		<description><![CDATA[
Pink walls, no cases. Nice!
Where&#8217;s the marinara?

]]></description>
			<content:encoded><![CDATA[<ol>
<li><a href="http://img169.exs.cx/img169/4413/135gp2mo.jpg">Pink walls, no cases.</a> Nice!</li>
<li><a href="http://img224.imageshack.us/img224/8913/datacenterondrugswx2.jpg">Where&#8217;s the marinara?</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/01/07/ugly-data-centers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
