Older blog entries for tripp (starting at number 10)

Single Sign-On:

Bram and raph: I assume that the point of the challenge / response pairs is to collapse the backchannel into an occasional "stocking up" transaction between blog.example.com and signon.example.net?

However, why not just have blog.example.com register a public key at signon.example.net, then generate the challenge by encrypting a shared datum with its private key as the challenge? When signon.example.net redirects the user back to blog.example.com, it can similarly encrypt the response so blog.example.com will know the response is authentic. That way, the sites don't need to "stock up" on challenge / response pairs.

Having said that, I now want to make the case that the backchannel is important for the non-trivial logout case. The user needs to be able to log out concisely from all SSO sites. The best way to do that, without forcing a double-check between blog.example.com and signon.example.net every time the user hits a page is for signon.example.net to tell any "active" sites that the user has logged out.

Unfortunately, this means signon.example.net is going to have to retain some state. However, I think that's an unavoidable necessity, as you also want the user to control what sites are allowed to use the signon profile. I can't imagine not wanting a site to be part of my profile, but, well, maybe I can :)

The backchannel can also be useful, when the client supports images, for implementing a "silent", webbug-based login. blog.example.com includes an image that's hosted on signon.example.net. Upon receipt of that request, signon.example.net sends a backchannel message to blog.example.com confirming the user's signin status. Subsequent pages at blog.example.com can then take advantage of that status without the user ever following the login button.

Assuming blog.example.com gives signon.example.com the graphics (through the backchannel, through prior agreement, or by reference in the webbug's src URL), then the user gets immediate feedback about their login status by which graphic signon.example.net returns.


Bram's description of the single sign-on proposal also made me realize I should evangelize the use of example.{com,net,org} here. BCP 32 / RFC 2606 reserves four TLDs (.test, .example, .invalid, and .localhost) for use in testing, documentation, etc. It also reserves the SLDs example.com, example.net, and example.org. It recommends using the .example TLD for documentation, though I personally believe the "average reader" will more readily recognize an example.{com,net,org} SLD as a "domain name".

Anyway, the reason I implore you to use the RFC 2606 domains comes from (admittedly embarassing) direct, personal experience. A long time ago (okay, two years), my primary mailserver was still running some egregious sendmail hacks (written by my local guru, not me) that provided virtual domains (before they were standard). Unfortunately, my meager understanding of those hacks, and the amount of cruft we had built around them, conspired to keep me from correcting the fact that the machine was an open relay.

While working at jGuru, I "helped out" a few of our gurus who needed a decent relay, didn't have SMTP AUTH support in their clients, and didn't have fixed IPs (and had ISPs that were refusing to relay mail coming from within their networks not bearing a From: address of @isp.example.com. Sigh.)

I promise, this is going somewhere. Anyway, one of the gurus was writing a piece on sending mail from within Java. In that piece, he provided code that used my mail server as its MTA. So, until I managed to (a) close the relay (which, yes, I know, I needed to close and I was being an irresponsible Internet citizen and so forth) and (b) get the article rewritten to use mail.example.com instead, I put up with a bounce message every day or three from someone that didn't understand they needed to put in the address of their own SMTP relay.

Now it's my sworn duty to evangelize RFC 2606. And to get websites to properly accept the plus sign (+) in the lefthand side of an email address. And to get them to accept the plus sign in a phone number. And to get AT&T to keep my bill available online for more than three months. I go paperless to save them money and they can't keep 7k of compressed data around for more than three months. Anyway, that's Mr. Quixote to you!

So, how about blog.example.com and signon.example.net? :)


A fantastically productive week. 70+ hours on the clock from Monday to Monday (inclusive). The project isn't delivered yet, but I cleaned up a lot of cruft, and put in place a new architecture that I can phase in piecemeal and still start enjoying from day one. Also tried out some simple XP refactoring tricks that are obvious and yet somehow overlooked :) (rename the old thing and all clients of it, create the new thing, migrate clients one by one, then remove the old thing).

Also, I finally wrote a wrapper for Perforce's branching that does all of the steps involved in maintaining the most common kind of branch I make. Now branching is a one sweetly simple step. Note that the agony here is introduced by my very anal separation of clients per branch, not by any inherent limitation of Perforce (not that Perforce doesn't have inherent limitations, mind you).

