<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>maelstrom</title>
  <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/" />
  <modified>2007-03-10T02:24:58Z</modified>
  <tagline></tagline>
  <id>tag:blogs.thegotonerd.com,2009:/maelstrom//3</id>
  <generator url="http://www.movabletype.org/" version="2.661">Movable Type</generator>
  <copyright>Copyright (c) 2007, Alan</copyright>
  <entry>
    <title>this, thou git, is how thou sucketh</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000689.html" />
    <modified>2007-03-10T02:24:58Z</modified>
    <issued>2007-03-09T20:24:58-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2007:/maelstrom//3.689</id>
    <created>2007-03-10T02:24:58Z</created>
    <summary type="text/plain">$ git fetch http://git.sv.gnu.org/r/coreutils.git Fetching HEAD from http://git.sv.gnu.org/r/coreutils.git using http error: Request for fe3fbf2f543e4b3a532c2b0bfd2fe18c9048caae aborted git-http-fetch in free(): error: chunk is already free Abort trap (core dumped) Why did you write git in C? Because Linus told you to?...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>$ git fetch http://git.sv.gnu.org/r/coreutils.git<br />
Fetching HEAD from http://git.sv.gnu.org/r/coreutils.git using http<br />
error: Request for fe3fbf2f543e4b3a532c2b0bfd2fe18c9048caae aborted<br />
git-http-fetch in free(): error: chunk is already free<br />
Abort trap (core dumped)</p>

<p>Why did you write git in C? Because Linus told you to?</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>thinkpad t43 key removal, assembly</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000687.html" />
    <modified>2007-02-18T20:31:49Z</modified>
    <issued>2007-02-18T14:31:49-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2007:/maelstrom//3.687</id>
    <created>2007-02-18T20:31:49Z</created>
    <summary type="text/plain">Within a few days of the destruction of my T40, I got a T43 from a guy on craigslist. The left control key promptly broke so I swapped it for the right one. There&apos;s relatively little info out there about...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>System Configuration</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>Within a few days of the <a href="http://blogs.thegotonerd.com/maelstrom/archives/000684.html">destruction of my T40</a>, I got a T43 from a guy on craigslist. The left control key promptly broke so I swapped it for the right one. There's relatively little info out there about how to assemble and disassemble keys, so here's some info on the process. Before we begin, get out your jeweler's eyepiece...</p>

<p>You can pry off the key face gently as described <a href="http://dqd.com/~mayoff/notes/thinkpad/key/">here</a>, just push away from you and up with a flat object. The face snaps into a cage mechanism consisting of three parts: a top plate and two wickets which anchor it to from the north and south respectively. Each wicket has a bar that wraps over the top plate, and two legs with pegs that secure it to the keyboard bevel. Viewed from the east or west sides, the wickets cross over each other, making an X. There is enough play in the cage's anchoring that you can squish the whole thing down flat. The only thing that impedes you is a little rubber spring glued to the keyboard bevel. This spring is primarily responsible for that distinctive Thinkpad key feel.</p>

<p>By squishing the cage flat, you can hook or unhook the wickets. To reassemble and replace a key, I found it easiest to build the cage first. Start by crossing the wickets--they are fitted to each other. While pressing the X sides of the cage in, you can slip in the face plate. Don't put on the key face yet. Attach the cage to the keyboard bevel by putting it in place and hooking in the south wicket's legs first. Getting the north wicket in is a bit of a stretch. Flatten the cage by pressing down on it until the north legs slip in. Now you can attach the key face by setting it on top of the cage and applying gentle downward force. You should hear it snap.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>cvsup</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000686.html" />
    <modified>2007-02-14T04:20:58Z</modified>
    <issued>2007-02-13T22:20:58-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2007:/maelstrom//3.686</id>
    <created>2007-02-14T04:20:58Z</created>
    <summary type="text/plain">Let&apos;s face it: cvsup(1) is mad lame, but it&apos;s about the best thing out there. These days, it seems like most unix projects expose their packaging system at the heres-how-to-build-from-source-for-me level. Some do it more elegantly than others: let&apos;s hear...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Program Idea</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>Let's face it: cvsup(1) is mad lame, but it's about the best thing out there. These days, it seems like most unix projects expose their packaging system at the heres-how-to-build-from-source-for-me level. Some do it more elegantly than others: let's hear it for bsd.ports.mk...down with dpkg-buildpkg and fakeroot and all that craptacular stuff.  Bonus points if you can check out the whole thing in one source tree (+1 BSDs, Gentoo) instead of scattered repositories. Even bigger bonus points if you don't have to inflate a monstrous working copy to check it out, and yet still track what you got. +1 BSD in that category thanks to cvsup.</p>

