<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Ellipsis</title>
    <link>http://typo.pburkholder.com/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>...</description>
    <item>
      <title>More from OSCON 2008</title>
      <description>&lt;h1&gt;&lt;span class="caps"&gt;WEDNESDAY&lt;/span&gt;&lt;/h1&gt;


	&lt;h2&gt;Full stack introspection&lt;/h2&gt;


	&lt;p&gt;Theo Schlosssnagle (OmniTI Laurel Md), jesus at omniIT&lt;/p&gt;


	&lt;p&gt;Author of &amp;#8220;Scalable Internet Architectures&amp;#8221;&lt;/p&gt;


Whole stack introspection
	&lt;ul&gt;
	&lt;li&gt;MacOSX, &lt;span class="caps"&gt;BSD&lt;/span&gt;, Solaris&lt;/li&gt;
		&lt;li&gt;Paul Fox working on Linux port.   Not in kernel, so &lt;span class="caps"&gt;CDDL&lt;/span&gt;/GPL, tension not a worry&lt;/li&gt;
	&lt;/ul&gt;


DTrace approaches
	&lt;ol&gt;
	&lt;li&gt;Start w/ User&lt;/li&gt;
		&lt;li&gt;Sorcery (not recommended) Twiddle to fix, then verify.  Starts w/ Hypotheses&lt;/li&gt;
		&lt;li&gt;Experienced.  Starts in middle&lt;/li&gt;
	&lt;/ol&gt;


	&lt;ul&gt;
	&lt;li&gt;It&amp;#8217;s very important to know your optimum operation before you can diagnose anomalous behavior.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;SysTap on Linux is way, way behind.  Requires righting code and sticking in as module&amp;#8212;not a way to work on production boxes.&lt;/p&gt;


	&lt;p&gt;MacOsX is very well instrumented.&lt;/p&gt;


	&lt;p&gt;Then follows a masterful demonstration of real-time system diagnoses.  Obviously this is not something one learns in an afternoon, but certainly is more fruitful (and probably no harder) than what I hack up in grep, perl, or what not to figure our what&amp;#8217;s going on in &lt;span class="caps"&gt;VKS&lt;/span&gt;, or ps, or logfiles.&lt;/p&gt;


Take aways:
	&lt;ul&gt;
	&lt;li&gt;Dtrace for Linux may  be in the offing.  Dtrace awesome.  Watch for it. &lt;/li&gt;
		&lt;li&gt;I must better understand our architecture from &lt;span class="caps"&gt;ACE&lt;/span&gt; to backends.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Groovy vs. JRuby&lt;/h2&gt;


	&lt;p&gt;A very good, well-organized talk.  Both environments are ready to use.  Groovy goes to Jars.  Performance used to be 20% &amp;#8211; 90% of pure Java, but rapidly closing.   JRuby may make Java integration in the common cases but Groovy handles the edge cases better.  Groovy language still a little immature, e.g. Regexs are not transitive.   Groovy allows typing (which can be handy), but JRuby does clean duck-typing.  JRuby has all Ruby libraries.  Rails works in &lt;span class="caps"&gt;J2EE&lt;/span&gt; stack.&lt;/p&gt;


	&lt;h2&gt; CouchDB.&lt;/h2&gt;


	&lt;p&gt;Freakin&amp;#8217; awesome.  Written in Erlang (BTW, Ericksson&amp;#8217;s switches running erlang advertize 9 9s (0.3 s annually).   I&amp;#8217;ll need to write more about it later.&lt;/p&gt;


	&lt;h2&gt; OpenSource Virtualization:&lt;/h2&gt;


	&lt;p&gt;Completely lame presentation.  One needs to learn that cutesy slides will emphasize, not obscure, your inexperience.&lt;/p&gt;


	&lt;p&gt;VmWare ESXi will be free with a non-deprecated &lt;span class="caps"&gt;API&lt;/span&gt;, announced June 22.&lt;/p&gt;