I bought Microsoft:

I bought really cool-looking game this weekend - Age of Empires II, The Age of Kings (as a reward for later, when I've gotten some more bits delivered). Opened it up and read through the instructions. Only later did I notice the Microsoft logo on the box. Sigh. I would have rather supported a smaller, hungrier shop if I'm going to indulge in a little bit of proprietary software compromise.


On the subject of compromise, I had a good discussion with Allen Briggs over lunch the other day. As I creep up on thirty (1973-04-06), I'm doing the understandable reflection, introspection, and general "what have I done, and what do I have left to do?"

The short answers are "not much" and "a lot", but those grossly oversimplify things, because the truth is that I've done a fantastic amount, but have little tangible evidence of it.

Anyway, in the process of all of this, I realized that, whenever we get around to having kids, I want to raise them to see a pragmatic balance between their idealism and the mundane, material needs and desires of the world. There is a grounding in compromise I never got, which I think might have helped me to further my ideals.

What it boils down to is, ironically, something Stallman wrote in Copyleft: Pragmatic Idealism:

If you want to accomplish something in the world, idealism is not enough--you need to choose a method that works to achieve the goal.

I say "ironically" because the kind of pragmatism I'm talking about is precisely the kind Stallman rejects in other writings. I guess you could call it "embracing the enemy". Or just "selling out".

When I raise my kids, I'm going to try teach them to think clearly and rationally about what they want to accomplish, and to weigh the ethics of acting quickly to achieve more, versus acting slowly to achieve less, but achieve it more purely.

In practical terms, I'm going to advise them to go out, make assloads of money while they're young, energetic, and full of bright ideas, then turn around and spend that money while they're older, wiser, and can make it do the most good to bring about all of the changes they wanted to see when they were younger.

Because I've learned one thing, finally, and I learned it from Fried Green Tomatoes. Older and richer beats younger and faster.

Of course, the inherent challenge is to remain internally faithful to your ideals while you're externally working in apparent opposition to them.

With that said, I'm also going to do my damndest to teach them that they can work outside of where their ideals would otherwise take them to rake in the cheddar. For instance, I'm going back to school in the fall and getting an accounting degree. Who knew? Anyway, that way, when Irene gets out of law school, we can open a firm that does accounting and law in one place (useful when estates and the like are your bread and butter work). Both accounting and law can be fantastically lucrative, and even so when done ethically (if you pick the right areas of both, of course :) ).

And all of that can pay me, ultimately, to write more Free software. And raise kids who can follow their own dreams without looking back and wondering where the time went.

Fortunately, longevity runs in my family, so I've still got at least two more of my lifetime so far to noodle out the rest of the details and make my big contribution :) I mean, look at Dave Winer. He's my dad's age, and he's still got the juice. I mean, I respectfully disagree with some of his positions (more, later), but he keeps stretching himself and his ideas, and keeps generating vision. No ossification there. Keep it up, Dave!

Work Stuff Dept.:

Feature Complete is a fantastic cure for depression. Not that I've reached that milestone yet, but delivering functionality always makes me feel good.

