<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><description>The slightly less long-winded not-at-work version of Will</description><title>willathome</title><generator>Tumblr (3.0; @willathome)</generator><link>http://will.thestranathans.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WillAtHome" /><feedburner:info uri="willathome" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><geo:lat>35.157955</geo:lat><geo:long>-80.9767</geo:long><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FWillAtHome" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FWillAtHome" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FWillAtHome" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/WillAtHome" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FWillAtHome" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FWillAtHome" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FWillAtHome" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item><title>Marriage Advice</title><description>&lt;p&gt;My friend, &lt;a href="http://jinksto.com" target="_blank"&gt;Jinksto&lt;/a&gt; wrote a &lt;a href="http://jinksto.com/blog/?p=1808" target="_blank"&gt;whole month’s worth of emails to a couple who were getting married&lt;/a&gt;. While all his advice was good advice, &lt;a href="http://valerie.thestranathans.com" target="_blank"&gt;Mrs. At Home&lt;/a&gt; and I have our own marriage advice.&lt;/p&gt;

&lt;h2&gt;Mrs. At Home&lt;/h2&gt;

&lt;p&gt;Mrs. At Home’s advice is sound, and simple:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You’re on the same team.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This means what it sounds like. Many couples seem to be in some sort of a &lt;em&gt;Women are From Venus, Men are From Mars&lt;/em&gt; war. While men and women are quite different, that doesn’t mean it’s “us against them” or you against your spouse. And there are lots of important implications of being on the same team:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;You never talk bad about your teammates. Ever.&lt;/li&gt;
&lt;li&gt;If your spouse does something that could be construed as good or bad, it was probably the good one.&lt;/li&gt;
&lt;li&gt;Your job is to &lt;em&gt;encourage&lt;/em&gt; and &lt;em&gt;help&lt;/em&gt; your teammate for the good of the team, not to be rotten to them to the detriment of the team.&lt;/li&gt;
&lt;li&gt;If your spouse says something that could be either nice or ugly, they probably meant it the nice way. (Since Mrs. At Home has this assumption, it’s bailed me out many times since I’m not too good with vocabulary.)&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;My Advice&lt;/h2&gt;

&lt;p&gt;My advice can be summed up in two words:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stay married.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is largely stolen material from a Sunday school teacher, but he’s got many more years of successful marriage than me, and the way he puts it simplifies what I think we had already figured out.&lt;/p&gt;

&lt;p&gt;If you’re going to stay married, regardless of the circumstances, it behooves you to make the circumstances good. Would you rather be unhappily married, unhappily divorced, or happily married? &lt;a href="http://www.americanvalues.org/html/r-unhappy_ii.html" target="_blank"&gt;A study on marital happiness and divorce&lt;/a&gt; pretty well shows that those are your three options. To summarize the findings of the report:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Those who were unhappily married and chose to divorce were no happier 5 years after the divorce&lt;/li&gt;
&lt;li&gt;Those who were unhappily married and chose to stay married were happier 5 years after the initial study&lt;/li&gt;
&lt;li&gt;8 out of 10 of those who were &lt;em&gt;very unhappy&lt;/em&gt; with their marriage stated they were happy with the marriage 5 years later.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;A &lt;a href="http://marriageandfamilies.byu.edu/issues/2003/January/divorce.aspx" target="_blank"&gt;different study&lt;/a&gt; rates marriages on scales like &lt;em&gt;very unhappy&lt;/em&gt;, &lt;em&gt;unhappy&lt;/em&gt;, &lt;em&gt;happy&lt;/em&gt;, or &lt;em&gt;very happy&lt;/em&gt;, and it shows that 86% of those who “stuck it out” were happy, and 60% were now &lt;em&gt;very happy&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So, the Sunday school teacher’s advice goes, if you’re considering divorce, take some time and do the most selfish thing you can do. Think of nothing but your own happiness. And stay married.&lt;/p&gt;

&lt;p&gt;This has some implications in your marriage that aren’t unlike Mrs. At Home’s advice:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;If you’re going to stay married, make the marriage not stink. So stop doing the things your spouse doesn’t like you to do, and do more of the things your spouse likes you to do.&lt;/li&gt;
&lt;li&gt;If you’re going to be happy in your marriage, you need to be happy with your spouse. Perception is reality, so compliment your spouse often.&lt;/li&gt;
&lt;li&gt;Those things that you tend to think are bad things about your spouse are probably really good. Mrs. At Home likes to make decisions on a whim. And a lot of the things we’ve done as a couple, I never would have done on my own. (Case in point - when she and the girls are gone for an extended period, I actually find that I don’t leave my office for several days - let alone the house.)&lt;/li&gt;
&lt;li&gt;Never, ever, ever speak badly about your spouse. If you have a complaint, speak with them directly (and kindly) about it. Never to other people.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;So that’s it.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WmuKDeInLjKrWKd-wxcoEnfbub4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WmuKDeInLjKrWKd-wxcoEnfbub4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WmuKDeInLjKrWKd-wxcoEnfbub4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WmuKDeInLjKrWKd-wxcoEnfbub4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=M8lWs95VbA0:Ci6z-7cD3gI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=M8lWs95VbA0:Ci6z-7cD3gI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=M8lWs95VbA0:Ci6z-7cD3gI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/M8lWs95VbA0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/M8lWs95VbA0/16443494545</link><guid isPermaLink="false">http://will.thestranathans.com/post/16443494545</guid><pubDate>Tue, 24 Jan 2012 21:42:23 -0500</pubDate><feedburner:origLink>http://will.thestranathans.com/post/16443494545</feedburner:origLink></item><item><title>Why Dissing Atlassian?</title><description>&lt;p&gt;For April Fools’ this year, Atlassian released a “game” called &lt;a href="http://www.atlassian.com/en/angrynerds" target="_blank"&gt;Angry Nerds&lt;/a&gt;. And then when they released Confluence 4.0, they truly made a serious mob of Angry Nerds. There are long-ish threads on their site by folks who are stark-raving &lt;strong&gt;mad&lt;/strong&gt; about Confluence 4.0&lt;/p&gt;

&lt;p&gt;For the uninitiated, Confluence is a wiki - much like Mediawiki. The idea is that the community of readers is generally more knowledgeable about some subject than any one person. For geeks, this sort of “throw something out there and let the masses correct” mentality is our lifeblood. It’s far more civil than in the 90’s when all we had as a feedback mechanism was flame wars on Usenet (insert reference to &lt;a href="http://en.wikipedia.org/wiki/Godwin's_law" target="_blank"&gt;Godwin’s Law&lt;/a&gt; here).&lt;/p&gt;

&lt;p&gt;So what was &lt;strong&gt;the&lt;/strong&gt; think that Confluence did that made everybody so furious? They removed the wiki editor. You might ask “how, exactly, does one edit a wiki without a wiki editor?quot; Geeks are asking the same question. Confluence 4.0 &lt;strong&gt;only&lt;/strong&gt; has a Rich Text Editor (RTE) now, and no wiki markup editor. You can still type wiki markup into the Rich Text Editor, and it’s converted to XHTML on the client side. But it’s stored in XHTML on the server side.&lt;/p&gt;

&lt;p&gt;For the non-technical, you might be thinking that this is sufficient - the geeks can still type in wiki markup and so should be happy, and Confluence gets to publish a single editor so non-technical people are happy, right? Wrong. There are a number of beautiful things about wiki markup &lt;strong&gt;as a storage format&lt;/strong&gt; as well:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;The markup format itself is human-readable.&lt;/li&gt;
&lt;li&gt;The markup format is smaller in size&lt;/li&gt;
&lt;li&gt;The markup format can be retrieved to be edited in its wiki format again&lt;/li&gt;
&lt;li&gt;The markup format is simply created by scripts (without libraries for generating XHTML)&lt;/li&gt;
&lt;li&gt;The markup format can be read in its native format in a text editor, without a browser&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Some of these are very similar to one another, but as a geek, they’re &lt;strong&gt;critical&lt;/strong&gt;. To give an example of this ability to “go both ways” and retrieve the document later in the wiki markup format and be able to read it in plain text, take a look at these couple of pages.  &lt;a href="https://github.com/jquery/jquery/blob/master/README.md" target="_blank"&gt;README.md from jQuery in HTML format&lt;/a&gt; - this is what the &lt;a href="http://daringfireball.net/projects/markdown/" target="_blank"&gt;Markdown&lt;/a&gt; format for the README looks like when rendered in HTML. But &lt;a href="https://raw.github.com/jquery/jquery/f724bc6c921378b82d9d6fa17329b6451fbb7a51/README.md" target="_blank"&gt;the source reads well in a text editor&lt;/a&gt;.  That last thing is the actual source for what you see on the first link.&lt;/p&gt;

&lt;p&gt;In Confluence 3.0, you could edit pages in a similar format, and they were &lt;strong&gt;stored&lt;/strong&gt; in that format, so you could later edit them in that same format, or edit them in a text editor, and it looked formatted even in the text editor.&lt;/p&gt;

&lt;p&gt;In Confluence 4.0, the source for that above markup would look something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;div id="readme" class="blob instapaper_body"&gt;
&lt;div class="markdown-body"&gt;&lt;h1&gt;
&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; - New Wave JavaScript&lt;/h1&gt;
&lt;h2&gt;Contribution Guides&lt;/h2&gt;
&lt;p&gt;In the spirit of open source software development, jQuery always encourages
community code contribution. To help you get started and before you jump into writing
code, be sure to read these important contribution guidelines thoroughly:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://docs.jquery.com/Getting_Involved"&gt;Getting Involved&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://docs.jquery.com/JQuery_Core_Style_Guidelines"&gt;Core Style
Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://docs.jquery.com/Tips_for_jQuery_Bug_Patching"&gt;Tips For Bug
Patching&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;What you need to build your own jQuery&lt;/h2&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That’s clearly not readable in a plain-text editor, so a developer must use a browser to even be able to read the content &lt;strong&gt;at all&lt;/strong&gt; let alone with some semblance of emphasis, hierarchy, etc. Editing this by hand &lt;strong&gt;or&lt;/strong&gt; programmatically is extremely error-prone.&lt;/p&gt;