VirtualBox
	&lt;ul&gt;
	&lt;li&gt;Maps to VmWare Workstation, Player, Fusion, Server&lt;/li&gt;
		&lt;li&gt; Tools -&amp;gt; guest additions&lt;/li&gt;
		&lt;li&gt; vmx -&amp;gt; xml&lt;/li&gt;
		&lt;li&gt; has Seamless (Unity) latyer&lt;/li&gt;
		&lt;li&gt; harder: interfaces, network, disk, audio, &lt;span class="caps"&gt;USB&lt;/span&gt;.  &lt;/li&gt;
		&lt;li&gt; very similar across OS&amp;#8217;s, Solaris Host&lt;/li&gt;
		&lt;li&gt;Can run headless and over &lt;span class="caps"&gt;RDP&lt;/span&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Xen.  Etc., but I was getting too annoyed by the talk so I caught the rest of the lightning talks and Google open source update.&lt;/p&gt;


	&lt;h1&gt;Google Open Source Update&lt;/h1&gt;


	&lt;p&gt;Brian DiBona and &lt;span class="caps"&gt;TKTK&lt;/span&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Melange&lt;/li&gt;
		&lt;li&gt;Google Highly open participation contest ==&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;GHOP&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;DROP&lt;/span&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Bofs and Parties&lt;/h1&gt;


	&lt;p&gt;System Administration best practices &lt;span class="caps"&gt;BOF&lt;/span&gt;.  Nothing new learned, but maybe I made some contributions.&lt;/p&gt;


	&lt;p&gt;Met a friendly pair of brothers from Baltimore.  Mark and Curt Tilmes.  Mark works at &lt;span class="caps"&gt;UMD&lt;/span&gt; (five weeks of vacation a year sounds pretty sweet).  We went down to the OpenSolaris party at the DoubleTree, which was too redolent of an overamped frat party.  The MindTouch people are having a great party up on the top floor the Red Lion, with a tight live band, nice atmosphere and a sweeping view of Portland across the Willamette.  Too bad I&amp;#8217;m too tired to stay here long and that it&amp;#8217;s not better attended.&lt;/p&gt;


	&lt;h1&gt;&lt;span class="caps"&gt;THURSDAY&lt;/span&gt;&lt;/h1&gt;


	&lt;h2&gt;New York Times intro to &lt;span class="caps"&gt;AWS&lt;/span&gt;&lt;/h2&gt;


	&lt;p&gt;Brian Gottfried&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Really needed PDFs from 1851-1981&lt;/li&gt;
		&lt;li&gt;Dynamically generate or&amp;#8230; pregenerate 11 million PDFs and store statically.&lt;/li&gt;
		&lt;li&gt;Copy source to S3 store PDFs in S3 (which has been reliable except for last week)&lt;/li&gt;
		&lt;li&gt; 4.3Tb of 20M files&lt;/li&gt;
		&lt;li&gt;Parallelization.  Into pdfs, so map not reduce.&lt;/li&gt;
		&lt;li&gt;Non Hadoop part:  read metadata, load TIFsS, scale arrange, generate &lt;span class="caps"&gt;PDF&lt;/span&gt;, write &lt;span class="caps"&gt;PDF&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;Minimal use of &lt;span class="caps"&gt;HDFS&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;Took previous code and conv. to S3 thanks to JetS3S&lt;/li&gt;
	&lt;/ul&gt;


MapReduce
	&lt;ul&gt;
	&lt;li&gt;Map takes a Key/Value pair and output Key/Value pair&lt;/li&gt;
		&lt;li&gt;Reduce takes key &amp;#38; list of assoc. values and combines&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;&lt;span class="caps"&gt;HDFS&lt;/span&gt; (Yahoo! inc)&lt;/h2&gt;


	&lt;p&gt;Cool, scary.  Supports mapreduce.  Need to read up.&lt;/p&gt;


	&lt;h2&gt;Pushmi for Subversion&lt;/h2&gt;


	&lt;p&gt;Subversion replication.  Probably not relevant to me with Git coming onto our scene.&lt;/p&gt;


	&lt;h2&gt;Configuration management&lt;/h2&gt;


Commerical products are archaic and monolithic
*Tivoli, CA Unicenter
	&lt;ul&gt;
	&lt;li&gt;Help desk, ticketing, asset management, a lot of things badly.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Puppet bcfg2, pikt, cfengine,&lt;/p&gt;


Measuring success.   
	&lt;ul&gt;
	&lt;li&gt;Availability&lt;/li&gt;
		&lt;li&gt;Reduction of incidnets&lt;/li&gt;
		&lt;li&gt;Rate of failed change&lt;/li&gt;
		&lt;li&gt;Build time and speed to market&lt;/li&gt;
		&lt;li&gt;Compliance to &lt;span class="caps"&gt;SOE&lt;/span&gt;, policy or standard&lt;/li&gt;
	&lt;/ul&gt;


NewStuff:
	&lt;ul&gt;
	&lt;li&gt;Puppetshow A Gui for history and nodes&lt;/li&gt;
		&lt;li&gt;iClassify (OS)&lt;/li&gt;
		&lt;li&gt;Puppetview Logger (simple &lt;span class="caps"&gt;PHP&lt;/span&gt; app)&lt;/li&gt;
	&lt;/ul&gt;