<p>Yet it's still crap. It's crap because cvsup doesn't need to exist. It updates the whole ports tree and even compensates for directories getting moved around. But you'd get that for free if FreeBSD would just migrate the ports tree to subversion. cvsup is just duct tape to make CVS kind of tree-versioned. Migrating to svn, however, won't happen anytime soon, because the kernel is in that same repository with the ports tree...and who wants to make the process of checking out the BSD kernel sources dependent on a trendy project like subversion? It's bad enough already that you need CVS to do that.</p>

<p>I hear you raising an additional objection: subversion working copies are a hog, both in space and time, so cvsup wins out on the performance axis. And I agree. SVK doesn't help you much here, as it contributes enough of its own flakiness to offset the working copy savings.</p>

<p>So what I'm really saying is, all of it sucks. I haven't seen something which doesn't suck yet. What the world needs now is a subversion minus the bullshit: a super-performant version control system that just presents itself through the filesystem for the most part. No not ClearCase...masochist. You'd still check out a working copy and make changes to that. But checkout would be a simple rsync operation against the repository-as-served-up-via-the-filesystem (FUSE?). The rsync could be local or tunneled over the network if the repository was hosted remotely. All you'd need is the ability access the full tree as a snapshot at every revision via e.g. /mnt/repository/$rev/.</p>

<p>Could you do this and still make it performant? A lot would depend on the filesystem module and the storage mechanism. Leaving kernel space to go talk to a database on a socket might result in heinous overhead. Just having a "real database" in your corner doesn't mean you win the fight either. At first I thought a "real database" was the solution to subversion's performance scalability problems, but the more I thought from scratch about a better schema, the more I started to understand. Supporting cheap tree copies and versioned trees at the same time is tough.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>keys of anonymous hashref: perl bug?</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000685.html" />
    <modified>2007-02-07T04:23:22Z</modified>
    <issued>2007-02-06T22:23:22-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2007:/maelstrom//3.685</id>
    <created>2007-02-07T04:23:22Z</created>
    <summary type="text/plain">$ perl -we &apos;print keys %{{}}&apos; Unmatched right curly bracket at -e line 1, at end of line syntax error at -e line 1, near &quot;%{{}}&quot; Execution of -e aborted due to compilation errors....</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Scripting</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>$ perl -we 'print keys %{{}}'<br />
Unmatched right curly bracket at -e line 1, at end of line<br />
syntax error at -e line 1, near "%{{}}"<br />
Execution of -e aborted due to compilation errors.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>514x1024 resolution</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000684.html" />
    <modified>2007-02-06T04:54:17Z</modified>
    <issued>2007-02-05T22:54:17-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2007:/maelstrom//3.684</id>
    <created>2007-02-06T04:54:17Z</created>
    <summary type="text/plain">I just had a really terrible and wonderful thing happen to me. I dropped my thinkpad T40, shattering the LCD panel at pixel y=514 and below. That&apos;s the terrible part. The wonderful part is that I am now running ratpoison...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>News</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>I just had a really terrible and wonderful thing happen to me. I dropped my thinkpad T40, shattering the LCD panel at pixel y=514 and below. That's the terrible part. The wonderful part is that I am now running ratpoison with the following fdump to compensate...the upper 2/3 of my screen is usable enough to find a replacement laptop / screen on.</p>

<p>(frame :number 2 :x 0 :y 0 :width 1024 :height 514 :screenw 1024 :screenh 768 :window 12582974 :last-access 126 :dedicated 0),(frame :number 0 :x 0 :y 514 :width 1024 :height 254 :screenw 1024 :screenh 768 :window 16777278 :last-access 0 :dedicated 0),<br />
</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>kismet signalbar / snr bar patch</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000682.html" />
    <modified>2007-01-30T03:39:16Z</modified>
    <issued>2007-01-29T21:39:16-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2007:/maelstrom//3.682</id>
    <created>2007-01-30T03:39:16Z</created>
    <summary type="text/plain">kismet patch to show correct signalbar and snr bar graphs....</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Development</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p><a href="http://thegotonerd.com/patches/signal-bars.kismet-r1942.patch">kismet patch</a> to show correct signalbar and snr bar graphs.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>irons in the fire, october 2006</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000658.html" />
    <modified>2006-10-15T02:55:47Z</modified>
    <issued>2006-10-14T21:55:47-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.658</id>
    <created>2006-10-15T02:55:47Z</created>
    <summary type="text/plain">Among the things I&apos;m working on right now: * A transactional, versioned filesystem that would be the backbone of a version control system. It&apos;s actually surprisingly easy to do, which makes me wonder why SVN got it so, so wrong:...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Program Idea</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>Among the things I'm working on right now:</p>