&lt;p&gt;And all that is not to mention there’s a ridiculous amount of complexity in &lt;strong&gt;securely&lt;/strong&gt; handling data stored in that format. Just ask MySpace.&lt;/p&gt;

&lt;p&gt;Oh yeah - I edit my blog posts in &lt;a href="http://daringfireball.net/projects/markdown/" target="_blank"&gt;Markdown&lt;/a&gt; format, and they read just fine in a plain-text editor. And years down the line, if I decide I want to read all my posts in a text editor, they still read just fine there, too.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/g-IEUdejPs7Umg9MRoTYh_90MDk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g-IEUdejPs7Umg9MRoTYh_90MDk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/g-IEUdejPs7Umg9MRoTYh_90MDk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g-IEUdejPs7Umg9MRoTYh_90MDk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=NU3LA3Hmo3c:OcweD24EBCk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=NU3LA3Hmo3c:OcweD24EBCk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=NU3LA3Hmo3c:OcweD24EBCk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/NU3LA3Hmo3c" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/NU3LA3Hmo3c/15656728082</link><guid isPermaLink="false">http://will.thestranathans.com/post/15656728082</guid><pubDate>Tue, 10 Jan 2012 23:18:00 -0500</pubDate><feedburner:origLink>http://will.thestranathans.com/post/15656728082</feedburner:origLink></item><item><title>Dallas</title><description>&lt;p&gt;Last night, &lt;a href="http://valerie.thestranathans.com" target="_blank"&gt;Mrs. At Home&lt;/a&gt; and I saw a &lt;a href="http://dallastnt.com" target="_blank"&gt;preview for Dallas the new series&lt;/a&gt;. Since it will be on in 2012 and we’ve lived in the Dallas area before, I figured I’d give some bullet points about Dallas and Texas in general so I could set the record straight on some things I know will be asked.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;No. Everybody in Dallas does not wear cowboy hats. Many people in Fort Worth do, however.&lt;/li&gt;
&lt;li&gt;No. Everybody in Dallas does not drive pickup trucks. Many people in Fort Worth do, however. And there are many more trucks on the road in East Texas than you will generally find elsewhere.&lt;/li&gt;
&lt;li&gt;People say they want to move to Texas. Then they say they want to move to Austin. You need to find out which - Austin is the capital of Texas, but it’s not Texas.&lt;/li&gt;
&lt;li&gt;The Dallas Cowboys are not America’s team. They’re not even Dallas’ team. Two reasons for this:
** Like most warm-weather cities, the Cowboys only have fans when they’re winning. When they’re losing, the weather is fine for golf.
** The Dallas Cowboys play in Arlington. Prior to that, they played in Irving. I think they played in the Cotton Bowl, which &lt;strong&gt;is&lt;/strong&gt; in Dallas, long ago.&lt;/li&gt;
&lt;li&gt;Yes, there’s lots of oil in Texas. Many schools in East Texas have oil derricks on the school property.&lt;/li&gt;
&lt;li&gt;No, you can not drive from Dallas to El Paso and back in an afternoon. Yes, there have been shows which say this can be done.&lt;/li&gt;
&lt;li&gt;No, Dallas is not a bunch of tall buildings in the middle of a prairie. The Dallas/Fort Worth Metroplex is huge - with no traffic, it would still take you 90 minutes to get from one side of the metroplex to the other. Could be longer if you consider Greenville part of the Metroplex (Greenville does).&lt;/li&gt;
&lt;li&gt;Texas is not part of the South. It’s “a whole ‘nother country”. I’ve never lived in a place with so much national pride.&lt;/li&gt;
&lt;li&gt;As Texas is not part of the South, there’s no need to ask for sweet tea. There is only tea (and it’s sweet.)&lt;/li&gt;
&lt;li&gt;Yes, there really is a South Fork ranch. It’s in Murphy, which is a suburb of Dallas. It’s a real working ranch. My sister used to keep a horse there, and we used to go to &lt;a href="http://www.klty.com/celebratefreedom/index.htm" target="_blank"&gt;a concert there&lt;/a&gt; every year.&lt;/li&gt;
&lt;li&gt;There is no Catholic or Protestant in Texas. There is no Baptist or Presbyterian. There is no Evangelical or Charismatic. There is no Atheist or Religious. There is only Ford and there is only Chevy. You must choose one when filling out our application for your drivers’ license, and the Texas Highway Patrol will give you the appropriate Calvin-peeing-on-the-other-logo sticker for your window.&lt;/li&gt;
&lt;li&gt;What’s bigger in Texas than the Dallas Cowboys is local high-school football. That’s big all over the state (as far as I’ve seen).&lt;/li&gt;
&lt;li&gt;Some towns in East Texas are small enough that they’re named after parts of counties (I went to North Lamar), and some school districts are named after &lt;strong&gt;two&lt;/strong&gt; cities because neither of the cities would be big enough on its own. Examples include Alba-Golden, Como-Pickton, and Scurry-Rosser (where &lt;a href="http://valerie.thestranathans.com" target="_blank"&gt;Mrs. At Home&lt;/a&gt; &lt;strong&gt;did&lt;/strong&gt; go to a classroom where they had first and second grade in the same classroom). Near where I grew up, there was a school where the two &lt;strong&gt;counties&lt;/strong&gt; were small enough to have their own school district. Delmar (Delta and Lamar). Having sufficiently large schools is vital to high-school football.&lt;/li&gt;
&lt;li&gt;There &lt;strong&gt;is&lt;/strong&gt; barbecue in Texas, but it’s different than elsewhere. In Texas, any dead or mostly dead animal roasted over a fire is barbecue. What is called brisket other places is known in Texas as barbecue brisket (even if it came from the oven) and is only to be eaten on Sunday after church (which is dinner - even at noon - because lunch comes in a paper bag).&lt;/li&gt;
&lt;li&gt;The national game of Texas is 42. &lt;a href="http://valerie.thestranathans.com" target="_blank"&gt;Mrs. At Home&lt;/a&gt; and I would love to show you how to play. The longer you’ve been married, the better you automatically are at it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cN6NcFttR9pvl6ogzkaOQ46MP3o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cN6NcFttR9pvl6ogzkaOQ46MP3o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cN6NcFttR9pvl6ogzkaOQ46MP3o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cN6NcFttR9pvl6ogzkaOQ46MP3o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=lp0USV9GJt8:n8Bae8fHIrg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=lp0USV9GJt8:n8Bae8fHIrg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=lp0USV9GJt8:n8Bae8fHIrg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/lp0USV9GJt8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/lp0USV9GJt8/14371270529</link><guid isPermaLink="false">http://will.thestranathans.com/post/14371270529</guid><pubDate>Sat, 17 Dec 2011 16:48:18 -0500</pubDate><feedburner:origLink>http://will.thestranathans.com/post/14371270529</feedburner:origLink></item><item><title>Trinkets</title><description>&lt;p&gt;I’ve mentioned before (I think) that I’m not really big on keeping trinkets around. I had a closet full of trophies in the home in which I grew up - debate, math, soccer, etc., and I had my sister take them all to the trophy shop to be taken apart and donated. I don’t have my high-school yearbooks. In fact, I didn’t even get a yearbook my senior year. I don’t have my letter jacket, or class rings. None of those things have much if any meaning to me.&lt;/p&gt;

&lt;p&gt;The company where I work also gives trinkets. At certain anniversaries of enrollment, they give you a nice piece of lucite to commemorate the occasion. I’ve been with the company for 15 years, and I’ve gotten a bunch of lucite from them but don’t have any of them around anymore.&lt;/p&gt;

&lt;p&gt;But there’s one trinket I’m hanging onto for now.&lt;/p&gt;

&lt;p&gt;This year, I gave four presentations at various conferences. Each presentation was different, to a different audience, over a different set of material. All of those conferences had nice welcome dinners, get togethers for the speakers, opportunities to meet with others in the same industry, etc. However, at one of the presentations this year, I received another nice piece of lucite. On it, is inscribed simply:&lt;/p&gt;

&lt;h2&gt;Name of Conference&lt;/h2&gt;

&lt;h3&gt;Thanks for being so smart!&lt;/h3&gt;

&lt;h3&gt;2011&lt;/h3&gt;

&lt;p&gt;That’s all it says. I think the thank you line is a little silly. But this is my favorite trinket (aside from my wedding ring and any picture on the fridge) because this was given to me by geeks for being able to present to geeks.&lt;/p&gt;

&lt;p&gt;A lot of the presentations I give are to more “professional” types. Stuffy people in suits who are just waiting for this geek who doesn’t even bother to wear a tie to mess up and say something stupid. And I do say stupid things - usually intentionally.&lt;/p&gt;

&lt;p&gt;With geeks, I don’t change a thing. With geeks, though, I speak the same way not to raise eyebrows, bring attention to myself, or to shock, but just because that’s the way we geeks talk. I’m not professional. I don’t know about resource allocation, I know about resource injection. I don’t know about management structures, I know about data structures. We make statements like “YGWAGAM” “RTFM” and “play the wiki game” because those have meaning to us that’s just as meaningful as buzzword bingo words are for the Dilbert management set.&lt;/p&gt;

