<?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>/var/log/jamescape &#187; administrativa</title>
	<atom:link href="http://ignore-your.tv/tag/administrativa/feed/" rel="self" type="application/rss+xml" />
	<link>http://ignore-your.tv</link>
	<description>Living Without Privacy</description>
	<lastBuildDate>Tue, 27 Jul 2010 04:35:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Zenoss Swap Threshold Fixes</title>
		<link>http://ignore-your.tv/2010/05/17/zenoss-swap-threshold-fixes/</link>
		<comments>http://ignore-your.tv/2010/05/17/zenoss-swap-threshold-fixes/#comments</comments>
		<pubDate>Mon, 17 May 2010 22:08:08 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[zenoss]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=23158</guid>
		<description><![CDATA[One of the recurring problems I have with Zenoss is fixing the swap threshold issue. Basically, if your swap space is less than 1G, you’re stuck with an alarm informing you that there’s less than 1G of swap total. The options are to hack it to increase the threshold (by decreasing the minimum-free threshold), or [...]]]></description>
			<content:encoded><![CDATA[<p>One of the recurring problems I have with Zenoss is fixing the swap threshold issue. Basically, if your swap space is less than 1G, you’re stuck with an alarm informing you that there’s less than 1G of swap total. The options are to hack it to increase the threshold (by decreasing the minimum-free threshold), or to <a href="http://community.zenoss.org/message/43041">make the alert use a percentage of the total</a>.</p>
<p>Posting it here since it’s the second time I’ve had to find this…</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2010/05/17/zenoss-swap-threshold-fixes/feed/</wfw:commentRss>
		<slash:comments>0</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>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>
		<item>
		<title>My First JBOD: Introduction</title>
		<link>http://ignore-your.tv/2009/05/23/my-first-jbod-introduction/</link>
		<comments>http://ignore-your.tv/2009/05/23/my-first-jbod-introduction/#comments</comments>
		<pubDate>Sat, 23 May 2009 19:15:14 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[jbod]]></category>
		<category><![CDATA[linux]]></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=710</guid>
		<description><![CDATA[This is me setting up a JBOD for use by one or more XEN hosts, using professional hardware. It’s not a hack, not throwing a shitload of drives into a PC with some “prosumer” SATA RAID cards that require you spend weeks fussing with drivers and firmware to get even a minimal write performance out [...]]]></description>
			<content:encoded><![CDATA[<p>This is me setting up a JBOD for use by one or more XEN hosts, using professional hardware. It’s not a hack, not throwing a shitload of drives into a PC with some “prosumer” SATA RAID cards that require you spend weeks fussing with drivers and firmware to get even a minimal write performance out of their underpowered hardware RAID.</p>
<p>A former roommate of mine once setup such a beast using a 12-port SATA card which ended up delivering a whopping 1 MBps of write speed in a RAID 5 configuration. I simply don’t have time to play around like that these days, so this is me trading capital for time.</p>
<p>The host machine is a Sun Fire X4200M2 server with an internal RAID10, running a RHEL 5.3 XEN installation. None of the services currently running on this box are critical, which means I can take them down for an hour at the end of the day without trouble, provided I can get them back up again. I also have the (Memorial Day) weekend to get the new JBOD up and running on this box.</p>
<p>After it’s up, however, I will be hosting important business-ey things on various virtual machines using this JBOD: e-mail, website(s), internal wiki, NAS, along with primary kerberos, LDAP, cobbler, puppet on the internal RAID; so it’s fairly important that this get up and working, and be stable once it’s going…</p>
<p>The JBOD itself is a Sun StorageTek J4200 array with a single IO module and a PCIe SAS RAID card, running 6x 1TB SATA disks in (eventually) a RAID6 array. I’d like to play around with interesting things like redundant SATA multipathing, but I’m pretty new to the whole storage admin area, so I’m not going to be playing around with those things on *this* setup…</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2009/05/23/my-first-jbod-introduction/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Books</title>
		<link>http://ignore-your.tv/2008/11/30/new-books/</link>
		<comments>http://ignore-your.tv/2008/11/30/new-books/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 22:02:04 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[book reviews]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[markets]]></category>
		<category><![CDATA[networking]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=641</guid>
		<description><![CDATA[Latest on the “done” pile are Rule The Freakin’ Markets and IS-IS Network Design Solutions. Summaries/reviews of both are up.
]]></description>
			<content:encoded><![CDATA[<p>Latest on the “done” pile are <a href="/library/michael-parness/rule-the-freakin-markets/">Rule The Freakin’ Markets</a> and <a href="/library/abe-martey/is-is-network-design-solutions/">IS-IS Network Design Solutions</a>. Summaries/reviews of both are up.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2008/11/30/new-books/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daemonizing Processes</title>
		<link>http://ignore-your.tv/2008/10/16/daemonizing-processes/</link>
		<comments>http://ignore-your.tv/2008/10/16/daemonizing-processes/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 23:34:50 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=486</guid>
		<description><![CDATA[Update: Commenters have pointed out a few things:

This post is incomplete/incorrect. What I’m doing now is having the daemon function call a script that looks like this:
#!/bin/bash
exec 1&#62;&#38;-
exec 2&#62;&#38;-
exec 3&#62;&#38;-
nohup myPropApp &#038; 2&#62;&#38;1 &#62; thelog.txt
 That code was from another website who’s URL I lost, and I posted the solution below based on another, alternate [...]]]></description>
			<content:encoded><![CDATA[<p><em>Update:</em> Commenters have pointed out a few things:
<ol>
<li>This post is incomplete/incorrect. What I’m doing now is having the <code>daemon</code> function call a script that looks like this:
<pre>#!/bin/bash
exec 1&gt;&amp;-
exec 2&gt;&amp;-
exec 3&gt;&amp;-
nohup myPropApp &#038; 2&gt;&amp;1 &gt; thelog.txt</pre>
<p> That code was from another website who’s URL I lost, and I posted the solution below based on another, alternate method that I hadn’t tried but sounded simpler.</li>
<li>There are other options, like <code><a href="http://www.clapper.org/software/daemonize/">daemonize(1)</a></code>, <code><a href="http://www.cyberciti.biz/tips/howto-runs-linux-unix-program-in-newsession.html">setsid(1)</a></code>, and the bash builtin <code>disown</code> (which I had prematurely rejected as ksh-only).</li>
</ol>
<p>Back when I was using Debian, one of the nicer things about it was their helper tool for startup scripts: <code>start-stop-daemon</code>. Particularly, it’s ability to daemonize any process with the <code>-b</code> flag. You notice how handy things like that end up being when you’ve got an in-house or otherwise proprietary app that can’t daemonize itself properly (e.g. Java-based services).</p>
<p>Somehow I’ve managed to get away with not having to write a script that daemonizes a normally-foreground process on an RH-based distribution yet, mainly because I’ve been using Debian almost exclusively for servers, and have only worked for tiny startups, where luxuries like init scripts are the last thing on anyones’ minds.</p>
<p>Everyone is familiar with the <code>nohup &#038;</code> trick, but that still leaves it associated to a terminal, so after you log out, your terminal/ssh session will just hang because stdin is still open. As it turns out, you can <a href="http://sial.org/howto/shell/background/">close your standard in from bash</a> first by redirecting your standard input from nil (e.g. <code>someapp &lt;&amp;-</code>), and that will let it just work.</p>
<p>Very sweet for writing initscripts.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2008/10/16/daemonizing-processes/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>More Help Wanted</title>
		<link>http://ignore-your.tv/2008/07/04/more-help-wanted/</link>
		<comments>http://ignore-your.tv/2008/07/04/more-help-wanted/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 02:02:38 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[washington]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=400</guid>
		<description><![CDATA[As it turns out I have need for another Systems Administrator, this time in Washington, DC. This job is for a local administrator to handle the day-to-day support and activities in the Washington office (complete with AD domain, Asterisk server, NAS, and a dozen users), as well as the four branch locations in the DC [...]]]></description>
			<content:encoded><![CDATA[<p>As it turns out I have need for another Systems Administrator, this time in Washington, DC. This job is for a local administrator to handle the day-to-day support and activities in the Washington office (complete with AD domain, Asterisk server, NAS, and a dozen users), as well as the four branch locations in the DC Metro area and (future) datacenter while working together via IM, mail, and phone with the existing tech team in Chicago to plan and implement improvements, and resolve problems. The technological environment is 80% Windows, but the remaining 20% is RHEL5; the branch locations are 100% RHEL5.</p>
<p>So, the requirements are Linux and Windows desktop support, a desire to teach yourself Asterisk, Windows domains, and Cisco networking, and the ability to pass a Federal security check. Experience with open-source web software and Apache (e.g. Wordpress, Joomla!, etc.) is great, but not required.</p>
<p>As before, <a href="mailto:jcape@ignore-your.tv">send your resumé to me</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2008/07/04/more-help-wanted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Help Wanted</title>
		<link>http://ignore-your.tv/2008/06/22/help-wanted/</link>
		<comments>http://ignore-your.tv/2008/06/22/help-wanted/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 04:35:31 +0000</pubDate>
		<dc:creator>James Cape</dc:creator>
				<category><![CDATA[PlanetGNOME Syndication]]></category>
		<category><![CDATA[administrativa]]></category>
		<category><![CDATA[chicago]]></category>
		<category><![CDATA[help wanted]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://ignore-your.tv/?p=399</guid>
		<description><![CDATA[I’m looking to hire a Linux Administrator in for a position in downtown Chicago. It’s a high-demand, high-stress environment with lots of things going on at any one time: We play with high-end sun servers on an international private network, use Amazon EC2, and have a slew of Asterisk servers forming the joints of a [...]]]></description>
			<content:encoded><![CDATA[<p>I’m looking to hire a Linux Administrator in for a position in downtown Chicago. It’s a high-demand, high-stress environment with lots of things going on at any one time: We play with high-end sun servers on an international private network, use Amazon EC2, and have a slew of Asterisk servers forming the joints of a wide-area VoIP infrastructure. Success and failure is often measured in terms of milliseconds. On the downside, we also do Windows, must support the desktop users (most desktops are Linux, though), and the company isn’t large enough to justify a division of labor yet.</p>
<p>You must be familiar with remote administration techniques, MySQL, apache, VCS, RPM-based distributions, (the basics). Familiarity with bind, dhcpd, ddns, and basic networking is also recommended (at the very least you should be able to figure it out without handholding).</p>
<p>If this still sounds like something you’d like to participate in, send your resume to me and I’ll forward it on to our HR people for processing. Act today and you’ll get your very own number!</p>
]]></content:encoded>
			<wfw:commentRss>http://ignore-your.tv/2008/06/22/help-wanted/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