<p>* A <b>transactional, versioned filesystem</b> that would be the backbone of a version control system.</p>

<div style="margin-left:20px">
It's actually surprisingly easy to do, which makes me wonder why SVN got it so, so wrong:

<p>(1) SVN has many serious architectural / performance flaws. Programming on SVN's swig-generated perl bindings over the last 6 months forced me to look them in the eye. They're ugly. I'll list them off in some subsequent post. The upshot is that SVN won't scale well to the enterprise level no matter how much snake oil CollabNet pours on it.</p>

<p>(2) SVK is having a bear of a time adapting SVN to the perhaps more powerful delta-based version control model. Other version control systems which are delta-based from the get-go (darcs, git, arch) are taking over.</p>

<p>(3) And finally, from a social standpoint, the project is dead in the water. This realization was finally hammered home for me after I attended an SVN user's meeting recently in New York. Corporate interest has ruined the project. It's opensource in name only at this point. Don't expect anything great out of SVN moving forward.<br />
</div></p>

<p>* A <b>spam counterattack suite</b> which is still in need of a clever name. </p>

<div style="margin-left:20px">
It's a conglomeration of shell scripts, perl, and quite a few external unix programs. I'm currently running all the spam I receive through it, with some interesting results. I have a nice list of spammer country origins now. A database of spam characteristics is slowly growing. At some point, I'll turn the gun around and use this database to agressively reject spam delivery.

<p>The one thing that came as a surprise--but maybe shouldn't have--is that now that I've started auto-reporting all this spam to the abuse addresses, I've been getting <b>a lot more</b>. Presumably, in many cases the spammers are in control of the abuse address as well, and are appending abuse reporters onto their next big recipient list!</p>

<p>Note that what I've written here doesn't overlap much with <a href="http://spamassassin.apache.org/doc.html">Spam Assassian</a>, which is on the classification side. Rather it is complementary. From the Spam Assassin docs:</p>

<blockquote>
"SpamAssassin is not a program to delete spam, route spam and ham to
separate mailboxes or folders, or send bounces when you receive spam.
Those are mail routing functions, and SpamAssassin is not a mail
router.  SpamAssassin is a mail filter or classifier."
</blockquote>

<p>I'll release a beta of the spam counterattack suite soon. Let me know if you have any name suggestions.<br />
</div></p>

<p>* A <b>wiki markup language</b> that will take over the world. ;)</p>

<div style="margin-left:20px">
Imagine wiki markup that was solid, like tex, when you looked beneath the cute line- and block-based surface. Imagine a seamless mapping of syntax elements onto Perl classes that handle the particulars of parsing and rendering. Imagine macros and arbitrary rendering extensions for new types of content. Imagine being able to "source in" resources from the wiki or from anywhere in the internet and render them in place, including resources written in this markup language. Imagine no more stupid CamelCase convention. In fact imagine almost no constraints on entry naming other than local ones you may want to impose. Imagine an autolinking mode which crossrefs all your entries via scans for word sequences that are also entry titles, so it becomes rare to explicitly create an internal link.

<p>Imagine a sane back end that just uses the unix filesystem for organization. Imagine it's all available to you through a command line interpreter for the markup language.</p>

<p>Now imagine it's all quite simple in implementation and design. You don't believe me, do you? Wait and see.</p>

<p>This one I do have a name for, but I'm not telling you yet. ;)<br />
</div></p>

<p>* Some <b>simple tools for working with dhcp packets</b>.</p>

<div style="margin-left:20px">
In particular, I'd like to be able to convert them to a text format, edit them, convert them back and then send them out over the network. Maybe there's something out there already that makes use of Ethereal's incredibly complete packet definition database to do this.

<p>The immediate application is getting onto poorly configured wireless networks that have used up all their dhcp lease space because the default lease time is way too long. You see this at coffee shops sometimes. The regulars are hanging onto all the dhcp releases, which expire once in a blue moon. So what do you do? You sniff packets until you see a DHCPREQUEST / DHCPOFFER, you wait for that bozo to leave, change your mac address to his, and then config yourself to match either manually or by re-sending the original DHCPREQUEST.<br />
</div></p>