&lt;p&gt;So this trinket, I appreciate. It was given to me by my people. And not because I achieved something, but because I had the pleasure of hanging out with people way smarter than me and sharing a little bit of what I’ve learned and hacked together through the years.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IvQqhcfNOm78I55FyM7-ir6QRSs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IvQqhcfNOm78I55FyM7-ir6QRSs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IvQqhcfNOm78I55FyM7-ir6QRSs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IvQqhcfNOm78I55FyM7-ir6QRSs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=Y9iB6QE3hHQ:-vI8Gpx-xoQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=Y9iB6QE3hHQ:-vI8Gpx-xoQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=Y9iB6QE3hHQ:-vI8Gpx-xoQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/Y9iB6QE3hHQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/Y9iB6QE3hHQ/14025976285</link><guid isPermaLink="false">http://will.thestranathans.com/post/14025976285</guid><pubDate>Sat, 10 Dec 2011 14:32:37 -0500</pubDate><feedburner:origLink>http://will.thestranathans.com/post/14025976285</feedburner:origLink></item><item><title>vim tips</title><description>&lt;p&gt;I’ve mentioned in the past that I’ve been using &lt;code&gt;vim&lt;/code&gt; as my primary
editor for some time, so I figure now is probably as good of a time as
any to give some tips I’ve picked up during my extensive use of &lt;code&gt;vim&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;First, people wonder why I use &lt;code&gt;vim&lt;/code&gt; when I work primarily in GUI
environments:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;It’s available everywhere.  On Windows, Mac, and all the non-GUI
platforms I work on.  So it’s quite handy to get really used to
&lt;strong&gt;one&lt;/strong&gt; editor and know it very well.  TextMate isn’t available on
Windows, Notepad++ isn’t available on Mac, and neither of them are
available to me when I’m SSH’ed into a remote terminal with only
terminal access.&lt;/li&gt;
&lt;li&gt;Once you get through some of the initial learning curve, it’s faster
(for me) to move around than other editors - if for no other reason
than that I’m not constantly reaching for the mouse.&lt;/li&gt;
&lt;li&gt;If you don’t like the way it does something, there’s probably a
setting to change the way it behaves.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;These aren’t necessarily any better than anybody else’s tips, just a
random smattering of lessons I’ve learned along the way.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Force yourself under whatever circumstances to use it.  Set your
&lt;code&gt;EDITOR&lt;/code&gt; or &lt;code&gt;VISUAL&lt;/code&gt; environment variables, and begin deliberately
forgetting to use &lt;code&gt;-m&lt;/code&gt; when checking in code via &lt;code&gt;git&lt;/code&gt; or &lt;code&gt;svn&lt;/code&gt; so
that you get forced to use it.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vimtutor&lt;/code&gt;.  Make yourself &lt;strong&gt;at least&lt;/strong&gt; 30 minutes to go through the
whole tutorial, and on multiple days.  Do everything it says to do.
You’ll only get better at using &lt;code&gt;vim&lt;/code&gt; by using it, so you have to
do what the tutorial says to do in order to start developng the muscle
emory required.&lt;/li&gt;
&lt;li&gt;Learn the &lt;code&gt;f&lt;/code&gt;, &lt;code&gt;t&lt;/code&gt;, &lt;code&gt;F&lt;/code&gt;, &lt;code&gt;T&lt;/code&gt;, &lt;code&gt;;&lt;/code&gt; and &lt;code&gt;.&lt;/code&gt; commands early.  These
shortcuts alone make me more efficient than most other editors.&lt;/li&gt;
&lt;li&gt;Figure out something every day that you want customized, then learn
how to do that in your &lt;code&gt;.vimrc&lt;/code&gt;.  Mine is pretty minimal, but I’m
working on it.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set paste&lt;/code&gt;.  You’re welcome.&lt;/li&gt;
&lt;li&gt;Language-specific settings can be set in &lt;code&gt;~/.vim/ftplugin/&lt;type&gt;.vim&lt;/code&gt;
instead of using a bunch of &lt;code&gt;autocmd&lt;/code&gt;’s in your &lt;code&gt;.vimrc&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Learn to use the &lt;code&gt;:help&lt;/code&gt; command.  First, just do &lt;code&gt;:help&lt;/code&gt; to learn how
to bounce around within the help.  (&lt;code&gt;Ctrl-]&lt;/code&gt; will follow a tag, if you
don’t bother to read that far initially).&lt;/li&gt;
&lt;li&gt;Under no circumstances should you ever reach for the mouse or arrow
keys - especially early on.  Learn to use &lt;code&gt;h&lt;/code&gt;, &lt;code&gt;j&lt;/code&gt;, &lt;code&gt;k&lt;/code&gt;, and &lt;code&gt;l&lt;/code&gt; so
that one of these days when you’re on a vt100 terminal and the arrow
keys don’t work, you don’t suddenly get stuck with an editor that
won’t work at all for you.  (You &lt;strong&gt;can&lt;/strong&gt; use the arrow keys if you’re
in &lt;code&gt;INSERT&lt;/code&gt; mode and don’t want to constantly switch back and forth -
although I’d recommend figuring out how to accomplish what you want to
do with normal mode.)&lt;/li&gt;
&lt;li&gt;Lean to use some of the features which you don’t use religiously in
other editors - split panes, multiple buffers in a single tab, etc.
I’m not saying those features aren’t available in other editors, but
those are the types of things that tend to be buried a few menu
commands done, but with &lt;code&gt;vim&lt;/code&gt;, you’re kinda’ expected to be able to
use them to your benefit.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u&lt;/code&gt; is undo.  &lt;code&gt;Ctrl-r&lt;/code&gt; is redo.  You’re welcome.  (Incidentally,
&lt;code&gt;vim&lt;/code&gt;’s undo history is non-linear - if you make change 1, then 2,
then undo back to 1, make change 3, you can go back to 2.  There are
some decent sites which explain how to make sense of this, but maybe
&lt;code&gt;:earlier 20s&lt;/code&gt; will do what you really need.)&lt;/li&gt;
&lt;li&gt;I personally don’t use too many plugins, although there are tons of
them.  The reason for this is that I want to be really good with the
core functionality so that when I’m on a system without my plugins, I
can still move about eficiently.  The one plugin I &lt;strong&gt;do&lt;/strong&gt; tend to
install is &lt;a href="http://www.vim.org/scripts/script.php?script_id=1658" target="_blank"&gt;NERDTree&lt;/a&gt;.  However, if you want &lt;code&gt;vim&lt;/code&gt; to do everything
you want it to do, install some plugins.&lt;/li&gt;
&lt;li&gt;Use it every day.  Practice every day.  Learn a new command every day,
and then go looking for excuses to use those commands.&lt;/li&gt;
&lt;li&gt;I personally use &lt;code&gt;:set number&lt;/code&gt; because a lot of the commands I use are
easier to use by knowing line numbers.  I don’t use visual mode too
much (although I’m getting better).  Because I use line numbers so
much, but because on a terminal, they’ll be copied to the clipboard if
you’re selecting something to put in an email, say - you’ll want a way
to quickly turn those off.  I use a keyboard shortcut, but &lt;code&gt;:set nu!&lt;/code&gt;
is not too slow if you’re only going to do it on occasion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dyCTWHg4-2INiNtodMPOzz8wkbc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dyCTWHg4-2INiNtodMPOzz8wkbc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dyCTWHg4-2INiNtodMPOzz8wkbc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dyCTWHg4-2INiNtodMPOzz8wkbc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=YjZONrzFVfM:3MuYwBhzUhg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=YjZONrzFVfM:3MuYwBhzUhg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=YjZONrzFVfM:3MuYwBhzUhg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/YjZONrzFVfM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/YjZONrzFVfM/12715603007</link><guid isPermaLink="false">http://will.thestranathans.com/post/12715603007</guid><pubDate>Sat, 12 Nov 2011 20:40:00 -0500</pubDate><feedburner:origLink>http://will.thestranathans.com/post/12715603007</feedburner:origLink></item><item><title>Adoption Stories: Citizenship Has Its Privileges</title><description>&lt;p&gt;This post won’t be so much advice (not all of them are advice, just my personal experience of the adoption process) but a bit of a rant.&lt;/p&gt;

&lt;p&gt;Since we adopted internationally, a lot of the work we had to do involved the INS - now &lt;a href="http://www.uscis.gov" target="_blank"&gt;USCIS&lt;/a&gt;.  There are parts where we have to prepare paperwork to bring an orphan into the country and have her become a citizen, and parts have to do with our family going out of the country.&lt;/p&gt;

&lt;p&gt;I don’t remember specifically which part of the process this was, but it was long before we traveled.  We needed to visit the USCIS office to get lots of identification - fingerprints, thumbprints, palm prints, etc. done.&lt;/p&gt;

&lt;p&gt;Now, I tend to reveal my politics a bit on this blog.  I don’t like the idea of giving benefits to illegal aliens who aren’t paying into the tax base.  But this is different.  Folks who are illegal aliens and intend to stay that way generally don’t visit the USCIS offices.  They tend to stay beneath the radar.&lt;/p&gt;

&lt;p&gt;I have a great deal of respect for a person who can’t sufficiently provide for or care for their own family in their own country, so they decide to go to another country.  I have a lot of respect for those who work to save up to move their families here if they choose to play by the rules - to get the right permits, to begin the process of becoming citizens.  Part of the great diversity of our country is the folks who came over on boats and went through all the hoops necessary to become citizens.&lt;/p&gt;

&lt;p&gt;When we arrived at the USCIS offices for our appointment, the office was filled with many, many, many people who would be waiting in line for most of the day for a piece of paperwork to fill out to become legal.  We were also warned to get to the offices as soon as they opened because we would be in queue for several hours.  K had to go with us as well (she was 4 at the time), and so we came well prepared to spend several hours at the USCIS offices.&lt;/p&gt;

&lt;p&gt;We never sat down in the waiting room.  We checked in at the front desk, explained what we were there for, and were immediately whisked past all the hundreds of waiting people straight to the task for which we came.  We were given some sort of priority, either because our task was different from what everybody else was there for, or &lt;strong&gt;we&lt;/strong&gt; were different from the folks who were there.&lt;/p&gt;

&lt;p&gt;That frustrated me.  Somehow we were chosen to be more important than people who were trying to make a legitimate living for their family.  I’m glad we didn’t have to sit on queue for several hours.  I just feel bad for those who chose to play by the rules who &lt;strong&gt;did&lt;/strong&gt; have to sit on queue for several hours.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Vusf5wx_t0yfdJWq3cUe0AQxnS8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vusf5wx_t0yfdJWq3cUe0AQxnS8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Vusf5wx_t0yfdJWq3cUe0AQxnS8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vusf5wx_t0yfdJWq3cUe0AQxnS8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=6z9_d0xYXms:xVLSkJSQpNk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=6z9_d0xYXms:xVLSkJSQpNk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=6z9_d0xYXms:xVLSkJSQpNk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/6z9_d0xYXms" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/6z9_d0xYXms/11257045067</link><guid isPermaLink="false">http://will.thestranathans.com/post/11257045067</guid><pubDate>Sun, 09 Oct 2011 22:26:00 -0400</pubDate><category>adoption</category><feedburner:origLink>http://will.thestranathans.com/post/11257045067</feedburner:origLink></item><item><title>Wore Out</title><description>&lt;p&gt;I’m wore out.  Yeah&lt;/p&gt;