Subnode (VMs and containers)  
	&lt;ul&gt;
	&lt;li&gt;Zones look like resources&lt;/li&gt;
		&lt;li&gt;insides zone looks like a node (but behave differently&lt;/li&gt;
	&lt;/ul&gt;


Other stuff: (see &lt;span class="caps"&gt;BOF&lt;/span&gt; below)
	&lt;ul&gt;
	&lt;li&gt;webrick &amp;#8211; not for more 25 hots.  6000 hosts w/ Mongrel.  Scale like any https.  w/ loadbalancer.  &lt;/li&gt;
		&lt;li&gt;puppet query against DB or &lt;span class="caps"&gt;LDAP&lt;/span&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Supervisor&lt;/h2&gt;


	&lt;p&gt;Python. Built on medusa.  Comparable: deamontools, launchd, runit
but built for control of customer processes not pid 0.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;supervisord forks arbitrary programs and child (including apache&amp;#8212;which you run in FG since it BGs itself).&lt;/li&gt;
		&lt;li&gt;supervisorctl   on same machine or over xmlrpc.&lt;/li&gt;
		&lt;li&gt;ini config file&lt;/li&gt;
		&lt;li&gt;captures child stdin/stdout and logs and rotates&lt;/li&gt;
		&lt;li&gt;users cannot stop/start arbitrary processes, only predefined processes&lt;/li&gt;
		&lt;li&gt;open or by authentication.  &lt;/li&gt;
		&lt;li&gt;xmlrpc for your own supervisorctl.  &lt;/li&gt;
		&lt;li&gt;single-process, thread.  Your processes cannot block.  &lt;/li&gt;
		&lt;li&gt;event-notification system
	&lt;ul&gt;
	&lt;li&gt;in any language&lt;/li&gt;
		&lt;li&gt;can spawn fastcgi processes&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;Can supervisor replace our bad sudo moderated scripts ??&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Puppet &lt;span class="caps"&gt;BOF&lt;/span&gt;&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;span class="caps"&gt;TKTK&lt;/span&gt; from U. Georgia Board of Regents&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;TKTK&lt;/span&gt; from EngineYard&lt;/li&gt;
		&lt;li&gt;Luke Kanies&lt;/li&gt;
		&lt;li&gt;James Turnbull from Australian bank (today&amp;#8217;s presenter)&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;TKTK&lt;/span&gt; from ????&lt;/li&gt;
		&lt;li&gt;Me&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Puppet is in Git now.
Puppet purge nop reports on all aspects of system that aren&amp;#8217;t managed.
Ralsh takes purge report and generates manifests.
Scale by having one puppetmasterd dedicated to CA work and put the others behind LB as fileservers and manifest delivery.
Stanford&amp;#8217;s configuration takes 30s to parse about 1m to implement.&lt;/p&gt;


	&lt;p&gt;Svn pre-hook scripts can run parse check.  Git lets you run pre-hook on local devel repository and again on core repository&lt;/p&gt;


	&lt;p&gt;Puppet under pressure to use &lt;span class="caps"&gt;XMPP&lt;/span&gt; instead of &lt;span class="caps"&gt;HTTP&lt;/span&gt;.
New release reduces time by 70% by using &lt;span class="caps"&gt;YAML&lt;/span&gt; instead of Marshall.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://automateit.org/screenshots"&gt;Automateit&lt;/a&gt;  Lightweight config management?&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;RALSH&lt;/span&gt; resource abstraction layer shell&lt;/p&gt;


	&lt;h1&gt;&lt;span class="caps"&gt;FRIDAY&lt;/span&gt;&lt;/h1&gt;


	&lt;h1&gt;Keynotes&lt;/h1&gt;


	&lt;p&gt;Mostly ho-hum.  Microsoft&amp;#8217;s opensource VP walked into the lion&amp;#8217;s den and emerged mostly unscathed.&lt;/p&gt;


	&lt;p&gt;Sun&amp;#8217;s &lt;span class="caps"&gt;TKTK&lt;/span&gt; on today&amp;#8217;s languages.  Reference to &lt;a href="http://www.langpop.com" title="code projects, books"&gt;langpop.com language ranking based on&lt;/a&gt;.  
O&amp;#8217;reilly book sales heat map. Tiobe index.&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;"I'd rather drive nails into my head" than code in PHP. (I didn't know they had over 5000 entries in their global namespace). Languages to watch: Groovy, OCaml (fast!), Erlang (stable, concurrent),  Scala (see Twitter), Fan.&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Terms to look up: &amp;#8220;Monkey Patching&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Java isn&amp;#8217;t going away because the &lt;span class="caps"&gt;JVM&lt;/span&gt; and APIs are so mature, so the environment is being extended to Ruby, Python, Groovy, etc.&lt;/p&gt;


	&lt;h2&gt;&lt;span class="caps"&gt;NASA&lt;/span&gt;&lt;/h2&gt;


	&lt;p&gt;Curt Tilmes at Goddard&lt;/p&gt;


	&lt;p&gt;Data: Growth 3.2 tB/day; Archive 4.9PB; daily distribution processing 4.2 Tb&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;MODIS&lt;/span&gt;
250m resolution
Level 1, raw
Level 2, gridded
Level 3, best 8 day w/o clouds if possible&lt;/p&gt;


	&lt;p&gt;...&lt;/p&gt;


	&lt;p&gt;http:/www.opensource.org/licenses/nasa1.3.php
http://opensource.sfc.nasa.gov (Goddard specific, but other centers similar)&lt;/p&gt;


	&lt;p&gt;Curt gave a nice overview of opensource utilization at &lt;span class="caps"&gt;NASA&lt;/span&gt; and their attempts to contribute back.  I would have liked more specifics on his struggle just to release a &lt;span class="caps"&gt;CPAN&lt;/span&gt; module.  No specific technology takeaways, but I would like to see &lt;span class="caps"&gt;NIH&lt;/span&gt;/NCBI make a more determined effort to contribute on our periphery activities.&lt;/p&gt;


	&lt;h2&gt;&lt;span class="caps"&gt;RT3&lt;/span&gt;/4&lt;/h2&gt;


	&lt;p&gt;I tackled Jesse Vincent. between sessions.  Told him about my RT to &lt;span class="caps"&gt;JIRA&lt;/span&gt; project and my reluctance about it.&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;RT4&lt;/span&gt; is coming out but is going to be a deep rewrite with Jifty, new DB schema, AJAXy and drag-drop workflow scripting generation.  No release date set.&lt;/p&gt;


	&lt;p&gt;rt3.8 has an &amp;#8216;extract header&amp;#8217; extension for linking into other ticket systems, which could be useful to me.&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;REST&lt;/span&gt; apis have been growing and are supported.  Not &lt;span class="caps"&gt;XML&lt;/span&gt; based, can be used from command line.&lt;/p&gt;


	&lt;p&gt;Base level support is $5k.  Gold is $35k.  But is based on ticket numbers.&lt;/p&gt;


	&lt;h2&gt;Open Source Electronics&lt;/h2&gt;


	&lt;p&gt;Tom talked about using open source tools to develop your own open-source hardward projects.  Recommended references:&lt;/p&gt;


	&lt;p&gt;- Art of Electronics
- OpAmps for Everyone
- &lt;a href="owc.mit.edu"&gt;&lt;span class="caps"&gt;MIT&lt;/span&gt; OpenCourseware&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;OpenSource &lt;span class="caps"&gt;CAD&lt;/span&gt;.  Start with Paper.   Software: gEDA/gaf + &lt;span class="caps"&gt;PCB&lt;/span&gt; (first one I picked).  Should be easy.&lt;/p&gt;


	&lt;p&gt;gschem gsch2pcb to circuit baord&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;PDB&lt;/span&gt; printing is clean fast cheap, credit card.   www.4pcb.com www.sunstone.com, Alberta printed fast and cheap only two layer&lt;/p&gt;


	&lt;p&gt;Circuit simulation:  &lt;span class="caps"&gt;SPICE&lt;/span&gt;.  closed source freeware: LTSpice.  
NGspice part of gEDA project.&lt;/p&gt;


	&lt;p&gt;Digital simulation: Verilog.&lt;/p&gt;


	&lt;h2&gt;Failures&lt;/h2&gt;


	&lt;p&gt;Therac massive radiation overdose.  Removed hardware interlocks. Killed six people.  ETc. with space program, electric utilities, and so on.&lt;/p&gt;


	&lt;p&gt;Main points:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;test&lt;/li&gt;
		&lt;li&gt;test before launch&lt;/li&gt;
		&lt;li&gt;test end to end&lt;/li&gt;
		&lt;li&gt;listen to your sysadmins&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Buzzwords&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;open authentication&lt;/li&gt;
		&lt;li&gt;xmpp&lt;/li&gt;
		&lt;li&gt;jbod&lt;/li&gt;
		&lt;li&gt;json&lt;/li&gt;
		&lt;li&gt;erlang&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Tue, 12 Aug 2008 05:32:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:ccb91223-3541-4ea0-ba02-3b33d6d7427c</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/08/12/more-from-oscon-2008</link>
    </item>
    <item>
      <title>Macports without root on Leopard (and Tiger)</title>
      <description>&lt;p&gt;I don&amp;#8217;t have root on my desktop Mac at $WORK, even though I have root on about 1200 production systems.  &lt;em&gt;sigh&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;So, I asked my Mac administrator to install the &lt;a href="http://developer.apple.com/technology/xcode.html"&gt;XCode development tools&lt;/a&gt;.  Once that was done, all I needed to was the following.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Download the MacPort.tar.bz source distribution: http://svn.macports.org/repository/macports/downloads/MacPorts-1.6.0/MacPorts-1.6.0.tar.bz2&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Note:  For Leopard, one needs to apply the patch from http://trac.macports.org/changeset/32105&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Run the following:&lt;code&gt;&lt;pre&gt;

  tar -jxf MacPorts-1.6.0.tar.bz2 &amp;#38;&amp;#38; cd MacPorts-1.6.0

  PATH=/usr/bin:/usr/sbin:/bin:/sbin ./configure \
  --prefix=$HOME/macports \
  --with-install-user=`id -un` \
  --with-install-group=`id -gn` \
  --x-includes=/usr/X11R6/include \
  --x-libraries=/usr/X11R6/lib \
  --with-tclpackage=$HOME/macports/share/macports/Tcl

  make
  make install

&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Add something like the following to your Mac&amp;#8217;s &lt;a href="&lt;redpre#2"&gt;.bashrc&lt;/a&gt;&amp;gt;&lt;pre&gt;

  export PATH=$HOME/macports/bin:$HOME/macports/sbin
  export MANPATH=$HOME/macports/share/man:$MANPATH
  export PERL5LIB=$HOME/macports/lib/perl5/5.8.8:$HOME/macports/lib/perl5/vendor_perl/5.8.8:$PERL5LIB
&lt;/pre&gt;&lt;/code&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Run a selfupdate: &lt;code&gt;port selfupdate&lt;/code&gt;&lt;/li&gt;
		&lt;li&gt;Now you do can do cool things like learn Scheme over lunch with: &lt;code&gt;port search scheme; port install mzscheme&lt;/code&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I&amp;#8217;ve added this to the &lt;a href="https://trac.macports.org/wiki/InstallingMacPorts"&gt;MacPorts wiki&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 11 Aug 2008 11:02:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:5df0933c-a8ba-42a9-aa76-52b31ed3164f</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/08/11/macports-without-root-on-leopard-and-tiger</link>
      <category>System Administration</category>
      <category>macosx</category>
      <category>tiger</category>
      <category>leopard</category>
      <category>macports</category>
      <category>port</category>
      <category>10.5</category>
      <category>10.4</category>
      <category>macos</category>
    </item>
    <item>
      <title>Oscon 2008 Day One report</title>
      <description>&lt;p&gt;Outbound: Spotted at least two &lt;span class="caps"&gt;OSCON&lt;/span&gt; attendees at Dulles Airport.  One carrying a dynamic &lt;span class="caps"&gt;OLED&lt;/span&gt; keyboard (&lt;a href="http://www.artlebedev.com/everything/optimus/"&gt;Optimus Maximus&lt;/a&gt;) that can display different character set imaginable (well, 113 different ones at least), another hard at work on her &lt;a href="http://laptop.org"&gt;&lt;span class="caps"&gt;OLPC XO&lt;/span&gt;&lt;/a&gt;.     I&amp;#8217;m sure there were others, but better camouflaged.   The flight was late, and cramped, and I was keenly aware of United&amp;#8217;s 33-inch seat pitch versus the 33 inches one gets on Frontier Airlines.&lt;/p&gt;


	&lt;p&gt;The keyboard bearer was one convivial Jacob coming in from http://www.thinkgeek.com, and we together figured out the Max light rail in towards the convention center.&lt;/p&gt;


	&lt;p&gt;Monday:  At breakfast I got an inkling  that &lt;span class="caps"&gt;OSCON&lt;/span&gt; attendees are more sociable than their &lt;span class="caps"&gt;USENIX&lt;/span&gt;/SAGE counterparts. At least it wasn&amp;#8217;t pulling teeth to engage in a conversation.   Joel Noble of &lt;a href="http://www.caringfamily.com"&gt;Caring Family&lt;/a&gt; described his group&amp;#8217;s project to bring social networking to the elderly via simple pen &amp;#38; paper interfaces.  Fred Meyer of &lt;a href="http://www.usatoday.com"&gt;&lt;span class="caps"&gt;USA&lt;/span&gt; Today&lt;/a&gt; was from my neck of the woods, and a fellow bike commuter, and we ended up walking Portland in the evening.   As for the sessions&amp;#8230;.&lt;/p&gt;


	&lt;p&gt;Mastering Perl:  brian d foy got down to some essentials of his book of the same name.  Takeaways:  Profiling can be useful, Benchmarking is less useful than one thinks (unless done correctly).  Configuration is good.  As is logging and persistence.&lt;/p&gt;


	&lt;p&gt;I then succumbed to my passions instead of my rational side&amp;#8212;and jumped into the &lt;a href="http://www.arduino.cc"&gt;Arduino&lt;/a&gt; tutorial &amp;#8220;Making Things Blink&amp;#8221;.  What a trip!  Michael Dory, Adam Simon, and Scott Varland took us on a whirlwind introduction of the remarkably intuitive Arduino microcontroller system. Their kit included the Arduino Diecimila board, a interface shield, microbreadboard, LEDs, potentiometers, wiring, and force transducers.  Oh, and a copy of &amp;#8220;Making Things Talk&amp;#8221; by Tom Igoe.  Soon I was tweaking their circuit and code examples to implement my own riffs on their tutorial project, and by the end I had completed their digital &lt;a href="http://www.new.facebook.com/album.php?aid=60790&amp;#38;l=946c2&amp;#38;id=720806954"&gt;&amp;#8216;Etch-a-Sketch&amp;#8217; project&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m excited to do more&amp;#8212;and not for any practical reason.  It&amp;#8217;s just somehow exciting to get back to hardware, real transistors, resistors and diodes, after a generation of computing advances have made hardware less and less accessible at any level beyond swapping out whole components.&lt;/p&gt;


	&lt;p&gt;Peter out.&lt;/p&gt;</description>
      <pubDate>Mon, 21 Jul 2008 22:03:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:5bd67bf6-1480-40a7-aced-daea2ab69d58</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/07/21/oscon-2008-day-one-report</link>
      <category>System Administration</category>
      <category>Musings</category>
      <category>arduino</category>
      <category>perl</category>
      <category>oscon</category>
      <category>portland</category>
    </item>
    <item>
      <title>This American Life and Amazon Web Services</title>
      <description>&lt;h2&gt;Dear Ira Glass and Elizabeth Meister,&lt;/h2&gt;


	&lt;p&gt;Today I was listening to your &amp;#8220;This American Life&amp;#8221; podcast and the prelude included a fund campaign to support your podcasts.  Being a dutiful listener, and more than that, a fan committed enough to attend a live &lt;span class="caps"&gt;TAL&lt;/span&gt; show, I&amp;#8217;m going to go beyond making a $5 donation, and help you save $70,000 per year.&lt;/p&gt;


	&lt;p&gt;Today you said that on average you support 400,000 download of your podcast per week (or 1.73 million a month) at a bandwith cost of $152,000 per year (or $12670 per month).  That&amp;#8217;s a situation not unlike the one we faced at EchoDitto when Rosie O&amp;#8217;Donnell, or most prominent client, had b/w charges going through the roof when her podcasts were in the news last year.  Our solution then was to move using media hosting through Amazon&amp;#8217;s Web Services&amp;#8217; (AWS)  Simple Storage Service (S3).  Before we get into implementation, let&amp;#8217;s look at cost for using S3:&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;STORAGE&lt;/span&gt; and &lt;span class="caps"&gt;UPLOAD&lt;/span&gt;:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Typical podcast size: 28M&lt;/li&gt;
		&lt;li&gt;Podcast storage for one year&amp;#8217;s worth of podcasts (approx. 40 new podcasts per year): 1.1Gb&lt;/li&gt;
		&lt;li&gt;Monthly cost for 1 year&amp;#8217;s podcast storage with S3 (1.1.Gb * $0.15 per GB per month): 16¬¢&lt;/li&gt;
		&lt;li&gt;Monthly upload costs (10¬¢ per Gb): 1¬¢&lt;/li&gt;
		&lt;li&gt;Subtotal storage and upload per month: 11¬¢&lt;/li&gt;
		&lt;li&gt;or, effectively nothing.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;span class="caps"&gt;DOWNLOAD&lt;/span&gt;:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Bandwidth: 400,000 downloads per week of 28Mb podcasts:  10937 Gb/week, or ~50 Tb/Month&lt;/li&gt;
		&lt;li&gt;Requests: 400,000 * 4.33 : 1,732,000 GETs per month&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;And here I fall back on the 
&lt;a href="http://calculator.s3.amazonaws.com/calc5.html" title="http://calculator.s3.amazonaws.com/calc5.html"&gt;&lt;span class="caps"&gt;AWS&lt;/span&gt; monthly calculator&lt;/a&gt;
to come up $6912 per month, or $83,000 per year, an annual savings or $69,000&lt;/p&gt;


	&lt;h2&gt;Implementation&lt;/h2&gt;


	&lt;ol&gt;
	&lt;li&gt;Sign up for &lt;span class="caps"&gt;AWS&lt;/span&gt; with your &lt;span class="caps"&gt;WBEZ&lt;/span&gt; credit card&lt;/li&gt;
		&lt;li&gt;Sign up for S3, and get your &lt;span class="caps"&gt;AWS&lt;/span&gt;_ACCESS_KEY_ID and your &lt;span class="caps"&gt;AWS&lt;/span&gt;_SECRET_ACCESS_KEY&lt;/li&gt;
		&lt;li&gt;Download and install S3Fox for Firefox, and configure S3Fox with the keys from the step above&lt;/li&gt;
		&lt;li&gt;Use S3Fox to create a bucket called, say, media.thisamericanlife.org&lt;/li&gt;
		&lt;li&gt;Use S3fox to upload a podcast with an object key, say, &amp;#8216;podcast/332.mp3&amp;#8217;&lt;/li&gt;
		&lt;li&gt;In &lt;span class="caps"&gt;DNS&lt;/span&gt;, create a &lt;span class="caps"&gt;CNAME&lt;/span&gt; &lt;code&gt;media CNAME media.thisamericanlife.org.s3.amazonaws.com&lt;/code&gt;&lt;/li&gt;
		&lt;li&gt;Link to your podcast at @http://media.thisamericanlife.org/podcast/332.mp3&amp;#8217;&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;That&amp;#8217;s it.  To learn more read &lt;a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1073"&gt;Scalable Media Hosting with Amazon
S3&lt;/a&gt;&lt;/p&gt;


	&lt;h2&gt;What about streamguys.com?&lt;/h2&gt;


	&lt;p&gt;Continue to use them for streaming.  There no reason you can&amp;#8217;t split the
hosting for your downloadable podcasts vs. your streaming media.&lt;/p&gt;


	&lt;h2&gt;Downsides&lt;/h2&gt;


	&lt;p&gt;I can&amp;#8217;t think of any.  There&amp;#8217;s no upfront cost, no commitment.  You could
even use it for a handful of your podcasts to make sure your happy.  And
give everyone on staff a raise!&lt;/p&gt;</description>
      <pubDate>Sat, 07 Jun 2008 10:03:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:2aeaabc6-073d-4512-adc6-ae970e3402fa</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/06/07/this-american-life-and-amazon-web-services</link>
      <category>s3</category>
      <category>aws</category>
      <category>npr</category>
    </item>
    <item>
      <title>RPM building</title>
      <description>&lt;p&gt;It seems that most resources on the Internet about building RPMs are woefully out of date.  If you want to unpack and work on &lt;span class="caps"&gt;RPM&lt;/span&gt; source packages in, say your home directory, most documentation points you to settings for your $HOME/.rpmrc file&lt;/p&gt;


Then you get errors like this:
&lt;pre&gt;&lt;code&gt;
error: bad option 'topdir' at /home/burkholp/.rpmrc:1
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;The use of .rpmrc is obsolete.  Instead you&amp;#8217;ll want a .rpmmacros file like the following:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
%_topdir        %( echo ${HOME}/rpmbuild )
%_tmppath       %{_topdir}/tmp

%packager      Peter Burkholder &amp;lt;pburkholder@pobox.com&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Thu, 08 May 2008 06:20:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:b0db78ba-46ac-46a6-ad4d-e6ae42a35a80</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/05/08/rpm-building</link>
      <category>System Administration</category>
      <category>rpm</category>
      <category>rpmbuild</category>
    </item>
    <item>
      <title>Tornado (but only an EF1)</title>
      <description>&lt;p&gt;On Sunday, April 20, our family joined some friends at a local indoor splash pool.  We were expecting nothing but rain, rain, and more rain, and needed to get the kids good and worn out.&lt;/p&gt;


	&lt;p&gt;The boys had a great time, and had finally gotten up the gumption to go through the giant slide that started up near the facility ceiling, did a figure 8 outside, and landed with a splash into the bottom pool.  We were waiting in line for our third run when I commented to Shannen that it looked like it was raining buckets outside.  Just then we could see the weather going crazy, with sheets of rain slashing horizontally and the trees doing a crazy dance.  I shouted to Shannen to take cover, and we were running down the stairs each with one boy when the lifeguards starting blowing on their whistles to clear the pool.&lt;/p&gt;


	&lt;p&gt;What I thought was just a severe thunderstorm was an &lt;span class="caps"&gt;EF1&lt;/span&gt; tornado that missed us by 150 feet.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s a link to local TV report on the Maryland weather.  Skip the first half of the story to get to the part about the Chillum, Maryland tornado.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://youtube.com/watch?v=kmd0zqhddjw"&gt;&lt;span class="caps"&gt;VIDEO&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.erh.noaa.gov/er/lwx/events/20080420/pns.php"&gt;&lt;span class="caps"&gt;NATIONAL WEATHER SERVICE REPORT&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://tinyurl.com/5gokjc"&gt;&lt;span class="caps"&gt;MY GOOGLE MAP&lt;/span&gt;&lt;/a&gt;&amp;#8212;I went to the splash park today to map this out.  Because we left on Sunday through the front, we didn&amp;#8217;t see what had happened out on the back parking lot.  If you zoom in, you can see the outside loop of the blue tube slide:&lt;/p&gt;


	&lt;p&gt;Since we were just a few feet below the roof, I shudder to think what would&amp;#8217;ve come of us had it been our roof that came off instead.&lt;/p&gt;</description>
      <pubDate>Thu, 24 Apr 2008 19:18:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:031559e8-4dcc-4321-85eb-3ca8594068a7</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/04/24/tornado-but-only-an-ef1</link>
      <category>Musings</category>
      <category>weather</category>
      <category>tornado</category>
      <category>family</category>
    </item>
    <item>
      <title>Apache and &amp;quot;shared memory&amp;quot; issues on Linux</title>
      <description>&lt;p&gt;This morning I was having trouble getting Apache (2.0.X) to restart.  I was getting these error messages:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
[Thu Apr 10 08:32:49 2008] [crit] (17)File exists: unable to create scoreboard "/var/private/logs/apache_runtime_status" (name-based shared memory failure)
&lt;/pre&gt;&lt;/code&gt;

	&lt;p&gt;and I kept deleting the offending file, and making sure that permissions all along the path were correct.  No dice.&lt;/p&gt;


	&lt;p&gt;So I restarted Apache again running &lt;code&gt;strace&lt;/code&gt;:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
strace /usr/sbin/httpd2-prefork -X -Dprivate '-CPidFile /var/run/apache2.private.pid' -f /etc/apache2/httpd.conf
&lt;/pre&gt;&lt;/code&gt;

	&lt;p&gt;and saw output like this:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
unlink("/var/private/logs/apache_runtime_status") = -1 ENOENT (No such file or directory)
open("/var/private/logs/apache_runtime_status", O_WRONLY|O_CREAT|O_EXCL, 0666) = 9
stat("/var/private/logs/apache_runtime_status", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
shmget(16908303, 40824, IPC_CREAT|IPC_EXCL|0600) = -1 EEXIST (File exists)
write(2, "[Thu Apr 10 08:18:46 2008] [crit"..., 168) = 168
&lt;/pre&gt;&lt;/code&gt;

	&lt;h2&gt;Red Herring&lt;/h2&gt;


	&lt;p&gt;Turns out that worrying about the filesystem was a distraction.  The real issue is that the previous Apache had left behind shared memory segments that it couldn&amp;#8217;t access anymore.  Now I won&amp;#8217;t pretend that I understand the ins and outs of shared memory on Linux, but a bit of Googling led me, fortunately to &lt;a href="http://www.siphos.be/node/29"&gt;Sven Vermeulen&amp;#8217;s blog&lt;/a&gt;, where he shared a similar experience on Solaris.  I would&amp;#8217;ve left nice comments on his blog, but as he doesn&amp;#8217;t take comments, I&amp;#8217;ll give a shout out to him here.&lt;/p&gt;


	&lt;p&gt;Anyhow, the &lt;strong&gt;ipcs&lt;/strong&gt; and &lt;strong&gt;ipcrm&lt;/strong&gt; commands come to the rescue:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
# ipcs -a

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x0102000f 99942402   root      600        40824      0

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
0x00001f58 0          root       600        0            0
&lt;/pre&gt;&lt;/code&gt;

	&lt;p&gt;Ah-ha&amp;#8212;there&amp;#8217;s &lt;strong&gt;shmid&lt;/strong&gt; at 99942402.  Let&amp;#8217;s rm that:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
# ipcrm -m 99942402
# ipcs -a

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
0x00001f58 0          root       600        0            0
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;And apache started right up.  Yea.&lt;/p&gt;


	&lt;p&gt;P.S. One find out more about a shared memory segment with something like: &lt;code&gt;ipcs -m -i 99942402&lt;/code&gt;, which will report:&lt;/p&gt;


&lt;code&gt;&lt;pre&gt;
Shared memory Segment shmid=99942402
uid=0   gid=0   cuid=0  cgid=0
mode=0600       access_perms=0600
bytes=40824     lpid=6987       cpid=6987       nattch=0
att_time=Thu Apr 10 08:20:48 2008  
det_time=Thu Apr 10 08:21:55 2008  
change_time=Thu Apr 10 08:20:48 2008  

&lt;/pre&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 10 Apr 2008 06:07:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:bdb73e1d-bb02-4e94-a6b5-5e2a6de646d6</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/04/10/apache-and-shared-memory-issues-on-linux</link>
      <category>System Administration</category>
      <category>Web Development</category>
      <category>apache</category>
    </item>
    <item>
      <title>Looking up IPs with mDNS and dns-sd on Mac OS X 10.4</title>
      <description>&lt;p&gt;I forgot the IP address of my printer on my local area network at home.&lt;/p&gt;


	&lt;p&gt;And my Mac quite cleverly only had the mdns name in the DeviceURI, but for setting up an older Windows system I really wanted the IP. Here&amp;#8217;s how:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Browse for printers: &lt;code&gt;dns-sd -B _printers._tcp&lt;/code&gt; .. :&lt;pre&gt;&lt;code&gt;
  Timestamp     A/R Flags if Domain                   Service Type             Instance Name
21:56:43.972  Add     2  7 local.                   _printer._tcp.           Brother HL-2070N series&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
		&lt;li&gt;Lookup the service info for the printer you&amp;#8217;ve found: &lt;code&gt; dns-sd -L "Brother HL-2070N series" _printer._tcp&lt;/code&gt;:&lt;pre&gt;&lt;code&gt;
21:58:30.695  Brother\032HL-2070N\032series._printer._tcp.local. can be reached at BRN-7E6301.local.:515 ...&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
		&lt;li&gt;Query on the domain name: &lt;code&gt;dns-sd -Q BRN-7E6301.local.&lt;/code&gt;:&lt;pre&gt;&lt;code&gt;
Timestamp     A/R Flags if Name                             T   C Rdata
21:59:52.553  Add     2  7 BRN-7E6301.local.                1   1 192.168.15.103&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The reason to bother documenting this?  Because the Mac Os X man page for &lt;code&gt;dns-sd&lt;/code&gt; doesn&amp;#8217;t document the use of the -Q switch.&lt;/p&gt;


	&lt;p&gt;Grrrrrrrrr.&lt;/p&gt;</description>
      <pubDate>Wed, 02 Jan 2008 18:54:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:7971475d-4ecb-4b8b-823e-1d85dc8b847b</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/01/02/looking-up-ips-with-mdns-and-dns-sd-on-mac-os-x-10-4</link>
      <category>System Administration</category>
      <category>macosx</category>
    </item>
    <item>
      <title>Processing gzipped files with Perl IO:Uncompress </title>
      <description>&lt;p&gt;Idiom of the day:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ;

foreach $host ( "foo", "bar", "dev", "teset") {
  foreach $site ( "public", "private" ) {
   foreach $date ( "20071223", "20071224", "20071225", "20071226", "20071227", "20071228", "20071229", "20071230", "20071231", "20080101" ) {

     $input="/web/$host/$site/logs/access-$date.gz";
     next unless -f $input;
     my $z = new IO::Uncompress::Gunzip $input or die "IO::Uncompress::Gunzip failed: $GunzipError\n";

        while (&amp;lt;$z&amp;gt;) {
          next unless / 200 /;
          @F=split;
          ($URI, $therest) = split(/\?/, $F[6], 2);
          # perl regex operation on the URI

        }
   }
  }
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Wed, 02 Jan 2008 11:23:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:2922e3bd-d48a-4586-acd8-b13cb2108b37</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2008/01/02/processing-gzipped-files-with-perl-io-uncompress</link>
      <category>System Administration</category>
      <category>perl</category>
    </item>
    <item>
      <title>Set phasers on kill</title>
      <description>&lt;p&gt;The first time I ever used a computer was the Friday after Thanksgiving, 1978, when I got  to use the &lt;span class="caps"&gt;DEC PDP 11&lt;/span&gt;/70 system on the campus of Goshen College, where my Dad taught.  I was immediately entranced by the power and mystery of the digital computer, and quickly hooked on &lt;a href="http://en.wikipedia.org/wiki/Super_Star_Trek"&gt;trek&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Today, 29 years later, I&amp;#8217;ve found that Trek lives on, and I could obtain C-code for Mac &lt;span class="caps"&gt;OS X&lt;/span&gt; that provided an experience akin to my first experience long ago, without having to bike two miles into campus.  It took me about 40 minutes to gain enough competence to win my first game by destroying four enemies.&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/Picture_18.png" alt="" /&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 23 Nov 2007 20:39:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:83f672c2-ea5c-4d8e-8e87-75fc07660509</guid>
      <author>Peter Burkholder</author>
      <link>http://typo.pburkholder.com/articles/2007/11/23/set-photons-on-kill</link>
      <category>Musings</category>
      <category>games</category>
      <enclosure type="image/png" url="http://typo.pburkholder.com/files/Picture_18.png" length="52314"/>
    </item>
  </channel>
</rss>