(as an aside, speaking of depression, the Buffy "Once More with Feeling" soundtrack has been in almost constant rotation in my CD player. Why I'm still using a CD player is a long story, though. Sigh.)

I was reflecting on how cool it is to be able to string together these incredible components and build useful, helpful tools for people. Over the past few nights, I've taught the Monkey (our content management system) to render PDFs on its own, without the aid of any silly print-from-Web or HTML translation tools. I'm rendering the content into an XML template, then using XSLT to transform that XML to XSL-FO, then running it all through FOP to generate the PDF.

The whole system has a lot of tweaking, robustness enhancements, and so forth to go, but the fact is that it renders PDFs now. And that is an incredibly sweet feeling.

Anyway, back to my reflection. I realized how much more rewarding programming is for me in the Free Software continuum. It's tremendously liberating for me to be able to build so easily on the work of others without always degenerating into cursing their names, skills, existences, etc. :)

Seriously, in my (now long past) days as a Windows programmer, I spent an awful lot of time with my blood boiling. I spent long, livid moments debugging incredibly opaque systems. Granted, Microsoft has made available a prodigious amount of documentation on the various shortcomings of their systems. But no amount of documentation will, in a pinch, substitute for the source. That is, as they say, the ultimate doc.

Home Destruction^H^H Improvement Dept.:

My bathroom remodeling project is also approaching Feature Complete. It's been a doozy. I'm learning all sorts of fantastic things about construction techniques in the U.S. in the sixties. I'm also learning about how leaks cause wood rot, and how many layers of tile, flooring, etc., you can pile up before it's really time to tear things out and start over.

In many ways, it's an awful lot like software development :)

The saddest part of it all is that I'm a renter. Oh, well. At least I'm a renter who's lucky enough to be married to a woman endowed with (more or less) saintly patience and endurance.

Oh, yeah, this would be a good time to point out that the marriage is still quite fantastic, even after almost eighteen months. I say "even after" because I often hear tales of the honeymoon ending after the first year. Well, I guess we chose wisely, because I still like to sit and try to figure out what I did to deserve this gift.

Philosophy Wars Dept.:

I really want to respond eloquently to the various concerns I've heard voiced by and linked from by a few notable bloggers. Add to that the recent letter (now withdrawn) suggesting "banning" the GPL from government-funded projects in favour of differently-restrictive licenses.

But I lack the energy and focus right now to do so in a manner consistent with my abilities, so I won't. I promise, as soon as I get my own damned blog up (which is a major project, because I'm not really happy with any of the tools available, which, of course, means writing code), I'll weigh in. As if anyone cares. "Does anybody even notice? Does anybody even care?"

DSL has been down for over two weeks now. Harumph.

Ilan: +1 on the "move a dumb TTY interface to a dumb GUI interface and it's still a dumb interface" sentiment. As for telling everyone to fuck off while going off on your own, it's tough. I say that having some experience doing so :)

The toughest part about it isn't building the house, it's finding a place to live while you're growing the trees. (uh, metaphorically speaking :) ). What I mean by that is this: while we're off in the hills, writing the code which will be the basis of truly great systems, life goes on. Meaning bills demand payment, code begs writing, and so on. All of that ultimately means that things need doing, and people like us are extremely likely to want to do those things on the machine. In fact, to do them otherwise would be silly, and probably piss us off.

The catch, of course, is that the whole reason we're off in the hills, growing trees for our new house, is that we don't like the accomodations we have. Not only that, but we can't find a supplier of quality timber products that meet our aesthetic, structural, and environmental impact standards. Meaning that we generally don't like the software that's out there, and don't even like the tools we'd have to use to build "better" software :)

So we can choose amongst these options (in no particular order):

  • Do things manually (like, paper and pencil manual) (Incidentally, this is what Ted Nelson does (did?) for a long while.)
  • Do things manually (like, electronic manual) in hopes of eventually harvesting the data.
  • Do things with the software we don't like, both to "get it done faster" (though not as fast as it would be with our tools), and in hopes of eventually harvesting the data).
  • Take the time to write "just enough" of the software we need to do it "close enough" to the way we would do it once the trees had grown to maturity.
  • Convince someone else to do things for us in whichever way suits them (ie: delegate).
  • Convince someone else to do things for us in whichever way suits our ultimate needs (ie: delegate but with guidelines).

Case in point: I've been working on selfish off and on since about 1997. Before the insights that lead me to the particular fusion of ideas in that, from about 1993 on, I was working on something called ev, which was basically just a semantic network (though I didn't know it at the outset). All of the pies into which I dip my fingers are ultimately connected to a unified vision of information being both everywhere and in one place (conceptually speaking). That is, I'm tired of entering data many times :) I want everything I touch to be a part of a seamless, holistic system.

My stubborn insistence on this vision has lead me to a place where I'm about two and a half years behind on basic financial paperwork (both for the tax man and for "proper" management of my business). Needless to say, that's a very bad place to be. So, with enough pressure from people around me, I finally sat down and forced myself to take a hard look at the problem space, and figure out the shortest path to my immediate goal (note: not to fulfillment of my vision, but to the intermediary goal of avoiding imprisonment).