&lt;p&gt;The kind of wore out you get when you take a couple of extra days vacation and start learning a new skill relevant to your work.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get when you sit in traffic on your way to the middle of nowhere.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get having a conversation about nothing and everything with a good friend.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get driving through the silent middle of nowhere seeing the leaves just barely starting to change.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get when you realize you’re not going to find a good place to camp because the Uwharrie Festival is going on.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get learning the physics behind a really wacky sway bar system.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get gathering firewood - including most of a whole tree.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get sitting around a campfire sharing the last of an apple pie with &lt;a href="http://blog.jinksto.com" target="_blank"&gt;Jinksto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The kind of wore out you can only get when it’s really cold out, but you’re just warm enough under a sleeping bag rated for 20-below.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get from waking up early to start the day’s work off.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get from spending some time at the Eldorado Outpost eating breakfast with a bunch of other people who are probably there for the same sort of stuff you are.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get from hiking several miles through the woods looking for the perfect spot to put a deer stand in a couple of months.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get from learning how deer mark their own paths, conserve energy, and move.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get from not saying much of anything but just listening to the woods.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get from making that trip far too short.&lt;/p&gt;

&lt;p&gt;The kind of wore out you get from going back home to a family that loves you.&lt;/p&gt;

&lt;p&gt;Yeah.  That kind of wore out.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pc51171K3kaYcCXzqRJZR-FHhRU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pc51171K3kaYcCXzqRJZR-FHhRU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pc51171K3kaYcCXzqRJZR-FHhRU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pc51171K3kaYcCXzqRJZR-FHhRU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=VsXUUDWbY0w:MWDVb_ed5Fs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=VsXUUDWbY0w:MWDVb_ed5Fs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=VsXUUDWbY0w:MWDVb_ed5Fs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/VsXUUDWbY0w" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/VsXUUDWbY0w/11242949706</link><guid isPermaLink="false">http://will.thestranathans.com/post/11242949706</guid><pubDate>Sun, 09 Oct 2011 17:08:31 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/11242949706</feedburner:origLink></item><item><title>Adoption Stories: Don't Change Anything</title><description>&lt;p&gt;I had &lt;a href="http://will.thestranathans.com/post/8069210560/adoption-stories" target="_blank"&gt;promised long ago&lt;/a&gt; that I would start posting some stories from the adoption, more from a man’s perspective.&lt;/p&gt;

&lt;p&gt;Guys.  If you’re going to adopt (I really do recommend it), the first tip I can give you is &lt;strong&gt;don’t change anything&lt;/strong&gt;.  For at &lt;strong&gt;least&lt;/strong&gt; two years prior to the adoption, don’t change a thing, including:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Don’t buy a house&lt;/li&gt;
&lt;li&gt;Don’t buy a car&lt;/li&gt;
&lt;li&gt;Don’t buy a boat&lt;/li&gt;
&lt;li&gt;Don’t have another child (although this often happens during the adoption process)&lt;/li&gt;
&lt;li&gt;Don’t get a raise&lt;/li&gt;
&lt;li&gt;Don’t change jobs&lt;/li&gt;
&lt;li&gt;Don’t get a new credit card&lt;/li&gt;
&lt;li&gt;Don’t paint your house&lt;/li&gt;
&lt;li&gt;Don’t get arrested&lt;/li&gt;
&lt;li&gt;Don’t get a traffic ticket&lt;/li&gt;
&lt;li&gt;Don’t pick up a second job&lt;/li&gt;
&lt;li&gt;Don’t refinance your house&lt;/li&gt;
&lt;li&gt;Don’t pay off a credit card&lt;/li&gt;
&lt;li&gt;Don’t change cell phone providers&lt;/li&gt;
&lt;li&gt;Don’t get a cavity&lt;/li&gt;
&lt;li&gt;Don’t get sick (unless you’re already sick, in which case you should stay that way until the adoption is finalized)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I’m almost tempted to say not to even buy a lawnmower.  Your job for the two years prior to the adoption, aside from being supportive to your wife (and meeting her at whatever notary she’s at today) is to not change a thing.&lt;/p&gt;

&lt;p&gt;You can change your shorts, but that’s about it.&lt;/p&gt;

&lt;p&gt;Why is this?  During the adoption process, you fill out 12 inches (yes - &lt;a href="http://valerie.thestranathans.com/" target="_blank"&gt;Mrs. At Home&lt;/a&gt; has a notebook of &lt;strong&gt;our&lt;/strong&gt; copies of the stuff, and it’s 6 inches thick) of paperwork including information about your credit profile, home, criminal history, employment, salary, and dental history.  You fill this information out &lt;strong&gt;long&lt;/strong&gt; before the adoption.&lt;/p&gt;

&lt;p&gt;And then something will change.&lt;/p&gt;