<p>* An executable / object file format based on Bernstein's cdb, for the text segment at least.</p>

<div style="margin-left:20px">
Imagine mmapping in your executable, doing a hash lookup and then trotting off to execute the hash value. It would be standard, crazy fast to run and link against, and allow for hugeness that ELF / COFF / EXE couldn't touch with a ten-foot pole.
</div>
]]>
      
    </content>
  </entry>
  <entry>
    <title>google acquires youtube</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000655.html" />
    <modified>2006-10-09T21:19:41Z</modified>
    <issued>2006-10-09T16:19:41-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.655</id>
    <created>2006-10-09T21:19:41Z</created>
    <summary type="text/plain">For $1.65 Billion....</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>News</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>For <a href="http://www.google.com/press/pressrel/google_youtube.html">$1.65 Billion</a>.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>idiosyncrasy itself</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000653.html" />
    <modified>2006-10-09T03:52:09Z</modified>
    <issued>2006-10-08T22:52:09-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.653</id>
    <created>2006-10-09T03:52:09Z</created>
    <summary type="text/plain"> Received: from fmmailgate09.web.de ([217.72.192.184]) by thegotonerd.com with esmtp (envelope-from ) id 1GWjJZ-000GK2-8i for [address omitted]; Sun, 08 Oct 2006 19:48:17 -0500 Reveived: from web.de by fmmailgate09.web.de (Postfix) with SMTP id B33A81C9BA8; Mon, 9 Oct 2006 03:11:24 +0200 (CEST) Received:...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Scripting</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<div class="code">
<pre>
Received: from fmmailgate09.web.de ([217.72.192.184])
        by thegotonerd.com with esmtp
        (envelope-from <camguknldept01@web.de>)
        id 1GWjJZ-000GK2-8i
        for [address omitted]; Sun, 08 Oct 2006 19:48:17 -0500
Reveived: from web.de 
        by fmmailgate09.web.de (Postfix) with SMTP id B33A81C9BA8;
        Mon,  9 Oct 2006 03:11:24 +0200 (CEST)
Received: from [81.199.62.40] by freemailng2402.web.de with HTTP;
 Mon, 09 Oct 2006 03:11:23 +0200
</pre>
</div>

<p>It was spam so I have no qualms about posting it here. "Reveived?" Am I to believe that there's some <a href="http://www.postfix.org/">Postfix</a> version floating around out there with that typo? Of course, if Mr. Venema were so good as to provide us with anoncvs I'd go find out right now, but the prospect of downloading 12 tarballs of the source and their accompanying 20 gzip patchfiles just to do a grep filled me with sadness. What has my life come to that I actually considered doing that for a split second?</p>

<p>Email as a technology is a rich source of entropy. Just try to write a "simple" (heh) <a href="http://tools.ietf.org/html/rfc2822">IMF</a> parser and you'll see what I mean. Now I get to go change a regex, and put in a wacky comment. Oh boy.</p>

<p>Incidentally I wrote a spam counterattack suite this weekend. It finally made it over the annoyance threshold for me I guess. While I'm still manually classifying it by moving it into a spam folder, now there's a queue system that lifts them out of the Maildir and <b>actually does something with the spam</b>. In fact it does a lot of stuff with the spam, including portscan the origin ip, determine country of origin, figure out the abuse address for the ip and actually mail a polite message there with the original message attached.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>wikipedia as source code / emergent trust structure</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000650.html" />
    <modified>2006-10-01T17:50:44Z</modified>
    <issued>2006-10-01T12:50:44-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.650</id>
    <created>2006-10-01T17:50:44Z</created>
    <summary type="text/plain">And here we have some bright fellow describing how you might apply a distributed version control system to it. This occurred to me probably about a year ago, and it wouldn&apos;t surprise me at all if it has occurred to...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Program Idea</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>And here we have some bright fellow describing how you might apply a <a href="http://lists.canonical.org/pipermail/kragen-tol/2005-June/000784.html">distributed version control system to it</a>. This occurred to me probably about a year ago, and it wouldn't surprise me at all if it has occurred to a great many other developers when they looked at wikipedia. The diff page is probably the biggest clue towards thinking in this direction. Then you have recent changes (the changelog, or svn log, etc.) which show the history of patches applied, and you see merges, merge conflicts, people reverting patches, etc.</p>