Armed with a ruthless disregard for the purity of my vision, I decided to use GnuCash. It has a "good enough" balance of strengths and weaknesses (note: according to my vision and the standards that vision defines). Since it's GPL'ed, I know that I'll be able to harvest my data one way or another, if I even care about that when the time comes.

And so, here I am, entering reams of data from poorly managed paper files, trying to make sense of it all, and wondering exactly where I'm going to come out. Ultimately, though, I know that, no matter how painful it is, this process is getting me closer to the goal. Persevere is my mantra. Every step I take toward getting things in order is ten steps I'll have free tomorrow to put towards my real work.

I just keep reminding myself that the really great thing about the house I'm building is that it can house as many people as want to live there.

30 Jul 2001 (updated 30 Jul 2001 at 06:08 UTC) »
Things I've learned recently:

screen rocks. It's wonderful having four pine windows open, each on a different mailbox, and not having to worry about shutting them all down and opening them all back up whenever I change locations. It's also great just being able to remotely detach my laptop's session when I happen to log in from somewhere else, and catch my pine session right where I left it.

Now if we can only get this for GUIs. I mean, aside from using VNC. Though I suppose there's no real shame in that. Hmm...

Keep your books up to date. I am now in the middle of the pain of entering two and a half years of back accounting information, so I can catch up on my taxes and turn in some expense reports for a former employer. This would have been so much less pain if amortized over those years.

By the same token, what kept me from doing it as I went was a lack of tools that I considered "up to the task", and a lack of time to invest in seriously writing them. The various proprietary packages had too much baggage (beyond their proprietariness), and I didn't want to wrap myself up in that only to not be able to get my data back out when I was ready to move on or write something.

So, in a way, it's actually good that I'm doing it all at once. Even though it's a lot of work, because I'm doing it over the same few days, it's all going in relatively consistently. If I did it over two and a half years, I can see my ways of dealing with various entry challenges drifting over time.

This would be a good time to give kudos to the GnuCash folks. Even though I have nits to pick on every scale from the trivial to the Colossal with the package and the code (because I'm that kind of asshole :) ), I respect mightily the work they're doing and the size of the task they've undertaken. And, the bottome line is that, for all of my "I would do it this way" and "it doesn't work the way I want it to" blustering, the shit works, which happens to be the single most important goddamned thing to me right now.

I hope that previous paragraph comes out as the compliment I intend it to be :) If not, and you're a GnuCash developer, send me your PayPal info and I'll buy you a beer as a more succinct statement of my appreciation. Hell, even if you did read that as a compliment (and you're a GnuCash developer), send it anyway. Because, hey, free beer. Cold beer. :)

MDF is friggin' heavy. I'll post pics later, but the short version is that I got tired of trying to cobble together shop cabinets out of the random (too small) pieces of OSB I had lying around, so I went out and bought 5 sheets of 3/4" MDF, 1 sheet of 1/2" MDF, some 1/4" Luaun, and some 1/4" Masonite. All of it, piled onto a little Toyota pick-up, made the lee-springs bend entirely opposite of the way they're supposed to at rest. Of course, these springs were already in pretty bad shape. Or were they? And don't get me started about getting it all into the shop. Ugh. And this is supposed to be a relaxing hobby. Whatever.

MDF is doubley-friggin' dusty. I suppose, for the benefit of the non shop-inclined out there, I should recap what MDF is. It stands for Medium Density Fiberboard, and is a manufactured sheet lumber product that has excellent dimensional stability (ie: doesn't warp, swell, etc., with changes in humidity), machines very well (ie: routers and table saws love to chew it up with nice, clean, precise edges), and takes paint very well.

The problem is the very reason it machines so well: it's made up of highly compressed, very small wood particles. This is not that particle board crap that all of the crummy furniture you buy at Wal-mart is made from. This is like cardboard dust (yea, dust) that's been packed together with adhesive. So when you machine it, you get back cardboard dust. And it gets everywhere. I had to go get a special bag and HEPA filter for my Shop-Vac(tm) just to suck it all up without stopping every five minutes to clean the filter.

