<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1775395887736544044</id><updated>2010-07-14T13:34:20.751-07:00</updated><title type='text'>Random Musings</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default?start-index=26&amp;max-results=25'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-2751593414851049856</id><published>2006-09-07T23:26:00.000-07:00</published><updated>2008-08-30T14:19:40.170-07:00</updated><title type='text'>The future of networking</title><content type='html'>&lt;p&gt;Back in January, I read a &lt;a title="Van Jacobson's Net Channels" href="http://vger.kernel.org/~davem/cgi-bin/blog.cgi/2006/01/27"&gt;blog post&lt;/a&gt; about Van Jacobson's talk at Linux Conf.au 2006.  (&lt;a title="LWN Coverage of Van Jacobson's LCA 2006 talk" href="http://lwn.net/Articles/169961/"&gt;LWN's coverage&lt;/a&gt; and &lt;a title="Van Jacobson's Net Channel Slides" href="http://www.lemis.com/grog/Documentation/vj/lca06vj.pdf"&gt;the slides&lt;/a&gt;)  This is some amazing stuff.  I can't really do these justice - go read.  The slides show some amazing numbers in terms of potential speedups through rearchitecting.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;What prompted this entry, however, has nothing to do with that.  Instead, it has to do with another Van Jacobson talk at Google that deserves attention - namely &lt;a title="A New Way to Look at Networking - Van Jacobson" href="http://video.google.com/videoplay?docid=-6972678839686672840&amp;q=type%3Agoogle+engEDU"&gt;A New Way to Look at Networking.&lt;/a&gt;  Where the other paper and talk were about performance, this talk is more about thinking about what's next - what will the ubiquitous network of 20 years from now look like, and how to make it work.  (I'll spoil a slide near the end, as a teaser - PGP meets BitTorrent and hitches a ride on an airplane.  (Not Pacific Air 121, however.))&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-2751593414851049856?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/2751593414851049856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=2751593414851049856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2751593414851049856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2751593414851049856'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/09/future-of-networking.html' title='The future of networking'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-2510874109011347902</id><published>2006-09-07T21:44:00.000-07:00</published><updated>2008-08-30T14:19:37.858-07:00</updated><title type='text'>Ye Olde Scrum</title><content type='html'>At work this week there was a very good talk about "&lt;a title="Scrum Et Al (Ken Schwaber)" href="http://video.google.com/videoplay?docid=-7230144396191025011&amp;q=type%3Agoogle+engEDU"&gt;Scrum Et Al", given by &lt;font size="-1"&gt; Ken Schwaber.&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Executive summary: Go watch this, if you're at all interested in Agile teams and iterative development, it's definitely worth your time.&lt;br /&gt;&lt;br /&gt;What struck me most while watching this, was how much I wished I had gotten around to reading something about it years ago.  (I still haven't, but this video is enough to get me interested now.)  At my last job, we were doing something informal, but not too far off of this.  Quarterly releases, along with a relentless pace of new features, improving interfaces, improving security, improving developer productivity, etc.  Seeing this talk reaffirms my belief that the only good way to build software products is iteratively.  Being able to say, "I only need to worry about X right now." and sitting down and doing X, getting it done, clean, bugfixed, and then being able to say, "Ok, what's next?", all the while having a product that can be released at basically any time, maybe multiple times, and a simply relentless pace of improvements?  This is &lt;strong&gt;great!&lt;/strong&gt; Unfortunately, I don't think very many business majors have figured this out yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-2510874109011347902?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/2510874109011347902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=2510874109011347902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2510874109011347902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2510874109011347902'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/09/ye-olde-scrum.html' title='Ye Olde Scrum'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-2008894514396933492</id><published>2006-08-19T08:48:00.000-07:00</published><updated>2008-08-30T14:19:35.492-07:00</updated><title type='text'>Git presentations</title><content type='html'>At Penguicon in April, I gave a basic Git tutorial, and this week at Ubucon I gave a small variation of that talk, where I tried to cover why distributed SCMs are so much better for free software work.&lt;br /&gt;&lt;br /&gt;These presentations are both up at &lt;a title="Ryan's Git Presentations" href="http://h4x0r5.com/~ryan/presentations/"&gt;http://h4x0r5.com/~ryan/presentations/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, Junio Hamano (Git Maintainer), gave a great talk at OLS:  &lt;a title="Junio Hamano's OLS 2006 Talks" href="http://members.cox.net/junkio/200607-ols.pdf"&gt;http://members.cox.net/junkio/200607-ols.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-2008894514396933492?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/2008894514396933492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=2008894514396933492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2008894514396933492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2008894514396933492'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/08/git-presentations.html' title='Git presentations'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-7103447109243509667</id><published>2006-07-03T15:17:00.000-07:00</published><updated>2008-08-30T14:19:32.906-07:00</updated><title type='text'>Hardware update (belated)</title><content type='html'>So, eventually, I did figure out what was wrong with my hardware.&lt;br /&gt;&lt;br /&gt;It appears to have been nothing more than a horribly overheating processor, and thus, fixed by a simple application of some thermal paste. (65C = bad, generally)&lt;br /&gt;&lt;br /&gt;On that note, I now have to decide what kind of upgrading I want to do, and whether or not I build a MythTV box (probably), but at least I can sit on it for a bit until prices drop as rumored in July.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-7103447109243509667?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/7103447109243509667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=7103447109243509667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/7103447109243509667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/7103447109243509667'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/07/hardware-update-belated.html' title='Hardware update (belated)'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-8007983909032914727</id><published>2006-06-02T06:04:00.000-07:00</published><updated>2008-08-30T14:19:25.833-07:00</updated><title type='text'>Passwords, argh</title><content type='html'>With all the things I need to do to get organized around a new job, one of the things I've ended up doing a lot of is creating new accounts.  With new passwords, of course.&lt;br /&gt;&lt;br /&gt;What really irks me is that there is *no* consistency in the password requirements, so, even if I wanted to reuse a password for a few things, it would be darn near impossible.&lt;br /&gt;&lt;br /&gt;{0,2}capital letters, {0,2}numbers {0,2}lowercase letters, {4-6}minimum characters, {4-8}maximum characters.&lt;br /&gt;The situation has gotten, well, frankly ridiculous.  Maybe Passport (or something similar) wasn't as horrible an idea as it first appeared.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-8007983909032914727?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/8007983909032914727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=8007983909032914727' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/8007983909032914727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/8007983909032914727'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/06/passwords-argh.html' title='Passwords, argh'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-3023240539598568276</id><published>2006-05-24T21:59:00.000-07:00</published><updated>2008-08-30T14:19:23.490-07:00</updated><title type='text'>One dead (sorta) computer</title><content type='html'>Now that I'm moved, and I'm starting to get settled in, finally, I setup some computers tonight.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt;Well, my gaming/desktop computer worked fine (actually, haven't booted Linux on it, yet, but Windows is fine.)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;My old webhost/server box is up fine, as well.&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Unfortunately, my primary NFS/file server won't boot.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I get a fun variety of errors:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt;Sometimes, I get a recursive fault and the kernel locks (2.6.16, though, I'm not sure it matters)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Sometimes, I get a "failed to mount /dev/md4, please specify root fs with root=" (etc/paraphrased)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Sometimes, I get a crc error during "Uncompressing Linux"&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Sometimes, I get an "Invalid format" during "Uncompressing Linux"&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Sometimes, I get partway into boot and a beautiful screen full or random colors and letters flashes, and the machine reboots.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Given how inconsistent the failures are, my gut says "motherboard, ram or CPU", and not harddrive.  (I did really expect at least one harddrive to fail, though.)&lt;br /&gt;&lt;br /&gt;The case for this machine did get a nice dent added to it during the move (on the motherboard side, not the other side).&lt;br /&gt;&lt;br /&gt;I think I need to make a DSL boot USB key, and see if that fixes it, just to confirm, otherwise, debugging this is going to be a pain.  Damn fileserver shouldn't be the broken machine. :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-3023240539598568276?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/3023240539598568276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=3023240539598568276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/3023240539598568276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/3023240539598568276'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/05/one-dead-sorta-computer.html' title='One dead (sorta) computer'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-4290484624322675580</id><published>2006-05-14T14:09:00.000-07:00</published><updated>2008-08-30T14:19:11.407-07:00</updated><title type='text'>News from a new state</title><content type='html'>So, as a few of the readers of this blog know, I'm moving to California (Bay Area/Silicon Valley)&lt;br /&gt;Well, technically, I suppose, I've moved.  My stuff hasn't quite arrived yet, but within the next day or two it should all arrive.  It will be nice to get my normal computers back and be able to work on a machine that isn't a laptop, while at home. I suppose I'll have to finally redefine home to be my new (expensive) apartment, as well.&lt;br /&gt;&lt;br /&gt;On to impressions of the area:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;	&lt;li&gt;Fry's Electronics (Sunnyvale) - what a cluttered mess.  They have an impressive range of stuff, but the place just feels cluttered and disorganized.&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;IKEA (I know, not really a Cali thing, but we don't have one, yet, in Michigan) - Damn, that's an impressive place to shop.&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;San Francisco itself: Umm, bring a map next time 'cuz wow, was I lost.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Admittedly, I haven't really gotten a lot of impressions together yet.  I've spent a lot of time in this first week of my new job at work, and I honestly expect that to resume after I get my stuff settled in at my new apartment, and some older commitments taken care of.  So, I think I'm liking things here, though I'm still not really entirely comfortable with it all.&lt;br /&gt;&lt;br /&gt;Anyway, I need to kill my bank account by paying all my bills (I can't wait until the reimbursement checks hit).  More later when I get some free time and something more meaningful to blog about.  (When my stuff shows up, I think I'm going to be setting up a Sunray, for example)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-4290484624322675580?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/4290484624322675580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=4290484624322675580' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/4290484624322675580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/4290484624322675580'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/05/news-from-new-state.html' title='News from a new state'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-3912819641642623016</id><published>2006-04-20T13:29:00.000-07:00</published><updated>2008-08-30T14:19:09.036-07:00</updated><title type='text'>Penguicon and Git</title><content type='html'>&lt;a title="Penguicon" target="_blank" href="http://www.penguicon.org/"&gt;Penguicon 4.0 is here&lt;/a&gt; (tomorrow), and I'll be giving a talk on &lt;a title="Git" href="http://git.or.cz/"&gt;Git&lt;/a&gt;&lt;br /&gt;at 11pm.  There should be a bunch of interesting things going on there, and free beer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-3912819641642623016?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/3912819641642623016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=3912819641642623016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/3912819641642623016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/3912819641642623016'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/04/penguicon-and-git.html' title='Penguicon and Git'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-7926158611832581990</id><published>2006-04-06T08:45:00.000-07:00</published><updated>2008-08-30T14:18:59.569-07:00</updated><title type='text'>Spanning tree and NFS</title><content type='html'>For the record, the fact that Debian's startup tends to fail in the presence of smart switches that try to do spanning-tree detection gets really annoying when you have production machines that depend on NFS servers being available.&lt;br /&gt;&lt;br /&gt;Technically, this would be solvable by building a proper hosts file on each server, but that's what DNS is for.&lt;br /&gt;&lt;br /&gt;So, I'm going to try a script like this on each server during the startup sequence, to try to delay the startup until the default gateway comes up:&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt; #!/bin/bash -e&lt;br /&gt;&lt;br /&gt;found_addr=0&lt;br /&gt;loop_count=0&lt;br /&gt;&lt;br /&gt;gw=$(/bin/netstat -rn | awk '/^0.0.0.0/{print $2}')&lt;br /&gt;echo "Gateway is $gw"&lt;br /&gt;echo "Waiting for $gw to appear in the arp table."&lt;br /&gt;&lt;br /&gt;while [ $found_addr -eq 0 ]; do&lt;br /&gt;echo "Triggering arp lookup with a single ping"&lt;br /&gt;/bin/ping -c 1 -q $gw &gt;/dev/null || true&lt;br /&gt;info=$(/usr/sbin/arp -n $gw | grep "^$gw")&lt;br /&gt;addr=$(echo "$info" | awk '{print $1}')&lt;br /&gt;hwtype=$(echo "$info" | awk '{print $2}')&lt;br /&gt;echo "hwtype = $hwtype, addr = $addr"&lt;br /&gt;if [ "$hwtype" = "ether" ]; then&lt;br /&gt;found_addr=1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;loop_count=$(expr $loop_count + 1)&lt;br /&gt;if [ $loop_count -gt 120 ];&lt;br /&gt;then&lt;br /&gt;echo "120 passes through the loop and nothing happening."&lt;br /&gt;echo "Giving up and moving on."&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ $found_addr -eq 0 ]; then&lt;br /&gt;sleep 1&lt;br /&gt;fi&lt;br /&gt;done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-7926158611832581990?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/7926158611832581990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=7926158611832581990' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/7926158611832581990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/7926158611832581990'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/04/spanning-tree-and-nfs.html' title='Spanning tree and NFS'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-2651997469322484330</id><published>2006-03-16T16:19:00.000-08:00</published><updated>2008-08-30T14:18:56.755-07:00</updated><title type='text'>Mind mapping - Vym</title><content type='html'>This week, at the &lt;a href="http://www.mug.org"&gt;Michigan User Group&lt;/a&gt; meeting, I started playing with a new tool, &lt;a title="View your Mind" href="http://www.insilmaril.de/vym/"&gt;Vym&lt;/a&gt;, that allows you to lay out thoughts, reorganize at will, and get things into somewhat of a structure. So, here's the mind map I made:&lt;br /&gt;&lt;img alt="Mug Security mind map" title="Mug Security mind map" src="http://h4x0r5.com/~ryan/mug/mug-security-small.png" /&gt;&lt;br /&gt;&lt;br /&gt;(or &lt;a title="Full size MUG security mind-map" href="http://h4x0r5.com/~ryan/mug/mug-security.png"&gt;here is a full size version&lt;/a&gt;).  Also in that directory I have the actual .vym file I made.  This is, in my opinion, and incredibly neat tool for so many things, so I have to rave about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-2651997469322484330?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/2651997469322484330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=2651997469322484330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2651997469322484330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2651997469322484330'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/03/mind-mapping-vym.html' title='Mind mapping - Vym'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-3973379558566674259</id><published>2006-03-16T14:38:00.000-08:00</published><updated>2008-08-30T14:18:54.342-07:00</updated><title type='text'>Open Source Accessibility</title><content type='html'>&lt;a href="http://www.earth.li/~noodles/blog/osa.html"&gt;Jonathan McDowell&lt;/a&gt; comments on the accessibility of people in the Open Source community - and I agree, it is an important aspect, but he mentions the fact that he hasn't asked for an autograph in a long time.  It occurred to me that in the OSS community, you don't really need autographs, all it takes is a positive comment on code you've submitted, because that's an infinitely more meaningful gesture than a meaningless autograph.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-3973379558566674259?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/3973379558566674259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=3973379558566674259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/3973379558566674259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/3973379558566674259'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/03/open-source-accessibility.html' title='Open Source Accessibility'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-8891131299263311329</id><published>2006-02-26T10:05:00.000-08:00</published><updated>2008-08-30T14:18:51.961-07:00</updated><title type='text'>Perl cross-platform compatibility</title><content type='html'>Anyone that knows me knows that my generally preferred language is Perl. (I'll wait for the jeering to die down.)&lt;br /&gt;Generally, this isn't a bad thing, as Perl is remarkably cross-platform compatible.  Unfortunately, Windows is an utter disaster in terms of compatibility with Unix based systems.&lt;br /&gt;&lt;br /&gt;Working on a few &lt;a href="http://www.kernel.org/pub/software/scm/git/"&gt;Git&lt;/a&gt; (&lt;a href="http://git.or.cz/"&gt;Introduction&lt;/a&gt;) related tools, such as a replacement for "cvs annotate"/"svn blame", we've learned that the current best practices for doing safe pipe opens aren't very compatible.&lt;br /&gt;&lt;br /&gt;For example, to call a program like "ls", you might do something like this:&lt;br /&gt;&lt;blockquote&gt;open(PIPE, "-|", "ls");&lt;br /&gt;&lt;br /&gt;while(&amp;lt;PIPE&amp;gt;) { do_something($_); }&lt;br /&gt;&lt;br /&gt;close(PIPE);&lt;/blockquote&gt;&lt;br /&gt;Unfortunately, that fails on Perl 5.6, and on ActiveState (Any version, I believe.)&lt;br /&gt;&lt;br /&gt;So on Perl 5.6, the solution is to instead do the two steps by hand:&lt;br /&gt;&lt;blockquote&gt;my $pid = open my $kid, "-|";&lt;br /&gt;&lt;br /&gt;defined $pid or die "Cannot fork: $!";&lt;br /&gt;&lt;br /&gt;unless ($pid) {&lt;br /&gt;&lt;br /&gt;exec "ls";&lt;br /&gt;&lt;br /&gt;die "Cannot exec ls: $!";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;while(&lt; $kid&gt;) { do_something($_) }&lt;br /&gt;&lt;br /&gt;close($kid);&lt;/blockquote&gt;&lt;br /&gt;But this fails on ActiveState, because ActiveState doesn't handle the forked pipe open well (ok, at all).  ActiveState doesn't appear to have a good solution for this, at all, so at this point, we're forced to fall back on something like backquotes (``) or the easier to read qx(). (qx() is just an alternate form of backquotes, that gives you some control of how interpolation happens.&lt;br /&gt;&lt;br /&gt;The problem with using qx() is that it is a backquote form, so it return a list of lines, not a filehandle.  Since that's a very different way to do things, and potentially a big performance hit on systems that don't need the qx() work arounds, I forced myself to find a way to just hide the complexity:&lt;br /&gt;&lt;blockquote&gt;sub open_pipe {&lt;br /&gt;if ($^O eq '##INSERT_ACTIVESTATE_STRING_HERE##') {&lt;br /&gt;return open_pipe_activestate(@_);&lt;br /&gt;} else {&lt;br /&gt;return open_pipe_normal(@_);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub open_pipe_activestate {&lt;br /&gt;tie *fh, "Git::ActiveStatePipe", @_;&lt;br /&gt;return *fh;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub open_pipe_normal {&lt;br /&gt;my (@execlist) = @_;&lt;br /&gt;&lt;br /&gt;my $pid = open my $kid, "-|";&lt;br /&gt;defined $pid or die "Cannot fork: $!";&lt;br /&gt;&lt;br /&gt;unless ($pid) {&lt;br /&gt;exec @execlist;&lt;br /&gt;die "Cannot exec @execlist: $!";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return $kid;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;package Git::ActiveStatePipe;&lt;br /&gt;use strict;&lt;br /&gt;&lt;br /&gt;sub TIEHANDLE {&lt;br /&gt;my ($class, @params) = @_;&lt;br /&gt;my $cmdline = join " ", @params;&lt;br /&gt;my  @data = qx{$cmdline};&lt;br /&gt;bless { i =&gt; 0, data =&gt; \@data }, $class;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub READLINE {&lt;br /&gt;my $self = shift;&lt;br /&gt;if ($self-&gt;{i} &gt;= scalar @{$self-&gt;{data}}) {&lt;br /&gt;return undef;&lt;br /&gt;}&lt;br /&gt;return $self-&gt;{'data'}-&gt;[ $self-&gt;{i}++ ];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub CLOSE {&lt;br /&gt;my $self = shift;&lt;br /&gt;delete $self-&gt;{data};&lt;br /&gt;delete $self-&gt;{i};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub EOF {&lt;br /&gt;my $self = shift;&lt;br /&gt;return ($self-&gt;{i} &gt;= scalar @{$self-&gt;{data}});&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;It should, hopefully, be fairly obvious what is going on there.&lt;br /&gt;&lt;br /&gt;For a normal system, we use the Perl 5.6 compatible method, and return a filehandle that works normally.&lt;br /&gt;&lt;br /&gt;For an ActiveState system, we tie a glob to a special object that provides some very basic emulation of a filehandle, and internally, calls qx() and indexes across an array returning the data.&lt;br /&gt;&lt;br /&gt;So, that's how "git annotate" is going to be cross-platform compatible, at least, as of today, that is my plan.&lt;br /&gt;&lt;br /&gt;Thanks to Randal Schwartz (merlyn) for providing part of the inspiration for this, and the rest of the people on the Git list that helped hash out various approaches to this that didn't quite seem as clean or as nice as this one, in the long run.&lt;br /&gt;&lt;br /&gt;I think this method keeps all the security advantages of the argument list forms, while actually still managing to work on crippled systems, so I'm fairly pleased with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-8891131299263311329?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/8891131299263311329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=8891131299263311329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/8891131299263311329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/8891131299263311329'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/02/perl-cross-platform-compatibility.html' title='Perl cross-platform compatibility'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-5980435757205494398</id><published>2006-02-16T16:33:00.000-08:00</published><updated>2008-08-30T14:18:49.298-07:00</updated><title type='text'>Yaird support for module options</title><content type='html'>I recently was given a Dell Latitude 610 to use for work.  So of course I'm running Debian on it.  Tonight, I decided to play a DVD, and realized I had never tried to use the DVD player.&lt;br /&gt;&lt;br /&gt;Turns out that with SATA drives, you need to give the module option atapi_enabled=1 to make it work.  To get this option into the initrd, I had to create a file named /etc/modprobe.d/local as follows:&lt;br /&gt;&lt;blockquote&gt;options libata atapi_enabled=1&lt;/blockquote&gt;&lt;br /&gt;and then recreate the initrd with:&lt;br /&gt;&lt;blockquote&gt;mkinitrd.yaird -o /boot/initrd.img-2.6.15-rc5-686 2.6.15-rc5-686&lt;br /&gt;&lt;br /&gt;update-grub&lt;/blockquote&gt;&lt;br /&gt;and now I'm watching Kill Bill 2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-5980435757205494398?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/5980435757205494398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=5980435757205494398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/5980435757205494398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/5980435757205494398'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/02/yaird-support-for-module-options.html' title='Yaird support for module options'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-2991889575268065142</id><published>2006-02-05T16:33:00.000-08:00</published><updated>2008-08-30T14:18:46.530-07:00</updated><title type='text'>Switching to a UTF-8 based system</title><content type='html'>On Friday, I started switching my work machines over to a default locale of en_US.utf8, so diff would work correctly on UTF-8 text files containing Korean.&lt;br /&gt;&lt;br /&gt;At home, I read my work email (typically) via mutt, which I leave running in a screen session.  It turns out that this change means I need to switch basically everything at home over, as well.  Well, I'll leave that for a rainy day, but for the time being, I've started up a few shells (urxvt) with LANG=en_US.utf8 instead, so things will work in the meantime.&lt;br /&gt;&lt;br /&gt;I should have done this a long time ago, to be honest, but I guess I'm still a little bit worried about how widespread support for this is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-2991889575268065142?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/2991889575268065142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=2991889575268065142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2991889575268065142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/2991889575268065142'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/02/switching-to-utf-8-based-system.html' title='Switching to a UTF-8 based system'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-4227800914883335590</id><published>2006-01-17T07:46:00.000-08:00</published><updated>2008-08-30T14:18:43.303-07:00</updated><title type='text'>The Linux Kernel, Debian packages, and fakeroot.</title><content type='html'>In a vain attempt to let more people stumble across this, the "deb-pkg" target in the Linux Kernel makefile now needs to be run with &lt;code&gt;fakeroot -u&lt;/code&gt; instead of &lt;code&gt;fakeroot&lt;/code&gt;, due to a change in the way scripts/setlocalversion tracks down the current git version.&lt;br /&gt;&lt;br /&gt;I plan on taking another look at the builddeb script to see about incorporating this into it, internally, but I also need to verify if the build process for a rpm needs to be run as root or if it can run as any user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-4227800914883335590?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/4227800914883335590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=4227800914883335590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/4227800914883335590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/4227800914883335590'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2006/01/linux-kernel-debian-packages-and.html' title='The Linux Kernel, Debian packages, and fakeroot.'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-3540809517887101762</id><published>2005-10-14T02:42:00.000-07:00</published><updated>2008-08-30T14:18:31.409-07:00</updated><title type='text'>Free newgroup access...</title><content type='html'>       Free download limit:  2.00GB&lt;br /&gt;             Current usage:  1.68GB&lt;br /&gt;                     As of:  10/14/2005&lt;br /&gt;        Monthly projection:  871.59GB&lt;br /&gt;&lt;br /&gt;I appear to have, umm, timed my usage today quite well. :)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-3540809517887101762?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/3540809517887101762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=3540809517887101762' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/3540809517887101762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/3540809517887101762'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/10/free-newgroup-access.html' title='Free newgroup access...'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-620730741549223686</id><published>2005-10-11T15:43:00.000-07:00</published><updated>2008-08-30T14:18:20.997-07:00</updated><title type='text'>Serenity</title><content type='html'>There's a good &lt;a href='http://www.reason.com/hod/js093005.shtml'&gt;review of Serenity&lt;/a&gt; on Reason.com.  (Spoilerific.)&lt;br /&gt;&lt;br /&gt;I don't follow many of the references present in that review, but I think I get the idea, and I'll summarize it:  Serenity is, in every sense of the word, Sci-Fi.  Much of what we call Sci-Fi in the modern genre misses many of the older, classic Sci-Fi meanings.  I think Serenity is a well executed reminder that Sci-Fi is more than just "guns in space".&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-620730741549223686?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/620730741549223686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=620730741549223686' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/620730741549223686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/620730741549223686'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/10/serenity.html' title='Serenity'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-5472555080681397235</id><published>2005-09-25T14:00:00.000-07:00</published><updated>2008-08-30T14:18:06.169-07:00</updated><title type='text'>LaTeX, grad school</title><content type='html'>In the interests in doubling up some learning this weekend, I spent 5 or 6 hours using LaTeX to do some homework for my graduate-level Databases Class.  (Aside: I'm attending Grad School at &lt;a href="http://www.secs.oakland.edu"&gt;Oakland University&lt;/a&gt; now.  I kinda missed going to school.  On the other hand, I kinda miss free-time now.  but whatever.)  So, I really am intrigued by the power LaTeX has.  The learning curve on it is a bit daunting at first, but once you get the hang of typing out equations in it, it's really not so bad.&lt;br /&gt;I don't think I could imagine using anything else to do equation-laden things in the future....  So, for anyone reading this and pondering how to handle equation-laden stuff - I really don't think there are any realistic options for you, outside of learning LaTeX.  If anyone is interested, post a comment and I'll put up the raw .tex file I used for this.  (Well, after I turn the homework in.  Gotta have some ethics.)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-5472555080681397235?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/5472555080681397235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=5472555080681397235' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/5472555080681397235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/5472555080681397235'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/09/latex-grad-school.html' title='LaTeX, grad school'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-6858185710900621354</id><published>2005-09-05T02:58:00.000-07:00</published><updated>2008-08-30T14:18:03.504-07:00</updated><title type='text'>I spoke to soon</title><content type='html'>The Intel wireless drivers are rather old, and seem to be less stable than the current development drivers.&lt;br /&gt;&lt;br /&gt;I don't really understand why the 1.0.0 driver went in, rather than the 1.0.6 driver, given that the 1.0.6 driver has been out for several months.&lt;br /&gt;&lt;br /&gt;In any case, I put a vote in for a more current driver, on the kernel list.  Now I wait.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-6858185710900621354?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/6858185710900621354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=6858185710900621354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/6858185710900621354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/6858185710900621354'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/09/i-spoke-to-soon.html' title='I spoke to soon'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-6954458025954588944</id><published>2005-09-03T14:32:00.000-07:00</published><updated>2008-08-30T14:17:51.785-07:00</updated><title type='text'>Finally, Intel wireless drivers in the kernel</title><content type='html'>I've been hand-building my IPW2200 drivers for a while, but as of today (maybe yesterday), the drivers are part of the main kernel tree.&lt;br /&gt;&lt;br /&gt;This makes me very happy.   My laptop is now fully functional from the mainline kernel. (Toshiba Satellite A55-[something])&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-6954458025954588944?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/6954458025954588944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=6954458025954588944' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/6954458025954588944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/6954458025954588944'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/09/finally-intel-wireless-drivers-in.html' title='Finally, Intel wireless drivers in the kernel'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-4379155331630538575</id><published>2005-08-20T06:47:00.000-07:00</published><updated>2008-08-30T14:17:49.217-07:00</updated><title type='text'>GenCon 2005</title><content type='html'>I'm at GenCon again this year, working for SaberTooth Games.  (A division of Games Workshop now.)&lt;br /&gt;&lt;br /&gt;This is pretty nice, relaxing, running small events and helping teach people how to play the game - and getting to know the people we'll be working with next year if things grow bigger.  It's really the first low-stress GenCon I've had in 4 or 5 years.  Something about not trying to run tournaments for 200+ people for 3 days straight is rather nice.&lt;br /&gt;&lt;br /&gt;Oh, and I think the new Warhammer 40k CCG (Dark Millenium) is actually a pretty easy to learn game.  Simple rules, nice level of tactics to expand into... so, I'm kinda enthused by it, too.&lt;br /&gt;&lt;br /&gt;So, anyway, that's my thoughts from GenCon.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-4379155331630538575?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/4379155331630538575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=4379155331630538575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/4379155331630538575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/4379155331630538575'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/08/gencon-2005.html' title='GenCon 2005'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-4361685744933980023</id><published>2005-08-13T02:21:00.000-07:00</published><updated>2008-08-30T14:17:46.738-07:00</updated><title type='text'>Stupid web tests</title><content type='html'>&lt;a href="http://www.nerdtests.com/ft_cg.php?im"&gt;&lt;br /&gt;&lt;img src="http://www.nerdtests.com/images/ft/cg.php?val=6844" alt="My computer geek score is greater than 99% of all people in the world! How do you compare? Click here to find out!"/&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-4361685744933980023?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/4361685744933980023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=4361685744933980023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/4361685744933980023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/4361685744933980023'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/08/stupid-web-tests.html' title='Stupid web tests'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-5789398297134687415</id><published>2005-07-28T19:15:00.000-07:00</published><updated>2008-08-30T14:17:44.397-07:00</updated><title type='text'>Getting noticed, corrollaries</title><content type='html'>I've picked up some web browsing via "planet" sites recently.  Most notably, &lt;a href='http://planet.arslinux.com'&gt;Planet Arslinux&lt;/a&gt;, but also &lt;a href='http://planet.debian.org'&gt;Planet Debian&lt;/a&gt; and &lt;a href='http://planet.kernel.org'&gt;Planet Kernel&lt;/a&gt;.  On Planet Arslinux today, I saw &lt;a href="http://little.xmtp.net/blog/2005/07/28/getting-noticed/"&gt;Jay Wren's post about products being noticed.&lt;/a&gt;.  This got me to thinking - and especially, his points about iTunes and Google made me think about why I'm a user of those two things, and also, other things.&lt;br /&gt;&lt;br /&gt;As I ponder this, I realize that the products I'm passionate about, all share a common trait.  Mostly, I hate their competition because it sucks.  I think this is just another way of saying the "10 times" rule Jay postulates.&lt;br /&gt;&lt;br /&gt;With Google, I switched because it worked, and found me the information I needed.  This was a rather remarkable feature at the time.  Mostly because search engines just sucked.   With iTunes, I started using it because I bought an iPod.  On the other hand, it's actually a really good mp3 player.   And CD ripper.  ID3 tag editor..... etc.    It does a good job at all these things.  None of the other players I've used provided all these features in one spot and got more than one of them right.  In fact, most failed to get even one right.  So, it's not that iTunes is great.  It's just that the rest suck.  (My mp3 player of choice before I stumbled on iTunes was a hand-written Perl script that I called "weightedplay", that automatically noticed new mp3s and played more recently added stuff slightly more often than older things.  It was really quite simple, and other than it's lack of GUI, it was better than anything else I'd found for just playing songs.)&lt;br /&gt;&lt;br /&gt;So those are the things that come to mind immediately, and why I switched away from their competitors.  I'll bring up another one, that's occurred to me as I write this.  A long, long time ago, I switched from using RedHat as my Linux distro of choice, to using Debian.  In this case, it wasn't because Debian was great.  I had done some customizations to my RedHat installation in strange places (/etc/inetd.conf, IIRC), and doing an upgrade wiped out those changes without warning.  In retrospect, after years of being away, I realize that my customizations *might* have been saved in .rpmsave files.  But I was angry, so I found another distro that I was promised would &lt;em&gt;tell me&lt;/em&gt; before it nuked my customizations.  In the meantime, I've realized that apt actually works, and that I don't really mind my packages being a little bit old if they work, so I'm happy with Debian.  But I think this proves that it's not how good the new choice is, but how much you dislike the old choice that sets these patterns in our minds.&lt;br /&gt;&lt;br /&gt;This is the thing MicroSoft doesn't get on search.  For a very long time they thought that it was OK to fool their users by sneaking in paid-for results in their search listings.  That's bad, and hurts the accuracy of their results, in the user's minds.  This is why they will be struggling to recover influence in search for a very long time.  (Oddly, I've noticed that Google's advertisements are usually well targetted at my searches, which is pretty nice.  I've even occassionally clicked on one.  The beauty of relevance.)&lt;br /&gt;&lt;br /&gt;So, I guess that's my take on the thought.  It's not how good you are, but how bad you make your competitor look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-5789398297134687415?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/5789398297134687415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=5789398297134687415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/5789398297134687415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/5789398297134687415'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/07/getting-noticed-corrollaries.html' title='Getting noticed, corrollaries'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-525948410994380602</id><published>2005-07-28T13:04:00.000-07:00</published><updated>2008-08-30T14:17:39.820-07:00</updated><title type='text'>Ok, fine...</title><content type='html'>Meme of the week - what OS are you?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bbspot.com/News/2003/01/os_quiz.php"&gt;&lt;img src="http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg" width="300" height="90"border="0" alt="You are Debian Linux. People have difficulty getting to know you.  Once you finally open your shell they're apt to love you."/&gt;&lt;br /&gt;Which OS are You?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Humourously, the only computers I have at home that aren't running Debian at the moment are my WRT54G and my Tivo. &lt;br /&gt;&lt;br /&gt;That makes 7 others that are running Debian.  I need a local mirror.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-525948410994380602?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/525948410994380602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=525948410994380602' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/525948410994380602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/525948410994380602'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/07/ok-fine.html' title='Ok, fine...'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1775395887736544044.post-7398064045611542025</id><published>2005-07-22T22:05:00.000-07:00</published><updated>2008-08-30T14:17:37.451-07:00</updated><title type='text'>Git - A short update</title><content type='html'>I've been spending my free time hacking away on "Git", the source code management tool created by Linus Torvalds.  It's rather absorbing now that I'm really starting to grok how the command line tools all work, and I'm adding my own into the mix to fill the gaps.  I guess the trick to everything is to just start using it so you figure out what is missing, either in the tool, or in your own knowledge.&lt;br /&gt;&lt;br /&gt;I wish I felt up to trying to convert work to this tool - maybe I'll do that next year when our BK licenses come up for renewal again.  I suppose I should get around to figuring out how to pull all the data out of BK and reimport all of it into Git then.&lt;br /&gt;&lt;br /&gt;Ugh, to say the least.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1775395887736544044-7398064045611542025?l=blog.h4x0r5.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.h4x0r5.com/feeds/7398064045611542025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1775395887736544044&amp;postID=7398064045611542025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/7398064045611542025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1775395887736544044/posts/default/7398064045611542025'/><link rel='alternate' type='text/html' href='http://blog.h4x0r5.com/2005/07/git-short-update.html' title='Git - A short update'/><author><name>Pug Majere</name><uri>http://www.blogger.com/profile/02285214866616328026</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00740342590234697482'/></author><thr:total>0</thr:total></entry></feed>