<?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>Nelz&#039;s Blog &#187; General</title>
	<atom:link href="http://nelz.net/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://nelz.net</link>
	<description>Ruminations on Development</description>
	<lastBuildDate>Sun, 06 May 2012 20:45:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nelz.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/b1e8ad2c035555285ea1c88e99d66b4d?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Nelz&#039;s Blog &#187; General</title>
		<link>http://nelz.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nelz.net/osd.xml" title="Nelz&#039;s Blog" />
	<atom:link rel='hub' href='http://nelz.net/?pushpress=hub'/>
		<item>
		<title>Occupation Scholarship</title>
		<link>http://nelz.net/2011/10/06/occupation-scholarship/</link>
		<comments>http://nelz.net/2011/10/06/occupation-scholarship/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 16:11:33 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=487</guid>
		<description><![CDATA[Last night I had an idea. I want to support the Occupy Wall Street movement, but I don&#8217;t have the time to actually fly out to NYC to sit with everyone. But, I do have enough discretionary cash around that I could buy the flight. Why not find someone (or several someones) how is either [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=487&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="Occupy Wall Street by _PaulS_, on Flickr" href="http://www.flickr.com/photos/kapkap/6189131120/"><img class="aligncenter" src="http://farm7.static.flickr.com/6169/6189131120_5fd64e296c.jpg" alt="Occupy Wall Street" width="500" height="333" /></a><br />
Last night I had an idea. I want to support the <a href="http://occupywallst.org" target="_blank">Occupy Wall Street</a> movement, but I don&#8217;t have the time to actually fly out to NYC to sit with everyone. But, I do have enough discretionary cash around that I could buy the flight. Why not find someone (or several someones) how is either flexibly- or un-employed, and I can send them to represent both their voices as well as mine?</p>
<p>I went about casting a net on <a href="http://twitter.com/nelz9999" target="_blank">my Twitter account</a>, and I already have two potential occupiers lined up. But, from that post I also received encouragement to scale this up and accept donations.</p>
<p>I&#8217;ve never done this before, but I signed up for an account on <a href="http://www.wepay.com" target="_blank">WePay</a>. I am now <a href="https://www.wepay.com/donate/151224" target="_blank">accepting donations</a> if anyone wants to add their support sending people to sit with the #OWS movement.</p>
<p>This blog post serves as a way of providing the <em>social proof</em> of who is behind the donation page. If you donate and you don&#8217;t like how your money got spent, <strong>I</strong> am the guy you&#8217;re going to come talk to.</p>
<p>So, if you want to help have your voice, as a part of the 99%, to be heard but you don&#8217;t have the time to spare, please consider donating.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/487/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=487&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2011/10/06/occupation-scholarship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>

		<media:content url="http://farm7.static.flickr.com/6169/6189131120_5fd64e296c.jpg" medium="image">
			<media:title type="html">Occupy Wall Street</media:title>
		</media:content>
	</item>
		<item>
		<title>Pertinent Negatives, as Applied to Software</title>
		<link>http://nelz.net/2011/09/09/pertinent-negatives-as-applied-to-software/</link>
		<comments>http://nelz.net/2011/09/09/pertinent-negatives-as-applied-to-software/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 22:11:25 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=482</guid>
		<description><![CDATA[At one point in my life, I was a volunteer Firefighter/EMT. During my time working in paramedicine, I learned a valuable concept: the pertinent negative. Let&#8217;s say you&#8217;re examining someone who fell from a height. In your report you node that yes, they had a laceration on their hand. But it is also important to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=482&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/seattlemunicipalarchives/4058808958/"><img class="aligncenter" title="EMTs and Paramedics" src="http://farm3.static.flickr.com/2681/4058808958_c5a3b7b213.jpg" alt="EMTs and Paramedics On-Scene" width="500" height="236" /></a></p>
<p>At one point in my life, I was a volunteer Firefighter/EMT. During my time working in paramedicine, I learned a valuable concept: the <em>pertinent negative</em>.</p>
<p>Let&#8217;s say you&#8217;re examining someone who fell from a height. In your report you node that yes, they had a laceration on their hand. But it is also important to note that you examined them and found no evidence of any other broken limbs. <strong>Not</strong> noting your investigation into broken limbs could mean one of two things: either you didn&#8217;t check their limbs, or you did and found nothing of concern.</p>
<p>By noting the <em>pertinent negative</em>, you clear up that ambiguity.</p>
<p>I find this concept incredibly useful in software. Frequently, I need a pertinent negative to do my job well. (Did that script complete without errors, or did it not even run? In a report, a 0 entry tells me that the item did fit my search criteria and it had no requests. Etc.)</p>
<p>I have to say that this concept of pertinent negatives keenly reminds me of how important an &#8216;invention&#8217; zero was.</p>
<span style="text-align:center; display: block;"><a href="http://nelz.net/2011/09/09/pertinent-negatives-as-applied-to-software/"><img src="http://img.youtube.com/vi/Nvc2PPTlW7k/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/482/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=482&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2011/09/09/pertinent-negatives-as-applied-to-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2681/4058808958_c5a3b7b213.jpg" medium="image">
			<media:title type="html">EMTs and Paramedics</media:title>
		</media:content>
	</item>
		<item>
		<title>Business Card Etiquette</title>
		<link>http://nelz.net/2011/03/21/business-card-etiquette/</link>
		<comments>http://nelz.net/2011/03/21/business-card-etiquette/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 20:37:59 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=472</guid>
		<description><![CDATA[I recently went to my second South by Southwest Interactive (SxSW or SxSWi) in Austin, TX. If you&#8217;re not familiar with the conference, it is a 5-day internet and technology subsection of the greater SXSW conference which also has Music and Film components. SxSWi has a long history of being a great place for cutting-edge [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=472&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="IMG_20110304_094523 by nelz9999, on Flickr" href="http://www.flickr.com/photos/nelz9999/5497528220/"><img class="aligncenter" src="http://farm6.static.flickr.com/5051/5497528220_ba489fa4bc_m.jpg" alt="IMG_20110304_094523" width="240" height="179" /></a></p>
<p>I recently went to my second <a href="http://sxsw.com/interactive" target="_blank">South by Southwest Interactive</a> (SxSW or SxSWi) in Austin, TX. If you&#8217;re not familiar with the conference, it is a 5-day internet and technology subsection of the greater SXSW conference which also has Music and Film components.</p>
<p>SxSWi has a long history of being a great place for cutting-edge technology makers and creators to mingle and share ideas. I personally saw, felt, and benefited from this great tradition. However, people who have been attending the conference for more than 3 years say that it has changed substantially as its influence has been recognized, and there are continually growing populations of the &#8216;business-y&#8217; (read &#8216;douchebag&#8217;) hangers-on: marketers, salespeople, and those I think of as &#8216;traders in idea derivatives&#8217;. (Luckily, for my part, I was able to find a tribe of people who are actually creative and engaged in what they do, so I was able to minimize my exposure to the unsavory, financially-motivated elements.)</p>
<p>But not fully. There are several blog posts I&#8217;m sure I could write about the interactions between &#8216;the Makers&#8217; and &#8216;the Sellers&#8217;, but one aspect of our differences really calls out to me for comment: business cards.</p>
<p>Some people can be really, really intense about business cards. (<a href="http://bit.ly/gcIcS2" target="_blank">Check out this guy.</a>) In some business cultures, not treating <a href="http://boingboing.net/2009/02/19/business-card-etique.html" target="_blank">the business card exchange with the proper respect</a> can end up costing you potential partners.</p>
<p>My impression is that at SxSW, people think of business card dispensing as a quantity-over-quality proposition. Some members (with whom I am friends) of the &#8220;How Not to Be a Douchebag at SXSW&#8221; panel (<a href="http://www.geeked.info/how-to-not-be-a-douchebag-at-sxsw-wrap-up/" target="_blank">2010</a>, <a href="http://www.geeked.info/how-i-did-sxsw-2011/" target="_blank">2011</a>) panel even give advanced warnings that there are people who approach business-card delivery in this manner.</p>
<p>The whole business card thing is so ripe for mockery that <a href="http://twitter.com/scottyiseri" target="_blank">@scottyiseri</a> and I created a fake &#8216;Angel Investment&#8217; firm, just so we could give out the fake business cards you see at the top of the post. (I ended up dispensing these cards out to friends, so they could in turn use them as a way to avoid giving their actual information to someone who was being egregiously douche-y.)</p>
<p>But it wasn&#8217;t the blatant card-distributors that got to me, it was the nuanced ones. After one session, I ended up with a card from a recruiter from North Carolina, and another from a small-business efficiency consultant from New Jersey. These cards were handed to me while I was having actual, pertinent conversation about the session with the card-givers. Twenty minutes later in my hotel room I was tearing the cards up and throwing them away. I had zero need for these cards.</p>
<p>On the plane ride home I got to thinking about those cards. I realized that every single unwanted card that ended up in my possession was a symbol of laziness: my laziness in protecting my integrity. (And I&#8217;m pretty into my integrity.) If I have absolutely no interest in your business card, and have no intent of ever trying to contact you ever again, why accept the business card? (You may say &#8216;politeness&#8217;, but I don&#8217;t buy it, because any &#8216;good&#8217; marketer will politely bully their way into your wallet if you give them the chance.)</p>
<p>Going forward I have a new resolution. I will no longer passively accept business cards, I will either actively accept (less likely) or actively reject (more likely) any business card that is offered to me.</p>
<p>Will you join me? (Why not?)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/472/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=472&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2011/03/21/business-card-etiquette/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>

		<media:content url="http://farm6.static.flickr.com/5051/5497528220_ba489fa4bc_m.jpg" medium="image">
			<media:title type="html">IMG_20110304_094523</media:title>
		</media:content>
	</item>
		<item>
		<title>Gawd Damn Spam</title>
		<link>http://nelz.net/2011/02/23/gawd-damn-spam/</link>
		<comments>http://nelz.net/2011/02/23/gawd-damn-spam/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 07:09:00 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=467</guid>
		<description><![CDATA[So, I go to check some traffic stats on one of my silly sites, and I find some wierd referrers: Both of the the Bit.ly referrers (like &#8220;forexmarket&#8221;) just resolves to this URL &#8220;www.plus500.com/SiteNotAvailable.aspx&#8221;. It&#8217;s just a stupid banner page with a big GIF built to look like an actual web page. What the fuck [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=467&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, I go to check some traffic stats on one of my <a href="http://littledrummerboy.info" target="_blank">silly sites</a>, and I find some wierd referrers:</p>
<p><a href="http://nelznet.files.wordpress.com/2011/02/picture-1.png"><img class="aligncenter size-full wp-image-468" title="Spammy Referrers" src="http://nelznet.files.wordpress.com/2011/02/picture-1.png" alt="" width="216" height="213" /></a></p>
<p>Both of the the Bit.ly referrers (like &#8220;forexmarket&#8221;)  just resolves to this URL &#8220;www.plus500.com/SiteNotAvailable.aspx&#8221;.</p>
<p>It&#8217;s just a stupid banner page with a big GIF built to look like an actual web page.</p>
<p><a href="http://nelznet.files.wordpress.com/2011/02/picture-2.png"><img class="aligncenter size-full wp-image-469" title="Spammy Landing Page" src="http://nelznet.files.wordpress.com/2011/02/picture-2.png" alt="" width="604" height="212" /></a></p>
<p>What the fuck is the point? Yah, I was interested enough to investigate it, but only forensically&#8230; There is no way I would ever do any business with this place.</p>
<p>The other thing that frustrates me is that Bit.ly let the redirect through, even though they know it&#8217;s a spammy thing. (A couple of weeks ago when I first found these types of referrers, I tried to follow the link, but Bit.ly warned me about not-above-board behavior of the link. Why no longer?)</p>
<p>Also, the landing page is using Google Analytics. Does this mean all the good tools that those of us who aren&#8217;t devil-spawn are being used by they outright shitheads? I guess I know the answer, even if it does hit me right in my idealism. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/467/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=467&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2011/02/23/gawd-damn-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>

		<media:content url="http://nelznet.files.wordpress.com/2011/02/picture-1.png" medium="image">
			<media:title type="html">Spammy Referrers</media:title>
		</media:content>

		<media:content url="http://nelznet.files.wordpress.com/2011/02/picture-2.png" medium="image">
			<media:title type="html">Spammy Landing Page</media:title>
		</media:content>
	</item>
		<item>
		<title>Project Begets Love for AppEngine and Python at Java&#8217;s Expense</title>
		<link>http://nelz.net/2010/10/28/project-begets-love-for-appengine-and-python-at-javas-expense/</link>
		<comments>http://nelz.net/2010/10/28/project-begets-love-for-appengine-and-python-at-javas-expense/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 07:33:58 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=452</guid>
		<description><![CDATA[The Project For the past year or two I&#8217;ve had an ongoing side project where I post to the Twitter account @bman_countdown. It started out as just a simple countdown, but I realized I could use it as an opportunity to provide more information about the event, so I started to tack on links to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=452&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>The Project</h2>
<p>For the past year or two I&#8217;ve had an ongoing side project where I post to the Twitter account <a href="http://twitter.com/bman_countdown" target="_blank">@bman_countdown</a>. It started out as just a simple countdown, but I realized I could use it as an opportunity to provide more information about the event, so I started to tack on links to relevant content on the <a href="http://burningman.com/" target="_blank">BurningMan.com</a> website.</p>
<p><a href="http://nelznet.files.wordpress.com/2010/10/picture-4.png"><img class="aligncenter size-full wp-image-453" title="countdown_orig" src="http://nelznet.files.wordpress.com/2010/10/picture-4.png" alt="" width="838" height="270" /></a></p>
<p>Over time I&#8217;ve increased the functionality from being a static set of links, to mixing in the most recent blog post from the Burning Blog. (Actually, this functionality just went live <em>today</em>.)</p>
<p><a href="http://nelznet.files.wordpress.com/2010/10/picture-7.png"><img class="aligncenter size-full wp-image-454" title="countdown_modern" src="http://nelznet.files.wordpress.com/2010/10/picture-7.png" alt="" width="844" height="269" /></a></p>
<p>This has been a great &#8216;toy&#8217; project that I use to experiment with different technologies.</p>
<h2>The Environment</h2>
<p>For the first couple of iterations it was a Ruby script that I ran off of my &#8216;media server&#8217; (a Mac Mini which I had set up <a href="http://www.farawaymac.com/mac-server/mac-server-series-initial-setup-of-the-mac/" target="_blank">as recommended by MacMiniColo</a>). To emulate <a href="http://en.wikipedia.org/wiki/Cron" target="_blank">cron</a> functionality, I used <a href="http://en.wikipedia.org/wiki/Launchd" target="_blank">launchd</a> to run the script once a day.</p>
<p>Predictably, this setup caused some hiccups in the continuity of the service: when my ISP service went out; when my router borked; when the hard drive failed; when I moved; etc. (Yay for providing non-mission-critical projects!)</p>
<p>Around the time of the 2010 Burning Man event, <a href="http://dev.twitter.com/pages/basic_to_oauth" target="_blank">Twitter removed the ability to use Basic Auth</a>, which is what the library I used relied upon. I decided the service could take a break right after the event while I figured out what I was going to do with it.</p>
<p>I had done some minor playing with Google AppEngine in Java, so I was familiar with the basic services GAE provides. (I love AppEngine&#8217;s first-class cron support. And the TaskQueue concept ecourages truly asynchronous and scalable design.) But, since this project is what I use to experiment with stuff, I figured I&#8217;d try out Python.</p>
<h2>Meeting Python</h2>
<p>First, I had to get up to speed on Python itself. So, I got the book <a href="http://www.qtrac.eu/py3book.html" target="_blank">Programming in Python 3</a>. I studied several chapters of this book and did a couple of the &#8216;programming assignments&#8217; (which I thought was a great idea), until I felt I was familiar enough with the language to take a poke at upgrading the countdown.</p>
<p>I came to realize that the process of developing in Python is <em>so easy</em>! (Even more so in GAE, as the development server environment that you get is great, and shit just works: just save the changes to the file and you can hit the page, and you get instant feedback.)</p>
<p>I know I&#8217;m a latecomer and I am treading dangerously close to <a href="http://en.wikipedia.org/wiki/Esoteric_programming_language" target="_blank">Programming Language War</a> territory here, but I have to say that I am entirely <em>fed up</em> with the edit/build/deploy cycle that leaks time and energy in Java projects. Do you realize that in big Java shops, there are engineers whose entire function is to iterate on the build process? Remember that whole &#8220;<a href="http://nelz.net/2010/03/05/google-app-engine-in-maven-intellij/" target="_self">Google App Engine in Maven + IntelliJ</a>&#8221; blog post that I made? In Python, the build-cycle-via-build-tool process doesn&#8217;t exist. Imagine a future where you don&#8217;t need to wrestle through Maven&#8217;s bullshit to get stuff done. I can see this future in Python, and it gives me tingles in my naughty bits!</p>
<p>Sure, I&#8217;ve got rose-colored glasses on here. I am a native speaker of <a href="http://reocities.com/tablizer/javacrit.htm" target="_blank">high-protocol</a> Java (my kingdom for a native <a href="http://jlorenzen.blogspot.com/2007/10/using-groovy-to-easily-avoid-nasty.html" target="_blank">&#8220;?&#8221; operator</a>!), who is currently a tourist in a strange land speaking a stilted <a href="http://www.thefreedictionary.com/pidgin" target="_blank">pidgin</a> version of Python. Admittedly, I have an incomplete grasp on what the costs and benefits are when moving from a <a href="http://en.wikipedia.org/wiki/Compiler#Compiled_versus_interpreted_languages" target="_blank">compiled language to an interpreted one</a>. But it sure seems easier so far.</p>
<p><a href="http://nelznet.files.wordpress.com/2010/10/picture-8.png"><img class="aligncenter size-full wp-image-456" title="nelz_on_java" src="http://nelznet.files.wordpress.com/2010/10/picture-8.png" alt="" width="771" height="248" /></a></p>
<h2>Future of Java</h2>
<p>I was originally pulling for the Java ecosystem, whether that comes from a selfish (it&#8217;s where my bread gets buttered) or a philanthropic (because I&#8217;ve seen so much good Open Source stuff come out of it) point of view, I&#8217;m not sure. I was happy when some very smart people talked about ways that at least the <a href="http://thinkrelevance.com/blog/2008/09/24/java-next-overview.html" target="_blank">JVM could stay relevant</a> by embracing more dynamic languages built on top of it.</p>
<p>But then there was last weeks announcement that Mac OS X would <a href="http://developer.apple.com/library/mac/#releasenotes/Java/JavaSnowLeopardUpdate3LeopardUpdate8RN/NewandNoteworthy/NewandNoteworthy.html" target="_blank">deprecate support for Java</a>. This generated a lot of excellent discussion. My <a href="http://www.subfurther.com/blog/?p=1305" target="_blank">favorite post</a> both described why this is a death knell for Java, while also outlining a strategy for ensuring Java could continue to function (by breaking up it&#8217;s fairly monolithic API into discrete modules).</p>
<p>Alas, because of a very specific interaction I had, I fear Chris Adamson&#8217;s cogent post will probably be ignored by Oracle. Back when the news came out that Oracle was buying Sun and therefore Java and MySQL, I spoke to a friend of mine who worked for Oracle. I told him I didn&#8217;t care if Oracle owned Java and MySQL as long as they didn&#8217;t fuck it up. His response: &#8220;Don&#8217;t worry. We&#8217;ll fuck it up.&#8221;</p>
<p>The mere fact that I heard this kind of pessimism coming from an employee within Oracle makes me think Java will be viewed more and more as a legacy system in the months and years to come.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/452/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=452&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2010/10/28/project-begets-love-for-appengine-and-python-at-javas-expense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>

		<media:content url="http://nelznet.files.wordpress.com/2010/10/picture-4.png" medium="image">
			<media:title type="html">countdown_orig</media:title>
		</media:content>

		<media:content url="http://nelznet.files.wordpress.com/2010/10/picture-7.png" medium="image">
			<media:title type="html">countdown_modern</media:title>
		</media:content>

		<media:content url="http://nelznet.files.wordpress.com/2010/10/picture-8.png" medium="image">
			<media:title type="html">nelz_on_java</media:title>
		</media:content>
	</item>
		<item>
		<title>ClipperCard &#8211; Personal Privacy Audit</title>
		<link>http://nelz.net/2010/10/21/clippercard-personal-privacy-audit/</link>
		<comments>http://nelz.net/2010/10/21/clippercard-personal-privacy-audit/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 06:11:19 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=442</guid>
		<description><![CDATA[For the past few months I&#8217;ve been commuting from San Francisco to Palo Alto via CalTrain, which was the impetus for me to finally get a Translink card ClipperCard. (I actually got my card right at the tail end of stock of Translink-branded cards, just before they renamed the whole system. At that time you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=442&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For the past few months I&#8217;ve been commuting from San Francisco to Palo Alto via <a href="http://www.caltrain.com/" target="_blank">CalTrain</a>, which was the impetus for me to finally get a <del datetime="2010-10-19T05:21:47+00:00">Translink card</del> <a href="https://www.clippercard.com/" target="_blank">ClipperCard</a>. (I actually got my card right at the tail end of stock of  Translink-branded cards, just before they renamed the whole system. At that time you could either order the card from the  website, which was an ineffectual joke, or you could cough up five bucks  and get just get a new one at your local Walgreen&#8217;s, which is what I  did.)</p>
<p>Not that I have <a href="http://nelz.net/2008/04/06/a_conflagration_of_random_musings/">a whole lot to hide</a> nor do I wear a tinfoil hat, but every once in a while I like to do a personal audit of where my privacy could be (or is) getting invaded. So, I&#8217;ve been collecting informal data points about my experience with the ClipperCard, which is what leads to this post.</p>
<h3>What They Expect</h3>
<p>Here is my daily paper trail (all times are approximate):</p>
<ul>
<li>0800: &#8220;tag on&#8221; an inbound #14 MUNI near Duboce &amp; Mission</li>
<li>0810: &#8220;tag on&#8221; an outbound #47 MUNI near 11th &amp; Mission</li>
<li>0840: &#8220;tag on&#8221; at the CalTrain station at 4th &amp; King</li>
<li>CalTrain conductor scans my ClipperCard on the 0844 Southbound train</li>
<li>0926: &#8220;tag off&#8221; in Palo Alto on the Southbound side of the tracks</li>
<li>1700: &#8220;tag on&#8221; at the CalTrain station in Palo Alto on the Northbound side of the tracks</li>
<li>CalTrain conductor scans my ClipperCard on the 1706 Northbound train</li>
<li>1744: &#8220;tag off&#8221; at the CalTrain station at 4th &amp; King</li>
<li>1746: &#8220;tag on&#8221; to an inbound #47 MUNI at 4th &amp; King</li>
<li>1800: &#8220;tag on&#8221; to an outbound #14 MUNI at 11th &amp; Mission</li>
</ul>
<h3>Ways to Mess With the System</h3>
<ol>
<li>I have a monthly pass for the CalTrain. I&#8217;ve realized that my pass doesn&#8217;t ever require that I tag on and tag off, as long as it responds appropriately to the on-train scanning by the conductors.</li>
<li>The only times I&#8217;ve gotten away without being scanned by a CalTrain conductor is when the train is packed to standing-room-only because of a baseball game in the city. You <em>might</em> be able to sneak past the conductors, but I wouldn&#8217;t count on it.</li>
<li>Similarly to CalTrain, I don&#8217;t <em>really</em> need to tag on to the MUNI busses, as long as my monthly pass resolves itself to a Fare Inspector. Most of the drivers will either look at you funny or explicitly require you to least flash your card by the reader. However, you can get a beep out of the readers by placing your card on the reader, but then removing it quickly. The reader realizes there&#8217;s some kind of card in front of it, but I&#8217;m assuming it can&#8217;t figure out exactly <em>whose</em> card is there, so it gives an error-sounding beep. This usually satisfies the drivers. (Only once in a month of doing this did a driver shame me into fully tagging the reader.)</li>
</ol>
<h3>What They Can (Still) Learn</h3>
<p>If I didn&#8217;t take the pains to mess with my own data, you could have a pretty good idea that I live somewhere near Duboce &amp; Mission and that I work somewhere in Palo Alto. With further analysis (and further data that I didn&#8217;t provide here), you could also notice that on alternating Wednesdays I don&#8217;t go to Palo Alto, but I seem to take the 14 to work somewhere in downtown, probably near 3rd and Mission.</p>
<p>I was able to mostly obfuscate my whereabouts with regard to the MUNI surface busses, except for the occasional pedantic driver. Plus, there&#8217;s a built-in obfuscation because they don&#8217;t require a tag off. However, this obfuscation doesn&#8217;t hold if you are trying to get into one of the underground stations downtown (or <a href="http://bart.gov/" target="_blank">BART</a>, for that matter).</p>
<p>For CalTrain, I was able to obfuscate the specific stops where I get on and off, but since my monthly pass is specifically identified as a Zone 1 (SF to San Bruno) to Zone 3 (Atherton to Sunnyvale) and I use &#8220;Limited&#8221; or &#8220;Express&#8221; lines (which only service certain stations), they can still get a general idea as to where I&#8217;m located.</p>
<p>Additionally, if you look at the records of the conductor scans, you&#8217;ll find that on my return trip I am repeatedly found within 2 or 3 scans of specific other customers. You might be able to deduce that since I am likely coming back from work, these other people are highly likely to be my coworkers. And if these people explicitly tagged on, there&#8217;s a high probability that you now know where I got on, even though <strong>I</strong> didn&#8217;t tag on myself.</p>
<h3>Other (Potential) Problems With the System</h3>
<p>To use the website to add cash in addition to the loaded passes, you had to do some configuration. I didn&#8217;t recognize it as a problem at the time, but it required that you have a valid credit/bank card. A friend of mine (who had to cut up her credit cards to pursue a debt-free lifestyle) said she was basically left by the wayside with regards to the ClipperCard and the benefits of its use. (Which is becoming, more an more, <a href="http://sf.streetsblog.org/2010/10/18/mandatory-switch-from-muni-paper-passes-to-clipper-card-begins-soon/" target="_blank">mandatory</a> for monthly pass holders.) I do not know if this is still the case, but it sounds like something the ClipperCard implementers would do.</p>
<p>Another thing to keep in mind is that all my travel is also hooked up to my Credit Card via the ClipperCard website. You&#8217;d have to talk to other <a href="http://en.wikipedia.org/wiki/Black_hat" target="_blank">black-hat</a>-ier people than I to learn how vulnerable the ClipperCard site is. (As a none-too-impressed end user of the website, I am sure the implementation has plenty of security holes.)</p>
<p>One last thing to keep in mind is <em>who</em> has access to your ride records. A co-worker said he was able to get a CSV file of all his ClipperCard tag ins, just by calling the Customer Service line and the rep running a quick query to get all his activity. This means the reps probably have access to everyone&#8217;s records at their whim. I have dealt with Customer Service at ClipperCard, and I&#8217;m sure it&#8217;d be pretty easy to <a href="http://en.wikipedia.org/wiki/Social_engineering_%28security%29" target="_blank">socially engineer</a> one of them into giving up a whole bunch of information.</p>
<h3>Do I Care?</h3>
<p>What does this all mean? Well, with a little bit of effort, you could figure out where I am <em>likely</em> to be at several points during the week. Why do I care about this? Imagine a universe where I am a vocal proponent of a measure that <a href="http://articles.sfgate.com/2010-03-09/bay-area/18381807_1_muni-operators-second-highest-paid-transit-operators-fall-ballot" target="_blank">takes aim at MUNI drivers&#8217; pay</a>, and people within the union want to find me at some point to <a href="http://en.wikipedia.org/wiki/Freedom_from_Union_Violence_Act" target="_blank">change my mind for me</a>&#8230; Is my data easily obtainable, especially to those within the public transit system? I think so.</p>
<h3>Conclusion</h3>
<p>In this exercise, I&#8217;ve tried to show just how vulnerable your personal <em>location</em> data can be, and how it could be used to gain some further bits of knowledge about you.</p>
<p>In reality, the biggest risk to the average person in the ClipperCard system are the potential for a third-party (hacker) to get your credit card and personally-identifying information. A <em>far smaller</em> secondary risk is having your historical transit records and patterns made vulnerable, specifically because access to this information is a lot less regulated than access to your personal financial information.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/442/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/442/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/442/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=442&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2010/10/21/clippercard-personal-privacy-audit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Google App Engine in Maven + IntelliJ</title>
		<link>http://nelz.net/2010/03/05/google-app-engine-in-maven-intellij/</link>
		<comments>http://nelz.net/2010/03/05/google-app-engine-in-maven-intellij/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 20:33:55 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=423</guid>
		<description><![CDATA[At Widgetbox, I sometimes get to play around with interesting technologies that are outside of our regular stack. A couple of weeks ago, I was asked to use Google App Engine&#8216;s Java environment (GAE/J) to prototype a resizing image proxy. At first, I just developed the prototype in the default GAE/J Eclipse environment until I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=423&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://www.widgetbox.com/" target="_blank">Widgetbox</a>, I sometimes get to play around with interesting technologies that are outside of our regular stack. A couple of weeks ago, I was asked to use <a href="http://code.google.com/appengine/" target="_blank">Google App Engine</a>&#8216;s Java environment (GAE/J) to prototype a resizing image proxy.</p>
<p>At first, I just developed the prototype in the default GAE/J Eclipse environment until I could deliver a functional <a href="http://en.wikipedia.org/wiki/Proof_of_concept" target="_blank">POC</a>. After finding the GAE/J capabilities more than adequate for what we wanted to do, I was challenged to bring the project into our standard <a href="http://www.jetbrains.com/idea/" target="_blank">IntelliJ</a> + <a href="http://maven.apache.org/" target="_blank">Maven</a> development environment. For the rest of this post, I&#8217;ll share a couple of tips and tricks for getting your GAE/J project to operate in this environment.</p>
<h3>Basic POM File</h3>
<p>There&#8217;s some funny business and frustration around the Maven community&#8217;s adoption of GAE/J, but I&#8217;ll skip that part of the story for right now. What I found is that the <a href="http://code.google.com/p/maven-gae-plugin/" target="_blank">maven-gae-plugin</a> project is the best place to go to for help Mavenizing a GAE/J build.</p>
<p>I have to say that it&#8217;s not &#8216;use the archetype&#8217; easy (their archetype failed for me), but with a bit of elbow-grease and rummaging through their documentation I was able to get a decent and functional POM file built. Here it is (with some of our proprietary information scrubbed to protect innocent servers):</p>
<pre><a name="line1">  1</a> &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<a name="line2">  2</a>          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;
<a name="line3">  3</a>   &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
<a name="line4">  4</a>   &lt;groupId&gt;com.widgetbox&lt;/groupId&gt;
<a name="line5">  5</a>   &lt;artifactId&gt;image-proxy-webapp&lt;/artifactId&gt;
<a name="line6">  6</a>   &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
<a name="line7">  7</a>   &lt;name&gt;Widgetbox :: Image-Proxy :: Webapp&lt;/name&gt;
<a name="line8">  8</a>   &lt;packaging&gt;war&lt;/packaging&gt;
<a name="line9">  9</a>   &lt;properties&gt;
<a name="line10"> 10</a>     &lt;gae.version&gt;1.3.0&lt;/gae.version&gt;
<a name="line11"> 11</a>     &lt;gae.app.name&gt;qa-image-proxy&lt;/gae.app.name&gt;
<a name="line12"> 12</a>   &lt;/properties&gt;
<a name="line13"> 13</a>   &lt;dependencies&gt;
<a name="line14"> 14</a>     &lt;dependency&gt;
<a name="line15"> 15</a>       &lt;groupId&gt;javax.jdo&lt;/groupId&gt;
<a name="line16"> 16</a>       &lt;artifactId&gt;jdo2-api&lt;/artifactId&gt;
<a name="line17"> 17</a>       &lt;version&gt;2.3-eb&lt;/version&gt;
<a name="line18"> 18</a>       &lt;exclusions&gt;
<a name="line19"> 19</a>         &lt;exclusion&gt;
<a name="line20"> 20</a>           &lt;groupId&gt;javax.transaction&lt;/groupId&gt;
<a name="line21"> 21</a>           &lt;artifactId&gt;transaction-api&lt;/artifactId&gt;
<a name="line22"> 22</a>         &lt;/exclusion&gt;
<a name="line23"> 23</a>       &lt;/exclusions&gt;
<a name="line24"> 24</a>     &lt;/dependency&gt;
<a name="line25"> 25</a>     &lt;dependency&gt;
<a name="line26"> 26</a>       &lt;groupId&gt;javax.transaction&lt;/groupId&gt;
<a name="line27"> 27</a>       &lt;artifactId&gt;jta&lt;/artifactId&gt;
<a name="line28"> 28</a>       &lt;version&gt;1.1&lt;/version&gt;
<a name="line29"> 29</a>     &lt;/dependency&gt;
<a name="line30"> 30</a>     &lt;dependency&gt;
<a name="line31"> 31</a>       &lt;groupId&gt;com.google.appengine.orm&lt;/groupId&gt;
<a name="line32"> 32</a>       &lt;artifactId&gt;datanucleus-appengine&lt;/artifactId&gt;
<a name="line33"> 33</a>       &lt;version&gt;1.0.4.1&lt;/version&gt;
<a name="line34"> 34</a>     &lt;/dependency&gt;
<a name="line35"> 35</a>     &lt;dependency&gt;
<a name="line36"> 36</a>       &lt;groupId&gt;org.datanucleus&lt;/groupId&gt;
<a name="line37"> 37</a>       &lt;artifactId&gt;datanucleus-core&lt;/artifactId&gt;
<a name="line38"> 38</a>       &lt;version&gt;1.1.5&lt;/version&gt;
<a name="line39"> 39</a>       &lt;exclusions&gt;
<a name="line40"> 40</a>         &lt;exclusion&gt;
<a name="line41"> 41</a>           &lt;groupId&gt;javax.transaction&lt;/groupId&gt;
<a name="line42"> 42</a>           &lt;artifactId&gt;transaction-api&lt;/artifactId&gt;
<a name="line43"> 43</a>         &lt;/exclusion&gt;
<a name="line44"> 44</a>       &lt;/exclusions&gt;
<a name="line45"> 45</a>     &lt;/dependency&gt;
<a name="line46"> 46</a>     &lt;dependency&gt;
<a name="line47"> 47</a>       &lt;groupId&gt;com.google.appengine&lt;/groupId&gt;
<a name="line48"> 48</a>       &lt;artifactId&gt;datanucleus-jpa&lt;/artifactId&gt;
<a name="line49"> 49</a>       &lt;version&gt;1.1.5&lt;/version&gt;
<a name="line50"> 50</a>       &lt;scope&gt;runtime&lt;/scope&gt;
<a name="line51"> 51</a>     &lt;/dependency&gt;
<a name="line52"> 52</a>     &lt;dependency&gt;
<a name="line53"> 53</a>       &lt;groupId&gt;com.google.appengine&lt;/groupId&gt;
<a name="line54"> 54</a>       &lt;artifactId&gt;geronimo-jpa_3.0_spec&lt;/artifactId&gt;
<a name="line55"> 55</a>       &lt;version&gt;1.1.1&lt;/version&gt;
<a name="line56"> 56</a>       &lt;scope&gt;runtime&lt;/scope&gt;
<a name="line57"> 57</a>     &lt;/dependency&gt;
<a name="line58"> 58</a>     &lt;dependency&gt;
<a name="line59"> 59</a>       &lt;groupId&gt;com.google.appengine&lt;/groupId&gt;
<a name="line60"> 60</a>       &lt;artifactId&gt;appengine-api-1.0-sdk&lt;/artifactId&gt;
<a name="line61"> 61</a>       &lt;version&gt;${gae.version}&lt;/version&gt;
<a name="line62"> 62</a>     &lt;/dependency&gt;
<a name="line63"> 63</a>   &lt;/dependencies&gt;
<a name="line64"> 64</a>   &lt;build&gt;
<a name="line65"> 65</a>     &lt;plugins&gt;
<a name="line66"> 66</a>       &lt;plugin&gt;
<a name="line67"> 67</a>         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
<a name="line68"> 68</a>         &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
<a name="line69"> 69</a>         &lt;version&gt;2.0.2&lt;/version&gt;
<a name="line70"> 70</a>         &lt;configuration&gt;
<a name="line71"> 71</a>           &lt;source&gt;1.6&lt;/source&gt;
<a name="line72"> 72</a>           &lt;target&gt;1.6&lt;/target&gt;
<a name="line73"> 73</a>         &lt;/configuration&gt;
<a name="line74"> 74</a>       &lt;/plugin&gt;
<a name="line75"> 75</a>       &lt;plugin&gt;
<a name="line76"> 76</a>         &lt;groupId&gt;net.kindleit&lt;/groupId&gt;
<a name="line77"> 77</a>         &lt;artifactId&gt;maven-gae-plugin&lt;/artifactId&gt;
<a name="line78"> 78</a>         &lt;version&gt;0.5.3&lt;/version&gt;
<a name="line79"> 79</a>       &lt;/plugin&gt;
<a name="line80"> 80</a>       &lt;plugin&gt;
<a name="line81"> 81</a>         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
<a name="line82"> 82</a>         &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
<a name="line83"> 83</a>         &lt;version&gt;2.1-beta-1&lt;/version&gt;
<a name="line84"> 84</a>         &lt;configuration&gt;
<a name="line85"> 85</a>           &lt;filters&gt;
<a name="line86"> 86</a>             &lt;filter&gt;${project.build.directory}/version.properties&lt;/filter&gt;
<a name="line87"> 87</a>           &lt;/filters&gt;
<a name="line88"> 88</a>           &lt;webResources&gt;
<a name="line89"> 89</a>             &lt;resource&gt;
<a name="line90"> 90</a>               &lt;directory&gt;src/main/external&lt;/directory&gt;
<a name="line91"> 91</a>               &lt;targetPath&gt;WEB-INF&lt;/targetPath&gt;
<a name="line92"> 92</a>               &lt;filtering&gt;true&lt;/filtering&gt;
<a name="line93"> 93</a>             &lt;/resource&gt;
<a name="line94"> 94</a>           &lt;/webResources&gt;
<a name="line95"> 95</a>         &lt;/configuration&gt;
<a name="line96"> 96</a>       &lt;/plugin&gt;
<a name="line97"> 97</a>       &lt;plugin&gt;
<a name="line98"> 98</a>         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
<a name="line99"> 99</a>         &lt;artifactId&gt;maven-antrun-plugin&lt;/artifactId&gt;
<a name="line100">100</a>         &lt;version&gt;1.3&lt;/version&gt;
<a name="line101">101</a>         &lt;executions&gt;
<a name="line102">102</a>           &lt;execution&gt;
<a name="line103">103</a>             &lt;phase&gt;compile&lt;/phase&gt;
<a name="line104">104</a>             &lt;configuration&gt;
<a name="line105">105</a>               &lt;tasks&gt;
<a name="line106">106</a>                 &lt;echo file="${project.build.directory}/version.properties"&gt;
<a name="line107">107</a>                     friendlyversion=${project.version}
<a name="line108">108</a>                 &lt;/echo&gt;
<a name="line109">109</a>                 &lt;replace file="${project.build.directory}/version.properties" token="." value="-"/&gt;
<a name="line110">110</a>                 &lt;replace file="${project.build.directory}/version.properties" token="SNAPSHOT" value="snapshot"/&gt;
<a name="line111">111</a>               &lt;/tasks&gt;
<a name="line112">112</a>             &lt;/configuration&gt;
<a name="line113">113</a>             &lt;goals&gt;
<a name="line114">114</a>               &lt;goal&gt;run&lt;/goal&gt;
<a name="line115">115</a>             &lt;/goals&gt;
<a name="line116">116</a>           &lt;/execution&gt;
<a name="line117">117</a>         &lt;/executions&gt;
<a name="line118">118</a>       &lt;/plugin&gt;
<a name="line119">119</a>     &lt;/plugins&gt;
<a name="line120">120</a>   &lt;/build&gt;
<a name="line121">121</a>   &lt;repositories&gt;
<a name="line122">122</a>     &lt;repository&gt;
<a name="line123">123</a>       &lt;id&gt;maven-gae-plugin-repo&lt;/id&gt;
<a name="line124">124</a>       &lt;name&gt;maven-gae-plugin repository&lt;/name&gt;
<a name="line125">125</a>       &lt;url&gt;http://maven-gae-plugin.googlecode.com/svn/repository&lt;/url&gt;
<a name="line126">126</a>     &lt;/repository&gt;
<a name="line127">127</a>   &lt;/repositories&gt;
<a name="line128">128</a>   &lt;pluginRepositories&gt;
<a name="line129">129</a>     &lt;pluginRepository&gt;
<a name="line130">130</a>       &lt;id&gt;maven-gae-plugin-repo&lt;/id&gt;
<a name="line131">131</a>       &lt;name&gt;maven-gae-plugin repository&lt;/name&gt;
<a name="line132">132</a>       &lt;url&gt;http://maven-gae-plugin.googlecode.com/svn/repository&lt;/url&gt;
<a name="line133">133</a>     &lt;/pluginRepository&gt;
<a name="line134">134</a>   &lt;/pluginRepositories&gt;
<a name="line135">135</a> &lt;/project&gt;
</pre>
<p>(FYI, we&#8217;re not actively using any datastore functionality just yet, so if you are going to use this template please forgive me if those dependencies are a little bit wonky.)</p>
<p>Since Google hasn&#8217;t (<a href="http://code.google.com/p/googleappengine/issues/detail?id=1296" target="_blank">yet</a>) decided to publish their development environment in a Maven-friendly way, there&#8217;s a bit of dependency wonkiness involved in getting the maven-gae-plugin to work. I included the repository information required by the plugin (lines 121 &#8211; 134), but if you use a repository manager (like <a href="http://nexus.sonatype.org/" target="_blank">Nexus</a>), you&#8217;ll want to remove those lines from the POM and add a proxy for the maven-gae-plugin&#8217;s repository.</p>
<p>To get the development environment working the plugin also requires access to the unzipped SDK as packaged by Google. The plugin tries to help you set this up (&#8220;gae:unpack&#8221;) but that failed for me. I was able to get stuff working by manually unzipping the SDK artifact downloaded directly from Google to the following directory:</p>
<pre>~/.m2/repository/com/google/appengine/appengine-java-sdk/1.3.0/appengine-java-sdk-1.3.0</pre>
<h3>Incremental Improvments</h3>
<p>Initially, I had kept the appengine-web.xml within the WEB-INF directory, but I realized I could make our Release Manager&#8217;s life a bit easier if I added a bit of build-time substitution.</p>
<p>Here&#8217;s our appengine-web.xml:</p>
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;appengine-web-app xmlns="http://appengine.google.com/ns/1.0"&gt;
	&lt;application&gt;${gae.app.name}&lt;/application&gt;
	&lt;version&gt;${friendlyversion}&lt;/version&gt;
	&lt;system-properties&gt;
		&lt;property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/&gt;
	&lt;/system-properties&gt;
&lt;/appengine-web-app&gt;</pre>
<p><a href="http://nelznet.files.wordpress.com/2010/03/picture-1.png"><img class="size-full wp-image-424 alignright" title="Directory Structure" src="http://nelznet.files.wordpress.com/2010/03/picture-1.png" alt="Directory Structure" width="370" height="154" /></a></p>
<p>And you&#8217;ll see that I put it into a new source directory called &#8216;external&#8217;:</p>
<p>At build time, I use the <a href="http://maven.apache.org/plugins/maven-antrun-plugin/" target="_blank">AntRun</a> plugin (lines 97-118) to create a small file under the target directory that holds a &#8216;sanitized&#8217; version of the standard Maven version. (I.e. &#8220;1.0-SNAPSHOT&#8221; becomes GAE-friendly &#8220;1-0-snapshot&#8221;.) I then use the Maven filter functionality available in the WAR plugin (lines 80-96) to copy the appengine-web.xml into its proper directory with the version substituted in.</p>
<p>You&#8217;ll also notice in our appengine-web.xml that we substitute in our application name. By default this comes from the properties section of the pom.xml file (line 11). I did this because we&#8217;ve actually got 2 different applications up on GAE&#8217;s servers, the QA version and the Production version. By default we build using the QA server&#8217;s application name, but when our Release Manager is building to upload to Production, all that is needed is an additional command-line argument of &#8220;-Dgae.app.name=&lt;prod-name&gt;&#8221;.</p>
<h3>Running, Debugging, and Deploying</h3>
<p>The two most valuable targets that maven-gae-plugin provide are &#8220;gae:run&#8221; and &#8220;gae:debug&#8221;. These will assemble your code in the standard Maven webapp target directories and run your app. (Note: &#8220;gae:debug&#8221; didn&#8217;t actually work for me until the 0.5.3 version of the plugin.)</p>
<p>There is also a &#8220;gae:deploy&#8221; target that is supposed to invoke the Google-supplied shell script that will upload your application to the Google servers, but it failed for me several time. Since then, I&#8217;ve defaulted to using the shell script directly to deploy my app once it has been built:</p>
<pre>~/.m2/repository/com/google/appengine/appengine-java-sdk/1.3.0/appengine-java-sdk-1.3.0/bin/appcfg.sh \
    update \
    ./target/myApp-1.0-SNAPSHOT
</pre>
<h3>Results</h3>
<p>So, this is how we got up and running with GAE/J in our standard development environment. Hopefully this post ends up helping people out to reduce their bootstrap time when evaluating/investigating GAE/J for their own uses.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/423/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=423&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2010/03/05/google-app-engine-in-maven-intellij/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>

		<media:content url="http://nelznet.files.wordpress.com/2010/03/picture-1.png" medium="image">
			<media:title type="html">Directory Structure</media:title>
		</media:content>
	</item>
		<item>
		<title>Embedded Job Posting?</title>
		<link>http://nelz.net/2010/01/21/embedded-job-posting/</link>
		<comments>http://nelz.net/2010/01/21/embedded-job-posting/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 19:43:26 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=412</guid>
		<description><![CDATA[So, I&#8217;m doing some stuff at work that has me looking at HTTP headers. As a reference, I looked at the feed URL for this blog, and I noticed the following header: X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header. I think this is a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=412&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;m doing some stuff at work that has me looking at HTTP headers. As a reference, I looked at the feed URL for this blog, and I noticed the following header:</p>
<pre>X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.
</pre>
<p>I think this is a pretty cute and subtle way of looking for technically adept potential employees.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/412/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=412&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2010/01/21/embedded-job-posting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Book Review: Apache Maven 2 Effective Implementation</title>
		<link>http://nelz.net/2009/12/19/book-review-apache-maven-2-effective-implementation/</link>
		<comments>http://nelz.net/2009/12/19/book-review-apache-maven-2-effective-implementation/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 22:04:01 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=404</guid>
		<description><![CDATA[A few months ago, I was approached by a representative from Packt Publishing to do a review of their book &#8220;Apache Maven 2 Effective Implementation&#8221;, presumably because of my frequent posts about Maven. They gave me an electronic copy of the book to read, and asked for a 300 &#8211; 350 word review about the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=404&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few months ago, I was approached by a representative from <a href="http://www.packtpub.com/" target="_blank">Packt Publishing</a> to do a review of their book &#8220;Apache Maven 2 Effective Implementation&#8221;, presumably because of my frequent posts about Maven.</p>
<p>They gave me an electronic copy of the book to read, and asked for a 300 &#8211; 350 word review about the book. I&#8217;ve gotten it mostly to the point of &#8216;completion&#8217;, and any more changes would just fall under the category of &#8216;tinkering&#8217;.</p>
<blockquote><p>Maven. I hate the word, as I hate hell, all Montagues, and MAKE.</p>
<p>Maven is a powerful Open Source build system which is becoming a de facto standard in Java development circles. Like any powerful tool, Maven has its own proponents and detractors, benefits and drawbacks. For example, one of the consistent issues that plagues the Maven ecosystem is a dearth of quality documentation.</p>
<p>When I heard about &#8220;Apache Maven 2 Effective Implementation&#8221;, I had hoped that it would be the One Book to rule them all, the One Book to find them, the One Book to bring them all and in the darkness bind them. Unfortunately, this is not that One Book.</p>
<p>&#8220;Apache Maven 2 Effective Implementation&#8221; is yet another effort by a Maven contributor to provide some clarity to Maven&#8217;s user community about how exactly to use Maven correctly. But much like the rest of the Maven documentation ecosystem, this book provides the type of documentation that only its author could love.</p>
<p>The author is obviously knowledgeable, however I can&#8217;t recommend this book as anything more than an incremental addition to the Maven user&#8217;s arsenal. Having been a Maven &#8216;believer&#8217; since the late 1.x days, I would say that ALL the documentation I&#8217;ve seen on the subject has been no better than incremental. In most cases, like this one, the authors falls into a classical trap of technical documentation by explaining <em>what</em> to do, but rarely explaining <em>why.</em> (Nor, more importantly, explaining <em>how</em> to figure these things out for yourself).</p>
<p>I did find a few helpful tidbits of new information in the book. However, I&#8217;m not sure I would have been able to quickly find them again in a reference situation because the logical flow was all over the place. Example: Chapter 4 had ten pages of fundamental reporting information, which is great information to have; but maybe Chapter 5, which was titled &#8220;Reporting and Checks&#8221;, is where that information rightly should have resided.</p>
<p>Unlike some of the best technical books I&#8217;ve read, my ability to stay awake while reading this book was challenged because it is so very dry. I had no delusions of it being as compelling as the &#8220;Encyclopedia Galactica&#8221;, but the prose was completely wooden. This blandness and the previously mentioned problems render the book altogether forgettable.</p></blockquote>
<p>I actually had a couple of people help me with the editing and/or proofreading of my review, and I&#8217;d like to thank <a href="http://twitter.com/gingerbourbon" target="_blank">Jennie-Sue</a>, <a href="http://twitter.com/10_9" target="_blank">Eli</a>, and <a href="http://twitter.com/starchy" target="_blank">Starchy</a> for their offers of help.</p>
<p>If you haven&#8217;t noticed, I have ZERO advertising on my site. It only costs me a couple of bucks a year to keep this site going, and I didn&#8217;t want to spoil the relationship with my readers by trying to commodify their viewing. So, when I was approached to do the review, I was very specific that I would not pull any punches just because they gave me a free book. Packt also tried to sign me up with an affiliate link to the book, which you&#8217;ll notice is nowhere in this (or any) post.</p>
<p>As you can tell, I really didn&#8217;t use the kid gloves with this review. I&#8217;m not very happy with the general quality of Maven documentation (<a href="http://nelz.net/2009/08/20/maven-tomcat-plugin/" target="_self">as I&#8217;ve noted before</a>), and I wasn&#8217;t going to give this book high marks for being just as bad as the rest.</p>
<p>I did manage to sneak in (or are they clumsily manhandled?) 3 different literary fiction references, which I hope spices up the review and adds a bit of character. Let me know if you can name them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/404/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=404&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/12/19/book-review-apache-maven-2-effective-implementation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Motorcycle Diary</title>
		<link>http://nelz.net/2009/10/27/motorcycle-diary/</link>
		<comments>http://nelz.net/2009/10/27/motorcycle-diary/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 03:13:25 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=383</guid>
		<description><![CDATA[As I mentioned in a previous post, I recently took a &#8220;where the wind blows me&#8221; vacation in France, and I&#8217;m gonna tell you about that wind. I started out my trip in Bordeaux, where I found a pretty nice hotel to be my &#8216;base of operations&#8217; whilst I tried to work out my motorcycle [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=383&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://farm3.static.flickr.com/2638/3908783701_baf9a71033.jpg" alt="Scenic bike picture." width="500" height="375" />As I mentioned in a <a href="http://nelz.net/2009/08/26/leavin-on-a-jet-plane/" target="_self">previous post</a>, I recently took a &#8220;where the wind blows me&#8221; vacation in France, and I&#8217;m gonna tell you about that wind.</p>
<p>I started out my trip in Bordeaux, where I found a pretty nice hotel to be my &#8216;base of operations&#8217; whilst I tried to work out my motorcycle rental. I managed to find the website and then the physical location of <a href="http://www.bordeauxscooters.com" target="_blank">Bordeaux Scooters</a>, and this is where I rented the motorcycle for one whole week.</p>
<p>For the first day, I just rode around the city of Bordeaux a very little bit, trying to accustom myself to the <a href="http://www.flickr.com/photos/nelz9999/3909561352/in/set-72157622336899754/" target="_blank">Yamaha Fazer 650</a> (since I normally ride a <a href="http://www.flickr.com/photos/nelz9999/2356370443/" target="_blank">Kawasaki Ninja 500</a>).</p>
<p>On my first full day on the bike, I got out of Bordeaux and hit a bunch of secondary (C and D) roads. I hit places like <a href="http://www.flickr.com/photos/nelz9999/3908780739/in/set-72157622336899754/" target="_blank">Biscarosse</a>(-en-Plage), Mimizan, and Léon, before I stopped for the night in Hasparren where I stayed at a <a href="http://www.flickr.com/photos/nelz9999/3908781319/in/set-72157622336899754/" target="_blank">cute</a> <em>Hôtes de Chambre</em> (Bed &amp; Breakfast). I was feeling pretty good and confident, both in my motorcycling ability and my language ability to operate in the hinterlands of France.</p>
<p>For my second day of riding, I figured I&#8217;d take some more scenic roads, and even cross over the Spanish border for a bit. I made it through <a href="http://www.flickr.com/photos/nelz9999/3908783135/in/set-72157622336899754/" target="_blank">the border</a> just fine, and was cheerfully enjoying the nice big sweeping roads on the way to Elizondo, and then turned on the road towards Erratzu to make my way back into France near Saint-Etienne-de-Baïgorry.</p>
<p>It was just after a hairpin turn, not more than 1km from the French border and the summit of the hill. I noticed the old stone barn on the left side of the road, then I looked uphill and contemplated that I should be careful because of all the mountain mist that was probably making the road slippery. I brought my attention back to the road, and was alarmed to find that I had drifted close to the side of the road. <em>I started to panic.</em> I was so worried about the side of the road that I couldn&#8217;t look away, and <a href="http://www.tac.vic.gov.au/jsp/content/NavigationController.do?areaID=1&amp;tierID=2&amp;navID=ECE1C03B7F00000100944DBDF51F4039&amp;navLink=null&amp;pageID=359" target="_blank">motorcyclists know</a> that&#8217;s exactly where I ended up.</p>
<p>Now that I was on the edge of the road, I made a snap decision to bite the bullet and take the bike off the road and try to stop before anything untoward happened. Something untoward happened. The mist I had been worrying about mere milliseconds before was coating the grass I was on and the front tire slipped sideways, dumping me and the bike onto our left sides.</p>
<p>I am lucky because I had just recently come out of a tight turn and I wasn&#8217;t going all that fast. I landed face down with my torso on the pavement, and did only about 1 1/2 horizontal pirouettes before I came to a rest. While the helmet I was wearing was scraping across the pavement, I remember thinking &#8220;Boy, a helmet is a <strong>really</strong> good idea!&#8221;</p>
<p>I was up in an instant, just in time to see that the hard case (holding most of my possessions) rolling down the hill. In my adrenaline-addled mind, I decided that I really needed to get my stuff back. So, I went careening down the side of the mountain in my full gear. I found the case 1 1/2 switchbacks down. I brought it up to the road (1 full switchback below the motorcycle) and only then did I decide to take off some of my gear and inspect for damage. Other than a little bit of <a href="http://www.flickr.com/photos/nelz9999/3909567104/in/set-72157622336899754/" target="_blank">scuffed up skin</a>, I was actually fine.</p>
<p>As I was walking back up to inspect the bike, a younger French guy in a car stopped to give me a hand. He helped me turn the bike over, and point it away from downhill. He told me he expected insurance (<em>assurance</em> in French) could be found in any town, and that they&#8217;d have me set back up in no time. I thanked him for his help and advice, and sent him on his way, while I figured out what I needed to do.</p>
<p>After I got all my stuff assembled, and <a href="http://www.flickr.com/photos/nelz9999/3909566938/in/set-72157622336899754/" target="_blank">took</a> a <a href="http://www.flickr.com/photos/nelz9999/3908784999/in/set-72157622336899754/" target="_blank">couple</a> of <a href="http://www.flickr.com/photos/nelz9999/3908784729/in/set-72157622336899754/" target="_blank">pictures</a>, I sat down and tried to call the rental shop. I ended up calling <a href="http://www.flickr.com/photos/nelz9999/3908777057/in/set-72157622336899754/" target="_blank">Ryan</a> (in the U.K) for some research help because I didn&#8217;t know what the country-code is for France. After we got that figured out, I realized the rental shop was on their stated lunch break until 2PM. (It had just turned about 12:30PM.) I sat there for a bit trying to keep myself calm and counting my lucky stars. After I changed into some less-sweaty and warmer clothes, I decided that I should try to get to &#8216;civilization&#8217;, preferably on the French side of the border since the motorcycle was rented from France.</p>
<p>Eventually a nice (German?) couple on motorcycles stopped to give me a hand. We were formulating an elaborate me-plus-my-stuff-on-their-bikes plan, when I realized it was a bit soon for me to be riding on a motorcycle again. I got them to help me flag down a passing carpenter, who agreed to take me and my stuff in his truck to the mechanic&#8217;s in Saint-Etienne-de-Baïgorry. The local mechanic was of no help, other than trying to help me call the rental shop again, which I knew was still closed. After he basically told me to go away because he didn&#8217;t deal with motorcycles and he was on <em>his</em> lunch break, I walked towards town center and sat on the steps of a hotel/brasserie that was also closed for lunch. I decided to wait out the remaining hour or so until the rental shop opened up by chilling out and reading my Kindle on those steps.</p>
<p>Once I did get the rental shop on the phone, they told me that I needed to get the bike transported back to Bordeaux (250km) by whatever means necessary. The shop owner offered to see if he could find someone to do it, and I said I&#8217;d look around at my end. After our conversation, I had no idea if I would be stuck in the town of Saint-Etienne-de-Baïgorry overnight, but I figured I&#8217;d check into the hotel until things settled, and if I had to leave early, I could just lump one night&#8217;s charge.</p>
<p>As I was checking into <img style="border:0 none;position:absolute;left:0;top:0;width:12px;height:12px;cursor:pointer;z-index:10000;display:none;margin:0;padding:0;" src="http://maps.gstatic.com/intl/en_us/mapfiles/iw_plus.gif" alt="" /><a style="position:absolute;left:0;top:0;text-decoration:none;white-space:nowrap;display:none;" href="void(0)"><img style="border:0 none;position:relative;left:0;top:0;width:15px;height:12px;cursor:pointer;z-index:10000;display:none;vertical-align:top;margin:0;padding:0;" src="http://maps.gstatic.com/intl/en_us/mapfiles/iw_fullscreen.gif" alt="" /><span style="overflow:hidden;font-size:small;padding-left:5px;position:relative;top:-1px;text-decoration:underline;">Full-screen</span></a><img style="border:0 none;position:absolute;left:0;top:0;width:12px;height:12px;cursor:pointer;z-index:10000;display:none;margin:0;padding:0;" src="http://maps.gstatic.com/intl/en_us/mapfiles/iw_minus.gif" alt="" /><a href="http://bit.ly/1l7v0R" target="_blank">Hotel Juantorena</a>, I mentioned (or whined) to Mélanie (who I later found out was one of the owners) that I had just been in a motorcycle accident and needed to find a truck to bring the broken motorcycle back to Bordeaux. She said that her husband might be able to help me out. Bixente came out from the kitchen, and called around to some truck services in Biarritz, and found me a quote of €1,200. I thanked him and said I would call back to Bordeaux to see if the rental place had found me a better quote. The rental place said to call back in a couple of hours because the friend they were going to ask was out at the moment and it would be a while before they got an answer.</p>
<p>It turns out that Bixente is also a motorcyclist, and offered to take me (after he finished setting up his kitchen for the evening) to pick up the motorcycle on his motorcycle trailer to bring it down (the 10 km) to his hotel parking lot. I was kind of amazed at this, but just went with it after the day I was having. About a 1/2 hour later, after I had washed off some of my road rash, he called me down to the front of the hotel where he, his truck, and his motorcycle trailer were waiting for me. He drove me up to the crash spot where we loaded up the wreck, and brought it back to the hotel.</p>
<p>The ride up and back could have been horrible. But after figuring out my French skills needed just a bit of annunciation and a slower pace, Bixente actually took the time to get to know me. We had a really nice conversation, and I&#8217;ve come to look back upon that conversation as one of the nicest moments during my time in France.</p>
<p>After getting back to the hotel, I called the rental shop to tell them that the bike was now in the parking lot. In addition to the location of the bike, we had some (mis-)communication where I thought they said to wait several more hours to verify that the truck from Bordeaux would be interested in the job. So, I took a little nap, then read some more whilst having a beer in the bar. I was <em>really</em> surprised when Bixente told me the truck driver was at the other end of town and would be arriving soon. (Evidently, when I thought the rental shop was telling me that I was waiting for confirmation, they were actually telling me that I was waiting for the arrival of the truck.)</p>
<p>The truck driver, myself, and Bixente loaded up the bike into the truck. It was now about 8 or 9PM, and the driver hadn&#8217;t eaten, and neither had I, so we had dinner at the restaurant. The driver was kind of gruff, and not all that friendly, but I managed to get some small-talk in. After dinner, using Bixente as a patient go-between, we established that it was best if I went with the truck driver back to Bordeaux with the bike. (I didn&#8217;t realize there was more for me to do there.) So, I checked out of the hotel. I tried to convince Mélanie to keep my room charge, but she wouldn&#8217;t hear of it. She insisted that if I weren&#8217;t staying overnight they wouldn&#8217;t even think about keeping my money.</p>
<p>The driver brought be back to Bordeaux, and dropped me off at midnight at a hotel right near the rental shop. The next day, I went to the rental shop to find out that we were waiting for a verdict from the motorcycle repair shop. When I remembered that I hadn&#8217;t yet paid the driver from the evening before, the rental shop owner called him for the price. Since I was paying in cash for the truck ride, it only came out to €500, which is a <em>great</em> deal compared to the other quotes I had received.</p>
<p>Later that afternoon, the verdict came down that the bike&#8217;s frame was bent and therefore &#8220;totaled&#8221;. I went back over to the rental shop to sign the credit card slip for the €1800 security deposit that I had now forfeited. And thus ends my motorcycle adventure in France.</p>
<h4>Looking Back</h4>
<p>Now, people say all sorts of horrible things about the French. In general, I can tell you that much of this is wrong. In specific, I can tell you that Mélanie and Bixente are some of the warmest and most caring people I&#8217;ve ever run into in my travels. They took the time to patch up and help this stupid American with bad French and even worse motorcycle skills, and not ask for <em>anything</em> in exchange, other than an email greeting at some time in the future. I hugged Mélanie and Bixente fiercely, and I left their hotel with tears in my eyes because I felt really fortunate to have met these beautiful people.</p>
<p>I realize that I directly benefited from what I refer to as the Motorcyclist (a.k.a. Motard) Fraternity. Without knowing me, but because I spend time on two wheels like they spend time on two wheels, both the German couple and Bixente went <em>way</em> out of their ways to make sure I was taken care of. I guess it&#8217;s a similar thread amongst motorcyclists to help out your fellow motorcyclists.</p>
<h4>Doing Them A Solid</h4>
<p>In addition to adding Mélanie and Bixente to my Xmas card list, I have decided to send as many people as I can to them. So, if any of you readers are ever interested in a quaint village in the beautiful Basque region of France, might I suggest Hotel Juantorena? Also, spreading this info to motorcyclists far &amp; wide would be much appreciated.</p>
<p>(I will try to scan in their pamphlet, but in the mean time, here&#8217;s their contact info:) t</p>
<p>Hotel Restaurant Juantorena</p>
<p>64430, Baigorry</p>
<p>Pyrénées-Atlantiques, Aquitaine, France</p>
<p>Lat/Long: <a href="http://bit.ly/4bfxhq" target="_blank">43.17405, -1.34875</a></p>
<p>Phone: 05 59 37 40 78</p>
<p>Email: hotel.juantorena@orange.fr</p>
<p>Their pamphlet shows that they have a website (<a href="http://www.hotelrestaurantjuantorena.fr" target="_blank">http://www.hotelrestaurantjuantorena.fr)</a> but it doesn&#8217;t seem to be working?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/383/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=383&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/10/27/motorcycle-diary/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2638/3908783701_baf9a71033.jpg" medium="image">
			<media:title type="html">Scenic bike picture.</media:title>
		</media:content>

		<media:content url="http://maps.gstatic.com/intl/en_us/mapfiles/iw_plus.gif" medium="image" />

		<media:content url="http://maps.gstatic.com/intl/en_us/mapfiles/iw_fullscreen.gif" medium="image" />

		<media:content url="http://maps.gstatic.com/intl/en_us/mapfiles/iw_minus.gif" medium="image" />
	</item>
		<item>
		<title>Widgetbox Rocks!</title>
		<link>http://nelz.net/2009/10/27/widgetbox-rocks/</link>
		<comments>http://nelz.net/2009/10/27/widgetbox-rocks/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 02:47:48 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=390</guid>
		<description><![CDATA[On a lark, I recently submitted a request to the Widgetbox HR person, Brittany, to see if I could get the company to allow me to attend the &#8220;Random Hacks of Kindness&#8221; event in mid-November. I was considering taking a PTO day, but I&#8217;m still at a negative balance after my recent European adventure, and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=390&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On a lark, I recently submitted a request to the <a href="http://widgetbox.com/" target="_blank">Widgetbox</a> HR person, Brittany, to see if I could get the company to allow me to attend the &#8220;<a href="http://randomhacksofkindness.eventbrite.com/" target="_blank">Random Hacks of Kindness</a>&#8221; event in mid-November. I was considering taking a PTO day, but I&#8217;m still at a negative balance after my recent European adventure, and I thought it&#8217;d be nice if I could get Widgetbox to support my efforts in what <a href="http://twitter.com/brady" target="_blank">Brady Forest</a> called a &#8216;Disaster Relief Code Jam&#8217;.</p>
<p>I was <em>blown away</em> today when I got an email from Brittany saying that not only will Widgetbox management support me in this endeavor, but they are going to add a 1 day per year allowance to our policies for all the employees to pursue similar efforts. <strong>Wow!</strong></p>
<p>This just cements for me that I am totally working with the right set of people in a company that is just the right size for me. I feel appreciated, listened to, and respected, even when I bring forth crazy ideas like sending me off on our investors&#8217; dime to save the world.</p>
<p>Yeah, my life: it doesn&#8217;t suck! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/390/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=390&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/10/27/widgetbox-rocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Facebook Connect: Nonconsensual Privacy Leak</title>
		<link>http://nelz.net/2009/09/26/facebook-connect-nonconsensual-privacy-leak/</link>
		<comments>http://nelz.net/2009/09/26/facebook-connect-nonconsensual-privacy-leak/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 00:57:37 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=375</guid>
		<description><![CDATA[The Problem I do not like Facebook. I do not like it one bit. I want nothing to do with Facebook at all, and I&#8217;ve been very adamant about not signing up for an account despite the urging of everyone and their brother. So, when I recently gained an understanding of how Facebook Connect works, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=375&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>The Problem</h3>
<p>I do not like Facebook. I do not like it one bit. I want nothing to do with Facebook at all, and I&#8217;ve been very adamant about not signing up for an account despite the urging of everyone and their brother.</p>
<p>So, when I recently gained an understanding of how Facebook Connect works, I got a bit upset. Let me show you why with an example.</p>
<p>Let&#8217;s say I want to create an account at <a href="http://www.mapmyrun.com/" target="_blank">MapMyRun.com</a> which implements Facebook Connect, I will use my primary email address of &#8220;nelz@example.xxx&#8221;. After my account gets created MapMyRun then encrypts my email address with a one-way hash, which for the sake of argument looks like &#8220;BIGBADHASH&#8221;, and sends this hash to Facebook. &#8220;So what?&#8221; you think. Sure, they can&#8217;t figure out anything about me from a single one-way-hash of my email address, right?</p>
<p>Well, then let&#8217;s say I register for an account at <a href="http://io9.com/" target="_blank">io9</a>, again with my primary email address &#8220;nelz@example.xxx&#8221;. Since io9 also implements Facebook Connect, they also hash my email address and send it to Facebook. Guess what? The resulting string, &#8220;BIGBADHASH&#8221;, is <strong>the exact same</strong> as what MapMyRun just sent them.</p>
<p>Now, Facebook knows that someone with an email address that hashes to &#8220;BIGBADHASH&#8221; has an account on both MapMyRun and io9. Again you think &#8220;So what?&#8221; That one-way-hash protects my identity from being associated with any of these specific behaviors, right? <em>Au contraire, mon frère.</em></p>
<p>Now one of my well-meaning friends, who doesn&#8217;t know how much I loathe Facebook, tells Facebook that they want to connect with someone at the address &#8220;nelz@example.com&#8221;.</p>
<p>This was the last piece of the puzzle that Facebook needed. Facebook need only apply the one-way-hash to the plaintext email that my friend just provided them with, and they get &#8220;BIGBADHASH&#8221;. Then, they look up in their database where they&#8217;ve seen that hash before, and now they know that a user with an email address of &#8220;nelz@example.com&#8221; has an account on both MapMyRun and io9.</p>
<p>Now I, who has never <strong>ever</strong> logged into Facebook, am getting tracked by Facebook whether I like it or not.</p>
<h3>External Remediation</h3>
<p>Okay. So what can we do about this?</p>
<p>I looked on Facebook.com, and I found a Privacy Policy. But everything on there requires that you have an account on Facebook. I guess I could create an account, then delete it, but <strong>I don&#8217;t want an account</strong> on Facebook! What Facebook really needs is some web form for non-members that says &#8220;Forget anything you have, or will, ever collect about email XYZ&#8221;. But, that&#8217;s not likely to happen.</p>
<p>What about the end-points, the sites that are implementing Facebook Connect? Personally, during their sign-up processes, I&#8217;d like to see a check box that says &#8220;Don&#8217;t sell me out to Facebook.&#8221; Again, that&#8217;s not likely to happen.</p>
<h3>Personal Remediation</h3>
<p>Now, don&#8217;t get me wrong, I&#8217;m not a n00b. I realize there are all sorts of sites tracking my footprints across the digital landscape every day. (<a href="http://www.quantcast.com/" target="_blank">Quantcast</a>, <a href="http://www.doubleclick.com/" target="_blank">DoubleClick</a>, etc&#8230;) For most of them, if I were paranoid and technical enough I could purge their cookies or set up a proxy that doesn&#8217;t let my browser connect to those URLs.</p>
<p>But this Facebook thing is different, because it&#8217;s highly likely that the communication back to Facebook is not coming from my browser, but from the servers of sites like io9 and MapMyRun. And I have no way to stop it.</p>
<p>How about using a different email address for each site. Sure, that <strong>could</strong> work. If I had my own mail server, I could create &#8220;io9@nelzserver.xxx&#8221; for io9 and &#8220;mapmyrun@nelzserver.xxx&#8221; for MapMyRun, but how many people will have access or technical ability for something like that?</p>
<p><a href="http://gmail.com" target="_blank">Gmail</a> has a feature that could help out here. If I have an email address like &#8220;example@gmail.com&#8221;, I will still get the mail if it is sent to &#8220;example+io9@gmail.com&#8221; or &#8220;example+mapmyrun@gmail.com&#8221;. I found two challenges with this pattern: 1. it can break the &#8220;Forgot My Password&#8221; functionality if you forget what email you signed up with, and 2. emails with &#8220;+&#8221; in them don&#8217;t always pass the (incorrect) <a href="http://en.wikipedia.org/wiki/Regular_expression" target="_blank">regex</a>&#8216;s sites use to validate emails.</p>
<h3>Conclusion</h3>
<p>As <a href="http://nelz.net/2008/04/06/a_conflagration_of_random_musings/" target="_self">I have said before</a>, I am living life pretty openly on the internet. And like I said above, I know there are countless other companies doing much more specific tracking and profiling of me.</p>
<p>But Facebook&#8217;s hegemonic desires to run the internet frustrate me, and I don&#8217;t want to be a part of it. And it pisses me off that there&#8217;s nothing I can do to extract myself.</p>
<p><strong>Update</strong>: Found this interesting blog post &#8211; &#8220;<a href="http://pjf.id.au/blog/?position=590" target="_blank"><strong>Dark Stalking on Facebook</strong></a>&#8220;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/375/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=375&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/09/26/facebook-connect-nonconsensual-privacy-leak/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>How To Rock In Life</title>
		<link>http://nelz.net/2009/09/21/how-to-rock-in-life/</link>
		<comments>http://nelz.net/2009/09/21/how-to-rock-in-life/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 01:50:38 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=372</guid>
		<description><![CDATA[Somewhere I found a link to this blog post: &#8220;How to Ensure Your Life is a Bull Run&#8220;. I found it amusing how they couched the whole conversation in financial market terms, but otherwise I really liked it, mostly just from a bullet-point list perspective. So, here is the short version: Have Rocking Goals Be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=372&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Somewhere I found a link to this blog post: &#8220;<a href="http://www.dumblittleman.com/2009/09/how-to-ensure-your-life-is-bull-run.html" target="_blank">How to Ensure Your Life is a Bull Run</a>&#8220;. I found it amusing how they couched the whole conversation in financial market terms, but otherwise I really liked it, mostly just from a bullet-point list perspective.</p>
<p>So, here is the short version:</p>
<ol>
<li>Have Rocking Goals</li>
<li>Be Ambitious</li>
<li>Invest In Yourself</li>
<li>Healthy Lifestyle</li>
<li>Be Responsible</li>
<li>Patience Is The key</li>
<li>Never Give Up</li>
<li>Learn From Failures</li>
<li>Remain Positive</li>
<li>Celebrate Success</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/372/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/372/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/372/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=372&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/09/21/how-to-rock-in-life/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Leavin&#8217; on a jet plane&#8230;</title>
		<link>http://nelz.net/2009/08/26/leavin-on-a-jet-plane/</link>
		<comments>http://nelz.net/2009/08/26/leavin-on-a-jet-plane/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 07:35:42 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=366</guid>
		<description><![CDATA[I am taking a vacation. w00t! Normally at this time of year, I would be in full-on packing mode for Burning Man. Alas, my best friend from college decided to get married on the day the Man burns (in the U.K.). Then, to top it all off, my brother decided to get married on the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=366&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am taking a vacation. <strong>w00t</strong>!</p>
<p>Normally at this time of year, I would be in full-on packing mode for Burning Man. Alas, my best friend from college decided to get married on the day the Man burns (in the U.K.). Then, to top it all off, my brother decided to get married on the 18th of September in Boston. This left me with little to no obligations from the 7th to the 17th of September, so I decided that I was going to rent a motorcycle and tour around the south of France.</p>
<p>What does a techie do when they plan a trip? They buy tech gadgets of course!</p>
<p>My first purchase was a netbook. I got an <a href="http://eeepc.asus.com/global/product901.html" target="_blank">Asus EeePC 901</a> (Linux). I opted for the white model, because there was a $300 (100%) &#8216;black tax&#8217;. I opted to get some scull vinyl stickers ($13) instead. I dumped the default <a href="http://www.xandros.com/" target="_blank">Xandros</a> OS and installed <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a>.</p>
<p>My original thought was that I didn&#8217;t want to be tempted to work on work or side projects while I was traipsing around Europe, so I got a solid netbook that could provide me with email/Twitter/basic web surfing, but would lend itself to opening up an IDE. After a while, I realized that I should reserve my vacation for things I *want* to do, even if it includes working on a software<br />
project. So, I&#8217;ve decided to forget the netbook and take my home laptop, a 15&#8243; <a href="http://www.apple.com/macbook/" target="_blank">MacBook</a>. (If you are reading this and want the netbook I described above, I have one for a decent price if you&#8217;d like it.)</p>
<p>The second bit of tech that I purchased was a <a href="http://www.amazon.com/dp/B00154JDAI" target="_blank">Kindle</a> (2nd gen, non-DX). I do enjoy &#8216;personal&#8217; reading, but rarely take the personal time for it (except on vacations) because I&#8217;m usually caught up in some technical book. My usage of it has waxed and waned since my purchase, but it definitely addresses my criteria of reducing the amount of &#8216;stuff&#8217; that I am carrying whilst on-motorcycle in France. I do plan to put some entertaining books on my Kindle before I leave. (&#8220;Necronomicon&#8221; anyone?)</p>
<p>So, I&#8217;m down to my Kindle and my MacBook. What about my <a href="http://www.t-mobileg1.com/" target="_blank">G1</a> mobile phone? Well, the surprising thing is that I&#8217;ll probably just stick to my current provider (<a href="http://www.t-mobile.com/" target="_blank">T-Mobile</a>). I was aghast when I heard their prices (something like: $0.99/min of phone usage, $0.35 per sent text message, free received text message, $0.35 &#8216;connection charge&#8217; [for every time the phone checks for messages?], $15.00 <strong>per Megabyte of data</strong>), but in my subsequent research that&#8217;s about par for the course for prepaid SIM cards. I don&#8217;t like it, and I&#8217;m dubious that this is as good as it gets, but I don&#8217;t have the time or the inclination to fight<br />
it too hard. I just have to accept that my <a href="http://twitter.com/nelz9999" target="_blank">Twitter</a> addiction may cost me some. One of the positives though, is that when I told T-Mobile that I was considering using GSM cards purchased abroad they offered to help me unlock my phone. That should be a boon for me when I decide to replace it in the future and want to sell it.</p>
<p>I&#8217;m not planning on taking a camera, other than my G1 and my laptop. I am kind of hoping to take some videos using my MacBook&#8217;s built-in camera, but we&#8217;ll see if that even happens, because for most of my life I&#8217;ve been a forgetful and shitty photodocumentarian, and I don&#8217;t see that magically changing for this trip.</p>
<p>During my &#8216;where the wind blows&#8217; tour of France, I&#8217;ll probably use <a href="http://www.couchsurfing.org/" target="_blank">CouchSurfing.org</a> to meet people, or possibly even find shelter if I can plan that far in advance, but I&#8217;m purposly keeping my schedule unplanned so I don&#8217;t know if I&#8217;ll want to subject CouchSurfing hosts to my slapdash planning. The housing may just end up being, in order of preference: couches, hostels, B&amp;B&#8217;s, or hotels. Like I said, I going *very* unplanned. I think I should be okay, because the annual French<br />
holiday season is mostly done by the beginning of September. If not, it&#8217;ll be an exercise in creativity, right?</p>
<p>I&#8217;ve got 3 projects to work on while travelling. Firstly, I have visions of a <a href="http://code.google.com/p/simple-spring-memcached/" target="_blank">Simple-Spring-Memcached</a> v2, and I&#8217;ve already made a bit of progress starting that. Next, there is my as-yet-unannounced <a href="http://rubyonrails.org/" target="_blank">Ruby-on-Rails</a>, Twitter based web service. And thirdly, I&#8217;ve decided that I want to do a presentation at <a href="http://www.siliconvalley-codecamp.com/" target="_blank">Silicon Valley Code Camp</a> in October about Simple-Spring-Memcached, and I can work on <a href="http://www.siliconvalley-codecamp.com/Sessions.aspx?ForceSortBySessionTime=true&amp;id=262" target="_blank">that presentation</a> for a bit if I&#8217;m bored.</p>
<p>So, that&#8217;s my story. If I <em>do</em> get around to photodocumenting (or videodocumenting) any of my trip, I&#8217;ll be sure to post a link here.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/366/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=366&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/08/26/leavin-on-a-jet-plane/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Working With Amazon SimpleDB</title>
		<link>http://nelz.net/2009/07/14/working-with-amazon-simpledb/</link>
		<comments>http://nelz.net/2009/07/14/working-with-amazon-simpledb/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 05:56:49 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=341</guid>
		<description><![CDATA[At Widgetbox I&#8217;ve been playing with Amazon SimpleDB to implement some features that we&#8217;ll be releasing soon. I wanted to share some of my impressions with you, but another blogger has already posted a great writeup at http://www.royans.net/arch/2009/02/28/experimenting-with-simpledb-flagthiscom/. However, I&#8217;ll add my $.02 contribution to what he posted. #1 (&#8220;Its not a relational database.&#8221;) is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=341&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://www.widgetbox.com" target="_blank">Widgetbox</a> I&#8217;ve been playing with <a href="http://aws.amazon.com/simpledb/" target="_blank">Amazon SimpleDB</a> to implement some features that we&#8217;ll be releasing soon. I wanted to share some of my impressions with you, but another blogger has already posted a great writeup at <a href="http://www.royans.net/arch/2009/02/28/experimenting-with-simpledb-flagthiscom/" target="_blank">http://www.royans.net/arch/2009/02/28/experimenting-with-simpledb-flagthiscom/</a>. However, I&#8217;ll add my $.02 contribution to what he posted.</p>
<p>#1 (&#8220;Its not a relational database.&#8221;) is very, very important. You&#8217;ve really got to stretch your brain a bit to get out of the RDBMS headspace to see how it can be beneficial. <em>Everything</em> is stored as a string, so if you want to any kind of sorting with regards to numbers or dates, you have to format the values to be sorted lexicographically. (This reminds me of when <a href="http://nelz.net/2007/10/09/lucene-ranged-numerical-search/" target="_self">I was working with Lucene</a>.)</p>
<p>In addition to not having any kind of auto-increment (as mentioned in that blogs #5 point), there is no concept of an &#8220;increment&#8221; operation on a field. At first I was tempted to try for a Read-Increment-Update pattern, but if you think of how that would interact with Amazon&#8217;s concept of <a href="http://docs.amazonwebservices.com/AmazonSimpleDB/2009-04-15/DeveloperGuide/EventualConsistencySummary.html" target="_blank">Eventual Consistency</a> (which, for some inexplicable reason, I find absolutely hilarious), you will realize this is a sub-optimal pattern for data integrity. (The pattern I ended up using lends itself only to the specific interaction patterns I am designing for, so I won&#8217;t bore you with the details.)</p>
<p>Though there is no auto-increment, many blog posts have been published recommending UUID&#8217;s, which seems to be working for me as well.</p>
<p>As for that blogs #8 point, there is now a offered called <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1137&amp;categoryID=149" target="_blank">Javascript Scratchpad for Amazon SimpleDB</a>, which is just a small set of HTML/JS pages that you save locally and run in a browser. I think it&#8217;s actually a pretty cool lightweight and simple GUI tool to offer.</p>
<p>Looking at the price list, you might think that SimpleDB could get expensive fast. But, if you read carefully you&#8217;ll see the following: &#8220;Data transferred between Amazon SimpleDB and other Amazon Web Services within the same region is free of charge (i.e., $0.00 per GB).&#8221; That&#8217;s pretty cool. As long as whatever is hitting your SimpleDB instance resides on the Amazon cloud (in the same region), you don&#8217;t pay for data transfer.</p>
<p>I also gotta comment on the <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1132" target="_blank">Java client provided by Amazon</a>. Yeah, it <em>works</em>, but working with it is fairly &#8220;meh&#8221;. You get the source an everything for it, but it&#8217;s not Open Source and they definitely don&#8217;t give the impression that they&#8217;re looking for any contributions. I would&#8217;ve submitted a couple of lines of documentation for some of the methods at the very least.</p>
<p>I&#8217;ve heard some good things about the <a href="http://code.google.com/p/typica/" target="_blank">typica</a> library, specifically that the interaction patterns with the library are nicer than the Amazon-provided library. There only seems to be one (maybe two?) developer working on it, but at least it&#8217;s hosted on Google Code so, unlike Amazon, maybe the developer would welcome contributions.</p>
<p>I haven&#8217;t used typica myself yet, but since I&#8217;m not too far down the other path, maybe I&#8217;ll check it out.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/341/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=341&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/07/14/working-with-amazon-simpledb/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>The New Nelz.net</title>
		<link>http://nelz.net/2009/06/28/the-new-nelz-net/</link>
		<comments>http://nelz.net/2009/06/28/the-new-nelz-net/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 20:12:18 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelz.net/?p=316</guid>
		<description><![CDATA[Welcome to the new and improved Nelz.net! Background I started this blog way back in the beginning of 2007. At the time, I wanted more than just a blog host, I wanted a host where I could deploy other Java webapps if I felt the need. (For other side projects, y&#8217;know.) Following the lead of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=316&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to the new and improved Nelz.net!</p>
<h3><strong>Background</strong></h3>
<p>I started this blog way back in the beginning of 2007. At the time, I wanted more than just a blog host, I wanted a host where I could deploy other Java webapps if I felt the need. (For other side projects, y&#8217;know.) Following the lead of <a href="http://raibledesigns.com/rd/page/about" target="_blank">Matt Raible</a>, I chose <a href="http://www.kgbinternet.com/" target="_blank">KGBInternet</a> to host a <a href="http://roller.apache.org" target="_blank">Roller</a> (which wasn&#8217;t then, but is now an Apache project) blog instance. Keith, the proprietor of KGBInternet, is incredibly responsive and I&#8217;d have to say that his service was a great $20/month host where you get full command-line access and control over your JVM/Tomcat instances.</p>
<p>A couple of months ago, I decided to critically look how I use my different online providers.</p>
<p>I had been maintaining a cheap, $5/month <a href="http://geekisp.com/" target="_blank">GeekISP</a> account for personal data <a href="http://subversion.tigris.org/" target="_blank">SVN</a> hosting/backup. Since most of my projects are Open Source (and usually hosted on <a href="http://code.google.com/hosting/" target="_blank">Google Code</a>), I realized I wasn&#8217;t really using my account, so I dropped it.</p>
<p>And when I critically looked at my usage of KGBInternet, I realized that I was <em>only</em> using it for maintaining my blog. That&#8217;s $240 (Candian) bucks per year for blog hosting, which could be done for <em>much</em> less by another provider. So, I decided to drop that account.</p>
<h3><strong>Getting Data Out Of Roller</strong></h3>
<p>The biggest problem I had was trying to get my blog content out of Roller. There is no &#8220;Export&#8221; functionality, which frustrated me to no end. I found a posts with a tutorial on <a href="http://codex.wordpress.org/Importing_From_Roller" target="_blank">how to export directly from the database</a>, but that wouldn&#8217;t work from me because 1) I didn&#8217;t want to go through a PHP export process, and 2) my db entries are all in <a href="http://www.jspwiki.org/" target="_blank">JSPWiki</a> markup (via the <a href="http://wiki.java.net/bin/view/Javanet/OptionalPluginsForRoller" target="_blank">Roller JSPWiki plugin</a>). I found another post showing <a href="http://http://nullpointer.debashish.com/migrating-a-roller-blog-to-wordpress" target="_blank">how to get my data out using Roller templates</a>, but that wasn&#8217;t going to specifically work for me, since I wasn&#8217;t going to be hosting my own <a href="http://wordpress.org/" target="_blank">WordPress</a> install. However, the <a href="http://www.jroller.com/kame/entry/export_and_backup_your_jroller" target="_blank">concept of using the built-in Roller template</a> capabilities had a bunch of potential.</p>
<p>At this point, I wasn&#8217;t yet sure if I was going to end up using <a href="http://wordpress.com" target="_blank">WordPress.com</a> or <a href="http://blogger.com" target="_blank">Blogger</a>. My investigations proved that Blogger only likes to <a href="http://bloggerindraft.blogspot.com/2008/06/new-feature-import-and-export.html" target="_blank">import/export in their own format</a>, for which I could find no documentation. WordPress however has several import capabilities, so I figured I&#8217;d target WordPress, and maybe use some of the community WordPress -&gt; Blogger converters if I needed to move my stuff over to there.</p>
<p>WordPress has its own WordPress eXtended RSS (WXR) syntax, but it&#8217;s <a href="http://en.forums.wordpress.com/topic/can-i-get-the-extended-rss-schema?replies=5" target="_blank">not easy to get a definitive format</a> information. WordPress will import from a <a href="http://www.movabletype.org/" target="_blank">MoveableType</a> export file, which is actually <a href="http://www.movabletype.org/documentation/appendices/import-export-format.html" target="_blank">very well-documented</a>. This is what basically decided me on moving to WordPress, at least for the time being&#8230;</p>
<p>By referring to both the MoveableType documentation and the <a href="http://roller.apache.org/download.cgi" target="_blank">Roller templating guide</a>, I was able to create the following template:</p>
<pre> 1  #set($pager = $model.getWeblogEntriesPager())
 2  #set($map = $pager.getEntries())
 3  #foreach( $day in $map.keySet())
 4  #set($entries = $map.get($day))
 5  #foreach( $entry in $entries )
 6  TITLE: $entry.title
 7  AUTHOR: nelz9999
 8  DATE: $utils.formatDate($entry.pubTime, "MM/dd/yyyy HH:mm:ss")
 9  CATEGORY: $entry.category.name
 10  -----
 11  BODY:
 12  $entry.transformedText
 13  #foreach( $comment in $entry.comments )
 14  -----
 15  COMMENT:
 16  #if ("$comment.name" != "")
 17  AUTHOR: $comment.name
 18  #end
 19  DATE: $utils.formatDate($comment.postTime, "MM/dd/yyyy HH:mm:ss")
 20  #if ("$comment.email" != "")
 21  EMAIL: $comment.email
 22  #end
 23  #if ("$comment.url" != "")
 24  URL: $comment.url
 25  #end
 26  $comment.content
 27  -----
 28  #end        
 29  --------
 30  #end
 31  #end</pre>
<p>One of the keys in the above template is Line #12. Instead of using &#8220;$entry.text&#8221;, I use &#8220;$entry.transformedText&#8221;, which applies all the JSPWiki formatting. (And, if you&#8217;re copy/pasting this template, be sure to update the &#8220;AUTHOR:&#8221; tag on Line #7 to something appropriate for you&#8230;) Keep in mind that this gets you <em>one page</em> of (published, not draft) content at a time, as defined by the &#8220;<em>Number of entries to display on weblog</em>&#8221; parameter in the <strong>Preferences -&gt; Settings </strong>tab. You get to later pages of data by appending &#8220;?page=X&#8221; (0 being the default) to the URL: &#8220;http://nelz.net/roller/nelz/page/moveabletype.tmpl?page=1&#8243;.</p>
<p>It is then a simple matter of doing a &#8220;wget&#8221; for each page: &#8220;wget http://nelz.net/roller/nelz/page/moveabletype.tmpl?page=1 -O page1.txt&#8221;. If you have lots of posts, I&#8217;d recommend upping your entries/page setting, so you have less individual files to manage, but also beware of your file sizes getting too big&#8230; I left my entries/page setting at 10, and I ended up managing 14 files. Had I set it to 50 entries/page, it would have been only 3 files.</p>
<p>But, now you&#8217;ve got most of your content (not images and stuff tho) in a portable format!</p>
<h3>Getting Data Into WordPress</h3>
<p>After creating my WordPress.com account, it was pretty simple to get the data in, via the <strong>Tools -&gt; Import </strong>menu. Now, I had 138 posts in Draft status. I tried using the bulk edit -&gt; publish tool, but for some reason that wasn&#8217;t working for me. I published a couple by hand, but then I remembered back to something Neil Ford <a href="http://nelz.net/2007/05/09/selenium-rocks-even-harder-and-other-notes-from-the-session-i-went-to/" target="_self">said at a conference I attended</a>: &#8220;our computers get together and laugh at us at night because we keep doing their (repetitive task) jobs for them…&#8221; Well, I&#8217;ll be damned if I let my computer laugh at me!!</p>
<p>So, I popped open <a href="http://seleniumhq.org/projects/ide/" target="_blank">SeleniumIDE</a>, and created a quick little automation to approve all the drafts in my queue, a single iteration of which looks like this:</p>
<pre>&lt;tr&gt;
 &lt;td&gt;open&lt;/td&gt;
 &lt;td&gt;/wp-admin/edit.php?post_status=draft&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;td&gt;click&lt;/td&gt;
 &lt;td&gt;link=Quick Edit&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;td&gt;select&lt;/td&gt;
 &lt;td&gt;_status&lt;/td&gt;
 &lt;td&gt;label=Published&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;td&gt;click&lt;/td&gt;
 &lt;td&gt;link=Update Post&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;td&gt;waitForText&lt;/td&gt;
 &lt;td&gt;//img[@alt='More stats']&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;</pre>
<p>This worked swimmingly, and in 30 minutes or so, I published nearly 140 posts &#8220;by hand&#8221;. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<h3>Getting to know Wordrpress</h3>
<p>Things that I like about WordPress:</p>
<ul>
<li>It is a <em>much</em> better interface than Roller</li>
<li>&#8220;Pages&#8221;. I also use my blog as a place to keep an online version of my resume, and Pages allow me to exactly do that without having to use a &#8216;regular&#8217; blog post that I update over time.</li>
<li>WordPress auto<em>magic</em>ally figures out how to map the old Roller URLs to the new ones. I was getting quite a few links to some of my recent posts, and I really happy that the links floating around the web-o-sphere will still work. (E.g. &#8220;<a href="http://nelz.net/roller/nelz/entry/velocity_conference_recap" target="_blank">http://nelz.net/roller/nelz/entry/velocity_conference_recap</a>&#8221; ends up on the page &#8220;<a href="http://nelz.net/2009/06/25/velocity-conference-recap/" target="_self">http://nelz.net/2009/06/25/velocity-conference-recap/</a>&#8220;.)</li>
<li>Setting up my own domain was <em>absolutely painless</em>.</li>
</ul>
<p>Things that I haven&#8217;t yet decided on:</p>
<ul>
<li>You can&#8217;t use <a href="http://google.com/analytics" target="_blank">Google Analytics</a> <a href="http://faq.wordpress.com/2006/08/03/can-i-use-google-analytics/" target="_blank">on a WordPress.com blog</a>, but they do provide some of their own stats (and there are <a href="http://faq.wordpress.com/2006/07/28/can-i-have-a-statcounter-on-my-blog/" target="_blank">several other options</a> as well). I haven&#8217;t yet decided if it&#8217;s better to have the stats easily available in my blog admin, or if I&#8217;d have preferred to keep all my analytics stuff together in Google.</li>
<li>I haven&#8217;t yet purchase the $30/yr no ads upgrade. I haven&#8217;t seen any ads on my site as it is, so I&#8217;m not sure if I will actually need it?</li>
<li>No specific control over robots.txt. Whereas I want 99% of my blog public, I want to prohibit Google from picking up my resume, &#8216;cuz I kinda hate cold-calls from recruiters (but maybe I&#8217;m just being silly).</li>
</ul>
<h3>To Do</h3>
<ul>
<li>Some of the formatting (especially on the preformatted code sections) got lost in the migration&#8230; I&#8217;ll try to go back to the most used ones to reformat.</li>
<li>I gotta update that resume of mine.</li>
<li>Once I&#8217;ve been up on WordPress for a week or two, I&#8217;ll actually cancel my account with KGBInternet.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/316/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=316&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/06/28/the-new-nelz-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Velocity Conference Recap</title>
		<link>http://nelz.net/2009/06/25/velocity-conference-recap/</link>
		<comments>http://nelz.net/2009/06/25/velocity-conference-recap/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:05:33 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelznet.wordpress.com/?p=5</guid>
		<description><![CDATA[These are the notes I collected (and found interesting) during my day at the Velocity Conference. General Themes I had never heard of it before, but almost every single presenter referenced Ganglia as a de-facto monitoring system. It got presented a bunch of different ways, but basically all the big sites that presented stuff today [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=5&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>These are the notes I collected (and found interesting) during my day at the <a class="external" href="http://en.oreilly.com/velocity2009">Velocity Conference</a><img class="outlink" src="images/out.png" alt="" />.</p>
<h4>General Themes</h4>
<ul>
<li> I had never heard of it before, but almost every single presenter referenced <a class="external" href="http://ganglia.info/">Ganglia</a><img class="outlink" src="images/out.png" alt="" /> as a de-facto monitoring system.</li>
<li> It got presented a bunch of different ways, but basically all the big sites that presented stuff today all use on and off (or dial-able) configurations for features. This is not just for release-time of new features, but this can also help them manage their capacity if something is going wrong.</li>
<li> Many of these talks are available online: <a class="external" href="http://velocityconference.blip.tv/">http://velocityconference.blip.tv/</a><img class="outlink" src="images/out.png" alt="" /></li>
</ul>
<h4>&#8220;Image Weight Loss Clinic&#8221; at <a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/9375">Ignite Velocity</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> Stop using GIFs. Use PNGs.</li>
<li> Use data strippers/filters on JPGs. There is a lot of &#8216;extra&#8217; data included in JPG that aren&#8217;t necessary.</li>
<li> There are bunches of PNG optimizers out there. We should use at least one, if not all of them. (The suggestion was to build a serial pipeline for them.)</li>
<li> Using the <a class="external" href="http://en.oreilly.com/velocity2009">Velocity</a><img class="outlink" src="images/out.png" alt="" /> page as an example, the presenter was able to reduce the page weight by 30% following these suggestions.</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/8523">The User and Business Impact of Server Delays, Additional Bytes, and HTTP Chunking in Web Search</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> A lot of people loved the empirical data showing that slower sites cost you users, even for differences as small as 200ms. Brady Forrest wrote up a great digestion of this talk: &#8220;<a class="external" href="http://radar.oreilly.com/2009/06/bing-and-google-agree-slow-pag.html">Bing and Google Agree: Slow Pages Lose Users</a><img class="outlink" src="images/out.png" alt="" />&#8220;</li>
<li> The technique that I pulled outta the whole deal is to use HTTP 1.1 Chunked data. This enables a site to deliver the easy-to-compute stuff first (static header?), and the harder-to-compute stuff later.</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/7479">Fixing Twitter: Improving the Performance and Scalability of the World&#8217;s Most Popular Micro-blogging Site</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> Uses <a class="external" href="http://www.nttamerica.com/products/hosting/managed_hosting/index.php">NTT America</a><img class="outlink" src="images/out.png" alt="" /> managed hosting</li>
<li> Put Google Analytics on 503 (Fail Whale) and 500 (Robot) pages. Use Google Analytics for failure metrics.</li>
<li> Configuration Management: Do it ASAP, early &amp; often, &#8216;cuz you&#8217;re gonna need it eventually</li>
<li> Even their Ops stuff is checked into SVN, and they require code reviews on all their stuff, enforced by SVN pre-commit hooks and using <a class="external" href="http://www.review-board.org/">Review Board</a><img class="outlink" src="images/out.png" alt="" /></li>
<li> Send emails (or ANYTHING ELSE POSSIBLE) asynchronously</li>
<li> They recommend using &#8220;<a class="external" href="http://mtop.sourceforge.net/">mkill</a><img class="outlink" src="images/out.png" alt="" />&#8220;, which monitors for long-running queries and kills them, before the queries kill your site.</li>
<li> Instrument EVERYTHING for timing/performance.</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/7538">2 Years Later, Loving and Hating the Cloud</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> Presented by an engineer from <a class="external" href="http://www.picnik.com/">Picnik</a><img class="outlink" src="images/out.png" alt="" />. They run a hybrid (part-cloud, part managed) site.</li>
<li> Queues scale nicely in AWS. (I.e. if you are falling behind processing your queue, it is nigh trivial to just bring up another box to deal with the queue.</li>
<li> In the cloud, you can plan for your average usage, and scale up/down as needed easily. (You don&#8217;t need to keep the 6th box at 1% utilization up, do you?)</li>
<li> Buy hardware in batches, it gives you flexibility. No scrambling if you need a new box when there are extras around. Also waiting for good deals on price fluctuations on hardware.</li>
<li> If you don&#8217;t have a good deletion plan on S3, it can end up costing you $$</li>
<li> Being in the cloud enables you to ignore the S3 space problem, operationally at least, until it is too expensive (leaving you opportunity to work on other low-hanging fruit)</li>
<li> Whereas you can get some nice SLA&#8217;s when dealing within your own network, latency should be treated as a complete unknown in the cloud.</li>
<li> Be prepared for some difficult and juicy debugging when using the cloud.</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/10137">Page Speed</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> Twitter is a fantastic feedback mechanism, more so than Google Groups / wikis / forums (me: lower barrier for commentary?)</li>
<li> Browser Tool like Firebug</li>
<li> Someone (on Twitter?) made a very apt comment that it&#8217;s kinda sad to see Google (Page Speed) and Yahoo! (YSlow) shepherding similar projects, without trying to combine them.</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/7641">10+ Deploys Per Day: Dev and Ops Cooperation at Flickr</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> Websites pretty much always ship trunk. Having versions and point releases are vestigial remnants from old shrink-wrapped product lifecycles.</li>
<li> &#8220;Dark launches&#8221;, where you use the on/off/variable conditionals to exercise the new backend before it becomes mission/feature-critical.</li>
<li> Have all deployments notify IRC/IM/Twitter (to internal teams only) so EVERYONE knows what&#8217;s going on. Also, keep it around w/timestamps, and make it searchable</li>
<li> Give ALL developers (at least read-only) access to the prod machines. It helps them help you (Ops) better.</li>
<li> If there is an outage, EVERYONE stops working on new work. Even they aren&#8217;t directly responsible, JR engineers should be working to understand why something is broken. This is a good time for them to learn these diagnostic skills.</li>
<li> AUTOMATE your INFRASTRUCTURE!!</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/7375">Scaling for the Expected and Unexpected</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> &#8216;Planned Degradation&#8217; &#8211; switch off functionality, this can lighten the load on the back end</li>
<li> If you hit high (un)expected load it is usually on a single/few page(s), route to a static copy of that page, regenerate every X minutes.</li>
<li> The simple act of using a proxy server between your appServer and the outside world, even if it is not caching (like Squid/Varnish), is that the appServer is just delivering to a network neighbor, reducing its thread pool contention. This simple fact can have a great positive effect on your server performance.</li>
<li> Watch out for cache stampedes.</li>
<li> 3rd Party Resources &#8211; Load last, place at bottom of page, in an iframe. If sales doesn&#8217;t like it, tell them to go to hell. (Me: whoa.)</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/8324">Infrastructure in the Cloud Era</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> (Me: There were some great slides here, I hope they post them publicly.)</li>
<li> With provisioning becoming so quick (minutes), we need a quicker way to get these provisioned machines up and running quickly to realize those benefits.</li>
<li> The real benefit of the cloud is not $$, it is TIME (which you can turn into $$).</li>
<li> Definition &#8211; meatcloud: the humans that run your cloud presence. Noticeably difficult and slow to provision a new resource in your meatcloud.</li>
<li> A bit of operational philosophy &#8211; once you get your provisioning/setup all automated and quick, if a service is misbehaving have a bias towards killing it and recreating an instance, rather than trying to &#8216;recover&#8217; the problem box.</li>
<li> When you&#8217;ve got Command &amp; Control systems in place, they also need an on/off switch, because sometimes you *do* need to do some manual stuff.</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/7094">Ajax Performance</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> Modify your nodes before you attach them to the DOM. Modifying them after can trigger cascading re-parsing by the browser.</li>
<li> While most languages have Optimizers, JavaScript doesn&#8217;t. You should remove your own common subexpressions / loop invariants / etc.</li>
<li> Prefer &#8220;[array, of, strings].join()&#8221; over &#8220;array + of + strings&#8221; because the &#8220;+&#8221; operator builds lots of spurious interstitial objects</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/7637">Building OpenDNS Stats</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> This talk was about a High-Write environment, which isn&#8217;t as applicable to Gallery, but is applicable to our Metrics app</li>
<li> Don&#8217;t use auto-increment in a high-write environment, as it does a table_lock</li>
</ul>
<h4><a class="external" href="http://en.oreilly.com/velocity2009/public/schedule/detail/7681">Load Balancing Roundup</a><img class="outlink" src="images/out.png" alt="" /></h4>
<ul>
<li> This presenter is a committer for <a class="external" href="http://www.danga.com/perlbal/">Perlbal</a><img class="outlink" src="images/out.png" alt="" /> and was very up-front that this talk would be heavy on the praise for it.</li>
<li> Graphs that look at load every 30 seconds or more DON&#8217;T give you enough info about load on your server. Presenter suggests you watch &#8220;top -d 0.5&#8243; for a while to get an idea of your server&#8217;s load.</li>
<li> Presenter and audience agreed that <a class="external" href="http://haproxy.1wt.eu/">HAProxy</a><img class="outlink" src="images/out.png" alt="" /> doesn&#8217;t work with &#8220;keep-alive&#8221;</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=5&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/06/25/velocity-conference-recap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Ignite Velocity 2009</title>
		<link>http://nelz.net/2009/06/24/ignite-velocity-2009/</link>
		<comments>http://nelz.net/2009/06/24/ignite-velocity-2009/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 22:59:36 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelznet.wordpress.com/?p=6</guid>
		<description><![CDATA[My good friend Jesse asked me to consider doing an Ignite talk at the Velocity conference. I hemmed and hawed for a while, but after being assured that I could do a talk on a non-technical subject, I agreed. I submitted the talk &#34;Adopting SF Prankster Culture &#8211; One geek’s 10-year journey to find an [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=6&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My good friend <a class="external" href="http://twitter.com/jesserobbins">Jesse</a><img class="outlink" src="images/out.png" alt="" /> asked me to consider doing an <a class="external" href="http://ignite.oreilly.com/">Ignite</a><img class="outlink" src="images/out.png" alt="" /> talk at the <a class="external" href="http://en.oreilly.com/velocity2009">Velocity conference</a><img class="outlink" src="images/out.png" alt="" />. I hemmed and hawed for a while, but after being assured that I could do a talk on a non-technical subject, I agreed.</p>
<p>I submitted the talk &quot;Adopting SF Prankster Culture &#8211; One geek’s 10-year journey to find an outlet for his social creativity.&quot; I have <a class="external" href="http://www.slideshare.net/nelz9999/adopting-sf-prankster-culture">posted the slides</a><img class="outlink" src="images/out.png" alt="" />, but unfortunately those slides don&#8217;t convey a lot of information without my running commentary. I would have posted a video, but there was some problem with the video recording at the event, so I don&#8217;t think I&#8217;ll have access .
</p>
<p>It was a really fun time. I did get a bit nervous ahead of time, but I just had to remind myself that I had just jumped out of a plane two days earlier. With that perspective, I was able to take the stage pretty confidently.
</p>
<p>I did have a bit of a false start though, because the slides that were on the monitors right when I started were for another presenter. I did my best to bullshit my way through a slide or two until the organizers figured out the glitch. I think this actually softened up the audience with a bit of humor, which got them ready for my talk which I gave one deck later.
</p>
<p>Doing the talk had some unexpected benefits too&#8230; For the whole next day that I was at the Velocity conference sessions, people would come up to me in the hallways and congratulate me for my presentation. I felt kinda like a geek rock star!
</p>
<p>So if you have a chance, I would totally recommend doing an Ignite talk. I&#8217;m glad I got to &#8216;cut my teeth&#8217; doing a talk on a social concept as practice in case I end up making a presentation on any of my other more technical projects.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=6&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/06/24/ignite-velocity-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Nelz&#8217; Micro Relief Plan</title>
		<link>http://nelz.net/2009/01/27/nelz-micro-relief-plan/</link>
		<comments>http://nelz.net/2009/01/27/nelz-micro-relief-plan/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 23:01:18 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelznet.wordpress.com/?p=11</guid>
		<description><![CDATA[Geez, this economy is sucking! As of late, there doesn&#8217;t seem to be a day that goes by when I don&#8217;t hear of layoffs, either from mass media or from my Twitter stream. It is in times like these when we should take time to appreciate what we have. I feel very fortunate to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=11&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><i>Geez</i>, this economy is sucking! As of late, there doesn&#8217;t seem to be a day that goes by when I <i>don&#8217;t</i> hear of layoffs, either from mass media or from <a class="external" href="http://www.twitter.com/nelz9999">my Twitter stream</a><img class="outlink" src="images/out.png" alt="" />.</p>
<p>It is in times like these when we should take time to appreciate what we have. I feel very fortunate to be gainfully and happily employed at <a class="external" href="http://www.widgetbox.com">Widgetbox</a><img class="outlink" src="images/out.png" alt="" />. Will and Giles and our Board of Directors have done a great job of managing our funding, so much so that I know I have job for at least two more years. I daily experience a bit of cognitive dissonance when I realize that my position in a startup is more secure than many people in <i>established</i> companies.
</p>
<p>I have been running around wrapped in my cozy little security blanket of a job. Sure, I&#8217;ve acknowledged that the economy is tough for a lot of people.  I&#8217;ve even been trying to do my part by spending in local businesses. But the severity of the economic situation didn&#8217;t really rock me to my core until last night.
</p>
<p>I was having a drink with a friend who does fine finish carpentry, and we started discussing how difficult things are out there. It turns out he is actively thinking about re-enlisting in the Navy after nigh 20 years away. He feels this is one of the few choices left to him to support his family. This really shook me up. Tonight, I called some of my best friends to quiz them on how they are set for maintaining their mortgage over the coming shaky financial times, because I needed to know that they are likely to be alright.
</p>
<p>But, this is not just a time to buckle down, count my pennies, and continue living in the relative comfort that I have achieved. It is a time for action.
</p>
<hr />
&quot;No man is an island,<br />
Entire of itself.<br />
Each is a piece of the continent,<br />
A part of the main.<br />
If a clod be washed away by the sea,<br />
Europe is the less.<br />
As well as if a promontory were.<br />
As well as if a manner of thine own<br />
Or of thine friend&#8217;s were.<br />
Each man&#8217;s death diminishes me,<br />
For I am involved in mankind.<br />
Therefore, send not to know<br />
For whom the bell tolls,<br />
It tolls for thee.&quot;<br />
- John Donne</p>
<hr />
<p>I feel a need to bring my blessings to bear on this economic crisis. I look about me to take stock of what I have. Whereas I am financially stable, I don&#8217;t have the financial wherewithal to employ anyone else, nor to pay for their housing. But, I do have quite a bit of space in this great apartment of mine, and I know that my privacy needs are flexible enough to deal with a shared-living-space arrangement&#8230;
</p>
<p>Here is my proposal: If you are in my extended circle of community (<a class="external" href="http://www.burningman.com/">Burners</a><img class="outlink" src="images/out.png" alt="" />, <a class="external" href="http://www.linkedin.com/in/nelz9999">techies</a><img class="outlink" src="images/out.png" alt="" />, <a class="external" href="http://www.twitter.com/nelz9999">Twitterati</a><img class="outlink" src="images/out.png" alt="" />, etc.) and you have suffered a financial setback (such as a layoff) and you could use some rent-relief to get back on your feet, you should get in touch with me. <b>I am open to the opportunity of sharing my space with a fellow community member</b> for low (or maybe even no) rent.
</p>
<p>I don&#8217;t know what&#8217;s going to happen from this. Maybe no one wants to share a space with me? Maybe the economy makes a sharp upswing? Maybe, maybe, maybe&#8230; This is what I have to offer, and I&#8217;ll be glad if I can help someone out.
</p>
<p>PS. I gotta give a shout-out to <a class="external" href="http://www.usnews.com/blogs/the-inside-job/2008/8/26/toyota-refuses-to-lay-off-workers.html">Toyota in this economic climate</a><img class="outlink" src="images/out.png" alt="" />. If I were buying a vehicle, I&#8217;d prefer to support a company that operates in accordance with the very American ideals of education and recognition of service, rather than American-based companies that wallow in mismanagement and short-sightedness.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=11&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2009/01/27/nelz-micro-relief-plan/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
		<item>
		<title>Busy Busy Busy</title>
		<link>http://nelz.net/2008/07/08/busy-busy-busy/</link>
		<comments>http://nelz.net/2008/07/08/busy-busy-busy/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 23:20:40 +0000</pubDate>
		<dc:creator>nelz9999</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nelznet.wordpress.com/?p=29</guid>
		<description><![CDATA[I&#8217;m not gonna apologize, but I will let you know why I haven&#8217;t been posting on this blog in the last month and a half&#8230; I have been in the enviable position of having so much actual coding to do that I couldn&#8217;t do a heck of a lot of reading nor writing about coding. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=29&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not gonna apologize, but I will let you know why I haven&#8217;t been posting on this blog in the last month and a half&#8230;  I have been in the <b>enviable</b> position of having so much <i>actual</i> coding to do that I couldn&#8217;t do a heck of a lot of reading nor writing <i>about</i> coding.</p>
<p>I have been in the thick of it at <a class="external" href="http://www.widgetbox.com">Widgetbox</a><img class="outlink" src="images/out.png" alt="" />, and other than a bit of adjustment time in the other parts of my life I have been rockin&#8217; and rollin&#8217;!
</p>
<p>My biggest accomplishment has been implementing <a class="external" href="http://www.danga.com/memcached/">MemCacheD</a><img class="outlink" src="images/out.png" alt="" /> as our distributed cache.  I&#8217;ve even submitted a couple of patches to the <a class="external" href="http://code.google.com/p/spymemcached/">Spy MemCacheD Java Client</a><img class="outlink" src="images/out.png" alt="" />.  (Dustin, who wrote an maintains that client is a pretty cool cat with loads of talent!)
</p>
<p>So.. Yeah&#8230;  I&#8217;m not apologizing.  I guess maybe I&#8217;m gloating?!? </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/nelznet.wordpress.com/29/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/nelznet.wordpress.com/29/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nelznet.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nelznet.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nelznet.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nelznet.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nelznet.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nelznet.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nelznet.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nelznet.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nelznet.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nelznet.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nelznet.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nelznet.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nelznet.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nelznet.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nelz.net&#038;blog=8173157&#038;post=29&#038;subd=nelznet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nelz.net/2008/07/08/busy-busy-busy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f992f247f63ba6ca6e0e0c3fa5726f72?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">nelz9999</media:title>
		</media:content>
	</item>
	</channel>
</rss>
