<?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>Push cx &#187; system administration</title>
	<atom:link href="http://push.cx/tag/system-administration/feed" rel="self" type="application/rss+xml" />
	<link>http://push.cx</link>
	<description>A traveling geek&#039;s blog on development, games, and the web</description>
	<lastBuildDate>Fri, 14 Oct 2011 10:24:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Functional Package Management</title>
		<link>http://push.cx/2008/functional-package-management</link>
		<comments>http://push.cx/2008/functional-package-management#comments</comments>
		<pubDate>Wed, 16 Apr 2008 12:17:25 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[nix]]></category>
		<category><![CDATA[nixos]]></category>
		<category><![CDATA[system administration]]></category>

		<guid isPermaLink="false">http://push.cx/?p=306</guid>
		<description><![CDATA[I just read a great paper about NixOS, a Linux distribution with a &#8220;purely functional&#8221; package manager. I&#8217;ve been thinking about the parallels between programming and system administration, and this is a brilliant use of the comparison. They created a package manager named Nix where all packages are built and maintained independently even of other [...]]]></description>
			<content:encoded><![CDATA[<p>
I just read a <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3Blb3BsZS5jcy51dS5ubC9hbmRyZXMvTml4T1MuaHRtbA==">great paper about NixOS</a>, a Linux distribution with a &#8220;purely functional&#8221; package manager. I&#8217;ve been thinking about the parallels between programming and system administration, and this is a brilliant use of the comparison. They created a package manager named Nix where all packages are built and maintained independently even of other versions of themselves.
</p>

<p>
I&#8217;m surprised there are sysadmins who miss obvious ways to improve their systems, like keeping a server&#8217;s <kbd>/etc</kbd> and cron jobs under version control. Cloning server configs from each other. Automated backups. Automated rotating and pruning of logs. Writing scripts to set up any software not covered by the package manager &#8212; or, better, building packages. Uptime and performance monitoring and alerts.
</p>

<p>
(The list goes on. This is my basic competency list. I got a lot of these techniques from watching <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2FtbW9ubGF1cml0emVuLmNvbS9ibG9nLw==">a great sysadmin</a> in action, reading some sysadmin blogs (curiously, sysadmins do not seem to blog nearly as prolifically as developers), pondering what programming skills and tools I can apply, and hours and hours of hair-tearing experience. I&#8217;m regularly surprised by how infrequently these things are done, even the really obvious bits of automation.)
</p>

<p>
I&#8217;ve long realized these techniques are about making system setups known and repeatable, like boiling down a test case in a programming language. What I didn&#8217;t recognize until I read the NixOS paper is that this is about the same kind of determinism that drives functional programming languages. Running systems are like imperative programs, and the core goal is minimizing the amount of potential state that can 1. exist 2. be unknown 3. blow things up. Imagine reversing all the effects of a function call in a procedural language with global variables kicking around: it&#8217;s the exact same problem as reversing the effects of upgrading a piece of software.
</p>

<p>
It looks like Nix has some <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25peG9zLm9yZy9hYm91dC5odG1s">great features</a> I can&#8217;t imagine &#8220;imperative&#8221; package managers supporting well, like non-privileged users installing software. My sysadmin work is lately limited to the usual developer kvetching about one&#8217;s dedicated sysadmins, so I haven&#8217;t dived too deeply (I plan to play with it in a VM sometime soon). Looking at NixOS has left me with a desire to practice more functional programming. The cross-pollination from one field to another is invaluable.
</p> <img src="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=306" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2008/functional-package-management/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clean Up Your Mess</title>
		<link>http://push.cx/2006/clean-up-your-mess</link>
		<comments>http://push.cx/2006/clean-up-your-mess#comments</comments>
		<pubDate>Thu, 05 Oct 2006 13:17:12 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Arkeia]]></category>
		<category><![CDATA[break]]></category>
		<category><![CDATA[Cambrian House]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[jerk]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[wedge]]></category>

		<guid isPermaLink="false">http://push.cx/2006/clean-up-your-mess</guid>
		<description><![CDATA[Too many sysadmins is a bad thing, especially if one of them doesn&#8217;t care about keeping the servers up. The development box at work wasn&#8217;t letting me check anything into subversion &#8212; commits were just sitting there, not even timing out. In fact, so were updates. Something was seriously wrong. I talked about it with [...]]]></description>
			<content:encoded><![CDATA[<p>
Too many sysadmins is a bad thing, especially if one of them doesn&#8217;t care about keeping the servers up.
</p>

<p>
The development box at <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jYW1icmlhbmhvdXNlLmNvbQ==">work</a> wasn&#8217;t letting me check anything into subversion &#8212; commits were just sitting there, not even timing out. In fact, so were updates. Something was seriously wrong.
</p>

<p>
I talked about it with a coworker and went to look at the box. Afew a few minutes of poking around, the problem became clear: someone installed <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5hcmtlaWEuY29tLw==">a backup program</a> that was trying to do some kind of fake-filesystem and wedged the box. Any process that tried to read from disk froze and couldn&#8217;t even be <kbd>kill -9</kbd>&#8216;d.
</p>

<p>
And thanks to this odd little behavior, I could see three <kbd>reboot</kbd> processes frozen, presumably trying to read the shutdown scripts. So the person that wedged the box <i>knew</i> they wedged it but they just <i>left it that way</i>.
</p>

<p>
I got the coworker in the office to pull the plug on the box and it came up OK, but I edited <kbd>/etc/init.d/arkeia</kbd> to spit out the following note instead of try to start the backup program:
</p>

<blockquote>
<p>
Dear whoever the hell decided to install arkeia:
</p>

<p>
You left the dev box wedged overnight, wasting at least an hour of two coders time to figure out what you did and fix it. And we know that you know you broke it, we could see that you tried to reboot and then LEFT IT FOR SOMEONE ELSE TO DEAL WITH rather than actually fix it.
</p>

<p>
Don&#8217;t be a jerk! Clean up after yourself!
</p>

<p>
Please talk to Jim and Harkins and explain why you left the box broken before you try playing with arkeia and wedge the box again.
</p>
</blockquote> <img src="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=182" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2006/clean-up-your-mess/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

