<?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>blog.sudosu.net &#187; Linux</title>
	<atom:link href="http://blog.sudosu.net/category/computers/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sudosu.net</link>
	<description>Got root?</description>
	<lastBuildDate>Mon, 21 Dec 2009 18:27:36 +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>Seamless SSH</title>
		<link>http://blog.sudosu.net/2008/seamless-ssh/</link>
		<comments>http://blog.sudosu.net/2008/seamless-ssh/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 18:59:10 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Shell Scripting]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/?p=269</guid>
		<description><![CDATA[I&#8217;m transitioning my daily work desktop from OS X Leopard to Kubuntu Hardy. (I&#8217;ll be writing more about that in the future.) My job is split between managing people and doing development and system administration for a bunch of Ubuntu boxes, so running the same platform that I&#8217;m administering makes a lot of sense. I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m transitioning my daily work desktop from OS X Leopard to Kubuntu Hardy. (I&#8217;ll be writing more about that in the future.) My job is split between managing people and doing development and system administration for a bunch of Ubuntu boxes, so running the same platform that I&#8217;m administering makes a lot of sense. I DO miss some of the fit-and-finish of OS X, though, and I haven&#8217;t completely transitioned over to Linux for everything.</p>
<p>Ssh-agent is a great program that lets you add the password to your SSH private key to memory, and then you don&#8217;t need to type in the ssh key passphrase every time. The basic usage is that you start BASH as a child of ssh-agent, and then use a program called ssh-add to prompt you for the password and store it in memory.</p>
<p>On OS X, there&#8217;s a GREAT program called SSHKeychain that handles this, storing the password in your OS X keychain, so it&#8217;s really seemless.</p>
<p>On Linux, you need to type in &#8220;ssh-add&#8221; manually every time you want to store the key, and after that your SSH sessions will be seamless.</p>
<p>However, I&#8217;m always forgetting to do that, and thus getting prompted for the password. Too many seams. I added the following code snippet to the end of my .bashrc file, and thus, every time I open a bash shell, it checks whether ssh-agent has any keys in memory. If it does, the shell starts as normal. If ssh-agent doesn&#8217;t have any keys in memory, it prompts you for the password. Simple, and as seamless as I can make it.</p>
<blockquote><p>## Add key to ssh-add if it has not been added.</p>
<p>ssh-add -l &amp;&gt; /dev/null<br />
SSHADDRESULT=$?<br />
if [ "$SSHADDRESULT" -ne "0" ]; then<br />
ssh-add<br />
fi</p></blockquote>
<p><strong>UPDATE 2008-07-02</strong>: Here&#8217;s a much more succinct way of writing that:</p>
<blockquote><p>ssh-add -l &amp;&gt;/dev/null || ssh-add</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2008/seamless-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Epiphany, and My Technical Goals</title>
		<link>http://blog.sudosu.net/2008/an-epiphany-and-my-technical-goals/</link>
		<comments>http://blog.sudosu.net/2008/an-epiphany-and-my-technical-goals/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 17:48:06 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Dakim]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2008/an-epiphany-and-my-technical-goals/</guid>
		<description><![CDATA[First, the epiphany &#8212; despite all the fires, and multiple top priorities, and projects, and all the other fireballs of stress that scream over my desk &#8212; there is nothing I can do for Dakim that&#8217;s more important than hiring. Over the next two years, I&#8217;m probably going to add significant headcount to my department [...]]]></description>
			<content:encoded><![CDATA[<p>First, the epiphany &#8212; despite all the fires, and multiple top priorities, and projects, and all the other fireballs of stress that scream over my desk &#8212; there is nothing I can do for Dakim that&#8217;s more important than hiring. Over the next two years, I&#8217;m probably going to add significant headcount to my department &#8212; and nothing is more important than making sure I have the right people when I need them. (With strong emphasis on RIGHT. We&#8217;re looking for rockstars.)</p>
<p>I need to start going to conventions, user group meetings, etc. &#8212; immediately I&#8217;m going to start attending the Los Angeles Linux User Group meetings and the local Python SIG. I&#8217;m not sure what else I&#8217;m going to do, but it&#8217;s becoming obvious that I don&#8217;t scale &#8212; that the long-term solution is NOT for me to increase my skills, as I&#8217;ve been doing, but to hire people who have the skills.</p>
<p>That said, in the short term, it&#8217;s clear that there&#8217;s three technical areas where I must improve my skills:</p>
<ol>
<li>I need to be a world-class guru in apt-based package management.</li>
<li>I need to greatly improve my skills at low-level TCP/IP issues &#8212; packet captures, diagnosis of networking problems, etc.</li>
<li>I need to greatly improve my skills at dealing the Linux kernel, on all levels &#8212; compiling, kernel options, loadable modules &amp; drivers, etc.</li>
</ol>
<p>I guess it&#8217;s good to have a clear vision of where I need to go. Now I need to get there.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2008/an-epiphany-and-my-technical-goals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing The Launch Of SPBS &#8212; the Simplest Possible Blogging System</title>
		<link>http://blog.sudosu.net/2008/announcing-the-launch-of-spbs-the-simplest-possible-blogging-system/</link>
		<comments>http://blog.sudosu.net/2008/announcing-the-launch-of-spbs-the-simplest-possible-blogging-system/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 07:24:27 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[John Mark Schofield Meta]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2008/announcing-the-launch-of-spbs-the-simplest-possible-blogging-system/</guid>
		<description><![CDATA[And by &#8220;Launch,&#8221; I mean &#8220;I&#8217;m starting to write it.&#8221; There&#8217;s a long way between that and a completed program. But you can check my progress at SPBS&#8217; Google Code site: http://code.google.com/p/spbs/
I&#8217;ve written an introduction to SPBS, and the reasons I&#8217;m writing it here, at http://code.google.com/p/spbs/wiki/SPBSIntroduction
]]></description>
			<content:encoded><![CDATA[<p>And by &#8220;Launch,&#8221; I mean &#8220;I&#8217;m starting to write it.&#8221; There&#8217;s a long way between that and a completed program. But you can check my progress at SPBS&#8217; Google Code site: <a href="http://code.google.com/p/spbs/" target="_blank">http://code.google.com/p/spbs/</a></p>
<p>I&#8217;ve written an introduction to SPBS, and the reasons I&#8217;m writing it here, at <a href="http://code.google.com/p/spbs/wiki/SPBSIntroduction" target="_blank">http://code.google.com/p/spbs/wiki/SPBSIntroduction</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2008/announcing-the-launch-of-spbs-the-simplest-possible-blogging-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Correction to Ubuntu Geek&#8217;s &#8220;How To Check Your External IP Address From The Command Line&#8221;</title>
		<link>http://blog.sudosu.net/2007/correction-to-ubuntu-geeks-how-to-check-your-external-ip-address-from-the-command-line/</link>
		<comments>http://blog.sudosu.net/2007/correction-to-ubuntu-geeks-how-to-check-your-external-ip-address-from-the-command-line/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 02:20:26 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Shell Scripting]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2007/correction-to-ubuntu-geeks-how-to-check-your-external-ip-address-from-the-command-line/</guid>
		<description><![CDATA[I follow the Ubuntu Geek blog, and have found some very useful tips there. However, there&#8217;s a problem with their latest tip, &#8220;Howto Check you (sic) external IP Address from the command line.&#8221;
Some background: There&#8217;s a very useful website located at whatismyip.com, which reports the IP you used to connect to the site. If you&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>I follow the <a href="http://www.ubuntugeek.com/" target="_blank">Ubuntu Geek</a> blog, and have found some very useful tips there. However, there&#8217;s a problem with their latest tip, &#8220;<a href="http://www.ubuntugeek.com/howto-check-you-external-ip-address-from-the-command-line.html" target="_blank">Howto Check you (sic) external IP Address from the command line</a>.&#8221;</p>
<p>Some background: There&#8217;s a very useful website located at <a href="http://whatismyip.com" target="_blank">whatismyip.com</a>, which reports the IP you used to connect to the site. If you&#8217;re on a computer behind a router which does NAT (<a href="http://en.wikipedia.org/wiki/Network_address_translation" target="_blank">Network Address Translation</a>), you can&#8217;t find out what your external IP is by issuing commands on the computer. Your computer&#8217;s address is (for instance) 192.168.1.5, but when traffic reaches the router, the router translates (with NAT) your address to an external IP address, such as 34.23.64.9 (an IP address I just made up).</p>
<p>WhatIsMyIP.com (and other sites like it) sprang up to  fill that void, and give you a simple way of finding out what external IP address you&#8217;re using.</p>
<p>Ubuntu Geek&#8217;s script fetches the whatismyip.com page with wget, parses it to find the IP address, and prints the IP address.</p>
<p>I tried it on my OS X box, and it didn&#8217;t work, because wget isn&#8217;t installed on OS X &#8212; but curl, a similar tool, is.</p>
<p>So I started modifying the script to use curl &#8212; and discovered an interesting comment in the source code to whatismyip.com&#8217;s page:</p>
<blockquote><p> &lt;!&#8211;Please set your code to scrape your IP from www.whatismyip.com/automation/n09230945.asp Please set your code to hit this page at a REASONABLE pace.  For more info, please see our &#8220;What&#8217;s New&#8221; page.&#8211;&gt;</p></blockquote>
<p>Hitting that link gets you just your IP address, which has two benefits over Ubuntu Geek&#8217;s implementation &#8212; it means you have no parsing to do, and it gives a SIGNIFICANTLY lower load to WhatIsMyIP&#8217;s servers. (It&#8217;s rude to slam someone else&#8217;s servers with an automated script &#8212; even though a script that simply fetches a web page once doesn&#8217;t slam a server, 10,000 people running that script would.)</p>
<p>Here&#8217;s my take on Ubuntu Geek&#8217;s BASH script:</p>
<blockquote><p>#!/bin/bash</p>
<p>echo -n &#8220;Your external IP Address is: &#8221;<br />
curl http://www.whatismyip.com/automation/n09230945.asp<br />
echo &#8220;.&#8221;</p></blockquote>
<p>For comparison&#8217;s here&#8217;s Ubuntu Geek&#8217;s original script:</p>
<blockquote><p>#!/bin/bash</p>
<p>echo Your external IP Address is:<br />
wget http://Www.whatismyip.com -O &#8211; -o /dev/null | \<br />
grep &#8216;&lt;TITLE&gt;&#8217; | sed -r &#8217;s/&lt;TITLE&gt;WhatIsMyIP\.com \- //g&#8217; | \<br />
sed -r &#8217;s/&lt;\/TITLE&gt;//g&#8217;<br />
exit 0</p></blockquote>
<p>Moral of the story? Always look for a simpler way of doing things.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2007/correction-to-ubuntu-geeks-how-to-check-your-external-ip-address-from-the-command-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Weak Defense: Breakins at CIHost.com</title>
		<link>http://blog.sudosu.net/2007/a-weak-defense-breakins-at-cihostcom/</link>
		<comments>http://blog.sudosu.net/2007/a-weak-defense-breakins-at-cihostcom/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 01:58:39 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2007/a-weak-defense-breakins-at-cihostcom/</guid>
		<description><![CDATA[Here&#8217;s a reason to think twice about your colocation provider: CIHost.com has been broken into four times over the past two years, and had servers and equipment stolen. Their Chief Corporate Counsel, James Eckels, says the robbers &#8220;Knew what they&#8217;re doing,&#8221; and that their facility is &#8220;in a bad part of town.&#8221;
There&#8217;s very little payoff [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a reason to think twice about your colocation provider: <a href="http://www.thewhir.com/features/110607_C_I_Host_Responds_to_Robbery_Reports.cfm" target="_blank">CIHost.com has been broken into four times over the past two years</a>, and had servers and equipment stolen. Their Chief Corporate Counsel, James Eckels, says the robbers &#8220;Knew what they&#8217;re doing,&#8221; and that their facility is &#8220;in a bad part of town.&#8221;</p>
<p>There&#8217;s very little payoff in stealing 20 servers (the amount stolen in the recent robbery) for the hardware value &#8212; this is most likely about stealing the DATA on the servers. Most people in the market for rackmount servers wouldn&#8217;t buy them off trucks, and so you&#8217;ve got a crime with serious time and very little payoff if they were stealing hardware.  <a href="http://www.matasano.com/log/991/old-fashioned-data-theft/" target="_blank">I wonder how much valuable data (including credit card numbers) was stored on those boxes?</a></p>
<p>Eckels took umbrage at  reports that their facility had been robbed four times in the last two years:</p>
<blockquote><p>One of the biggest mistakes is that people are talking about four robberies. A robbery means than property has been seized through violence or intimidation. C I Host has technically only been robbed twice in two years. The other two were break-ins where things were stolen, but not robberies.&#8221;</p></blockquote>
<p>Umm. That doesn&#8217;t exactly make me feel better. Although the facility&#8217;s staff probably prefer the burglaries &#8212; their night manager was repeatedly tasered and &#8220;struck with a blunt instrument&#8221; during the most recent robbery.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2007/a-weak-defense-breakins-at-cihostcom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setuid &amp; Chown interaction that almost put me in the fetal position, whimpering</title>
		<link>http://blog.sudosu.net/2007/setuid-chown-interaction-that-almost-put-me-in-the-fetal-position-whimpering/</link>
		<comments>http://blog.sudosu.net/2007/setuid-chown-interaction-that-almost-put-me-in-the-fetal-position-whimpering/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 05:43:55 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Shell Scripting]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2007/setuid-chown-interaction-that-almost-put-me-in-the-fetal-position-whimpering/</guid>
		<description><![CDATA[I&#8217;m putting together a postinst (post installation) script for a Debian package I created for work. And there&#8217;s a little C program in there that needs to run as root, but be called by a regular user.
Well, there&#8217;s a standard way of doing that in Linux/Unix, called setuid. You set the &#8220;setuid bit&#8221; to on, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m putting together a postinst (post installation) script for a Debian package I created for work. And there&#8217;s a little C program in there that needs to run as root, but be called by a regular user.</p>
<p>Well, there&#8217;s a standard way of doing that in Linux/Unix, called setuid. You set the &#8220;setuid bit&#8221; to on, and the program will run as the owner of the program. So, since it&#8217;s owned by root, a regular user can run a particular program, and have that program run with the permissions that root has. Very handy.</p>
<p>But I couldn&#8217;t figure out why the program was not being installed setuid root. I could see in the postinst script that the command was valid. I could cut-and-paste the chmod line (that set the setuid bit) from the script to the command-line, run it, and it worked perfectly. And there weren&#8217;t any other commands in the postinst script that affected permissions (the setuid bit is a permission bit) for that file.</p>
<p>However, there WAS a chown command later in the script. (It started in a parent directory and recursed into the directory with the C program I was dealing with.) Eventually, I narrowed it down to that chown line, and once I saw chown was the cause, I guess it sort of made sense.  I was able to reproduce the problem by chowning a file after setting the setuid bit.</p>
<p>I guess from a security standpoint, you could do a lot of stupid things by setting the setuid bit (making a program operate as the owner of the program) and then changing the owner. So, to prevent you from shooting yourself in the foot, changing ownership of a file unsets the setuid bit.</p>
<p>Still, this seems somewhat counter to the philosophy of Unix &#8212; first, to not do unexpected things, and second, to give users approximately an order of magnitude more rope than they&#8217;d need to hang themselves. I can&#8217;t think of many other commands that silently prevent you from doing something that MAY be stupid. Unix usually assumes that you know what you&#8217;re doing &#8212; even to the point that you can enter a command to delete every file on your hard drive, and Unix will happily delete all your files without asking for confirmation. The fact that chown has this behavior was NOT obvious to me.</p>
<p>(This is a highly technical rant, and I&#8217;m writing it late at night after coding for a while &#8212; if it doesn&#8217;t make any sense, it&#8217;s probably me, not you.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2007/setuid-chown-interaction-that-almost-put-me-in-the-fetal-position-whimpering/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Yet another xkcd comic, related to the title of this site</title>
		<link>http://blog.sudosu.net/2007/yet-another-xkcd-comic-related-to-the-title-of-this-site/</link>
		<comments>http://blog.sudosu.net/2007/yet-another-xkcd-comic-related-to-the-title-of-this-site/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 19:13:44 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sudosu.net Meta]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2007/yet-another-xkcd-comic-related-to-the-title-of-this-site/</guid>
		<description><![CDATA[
(As it turns out, xkcd doesn&#8217;t mind when you use their content in a blog. See &#8220;Can we print xkcd in our magazine/newspaper/other publication?&#8220;)
]]></description>
			<content:encoded><![CDATA[<p><a href="http://xkcd.com/149/" target="_blank"><img src="http://imgs.xkcd.com/comics/sandwich.png" /></a></p>
<p>(As it turns out, xkcd doesn&#8217;t mind when you use their content in a blog. See &#8220;<a href="http://xkcd.com/about/" title="xjcd faq" target="_blank">Can we print xkcd in our magazine/newspaper/other publication?</a>&#8220;)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2007/yet-another-xkcd-comic-related-to-the-title-of-this-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Terminally Incoherent&#8217;s &#8220;Linux Fuckup Of The Day&#8221; &#8212; Using Single-User Mode To Recover</title>
		<link>http://blog.sudosu.net/2007/terminally-incoherents-linux-fuckup-of-the-day-using-single-user-mode-to-recover/</link>
		<comments>http://blog.sudosu.net/2007/terminally-incoherents-linux-fuckup-of-the-day-using-single-user-mode-to-recover/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 19:34:45 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2007/terminally-incoherents-linux-fuckup-of-the-day-using-single-user-mode-to-recover/</guid>
		<description><![CDATA[From Terminally Incoherent:
Yep. I just removed myself from all the groups except for vboxusers. Brilliant! I absolutely hate when I do stupid shit like that. It’s not like this was hard to fix &#8211; I just didn’t remember of the top of my head what groups I was supposed to belong to. Of course since [...]]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://www.terminally-incoherent.com/blog/2007/06/25/linux-fuckup-of-the-day/" title="Terminally Incoherent's Linux Fuckup Of The Day" target="_blank">Terminally Incoherent</a>:</p>
<blockquote><p>Yep. I just removed myself from all the groups except for <em>vboxusers</em>. Brilliant! I absolutely hate when I do stupid shit like that. It’s not like this was hard to fix &#8211; I just didn’t remember of the top of my head what groups I was supposed to belong to. Of course since I was no longer part of the <em>sudo</em> and <em>admin</em> groups I could no longer <kbd>sudo</kbd>. Luckily enough, back in the day I decided to enable the root password. So I was able to <kbd>su</kbd> to become root, and then usermod myself to <em>admin</em>, and bunch of other groups I needed like audio, video, tty, lp and etc… I wonder what would happen if I did this on a default Ubuntu box without root account. I wonder if I would be able to recover from this that easily.</p></blockquote>
<p>The short answer is &#8220;Yes, you would.&#8221; Single User Mode is your friend.</p>
<p>At bootup, hit ESC to get into the Grub menu, and select recovery mode. If you haven&#8217;t entered a root password, recovery mode will dump you to the console as root. If you HAVE defined a root password, recovery mode will dump to a login prompt, where you&#8217;ll have to enter the password.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2007/terminally-incoherents-linux-fuckup-of-the-day-using-single-user-mode-to-recover/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Remove All Subversion Folders From A Directory Tree</title>
		<link>http://blog.sudosu.net/2007/how-to-remove-all-subversion-folders-from-a-directory-tree/</link>
		<comments>http://blog.sudosu.net/2007/how-to-remove-all-subversion-folders-from-a-directory-tree/#comments</comments>
		<pubDate>Sat, 23 Jun 2007 22:20:10 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Shell Scripting]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2007/how-to-remove-all-subversion-folders-from-a-directory-tree/</guid>
		<description><![CDATA[Say you&#8217;ve got a Subversion source code tree checked out, and for whatever reason you want to remove all Subversion directories inside that tree. (The thing that makes a Subversion tree a Subversion tree is the presence of a &#8220;.svn&#8221; folder in every folder of the tree. If you had a complicated source tree with [...]]]></description>
			<content:encoded><![CDATA[<p>Say you&#8217;ve got a <a href="http://subversion.tigris.org/" title="Subversion Version Control System" target="_blank">Subversion</a> source code tree checked out, and for whatever reason you want to remove all Subversion directories inside that tree. (The thing that makes a Subversion tree a Subversion tree is the presence of a &#8220;.svn&#8221; folder in every folder of the tree. If you had a complicated source tree with lots of subdirectories, it would take you forever to remove each one.)</p>
<p>You can remove all &#8220;.svn&#8221; directories starting below &#8220;~/svn/exampleproject&#8221; &#8212; change this to suit your system &#8212; with the following command:</p>
<blockquote><p>find ~/svn/exampleproject -name &#8220;\.svn&#8221; -exec rm -rf  {} \;</p></blockquote>
<p>To make sure that the above command is going to do what  you want it to do, you may want to first generate a list of what it will delete (I highly recommend it).</p>
<blockquote><p>find ~/svn/exampleproject -name &#8220;\.svn&#8221; -exec echo &#8220;rm -rf  {}&#8221;  \;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2007/how-to-remove-all-subversion-folders-from-a-directory-tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Workflow: TextMate, Subversion, and Python</title>
		<link>http://blog.sudosu.net/2007/my-workflow-textmate-subversion-and-python/</link>
		<comments>http://blog.sudosu.net/2007/my-workflow-textmate-subversion-and-python/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 01:33:49 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Macintosh Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2007/my-workflow-textmate-subversion-and-python/</guid>
		<description><![CDATA[I&#8217;m focusing in on some very important parts of my workflow. Version control is Subversion. I&#8217;m most of the way through the book on it.
Text editing is TextMate. I was trying to use vim, because it&#8217;s one editor I can use both on my OS X desktop and SSH&#8217;d across the network to linux boxes. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m focusing in on some very important parts of my workflow. Version control is Subversion. I&#8217;m most of the way through the book on it.</p>
<p>Text editing is TextMate. I was trying to use vim, because it&#8217;s one editor I can use both on my OS X desktop and SSH&#8217;d across the network to linux boxes. I will continue to use vim remotely &#8212; though I may look at emacs as well. But for local editing, it&#8217;s TextMate for sure. Its functionality when dealing with large source code files and trees with many different files is impressive &#8212; I can see myself working significantly more efficiently with TextMate.</p>
<p>I&#8217;m used to working on the command-line with Subversion, but TextMate integrates with it, so I can commit changes by hotkey, etc.</p>
<p>And Python is rapidly becoming my system administration language of choice. All of this seems to fit together really well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2007/my-workflow-textmate-subversion-and-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Is Dreamhost Not Talking About Grids?</title>
		<link>http://blog.sudosu.net/2006/why-isnt-dreamhost-doing-this/</link>
		<comments>http://blog.sudosu.net/2006/why-isnt-dreamhost-doing-this/#comments</comments>
		<pubDate>Sat, 14 Oct 2006 23:34:50 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sudosu.net Meta]]></category>
		<category><![CDATA[Web Hosting]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2006/why-isnt-dreamhost-doing-this/</guid>
		<description><![CDATA[Media Temple is talking about a new service called Grid-Server (via). It&#8217;s not available yet, but it&#8217;s supposed to be coming this month.
I have no experience with Media Temple. But Grid-Server seems like one of the brilliant ideas that are obvious once someone else invents them. Oh sure, other people have done redundant web hosting [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mediatemple.net/" target="_blank">Media Temple</a> is talking about a new service called <a href="http://www.mediatemple.net/company/whatsnew/gsgridserver.php" target="_blank">Grid-Server</a> (<a href="http://paulstamatiou.com/2006/10/10/media-temples-grid-server-coming-next-weekish/" target="_blank">via</a>). It&#8217;s not available yet, but it&#8217;s supposed to be coming this month.</p>
<p>I have no experience with Media Temple. But Grid-Server seems like one of the brilliant ideas that are obvious once someone else invents them. Oh sure, other people have done redundant web hosting before. Thousands of little guys plus Google, Amazon, Yahoo, MySpace, etc. are dividing web-hosting duties between many computers such that if one goes, down, the others can keep the website running.</p>
<p>But no commercial webhosting company I&#8217;m aware of currently offers grid-based hosting.  This leads to outages and slowness for clients. <a href="http://dreamhost.com/" target="_blank">DreamHost</a> has had a number of recent problems. To their credit, they are quite open and honest about what <a href="http://blog.dreamhost.com/2006/08/01/anatomy-of-an-ongoing-disaster/" target="_blank">went</a> <a href="http://blog.dreamhost.com/2006/09/19/anatomy-of-a-disaster-part-2/" target="_blank">wrong</a>. But there&#8217;s also a constant parade of announcements of servers going down for 10 minutes here, 10 minutes there for <a href="http://www.dreamhoststatus.com/2006/10/09/ram-upgrades-2/" target="_blank">RAM upgrades</a>, <a href="http://www.dreamhoststatus.com/2006/10/06/problem-with-aviation-server/" target="_blank">hardware replacements</a>, etc.</p>
<p>There is NO REASON I can think of why my website, even at DreamHost&#8217;s low prices, should be dependent on <a href="http://www.dreamhoststatus.com/2006/10/07/database-server-odie-hardware-troubles/" target="_blank">ONE database server</a>, <a href="http://www.dreamhoststatus.com/2006/10/10/tequila-being-moved-to-new-hardware/" target="_blank">ONE web server</a>, and <a href="http://www.dreamhoststatus.com/2006/09/30/quick-battery-swap-in-a-file-server/" target="_blank">ONE file server</a>. Any one of them goes down; my website goes down.</p>
<p>Creating a grid of dozens of computers, each of which can shuffle around websites to balance load or handle failures is not an easy task. It would take me loads of research before I was even ready to begin that sort of project, and I&#8217;d have to hire a team of people to do it. It&#8217;s a big deal.</p>
<p>On the other hand, it&#8217;s been proven that this sort of thing is possible. It&#8217;s not like we need basic research or feasibility studies. You can hire people who know how to do this if you&#8217;re willing to pay for it.</p>
<p>It&#8217;s not like this should be a tough decision for DreamHost. One of the primary benefits of this technology is to eliminate <a href="http://blog.dreamhost.com/2006/05/18/the-truth-about-overselling/" target="_blank">problems with over- and under-selling</a>. The host has a pool of resources that can be grown incrementally, as resource use grows, without worrying about the growth rates of individual sites.</p>
<p>Sites have fewer worries about going down, both from the Slashdot / Digg effect, and from hardware failure or misconfiguration at the hosting company.</p>
<p>So why isn&#8217;t DreamHost doing this? My hope is that they&#8217;re already working on it &#8212; but I wish they&#8217;d let us know.</p>
<p>UPDATE June 9, 2007: This site is now hosted at <a href="http://nearlyfreespeech.net" title="Sudosu.net's web host, NearlyFreeSpeech.net" target="_blank">NearlyFreeSpeech.net</a>. So far, I love them. (An unfortunate truism of web hosting is that all hosts are great until they start to suck.) I&#8217;ve eventually been disappointed with every host I&#8217;ve tried. I host both personal and business websites; so far, <a href="http://pair.com" title="A web host John Mark Schofield likes, Pair.com" target="_blank">pair.com</a> and nearlyfreespeech.net are the only hosts on my &#8220;not sucking yet&#8221; list.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2006/why-isnt-dreamhost-doing-this/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resolving a Very Uninformative Debootstrap Error Message</title>
		<link>http://blog.sudosu.net/2006/resolving-a-very-uninformative-debootstrap-error-message/</link>
		<comments>http://blog.sudosu.net/2006/resolving-a-very-uninformative-debootstrap-error-message/#comments</comments>
		<pubDate>Mon, 22 May 2006 20:02:52 +0000</pubDate>
		<dc:creator>schof</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.sudosu.net/2006/resolving-a-very-uninformative-debootstrap-error-message/</guid>
		<description><![CDATA[So I&#8217;m trying to do an install with debootstrap onto a virgin partition. From my custom Ubuntu-based distribution. And I get the following error message:
E: Couldn't find these debs: 33024830
The error code itself is not Googleable, because it apparently changes for each install. (I got several different codes during the course of my troubleshooting.) Google [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;m trying to do an install with debootstrap onto a virgin partition. From my custom Ubuntu-based distribution. And I get the following error message:</p>
<pre>E: Couldn't find these debs: 33024830</pre>
<p>The error code itself is <strong>not</strong> Googleable, because it apparently changes for each install. (I got several different codes during the course of my troubleshooting.) Google got me <a href="http://wiki.xensource.com/xenwiki/DebianDomU" target="_blank">here</a>, where I learned that the &#8211;resolve-deps option was the secret. Appears to be working &#8212; at least, I&#8217;m much farther along in the process without failing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sudosu.net/2006/resolving-a-very-uninformative-debootstrap-error-message/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

