<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Micah Elliott &#187; SysAdmin</title>
	<atom:link href="http://micahelliott.com/category/sysadmin/feed/" rel="self" type="application/rss+xml" />
	<link>http://micahelliott.com</link>
	<description>Stories from my Startup Journey</description>
	<lastBuildDate>Mon, 29 Nov 2010 07:46:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
<image>
  <link>http://micahelliott.com</link>
  <url>http://micahelliott.com/mde-gravatar7.png</url>
  <title>Micah Elliott</title>
</image>
	<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.6.3" -->
	<copyright>Copyright &#38;#xA9; 2012 Micah Elliott </copyright>
	<managingEditor>mde@micahelliott.com</managingEditor>
	<webMaster>mde@micahelliott.com</webMaster>
	<category>posts</category>
	<image>
		<url>http://micahelliott.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Micah Elliott &#187; SysAdmin</title>
		<link>http://micahelliott.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Stories from my Startup Journey</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &amp; Culture" />
	<itunes:author></itunes:author>
	<itunes:owner>
		<itunes:name></itunes:name>
		<itunes:email>mde@micahelliott.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://micahelliott.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Customizing the GNOME System Monitor</title>
		<link>http://micahelliott.com/2010/09/customizing-gnome-system-monitor/</link>
		<comments>http://micahelliott.com/2010/09/customizing-gnome-system-monitor/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 22:13:54 +0000</pubDate>
		<dc:creator>Micah</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://micahelliott.com/?p=397</guid>
		<description><![CDATA[I probably glance down at my system&#8217;s status displays way too often; surely graphs are addicting. But it really is handy to know what&#8217;s going on all the time. If I&#8217;m ever on a machine without this info, I just feel lost. Oh, if only my Android had one! I&#8217;ve been able to make faster [...]]]></description>
			<content:encoded><![CDATA[<p>I probably glance down at my system&#8217;s status displays way too often; surely graphs are addicting. But it really is handy to know what&#8217;s going on all the time. If I&#8217;m ever on a machine without this info, I just feel lost. Oh, if only my Android had one! I&#8217;ve been able to make faster and more sense out of the <strong>System Monitor</strong> since tweaking the colors, so I&#8217;m writing this to encourage my Linux compatriots to do the same.<span id="more-397"></span></p>
<p>First off, if you haven&#8217;t yet enabled the System Monitor, just right-click on your Panel and you should see it on the list. (Othewise: <em>apt-get install gnome-system-monitor</em> first)</p>
<p><img class="alignleft size-full wp-image-400" title="GNOME System Monitory with pretty colors" src="http://micahelliott.com/wp-content/uploads/2010/09/monitor1.png" alt="GNOME System Monitory with pretty colors" width="282" height="133" />By default the colors are all pretty similar. The first important tweak is to <strong>differentiate the <em>Processor</em> colors</strong>. Use whatever you want, but make sure they have enough contrast. (Not shown: I just fixed my green <em>User</em> color to contrast a little better.) Watching the Processor usage can show you a bit about the sites you spend time on (among several other things). If you&#8217;ve got a constant green bar (hmm, that sounds backwards to TDDers; maybe I should stay away from green), you might want to hunt down the tab hosting the unruly flash widget. Ideally, your system at rest should most often show a beautiful black box.</p>
<p>The second tweak I just made recently &#8212; and it&#8217;s growing on me &#8212; is to <strong>make outgoing network traffic red</strong>, and incoming yellow. Now I can see my backups to S3 in full swing when they kick in. And I might notice if anything is unexpectedly drifting outbound.</p>
<p>I also recently added the fourth <em>Swap Space</em> indicator just in case it ever kicks in, at which point I&#8217;ll know something is really awry. This one is probably not too important to have showing if you&#8217;re shy on Panel space.</p>
<p>Great! Now I can watch Firefox and a Mongrel take off with all my memory and know when to kill them. The monitor is also handy to see when something you&#8217;ve been running is (too often unexpectedly) finished. (I like using <em>beep</em> at the end of a long command for this too.)</p>
<p>I do still use top on occasion for its light weight. But sometimes it&#8217;s a bit more convenient to have a one-click GUI view of your system. Please share if you&#8217;ve got a more effective color scheme or if you use another light-weight tool for continuous monitoring.</p>
]]></content:encoded>
			<wfw:commentRss>http://micahelliott.com/2010/09/customizing-gnome-system-monitor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Home Media Center Wall-Wart</title>
		<link>http://micahelliott.com/2009/02/home-media-center-wall-wart/</link>
		<comments>http://micahelliott.com/2009/02/home-media-center-wall-wart/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 01:37:17 +0000</pubDate>
		<dc:creator>Micah</dc:creator>
				<category><![CDATA[Living]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[multi-media]]></category>

		<guid isPermaLink="false">http://micahelliott.com/?p=297</guid>
		<description><![CDATA[Apparently, we&#8217;re very close to having a low-power, affordable Linux media (er, audio) center, driven by a tiny wall-wart.  It should only need to support networking, USB, ssh, external storage, and audio output.  The candidate is called the Marvell ShivaPlug, and it features some of those, and maybe the rest can be satisfied. The NIC [...]]]></description>
			<content:encoded><![CDATA[<p>Apparently, we&#8217;re very close to having a low-power, affordable Linux media (er, audio) center, driven by a tiny wall-wart.  It should only need to support <strong>networking</strong>, <strong>USB</strong>, <strong>ssh</strong>, <strong>external storage</strong>, and <strong>audio output</strong>.  The candidate is called the <a href="http://www.slashgear.com/marvell-sheevaplug-99-linux-pc-hidden-in-a-wall-wart-2435556/">Marvell ShivaPlug</a>, and it features some of those, and maybe the rest can be satisfied.<span id="more-297"></span></p>
<p>The NIC and USB are obviously present.  ssh is highly expected (how else would you get in?), as is the ability to install anything that will fit in the 512 MiB of flash.  The audio output is missing, but if it supports any USB hub, you could connect an external USB drive and a USB amp like <a href="http://www.pcstats.com/articleview.cfm?articleID=1401">this one</a>, and feed into your sound system.  Wonder what distro it&#8217;s using?</p>
<p>I&#8217;ve been using an old laptop to drive the audio for my whole house for several years.  This is not a great solution since it&#8217;s comparatively power hungry, loud, takes up space, and is dying.  With the wall-wart, that old system can disappear, and the wart can probably put out a lot better sound (with the USB amp).  I&#8217;ve considered replacing the laptop with an iTouch or some device, but I really like using the machine as a server for other purposes that a <a href="http://en.wikipedia.org/wiki/Handheld_computer">handheld</a> would not support.</p>
<p>So far this system is just theoretical.  But I hope to get my hands on one of these and try it out.  Hmm, there are even <a href="http://www.xbitlabs.com/articles/monitors/display/samsung-sm940ux.html">USB monitors</a> now; that could be interesting!</p>
<p>It would also make for a nice little backup server, hosting a drive for automated rsync.  There&#8217;s also the need for USB-powered <a href="http://www.developertesting.com/archives/month200404/20040401-eXtremeFeedbackForSoftwareDevelopment.html">eXtreme Feedback Devices</a> (XFDs).  The ShivaPlug could handle some of that with a USB light or lava lamp.  Any other possibilities?  Let me know your experiences if you&#8217;re playing with one.</p>
<p><span style="color: #808080;"><em>Thanks Jon for the link!</em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://micahelliott.com/2009/02/home-media-center-wall-wart/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Get On Top</title>
		<link>http://micahelliott.com/2008/06/get-on-top/</link>
		<comments>http://micahelliott.com/2008/06/get-on-top/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 13:00:00 +0000</pubDate>
		<dc:creator>Micah</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.micahelliott.com/?p=53</guid>
		<description><![CDATA[I&#8217;ve used top for years to monitor machine activity. It&#8217;s grown some new features and behavior in the last few years that you might not be aware of. Good ol&#8217; top. For years it&#8217;s been the cornerstone of process control. It&#8217;s the first place we turn to hunt down a rogue process, or just to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp2.blogger.com/_DzStaE_3-vk/SFKWN83TVXI/AAAAAAAAAC4/Pt_4o4IBm3I/s1600-h/top.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5211392885241632114" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_DzStaE_3-vk/SFKWN83TVXI/AAAAAAAAAC4/Pt_4o4IBm3I/s200/top.jpg" border="0" alt="" /></a><span style="font-style: italic;">I&#8217;ve used <span style="font-family:courier new;">top</span> for years to monitor machine activity.  It&#8217;s grown some new features and behavior in the last few years that you might not be aware of.</span></p>
<p>Good ol&#8217; <span style="font-family:courier new;">top</span>.  For years it&#8217;s been the cornerstone of process control.  It&#8217;s the first place we turn to hunt down a rogue process, or just to watch how resources are consumed.  Sure, you could use a handful of GUI tools, but <span style="font-weight: bold;">I frequently find myself working strictly in a terminal on remote machines, where </span><span style="font-weight: bold;font-family:courier new;">top</span><span style="font-weight: bold;"> is indispensable</span>.  This is a short overview of <span style="font-family:courier new;">top</span>&#8216;s most important features that weren&#8217;t obvious to me until I got to practicing for the <a href="http://www.lpi.org/">LPI exam</a> a short while back.  Now I&#8217;m making use of them quite regularly.  To save you from wading through the 1,000-line manpage, <span style="font-weight: bold;">here are the most useful interactive commands</span> (you don&#8217;t have to worry about the CLI options).</p>
<p><span id="more-53"></span></p>
<ul>
<li><span style="font-weight: bold;">z</span> &#8212; Turn on color.  Beautiful!  Don&#8217;t change them unless you&#8217;re looking to waste a lot of time</li>
<li><span style="font-weight: bold;font-family:courier new;">s</span> &#8212; This is the refresh interval.  The default of 3 seconds can leave you puzzled.  I like to set it to one or half a second.   An alternative is to just press  a bunch of times whenever you want to see an update.</li>
<li><span style="font-weight: bold;font-family:courier new;">1</span> &#8212; Change the number of processors shown.  Though not a default, this is critical now that every machine we get on has 2 to 16 procs.</li>
<li><span style="font-weight: bold;font-family:courier new;">H</span> &#8212; Show threads.  Try looking at Apache with and without this.</li>
<li><span style="font-weight: bold;font-family:courier new;">i</span> &#8212; Ignore idle processes.  This helps you focus only on what&#8217;s really active; and makes everything fit on the screen.</li>
<li><span style="font-weight: bold;font-family:courier new;">O</span><span style="font-weight: bold;"> </span>&#8211; Order by some field.  The most useful sub-selections here are <span style="font-family:courier new;">q</span> (resident memory), <span style="font-family:courier new;">k</span> (%cpu), and <span style="font-family:courier new;">a</span> (pid).  Setting this helps keep your list from bouncing its order all around.</li>
<li><span style="font-weight: bold;font-family:courier new;">c</span> &#8212; Show whole command.  Essential when you&#8217;ve got multiples of a similar command running.</li>
<li><span style="font-weight: bold;font-family:courier new;">u</span> &#8212; Only show what&#8217;s happening with a single user.  That&#8217;s often <span style="font-family:courier new;">$USER</span> (you!), or some other <span style="font-style: italic;">luser</span>.</li>
<li><span style="font-weight: bold;font-family:courier new;">k</span> &#8212; Kill a process with signal of your choosing.  <span style="font-style: italic;">(Bonus: look into <span style="font-family:courier new;">pgrep</span>/<span style="font-family:courier new;">pkill</span>.)</span></li>
<li><span style="font-weight: bold;font-family:courier new;">?</span> &#8212;  Show the built-in help screen.</li>
<li><span style="font-weight: bold;font-family:courier new;">^g</span> &#8212; Escape out of any menu screen.</li>
</ul>
<p>You could have seen most of this on the built-in help screen by simply pressing <span style="font-family:courier new;">h</span> or <span style="font-family:courier new;">?</span>.  But that menu has a pretty unintuitive layout, and the above is limited to the minimal set you really need.  Now that you understand how everything works, and you&#8217;ve got it looking nice, just press <span style="font-family:courier new;">W</span> to write the configuration for permanent use.  If you&#8217;re unhappy with the damage you just caused, just blow it away with: <span style="font-family:courier new;">rm ~/.toprc</span></p>
<p><span style="font-style: italic;">BONUS:</span> You may have surprisingly seen &#8220;windows&#8221; in your <span style="font-family:courier new;">top</span> session, depending on what distro you get onto (maybe it was a Fedora?); that&#8217;s how I discovered them.  Press <span style="font-family:courier new;">h</span> twice to get to the windows menu.  I won&#8217;t get into all those details here &#8212; I don&#8217;t find the windows terribly useful, though they do appear to offer some sophisticated views.  If you decide to use them, you can get started by pressing <span style="font-family:courier new;">A</span>, and then <span style="font-family:courier new;">a</span> continuously to cycle through displays.  See if you can make sense of them, and then talk to me. <img src='http://micahelliott.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><span style="font-style: italic;">CAVEATS:</span> Be careful not to run top with a fast refresh during any sort of benchmarking.  It can chew up a bit of CPU time.  Also, <span style="font-family:courier new;">top</span> versions vary widely depending on the distro you use; you might notice some different behavior than what I&#8217;ve described.<br />
<span style="font-style: italic;">(This list also makes for a great sticky, as you see in the picture.)</span></p>
<p><span style="font-weight: bold;font-family:courier new;">top</span><span style="font-weight: bold;"> is a powerful tool that gives you a lot of information.</span> If you got this far, you should now be able to make sense of most of the cryptic display, and be able to find your way around configuring it.</p>
]]></content:encoded>
			<wfw:commentRss>http://micahelliott.com/2008/06/get-on-top/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Single Command to Get Started on Functional Programming</title>
		<link>http://micahelliott.com/2008/06/a-single-command-to-get-started-on-functional-programming/</link>
		<comments>http://micahelliott.com/2008/06/a-single-command-to-get-started-on-functional-programming/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 20:20:00 +0000</pubDate>
		<dc:creator>Micah</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[functional]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.micahelliott.com/?p=38</guid>
		<description><![CDATA[Functional Programming is old. Ancient. Like right after FORTRAN. But it&#8217;s the future. Trust me, I&#8217;m named after the dude who knew about Jesus 700 years early. Seriously, it&#8217;s not going to take 700 years for FP to go mainstream. Some would argue that it already is. Python, Ruby, and others have adopted a number [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-style: italic;"><a href="http://en.wikipedia.org/wiki/Functional_programming">Functional Programming</a> is old.  Ancient.  Like right after FORTRAN.  But it&#8217;s the future.  Trust me, I&#8217;m named after <a href="http://en.wikipedia.org/wiki/Micah_%28prophet%29">the dude</a> who knew about Jesus 700 years early.</span></p>
<p>Seriously, it&#8217;s not going to take 700 years for FP to go mainstream.  Some would argue that it already is.  Python, Ruby, and others have adopted a number of FP features.  Here&#8217;s all you need to get started right now and get ahead of the curve (right after you&#8217;ve installed Debian or Ubuntu).<br /><span style="font-size:130%;"><br />Install Them All</span></p>
<p>I see tons more interpreters available (<span style="font-family:courier new;">apt-get search &#8230;</span>) for the main FP languages, but these are the ones that looked most stable and most widely used.</p>
<p><span style="font-family:courier new;">$ sudo apt-get install clisp </span><span style="font-family:courier new;">guile-1.8 </span><span style="font-family:courier new;">erlang ocaml ghc6</span></p>
<p>What did that just do?  Okay, you can probably figure it out.  But did you realize that <span style="font-weight: bold;">you just put the entirety of mainstream FP and their </span><a style="font-weight: bold;" href="http://en.wikipedia.org/wiki/REPL">REPL</a><span style="font-weight: bold;">s at your fingertips</span>?  That includes interpreters/compilers for <span style="font-weight: bold;">Common Lisp, Scheme, Erlang, OCaml, and Haskell</span>.  Vim and Emacs should have editing modes available for all of these.</p>
<p>You can invoke each of the REPLs respectively, like so.</p>
<p><span style="font-family:courier new;">$ clisp  # Common Lisp</span><br /><span style="font-family:courier new;">$ guile  # Scheme</span><br /><span style="font-family:courier new;">$ erl    # Erlang</span><br /><span style="font-family:courier new;">$ ocaml  # OCaml</span><br /><span style="font-family:courier new;">$ ghci   # Haskell</span></p>
<p>Of course you&#8217;ll need to learn something about each of the languages to do anything at this point.  But I&#8217;m just getting you off on the right foot.  I&#8217;m not going to go into detail here why I chose the interpreters or languages that I did, but if you don&#8217;t know any better, these are a great start.  I&#8217;m only getting started with all of these myself.<br /><span style="font-size:130%;"><br />Free Online Material</span></p>
<p>You can check Amazon for books on any of these languages.  Most of them are pretty expensive (except <a href="http://www.amazon.com/gp/product/193435600X/102-8171041-1883345?ie=UTF8&amp;tag=micaelli-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=193435600X">Programming Erlang</a>, which I just ordered).  But I&#8217;ll mention <span style="font-weight: bold;">some free resources</span> that all look valuable.
<ul>
<li><a href="http://gigamonkeys.com/book/">Common Lisp Book </a> (check out the sidebar on that page about the book&#8217;s popularity on Amazon!)</li>
<li><a href="http://www.erlang.org/doc/getting_started/part_frame.html">Erlang Getting Started Guide</a> (also in <a href="http://www.erlang.org/doc/pdf/getting_started.pdf">PDF</a>)</li>
<li><a href="http://www.erlang.org/doc/reference_manual/part_frame.html">Erlang Reference Manual</a> (also in <a href="http://www.erlang.org/doc/pdf/reference_manual.pdf">PDF</a>)</li>
<li><a href="http://documents.scribd.com/docs/da0hhc3bf7jjvnzqaxm.pdf">Thinking in Erlang Mini-Book (PDF)</a></li>
<li><a href="http://book.realworldhaskell.org/beta/">Real World Haskell Book</a></li>
<li><a href="http://caml.inria.fr/pub/docs/oreilly-book/">Developing Applications With OCaml</a></li>
</ul>
<p><span style="font-size:130%;">Stay Tuned</span></p>
<p>You might already be aware of the power of FP, or maybe the Wikipedia link at the top convinced you, or maybe you&#8217;ll remain a detractor.  Hopefully I&#8217;ve at least whetted your appetite by showing how easy it is to get set up.  I&#8217;ll plan to go into more detail about why <span style="font-style: italic;">I</span> think FP is important in a future post (<span style="font-style: italic;">hint: performance, concurrency, code density, productivity, intelligent communities, mind-expansion, fun</span>).  I&#8217;m still in the process of discovering all the reasons.</p>
<p>Well, this kicks off my FP journey.  Hope you&#8217;ll come along for the ride.  First stop: <span style="font-family:courier new;">erl</span></p>
]]></content:encoded>
			<wfw:commentRss>http://micahelliott.com/2008/06/a-single-command-to-get-started-on-functional-programming/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My APT Package Meme</title>
		<link>http://micahelliott.com/2008/05/my-apt-package-meme/</link>
		<comments>http://micahelliott.com/2008/05/my-apt-package-meme/#comments</comments>
		<pubDate>Fri, 23 May 2008 01:40:00 +0000</pubDate>
		<dc:creator>Micah</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[meme]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[simplicity]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.micahelliott.com/?p=27</guid>
		<description><![CDATA[A look at automating setup for every new Ubuntu; and maybe even a meme. Linux distros these days tend to be pretty minimal in their default install mode. Many of us used to be in the habit of checking the &#8220;Install Everything&#8221; box in the earlier Red Hat days. But then the box disappeared, and [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-style: italic;">A look at automating setup for every new Ubuntu; and maybe even a <a href="http://en.wikipedia.org/wiki/Meme">meme</a>.</span></p>
<p>Linux distros these days tend to be pretty minimal in their default install mode.   Many of us used to be in the habit of checking the &#8220;<span style="font-style: italic;">Install Everything</span>&#8221; box in the earlier Red Hat days.  But then the box disappeared, and it became a pain to get everything you needed, and most people moved on to use apt or yum, or some equivalent, to get their systems to a usable state.  The modern idea is that you start out with the bare minimum to simply enable yourself to boot, fumble around, and install more stuff.  Then you just use apt-get, aptitude, synaptic, or whatever, to install to your particular needs.  On a fresh new Ubuntu 8.04 installation I see only ~300 packages.</p>
<p>After some time on a machine you probably find that <span style="font-weight: bold;">you&#8217;ve manually installed hundreds (or thousands!) of packages to satisfy all your development needs</span>.  Here&#8217;s a great way to get that critical, comprehensive package list and make sure your other oft-used machines have everything you need.  (You might even want this in the crontab of your primary machine; it can be helpful for recovery purposes.  I&#8217;ll discuss cron optimizations in a future post.  And another future post will discuss why apt-get is Ubuntu&#8217;s killer feature.)</p>
<p><span style="color: rgb(0, 153, 0);font-family:courier new;" >    <span style="color: rgb(153, 0, 0);">mocushla$</span> dpkg &#8211;get-selections | grep -v ^lib <span style="color: rgb(102, 102, 102); font-style: italic;">[>/some/backed/up/place/packages.log]</span></span></p>
<p>The list on my primary machine shows nearly 2,000 packages now.  That&#8217;s a lot!  Note that I&#8217;m excluding the libraries since they tend to just be dependencies.  Including them can actually make an upgrade/rebuild/recovery more difficult.<br /><span style="font-size:130%;"><br />A Minimal Package Set</span></p>
<p>You may also find yourself needing to get onto freshly installed machines with some frequency.  Maybe it&#8217;s a new web host, or some lab machine you need to do some work on.  <span style="font-weight: bold;">For time and space reasons, it&#8217;s probably not practical to start off by immediately installing your full 2,000-package set, so you&#8217;ll want to come up with a minimal set which at least makes you dangerous</span>.</p>
<p>As someone who regularly sits down at other people&#8217;s machines, or at fresh new machines, I&#8217;ve found the need to have <span style="font-weight: bold;">a small set of essential packages that I install</span>, just to be productive.  Here&#8217;s my list (the green).</p>
<p><span style="color: rgb(0, 153, 0);font-family:courier new;" ><span style="color: rgb(153, 0, 0);">    <span class="blsp-spelling-error" id="SPELLING_ERROR_1">newbox</span>$</span> <span style="color: rgb(102, 102, 102);"><span class="blsp-spelling-error" id="SPELLING_ERROR_2">sudo</span> apt-get install</span> build-essential screen <span class="blsp-spelling-error" id="SPELLING_ERROR_3">zsh</span> corkscrew mercurial subversion python <span class="blsp-spelling-error" id="SPELLING_ERROR_4">ipython pychecker pylint</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_5">ctags</span> </span><span style="color: rgb(0, 153, 0);font-family:courier new;" >vim </span><span style="color: rgb(0, 153, 0);font-family:courier new;" >vim-scripts xfonts-terminux <span class="blsp-spelling-error" id="SPELLING_ERROR_6">sqlite</span>3 tree <span class="blsp-spelling-error" id="SPELLING_ERROR_7">ntp mailx postfix mutt autofs nfs-common</span></span></p>
<p>This will install some other dependencies, of course, but it&#8217;s a pretty quick operation, requiring less than 100 <span class="blsp-spelling-error" id="SPELLING_ERROR_8">MiB</span>.  There are various other essential packages not listed there, but they tend to be part of the basic install.  Now you can just use something like &#8220;<span style="font-family:courier new;"><span class="blsp-spelling-error" id="SPELLING_ERROR_9">hg</span> clone ssh://<span style="font-style: italic;">your-<span class="blsp-spelling-error" id="SPELLING_ERROR_10">mocushla</span></span>.com/<span style="font-style: italic;"><span class="blsp-spelling-error" id="SPELLING_ERROR_11">yourhome</span></span></span>&#8221; to pull in your well-organized, minimal <span style="font-family:courier new;">$HOME</span> setup &#8212; but I&#8217;ll talk about that in a future post.</p>
<p><span style="font-style: italic;">Related tip of the day:</span>  Did you know you have tab-completion for apt-get?  Try this:</p>
<p><span style="color: rgb(0, 153, 0);font-family:courier new;" ><span style="color: rgb(153, 0, 0);"><span class="blsp-spelling-error" id="SPELLING_ERROR_12">newbox</span>$ <span style="color: rgb(0, 153, 0);"><span class="blsp-spelling-error" id="SPELLING_ERROR_13">sudo</span> apt-get install python-</span><span style="color: rgb(102, 102, 102);"><tab><tab><tab><tab>[tab][tab]y</tab></tab></tab></tab></span></span></span></p>
<p>How many of those have you had to discover by searching?<br /><span style="font-size:130%;"><br />The Meme</span><br /><span style="font-weight: bold;"><br />What&#8217;s on your Minimal APT List?</span>  Or do you have a Yum List?  Does it look different?</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_DzStaE_3-vk/SDTFOu2dnZI/AAAAAAAAAA4/vTL7qxtIvrM/s1600-h/patch-mgmt.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 191px;" src="http://bp1.blogger.com/_DzStaE_3-vk/SDTFOu2dnZI/AAAAAAAAAA4/vTL7qxtIvrM/s200/patch-mgmt.jpg" alt="" id="BLOGGER_PHOTO_ID_5203000326405070226" border="0" /></a><span style="font-style: italic;"></span><span style="font-style: italic; color: rgb(102, 102, 102);">If you found this post interesting, you may be interested in some related book s: <a href="http://www.amazon.com/gp/product/0132366754/102-8171041-1883345?ie=UTF8&amp;tag=micaelli-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0132366754">Linux Patch Management</a>, and <a href="http://www.amazon.com/gp/product/0596527209/102-8171041-1883345?ie=UTF8&amp;tag=micaelli-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0596527209"><span class="blsp-spelling-error" id="SPELLING_ERROR_14">Ubuntu</span> Hacks</a>.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://micahelliott.com/2008/05/my-apt-package-meme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Web Startup Surgeons</title>
		<link>http://micahelliott.com/2008/05/the-web-startup-surgeons/</link>
		<comments>http://micahelliott.com/2008/05/the-web-startup-surgeons/#comments</comments>
		<pubDate>Tue, 20 May 2008 23:45:00 +0000</pubDate>
		<dc:creator>Micah</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Startup]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://blog.micahelliott.com/?p=24</guid>
		<description><![CDATA[A look at the many hats worn in startups, and at those who wear them. I&#8217;ve been thinking about how to prepare for Startup Weekend, which is approaching quickly. Part of the registration process was assigning yourself a &#8220;specialty&#8221;. Of the seven designations, I chose architect for myself, whatever that means. But the role-designation question [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/glaukamj/657657627/"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.flickr.com/photos/glaukamj/657657627/" alt="" border="0" /></a><br /><span style="font-style: italic;">A look at the many hats worn in startups, and at those who wear them.</span></p>
<p>I&#8217;ve been thinking about how to prepare for <a href="http://startupweekend.com/portland-startup-weekend/">Startup Weekend</a>, which is approaching quickly.  Part of the registration process was assigning yourself a &#8220;specialty&#8221;.  Of the seven designations, I chose <span style="font-style: italic;">architect</span> for myself, whatever that means.  But <span style="font-weight: bold;">the role-designation question might be useful</span>, and I think it&#8217;s worth looking at all the hats to be worn and shared in a startup.</p>
<p>In my previous startup I tried to wear so many hats &#8212; too many &#8212; and we failed.  Now for the big weekend we&#8217;ll get to distribute the hats broadly(!) and try to crank out the business in a mere 54 hours!  There is a disconcerting lack of detail about how the groups are organized, but based on the number of specialties, I&#8217;d guess there are going to be 10-30 people per team.   Being slightly unsatisfied with the roles prescribed on the registration page, I decided to enumerate the roles that <span style="font-style: italic;">I</span> see as important to making a new site come together.  Each includes some example duties/skills.<br /><span style="font-size:130%;"><br />The Hat List</span>
<ul>
<li><span style="font-weight: bold;">Visionary/Architect.</span>  Idea generation, shape features, repositioning, market fit, competitive landscape, research.</li>
<li><span style="font-weight: bold;">Lead Developer(s).</span>  AKA Hackers.  A good place to have a pair of jelled programmers.  Uses web framework, creates functionality; knows Python/Ruby, Javascript, AJAX, Flash(?), HTML, databases.</li>
<li><span style="font-weight: bold;">Sysadmin.</span>  Network, web server, NFS (for VCS/file sharing), caching, other infrastructure, data backup, backup hardware, performance tuning, scalability.</li>
<li><span style="font-weight: bold;">Toolsmith.</span>  Team is provided with: productive development environments (all users can say &#8220;<span style="font-family:courier new;">apt-get install &#8230;</span>&#8220;), frameworks, editors, interpreters, multiple browsers, GIMP/Photoshop, (D)VCS, wiki, maybe BTS, quick training/consulting on tools/environment, continuous integration<anything>.</anything></li>
<li><span style="font-weight: bold;">Webmaster.</span>  SEO, analytics, domain registration, site hosting, Apache/lighttpd.</li>
<li><span style="font-weight: bold;">DBA.  </span>Helps developers plan schema, set up tables, design for scalability, tuning/optimizing.</li>
<li><span style="font-weight: bold;">Graphic Artist.</span>  Color coordination, logos, icons, image libraries, etc.</li>
<li><span style="font-weight: bold;">CSS Designer.</span>  Usability, accessibility, layout, look-n-feel.</li>
<li><span style="font-weight: bold;">Content Creator.</span>  User-facing documentation, populate/organize wiki, design tutorial, usage studies.</li>
<li><span style="font-weight: bold;">Customer Support.</span>  Answers phones, forum voice, FAQs, knowledge base, help entries, problem solving.</li>
<li><span style="font-weight: bold;">Tester.</span>  Bangs on site, tries devious things, automates stress.</li>
<li><span style="font-weight: bold;">Marketer.</span>  Evangelism, blogging, advertising.</li>
<li><span style="font-weight: bold;">Manager.</span>  Coordinates all team member activities.</li>
<li><span style="font-weight: bold;">Lawyer.</span>  Business setup, guidance, law interpretation.</li>
<li><span style="font-weight: bold;">Chef.</span>  Handles all other (random) tasks to keep team functioning.</li>
</ul>
<p>That list looks pretty corporate-like.  And there will be a number of obstacles if you try and partition these roles to more typical small-team startup structuring.  But the list is useful if you happen to have a bunch of heads (15 or more) to throw at a problem, and a somewhat diverse skill/background set.  For Startup Weekend these roles may work well as a starting point, but I also want to think about the more typical startup team, for which these hats may be too small.</p>
<p>No matter how small your team, <span style="font-weight: bold;">none of these critical roles (hats) can be completely ignored indefinitely</span>.  This picture also uncovers why so many one- and two-person startups have a hard time getting to successful launch &#8212; the extent of this work may not be obvious when you think simply about the task of setting up a website.<br /><span style="font-size:130%;"><br />Simplify and Combine Hats</span></p>
<p>It turns out that <a style="font-weight: bold;" href="http://ycombinator.com/faq.html">many</a><span style="font-weight: bold;"> </span><a style="font-weight: bold;" href="http://news.ycombinator.com/item?id=77525">people</a><span style="font-weight: bold;"> </span><a style="font-weight: bold;" href="http://news.ycombinator.com/item?id=1142">believe</a><span style="font-weight: bold;"> that the best way to actually implement a web business idea is to put a few (2-4) highly motivated and capable hackers together to build their vision</span>.  This has a lot of implications for the type of hackers that are needed &#8212; I&#8217;ll talk more about that below. For the sake of minimalism, let&#8217;s think about how a scant two-hacker team can possibly accommodate for that daunting role-list.  It&#8217;s quite a diverse set of considerations!  Does anyone really have deep experience in <span style="font-style: italic;">all</span> these things?  Probably not, but maybe it&#8217;s not necessary.</p>
<p>First of all, <span style="font-weight: bold;">some of the roles can probably just be thrown out</span>, or at least incorporated much later.  Working from the bottom up, let&#8217;s first throw away the <span style="font-weight: bold;">Chef</span>.  He&#8217;s an optimization that anyone else can step up to cover for.  What&#8217;s important is that some team members are organized enough to recognize when latent Chef tasks are accumulating.  Then take the <span style="font-weight: bold;">Lawyer</span>.  She&#8217;s nice to have, but expensive and definitely not part of your core.  She can just be used as a consultant if the Visionary or Manager can&#8217;t figure out if the business is set up correctly.  Speak of the devil!  Do we really need a <span style="font-weight: bold;">Manager</span>?  Let&#8217;s just do away with the caste system and put everyone on the same level.  We&#8217;re agile, we all communicate daily, and we have a great Visionary to tie everything together and keep us in check.  And consider the <span style="font-weight: bold;">Tester</span>.  Isn&#8217;t testing already happening at every level?  The Developers are writing unit tests as they code (hopefully even before).  The Sysadmin has set up <a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a>, and Customer Support has automated the regression suite.  There certainly are a lot more tests to be written, but this task can probably be shared by other members.  So now the Tester is gone, too.</p>
<p>Next, <span style="font-weight: bold;">many of the roles can be clustered, and then combined</span>.</p>
<p>The first cluster I see includes <span style="font-weight: bold;">Content Creator</span>, <span style="font-weight: bold;">Customer Support</span>, and <span style="font-weight: bold;">Marketer</span>.  There&#8217;s a lot of work being done by these members, but it&#8217;s a similar user-friendly type that can fit all of these.  Our worker needs to be friendly, charismatic, focused on the user experience, a good writer, extroverted, and multi-faceted.  Let&#8217;s just combine these into a single Marketer role.</p>
<p>The next two, <span style="font-weight: bold;">CSS Designer</span> and <span style="font-weight: bold;">Graphic Artis<br />
t</span> have some overlap.  Let&#8217;s hope we can train our Artist (a color and visual expert) to write CSS.   And the developers already know some CSS anyway.  Besides, I consider someone who&#8217;s good at CSS also an artist.  So now we simply have an Artist.</p>
<p>A good <span style="font-weight: bold;">Sysadmin</span> has probably been around the lab enough to have dabbled in setting up web servers, and understands a lot about hosting, so he&#8217;s already something of a <span style="font-weight: bold;">Webmaster</span>.  And he&#8217;s surely enabled his users to be productive with tools, so he&#8217;s also a <span style="font-weight: bold;">Toolsmith</span>.  He might even know a bit about being a <span style="font-weight: bold;">DBA</span>, and I think it would be within reach with some study.  So I&#8217;ll simplify the back end roles of DBA, Toolsmith, Webmaster, and Sysadmin, singly into the latter.  Anyway, some of the performance/scalability optimizations can come later.  In fact, with <a href="http://aws.amazon.com/ec2">EC2</a> or <a href="http://code.google.com/appengine/">GAE</a>, we have a lot less to worry about!</p>
<p>Now <span style="font-weight: bold;">the </span><span style="font-weight: bold;">Developer</span><span style="font-weight: bold;"> (Hacker) is who I see as the <span style="font-style: italic;">Surgeon</span>, or </span><span style="font-style: italic; font-weight: bold;">Chief</span>.  She already knows how the major technologies interplay, and has had to learn a lot about about <span style="font-style: italic;">design</span> (at least at the system level, but probably also everywhere from aesthetics to architecture).  She can build things that are user-friendly.  She knows best what&#8217;s involved in implementing every feature under consideration.  She is the one to best see the big picture.  And based all this glamorizing, I&#8217;ll conjecture that she should also be the <span style="font-weight: bold;">Visionary</span>.  Of course, you&#8217;d want all of your members to have similar creative, big-picture abilities.<br /><span style="font-size:130%;"><br />The Sombrero List</span></p>
<p>With all that simplification, the Hat List now looks like this:
<ul style="font-weight: bold;">
<li>Developer</li>
<li>Sysadmin</li>
<li>Artist</li>
<li>Marketer</li>
</ul>
<p>That appears to leave us needing four team members with really big heads for five-gallon hats.   For now, let&#8217;s call such members <span style="font-style: italic;">Surgeons</span>.  Can a single surgeon do all these things?  What about two?  How do you divide the work?  Which tasks should you do in tandem, in serial, in parallel?  If you&#8217;ve only got two members, should they have opposite skillsets &#8212; a developer-sysadmin and an artist-marketer?  Are all of these roles part of the core?  Do all the roles need to be addressed early on?  Those are hard questions.  There are plenty of startup examples where one or two people have done all this themselves.  Most of the successful examples simply involve a couple surgeons who have figured out how to cover all the bases.<br /><span style="font-size:130%;"><br />Becoming a Surgeon</span></p>
<p>Here are some thoughts on how to get Hackers to the level and focus of <a href="http://c2.com/cgi/wiki?GrandMasterProgrammer">Surgeon</a>:
<ul>
<li><span style="font-weight: bold;">Diversify your skillsets.</span>  Learn some high-level languages.  Try out a couple web frameworks.  Be able to satisfy any development role.</li>
<li><span style="font-weight: bold;">Learn about system administration.</span>  I don&#8217;t have much data to back this, but I&#8217;ve found that many of the famously successful hackers have at one time in their careers been sysadmins.  E.g., <a href="http://www.catb.org/%7Eesr/">ESR</a>, <a href="http://en.wikipedia.org/wiki/Robert_Tappan_Morris">Robert Morris</a>, <a href="http://en.wikipedia.org/wiki/Tim_O%27Reilly">Tim O&#8217;Reilly</a>, and many more.  Try browsing resumes of your hacker heroes and see if any of them don&#8217;t have this qualification.  Such work gives you an important practical perspectives on usage patterns, systems topologies, hardware limitations, lifecycles, automation, tool availability, user-friendliness, user-stupidity, etc.</li>
<li><span style="font-weight: bold;">Make use of infrastructure services.</span>  If you&#8217;ve made use of EC2 and other Amazon/Google services, you don&#8217;t need to figure out how to scale to hundreds of app, database, file, and web servers.  Know what services are out there to avoid building your own data center.</li>
<li><span style="font-weight: bold;">Get the administrative work out of the way early.</span>  Once you&#8217;ve got a somewhat scalable system in place, then your Sysadmin efforts can be cut way back, and you can take off the hat.</li>
<li><span style="font-weight: bold;">Outsource some of the artistry.</span>  Many sites are now available for you to shop for cheap graphics based on many criteria.  And for logos, you can hire an artist inexpensively to do short-term, direct work with you.  Icons are also a dime-a-dozen and freely available from various sites.</li>
<li><span style="font-weight: bold;">Learn something about color.</span>  You can probably figure out CSS without too much effort, and get an artist to do some graphics for you.  But you need to be careful about choosing a holistically attractive color scheme that works well across fonts, icons, boxes, panes, images, and everything else a user looks at.</li>
<li><span style="font-weight: bold;">Start a blog.</span>  The detailed reasons to do this will be coming in a blog post soon.  In short, blogging is marketing, talking to customers, SEO, documentation, administration, design, and a web app, all in one.</li>
</ul>
<p>After making the Hat List, I was reminded of the traditional <a href="http://c2.com/cgi/wiki?ChiefProgrammerTeam">Chief Programmer Team</a>, which is probably derived from <a href="http://www.amazon.com/gp/product/0201835959/002-1936193-4919204?ie=UTF8&amp;tag=micaelli-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0201835959">Fred Brooks&#8217; Surgical Team</a> (hence the Surgeon designation).  I hit most of the roles you see shown in that picture, but the scheme for web startups looks a bit different &#8212; the Hat List has added a few new roles specialized for web startups, and the Sombrero List has optimized away many some of them.<br /><span style="font-size:130%;"><br />Attributes of Surgeons<br /></span><br />If it&#8217;s really possible for a couple of surgeons to build a startup, we should figure out what some of the necessary surgeon characteristics are.   Maybe the traits simply need to be distributed amongst the surgeons.  Based on the roles above (and other assumptions), <span style="font-weight: bold;">here are some qualities that would seem necessary of the special type of hacker who is fit for being a Web Startup Surgeon</span> &#8212; one who would break many of the traditional geek stereotypes:
<ul>
<li>gets along with others, including users and programmers</li>
<li>understands users</li>
<li>good communicator</li>
<li>can find and recognize the right partner(s)</li>
<li>somewhat extroverted (to meet/find partners)</li>
<li>immersed in the real world (to see real problems worth solving)</li>
<li>up-to-date on most current trends</li>
<li>can generate good ideas</li>
<li>can see the big picture</li>
<li>good attention span, not too distracted by minutia</li>
<li>can implement ideas quickly (and thus uses the right tools)</li>
<li>multi-faceted</li>
<li>optimistic, and not easily beaten down</li>
</ul>
<p><span style="font-size:130%;">Summary</span><br /><span style="font-weight: bold;"></span>
<ul>
<li>There are a lot of hats for startup founders to wear; consider the hat list when estimating the workload.</li>
<li>At the core of a startup are hackers.</li>
<li>It is possible to start a business with just a small number of hackers.</li>
<li>It is a unique type of hacker who is fit for founding a startup.</li>
<li>Diverse hacker skillsets are a must.</li>
<li>Some roles can and should be inexpensively outsourced; others can be postponed.<b<br />
r /></li>
<li>Some Sysadmin knowledge is important in a team, but much of the work can be done up-front and through services.</li>
</ul>
<p>It&#8217;s an exciting time to be building a startup.  Stay tuned to see if mine will have what it takes to succeed.</p>
<p><span style="font-style: italic;">Disclaimer: This has been a thought-study on the various roles in startups, and on the hackers who play them.  I don&#8217;t claim to be an authority on these matters, but I am hoping to understand the dynamics necessary to make a startup succeed.</span></p>
<div style="text-align: right;"><span style="font-style: italic; color: rgb(102, 102, 102);" class="body">A chief is a man who assumes responsibility. He says &#8220;I was beaten,&#8221; he does not say &#8220;My men were beaten&#8221;.</span><span style="font-style: italic; color: rgb(102, 102, 102);"> </span> <span style="color: rgb(102, 102, 102);"><br />&#8211; </span><span style="color: rgb(102, 102, 102);" class="bodybold"><a href="http://www.brainyquote.com/quotes/quotes/a/antoinedes106367.html">Antoine de Saint-Exupery</a></span></div>
]]></content:encoded>
			<wfw:commentRss>http://micahelliott.com/2008/05/the-web-startup-surgeons/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

