<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ridin&#039; Nerdy</title>
	<atom:link href="http://nerdydeeds.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nerdydeeds.wordpress.com</link>
	<description>The nerdy behavior of a recovering computer geek.</description>
	<lastBuildDate>Thu, 22 Dec 2011 18:19:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nerdydeeds.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Ridin&#039; Nerdy</title>
		<link>http://nerdydeeds.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nerdydeeds.wordpress.com/osd.xml" title="Ridin&#039; Nerdy" />
	<atom:link rel='hub' href='http://nerdydeeds.wordpress.com/?pushpress=hub'/>
		<item>
		<title>scp without using scp—redux</title>
		<link>http://nerdydeeds.wordpress.com/2011/12/22/scp-without-using-scp-redux/</link>
		<comments>http://nerdydeeds.wordpress.com/2011/12/22/scp-without-using-scp-redux/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 18:19:54 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Unix Scripting]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=436</guid>
		<description><![CDATA[ssh -p 2222 user@host 'cd /home/user/ ; tar -c "iwant/" &#124; bzip2 -9 -c' \
&#124; bunzip2 -c &#124; sudo tar -x<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=436&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wrote a short post about 3 years ago called <em><a title="scp without using scp" href="http://nerdydeeds.wordpress.com/2008/12/30/scp-without-using-scp/">scp without using scp</a></em>, and I have found it very helpful to refer back to it from time to time. Today is one of those days, but—surprisingly—it was helpful to someone other than myself. As a result, I decided to post a new example.</p>
<p>Let&#8217;s say we want to compress a directory, transfer it over the network, then decompress it onto our current machine, and do the whole thing without creating temporary files on either system. Here&#8217;s one way to do it:</p>
<pre>sudo <span style="color:#808000;">ssh</span> -p 2222 <em>user</em><span style="color:#003366;">@</span>host <span style="color:#993300;">'cd /home/<em>user</em>/ ; tar -c "<strong>iwant</strong>/" | bzip2 -9 -<strong>c</strong>'</span> \
<span style="color:#ff0000;"><strong>|</strong></span> <span style="color:#808000;">bunzip2</span> -c <span style="color:#ff0000;"><strong>| sudo</strong></span> <span style="color:#808000;">tar</span> -x</pre>
<p>Here&#8217;s how it works:</p>
<ol>
<li>sudo invokes ssh (you may need to enter a password).</li>
<li>SSH connects to the host (server) on port 2222 and authenticates. (You may need to enter a password). A shell is now open on the host.</li>
<li>The shell on the host changes its working directory to /home/user.</li>
<li>Tar begins to compress the files in the <em>iwant</em> directory and sends its output to STDOUT.</li>
<li>bzip2 compresses the data from STDIN (sent by tar) and sends it to STDOUT</li>
<li>The data from STDOUT (sent by bzip2) goes across the network to the machine that initiated the SSH connection and to that process&#8217; STDOUT.</li>
<li>ssh&#8217;s STDOUT is piped to bunzip2&#8242;s STDIN. bunzip2 then writes decompressed data to STDOUT.</li>
<li>sudo starts up tar, which reads from STDIN (uncompressed data from bunzip2) and recreates the directory structure, file names, and file content.</li>
</ol>
<p>To be more concise, the sequence is: connect, tar, compress, network transmit, uncompress, untar, disconnect. The first sudo call is probably unnecessary, but the second one is required if you lack write permission to your current directory.</p>
<p>The quickest way to test this is to ssh to localhost. Getting the command exactly right can be tricky, so if you&#8217;re trying to transfer large files this way, it&#8217;s a good idea to test the command locally first.</p>
<p>So, there you have it: compressed data transfers without temp files. Whether or not you get faster transfer speeds is another story. Each situation is different. You can find the answer to that on your own.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/436/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=436&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2011/12/22/scp-without-using-scp-redux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>Time Warner Cable Hates Its Customers</title>
		<link>http://nerdydeeds.wordpress.com/2011/05/14/time-warner-cable-hates-its-customers/</link>
		<comments>http://nerdydeeds.wordpress.com/2011/05/14/time-warner-cable-hates-its-customers/#comments</comments>
		<pubDate>Sat, 14 May 2011 05:44:54 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=427</guid>
		<description><![CDATA[It&#8217;s one thing to be small, underfunded, and just plain lacking the time and resources to be thorough. I get that. I can relate to that. But when you&#8217;re one of the largest Internet Service Providers in the US, lack of resources probably isn&#8217;t the cause of awful customer service experiences. While I could try [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=427&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s one thing to be small, underfunded, and just plain lacking the time and resources to be thorough. I get that. I can relate to that.</p>
<p>But when you&#8217;re one of the largest Internet Service Providers in the US, lack of resources probably isn&#8217;t the cause of awful customer service experiences. While I could try to be fair and track down some real, underlying cause to my present frustration, I will go the simple route and claim institutional malevolence. It&#8217;s more satisfying, and probably more accurate anyway.</p>
<p>Here&#8217;s the problem: the billing service I&#8217;ve been using–you know, the system they use to get money from me every month–is being upgraded or migrated or whatever. Yep, the old <span style="font-size:120%;">PayXpress<sup>SFTM</sup></span> system won&#8217;t be accepting its own logins anymore, so now customers will all use  something they (so cleverly) call <span style="font-size:120%;">MyServices<sup>RFSFTM</sup></span>. But they <em>never</em> notified me that I was going to be forced into this new system. And they did <em>nothing</em> to prepare me for it, much less to make it easy.</p>
<p>Let me repeat myself: I received no notices of this migration. Not in the mail, not a phone call, not an email. I think I&#8217;m entitled to at least one email for an event like this, but maybe my expectations are just too high. But this wasn&#8217;t even mentioned in the monthly &#8220;newsletter&#8221; email they send me (that I filter and never read because it&#8217;s full of dumb, useless crap). Silence. That&#8217;s it.</p>
<p>So where was the problem? Well, in their eagerness to migrate my account to the new system, they are actively preventing me from getting into the old system. That&#8217;s pretty much the definition of malevolent, if you ask me. From a user&#8217;s perspective, it is disorienting, frustrating, and time-wasting. And wasting a customer&#8217;s time is not amoral. Treating customers in this manner cannot be for technical reasons: the old login still works. The customer&#8217;s experience is simply not a priority: the needs of the bureaucracy come first.</p>
<p>Now I&#8217;ve been through the friendly version of this type of activity with other companies, and it doesn&#8217;t have to be so bad. It goes like this: log in like you always do, and do what you always do; when you&#8217;re ready, or you&#8217;re out of time, follow a link to complete the migration steps. In this case, I still have more than 30 days before the migration deadline, so it&#8217;s not like I&#8217;ve been procrastinating. I&#8217;m practically being forced to migrate a month ahead of their own schedule, with utter and complete disregard for my own schedule.</p>
<p>So what made this process so painful and obnoxious that it deserves a blog post? Well, they decided that I needed to pointlessly re-enter data such as my &#8220;account number&#8221; and &#8220;customer code.&#8221; Information that I–and this may come as a surprise to the idiots who planned this migration–actually <em>don&#8217;t</em> have on hand. Even though I&#8217;ve had this account for over a year and a half. I just can&#8217;t get motivated to memorize an account number I&#8217;ve looked at just once in 18 months.</p>
<p>Why don&#8217;t I have these numbers on hand? Because I use paperless billing. I always have. And that information is only found on my billing statement. Which is only online. (Really.) Which I can only access through the old <span style="font-size:120%;">PayXpress<sup>SFTM</sup></span> system. (Seriously.) The same system whose login page is being actively and maliciously hidden from me.</p>
<p>Now remember this is a migration: they already have all of my personal information: name, address, username, password, etc. Forcing me to re-enter information that has already been verified is a waste of my time. It&#8217;s disrespect for my time. Especially when it&#8217;s information you made up yourself in the first place.</p>
<p>Entering this data certainly doesn&#8217;t make the migration process more &#8220;secure,&#8221; but I&#8217;d bet they&#8217;d be willing to try that lie out if they thought they could get away with it. Obviously if I have a working username and password, which I can use to log in and look up the information you&#8217;re asking for, there is no added security involved in my pointlessly reentering that same information.</p>
<p>And honestly, who keeps a copy of their cable bill within easy reach at all times? News flash Time Warner Cable: your customers don&#8217;t love you that much! Quite the opposite in my case: I really have less than no desire to go searching my house for a piece of paper with your logo on it. I&#8217;ve got better things to do with my time. It makes me hate you even more than I already do.</p>
<p>So how did I solve this little catch-22? Well, I did manage to find the login page for the old system, but it&#8217;s not on any of the pages that try to &#8220;help&#8221; you through the process of getting onto the new system. Once I did get in, I looked up an old billing statement and found the information they wanted. Which they already had. Obviously. Whatever. And just to make a point, I paid my bill one last time using the old system before migrating to the new one. But it&#8217;s still really stupid to force me to enter data that&#8217;s already stored on your system. And I&#8217;m still irritated about this whole process. In a world of ETL and web services, such things are inexcusable.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/427/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=427&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2011/05/14/time-warner-cable-hates-its-customers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>Fun With Shared Libraries</title>
		<link>http://nerdydeeds.wordpress.com/2011/05/03/fun-with-shared-libraries/</link>
		<comments>http://nerdydeeds.wordpress.com/2011/05/03/fun-with-shared-libraries/#comments</comments>
		<pubDate>Wed, 04 May 2011 04:40:51 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix Scripting]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/2011/05/03/fun-with-shared-libraries/</guid>
		<description><![CDATA[Fun With Shared Libraries, or, <em>How to install subversion and its dependencies without root access</em>
<pre><span style="color:#3366ff;">#!/bin/sh</span>
<span style="color:#808080;">/lib64/<strong>ld-linux-x86-64.so.2</strong></span> <span style="color:#808000;">--library-path</span> <span style="color:#800000;">'/home/me/usr/lib64:/usr/lib64:/lib64'</span> <strong>~</strong><span style="color:#808080;">/usr/bin/<strong>svn</strong></span> <span style="color:#000080;">$*</span></pre><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=420&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I use a very inexpensive web hosting service for some of my private projects. One downside is my total lack of root access. This isn&#8217;t such a bad deal except the setup doesn&#8217;t have a lot of the tools I&#8217;m used to using, like Subversion. And I can&#8217;t use <code>yum</code> or <code>rpm</code> to install it. Because I don&#8217;t have root. And building Subversion from source is painful. Especially when I don&#8217;t have some of the shared libraries it requires. And I can&#8217;t install them. Because I don&#8217;t have root.</p>
<p>There is a workaround, though the documentation isn&#8217;t the greatest. It involves using a program called <code>ld-linux.so</code>. (It&#8217;s not in <code>/bin</code>, but try <code>`man ld-linux.so`</code> for documentation.) I should mention I&#8217;m on a 64-bit installation, as that affects the commands I use. Here&#8217;s more or less the steps to take:</p>
<ol>
<li>Download pre-built binaries of <code>neon-0.28.4-1.x86_64.rpm</code> and <code>subversion-1.6.16-1.rhel5.x86_64.rpm</code>. I used <code>wget</code>, but <code>curl</code> or some other tool is fine as well.</li>
<li>Convert the rpm files to cpio files (<code>rpm2cpio package.rpm &gt; package.cpio</code>)</li>
<li>Extract the files through a process of trial and error. This means running <code>`cpio -i &lt; package.cpio`</code> and then looking through the errors and running <code>`mkdir -p /missing/cpio/path`</code> as many times as is needed.</li>
<li>Move the various files to my home directory (e.g. <code>/home/me/usr/lib64</code>, <code>/home/me/usr/bin</code>).</li>
<li>Create some variation of this script, one for each binary you want to run:</li>
</ol>
<pre><span style="color:#3366ff;">#!/bin/sh</span>
<span style="color:#808080;">/lib64/<strong>ld-linux-x86-64.so.2</strong></span> <span style="color:#808000;">--library-path</span> <span style="color:#800000;">'/home/me/usr/lib64:/usr/lib64:/lib64'</span> <strong>~</strong><span style="color:#808080;">/usr/bin/<strong>svn</strong></span> <span style="color:#000080;">$*</span></pre>
<p>And that&#8217;s enough to make it work! To run a 32-bit app, use something like <code>/lib/ld-linux.so.2</code> instead.</p>
<p>Alternatively, you can add LD_LIBRARY_PATH to your .profile. That&#8217;s supposedly the Wrong Way™ to do it, but it will work, and it would eliminate the need for creating scripts and calling <code>ld-linux.so</code>. Note carefully that you must use &#8216;export&#8217; when setting <code>LD_LIBRARY_PATH</code>. I didn&#8217;t realize this until I saw someone&#8217;s working example. Like I said, the documentation isn&#8217;t the greatest. Something like this:</p>
<pre><span style="color:#008000;">LIBRARY32</span>=<span style="color:#800000;">/lib:/usr/lib:/usr/share/lib</span>
<span style="color:#808080;">export</span> <span style="color:#008000;">LD_LIBRARY_PATH</span>=<span style="color:#800000;">/home/me/usr/lib64:/usr/lib64:/lib64:</span><span style="color:#000080;">$LIBRARY32</span></pre>
<p>Not being able to install shared libraries makes life difficult. Sure it&#8217;s nice that I can run <code>`ldd ~/usr/bin/svn |grep 'not found'`</code> but that just tells me what&#8217;s missing. What would be really nice is a way to change the location of <code>/etc/ld.so.cache</code> for my user account&#8217;s environment. I certainly haven&#8217;t found any evidence that such a thing is possible, but it would be nice. Indeed, that seems like a fairly useless parameter for <code>ldconfig</code> to support except for that rare person who is just trying to test <code>ldconfig</code> itself.</p>
<p>So there you have it: a way to install Subversion when you lack root access and are missing required libraries. It&#8217;s actually fairly easy, once you know what to do. Much of the process could be automated with some shell scripts, but I&#8217;m not motivated enough to spend an hour or two writing them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/420/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=420&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2011/05/03/fun-with-shared-libraries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>XML Schema—An Amateur Mistake</title>
		<link>http://nerdydeeds.wordpress.com/2011/04/18/xml-schema%e2%80%94an-amateur-mistake/</link>
		<comments>http://nerdydeeds.wordpress.com/2011/04/18/xml-schema%e2%80%94an-amateur-mistake/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 02:07:49 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=404</guid>
		<description><![CDATA[<code>minOccurs</code> and <code>maxOccurs</code> should typically be used on <code>element</code>s, not on <code>sequence</code>s<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=404&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently built a decent-sized schema for a project I&#8217;ve been working on, and I made a rather simple mistake with repeating elements in a <code>ComplexType</code>. It wasn&#8217;t entirely a mistake, since it was perfectly valid schema markup, but my intended meaning and the schema&#8217;s actual meaning were different. So I refer to it as a mistake. I had something like this:</p>
<pre>&lt;complexType name="SpeciaRepeatingType"&gt;
	&lt;sequence minOccurs=1" maxOccurs="unbounded"&gt;
		&lt;element name="RepeatValue" type="custom:RepeatType" /&gt;
	&lt;/sequence&gt;
&lt;/complexType&gt;</pre>
<p>I used this idiom in several places, which turned out to be a huge problem. The <code>wsdl2java</code> tool I was using just couldn&#8217;t handle this markup. Here is why: the schema doesn&#8217;t actually have a repeating element of type <code>RepeatType</code> as I intended. In actuality it has a repeating <em><code>sequence</code></em>, and that sequence has only one element in it—of type <code>RepeatType</code>.</p>
<p>While that does not excuse the bad behavior of <code>wsdl2java</code>, it does not mean that I had expressed my intent correctly. What I really wanted was this:</p>
<pre>&lt;complexType name="SpeciaRepeatingType"&gt;
	&lt;sequence&gt;
		&lt;element name="RepeatValue" type="custom:RepeatType"
			minOccurs=1" maxOccurs="unbounded" /&gt;
	&lt;/sequence&gt;
&lt;/complexType&gt;</pre>
<p>So there you have the correct way to do it: <code>minOccurs</code> and <code>maxOccurs</code> should typically be used on <code>element</code>s, not on <code>sequence</code>s. Especially if you are using some WSDL parsing tool. It&#8217;s that simple.</p>
<p>Another lesson to learn is this: even if Eclipse can generate schema-compliant test documents, you can still have problems with your WSDL. Interoperability is more than just a valid XML Schema.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/404/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=404&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2011/04/18/xml-schema%e2%80%94an-amateur-mistake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>ICEfaces And HTML Buttons</title>
		<link>http://nerdydeeds.wordpress.com/2011/01/15/icefaces-and-html-buttons/</link>
		<comments>http://nerdydeeds.wordpress.com/2011/01/15/icefaces-and-html-buttons/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 22:09:18 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Saepio]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=396</guid>
		<description><![CDATA[Extend the behavior of an existing JSF renderer to get different output.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=396&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So the designer at work yesterday was complaining about how limited his options are when styling our application&#8217;s buttons. This is because we use ICEfaces, and it renders its buttons with markup like this:</p>
<pre>&lt;input type="button" class="iceCmdBtn " value="delete"
    onclick="iceSubmitPartial(form, this, event);return false;" /&gt;</pre>
<p>Now, I&#8217;m not an expert in CSS, but in the last 2 years I&#8217;ve worked with 2 very good designers, and both have complained about this behavior. The most recent complaint came on the heels of a bunch of JSF calendar rendering work I had been doing, so I am now the first person in my company to have experience with the low-level details needed to make this work. So within 15 minutes I had a solution put together. In fact, the hardest part was to figure out what to put in the configuration files.</p>
<p>In my project&#8217;s <code>WEB-INF/faces-config.xml</code> (based on what I found in <code>/icefaces/component/conf/META-INF/faces-config.xml</code>):</p>
<pre style="overflow:scroll;">&lt;render-kit&gt;
    &lt;render-kit-id&gt;ICEfacesRenderKit&lt;/render-kit-id&gt;
    &lt;render-kit-class&gt;com.icesoft.faces.renderkit.D2DRenderKit&lt;/render-kit-class&gt;
    &lt;renderer&gt;
        &lt;component-family&gt;javax.faces.Command&lt;/component-family&gt;
        &lt;renderer-type&gt;com.icesoft.faces.Button&lt;/renderer-type&gt;
        &lt;renderer-class&gt;com.inco5.jsf.ice.renderkit.ButtonRenderer&lt;/renderer-class&gt;
    &lt;/renderer&gt;
&lt;/render-kit&gt;</pre>
<p>Then, to actually get different output, I needed to extend the existing ICEfaces button renderer. My class file looked a bit like this:</p>
<pre style="overflow:scroll;"><span style="color:#666699;font-weight:bold;">package</span> com.inco5.jsf.ice.renderkit;
<span style="color:#666699;font-weight:bold;">public class</span> ButtonRenderer <span style="color:#666699;font-weight:bold;">extends</span> com.icesoft.faces.component.ext.renderkit.ButtonRenderer
    <em>@Override</em>
    <span style="color:#666699;font-weight:bold;">public void</span> encodeBegin(<span style="color:#666699;font-weight:bold;">final</span> FacesContext facesContext, <span style="color:#666699;font-weight:bold;">final</span> UIComponent uiComponent) throws IOException {
    …
    <span style="color:#666699;font-weight:bold;">final</span> Element root = domContext.createElement("button");
    …
    }</pre>
<p>So there you have it: a proper <code>&lt;button&gt;</code> tag, and all the benefit that goes along with it. I don&#8217;t know what all the potential side-effects of the change might be, but it is nice to know how easy it can be to alter the behavior of a tool that doesn&#8217;t always cooperate in ways we would like.<br />
<strong>2011-01-18 Update</strong> — Here is a markup sample:</p>
<pre style="overflow:scroll;">&lt;button class="iceCmdBtn myButtonClass"
    id="js_01_:myform:mybutton" name="js_01_myform:mybutton"
    onclick="iceSubmitPartial(form, this, event);return false;"
&gt;&lt;span&gt;My Button&lt;/span&gt;&lt;/button&gt;</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/396/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=396&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2011/01/15/icefaces-and-html-buttons/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>Unhelpful JSF Error</title>
		<link>http://nerdydeeds.wordpress.com/2010/12/07/unhelpful-jsf-error/</link>
		<comments>http://nerdydeeds.wordpress.com/2010/12/07/unhelpful-jsf-error/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 21:37:10 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[error messages]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=386</guid>
		<description><![CDATA[Getting the error message "Property 'propertyName' not readable on type java.lang.String"? Make your class public!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=386&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I certainly haven&#8217;t the time to blog about every unhelpful error message I find, especially not when it comes to frameworks. Good error handling is an art, and even the best projects aren&#8217;t likely to get it all right. And then there&#8217;s JSF. Or, at least, JSF as I&#8217;m using it now: the 1.2 API, MyFaces, ICEfaces, all running on Jetspeed 2. I&#8217;ve become numb to the bad error messages, mostly. You get used to them after a while, and even start to understand them.</p>
<p>This particular case had me up until midnight with nothing but frustration to show for it. After a bit of sleep (one of the key elements of software debugging that is often overlooked) it dawned on me what my problem was. Consider the code:</p>
<pre>public Class MyBean
{
    enum MyEnum {
        VAR1,
        VAR2;
        public String getTitle() {
            return name().toLowerCase();
        }
    }
    …
}</pre>
<p>And the related facelet markup:</p>
<pre>#{myEnumValue.class} is titled '#{myEnumValue.title}'</pre>
<p>It seemed to be straightforward, but I kept getting this error message:</p>
<pre>Property 'title' not readable on type java.lang.String</pre>
<p>And what kept bugging me was the fact that <code>#{myEnumValue.class}</code> worked when it was by itself (it would output <code>MyBean.MyEnum</code>). I could clearly see the class name, and it looked just fine. But as soon as I added in the title property, I would get the error message again. Obviously <code>myEnumValue</code> was not a <code>String</code>, so why does the error message say that it is?</p>
<p>As it turns out, my <code>Enum</code> wasn&#8217;t public, and so apparently the methods on it could not be invoked. Rather than telling me that, the expression evaluator decided to coerce the <code>Enum</code> into a String and then see if the property I wanted was part of the <code>String</code> class. It wasn&#8217;t. Here&#8217;s the solution:</p>
<pre>public Class MyBean
{
    public enum MyEnum {
    …
    }
}</pre>
<p>So there you have it: one more strange error message deciphered. I hope others will spend less time tracking down these types of errors than I do.</p>
<p>And the real moral of the story? Well, first, error handling is hard. While string coercion may be a good strategy for this situation, the fallback error message proves unhelpful. Better to capture the message that triggered the fallback and return it instead. Unfortunately, that requires that your error handling strategy can maintain such a message and know when to use it. So a second moral is, be prepared for error handling to get much more complex as your requirements expand.</p>
<p>Beyond that, you&#8217;ll have to wait for a future article where I will explain in more detail the design flaw that makes this particular error possible. I will update this post to point to the new article when it is complete.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/386/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=386&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2010/12/07/unhelpful-jsf-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>Maven Archetypes and Required Properties</title>
		<link>http://nerdydeeds.wordpress.com/2010/10/07/maven-archetypes-and-required-properties/</link>
		<comments>http://nerdydeeds.wordpress.com/2010/10/07/maven-archetypes-and-required-properties/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 17:41:47 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[error messages]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=366</guid>
		<description><![CDATA[While the <code>archetype-metadata.xml</code> file has a section called <code>requiredProperties</code>, it doesn't actually work unless a corresponding <code>src/site/site.xml</code> file exists in your archetype's project. Weird but true fact.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=366&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While the <code>src/main/resources/META-INF/maven/archetype-metadata.xml</code> file has a section called <code>requiredProperties</code>, it doesn&#8217;t actually work unless a corresponding <code>src/site/site.xml</code> file exists in your archetype&#8217;s project. Weird but true fact. If you want to use custom properties (and I recommend that you do), go ahead and create that site.xml, even if it is just a skeleton.</p>
<p>I figured this out by accident when I was trying to fix the following error message produced by <code>archetype:generate</code>:</p>
<pre>[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).

Project ID: unknown

Reason: Could not find the model file '/home/user/projects/test/newsubproject'. for project unknown

[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.reactor.MavenExecutionException: Could not find the model file '/home/user/projects/test/newsubproject'. for project unknown
at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:378)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:292)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.project.ProjectBuildingException: Could not find the model file '/home/user/projects/test/newsubproject'. for project unknown
at org.apache.maven.project.DefaultMavenProjectBuilder.readModel(DefaultMavenProjectBuilder.java:1557)
at org.apache.maven.project.DefaultMavenProjectBuilder.buildFromSourceFileInternal(DefaultMavenProjectBuilder.java:504)
at org.apache.maven.project.DefaultMavenProjectBuilder.build(DefaultMavenProjectBuilder.java:198)
at org.apache.maven.DefaultMaven.getProject(DefaultMaven.java:583)
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:461)
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:534)
at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:365)
... 11 more
Caused by: java.io.FileNotFoundException: /home/user/projects/test/newsubproject (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:106)
at hidden.org.codehaus.plexus.util.xml.XmlReader.(XmlReader.java:123)
at hidden.org.codehaus.plexus.util.xml.XmlStreamReader.(XmlStreamReader.java:67)
at hidden.org.codehaus.plexus.util.ReaderFactory.newXmlReader(ReaderFactory.java:113)
at org.apache.maven.project.DefaultMavenProjectBuilder.readModel(DefaultMavenProjectBuilder.java:1552)
... 17 more</pre>
<p>Incidentally, the solution to that problem was to rename the <code>pom.xml</code> file in the directory I was executing the command in (<code>/home/user/projects/test/pom.xml</code>). Apparently it&#8217;s not possible generate a project inside another project. The error message is entirely unintuitive, but you probably expected that if you&#8217;re a Maven veteran.</p>
<p>So there are two quick, helpful Maven tips that I hope will help you as much as it helped me.</p>
<p style="font-size:smaller;">Footnote:<br />I should mention that I was helped by <a href="http://stackoverflow.com/users/105741/antony-stubbs">Antony Stubbs</a> on Stack Overflow. He had responded to a post from Hardik Mehta, who also <a href="http://hardikmehta.wordpress.com/2009/07/09/maven-quirk/">wrote about it</a> on his <code>cout</code> blog. Thanks guys.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/366/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=366&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2010/10/07/maven-archetypes-and-required-properties/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>Acer Aspire One Netbook Video Capture</title>
		<link>http://nerdydeeds.wordpress.com/2010/09/14/acer-aspire-one-netbook-video-capture/</link>
		<comments>http://nerdydeeds.wordpress.com/2010/09/14/acer-aspire-one-netbook-video-capture/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 03:53:10 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[video editing]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=364</guid>
		<description><![CDATA[So my wife was wanting to capture video using her netbook and… it appears to be impossible with the bundled software! She has an Acer Aspire One A0751h with built-in webcam running Windows Vista. Well, in the one year and 5 days since I purchased the laptop, Acer has released zero updates, so I assume [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=364&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So my wife was wanting to capture video using her netbook and… it appears to be impossible with the bundled software! She has an Acer Aspire One A0751h with built-in webcam running Windows Vista. Well, in the one year and 5 days since I purchased the laptop, Acer has released zero updates, so I assume downloading their software will do no good. Worse, Microsoft removed the video capture feature from Movie Maker specially for Vista (and probably later versions) so I wasn&#8217;t sure what to do. I searched around and found nothing (Google needs better algorithms).</p>
<p>Finally, I stumbled upon the solution, which I should have thought of in the first place. <a href="http://www.virtualdub.org/">VirtualDub</a>. It took a little coaxing to get the audio capture to work (I ended up selecting the USB webcam option) and the audio was out of sync so I had to adjust it in post processing (I set one file to -1100ms, the other -1550ms). All in all, though, it worked pretty well with minimal hassle. Yes, VirtualDub&#8217;s UI isn&#8217;t the most friendly, but it works, and I&#8217;m happy about that. An amazing piece of open source software.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/364/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=364&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2010/09/14/acer-aspire-one-netbook-video-capture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>STM and Deuce</title>
		<link>http://nerdydeeds.wordpress.com/2010/09/07/stm-and-deuce/</link>
		<comments>http://nerdydeeds.wordpress.com/2010/09/07/stm-and-deuce/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 22:14:11 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[concurrency]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=353</guid>
		<description><![CDATA[Earlier today I found a cool project called Deuce STM. Since it seems to be mostly annotation-driven, it places no burden on javac, and relies on bytecode manipulation during classloading. I hope to have a reason to try it out soon. If I do, and it doesn&#8217;t have a Maven plugin, I will likely write [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=353&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Earlier today I found a cool project called <a href="http://www.deucestm.org/">Deuce STM</a>. Since it seems to be mostly annotation-driven, it places no burden on <code>javac</code>, and relies on bytecode manipulation during classloading. I hope to have a reason to try it out soon. If I do, and it doesn&#8217;t have a Maven plugin, I will likely write one, since it supports rewriting <code>jar</code> files to avoid classloader delays at runtime.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/353/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=353&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2010/09/07/stm-and-deuce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
		<item>
		<title>On Building State Machines</title>
		<link>http://nerdydeeds.wordpress.com/2010/06/23/on-building-state-machines/</link>
		<comments>http://nerdydeeds.wordpress.com/2010/06/23/on-building-state-machines/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 15:54:40 +0000</pubDate>
		<dc:creator>nerdydeeds</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://nerdydeeds.wordpress.com/?p=201</guid>
		<description><![CDATA[When building a state machine, first get your conditionals right (test them!), then worry about transitions.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=201&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When building a state machine, first get your conditionals right (test them!), then worry about transitions.</p>
<p>More precisely, before working on a given transition, first complete all the conditionals required for it. Do this for each transition. If there are a number of transitions, it doesn&#8217;t necessarily make sense to work out all the conditionals for every transition before building any of the transitions, but it does make sense to approach it iteratively. Automated testing can be very helpful, since you can write unit tests for the conditionals, then once those pass you can test the transition results.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nerdydeeds.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nerdydeeds.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nerdydeeds.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nerdydeeds.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nerdydeeds.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nerdydeeds.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nerdydeeds.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nerdydeeds.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nerdydeeds.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nerdydeeds.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nerdydeeds.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nerdydeeds.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nerdydeeds.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nerdydeeds.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nerdydeeds.wordpress.com&amp;blog=797121&amp;post=201&amp;subd=nerdydeeds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nerdydeeds.wordpress.com/2010/06/23/on-building-state-machines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92a10a7ccb8296747bfdbdb894949c32?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nerdydeeds</media:title>
		</media:content>
	</item>
	</channel>
</rss>