Plans are helpful. For the aforementioned shop-cabinets, I went all-out exhaustively anal in planning them. I fired up Visio (yeah, I know, I'm a bad person) and laid them out in excruciating detail. I made a sheetgoods cutlist, along with little machining diagrams to tape to each piece as it went through the shop. When it finally came time to run everything through the sharp, fast-spinning things, it went down without a hitch. I was incredibly surprised, because my entire woodworking history to date has been a serious of fuckups :|

No, really. Plans are helpful. Of course, there were a few things that I decided to "free-hand", because I hadn't completely finished the plans in one or two minor places. Want to guess what happened? Yeah. I fucked it up. Sigh. Fortunately, as I mentioned, they were relatively minor details, and I managed to hide them well enough :) But still, it's annoying.

I should start woodvogato.org, for the two people other than me that actually give a shit about free software and woodworking :)

Ah, well. Back to the bookkeeping grind. Soon, I'll be in good with the tax man again, and will be able to focus my energies on software instead of vague, unidentified worrying.

Obligatory Douglas Adams Note:

As revealed to Arthur through the Scrabble tiles in Life, the Universe, and Everything, the Ultimate Question is "What do you get if you multiply six by nine?" Those of us steeped in basic arithmetic since an early age, of course, dismiss this out of hand without thinking too hard about it.

However, I'd like to point out that it works if you do the math in base 13, which is somehow quite appropriate.

Farewell, Mr. Adams. I already miss the works you'd yet to make.

Personal Life Dept.:

15 days and counting. Two weeks from tomorrow, I will be married. The last time I went through this process (being engaged), it was two years away and I woke up every morning feeling like I needed to puke my guts out.

That was because it was the wrong relationship.

This time is totally different. Each day that passes, I get more excited about the impending ceremony! I'm pretty sure that's a good sign :)

Geek Issues Dept.:

In the "License Wars" department, I read this article talking about Ransome (Caldera) Love's agreement with Microsoft's "claim that the GPL doesn't make much business sense."

In much the same way that anti-rape laws don't make sense to someone looking for sex at any cost.

I don't mean to trivialize rape by that statement; rather, I mean to exploit the obviousness of that concept to explain what can be esoteric and abstract licensing issues.

Microsoft is absolutely right: the GPL doesn't make business sense-- for Microsoft. They can't steal your code if you release it under the GPL. They have to play as an equal partner. They have to share.

The GPL does make business sense if you're considering how to open up your own "intellectual assets" for public consumption. If you release your sources under a wolf-in-sheep's license like the early Apple license, you'll hear a great hue and cry from "the community". If you release your sources under a Libertarian[1] license like the BSD license, you expose yourself to competitive disadvantage when someone else wraps their extensions around your code and closes up the whole mess.

Under the GPL, when you decide to release your work, you're not doing it "for free". You're doing it for compensation in kind. You're saying "you can stand on my shoulders, as long as I can turn around and stand on your shoulders" (I'm trying to picture that, and it's painfully recursive, but I think you know what I mean).

You are saying, in effect, "I'm giving you a competitive advantage by offering you my work, but I expect that advantage returned by equal access to your improvements on my work."

As with all things, this is a choice. You choose to release your source under the GPL. When I choose to use your GPL'ed sources, I have chosen to share equally with you everything I link to your code; all of my improvements.

Returning to my earlier analogy, that sharing is consensual sex.

On the other hand, when you decide to release your source under terms that don't bind me to share, you open yourself to intellectual gang rape. As an individual, I can take your software, make my own improvements, and close it up. I'm not much of a threat to you that way, because we probably have similar resources at our disposal, and my closed model will likely fall to your open model at the end of the day, because your customers will have the security of knowing they can always pay someone else to continue your work.

On the other hand, if I'm a large corporation, and I'm threatened by you, I can use your more permissive license as leverage against you. I have might. I have numbers. I have a marketing engine that can convince the public that you "were asking for it". And I can take your code, make incompatible modifications, release it in closed form throughout my entire installed base, and give you little chance of fighting back.

Again with the analogy, taking is rape.

In the end, I choose the GPL not because I'm afraid of what individuals might do, but because I've seen what corporations will do.

I choose the GPL because no means NO.

Footnote: "Libertarian" Licenses

