<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for logic</title>
    <link>http://www.advogato.org/person/logic/</link>
    <description>Advogato blog for logic</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 12 Oct 2008 19:23:53 GMT</pubDate>
    <item>
      <pubDate>Mon, 10 Mar 2008 02:06:44 GMT</pubDate>
      <title>Django'd
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=177</link>
      <guid>http://esm.logic.net/2008/03/09/djangod</guid>
      <description>Well, it took a bit longer than expected, but I've migrated this blog from &lt;a href="http://pyblosxom.sourceforge.net/" &gt;Pyblosxom&lt;/a&gt; to &lt;a href="http://www.djangoproject.org/" &gt;Django&lt;/a&gt;. More technical details after the jump.
</description>
    </item>
    <item>
      <pubDate>Mon, 10 Mar 2008 02:06:44 GMT</pubDate>
      <title>Adventures in blogging
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=176</link>
      <guid>http://esm.logic.net/2008/02/29/django</guid>
      <description>&lt;p&gt;
  I've been using &lt;a href="http://pyblosxom.sourceforge.net/" &gt;PyBlosxom&lt;/a&gt;
  for the last few years for my online presence here, and while it certainly
  does the job, I have a habit of getting bored with stuff that works after
  a while. So, I'm in the process of whipping up my own blog using
  &lt;a href="http://www.djangoproject.org/" &gt;Django&lt;/a&gt;, because hey, web
  frameworks are the new red. Or something. :-)
&lt;/p&gt;
&lt;p&gt;
  Actually, real reason is that PyBlosxom is category-centric; there's no real
  inherent understanding of a post having multiple categories (perhaps
  tagging/multi-category functionality is there in a newer version, but
  upgrading has always been difficult because of a few changes I've made). I
  found most posts I made ended up touching on multiple categories; racing
  and geek stuff often overlap, for example. So, lacking native tagging of
  articles, and not wanting to mess with some of the tag add-ons I've seen
  for PyBlosxom, I figured I'd just write my own.
&lt;/p&gt;
&lt;p&gt;
  What's interesting about this move is that the most recent framework I have
  experience with is &lt;a href="http://www.rubyonrails.com/" &gt;Rails&lt;/a&gt;, so it's
  been interesting to see a &lt;a href="http://www.python.org/" &gt;Python&lt;/a&gt;ista
  spin on the idea. What's funny is that, from a functionality perspective,
  they're really quite similar. Scaffolding, database interaction, view
  and administration generation are all disquietingly similar. Except, you
  know, that &lt;a href="http://www.ruby-lang.org/" &gt;Ruby&lt;/a&gt; vs. Python thing.
  ;-)
&lt;/p&gt;
&lt;p&gt;
  As expected, the basic blog application was a snap. I've been spending
  most of my time on "fit and finish"; putting together template tags for
  displaying the sidebar calendar, working out a quickie scheme for
  importing all the old data, and adapting my current "static" content
  to the flatpages contrib framework. I'm also trying to make sure I don't
  &lt;a href="http://www.useit.com/alertbox/980614.html" &gt;break&lt;/a&gt; the
  &lt;a href="http://www.w3.org/Provider/Style/URI" &gt;old URLs&lt;/a&gt; too badly.
&lt;/p&gt;
&lt;p&gt;
  Once I have most of what PyBlosxom does for me today implemented, I'll
  probably just cut over at that point. Afterward, I'll concentrate more on
  some of the specialty stuff I'd like to pull in: timeslips, logs from the
  cars, dive logs, etc. Fun stuff. :-) And at some point, I'll throw the
  whole project into &lt;a href="http://devtools.logic.net/svn/esm/" &gt;SVN&lt;/a&gt; so
  others can poke at it. (I might have to post up my calendar template tag
  on &lt;a href="http://www.djangosnippets.org/" &gt;Django Snippets&lt;/a&gt; at the very
  least, since the only other one up there uses &lt;tt&gt;datetime&lt;/tt&gt; instead of
  the new &lt;tt&gt;calendar&lt;/tt&gt; module.)
&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 29 Feb 2008 18:05:27 GMT</pubDate>
      <title>
