Can anyone remember if I visited Cornell sometime between '96 and '99? I have some memories of going back and maybe going to a CSLUG meeting and/or gaming. But they're vague enough to be memories of considering going back to Cornell mixed up with earlier memories, and I can't fit such a trip in to what I know I did.
Doesn't help that I'm reading a wacky fantasy novel set at Cornell, "Fool on the Hill" by Matt Ruff. Who I discovered via his more recent "Bad Monkeys" -- a book that makes accidentially constructed memories seem pretty tame.
Help? :-)
(And yeah, whether or not I did make it there in the late 90's, it's well past time that I got up there again. Hint.)
My rogue memory wasn't so rogue after all. Kyle and Joel helped find some evidence of gaming activity, and now I've found all the details in my mail archives of the trip, and also attending CSLUG, in February '97. Turns out that I do remember the other part of the trip, which was visiting Anna at Swarthmore.
Nice to have electronic archives, as the meat ones fade away..
Often if you see a block diagram like this, what comes to mind is a compatability layer in between a program and several operating systems. Generally something that's general-purpose like java, or a web browser, or a widget toolkit.
-------------
| |
| |
-------------
| |
-------------
| | | | |
-------------
(Generally it's drawn up all purty, but I'm lame.)
But lately I've seen and written a lot of code where the diagram is more complex:
-------------
| |
| program |
| |
| | | | |
-------------
| V| C| S| |
-------------
| OS |
-------------
Sometimes the program code is littered with multiple switch statements, as
in debcheckout
, debcommit
, and etckeeper.
case "$vcs" in
git)
svn)
hg)
esac
Sometimes it pushes the VCS-specific code into modules.
use IkiWiki::Rcs::$rcs;
rcs_commit();
But if it does, these modules are specific to that one program. This isn't
a general-purpose library.
dpkg source v3
doesn't need to use the VCS is the same way as ikiwiki, and even
ikiwiki's rcs_commit
is very specific to ikiwiki, in its error handling,
conflict resolution, locking, etc.
pristine-tar injects and extracts data directly from git, using low-level git plumbing, in a way that probably can't be done at all with other VCSes. But even as I was adding that low-level, very git-specific code into pristine-tar, I found myself writing it with future portability in mind.
if ($vcs eq 'git') {
# git write-tree, git update-index, and other fun
}
else {
die "unsupported vcs $vcs";
}
When Avery Pennarun talks about git being the next unix, he's talking about programs like these, that build on top of a VCS.
But if git is the next unix, then so is mercurial, so is darcs, so is bzr, so too even svn (unless it's Windows?). In other words, we're back to the days when every program had to be ported to a bunch of incompatible and not-quite-compatible operating systems. Back to the unix wars.
In Elija's discussion of the "limbo" VCS state he gives several great examples of how multiple VCSes that each seem on the surface to offer similar commands like "$vcs add" and "$vcs commit" can behave very differently.
echo 1 > foo
$vcs add foo
echo 2 > foo
$vcs commit
What was committed, "1" or "2"? Depends on which $vcs
you use.
Compare with unix where open(2)
always opens a file, perhaps with
different options, or different handling of large files, but portably
enough that you generally don't need to worry about it. Even if you're
porting to Windows, you can probably get away with a compatability layer to
call whatever baroque monstrosity Windows uses to open a file, and emulate
open(2)
close enough to not have to worry about it most of the time.
A thin compatability layer that calls "$vcs add" isn't very useful for a program that builds on top of multiple VCSes. mr is essentially such a thin compatability layer; it manages to be useful only by being an interface for humans, who can deal with different limbo implementations and other quirks.
The VCSes are to some degree converging, but so far it's mostly a surface convergence, with commands that only look the same. Where will things go from here?
- Maybe there will be a standardisation effort like POSIX for VCSes. Though it seems harder; VCSes have a wider interface than just syscalls and filesystems, so there's more scope for incompatibility.
- Or will complicated compatability code like cygwin be developed, to let a program that was written for git use bzr instead, carefully hiding all the differences?
- Another option would be that one VCS wins. So far I'm seeing some consolidation, but little indication that one VCS will emerge as the choice for everyone.
- Maybe the VCSes might begin to support each other's repositories. If a program only supports git, and you use svn, that's fine, if git can transparently access the svn repo.
- Or will we go on for decades spending a lot of time on portability code?
I've been sucked into this alternate reality game, "The Lost Ring", which involves 6 people who woke up with amnesia in labyrinths around the world, blindfolded, with a tattoo "Trovu la ringon perditan". It involves a lost Olympic sport, lots of Greek mythology and history, and lots of puzzles and detective work.
Currently 26 pages of a codex are being tracked down from hiding places all around the world, with ones in Cardiff and Austin recovered over the past few days, one in Shanghai that I hope will be reached soon, and a location just discovered in Stockholm (in a bread store!), that someone needs to go check out.
(Update: Jon read about it in my blog and went and got photos! page 1 page 2.)
This is the first time I've played an alternate reality game, but the way the story is told, through blogs, podcasts, youtube videos, email with the characters, and recovered documents like this, is quite compelling.
Also interesting is all the use of Esperanto, as well as characters who speak Spanish, French, German, Chinese, Japanese, and Portuguese, so that translation is an ongoing part of the game.
Daniel, there have never, ever, been any changes in ikiwiki can could result in GUID changes on upgrade, with the exception of enabling usedirs, which is something you have to do manually. And there never will be any if I have anything to say about it..
Of course, you can cause the GUIDs of posts to change by renaming or moving the files around, or by changing the url to your blog.
Doesn't explain why it happened of course..
PS, can I git clone your blog from somewhere? There's an interesting blip in your RecentChanges page that I'd like to figure out, where one time the change author is listed as "Daniel Burrows Daniel_Burrows".
I just bought 5 copies of the Official Catholic Directory Anno Domini 2005. It's a big book - 4 pounds. Sadly it's the paperback, not the fancy hardbound version. But I own Amazon's entire stock. Because it cost 2 cents a book, and I needed exactly 10 cents added to my order to get free shipping.
To make up for this gross excess, I'd really like to find something useful to do with the 4 copies of this book I won't use. Yeah, I'm actually interested enough in looking up obscure Honduran churches and poring over province maps and necrology indexes to maybe justify one copy. (No, not Catholic!)
For the rest, I need something better than trying to resell it on Amazon for $578.54 as several other people are cunningly attempting to do.
Something better than, well, TP.
I suppose I could hollow it out and hide a computer in it, and sell that for $578.54.
Still brainstorming...
Update: 11 April 2008.. my birthday, and Amazon ended my fun with the following mail:
We're still trying to obtain the following item[s] you ordered on March 17 2008
22:31 PDT (Order# 002-7120322-XXXXXXXXXX).
"Fred Equal Measure Measuring Cup" [Kitchen]
Estimated ship date: 05/14/2008 - 05/29/2008
"The Official Catholic Directory Anno Domini 2005 (Official
Catholic Directory)" [Paperback]
Estimated ship date: 05/01/2008
You have unique (and excellent, of course) taste, and this item is difficult
for us to get our hands on.
Debian bug #472401 "why is xdm playing Death Metal?"
(Written before I read today's xkcd BTW.)
A year ago I posted an anti-platform with some things I wanted to work on over the next year or three. This is a followup to see what, if anything, has been accomplished.
constantly usable testing
CUT generated some discussion in the project, but I've done nothing toward it myself. The only real progress in this area over the last year has been increasing improvements in the testing security team, and the release team, both of which I'm not currently active in.
deprecating www.debian.org
This continues to happen organically, for example, Debian Weekly News stopped and http://wiki.debian.org/DeveloperNews took its place. Aside from pointing out that this is happening, I haven't done much to push it.
double the archive sync frequency again
Sadly, this has not happened yet.
automated whole system testing
HP donated a test machine, which I set up to run emulated tests of installations of i386, amd64, s390, mips, and mipsel. (Arm and armel should be added soon.) I don't always manage to keep all the tests working at all times by myself, but they have been valuable.
developer (virtual) machines
My test machine spits out disk images for 5 architectures that have debian pre-installed on them, but due to hosting issues I have not been able to share those images with others yet.
find the next nslu2
I was pretty sure this would be OpenMoko's Neo phone, but I have only briefly had access to one, and it's not clear it will be easy enough to get the hardware to make it worthwhile to target it.
Meanwhile, tbm has found a more nslu2-like next nslu2, the QNAP Turbostation NAS device, and there's work underway to fully support it from d-i onwards.
Others have also worked on running Debian on various related AP hardware, including the ASUS WL-500g and Linksys WRTSL54GS, using OpenWRT to boot Debian. There's instructions and downloads on a wiki page. It would be good to get this fully supported without the hacks.
Gah, I have a Wikipedia entry about me now.
Not sure how I feel about that. I have never edited a page on Wikipedia, except discussion pages -- somehow it seemed best to not get sucked in -- and somehow that turned into a personal policy of never editing pages there. So I can't fix errors/omissions on the page.
(No "going to DebConf" badge here because my plans are still at the consistency of un-set jello.)
Two yummy things I enjoyed slightly before their season today:
Yellow squash and zucchini lightly boiled with corn and sun dried tomatos. Would be boring in summer, but it's amazing now.
dpkg triggers, which I've implemented in menu, and have lots of other ideas to use.