<p>There you have it, all the sort of behavior that arises in collaborative version control systems. Only wikipedia and wikis in general were imagined up as a totally new technical paradigm. They do introduce some amount of newness, but not a whole lot imho. The biggest thing is that contribution is so damn easy; you just need a browser. You don't even need a *gasp* text editor or a *gasp* version control system.</p>

<p>Umm, I think you do need these things. I think we've reached that point. But I also think that the original idea of low barriers to contribution is very much worth retaining. What we need is for someone to cook up a web interface to all of the important functionality in version control systems, in a way that doesn't totally suck of course. Throw in some simple editing interface and you're done--but always retain the version control system under the covers...expose that via the nice command line tools we expect of version control, and even expose it programmatically so other machines can directly interface to it, for mirroring, logging, presenting a particular logical view of the content, statistics, whatever.</p>

<p>Back to Sitataker's ideas on wikipedia. So individual people are free to run their own wikipedia and accept patches from other wikipedias. I think this is a great idea. He also talks about some wikipedias which are run by an expert, for instance a historian who has exceptional judgment when it comes to patches on WWII, and he basically acts as a branch which aggregates "good" patches on WWII. These patches are further merged to the main wikipedia site by dint of him being so famous / trusted and all.</p>

<p>I like almost everything here except the idea of a "main wikipedia site." I think for the wikipedia idea to be durable, that is going to have to go away. People hear "wikipedia" and the immediately think The Wikipedia which is the ultimate and final word on any subject amen. After all, it's all unbiased facts, right?</p>

<p>Yeah, good luck with that one. Even a collection of unbiased facts has bias; there is the selection of what unbiased facts to include, what facts to omit, the order they are presented in, and so on. There is no escaping the bias.</p>

<p>So admit wikipedia is biased. Admit that it will always be that way. Call it Jimbopedia or something. We call Linux "Linux" for a reason, we don't call it The Unix. It is A Unix variant ultimately controlled by the bias and personal tastes of one man, Linus Torvalds, and appropriately bears his name because of that.</p>

<p>You're free to fork your own Linux at any time and call it Bobix. But you've got a lot to prove if you want me to start using Bobix instead of Linux; chances are, you're not going to. Linus Torvalds is one of the best effing developers out there, and you're going to have your work cut out for you, Bob. People trust Linus. He's proved himself to them. Nevertheless forks occur and take people with them, like DragonflyBSD, for instance. These guys have really good ideas on how to do thread IPC solely via message passing, which simplifies a lot of concurrency issues. But the FreeBSD maintainers didn't quite agree, so they forked and did their own thing. Perfectly ok.</p>

<p>So to summarize, in the end you have a bunch of decentralized wikipedias merging selectively with each other, and the market determines whose best. The structure of trust will emerge, both between wikipedias, and between wikipedias and the vast public.</p>

<p>Let it emerge. Don't force it.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>happy gif freedom day!</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000649.html" />
    <modified>2006-10-01T15:37:53Z</modified>
    <issued>2006-10-01T10:37:53-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.649</id>
    <created>2006-10-01T15:37:53Z</created>
    <summary type="text/plain">Thanks Unisys....</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>News</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>Thanks <a href="http://www.freesoftwaremagazine.com/node/1772">Unisys</a>.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>plop - a simple opaque file portal</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000644.html" />
    <modified>2006-09-26T03:38:10Z</modified>
    <issued>2006-09-25T22:38:10-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.644</id>
    <created>2006-09-26T03:38:10Z</created>
    <summary type="text/plain">Plop is a simple opaque file portal written entirely in shell, for speed and for minimal dependence on extra stuff you probably don&apos;t want anyway. You share files by key (md5 checksum). To a certain extent this protects them from...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Development</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>Plop is a simple opaque file portal written entirely in shell, for speed and for minimal dependence on extra stuff you probably don't want anyway. You share files by key (md5 checksum). To a certain extent this protects them from spiders. The shared files expire after a given period of time, by default a week. Typical invocation:</p>

<div class="code">
<pre>
$ plopdb add pics/billy-taking-a-bath.jpg
$ echo billy-taking-a-bath.jpg | join - /usr/share/plop/db/master
361709f6fb0a1ccd7fbc94ffcf773fcf billy-taking-a-bath.jpg 1159847154
$ echo "http://nakedbillydotcom/plop.cgi?key=361709f6fb0a1ccd7fbc94ffcf773fcf" | \
  mail -s "naked pictures of our little darling" grandma@grandmas.isp
</pre>
</div>