Adventures in blogging
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=175</link>
      <guid>http://esm.logic.net/geek/2008-03-01-django</guid>
      <description>
&lt;p&gt;
  I've been using &lt;a href="http://pyblosxom.sourceforge.net/" &gt;PyBlosxom&lt;/a&gt;
  for the last few years for my online presence here, and while it certainly
  does the job, I have a habit of getting bored with stuff that works after
  a while. So, I'm in the process of whipping up my own blog using
  &lt;a href="http://www.djangoproject.org/" &gt;Django&lt;/a&gt;, because hey, web
  frameworks are the new red. Or something. &lt;img src="http://esm.logic.net/media/images/smileys/smile.png" alt=":-)" /&gt;
&lt;/p&gt;
&lt;p&gt;
  Actually, real reason is that PyBlosxom is category-centric; there's no real
  inherent understanding of a post having multiple categories (perhaps
  tagging/multi-category functionality is there in a newer version, but
  upgrading has always been difficult because of a few changes I've made). I
  found most posts I made ended up touching on multiple categories; racing
  and geek stuff often overlap, for example. So, lacking native tagging of
  articles, and not wanting to mess with some of the tag add-ons I've seen
  for PyBlosxom, I figured I'd just write my own.
&lt;/p&gt;
&lt;p&gt;
  What's interesting about this move is that the most recent framework I have
  experience with is &lt;a href="http://www.rubyonrails.com/" &gt;Rails&lt;/a&gt;, so it's
  been interesting to see a &lt;a href="http://www.python.org/" &gt;Python&lt;/a&gt;ista
  spin on the idea. What's funny is that, from a functionality perspective,
  they're really quite similar. Scaffolding, database interaction, view
  and administration generation are all disquietingly similar. Except, you
  know, that &lt;a href="http://www.ruby-lang.org/" &gt;Ruby&lt;/a&gt; vs. Python thing.
  &lt;img src="http://esm.logic.net/media/images/smileys/wink.png" alt=";-)" /&gt;
&lt;/p&gt;
&lt;p&gt;
  As expected, the basic blog application was a snap. I've been spending
  most of my time on "fit and finish"; putting together template tags for
  displaying the sidebar calendar, working out a quickie scheme for
  importing all the old data, and adapting my current "static" content
  to the flatpages contrib framework. I'm also trying to make sure I don't
  &lt;a href="http://www.useit.com/alertbox/980614.html" &gt;break&lt;/a&gt; the
  &lt;a href="http://www.w3.org/Provider/Style/URI" &gt;old URLs&lt;/a&gt; too badly.
&lt;/p&gt;
&lt;p&gt;
  Once I have most of what PyBlosxom does for me today implemented, I'll
  probably just cut over at that point. Afterward, I'll concentrate more on
  some of the specialty stuff I'd like to pull in: timeslips, logs from the
  cars, dive logs, etc. Fun stuff. &lt;img src="http://esm.logic.net/media/images/smileys/smile.png" alt=":-)" /&gt; And at some point, I'll throw the
  whole project into &lt;a href="http://devtools.logic.net/svn/esm/" &gt;SVN&lt;/a&gt; so
  others can poke at it. (I might have to post up my calendar template tag
  on &lt;a href="http://www.djangosnippets.org/" &gt;Django Snippets&lt;/a&gt; at the very
  least, since the only other one up there uses &lt;tt&gt;datetime&lt;/tt&gt; instead of
  the new &lt;tt&gt;calendar&lt;/tt&gt; module.)
&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 20 Jul 2007 13:04:13 GMT</pubDate>
      <title>
Back to the source
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=174</link>
      <guid>http://esm.logic.net/geek/2007-07-20-richard-bartle</guid>
      <description>
&lt;p&gt;
  Following on the heels of that great
  &lt;a href="http://www.advogato.org/2007-07-12-the-internets" &gt;old-school DEC advertisement&lt;/a&gt;, I
  get another blast from my non-academic past at University: an
  &lt;a href="http://blogs.guardian.co.uk/games/archives/2007/07/17/id_close_world_of_warcraft_mud_creator_richard_bartle_on_the_state_of_virtual_worlds.html" &gt;interview&lt;/a&gt;
  with &lt;a href="http://www.mud.co.uk/richard/" &gt;Richard Bartle&lt;/a&gt;, one of the
  creators of the original
  &lt;a href="http://www.mud.co.uk/richard/mud1.htm" &gt;MUD&lt;/a&gt; that ran at
  Essex University back in the late 1970s and early 1980s.
  &lt;a href="http://en.wikipedia.org/wiki/MUD" &gt;MUD&lt;/a&gt;s are the majority of
  the reason I'm doing what I do today (after a fashion), and were my first
  introduction to social computing and network programming. What's really
  interesting to me is that he's saying the same things that any of us who
  were involved in building these text-based online delusions in the 80s
  and 90s were constantly harping on about, and it all still applies even
  though the graphics have gotten better. (In fact, he makes the excellent
  point that with the improvement in visual stimulus, the ability to
  interact with the environment has actually gotten worse, because of the
  nature of ad-hoc natural language.)
&lt;/p&gt;
&lt;p&gt;
  It was a good read; I haven't played with these things in long time
  (aside from a brief flirtation with creating a
  &lt;a href="http://devtools.logic.net/trac/esm/wiki/ProjectPortal" &gt;Python-based
  runtime-mutable object environment&lt;/a&gt; similar to the facilities that
  &lt;a href="http://en.wikipedia.org/wiki/LPMud" &gt;LP-style MUDs&lt;/a&gt; had),
  so it was a nice walk down memory lane, and a reminder that there really
  isn't much new under the sun, just a prettier interface on it. &lt;img src="http://esm.logic.net/media/images/smileys/smile.png" alt=":-)" /&gt;
&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 18 Jul 2007 18:05:59 GMT</pubDate>
      <title>
Quick initrd note
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=173</link>
      <guid>http://esm.logic.net/geek/2007-07-18-initrd-note</guid>
      <description>
&lt;p&gt;
  This is mainly a note for myself, but someone else might find it handy.
  Working with modern &lt;abbr title="initial ramdisk"&gt;initrd&lt;/abbr&gt;s requires
  monkeying with &lt;tt&gt;cpio&lt;/tt&gt;, which I can never remember the correct
  command line parameters for off the top of my head. So, here's a quick
  workflow (borrowed from &lt;a href="http://www.shabazian.com/" &gt;Chip
  Shabazian&lt;/a&gt;) for manipulating an
  &lt;a href="http://en.wikipedia.org/wiki/Initrd" &gt;initrd&lt;/a&gt; image.
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;mkdir initrd
cd initrd
gzip -dc path/to/unzipped/initrd.img | cpio -id
# Make the changes you need
find . | cpio -c -o | gzip -9 &amp;gt; /path/to/new/initrd.img&lt;/pre&gt;&lt;p class="cite"&gt;
    &lt;a href="http://www.shabazian.com/lw2007.pdf" &gt;Chip Shabazian's
    presentation at LinuxWorld&lt;/a&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 13 Jul 2007 03:04:20 GMT</pubDate>
      <title>
Are you on...the INTERNET?
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=172</link>
      <guid>http://esm.logic.net/geek/2007-07-12-the-internets</guid>
      <description>
&lt;p&gt;
  &lt;a href="http://www.youtube.com/watch?v=-1l6aBgX5UY" &gt;This&lt;/a&gt;
  is too cool for words:
&lt;/p&gt;
&lt;p&gt;
  &lt;object type="application/x-shockwave-flash"
    data="http://www.youtube.com/v/-1l6aBgX5UY" 
    width="425" height="350"&gt;
    &lt;param name="movie" 
      value="http://www.youtube.com/v/-1l6aBgX5UY" /&gt;
  &lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
  God, I feel old.
&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 27 Feb 2007 17:04:25 GMT</pubDate>
      <title>
Observations on Geek Behavior
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=171</link>
      <guid>http://esm.logic.net/geek/2007-02-27-geek-behavior</guid>
      <description>
&lt;p&gt;
  I came across a &lt;a href="http://del.icio.us/" &gt;del.icio.us&lt;/a&gt; link to
  &lt;a href="http://www.codinghorror.com/blog/archives/000781.html" &gt;this&lt;/a&gt;
  article on Coding Horror this morning, and it interested me on several
  levels.
&lt;/p&gt;
&lt;p&gt;
  First, there's the obvious: the article talks about the difficulty in
  locating programmer candidates that can perform basic programming
  assignments in an interview setting. Several commenters hit on some of
  the things that can contribute to this problem, including the psychology
  of an interview environment, the ability of the candidate to manage their
  stress, and the obvious problem that there's a lot of CS graduates who
  haven't spent enough time behind a keyboard to be useful in a production
  programming shop. That's what his article is about, and I'll leave that
  discussion
  &lt;a href="http://www.codinghorror.com/blog/archives/000781.html" &gt;there&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
  I'm much more interested in the response to the article. Responses range
  from senior developers to folks still in college or high school, and the
  resounding pattern is: they want to solve the problem. That's not what the
  author was shooting for, obviously, but readers were falling all over
  themselves (myself included) to post up the first response in their
  favorite language.
&lt;/p&gt;
&lt;p&gt;
  My speculation is that programmers who love what they do - the kind of
  folks who hang out on programming-related websites, who read the latest
  O'Reilly books when they come out, who participate in open source projects
  and "scratch itches" regularly - can't ignore an opportunity for practice,
  much like what Dave Thomas &lt;a href="http://codekata.pragprog.com/" &gt;talked
  about&lt;/a&gt; when he introduced his idea of "Code Kata". Throw out the
  accusation that most programmers can't solve a simple problem, and you've
  practically demanded that they take a swipe at it.
&lt;/p&gt;
&lt;p&gt;
  There's more to it, though; lower the barrier enough, and more and more
  people get attracted to the idea. You see this kind of behavior on topical
  mailing lists: ask a complex question, and you may get an answer, but not
  a lot of people will jump up and offer their help. Ask an easier question,
  perhaps something that a lot of people know the answer to (or can easily
  derive the answer to), and suddenly, you get an overwhelming response.
  There's an aspect of ego at play here that's interesting; it's an
  opportunity to present yourself as a subject matter expert, or at least
  as someone knowledgable of issues surrounding the question.
&lt;/p&gt;
&lt;p&gt;
  Interesting stuff, to be sure. I suspect there's a good group dynamics
  case study or paper to be had here for someone with the time.
&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 20 Feb 2007 19:05:09 GMT</pubDate>
      <title>
Ruby ActiveRecord and lazy instantiation
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=170</link>
      <guid>http://esm.logic.net/geek/2007-01-18-activerecord</guid>
      <description>
&lt;p&gt;
  Let's say I have a data set in a &lt;a href="http://www.sqlite.org/" &gt;SQLite&lt;/a&gt;
  database. And, let's say I need to iterate over every row in that database,
  performing some action based on it. There's a few ways I can do this. First,
  the old, direct-to-driver version:
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;require 'sqlite3'

db = SQLite3::Database.new("test.db")
db.execute("select * from test_entries") do |row|
  ...
end&lt;/pre&gt;&lt;p class="cite"&gt;SQLite example&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
  That works, but of course, it's bound forever to SQLite, and we'd like to
  abstract that a bit. The "new hotness" appears to be
  &lt;a href="http://api.rubyonrails.org/files/vendor/rails/activerecord/README.html" &gt;ActiveRecord&lt;/a&gt;.
  So, let's reproduce that using AR:
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;require 'active_record'

class TestEntry &amp;lt; ActiveRecord::Base; end

ActiveRecord::Base.establish_connection({
  :adapter =&amp;gt; 'sqlite3', :dbfile =&amp;gt; 'test.db'
})

TestEntry.find(:all) do |entry|
  ...
end&lt;/pre&gt;&lt;p class="cite"&gt;ActiveRecord example&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
  Here's a tip: don't do that. &lt;img src="http://esm.logic.net/media/images/smileys/wink.png" alt=";-)" /&gt; That find call actually instantiates an
  ActiveRecord::Base for every single row in the database, then returns the
  result set, which you're now iterating over. So, for anything but a
  trivially-small result set, you're going to use a ton of memory, and create
  an enormous workload for very little good reason.
&lt;/p&gt;
&lt;p&gt;
  So, I suppose this blog entry is really just a whine: why isn't there a
  lazy-instantiation iterator for result sets in ActiveRecord? In this
  (common, I'd think) case where you want to do some sort of trivial filter
  or action across the entire table on a per-row basis, but don't care about
  the row after you've worked with it, that would be a huge win. The
  interesting thing is that this is exactly how the auto-generated association
  methods work, and you actually have to go out of your way to do eager loading
  of associations (since just automatically doing joins under the hood is an
  obviously bad idea).
&lt;/p&gt;
&lt;p&gt;
  My specific use case is an application log stored in a table that I'd like
  to iterate over for some basic statistical analysis, and a single day of
  logs is a 600M SQLite database (approximately 3.6M rows). This won't fly
  for doing a single day of processing, and I'd like to be able to do
  something for monthly and quarterly reporting.
&lt;/p&gt;
&lt;p&gt;
  I'll probably resort to &lt;a href="http://ruby-dbi.rubyforge.org/" &gt;DBI&lt;/a&gt;
  to accomplish this in a database-agnostic manner, but that feels like an
  incredible step backwards. I just can't understand why the &lt;code&gt;find*&lt;/code&gt;
  methods weren't written as iterators that do lazy instantiation of the
  result set; the interface would be effectively the same, but the potential
  performance gains could be tremendous in certain cases.
&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 20 Feb 2007 19:05:09 GMT</pubDate>
      <title>
Linux on a &lt;a href="http://www.penguincomputing.com/index.php?option=com_content&amp;task=view&amp;id=175&amp;Itemid=235"&gt;BladeRunner&lt;/a&gt; system
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=169</link>
      <guid>http://esm.logic.net/geek/2006-08-26-bladerunner-serial</guid>
      <description>
&lt;p&gt;
  So, you bought one of those shiny new
  &lt;a href="http://www.penguincomputing.com/" &gt;Penguin Computing&lt;/a&gt;
  BladeRunner systems, and were thinking to yourself: "I wish there were
  a good guide to getting Linux to do what it should on these things".
  Well, I'm going to try and cover two of the basics here: serial console
  configuration, and interface bonding. Everything else is pretty much
  stock stuff, but I had a heck of a time figuring out configurations that
  worked here. The discussion below assumes you're running
  &lt;a href="http://www.redhat.com/" &gt;RHEL&lt;/a&gt; or
  &lt;a href="http://www.fedoraproject.org/" &gt;Fedora&lt;/a&gt;, but the idea should
  be fairly clear.
&lt;/p&gt;
&lt;p&gt;
  First step: learn about some of the remote management features of the
  BladeRunner. You have a couple of configuration commands that are useful
  here, related to console management and power. Log into the chassis, and
  type &lt;tt&gt;conf&lt;/tt&gt;; for some reason, they put this under "configuration"
  rather than "management" or some other similar tree of the command set.
  Now, you can control power to individual blades with &lt;tt&gt;server-blade
  power &amp;lt;num&amp;gt; [cycle|forced-off|off|on]&lt;/tt&gt; (where &lt;tt&gt;&amp;lt;num&amp;gt;&lt;/tt&gt;
  is the number of the blade you're managing). &lt;tt&gt;on&lt;/tt&gt; means exactly what
  it sounds like; power on the blade if it's currently off, just like it would
  if you hit the power button on the front. &lt;tt&gt;off&lt;/tt&gt; sends an ACPI
  power vevent to the blade, advising it to shut down; it doesn't actually
  force power to be pulled; that's what &lt;tt&gt;forced-off&lt;/tt&gt; does.
  &lt;tt&gt;cycle&lt;/tt&gt; removes power to the blade, and adds it again; off the top
  of my head, I don't recall if it does so gracefully or not. Check the
  documentation, it &lt;em&gt;might&lt;/em&gt; be there (but probably not).
&lt;/p&gt;
&lt;p&gt;
  The next command that's interesting here is &lt;tt&gt;server-blade console-redirect
  &amp;lt;num&amp;gt;&lt;/tt&gt;: that grabs the serial console for that particular blade,
  and displays it to your current session. The serial console configuration
  appears to be set in stone, from what I can see: 57600 bps, 8 data bits,
  no parity, 1 stop bit, with hardware (RTS/CTS) flow control. If you power
  up a blade fresh from the factory, you'll notice that the BIOS is already
  set up to redirect output to both the serial port and the built-in KVM in
  the chassis.
&lt;/p&gt;
&lt;p&gt;
  That's about all I'll say about the chassis management side of things, since
  they actually do cover this stuff fairly well in the documentation. The
  problem I found with the documentation was that it didn't cover host-side
  configuration of certain things, specifically interface bonding and serial
  console configuration. Maybe they thought it was out-of-scope for their
  documentation; I hate to be the bearer of bad news, but the chassis is
  pretty useless without systems to run on it. &lt;img src="http://esm.logic.net/media/images/smileys/wink.png" alt=";-)" /&gt; (Here endeth the snide
  remarks, hopefully.)
&lt;/p&gt;
&lt;p&gt;
  Next up is host-side serial console configuration. This is fairly standard
  stuff, once you know what the settings need to be, but I'll spell it out
  here too. First is the bootloader; GRUB, in my case. You'll want to add a
  couple of lines to the GRUB configuration file (in the main stanza):
&lt;/p&gt;
&lt;pre&gt;
  serial --unit=0 --speed=57600 --word=8 --parity=no --stop=1
  terminal --timeout=10 serial console
&lt;/pre&gt;
&lt;p&gt;
  Optionally, you can also add &lt;tt&gt;hiddenmenu&lt;/tt&gt; to the options; that
  reduces the amount of text being displayed at boot time to a minumum,
  unless you need it. Set the timeout on the &lt;tt&gt;terminal&lt;/tt&gt; line to
  whatever is appropriate for you; 10 seconds before you're kicked to the
  primary display was good enough for my needs, since I didn't want the
  boot process to take much longer than it already did.
&lt;/p&gt;
&lt;p&gt;
  Next up, also in the grub configuration file (on the command line of each
  kernel you want to boot), are the kernel parameters that get your boot
  output sent to the right place. Adding &lt;tt&gt;console=tty0 
  console=ttyS0,57600n8r&lt;/tt&gt; to the kernel command line seemed to do the
  job for me (display on /dev/ttyS0 at 57000 bps, no parity, 8 data bits,
  hardware flow control). If this is a stock Red Hat/Fedora installation,
  I suggest getting rid of the &lt;tt&gt;rhgb&lt;/tt&gt; and &lt;tt&gt;quiet&lt;/tt&gt; entries on
  that line as well; for server use, you really want to see that console
  output, so that when you inevitably get a kernel that has a bad day, you
  don't have to monkey with grub configuration via a 57600bps serial line
  to capture the panic.
&lt;/p&gt;
&lt;p&gt;
  The final step is making it possible to log in on the console. Adding the
  following line to &lt;tt&gt;/etc/inittab&lt;/tt&gt; worked great for my needs:
&lt;/p&gt;
&lt;pre&gt;
  co:2345:respawn:/sbin/agetty -h ttyS0 57600 vt100
&lt;/pre&gt;
&lt;p&gt;
  The &lt;tt&gt;co&lt;/tt&gt; is an name for the entry, but it's become a defacto standard
  for the inittab name for the serial console entry. &lt;tt&gt;2345&lt;/tt&gt; should be
  obvious (runlevels to operate in), &lt;tt&gt;respawn&lt;/tt&gt; means run it again after
  you log out, not just once. The &lt;tt&gt;agetty&lt;/tt&gt; command line just specifies
  hardware flow control (-h), linux device (ttyS0), speed (57600), and
  terminal type (vt100); change terminal type to anything appropriate for
  your environment, but vt100 is pretty safe for most folks.
&lt;/p&gt;
&lt;p&gt;
  That covers serial console configuration. For more details on that piece of
  the puzzle, I strongly recommend reading over the
  &lt;a href="http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/" &gt;Remote
  Serial Console HOWTO&lt;/a&gt;; it discusses some of the ins-and-outs of other
  boot loaders, some other configurations you might be interested in trying,
  and some general advice for this kind of setup.
&lt;/p&gt;
&lt;p&gt;
  Next up is interface bonding; every blade has two Broadcom NetXtreme
  BCM5780S Gigabit Ethernet NICs built in, each connected to one of the
  two management blades through an internal backplane. I've been using the
  &lt;tt&gt;tg3&lt;/tt&gt; drivers for these quite successfully; the &lt;tt&gt;bcm5820&lt;/tt&gt;
  module is also available as a third-party add-on, but appears to be
  deprecated at this point. So, your &lt;tt&gt;/etc/modules.conf&lt;/tt&gt; or
  &lt;tt&gt;/etc/modprobe.conf&lt;/tt&gt; (depending on version) will likely have a
  couple of lines in it like &lt;tt&gt;alias eth0 tg3&lt;/tt&gt; for each interface.
  Next up is bonding configuration: add the following lines:
&lt;/p&gt;
&lt;pre&gt;
  alias bond0 bonding
  options bonding mode=2 arp_interval=500 arp_ip_target=10.0.0.1
&lt;/pre&gt;
&lt;p&gt;
  Change &lt;tt&gt;10.0.0.1&lt;/tt&gt; to whatever your default gateway is. You might
  be asking yourself why you shouldn't use MII instead of ARP on these
  systems, and it's a good question. The failure mode of the chassis internal
  network precludes it; you can end up with one management switch down, but
  the MII status of the ethernet interface still shows it being up. You can
  test this out by setting your bonding configuration to use MII instead,
  then yanking out one of the chassis management blades.
&lt;/p&gt;
&lt;p&gt;
  The next piece is very specific to RHEL or Fedora; please refer to your
  Linux vendor's documentation for details on how to do it elsewhere. In
  &lt;tt&gt;/etc/sysconfig/network-scripts&lt;/tt&gt;, create a file called
  &lt;tt&gt;ifcfg-bond0&lt;/tt&gt; that looks exactly like a normal &lt;tt&gt;ifcfg-*&lt;/tt&gt;
  file (in fact, you might want to just move your existing &lt;tt&gt;ifcfg-eth0&lt;/tt&gt;
  or similar file there); specify how you want this combined interface to
  behave. Then, for each of &lt;tt&gt;ifcfg-eth0&lt;/tt&gt; and &lt;tt&gt;ifcfg-eth1&lt;/tt&gt;,
  add a file that looks like:
&lt;/p&gt;
&lt;pre&gt;
  DEVICE=eth0
  TYPE=Ethernet
  BOOTPROTO=none
  ONBOOT=yes
  MASTER=bond0
  SLAVE=yes
&lt;/pre&gt;
&lt;p&gt;
  (Change &lt;tt&gt;DEVICE=&lt;/tt&gt; to the appropriate line for each device.) More
  information on interface bonding under linux is available from the
  &lt;a href="http://www.osdl.org/" &gt;OSDL&lt;/a&gt;
  &lt;a href="http://linux-net.osdl.org/index.php/Bonding" &gt;Linux networking
  site&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
  That's the main stuff. Obviously, test all of these changes with a complete
  boot to make sure console redirection is happening the way you want it, and
  to be sure that your bonded interfaces are showing up as a single
  &lt;tt&gt;bond0&lt;/tt&gt; interface (and that you have connectivity to and from them).
  Good luck. &lt;img src="http://esm.logic.net/media/images/smileys/smile.png" alt=":-)" /&gt;
&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 20 Feb 2007 19:05:09 GMT</pubDate>
      <title>
Sysadmin Day
</title>
      <link>http://www.advogato.org/person/logic/diary.html?start=168</link>
      <guid>http://esm.logic.net/geek/2006-07-27-sysadmin-day</guid>
      <description>
&lt;p&gt;
  Have you hugged your &lt;a href="http://www.sysadminday.com/" &gt;systems
  administrator&lt;/a&gt; lately? &lt;img src="http://esm.logic.net/media/images/smileys/wink.png" alt=";-)" /&gt;
&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
