<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Homage to Icarus</title>
	<atom:link href="http://ignore-your.tv/feed/" rel="self" type="application/rss+xml" />
	<link>http://ignore-your.tv</link>
	<description>A god who is but a reflection of human frailty</description>
	<lastBuildDate>Fri, 19 Feb 2010 03:36:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Screaming in an Elevator</title>
		<link>http://ignore-your.tv/2010/02/18/screaming-in-an-elevator/</link>
		<comments>http://ignore-your.tv/2010/02/18/screaming-in-an-elevator/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 03:35:33 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[screaming]]></category>
		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=882</guid>
		<description><![CDATA[Getting on the elevator this morning, it turned out I should have waited. Some woman was yelling at someone on the elevator about how he should support health-care, and some randomness about the unnamed politician who’s bumper sticker adorned his jacket was so terrible and such.
She continued to rant at him all the way up [...]]]></description>
			<content:encoded><![CDATA[<p>Getting on the elevator this morning, it turned out I should have waited. Some woman was <em>yelling</em> at someone on the elevator about how he should support health-care, and some randomness about the unnamed politician who’s bumper sticker adorned his jacket was so terrible and such.</p>
<p>She continued to rant at him all the way up to my floor.</p>
<p>On the way out the elevator, I called back that screaming doesn’t solve anything, though after getting better caffeinated, I wish I had told her to treat the man like a human being.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2010/02/18/screaming-in-an-elevator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Essential Spirit</title>
		<link>http://ignore-your.tv/2010/01/24/jcapeignore-your-tv-2/</link>
		<comments>http://ignore-your.tv/2010/01/24/jcapeignore-your-tv-2/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 05:51:50 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[democrats]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[republicans]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=826</guid>
		<description><![CDATA[I’d like to thank all of those who voted for Scott Brown. You’ve done the courageous thing by making sure the rest of the country cannot have a health care system roughly equivalent to the one you already enjoy in Massachusetts.
Most people—ordinary people—would not allow themselves to simply ignore the monumental shamefulness of that. They [...]]]></description>
			<content:encoded><![CDATA[<p>I’d like to thank all of those who voted for Scott Brown. You’ve done the courageous thing by making sure the rest of the country cannot have a health care system roughly equivalent to the one you already enjoy in Massachusetts.</p>
<p>Most people—ordinary people—would not allow themselves to simply ignore the monumental shamefulness of that. They would consider carefully the national and international consequences of giving a Republican the 41st seat in the Senate. They would not allow a poorly ran campaign, or some bullshit about a sports team to get in the way of making the moral choice. Hell, I voted for Obama—south-sider and Sox fan that he is—for that very reason…</p>
<p>Fortunately, neither I nor most other people, live in Massachusetts.</p>
<p>I believe that Joseph Goebbels once said that the SS personnel in the concentration camps were the epitome of strength: they were so strong that they could keep their consciences and the wrongness of their actions from getting in the way of actually killing the Jews. It’s good to know that essential spirit is alive and well, particularly in the supposed bastion of coastal liberalism.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2010/01/24/jcapeignore-your-tv-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu on the Dell Adamo</title>
		<link>http://ignore-your.tv/2010/01/18/ubuntu-on-the-dell-adamo/</link>
		<comments>http://ignore-your.tv/2010/01/18/ubuntu-on-the-dell-adamo/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 05:30:13 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[adamo]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=813</guid>
		<description><![CDATA[I went ahead and got the Adamo from Dell, so here’s my review of it, and what I did to set it up and get it working the way I wanted.
Firstly, on the hardware: AC adapters is the weak point of this guy. For my old MacBook, I had three: one in my bag, one [...]]]></description>
			<content:encoded><![CDATA[<p>I went ahead and got the Adamo from Dell, so here’s my review of it, and what I did to set it up and get it working the way I wanted.</p>
<p>Firstly, on the hardware: AC adapters is the weak point of this guy. For my old MacBook, I had three: one in my bag, one at home, one at the office. While it was a decent extra cost, it was one I undertook after I forgot my adapter a couple times and had to go without for a while—something that everyone with a laptop deals with at some point.</p>
<p>This was particularly a pain since the one that Dell shipped with the laptop died after the first charge—which meant another three days of being unable to use it after I received it. Not cool, Dell.</p>
<p>With the power supply problem fixed, I moved on to getting Linux on the thing. The thing ships with Windows 7, which I wanted to keep on there as an option, and there’s enough travel and sensitive work stuff that I do on my laptops to justify encrypting the disk, which requires using the Ubuntu alternative installer. I also wanted to use LVM for my disks for when I start running out of space and want to shrink the Windows partition.</p>
<p>The way to make this work is non-obvious, and it required two attempts to get going:</p>
<ol>
<li>Resize the Windows partition to something less than the full disk. I chose to give it 100G, and allocate the rest for Linux. This works out of the box in the installer, which is nice.</li>
<li>Setup LVM on the remaining space next.
<ul>
<li>200M for a <code>/boot</code> partition</li>
<li>20G for swap (SSD disk means I assume that hitting swap is nowhere near as painful as it used to be)</li>
<li>The rest for a root partitiion.</li>
</ul>
</li>
<li>Setup encrypted volumes on the LVM partitions you created for root and swap (not <code>/boot</code>). You want to encrypt your swap as well, because Linux isn’t going to zero-out your swap volume when you shutdown, making it effectively an on-disk memory dump of whatever your applications were doing…</li>
</ol>
<p>I tried setting up single root/swap partitions on top of a single large encrypted volume, but Ubuntu aparently requires your /boot partition be un-encrypted, so there wasn’t an obvious way to boot it after doing so…</p>
<p>With that issue out of the way, the rest of the installation went smoothly and things booted just fine. I’ll note that Windows 7 boots <strong>much</strong> faster than Ubuntu 9.10, but I’ve only actually booted the thing from a POST onwards a few times in the last couple weeks, so who cares? The time it takes to resume from sleep is much more important for a laptop, honestly.</p>
<p>With everything installed, I used rsync to copy my documents and such off my old laptop. I had enough disk to rsync my music collection off of my world book, so I went ahead and did that too, and I’ve written a simple upstart config that performs the rsync properly when the network comes back:</p>
<pre class="brush: shell;">#!/bin/bash
# Script to dispatch NetworkManager events
#
# Runs rsync when WiFi or ethernet is connected.

set -x

if [ -z "$1" ]; then
    echo "$0: called with no interface" 1>&#038;2
    exit 1;
fi

# Fake ifupdown environment
export IFACE="$1"
export ACTION="$2"
export USERNAME="me"
export REMOTE_USERNAME="me"
export REMOTE_HOST="stuff.mine.nu"

case "$ACTION" in
    up)
	if [ "$IFACE" = "eth0" -o "$IFACE" = "wlan0" ]; then
		if [ -z "$(pidof rsync)" ]; then
			sudo -n -u $USERNAME rsync -a /home/$USERNAME/Music/* $REMOTE_USERNAME@$REMOTE_HOST:/shares/internal/MUSIC
		fi
	fi
	;;
esac</pre>
<p>I used to try and just mount the drive via SSHfs/nautilus and play via Rhythmbox, but it would skip the first 30 seconds of the song, requiring manual intervention every three minutes.</p>
<p>After that comes the custom repositories I’m using to add a little snazziness and breakage:</p>
<dl>
<dt>ppa:ricotz/testing</dt>
<dd>Latest and greatest GNOME Shell</dd>
<dt>ppa:telepathy/ppa</dt>
<dd>Bleeding Edge Telepathy/Empathy (my at-work XMPP server manages to consistently crash Empathy)</dd>
<dt>ppa:ubuntu-mozilla-daily/ppa</dt>
<dd>Nightlies of Firefox 3.6</dd>
<dt>ppa:cmsj/lifesaver</dt>
<dd>Lifesaver screensaver, search term “#fml” <img src='http://ignore-your.tv/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </dd>
<dt>ppa:chromium-daily/ppa</dt>
<dd>Chromium Web Browser nightly builds</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2010/01/18/ubuntu-on-the-dell-adamo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Dear Lazyweb</title>
		<link>http://ignore-your.tv/2009/12/25/dear-lazyweb/</link>
		<comments>http://ignore-your.tv/2009/12/25/dear-lazyweb/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 22:54:49 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[karmic]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/2009/12/25/dear-lazyweb/</guid>
		<description><![CDATA[Does anyone have any experiences with Karmic on the white Dell Adamo?
Update: It seems positive, at least compared with the cheaper MacBook Air where you have to fuss with kernel boot options and whatnot.
]]></description>
			<content:encoded><![CDATA[<p>Does anyone have any experiences with Karmic on the white Dell Adamo?</p>
<p><em>Update:</em> <a href="http://ubuntuforums.org/showthread.php?t=1293542">It seems positive</a>, at least compared with the cheaper MacBook Air where you have to fuss with kernel boot options and whatnot.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2009/12/25/dear-lazyweb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scratching The Itch</title>
		<link>http://ignore-your.tv/2009/11/22/scratching-the-itch/</link>
		<comments>http://ignore-your.tv/2009/11/22/scratching-the-itch/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 21:24:52 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[capital globalization]]></category>
		<category><![CDATA[economy]]></category>
		<category><![CDATA[free culture]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=805</guid>
		<description><![CDATA[It’s been said before, but a person’s first foray into free culture of any type is often to scratch an itch. For me, my first Wikipedia edit was undoing vandalism on the Hernando de Soto Polar page conflating him with the conquistador of the same name—replacing his actual birth date with 1500-something, etc.
It’s somewhat disappointing [...]]]></description>
			<content:encoded><![CDATA[<p>It’s been said before, but a person’s first foray into free culture of any type is often <a href="http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s02.html">to scratch an itch</a>. For me, my first Wikipedia edit was undoing vandalism on the <a href="http://en.wikipedia.org/wiki/Hernando_de_Soto_%28economist%29">Hernando de Soto Polar</a> page conflating him with the conquistador of the same name—replacing his actual birth date with 1500-something, etc.</p>
<p>It’s somewhat disappointing that real Wikipedia vandalism is as pointlessly childish as that…</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2009/11/22/scratching-the-itch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Customer Service Fail</title>
		<link>http://ignore-your.tv/2009/10/05/customer-service-fail/</link>
		<comments>http://ignore-your.tv/2009/10/05/customer-service-fail/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 14:37:39 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[servicing the customer]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=796</guid>
		<description><![CDATA[One of the bad ideas currently infecting companies in the technology field is the LivePerson “chat with a support person now” thing. This is a bad idea for multiple reasons:

It’s a gigantic floating piece of garbage distracting me from whatever it is I’m trying to learn about your company or it’s products.
The representatives on the [...]]]></description>
			<content:encoded><![CDATA[<p>One of the bad ideas currently infecting companies in the technology field is the LivePerson “chat with a support person now” thing. This is a bad idea for multiple reasons:</p>
<ol>
<li>It’s a gigantic floating piece of garbage distracting me from whatever it is I’m trying to learn about your company or it’s products.</li>
<li>The representatives on the other side are idiots who wouldn’t know what customer service is were it [insert your preferred-gendered joke here].</li>
</ol>
<p>Case in point: Limelight Networks. The website lists about 15 “Services” they offer, and none of them are immediately obvious and I don’t want to spend the next hour parsing their marketease trying to find the specific niche product I’m looking for. So I (like a fool) click the stupid chat thing obscuring their page. This started at 8:30am and went on until 9:30am.</p>
<blockquote><p>Jon: Yes what company or site are you from so I can better help you?<br />
You: [redacted]<br />
Jon: Thank you for waiting. I’ll be with you in just a moment.<br />
Jon: I’m sorry for the delay. I’ll be right with you.<br />
Jon: I’ll be right with you.<br />
You: Why don’t you have a salesperson contact me and just ask me if our website is, in fact, a blank page?<br />
Jon: I’m sorry for the delay. I’ll be right with you.<br />
Jon: Thank you for waiting. I’ll be with you in just a moment.<br />
Jon: I’ll be right with you.<br />
Jon: I’ll be right with you.<br />
Jon: Thank you for waiting. I’ll be with you in just a moment.<br />
You: So what’s the point of this chat, exactly? For me to wait on iHold for an hour while canned messages about your imminent reply scroll past?<br />
You: Until I get bored and find another vendor?</p></blockquote>
<p>After another couple minutes I just closed the window, and now I’m at <a href="http://akamai.com/">Akamai</a>’s site, looking at their “solutions finder” — which is what I was looking for on Limelight’s website to begin with.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2009/10/05/customer-service-fail/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Siding with the Bastards</title>
		<link>http://ignore-your.tv/2009/09/25/siding-with-the-bastards/</link>
		<comments>http://ignore-your.tv/2009/09/25/siding-with-the-bastards/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 02:39:00 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[feminism]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[power]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=774</guid>
		<description><![CDATA[Let me preface this by stating a few things: if you are going to tell me that girls are inherently bad at technology, programming, or are getting their panties in a twist, please fuck the fuck off. I feel confident in judging you a waste of an opportunity for a perfectly good pair of ovary [...]]]></description>
			<content:encoded><![CDATA[<p>Let me preface this by stating a few things: if you are going to tell me that girls are inherently bad at technology, programming, or are getting their panties in a twist, please fuck the fuck off. I feel confident in judging you a waste of an opportunity for a perfectly good pair of ovary and sperm.</p>
<p>Secondly, I haven’t read a transcript or seen a video, because <a href="http://geekfeminism.org/2009/09/23/open-letter-to-mark-shuttleworth/">the</a> <a href="http://www.mattjones.workhorsy.org/2009/09/23/mark-respects-girls/">people</a> <a href="http://blog.printf.net/articles/2009/09/25/on-keynotes-and-apologies">ranting</a> <a href="http://www.itwire.com/content/view/28002/1090/">about</a> this are seemingly unable to link to either, lest you judge it for yourself.</p>
<p>So all I have to go on is the quotes and snippets and attempts at context. It sounds like the obviously poorly-delivered joke (I say so because it’s causing a brou-ha-ha rather than a laugh) was <em>meant</em> to go something like this:</p>
<ol>
<li>Have you ever tried to explain your muddled thinking to someone else?</li>
<li>You know how it causes embarrassment when the other person gives you that quizzled look, and you realize you’re an idiot?</li>
<li>As a multi-millionaire and astronaut, I find myself embarrassed trying to explain how my software works to members of the gender to which I’m attracted, even though my software is awesome.</li>
<li>If my software was easy to explain—thus saving me the embarrassment of muddled thinking about design—it would also be easy for people to use.</li>
<li>Mush the last few steps together: if my software is easy to use, it’s easy to explain how it works, and I can sell it (and by extension, myself) to members of the gender to which I’m attracted in social situations.</li>
</ol>
<p>This is a logical progression, and an attempt to appeal to evolutionary processes in order to make a bunch of misfit workaholics socially useful.</p>
<p>Unfortunately for him, Mark Shuttleworth is a well-socialized heterosexual gentlemen from somewhere other than the suburban United States, so he’s attracted to women, and apparently isn’t aware that in the US, it’s not OK in polite company to refer to someone he’s interested in chatting up at the bar a girl. It honestly sounds like he’s trying to be cute with it, but falling on his face because some people are offended when they hear about prominent figures talking about women as girls. Either that or one advantage of being a astronaut is that your world is post-gendered.</p>
<p><em>Yes, I’m jealous of the money and space travel. I’m also young and ambitious, so not </em>too<em> terribly worried about it.</em></p>
<p>Regardless, part of the reaction is defense against the assertion of privilege and control: dudes don’t get mad when women talk about boys in those terms in our presence because the matriarchy hasn’t existed for thousands of years and we don’t have to worry about it. The reaction we (boys) have is either blushing or strutting a bit, because we recognize it as a sign of selection and an assertion of power.</p>
<p><em>And, of course, bad-assed women are very attractive to guys my age—so many video games, so little time… Our great-great-grandsons, however, will curse us for our blindness. <img src='http://ignore-your.tv/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </em></p>
<p>Conversely, ladies may bristle when men talk about the girls, because it’s a term of endearment that is inexorably tied back to when <em>all women</em>, in <em>all circumstances</em>, were considered girls. There’s an extremely ugly legacy lurking close enough to the collective memories of both women and men when it comes to a man asserting power and showing signs of selection.</p>
<p>That’s, I think, why Mark’s comments are compared to RMS’s. Even though—at least in my third-hand deconstruction—they are logically to get the audience to do the right thing because of a woman’s <em>dominance</em> in selection situations, the language he is using is loaded enough to tell a different narrative.</p>
<p><em>Collective memories!? Narrative!? Holy pretentious fuck. Fuck this, who’s playing at the club tonight? Yeesh!</em></p>
<p><em>Update:</em> Thanks to <a href="http://ubuntulinuxtipstricks.blogspot.com/">Mackenzie</a> for posting the <a href="http://www.linuxpromagazine.com/linuxcon/shuttleworth">link to the video and slides</a>.</p>
<p>As noted by nukeedit, the release comment (in the first few minutes), has a connection to orgasm, but it was <em>not</em> gender specific, and had no connection to hookers <em>at all</em>. Now, I’ve read <a href="http://www.gutenberg.org/etext/20715">Emma Goldman</a>, and claim to understand it, but iterating that precise chain of logic to anything related to sex ends up with your proscriptions effectively indistinguishable from moral traditionalists, and results matter more than intentions. To put it another way: darkmatter may be a tool, but sex is not the enemy.</p>
<p>On the “girls” comment… (at 36:00, slide starts at 35:00) ugh. He ends up eluding to the fact that he’s referring to “girls” as “people who don’t care about free software.” In context, the comment is actually worse than it is without context. Logically, there really isn’t a way to salvage his comments as somehow different from the “teach it to your grandma”, even though I don’t think that was actually what he was trying for.</p>
<p>Results do matter more than intentions. To me, as a native-born white male engineer in the US, the results are this: an otherwise engaging talk on how to make FOSS not suck, which gives voice to my own thoughts from years ago about UX and code—particularly the intimate relationship between the APIs you’re writing and the UIs that can rest atop them—is completely forgotten, and the only thing people are talking about is what a complete cobag Mark was for joking about girls.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2009/09/25/siding-with-the-bastards/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>In The Clouds</title>
		<link>http://ignore-your.tv/2009/08/22/in-the-clouds/</link>
		<comments>http://ignore-your.tv/2009/08/22/in-the-clouds/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 02:45:01 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[outsourcing]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=746</guid>
		<description><![CDATA[I’ve spent the last couple weeks moving off of my existing server(s) and into the cloud. Previously, I had been using my own Zimbra server, own SVN/trac install, and websites, albeit virtualized on a shared XEN server. The physical server all this was running on was some ancient second-hand single-core i386 Dell poweredge which never [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve spent the last couple weeks moving off of my existing server(s) and into the cloud. Previously, I had been using my own Zimbra server, own SVN/trac install, and websites, albeit virtualized on a shared XEN server. The physical server all this was running on was some ancient second-hand single-core i386 Dell poweredge which never had enough RAM, cyles or bandwidth.</p>
<p>For this, I paid a friend of mine $30/mo. Recently, the fourth person in our arrangement dropped out and so our costs went up to $40/mo. Now, I had 768Mb worth of memory on the two virtual machines I had, of which I was only actually using one.</p>
<p>So I was paying $40/mo for a single VM instance I ran SCM and my website off of, and my e-mail. That’s dumb, since you can use private repos on Github for $7/mo, use Gmail for free (all things equal, webmail is webmail), and get a private VM instance on Linode for $17/mo.</p>
<p>So that’s what I did: I cut my costs in half over the self-hosted solution by putting shit online.</p>
<p>Now, if me and my friends had kicked in a lot more $ and gotten a real server, and split it that 1RU up more aggressively, then it would have been cheaper to do that ourselves. But nobody cared enough about that to make it work, so putting it elsewhere is cheaper.</p>
<p>Which is a generalized conclusion I’m willing to draw: if nobody cares, it’s cheaper to pay someone to do it than to muddle through yourself. If someone does care, then it’s invariably going to be cheaper to DIY.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2009/08/22/in-the-clouds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributing Static Routes with DHCP</title>
		<link>http://ignore-your.tv/2009/07/17/distributing-static-routes-with-dhcp/</link>
		<comments>http://ignore-your.tv/2009/07/17/distributing-static-routes-with-dhcp/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 02:25:09 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[rhel]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=728</guid>
		<description><![CDATA[I’m setting up an isolated network for people to test internal applications on, since the developers all have Sun workstations with a dual-port Gigabit NIC on the motherboard, and we’ve got a bunch of older network equipment that we haven’t gotten around to eBaying yet. What I’m doing is linking the second NICs together with [...]]]></description>
			<content:encoded><![CDATA[<p>I’m setting up an isolated network for people to test internal applications on, since the developers all have Sun workstations with a dual-port Gigabit NIC on the motherboard, and we’ve got a bunch of older network equipment that we haven’t gotten around to eBaying yet. What I’m doing is linking the second NICs together with some virtual machines and the older network equipment to create a separate development network.</p>
<p>The development network is a full Layer-3 network running an IGP between multiple nodes with attached client boxes. This allows me to play around with a decent lab network, and provides developers with a way to discover that Linux sets the TTL of multicast packets to “1” well before they are called to explain why their application didn’t work even after loads of testing, spend 8 hours playing head-desk, and finally start questioning me about firewalls on our internal network, forcing me to claw it out of them that they are driving multicast without a license and explain how to use <code class="executable">tcpdump</code>.</p>
<p><em>Not that I’ve had to do that a dozen times now, or anything…</em><br />
<span id="more-728"></span></p>
<p>This means I have to configure static routes on the developer workstations so they can access things in the lab outside their local subnet. You start off by configuring static routes in your distro’s chosen format (this is RHEL5 at work, so it’s <code class="filename">/etc/sysconfig/network-scripts/route-eth<em>X</em></code>), and then you step it up a notch by writing scripts to distribute these files, then start using <a href="http://fermitools.fnal.gov/abstracts/rgang/abstract.html">rgang</a> or <a href="https://fedorahosted.org/func/">func</a>, and start thinking about using your <a href="http://reductivelabs.com/products/puppet/">systems programming tool</a> to distribute the routes. And then you smack your forehead and figure out that this is all stupid: there is already an IETF standard way to distribute network configuration which you should be using: DHCP.</p>
<p>There’s even <a href="http://tools.ietf.org/html/rfc3442">DHCP option 121</a>, which provides a way to distribute CIDR information (modern static routes) to clients. Unfortunately this standard option isn’t supported out of the box on modern dhclient or <a href="https://www.isc.org/software/dhcp">ISC dhcpd</a>, so you need to configure it and script it in.</p>
<p>First, on the client, <code>/etc/dhclient-exit-hooks</code></p>
<pre class="brush: bash">#!/bin/bash
#
# /etc/dhclient-exit-hooks
#
# This file is called from /sbin/dhclient-script after a DHCP run.
#

#
# parse_option_121:
# @argv: the array contents of DHCP option 121, separated by spaces.
# @returns: a colon-separated list of arguments to pass to /sbin/ip route
#
function parse_option_121() {
        result=""

        while [ $# -ne 0 ]; do
                mask=$1
                shift

                # Is the destination a multicast group?
                if [ $1 -ge 224 -a $1 -lt 240 ]; then
                        multicast=1
                else
                        multicast=0
                fi

                # Parse the arguments into a CIDR net/mask string
                if [ $mask -gt 24 ]; then
                        destination="$1.$2.$3.$4/$mask"
                        shift; shift; shift; shift
                elif [ $mask -gt 16 ]; then
                        destination="$1.$2.$3.0/$mask"
                        shift; shift; shift
                elif [ $mask -gt 8 ]; then
                        destination="$1.$2.0.0/$mask"
                        shift; shift
                else
                        destination="$1.0.0.0/$mask"
                        shift
                fi

                # Read the gateway
                gateway="$1.$2.$3.$4"
                shift; shift; shift; shift

                # Multicast routing on Linux
                #  - If you set a next-hop address for a multicast group, this breaks with Cisco switches
                #  - If you simply leave it link-local and attach it to an interface, it works fine.
                if [ $multicast -eq 1 ]; then
                        temp_result="$destination dev $interface"
                else
                        temp_result="$destination via $gateway dev $interface"
                fi

                if [ -n "$result" ]; then
                        result="$result:$temp_result"
                else
                        result="$temp_result"
                fi
        done

        echo "$result"
}

function modify_routes() {
        action=$1
        route_list="$2"

        IFS=:
        for route in $route_list; do
                unset IFS
                /sbin/ip route $action $route
                IFS=:
        done
        unset IFS
}

if [ "$reason" = "BOUND" -o "$reason" = "REBOOT" -o "$reason" = "REBIND" -o "$reason" = "RENEW" ]; then
        # Delete old routes, if they exist
        if [ -n "$old_classless_routes" ]; then
                modify_routes delete "$(parse_option_121 $old_classless_routes)"
        fi

        # Add new routes, if they exist...
        if [ -n "$new_classless_routes" ]; then
                modify_routes add "$(parse_option_121 $new_classless_routes)"
        fi
fi
</pre>
<p>We use <code class="filename">/etc/dhclient-exit-hooks</code> because the RHEL5 <code class="executable">dhclient-script</code> only calls the up-hooks script on <code class="bash">BOUND</code> and <code class="bash">REBOOT</code>, so if you change your static routes on the server, your client won’t pick them up until the box reboots or the interface is otherwise cycled.</p>
<p>The obvious problem here is that it’s always deleting the old routes and adding the new routes in two stages, a worthwhile enhancement for this script is to diff the old and new routes and determine which ones actually need to be removed/added.</p>
<p>So that will not do anything at first, because <code class="executable">dhclient</code> doesn’t actually read option 121 until you tell it to. For that, you need to edit <code class="filename">/etc/dhclient.conf</code>, and tell it how to handle option 121 in a way that the script above can understand:</p>
<pre class="brush: plain">#
# dhclient.conf
#

option classless-routes code 121 = array of unsigned integer 8;
request;
</pre>
<p>This tells <code class="executable">dhclient</code> to read all options, parse option 121 into an array of numeric bytes, and provide that array as a space-separated string as the <code class="bash">new_classless_routes</code> and <code class="bash">old_classless_routes</code> variables.</p>
<p>So now we’ve gotten all that taken care of, we need to start distributing routes from the DHCP server. For that, you need to update your <code class="filename">/etc/dhcpd.conf</code> file:</p>
<pre class="brush: plain">#
# dhcpd.conf
#

option classless-routes code 121 = array of unsigned integer 8;

subnet 10.23.1.0 netmask 255.255.255.0 {
        [...]
        # Routes for 10.23.0.0/16 via 10.23.1.1, and 224.0.0.0/4 (all IP multicast) via same
        option classless-routes 16,10,23,10,23,1,1,4,224,10,23,1,1
        [...]
}
</pre>
<p>You can also put that option into a host stanza if you’re doing that. Finally, as I’m using <a href="https://fedorahosted.org/cobbler">cobbler</a>, I wanted to be able to have the new “static-routes” interface option end up in my cobbler-managed DHCPd configuration. Here’s a bit of my template that puts that configuration option into the appropriate DHCP option:</p>
<pre class="brush: plain">#
# /etc/cobbler/dhcp.template
#

[...]

#for dhcp_tag in $dhcp_tags.keys()
group {
        #for mac in $dhcp_tags[$dhcp_tag].keys():
                #set iface = $dhcp_tags[$dhcp_tag][$mac]
                #if $iface.dns_name
        host $iface.dns_name {
                hardware ethernet $mac;
                        #if $iface.ip_address
                fixed-address $iface.dns_name;
                        #else
                ddns-hostname "${iface.dns_name.split('.')[0]}";
                        #end if
                        #if $iface.static_routes:
                                #set val121=""
                                #for routespec in $iface.static_routes:
                                        #set gateway=$routespec.split(':')[1]
                                        #set destcidr=$routespec.split(':')[0]
                                        #set destnet=$destcidr.split('/')[0]
                                        #set destmask=$destcidr.split('/')[1]
                                        #
                                        #if val121
                                                #set val121=$val121 + ",$destmask"
                                        #else
                                                #set val121=$destmask
                                        #end if
                                        #
                                        #if int($destmask) > 24
                                                #set val121=$val121 + "," + $destnet.replace('.', ',')
                                        #else if int($destmask) > 16
                                                #set val121=$val121 + "," + $destnet.split('.')[0] + "," + $destnet.split('.')[1] + "," + $destnet.split('.')[2]
                                        #else if int($destmask) > 8
                                                #set val121=$val121 + "," + $destnet.split('.')[0] + "," + $destnet.split('.')[1]
                                        #else
                                                #set val121=$val121 + "," + $destnet.split('.')[0]
                                        #end if
                                        #
                                        #set val121=$val121 + "," + $gateway.replace('.', ',')
                                #end for

                option classless-routes $val121
                        #end if
        }
                #end if
        #end for
}
</pre>
<p>Obviously, there are likely bugs in this script, and I’m only using it on a couple of boxes in my lab network, so feel free to point out any issues in the comments and I’ll update the above accordingly.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2009/07/17/distributing-static-routes-with-dhcp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My First JBOD, Part 2: Irony</title>
		<link>http://ignore-your.tv/2009/05/26/my-first-jbod-part-2-irony/</link>
		<comments>http://ignore-your.tv/2009/05/26/my-first-jbod-part-2-irony/#comments</comments>
		<pubDate>Tue, 26 May 2009 10:21:57 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[jbod]]></category>
		<category><![CDATA[my first jbod]]></category>
		<category><![CDATA[rhel]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=718</guid>
		<description><![CDATA[ After unpacking, racking, and mounting the JBOD, I waited until the weekend had started before powering down the server and installing the RAID card. Connected it all up, rebooted into the Adaptec BIOS, and configured the 6x 1TB drives into a RAID6 array. After that, I installed the RAID StorageManager off of Sun’s website, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/jcape/3566439854/" class="tt-flickr tt-flickr-Small" title="J4200"><img class="alignright" src="http://farm4.static.flickr.com/3358/3566439854_20b66eb4f9_m.jpg" alt="J4200" width="240" height="102" border="0" /></a> After unpacking, racking, and mounting the JBOD, I waited until the weekend had started before powering down the server and installing the RAID card. Connected it all up, rebooted into the Adaptec BIOS, and configured the 6x 1TB drives into a RAID6 array. After that, I installed the RAID StorageManager off of Sun’s website, and then the “Common Array Manager” software. CAM is supposed to provide a web GUI to an organization’s worth of Sun JBODs, so you can update JBOD firmware and query status and whatnot from a single interface. There’s client and server bits written in Java that run on the various boxes, so the data path was going to look like this:</p>
<p>JBOD -&gt; XEN dom0 running remote proxy tool -&gt; XEN domU running web GUI</p>
<p>I say “was going” and “supposed to” because all the remote proxy tool in CAM ended up doing was consistently triggering a <a href="https://bugzilla.redhat.com/show_bug.cgi?id=502396">kernel panic in the aacraid driver</a> whenever it’s detection code fired up.</p>
<p>Take a long drag off the irony of driver and firmware issues, and download the latest-n-greatest aacraid driver and firmware from Intel via Sun, and update. Same results. Repeat in various configurations, and before throwing in the towel, get a basic dump and file a bug. I didn’t put any more serious thought into debugging it simply because this whole thing has to be up and running yesterday, and the last time I asked for documentation on the topic, I was rebuffed with a variant of this classic: “If you were smart enough to debug the kernel, you wouldn’t need documentation on how to debug the kernel.”</p>
<p>Take a moment to stand in awe of the massive poisonous cobaggery involved in that statement being offered to someone who wants to help fix a crasher. I’ll wait.</p>
<p>That kind of shit would <em>never</em> fly in any GNOME venue, which is why GNOME kicks so much ass.</p>
<p><strong>Update:</strong> The cobaggery about kernel development did <em>not</em> come from Sun or any representative of any company involved in open-source, and was unrelated to this situation at all. I relate it simply as it pertains to debugging kernel issues, and why I don’t do it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2009/05/26/my-first-jbod-part-2-irony/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