<p><a href="http://thegotonerd.com/downloads/plop-1.0-beta-1.tar.gz">plop-1.0-beta-1.tar.gz</a><br />
<a href="http://thegotonerd.com/downloads/plop-1.0-beta-1.tar.bz2">plop-1.0-beta-1.tar.bz2</a><br />
<a href="http://thegotonerd.com/downloads/plop-1.0-beta-1">browse the source</a></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>the y2^63 problem</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000640.html" />
    <modified>2006-09-14T20:48:57Z</modified>
    <issued>2006-09-14T15:48:57-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.640</id>
    <created>2006-09-14T20:48:57Z</created>
    <summary type="text/plain">From Bernstein&apos;s tai64 page: &quot;Integers 2^63 and larger are reserved for future extensions. Under many cosmological theories, the integers under 2^63 are adequate to cover the entire expected lifetime of the universe; in this case no extensions will be necessary.&quot;...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>News</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>From Bernstein's <a href="http://cr.yp.to/libtai/tai64.html#tai64">tai64 page</a>:</p>

<blockquote>
"Integers 2^63 and larger are reserved for future extensions. Under many cosmological theories, the integers under 2^63 are adequate to cover the entire expected lifetime of the universe; in this case no extensions will be necessary."
</blockquote>

<p>Phew.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>structure</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000639.html" />
    <modified>2006-09-14T05:20:17Z</modified>
    <issued>2006-09-14T00:20:17-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.639</id>
    <created>2006-09-14T05:20:17Z</created>
    <summary type="text/plain">Further thoughts on the maelstrom rewrite. One really annoying set of tags in html were the hn tags: h1, h2, h3 etc. Inevitably, you added even more outer structure to the page but had nowhere else to go: you were...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Program Idea</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>Further thoughts on the maelstrom rewrite. One really annoying set of tags in html were the hn tags: h1, h2, h3 etc. Inevitably, you added even more outer structure to the page but had nowhere else to go: you were already using h1. Or you wanted some intermediate structure but were already using h1 and h2. Inevitably, it was search-and-replace night.</p>

<p>Whatever syntax I end up with, I want to avoid doing something isomorphic to this. I'd like to have a generic way to say "here's some substructure," and I don't want to worry about forgetting to close the substructure. Maybe indent level (or :set ts=2 in my case) is the way to do this. This, coupled with the ability to source in other files, allows one to define arbitrarily structured composite pages ala Wikimedia's "Main article" subsections. It's like the dual space of hypertext: rather than linking out to other pages, you can also flatten them into one big page, efficiently via some cgi / caching mechanism if need be. Over time it could acquire a sort of fractal structure as the page itself descends into tendrils of detail.</p>

<p>I think this will help me resist the urge to impose taxonomy on the content via some external system like categories. Things are not really hierarchical; only anal retentive human brains are hierarchical. This is why OOP is not so useful in the end...your data is usually more useful as a loosely related graph of stuff than as a rigidly defined hierarchy. Boy I'm starting to sound too Web 2.0 for my own taste here...oh yes and tagging, I absolutely need tagging! and a karma system! and proprietary magical algorithms to run on the graph of stuff that make random "fun" connections between things!</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>relational algebra</title>
    <link rel="alternate" type="text/html" href="http://blogs.thegotonerd.com/maelstrom/archives/000638.html" />
    <modified>2006-09-14T04:05:03Z</modified>
    <issued>2006-09-13T23:05:03-06:00</issued>
    <id>tag:blogs.thegotonerd.com,2006:/maelstrom//3.638</id>
    <created>2006-09-14T04:05:03Z</created>
    <summary type="text/plain">Been making heavy use of join(1), comm(1), cut(1) and paste(1) recently. Find myself suddenly very interested relational algebra, at least to the point where the wikipedia page is a letdown. It totally puts the cart before the horse; the math...</summary>
    <author>
      <name>Alan</name>
      <url>http://thegotonerd.com</url>
      <email>agrow@thegotonerd.com</email>
    </author>
    <dc:subject>Math</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://blogs.thegotonerd.com/maelstrom/">
      <![CDATA[<p>Been making heavy use of join(1), comm(1), cut(1) and paste(1) recently. Find myself suddenly very interested <a href="http://en.wikipedia.org/wiki/Relational_algebra">relational algebra</a>, at least to the point where the wikipedia page is a letdown. It totally puts the cart before the horse; the math is just a thin foam over the particular implementation we all ended up with, the bizarre beast that is SQL. Surely one can construct a simpler, more exact syntax.</p>]]>
      
    </content>
  </entry>

</feed>