I call the BSD license family "Libertarian" here because it depends on the individual responsibility and ethics of each member of the community. In politics, I lean toward Libertarianism. However, I see the same problems with it here in the licensing world that I do in the "real" world; namely, that unscrupulous people can and do wield influence far out of proportion to their number when the head large, cash- and power-rich corporations. Ultimately, I'd really like to see a union of the Green and the Libertarian Parties into one killer third-party that could mop up the Republicrats.

Reading Dave Winer's Scripting News seems to bring out the writer in me. I'm not sure precisely what nerve his work touches, but it encourages me to speak in my voice, and tell my story. I'm not saying my story is particularly exciting, newsworthy, or worthy of your rapt attention. I'm just saying that it needs telling, even if it's just to stroke my own need to tell it.

Then again, opening up our thoughts and feelings through our words might be just as important as opening up our ideas through our code. Ultimately, we're all part of a great conversation. I've suddenly reminded myself of Jonathan Carroll's incredible Outside the Dog Museum. I don't want to give it away, but it deals with the Tower of Babel myth. Carroll indirectly suggests that architects' duty is to draw humanity back together through our work, and to ultimately celebrate our shared divinity in a common language.

If that's part of what we're doing, sign me up. I never wanted my life to be about small things, anyway.

It's official! I'm engaged to the best girlfriend I could possibly imagine. This is my second time being engaged, but I took my time, this time, and I believe we're taking this step for the right reasons.

The engagement announcement brings with it a funny story. Well, I say "funny" in the euphemistic sense one uses when one can do little more than laugh at a situation so far out of hand. I won't bore you with the details, but let's just say that, since an incident in the eighth grade when a teacher put her job on the line to cover my lie, honesty and integrity have been exceptionally important to me. My commitment to integrity means that I work very hard to make my thoughts, words, and actions consistent. I often describe this by saying "if I'm lying to you, it's because I'm lying to myself."

I have never been one to blindly follow tradition. That's not to say I don't follow traditions, mind you. I just choose which ones I follow carefully, and with an eye toward whether or not I believe in their innate value. Speaking in the terms defined above, that means I can't follow a tradition just to follow it, I have to believe it.

To make a long story short, after much discussion, we decided that a reasonable compromise between what I wanted, what Irene wanted, and what we knew her father wanted, would be for me to ask for his blessing on our engagement. I regarded that as perfectly reasonable. The more people that are rooting for you, the better you're likely to do. It's an energy transfer thing. What I absolutely would not do was ask for permission to marry. It's not that I don't respect the man or his traditions, it's just that my asking his permission would not have been an act of integrity, because I don't believe that I (or we) need his permission. There's no point in asking someone's permission when you know you're going to bloody well do it no matter what they say. You might apprise them of your intentions, but if you're going to do it anyway, I believe that falsely asking for permission is, in fact, quite disrespectful.

So I asked for his blessing, and got it (along with an earful about how our current living situation isn't right). The next day, after watching a lamb roast on a spit all day (which, incidentally, is very fascinating), we extended the olive branch a foot farther by asking him to do the honor of announcing the engagement to those gathered for Easter. He said (emphasis mine):

Tripp and Irene have very honorably asked for my permission to marry, and I have given it...

Oh, well. We tried. It really doesn't matter, ultimately, but it does illustrate what we're up against.

I'd talk about technical things, but all I've done is fight fires and fix mistakes all week, which hasn't been very rewarding. Well, I did get some serious hacking done late last week and over the weekend on p4.py, a library for writing scripts against a Perforce depot in Python. Like all of my code, it rocks mightily, but is not ready for release :)

I should point out that I'm an Aries. Not just any Aries, either, but an Aries born right at the apex of the Aries cycle (April 6th). It's nice work, if you can get it. Well, I enjoy it, anyway. But, if you follow these things, you know that we're entering Taurus now, which is good, because Taurus finishes things, and I have a lot of crap that needs finishing! In fact, I need about a whole year of Taurus energy to catch up :)

I renewed my hatred for all things Windows this evening when I actually tried to do something with it. You see, in my dark, sordid past, I was a Windows developer. No, that's not quite accurate. I was a Windows zealot. Seriously. I used to rag on the Unix-heads at Interop, saying that NT was going to eat their lunch.

Here I am, a decade later, having matured. I now realize that all software sucks in its own, special way, and that we must choose which particular combination of suckage we want to embrace.

I tried to install StarOffice this evening on the snazzy dual-processor, half-gig of RAM, forty-bazillion gigabyte of disk monster machine that work sent me. You know, the one Irene reads her email on because I do everything on my laptop :)