&lt;p&gt;And then you’ll get a &lt;strong&gt;new&lt;/strong&gt; piece of paper asking for the same information that you have already provided on a different piece of paper, except the form’s name will be different (one will be something like “Dental History” and then the new one will be called “History of Dentistry”).  If any of the responses on the new form are different from the way they were 2 years prior, you’ll have to fill out a third form (something like “Explanation of Discrepancy Between Form Dental History and Form History of Dentistry”.  This won’t happen until &lt;strong&gt;after&lt;/strong&gt; all your other paperwork has been notarized and your notarizations have been notarized.  So you’ll have to get the form “Explanation of Discrepancy Between Form Dental History and Form History of Dentistry” notarized, and then you’ll have to go to the courthouse of whatever county that notary lives in and have the notarization notarized.  This will have to be FedExed to Washington D.C. Post-Haste Dispatch (which will cost you another bunch of money).&lt;/p&gt;

&lt;p&gt;So I promise you - you should not change anything during the adoption process.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NQGzXDMh4B0gV1MNOfcNH3nDMVs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NQGzXDMh4B0gV1MNOfcNH3nDMVs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NQGzXDMh4B0gV1MNOfcNH3nDMVs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NQGzXDMh4B0gV1MNOfcNH3nDMVs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=FOvCkBhUK6U:ozkZp7m76HA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=FOvCkBhUK6U:ozkZp7m76HA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=FOvCkBhUK6U:ozkZp7m76HA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/FOvCkBhUK6U" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/FOvCkBhUK6U/11203318452</link><guid isPermaLink="false">http://will.thestranathans.com/post/11203318452</guid><pubDate>Sat, 08 Oct 2011 20:04:18 -0400</pubDate><category>adoption</category><feedburner:origLink>http://will.thestranathans.com/post/11203318452</feedburner:origLink></item><item><title>Colorizing Photos with the Gimp</title><description>&lt;p&gt;There are a million tutorials on the ‘net on how to do this, but some folks at work mentioned they like the effect on occasion, and the way I do it is ever so slightly different than how others do it, and it’s a good opportunity for me to prove to myself that I’m getting the different layer modes.&lt;/p&gt;

&lt;p&gt;We’ll start with this photo from our awesome cruise:
&lt;img src="https://lh6.googleusercontent.com/-jD71o-BfjT0/TmlJZyCyMEI/AAAAAAAACas/SuZgGROsB5c/s800/IMG_0041.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Open the file you want to de/re-colorize in the Gimp.&lt;/p&gt;

&lt;p&gt;The first step is to add a new layer to the photo.  Either click the New Layer button, right click in the Layers window and select New Layer, or just hit &lt;em&gt;Ctrl+Shift+N&lt;/em&gt;.  Give the layer a name like maybe &lt;em&gt;B&amp;W&lt;/em&gt; and make sure the &lt;em&gt;Layer Fill Type&lt;/em&gt; is &lt;em&gt;White&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-1Wb9vU2oh-s/TmlLpA922TI/AAAAAAAACbI/dhaN7WbLhE4/s326/Screen%2BShot%2B2011-09-08%2Bat%2B7.10.46%2BPM.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Now, this adds a layer over the background, and the default mode for layers is “Normal” so it just covers your photo with white.  We’ll change the mode of the layer so that it removes the Saturation - how much color shines through.  When you select Saturation, then no color from the lower layer shines through, so it will appear black and white.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-O-RyaI7kvOE/TmlM74MCaUI/AAAAAAAACbg/C_GzlC-Mr2w/s371/saturation.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;The next step is to apply a Layer Mask.  If you learned anything from &lt;a href="http://will.thestranathans.com/post/7467461289/custom-qr-codes-with-the-gimp" target="_blank"&gt;Custom QR Codes with the Gimp&lt;/a&gt;, you’ve learned that a Layer Mask is a part of the layer, which when turned black turns &lt;strong&gt;off&lt;/strong&gt; part of the layer - allowing the underlying layer to just show through it - like a pinhole camera.&lt;/p&gt;

&lt;p&gt;Right click on the Layer and select &lt;em&gt;Add Layer Mask&lt;/em&gt;.  PIck White for the color to initialize.  This will set the mask to use the entire layer.  We’ll color pieces of the &lt;strong&gt;mask&lt;/strong&gt; black to colorize portions of the photo.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-84y7TubU4Rc/TmlN0nt6vnI/AAAAAAAACbk/HRjsk3_s0h4/s294/addlayermask.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Now use the brush tool, and set the foreground color to black, and just draw over the parts of the photo you want in color.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-0IKFhR_CPjM/TmlOu8z6WOI/AAAAAAAACbo/veyGVqkwqtA/s644/colorizing.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Use progressively smaller brushes to get as detailed as you want in setting up the mask.&lt;/p&gt;

&lt;p&gt;When you’re done, right click the mask and select &lt;em&gt;Apply Layer Mask&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Like I said - this wasn’t the best photo for doing this.  I’ve done others with flowers and such that work much more nicely.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-Joma54j9JEs/TmlP73klVCI/AAAAAAAACbw/bCXNghtNl9U/s720/finished.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Like these (Thanks &lt;a href="http://valerie.thestranathans.com/" target="_blank"&gt;Mrs. At Home&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://1.bp.blogspot.com/-sD79tGm-Gfc/TXRgOu04CCI/AAAAAAAAAHw/tMF1AuaPjWI/s400/Lydia%2BFlower%2B-%2Bcolorized.jpg" alt=""/&gt;&lt;img src="http://4.bp.blogspot.com/-7sBjXSgTiYo/TXRgO6HyR6I/AAAAAAAAAH4/sTTEoZG94AQ/s400/Kate%2BFlower%2B-%2Bcolorized.jpg" alt=""/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8GHZfaLVp8BG74VCtL7AY0kMw4U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8GHZfaLVp8BG74VCtL7AY0kMw4U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8GHZfaLVp8BG74VCtL7AY0kMw4U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8GHZfaLVp8BG74VCtL7AY0kMw4U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=EZpAMyvRAZg:DumE5nZ0pZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=EZpAMyvRAZg:DumE5nZ0pZQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=EZpAMyvRAZg:DumE5nZ0pZQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/EZpAMyvRAZg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/EZpAMyvRAZg/9973972554</link><guid isPermaLink="false">http://will.thestranathans.com/post/9973972554</guid><pubDate>Thu, 08 Sep 2011 19:32:37 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/9973972554</feedburner:origLink></item><item><title>Pin It! Button in iPad</title><description>&lt;p&gt;&lt;a href="http://valerie.thestranathans.com" target="_blank"&gt;Mrs. At Home&lt;/a&gt; has been playing with &lt;a href="http://pinterest.com" target="_blank"&gt;Pinterest&lt;/a&gt; lately. I haven’t bought in, haven’t joined or anything.  It seems like a less functional version of &lt;a href="http://springpadit.com" target="_blank"&gt;Springpad&lt;/a&gt;, but it seems to be popular with the fairer gender.&lt;/p&gt;

&lt;p&gt;But she couldn’t pin things from her iPad.  There’s a link on their site for a “Pin It!” button, but those don’t drag on the iPad’s browser.  So a little reverse-engineering and email go a long way.&lt;/p&gt;

&lt;p&gt;If you’re on your iPad, click on the send icon, then Add Bookmark.  Call the bookmark Pin It!  Then copy the text below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;javascript:void((function(){var%20e=document.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('charset','UTF-8');e.setAttribute('src','http://assets.pinterest.com/js/pinmarklet.js?r='+Math.random()*99999999);document.body.appendChild(e)})());
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And then tap the bookmarks icon again, then tap Edit.  Tap the arrow next to your Pin It! link, and paste in the code from above.&lt;/p&gt;

&lt;p&gt;How’s that for driving up traffic here from the female demographic?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ts_qQWKnfVMRvtTRu8wu2Q8n8CU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ts_qQWKnfVMRvtTRu8wu2Q8n8CU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ts_qQWKnfVMRvtTRu8wu2Q8n8CU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ts_qQWKnfVMRvtTRu8wu2Q8n8CU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=ikZwsKkBN10:WPvwBVo-GK0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=ikZwsKkBN10:WPvwBVo-GK0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=ikZwsKkBN10:WPvwBVo-GK0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/ikZwsKkBN10" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/ikZwsKkBN10/9319996249</link><guid isPermaLink="false">http://will.thestranathans.com/post/9319996249</guid><pubDate>Tue, 23 Aug 2011 23:00:25 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/9319996249</feedburner:origLink></item><item><title>Time Machine in Lion</title><description>&lt;p&gt;I upgraded my own MacBook (the unibody aluminum 13” MacBook that lasted about 4 hours before they made the battery a permanent fixture and called it a MacBook Pro) to Lion.  So far, there are some small improvements, but still not positive I’ll install it on other machines (like where I have a 32-bit Cisco VPN client that won’t run on it).&lt;/p&gt;

&lt;p&gt;The one thing that concerned me the most was Time Machine.  As time has gone on, Time Machine has actually improved pretty well between updates in Mac OS X and the Airport Extreme.  Now it’s pretty reliable.&lt;/p&gt;

&lt;p&gt;However, after installing Lion, my laptop was almost always in Time Machine.  It would back up maybe 20MB of data, but would spend the next 30 minutes indexing.  After a bit of searching, I found a (somewhat) solution.&lt;/p&gt;

&lt;p&gt;If you delete your existing backup and re-create it, everything is fine.  Sorta’.  The caveats with this are:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;You have to &lt;strong&gt;delete&lt;/strong&gt; the previous backup image - if you rename it, Time Machine will still find it.&lt;/li&gt;
&lt;li&gt;I was unable to do the old-fashioned trick of beginning the backup on the network, stopping it, then attaching the disk locally to complete the first backup.  It locked up hard every time I tried to get around this, so I ended up having to do the full backup over the network.  120GB took about 12 hours to back up.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;But ever since I deleted my old backup and started over, it flies now.  I hardly ever notice it’s backing up.  But the images are there, and it does show up in the logs - but most backups take about 2 minutes total now.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wGyD_M5FbnDoFzGzs31htvYPDwA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wGyD_M5FbnDoFzGzs31htvYPDwA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wGyD_M5FbnDoFzGzs31htvYPDwA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wGyD_M5FbnDoFzGzs31htvYPDwA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=ZP_NlVgnqEo:-qHlwKYxWao:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=ZP_NlVgnqEo:-qHlwKYxWao:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=ZP_NlVgnqEo:-qHlwKYxWao:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/ZP_NlVgnqEo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/ZP_NlVgnqEo/8191301480</link><guid isPermaLink="false">http://will.thestranathans.com/post/8191301480</guid><pubDate>Thu, 28 Jul 2011 19:44:54 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/8191301480</feedburner:origLink></item><item><title>Adoption Stories</title><description>&lt;p&gt;While adoption is no laughing matter, I’ve often considered writing a book about adopting from China from a man’s perspective.  While &lt;a href="http://valerie.thestranathans.com" target="_blank"&gt;Mrs. At Home&lt;/a&gt; did the hard work of the adoption, there are many stories to be told about the girls, American bureaucracy, and Chinese culture that (in retrospect) make me laugh.&lt;/p&gt;

&lt;p&gt;I don’t think I have what it takes as an author.  Furthermore, I don’t know if the material I’ll present is dead-tree worthy.  In fact, if people take it too seriously, it could be different from their own adoption experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;While the stories I plan to tell are indeed true, they are by no means 100% representative of adoption from China or all adoptions in general.  Please do not change your adoption plans or change course because of silly observations the man made.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ll be telling the stories over time, so keep posted.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CihoNVz55K_FRafrRD0DH8jqq74/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CihoNVz55K_FRafrRD0DH8jqq74/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CihoNVz55K_FRafrRD0DH8jqq74/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CihoNVz55K_FRafrRD0DH8jqq74/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=8myy0Gw7zVA:xcHhKmF1Ix4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=8myy0Gw7zVA:xcHhKmF1Ix4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=8myy0Gw7zVA:xcHhKmF1Ix4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/8myy0Gw7zVA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/8myy0Gw7zVA/8069210560</link><guid isPermaLink="false">http://will.thestranathans.com/post/8069210560</guid><pubDate>Mon, 25 Jul 2011 22:50:27 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/8069210560</feedburner:origLink></item><item><title>Google +1's</title><description>&lt;a href="http://code.google.com/apis/+1button/"&gt;Google +1's&lt;/a&gt;: &lt;p&gt;w00t!  I’ve added Google +1’s to my blog now.  That’s pretty slick!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NMC5YQ6ZJ4NMyp37lLTB2Jj4AwA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NMC5YQ6ZJ4NMyp37lLTB2Jj4AwA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NMC5YQ6ZJ4NMyp37lLTB2Jj4AwA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NMC5YQ6ZJ4NMyp37lLTB2Jj4AwA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=DDgkUecCen8:_Sppu7nN4uw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=DDgkUecCen8:_Sppu7nN4uw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=DDgkUecCen8:_Sppu7nN4uw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/DDgkUecCen8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/DDgkUecCen8/7665789340</link><guid isPermaLink="false">http://will.thestranathans.com/post/7665789340</guid><pubDate>Fri, 15 Jul 2011 18:50:49 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/7665789340</feedburner:origLink></item><item><title>Social Graph Now Working?</title><description>&lt;p&gt;I did a bit of work on the XFN tags on my blog recently, and now the Social Graph API is seeing this as being my site.  So hopefully my blog will start to appear on my Google+ profile.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wjUS5pXzQx2-Y0NUwX_eGT1HQQA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wjUS5pXzQx2-Y0NUwX_eGT1HQQA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wjUS5pXzQx2-Y0NUwX_eGT1HQQA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wjUS5pXzQx2-Y0NUwX_eGT1HQQA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=Q0AJxdAZjV4:LuCXai9GJH8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=Q0AJxdAZjV4:LuCXai9GJH8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=Q0AJxdAZjV4:LuCXai9GJH8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/Q0AJxdAZjV4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/Q0AJxdAZjV4/7573061121</link><guid isPermaLink="false">http://will.thestranathans.com/post/7573061121</guid><pubDate>Wed, 13 Jul 2011 10:23:51 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/7573061121</feedburner:origLink></item><item><title>"Custom" QR Codes with The Gimp</title><description>&lt;p&gt;QR Codes are everywhere now.  While these QR codes don’t get you even close to the coolness of something like &lt;a href="http://www.qrlicious.com/showcase/" target="_blank"&gt;QRlicious&lt;/a&gt;, it’s a start and the beginnings of something to play with.&lt;/p&gt;

&lt;h2&gt;Create Your Background Image&lt;/h2&gt;

&lt;p&gt;Obviously, if you want your QR code to look cool, you need to start with a background image.  For this example, I’ll start with a screenshot of the script I used to make the QR code itself.  (I might publish that script a bit later on - it was super-easy).   Some pointers about the image:
*  Start with something that’s &lt;strong&gt;mostly&lt;/strong&gt; dark without a ton of contrast
*  It should be square
*  Depending on what you’re using to produce the QR code, if the image itself is important, you might want to avoid having the subject of the picture go all the way to the edge.  My script, for example, does some math to determine how big the blocks of the code must be, then centers them.  But if the number of rows or columns &lt;strong&gt;plus two&lt;/strong&gt; doesn’t divide evenly into the number of pixels across, it’ll be centered with padding, which this will turn white.&lt;/p&gt;

&lt;p&gt;Here’s the image I’m using.  It’s just a screenshot of a simple QR-generating Groovy script opened in MacVim with the Xoria256 color scheme, with a black layer on top at 50% transparency for darkening it.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-A0Wtt4QowM4/ThoStPvzWWI/AAAAAAAACCE/oJLaF4ZX_O4/s512/qr1.png" alt="Original background"/&gt;&lt;/p&gt;

&lt;h2&gt;Create Your QR Code&lt;/h2&gt;

&lt;p&gt;I might post my QR-code generating Groovy script later, after a bit of polishing.  Or maybe I’ll just make it a Gist on GitHub.  But there are lots of sites and libraries for producing your own QR code.  The things I’d recommend about it:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;If you have control over the size, make it the same size as your background image.  Not 100% necessary (see the next tip), but will make things a bit easier if it is.&lt;/li&gt;
&lt;li&gt;Use pure black and white.  For the work with the GIMP, we’re going to use a layer mask to make it work, so you need pure black (&lt;code&gt;rgb(0,0,0)&lt;/code&gt;) and pure white (&lt;code&gt;rgb(255,255,255)&lt;/code&gt;) with no antialiasing.  The good news is that if it’s not antialiased, it will scale to whatever size without pixelizing.&lt;/li&gt;
&lt;li&gt;Depending on the complexity of the URL and the “busy-ness” of the underlying image, you might want to fiddle with the error correction level.  The busier your background image, or the more you want to put a slug in the middle of the image, the more important it is to use error correction.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Here’s my QR code:
&lt;img src="https://lh3.googleusercontent.com/-h_uKvpRXqM0/ThoVZ2x1LwI/AAAAAAAACCM/P1NumBsyMm8/will.png" alt="http://will.thestranathans.com"/&gt;&lt;/p&gt;

&lt;h2&gt;Make the image show through&lt;/h2&gt;

&lt;p&gt;The next part is where the Gimp comes in.  If you have the ridiculous amount of money and know what CMYK stands for and &lt;strong&gt;care&lt;/strong&gt; about CMYK, sure - buy Photoshop.  Knock yourself out.  You can do all this and a lot of other junk with Photoshop.  But this you can do easily with the Gimp and it won’t cost you a red cent beyond the electricity.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Open the background image&lt;/li&gt;
&lt;li&gt;Hit &lt;code&gt;Ctrl-L&lt;/code&gt; to open the Layers dialog&lt;/li&gt;
&lt;li&gt;Double click on the Background text to rename the background layer if you like.  (It’s going to be the background, so in my example, it makes sense to leave it as-is).&lt;/li&gt;
&lt;li&gt;Click the New Layer button &lt;img src="https://lh6.googleusercontent.com/-mAfDwKxTTv4/ThoXJE3bxsI/AAAAAAAACCU/WrRYcnOcTJs/qr2.png" alt="New Layer"/&gt;&lt;/li&gt;
&lt;li&gt;Give the new layer a name (something like QR Code), make the fill White, and hit OK &lt;img src="https://lh6.googleusercontent.com/-JMHiaUppfUY/ThoXzdxSQeI/AAAAAAAACCY/ch8TEjjsEMA/qr3.png" alt="Layer Properties"/&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;A bit about layers (forgive me you super image-edity type people)… Layers are a way of putting more image, or more image filters on top of one another.  You can turn them on and off, move them about, and edit them individually.  There are lots of different “modes” for layers.  The most common ones I use are Multiply, where it multiplies the colors on top by the colors beneath to change the color that renders - this is useful for darkening an image, for example; the other is Default, which is kinda’ what you might expect if you had a photograph laying on the table and laid another atop it - you only see the parts of the bottom image that aren’t exposed by the top.&lt;/p&gt;

&lt;p&gt;Default is what we’ll use in this case, because we want the color white to cover up the bottom image with blocks where the white will be on our QR code.  (You could experiment with tans or other light colors, but for now, just use white).&lt;/p&gt;

&lt;p&gt;The next trick we’re going to do is use something called a Layer Mask.  A layer mask is a black and white image where the white parts of the layer are kept in the layer, and the black parts are cut out.  So the black parts of the mask aren’t kept in the layer at all.  It’s not like the underlying image “shines through” the masked parts - the masked parts really aren’t even there.  Layer masks are really neat for doing things like cutting a picture of a person out of a background, or doing green-screen effects and such.   But with a QR code, since it’s already black and white, it makes making the mask really easy.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Right-click the top layer you created, and select Add Layer Mask &lt;img src="https://lh6.googleusercontent.com/-bMaR82PnmYk/ThoZuDh3EtI/AAAAAAAACCg/2d9svoU27ic/qr4.png" alt="Add Layer Mask"/&gt;&lt;/li&gt;
&lt;li&gt;Select White to initialize the layer - this means the whole layer is visible.  &lt;img src="https://lh3.googleusercontent.com/-UIkkx9D5Iz8/ThoaHmgKkWI/AAAAAAAACCk/VudqWQrYmKM/qr5.png" alt="White Layer Mask"/&gt;&lt;/li&gt;
&lt;li&gt;Next, you want to make sure that edits you make are made to the layer mask, not to the layer itself.  Right click on the Layer Mask, and make sure Edit Layer Mask is ticked. &lt;img src="https://lh6.googleusercontent.com/-luHzbe-DjX8/Thoa3FuX1vI/AAAAAAAACCo/S2EhUHOCY5s/qr6.png" alt="Edit Layer Mask"/&gt;&lt;/li&gt;
&lt;li&gt;Now, paste the QR code onto the Layer Mask by using Ctrl-V.  (Get it on the clipboard by editing it in the Gimp, selecting all, and paste.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;If you look in the Layers window, it’ll say “Floating Selection”, but you pasted onto the Layer Mask.  So just click the anchor to merge that selection down onto the layer mask. If all goes well, instead of black and white from your QR code, you should see white, but then the background image showing through the black parts.  If you use Show Layer Mask, you’ll see just what the mask itself looks like.&lt;/p&gt;

&lt;p&gt;Here’s my finished product:&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-Qll0H4_5Mjc/ThocwpnjYPI/AAAAAAAACCw/Kykyg_O-qas/qr7.png" alt="QR Code"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jWCo3M1JmuWLvkbNUXKlBrSKVmg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jWCo3M1JmuWLvkbNUXKlBrSKVmg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jWCo3M1JmuWLvkbNUXKlBrSKVmg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jWCo3M1JmuWLvkbNUXKlBrSKVmg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=r9ieU70QnOE:ZuPQFYV9Bf4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=r9ieU70QnOE:ZuPQFYV9Bf4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=r9ieU70QnOE:ZuPQFYV9Bf4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/r9ieU70QnOE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/r9ieU70QnOE/7467461289</link><guid isPermaLink="false">http://will.thestranathans.com/post/7467461289</guid><pubDate>Sun, 10 Jul 2011 17:42:47 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/7467461289</feedburner:origLink></item><item><title>Schadenfreude?</title><description>&lt;p&gt;Okay, so maybe there’s a bit of it in Dallas’ win over Miami. Just a bit. I’m more of a Spurs fan than a Mavericks fan. But they’re getting a bit long in the tooth (like the Mavericks aren’t), and I really like that they’ve always won as a team, not because they have one or two super-duper stars.&lt;/p&gt;

&lt;p&gt;The Schadenfreude doesn’t come for me from whence it comes for others. Most folks just hate Lebron because he left the Cavaliers high and dry for Miami - the sun, his friends, a truckload of money, and a really good shot at winning an NBA championship. Dirk Nowitzky, on the other hand, stayed in Dallas, and took less than the league maximum because he’s loyal to his team. Or so the argument goes. However, I think Lebron and Dirk had exactly the same motivation for being where they were this season - they both thought the team they wound up on gave them the best shot at winning an NBA championship. Who could argue against the Miami Heat being a true legitimate shot at winning, what with DWade, King James, and CBosh, and a back office run by Pat Riley. On the other hand, who could deny that Dirk had a shot, too with a bunch of seasoned veterans who had all come so close before, and Mark Cuban running the show, doing everything in his power (trades, private jets, making fools of the referees and David Stern) to make the Mavericks champions.&lt;/p&gt;

&lt;p&gt;So I don’t fault Lebron for leaving Cleveland. I’m not necessarily a fan of &lt;strong&gt;how&lt;/strong&gt; he did it, but I have no problem with him taking his highly-desireable free-agent skills elsewhere that gave him a better shot of winning than the lousy supporting cast he got in Cleveland.&lt;/p&gt;

&lt;p&gt;So why the Schadenfreude? Lebron James is 26 years old. This was his first season with the Miami Heat. Dwyane Wade is 29, and has a ring. Chris Bosh is 27. Why is age important? Because it seems every single game, they showed the Miami Heat in a huddle or team meeting. The head coach was absent. And the meeting was being run by Lebron James. He’s not only the youngest player of the superstars on the team, but he has no championships. He’s got playoff experience, but losing playoff experience. Season after season, he fails to live up to the hype, and he does something to bring his character into question - generally blaming somebody else for the loss or not congratulating the better team. But he’s somehow been chosen as a player-coach for the Miami Heat. Michael Jordan - one of the five best to ever lace on basketball shoes (I’m not naming all the top five because somebody will have legitimate arguments that I’m wrong. However, Pistol Pete has to be the best, right?) didn’t ever look like a player-coach until he was really too old to play. Bill Russell had played for 11 years before he was a player-coach. Avery Johnson played a full, tough career before becoming a coach. Larry Bird didn’t begin coaching until well after he retired as a player, and while he was a leader on his team, there was no doubt that he was &lt;strong&gt;not&lt;/strong&gt; the coach.&lt;/p&gt;

&lt;p&gt;So what’s my beef with Miami? My beef is that they selected Lebron James, probably the single most talented player in the league right now, as a leader of the team. But talent is not the same as leadership.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HWxaTu81ngtmxe8J0-HOjZbO1HI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HWxaTu81ngtmxe8J0-HOjZbO1HI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HWxaTu81ngtmxe8J0-HOjZbO1HI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HWxaTu81ngtmxe8J0-HOjZbO1HI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=rKwJyoodo1Q:P6ZdEJGxYLE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=rKwJyoodo1Q:P6ZdEJGxYLE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=rKwJyoodo1Q:P6ZdEJGxYLE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/rKwJyoodo1Q" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/rKwJyoodo1Q/6995811269</link><guid isPermaLink="false">http://will.thestranathans.com/post/6995811269</guid><pubDate>Tue, 28 Jun 2011 01:36:00 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/6995811269</feedburner:origLink></item><item><title>Idiosyncrasies</title><description>&lt;p&gt;Most people have idiosyncrasies.  But all programmers have more of them than most normal people.  Here are some of mine.  Some are for practical reasons.  Some - I can’t tell you why I do them.&lt;/p&gt;

&lt;h2&gt;Hygiene&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;Shaving - right side of face to left.  (I shave right handed, so shaving the left side of the face first guarantees I’ll get shaving cream on my collar).&lt;/li&gt;
&lt;li&gt;Brushing teeth - left to right bottom outer, right to left bottom inner, top outer left to right, top inner right to left, then tongue.&lt;/li&gt;
&lt;li&gt;Flossing - bottom right to left, then top left to right&lt;/li&gt;
&lt;li&gt;Pants go on right leg first&lt;/li&gt;
&lt;li&gt;Socks and shoes go on the left foot first&lt;/li&gt;
&lt;li&gt;I button the right cuff first, then the left (I button better with my left hand)&lt;/li&gt;
&lt;li&gt;I &lt;strong&gt;don’t&lt;/strong&gt; talk on the phone in the bathroom&lt;/li&gt;
&lt;li&gt;I wash my hands after I use the restroom.  Really meticulously in public restrooms - &lt;strong&gt;especially&lt;/strong&gt; if there are other men in the mens room.&lt;/li&gt;
&lt;li&gt;I follow man rules for picking the right urinal.  It really bugs me when other men don’t.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Driving&lt;/h2&gt;

&lt;p&gt;I drive a standard, and have most of my life, so some of these are due to that.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;When I steer with one hand, it’s always the left&lt;/li&gt;
&lt;li&gt;When I put a standard in neutral, I often wiggle the shifter just so I know it’s in neutral&lt;/li&gt;
&lt;li&gt;I downshift&lt;/li&gt;
&lt;li&gt;I check the mirrors obsessively.  I’ve been rear-ended enough times that I keep an eye on the rearview when I’m stopped.&lt;/li&gt;
&lt;li&gt;Door, clutch, ignition, gear, back up, and then mess with the radio&lt;/li&gt;
&lt;li&gt;I use headlights always.  Even in broad daylight&lt;/li&gt;
&lt;li&gt;I have to have ridden with you many times before I’ll be comfortable letting you drive&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Computing&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;Watching somebody else use a computer drives me bats.  If we’re doing something as a team, I almost always end up taking control because I can’t stand to watch other people use a computer.  (A few people I deal with often have proven themselves capable, and so it doesn’t drive me as bats with them).&lt;/li&gt;
&lt;li&gt;Keyboard shortcuts.  I use a &lt;strong&gt;lot&lt;/strong&gt; of them.  Switching from the keyboard back to the mouse takes too much time.  It bothers me that editors have different behaviors for selecting a word, selecting to the end of the line, selecting to the beginning of the line, etc.&lt;/li&gt;
&lt;li&gt;I use the command-line a &lt;strong&gt;lot&lt;/strong&gt;.  I think Explorer/Finder are far too slow.&lt;/li&gt;
&lt;li&gt;Few icons.  Splodge-space gets me what I need a &lt;strong&gt;lot&lt;/strong&gt; quicker than using the mouse to find a picture of what I want to do.&lt;/li&gt;
&lt;li&gt;Vi.  I use vi whenever possible, mostly because it’s ubiquitous, but often because I can do more with it than other editors.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Travel&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;I travel light&lt;/li&gt;
&lt;li&gt;When flying, I don’t mind checking luggage, even if it’s small.  I don’t want to be &lt;em&gt;that guy&lt;/em&gt; who tries fourteen different ways to cram my bag into the overhead compartment.&lt;/li&gt;
&lt;li&gt;I pick aisle seats on long flights (I’m a bit claustrophobic).  I pick window seats on shorter flights (I can look out the window and forget I’m claustrophobic).&lt;/li&gt;
&lt;li&gt;I avoid getting a rental car at all cost.  &lt;strong&gt;Particularly&lt;/strong&gt; in towns where I’ve not driven before.&lt;/li&gt;
&lt;li&gt;I don’t do a lot of sight-seeing - especially on business travel.  I cower in a corner of my hotel room.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Eating&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;I tend to eat all of one item before moving onto the next.  Usually my least favorite items first, saving my favorites for last.  If you see me switch foods, it means I like them (or dislike them) equally&lt;/li&gt;
&lt;li&gt;I &lt;strong&gt;could&lt;/strong&gt; eat the same things all the time.  (Jared’s Subway diet would be a snap for me if the pocketbook or the family would allow it).&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Honorable Mention&lt;/h2&gt;

&lt;p&gt;I asked &lt;a href="http://valerie.thestranathans.com" target="_blank"&gt;Mrs. At Home&lt;/a&gt; if there were any that stand out to her.  The first one she came up with is that I hear songs in places where the music is just background noise and can identify them.  In the grocery store, for example, most people don’t even realize that there’s music piping over the loudspeakers.  I not only notice that music is playing, I generally know &lt;strong&gt;what&lt;/strong&gt; the music is and can compile a playlist on exiting.&lt;/p&gt;

&lt;p&gt;And then there’s compulsive non-buying.  Even if I budget for a new gadget, I’ll go to the store, pick up the item, and carry it all the way to the register before deciding it’s not wise.  It usually takes my family making major purchases for me for holidays or birthdays.  No wonder we’ve been married 15 years and we only now have gone on our first cruise.  This was &lt;strong&gt;not&lt;/strong&gt; the first time we talked to a travel agent about the cruise.&lt;/p&gt;

&lt;p&gt;And finally, drumming.  I play traditional grip on the set, and rarely switch to matched grip.  The hi-hat is my primary instrument.  And thanks to the wisdom of upper-classmen, I tend to treat drums more as a “color” instrument rather than a rhythm instrument.  I play a lot more sounds than I do patterns.  And I play louder, making surprises and interesting stuff more than I do background timekeeping.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0TjZy0svGNCVNT7EOSKEfqxWh6c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0TjZy0svGNCVNT7EOSKEfqxWh6c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0TjZy0svGNCVNT7EOSKEfqxWh6c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0TjZy0svGNCVNT7EOSKEfqxWh6c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=GoOPFcfzcBA:qTRGCRZjCdw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=GoOPFcfzcBA:qTRGCRZjCdw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=GoOPFcfzcBA:qTRGCRZjCdw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/GoOPFcfzcBA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/GoOPFcfzcBA/6477836342</link><guid isPermaLink="false">http://will.thestranathans.com/post/6477836342</guid><pubDate>Sun, 12 Jun 2011 23:54:21 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/6477836342</feedburner:origLink></item><item><title>Checked vs. Unchecked Exceptions: ONE Story</title><description>&lt;p&gt;First, here’s the thread on &lt;a href="http://twitter.com/willathome" target="_blank"&gt;Twitter&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt;:&lt;/strong&gt; &lt;em&gt;Writing a Java API from scratch - checked or unchecked exceptions?&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/robhines" target="_blank"&gt;@robhines&lt;/a&gt;:&lt;/strong&gt; &lt;em&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt; I vote Checked!&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt;:&lt;/strong&gt;  &lt;em&gt;&lt;a href="http://twitter.com/robhines" target="_blank"&gt;@robhines&lt;/a&gt; there are good reasons for checked - most notably that they’re documented. But it’s inconsistent with PHP, .NET, etc.&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/robhines" target="_blank"&gt;@robhines&lt;/a&gt;:&lt;/strong&gt; &lt;em&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt; I think it is best to leverage the language, checked forces better client programming IMHO. Would be nice for other languages.&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt;:&lt;/strong&gt;  &lt;em&gt;&lt;a href="http://twitter.com/robhines" target="_blank"&gt;@robhines&lt;/a&gt; now there’s a thought - rather than writing to the least common denominator, use all the strengths available in each.&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt;:&lt;/strong&gt;  &lt;em&gt;&lt;a href="http://twitter.com/robhines" target="_blank"&gt;@robhines&lt;/a&gt; to further prove your point - if I wanted to be consistent with C, I’d not use exceptions at all. 0 for success non-0 for failure.&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/jon_peterson" target="_blank"&gt;@jon_peterson&lt;/a&gt;:&lt;/strong&gt; &lt;em&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt; I could go for hours on this.  Short answer “both”.  I’m with the moderate Rod Johnson on this one. Eckel is too extreme for me.&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt;:&lt;/strong&gt;  &lt;em&gt;&lt;a href="http://twitter.com/jon_peterson" target="_blank"&gt;@jon_peterson&lt;/a&gt; I’ve honestly thought about duplicating API’s in the past to give clients the option.&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;@jon_peterson:&lt;/strong&gt; &lt;em&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt; I like check exceptions when used correctly, but hate them when they are used stupidly. &lt;a href="http://j.mp/jEYtpM" target="_blank"&gt;Here is a good read&lt;/a&gt;&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/robhines" target="_blank"&gt;@robhines&lt;/a&gt;:&lt;/strong&gt; &lt;em&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt; So, checked or unchecked? What are the arguments you have for unchecked so far?&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/robhines" target="_blank"&gt;@robhines&lt;/a&gt;:&lt;/strong&gt;  &lt;em&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt; if you had asked &lt;a href="http://twitter.com/jinksto" target="_blank"&gt;@Jinksto&lt;/a&gt; he would have told you not to write it in Java to begin w/and avoid the question altogether. :-)&lt;/em&gt;&lt;br/&gt;&lt;strong&gt;&lt;a href="http://twitter.com/willathome" target="_blank"&gt;@willathome&lt;/a&gt;:&lt;/strong&gt;  &lt;em&gt;Thanks all for the insight on whether to use checked or unchecked. Will write a blog post on the decision and process.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So that was the Twitter feed.&lt;/p&gt;

&lt;p&gt;The idea was that I was writing a client API to a REST service using Java.  When a client is communicating with a REST service, there are a lot of things that can go sideways.&lt;/p&gt;

&lt;p&gt;If you’re not familiar, Java has the concept of &lt;em&gt;checked&lt;/em&gt; exceptions.  In fact, most exceptions are checked.  Very few languages with exceptions have checked exceptions.  Catching a checked exception is enforced by the compiler - so if you call a method that throws a checked exception, you must either catch that exception, or declare in your method definition that you throw that exception, or the code won’t compile.  Most exceptions in Java are checked.  Only subclasses of &lt;code&gt;RuntimeException&lt;/code&gt; or &lt;code&gt;Error&lt;/code&gt; are unchecked - meaning, if you call a method which throws &lt;code&gt;RuntimeException&lt;/code&gt; or &lt;code&gt;Error&lt;/code&gt; or a subclass of those, then you’re not required to explicitly catch or re-throw that exception.  If nothing catches an unchecked exception, the runtime will catch it and terminate.&lt;/p&gt;

&lt;p&gt;The debate over checked vs. unchecked exceptions goes way, way back.  Some say it’s one of the best features Java included.  Others say it was one of their biggest mistakes.  I wasn’t hoping to resolve it in one night, but wanted to know how to handle &lt;strong&gt;my&lt;/strong&gt; API.  And I probably didn’t give enough information.  But thanks to the folks who did pipe in.&lt;/p&gt;

&lt;p&gt;While &lt;a href="http://twitter.com/robhines" target="_blank"&gt;@robhines&lt;/a&gt; gave some very valuable points for using checked exceptions, I ultimately decided for unchecked exceptions, but not for the reasons traditionally stated.&lt;/p&gt;

&lt;p&gt;In this particular case, it made sense because of &lt;strong&gt;how&lt;/strong&gt; I expected people to use this API.  Writing a client for a REST service in Java is not terribly, terribly difficult.  However, as I mentioned, there are a lot of things that can go wrong.  This particular API I was writing, I intend for folks to generally use in short scripts or in simple CLI tools for getting the work done.  In 99% of those cases, the code itself &lt;strong&gt;won’t&lt;/strong&gt; be able to recover from problems in the API.  Yes, they &lt;strong&gt;could&lt;/strong&gt; do some robust error checking for things like authentication failures and re-prompt the user for credentials, however, I expect users of this particular API will be writing automation scripts that won’t prompt for credentials at all.  And using unchecked exceptions doesn’t preclude people being able to catch those exceptions.&lt;/p&gt;

&lt;p&gt;Basically, using unchecked exceptions, people will likely do this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;public static void main(String[] args) {
  callApi1();
  calApi2();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;with unchecked exceptions, if anything goes wrong, the app will basically vomit all over itself.&lt;/p&gt;

&lt;p&gt;If I were using checked exceptions, people would look for the shortest possible path to let the code vomit all over itself - namely:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;public static void main(String[] args) throws Exception {
  callApi1();
  callApi2();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Writing the API to use unchecked exceptions actually took a lot of time on my part, however.  As I mentioned, with a REST API, there are &lt;strong&gt;lots&lt;/strong&gt; of things that can go wrong, most of which either throw checked exceptions or use HTTP status codes.  So I had to explicitly catch all the specific checked exceptions, carefully re-thowing those as unchecked exceptions, and explicitly document all the unchecked exceptions my code might throw.&lt;/p&gt;

&lt;p&gt;So that’s not the be-all-end-all answer you were probably looking for if you read this far, but that was my decision process for &lt;strong&gt;this&lt;/strong&gt; particular API - opted for unchecked because I &lt;strong&gt;expect&lt;/strong&gt; most people will use this API for throwaway headless CLI scripts, and using unchecked exceptions doesn’t preclude them handling exceptions more elegantly.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j3jdRC2Cl9ZifLcPkU4aIatkGBg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j3jdRC2Cl9ZifLcPkU4aIatkGBg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j3jdRC2Cl9ZifLcPkU4aIatkGBg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j3jdRC2Cl9ZifLcPkU4aIatkGBg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=a9t4-LNYaUQ:iqtQckrYm0Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=a9t4-LNYaUQ:iqtQckrYm0Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=a9t4-LNYaUQ:iqtQckrYm0Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/a9t4-LNYaUQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/a9t4-LNYaUQ/5977905115</link><guid isPermaLink="false">http://will.thestranathans.com/post/5977905115</guid><pubDate>Sun, 29 May 2011 17:31:02 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/5977905115</feedburner:origLink></item><item><title>Being Offensive</title><description>&lt;p&gt;I missed a call from my good friend &lt;a href="http://twitter.com/#!/matthewvsnyder" target="_blank"&gt;XiaSi&lt;/a&gt; today.  By the time I got to the phone, I had not received the message indicator yet, so I just called him back.  At the beginning of the call, he explained that he had left a rather long-winded message.  We had our conversation, and that was that.  Until a few minutes ago, I listened to his message.  Google Voice says the message is 2:12 long - which is longer than your average message, but not longer than….&lt;/p&gt;

&lt;p&gt;When I was in college, my roommate and I were pretty good friends with a guy who had been a percussionist, but was switching majors.  And shortly after we started school (this guy was a couple of years ahead of us), he was engaged to be married.  We were all jokers, and the practical joke they often used with us was to call our dorm room and leave &lt;strong&gt;really&lt;/strong&gt; long messages with absolutely nothing in them.  I mean, silly sounds, voice impersonations, etc.  (And this is back in the day when the answering machine had a tape and we had no way of hearing message 2 until message 1 was done.)  This was status quo.&lt;/p&gt;

&lt;p&gt;The couple, as they neared the wedding day, began to invest in the things that would make home, well, home.  Like blenders, coffee makers, and couches.  This was the first friend I had who was &lt;strong&gt;truly&lt;/strong&gt; at a different stage of life.  You know when you’re just getting married and your friends start having kids, and you really don’t understand what all their yammering is about?  This was my first introduction to that because they were really genuinely interested in the blender, coffee maker, or couch they got.  So they’d leave messages on our machine telling us how excited they were about their blender, coffee maker, or couch.&lt;/p&gt;

&lt;p&gt;My roommate and I mistook this excitement for their old prank of leaving really, really long messages.  Some event came up where we needed a mixer, so we bought one.  It was like $3, but did the trick.  But our first thought upon coming home with it was to call our friends and leave them a message about it.  Not only did we tell them where we got it, what color it was, what we intended to mix with it, how many speeds it had, etc. but then we read the manual to them.  The &lt;strong&gt;entire&lt;/strong&gt; manual.  Their machine cut us off after 30 minutes, so we called back to finish.&lt;/p&gt;

&lt;p&gt;I was really, really scared when our friends called us back.  They were &lt;strong&gt;furious&lt;/strong&gt;.  They had taken the message to mean that we were making fun of their excitement over getting home furnishings (which we were).  The thought we were making light of their new appliances (which we were).  And they thought we were being totally rude and inappropriate (which we were).  But the thing I &lt;strong&gt;didn’t&lt;/strong&gt; know is that they really were genuinely excited about starting this new phase of their lives, and they wanted to share the excitement with friends.  I only assumed they were being silly because they employed the same tactics to notify us of their excitement as they had to harass us earlier.&lt;/p&gt;

&lt;p&gt;So B and A, I’m really sorry.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ne1Rh1TGZP-gqALYQLkW6wMtd7o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ne1Rh1TGZP-gqALYQLkW6wMtd7o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ne1Rh1TGZP-gqALYQLkW6wMtd7o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ne1Rh1TGZP-gqALYQLkW6wMtd7o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=B85aGxfT_UI:c_IGPyN5APA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=B85aGxfT_UI:c_IGPyN5APA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=B85aGxfT_UI:c_IGPyN5APA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/B85aGxfT_UI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/B85aGxfT_UI/5869569538</link><guid isPermaLink="false">http://will.thestranathans.com/post/5869569538</guid><pubDate>Thu, 26 May 2011 13:37:12 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/5869569538</feedburner:origLink></item><item><title>Not a Spectator Sport</title><description>&lt;p&gt;A wonderful dear woman at our church was a bit upset this morning that nobody ever hugs anymore at our church.  So I asked her, “how many people did &lt;strong&gt;you&lt;/strong&gt; hug this morning?”&lt;/p&gt;

&lt;p&gt;We’re often so quick to point out the faults in our church, but few of us seem to be willing to do anything about it.&lt;/p&gt;

&lt;p&gt;Think your church doesn’t have much of a community feel to it?  How many people did you have over to your house this week?&lt;/p&gt;

&lt;p&gt;Think your church doesn’t welcome visitors very well?  How many did you welcome?&lt;/p&gt;

&lt;p&gt;Don’t think your church has a ministry that suits your fancy?  How many ministries did you try?  What happened when you started one that &lt;strong&gt;did&lt;/strong&gt; suit your fancy?&lt;/p&gt;

&lt;p&gt;Don’t like the music your church sings?  What did the worship pastor say when you asked to sing the special next Sunday?&lt;/p&gt;

&lt;p&gt;Don’t think the teaching at your church is very good?  What was the Bible study you prepared for your class like?&lt;/p&gt;

&lt;p&gt;I’m not saying that if things aren’t right at your church you should shut up and tough it.  But Christ-following is not a spectator sport.&lt;/p&gt;

&lt;p&gt;A friend of mine once had a lot of trouble finding a church he liked.  He had been to about five different churches over a two-month period.  “This one was too THIS.  That one was too THAT.  The other was too something else.”  To which I responded with a question:  “Now, what did all of these churches have in common.”  It wasn’t long before he stopped registering complaints and was delighted to inform me about how he stayed at the last church he had complained about and found a ministry to be involved with that helped with whatever the biggest complaint was he had with that church.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PrjPUoQbclPDB7zWLeHsCvGLNa8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PrjPUoQbclPDB7zWLeHsCvGLNa8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PrjPUoQbclPDB7zWLeHsCvGLNa8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PrjPUoQbclPDB7zWLeHsCvGLNa8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=ANNjNiOkSdg:DCg7NdEfB9M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WillAtHome?a=ANNjNiOkSdg:DCg7NdEfB9M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WillAtHome?i=ANNjNiOkSdg:DCg7NdEfB9M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillAtHome/~4/ANNjNiOkSdg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/WillAtHome/~3/ANNjNiOkSdg/5532632315</link><guid isPermaLink="false">http://will.thestranathans.com/post/5532632315</guid><pubDate>Sun, 15 May 2011 22:14:56 -0400</pubDate><feedburner:origLink>http://will.thestranathans.com/post/5532632315</feedburner:origLink></item></channel></rss>