Anyway, this monster runs Windows 2000, which, I must confess has been more stable and certainly prettier than any Windows incarnation I've had the displeasure to bend to my will. It runs Windows 2000 because my ultimate task for my present employer is to write a pretty wicked set of tests and benchmarks for some Java stuff, and I have to deploy my test suite on many platforms. Dur.

So, until I get to a state where I need to use it for testing, that box is essentially relegated to:

  • Surfing raverporn
  • Reading email
  • Downloading images from the digital camera
  • Watching DVDs (for novelty value and screenshots; I have a real DVD player for chillin').

Back to my story... Irene says she needs to work on her resume, and I don't have any "real" office suite loaded on that machine. So, being a reformed Windows luser, and an affirmed Free Software Zealot for quite some years, now, I go grab StarOffice. She's used it before, under Linux, and it's now open source, so at least I have the peace of mind that comes from knowing that, if I have the time, I can fix it :)

Have you played with "junctions" under Win2k at all? They are Microsoft's answer to symlinks. I'm not sure why they couldn't call them symlinks, but that's another story. Anyway, I never liked that whole C:, D: crap, so when I formatted another partition of the mammoth drive for Win2k's use, I went ahead and mounted it under c:\big_disk, instead of giving it its own drive letter. I figured that would work well for me. Sort of a "Unix" feel to things.

Tonight I go to install StarOffice, and the damned thing keeps complaining that there isn't enough space on drive C. Of course not! That's why I was putting it into c:\big_disk. But apparently, the StarOffice installer hasn't yet caught up with the notion of "junctions", so it didn't realize that c:\ had 99MB free, but c:\big_disk had 3.75GB free.

I can forgive StarOffice for that. After all, I have the source, so if it really chaps me, I can fix it. That's the kind of freedom I appreciate. What torques me is what happened next, when I tried to clean up.

I figured "well, gee, there's all this crap in Program Files, so maybe I can just move that over to c:\big_disk and make a symlink back so everything can find itself". So I started copying. Well, as you might expect, it didn't want to finish copying because some of the things in Program Files were locked by apps that were using them. No matter that the only apps I had running were Command Prompt and Explorer. Oh, wait, did I say Explorer? Right... Frigging plugins. You know, OLE/COM/ActiveX/?? objects that extend the Explorer interface to handle different filetypes, different actions, and different presentations? I mean, it's cool technology, but all I want to do is copy my files!

So I figure, "hmm, maybe Win2k has a decent safe mode in which all these extensions are shut off, so I can copy the files around without tripping over dependancies". So I reboot. What? Reboot Windows? Never...

I obligingly hit "F8" during the austere pre-startup screen. I'm asked which particular kind of non-standard startup I want. I pick "Safe Mode with Command Prompt", figuring that's as close to single-user as I'm going to get. Windows boots, and I get a 640x480 GUI with a single window that can only be described as "frickin' huge". Or, as Irene said, sarcastically, "can you make it any bigger?"

"Cool," thinks I, "I have a single-user prompt, basically." So I start out with the obvious command: move "Program Files" big_disk and am rewarded with Access denied. I won't bore you with the entire saga, but suffice it to say that I went through a few variations on the theme before I said "fuck it" and rebooted.

Ultimately, I managed to clear up enough space on drive C itself that I could install StarOffice onto big_disk without further ado. But what I want to know is:

  • What's so hard about single-user mode?
  • Wouldn't it be easier to use the built in character generator in the video card, you know, text mode?
  • Why the fuck does Microsoft still exist?

Seriously. I mean, in fifteen minutes of trying to do something ultimately quite reasonable, and even being willing to knock back down to single-user mode to do it, I was unable to. I'm not exactly dumb as a turnip, here. My blood pressure rose alarmingly quickly, and I've spent the rest of the night trying to bring it back down. Two years ago, I kicked the Windows habit and never looked back. Now I remember why. At least with the source I can only blame myself, ultimately.

1 older entry...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!