Posts for May 2009

2009-05-02: California special election

If you don't live in California, this post probably won't be very interesting.

First, some background: In the face of a huge budget deficit, the California state government deadlocked for an insane length of time, primarily blocked by the California Republicans (who are considerably to the right of Republicans elsewhere in the country). The Republicans were basically holding out for balancing the budget purely through spending cuts, without any tax increases. There was lots of angst and drama and the current budget only passed by a single vote and with the requirement to put a bunch of crap on the ballot for a special election.

So I'm already annoyed that in the face of a huge budget deficit, the state decided to spend a ton of money to run a special election.

There are a set of basic problems behind why I think we're in this mess in the first place.

First, California is a fairly liberal state with an aggressive agenda, but has passed a bunch of anti-tax legislation via bizarre constitutional amendment routes that make it almost impossible to raise useful taxes (namely, taxes on rich people). The state didn't stop spending money (on, I should say, programs that I largely agree with). Instead, it started funding them through borrowing, producing an endless stream of ballot propositions to approve new bond issues. This, predictably, has screwed up the state finances.

Second, we've passed a serious of IDIOTIC laws that essentially take all the discretion out of the budget by putting mandatory minimums or mandatory allocations of state funds to particular projects. This requires the state to fully fund a completely random set of state services and only allows the government discretion over a relatively small amount of state funding. Hence, whenever there's a budget problem, the state can't cut across the board and spread the pain out. Without going to the voters for special amendments, some random areas take insanely deep cuts and other random areas can't be cut at all.

I therefore go into all elections in California with three basic principles:

  1. Anything that raises taxes on rich people or makes it easier for the state to do so is good.

  2. All bond measures are bad until the state gets things back under control. Even if it's something bonds are good for, we have way too much state debt. We have to stop.

  3. All restrictions on general funds spending are bad. All targetted funding (where all of a revenue source is devoted to one state program) is bad. I'll sometimes vote for targetted funding via raising a tax, due to point 1, but I won't like it.

So, with that in mind, let's look at the propositions.

Proposition 1A: YES

This is basically the monster budget reconciliation measure. I'm very conflicted about it, since it includes some really good ideas and some really horrible ideas.

Good ideas: The rainy day fund is a good idea. It may not be the best possible implementation of the idea, but I'll take it. The state needs to smooth spending across economic downturns. It probably wouldn't have helped with this one, since this one was so unpredecented, but it would have helped with a lot of others. Sane large institutions like Stanford already do this. Other good ideas are the increase in the vehicle registration fees (a good, progressive tax) and some of the increase in the income tax.

Bad ideas: The sales tax increase has to rank as one of the most ill-advised approaches to balancing the budget I've ever seen. Never mind the question of economic impact (I doubt that will be that substantial). The sales tax is the most regressive tax we have. This is basically a tax on poor people. And on top of that, the income tax increase raises all tax brackets by the same amount, thus making the income tax less progressive and disporportionately hurting lower-income tax brackets.

The right solution would have been to raise the vehicle licensing even more, raise the top levels of income tax, and increase the property taxes, preferrably by making property taxes more progressive at the same time.

That said, if this fails, we go back to more rounds of negotiation. The Republicans are all rooting for it to fail. That says I probably don't want it to fail, since they think they're going to get more cuts of state services out of this, and I think state services are important. So I'm going to hold my nose and vote for it, hating it the whole time.

Proposition 1B: YES

What this proposition basically does is let the state defer funding to schools which is currently mandatory for a couple of years, and then requires the state make up for the lost payments.

The cuts I agree with, sadly, as part of an overall budget cut. We have to balance the budget, and that's going to be painful for everyone. I disagree with the longer-term increase in the amount of funding that has to go to schools; it's yet more mandatory spending that got us into this problem in the first place.

This is the sort of stupid law that we have to vote on because our budget process is broken. The legislature and governor should have the discretion to do this sort of planning of future expenditures and then be able to adjust it based on economic reality later without putting it up for a vote again. But despite being annoyed I have to vote for it, it doesn't make the situation any worse, and it's part of the overall budget compromise. So holding my nose again.

Proposition 1C: NO

This measure does a whole bunch of ill-considered things, but the core relevant point of the measure is that it lets the state borrow $5 billion against future lottery earnings to balance the budget. It's not a bond measure, but it may as well be. See the above point about debt. More debt is a horrible way of solving our budget problem.

The other main thing this does is remove the requirement that lottery proceeds go to education (good, insofar as the state is running a lottery at all, which I don't think it should be; it's essentially a voluntary regressive tax), and to compensate raises the general fund obligation for education funding (BAD, see above).

This is a horrible idea all around.

Proposition 1D: YES

See Proposition 1B. This is approval to cut funding for one of those state programs with special budget allocations in order to balance the budget by instead funding some other program with special funding that would otherwise have to come out of the general fund. This whole situation shouldn't exist; the state government should be able to do this without requiring a vote.

Proposition 1E: YES

Same as Proposition 1D, just yet another special program with special dedicated funding.

Proposition 1F: YES

The argument in favor of this proposition is remarkably stupid and the argument against it is correct, but I'm still voting in favor of it for an entirely different reason.

This proposition prevents pay raises for any state elected officials if the state has a budget deficit. This is one of those feel-good measures that will have little practical effect and certainly won't help balance the budget.

However, observe: elected state officials are essentially the management of the state. If we have a budget deficit, state workers and worker unions are going to be under huge pressure to take a salary freeze or pay reductions. This measure requires a salary freeze for the top level of state management in times when we're going to be demanding the same thing of the workers. Given that, for me, it's obviously worth voting for.

2009-05-04: Back in the flow

Flowing water

Deep water flowing between rocks in the Holland River in Ladysmith, British Columbia. This was my favorite picture of that day, although there were a few other really good ones from that trip.

The Dreamwidth open beta launch pretty much ate the end of last week and messed up my sleep schedule since I stayed up until 3am Thursday night. I also got sucked into the IRC channel, which was a lot of fun but was also very distracting. Add to that getting up at 6am both Saturday and Sunday to do afsdb server upgrades and not being able to go back to sleep on Sunday and my mental state got pretty frazzled.

Today was a recentering day, a day to get solidly back on the normal schedule, stay off of IRC, and remember what else I was doing in my life besides Dreamwidth. It was fairly successful for that. I finished another draft of an OpenAFS thing, got some of the documentation for the virtualization project updated, and did some prep work for one of the two upgrades I need to do tomorrow.

I think I need another week or so of this to get back into a better rhythm, visit parts of my life that I've been ignoring for a while (like video games), and finally get caught up on reviews (only four behind now!). In the meantime, I fear IETF Usenet work is going to have to wait, as is most Debian stuff.

2009-05-05: Hugo nominee haul

This is the first book purchase in a while. I haven't been reading that much lately, and I've both not felt like spending a lot of money and had been spending money on other things.

Elizabeth Bear — Seven for a Secret (sff)
Cory Doctorow — Little Brother (sff)
Gardner Dozois & Jonathan Strahan (ed.) — The New Space Opera (sff)
Neil Gaiman — The Graveyard Book (sff)
Michael Lewis — The New New Thing (nonfiction)
David W. Maurer — The Big Con (nonfiction)
Kevin Mills & Nancy Mills — Help! My Apartment Has a Kitchen (nonfiction)
John Scalzi — Zoe's Tale (sff)
Andy Riley — The Bumper Book of Bunny Suicides (cartoon)
Karen Traviss — Ally (sff)
Karen Traviss — Judge (sff)

The Doctorow, Gaiman, and Scalzi finish off the Hugo nominees for best novel this year so that I can read the full shortlist. I picked up the cookbook because I've been slowly experimenting with cooking more meals instead of just microwaving things, and it was recommended as a nice general introduction to the basic principles. The Traviss books are the rest of the Wess'Har series; since the whole series is complete, I figured I may as well get the whole thing.

2009-05-05: A lovely day

Sun trail

I discovered during my last trip to the Oregon coast that my camera could see things directly into the sun that my eye couldn't. It's become something of a theme. You're allowed to make fun of me for it. This picture was taken from Biggs Park near Duke Point, looking across the Georgia Strait near the Nanaimo River estuary towards the main part of Vancouver Island. It gains a lot from the partial obscuring of the sun breaking up the white ball into a more complicated shape.

My life is feeling much more ordered. This was the second good day of following a fairly normal schedule, staying focused on what I needed to be working on, and making solid forward progress. I also quit doing things at the right times in the evening and dragged myself to walk when I didn't really feel like it. Tomorrow will be the real test: my work-from-home day, with a lot of unstructured time. The past couple of weeks I've let myself get distracted and ended up getting little done. Time for that to change.

Most projects are still on hold, but I'm starting to do scheduling and planning and have some idea of when I'll get back to them. The first step is getting caught up with book reviews, on which I've gone from being seven or eight behind to only being three behind now. That feels quite a bit better. Another week or so of fairly regular review writing should have me entirely caught up.

2009-05-06: Mixed results

Crumbling stairs

Back to posting some older pictures since I have little brain tonight (put off posting journal entries until rather too late in the day), and the brains that I have available are insufficient to doing more than looking for the next postable picture in my oldest set of sorted pictures. This is more of the Morden Colliery in Nanaimo.

Results for productivity for a Wednesday were... mixed. I'm still not doing a great job of settling down and working during my work from home day, which is discouraging since it used to be very productive. However, it wasn't the complete loss of last week. I got some FAI build system tweaking done and pushed forward more of my current work on virtualization (and also wasted rather too much time on Dreamwidth).

I did not, however, start the remctl work that I need to start on; I never got up quite enough momentum. I have more hope for tomorrow.

I think I'm going to have to think more about tactics for Wednesdays that make them more productive again. I suspect this involves using my laptop rather than my desktop system, which indicates to me that my desk setup is less than ideal. This isn't a huge problem, though; I have a nice laptop and a very nice chair.

It also definitely involves not turning the TV on and turning music on so that I don't get tempted into doing something even more distracting than music. It also involves being much stricter with myself about not reading non-work e-mail or web sites; under normal circumstances, a bit of that gives me a break from things and lets me do subconscious processing, but it only works that way after I've already built up momentum. I need to build up the momentum first.

2009-05-07: Progress

Nanaimo River

My favorite picture of the Nanaimo River, even if you can't see all that much of the river. (It's taken from a gravel riverbed when the water is low and the river spreads out a bit. When the water is higher, where I was standing is underwater.)

Things continued going according to plan today, although the evening ran away from me a little bit while getting in eight hours of work and I didn't end up writing a review. In my ideal world, I'm a bit ahead on my 40 hour work week and I can write a review in the morning before going into work, but this week I've not been sleeping well and hence sleeping in late, so that's not worked. We'll see if it works better next week.

I think it's fascinating how tiredness works. I don't feel that much more physically tired or ready to go to sleep as the evening wears on, but I hit this critical energy point beyond which it takes considerably more energy to try to start something new or do something that requires thought, like write a review. I can force myself — I've done it before — but then it takes me much longer, often a couple of hours, and it feels like pulling teeth. I have to teach myself that the feeling means tiredness in the evening, since it feels very similar to having no momentum during the day, and then the right solution is to push my way through it and get started on something.

I wonder how many people find this random blathering interesting. Well, that's a reason to post the picture: to give the people who don't care about my blathering something pretty to look at.

2009-05-09: Infrastructure work

Moss fingers

I went back and forth on posting this one, as it's not one of my better pictures and it's not entirely in focus. But I really liked the pattern that the moss made on this concrete. It's more "spiky" than I usually expect in moss, with a sharp contrast between the concrete and the moss.

So, when I started working on INN, I found that it had this nice utility library in libinn. I like utility libraries, and I like portability, so I put a ton of work into it, pulling in ideas from my nascent C knowledge and various Autoconf-driven portability bits. It grew nicely over the years, and I like to think it makes INN development much easier than it would be otherwise.

I learned how to do real testing from Perl module development, so when I decided to add a test suite to INN, I decided to use the same general protocol for test cases that Perl does since it was nice and simple. But I didn't want a Perl requirement in INN's build system. So I wrote my own version of INN's test suite implementation in pure C.

When I started writing lots of other C packages besides INN, I started stealing ideas from INN. I made a few abortive attempts at abstracting out the portability stuff into a separate package, but I never really finished; instead, I just copied and synced stuff around between packages. But now that I've got probably a dozen independent projects that all need some of the same portability glue, that's getting kind of ridiculous. So about a year ago, maybe less, I started making a concerted effort to put together packages of my test harness and my utility libraries so that all my packages can pull from the same source.

Of course, I can't leave good enough alone once I start doing stuff like this, so I rewrote my C and shell libraries for writing TAP-compliant test scripts and made them look much more like Perl's Test::More, and then added a bunch more features to the test harness because I was procrastinating rewriting all my test suites for the new API. I finally started today on rewriting the test suite for my collection of utility functions to use the new test API (after rewriting some of their supporting functions to be much more general).

All this is a long-winded way to say that I'm currently working on adding passing large arguments to remctl programs via standard input, in that way in which I work on programming projects. Whenever you have to touch something, you should always fix some other unrelated infrastructure thing at the same time!

2009-05-18: Resurfacing


I disappeared for a bit because I finished recovering from the stress and exhaustion of writing strategy documents and a too-busy April and found enough concentration to go heads-down on a bit of coding. I've finished adding support to remctld for passing an argument on standard input and for accepting arbitrary binary data including nuls in that argument. Now I just need to add a few other pending features for the next release and I'll be ready to release both it and a couple of infrastructure packages.

That ate up most of last week, and then last weekend I made a concerted effort to play video games rather than going directly into non-work volunteer work (like the NNTP draft revisions). It felt like "lost time" at the time, but I think it was the right move and I need to do more of that, since today I'm feeling much more recharged.

Portal is a fascinating game, but not an unambiguously positive experience. It is as brilliant as everyone says it is, particularly in atmosphere but also in puzzle design. However, I think it also has some serious flaws in the frustration arena, not with the puzzles but with the control scheme and with the arbitrary time limits that are tacked on to some of the puzzles. Some of the time limits are necessary for the shape of the puzzles, but others are there only to add tension and do so in ways that for me make those sections of the game very not fun.

I suspect that someone very familiar with first-person shooters wouldn't mind the control stuff as much as I do, but I truly loathe doing platforming with first-person shooter perspective and controls. Only one game (Metriod Prime) has ever avoided the "where the hell are my feet" problem for me. Portal doesn't. Finding the creative way to solve the puzzle is fun. Walking off a platform six times in a row while trying to make a jump is not.

I've almost beaten the basic game, but the addition of a time limit to the final section was such a spectacularly bad game design decision for me personally that I've stalled out there. I suspect I'll go through it since at least one can save at arbitrary points in the middle, but wow, the resulting frustration robbed quite a bit of the fun out of what would have otherwise been a great, atmospheric, immersive scene. I'm feeling really disappointed and a little bit angry about it, since all of the final level leading up to that was absolutely, utterly brilliant and had me ready to fall in love with the story and environment.

I have no objections to other people wanting the time limits, but it sure would have been nice if I could have turned them off. (I recommend Braid as one of the few video games that really Gets This.)

2009-05-19: It's not about finishing


I sorted through rather a lot of pictures today trying to find one that I felt like posting and wrote off three or four days of pictures from last year as "eh." I suspect I'm too critical and some other day I'll feel like posting a few of them, but I think my standards are also getting higher as I get better at photography.

I'm still quite fond of this one, though. I'm generally a push-over for reflections in water.

remctl 2.14-to-be now has hopeful fixes for builds with the Solaris 10 generic GSS-API libraries, which are waiting for someone with a Solaris 10 system to test before the release. If those test out, all the required changes for remctl 2.14 are done, although I'm still planning on adding a few improvements to the remctl command-line client.

Solaris 10 wants everyone to go through the generic API and doesn't provide the Kerberos mechanism OID, which remctl forces. The Solaris documentation says you should never force a mechanism since it defeats the point of GSS-API, and they have a point. Maybe someday I'll look at removing the forced Kerberos requirement. In the meantime, I went the route of hard-coding the Kerberos mechanism OID on Solaris since they don't provide a define for it.

Tomorrow I need to go get my car smog-tested and plan on doing some more VMware reading while waiting for it.

I'm struggling at the moment with the feeling that I'm getting more added onto my plate as fast as I'm finishing things. This is yet another symptom in the basic mindset shift that I need to work on: dropping my focus on finishing some mythical finite to-do list, recognizing that there's always going to be more to do, and focusing on day-to-day attitude and productivity instead. Today was hard for that because several things I didn't expect showed up on my to-do list (like giving the MIT Kerberos status update at the AFS and Kerberos Best Practices Workshop).

2009-05-19: Antioxidants iffy

I've been getting increasingly skeptical of the current obsession with antioxidants as I've been learning more about the supplement industry, the amount of money people are making off of multivitamin supplements, and the degree to which heavy marketing tactics are employed to get people to take them. Bad Science pushed me quite a bit more in that direction with the clinical trial evidence presented there showing no connection between increased antioxidant consumption and better physical health. But my opinion was still somewhat tentative, since it's hard to resist the feeling that all the people talking about this couldn't have it entirely wrong, and after all antioxidants aren't going to hurt.

Well, maybe not so fast.

Brooks Moses has a very interesting journal post this evening pointing at a recent medical study indicating that antioxidants prevent health-promoting effects of physical exercise in humans. Specifically, the researchers studied the effects of a vitamin C and vitamin E supplement on insulin sensitivity. Normally, physical exercise produces "oxidative stress," which helps ameliorate insulin resistance (the biological change underlying type II diabetes). However, this appears to be the case only in the absence of antioxidant supplements. Taking antioxidant supplements in the study caused the effect of exercise on insulin sensitivity to be lost.

I think we're fast getting to the point where we should be telling people to stop taking antioxidant supplements, particularly large-dose ones. (Those are, for those not as familiar with the term, mainly vitamin A, vitamin C, and vitamin E.) There's very little competent scientific evidence that they do anything for you at all except moderately reduce the duration of (but not the chances of contracting) the common cold in the specific case of vitamin C, and there's some evidence that they may actually be harmful, particularly for people in danger of developing type II diabetes who are attempting to ward that off via exercise. Just because they're present in nutritious foods doesn't mean that taking large doses in supplement form is doing what you expect.

Once again, one of the basic messages of Bad Science is reinforced: the best way to be healthy is to eat healthy food and exercise regularly. We're not as good at designing short-cuts as we think we are.

2009-05-21: Mmm, padlocks


Once I started taking pictures relatively regularly, I got in the habit of looking for bits of chain to take pictures of each time out. Looking for a common object like that is fun: it's a bit of a game, it provides an opportunity to take lots of different pictures of the same basic thing and find variety in that, and it improves my eye. Doing that, I've found that often the most interesting part of a bit of chain is the padlock.

This isn't one of my best pictures of one (it shouldn't have been cut off at the top; I'm better about noticing things like that now), but I think the smears of paint on it add a lot.

The car has been smogged, passing with exactly the limit of allowed emissions for the 15mph hydrocarbon test. My guess is that this is because I rarely ever drive it and never on the freeways, and it would have been fine if I'd driven it out first. But it passed, so I don't have to worry about it for another two years. I'm wholeheartedly in favor of the smog testing, but it's vaguely silly for me given that I drive 200 miles a year, tops. (It's used only for grocery shopping, the occasional errand, and picking up friends where needed.)

I'm ready to release remctl 2.14 and the first releases of my test suite driver and utility library, but didn't get to all of it today (I had a hard time getting started). C TAP Harness will go out tonight, and hopefully I can finish the rest up tomorrow so that I won't be thinking about it over the long weekend.

2009-05-21: C TAP Harness 1.0

I've just released the first stand-alone distribution of the test suite driver that I use for nearly all of my software that both has a test suite and isn't only for Perl.

C TAP Harness is a pure-C implementation of TAP, the Test Anything Protocol. (TAP is the text-based protocol used by Perl's test suite.) This package provides a harness similar to Perl's Test::Harness for running tests, with some additional features useful for test suites in packages that use Autoconf and Automake, and C and shell libraries to make writing TAP-compliant test programs in those languages easier.

I wrote the underlying program that's the core of this distribution for INN's test suite a long time ago and tweaked it over time, but over the past year or so I've added a lot of TAP features I wasn't aware of at the time and significantly improved the supporting libraries. There is now special support for builds outside the source directory, both to help the harness find the test programs (even if they're not compiled) and to help test programs find supporting data.

While one can build and install this package, that's not its intended use. Instead, just the harness program and the bits of TAP library that one wants to use are meant to be copied into any package that needs a test suite. My main purpose for making it a separate package is so that I can easily update all of my packages to benefit from improvements in the shared code.

Support for the TAP protocol isn't entirely complete. I don't yet support giving the plan last instead of first or reporting the text for individual skipped tests in a useful way, and the handling of todo tests is a bit lame. But all the standard features I've wanted to use in the past are supported, including skipping entire test cases. Also, while I'm admittedly biased, I think the result reporting is a bit cleaner and nicer than Perl's Test::Harness.

You can get the current version from the C TAP Harness distribution page.

2009-05-22: rra-c-util 1.0

Similar to C TAP Harness, this is another release of infrastructure shared by multiple packages as a separate distribution so that I can more easily keep things in sync.

rra-c-util started life as portions of libinn, which is a catch-all utility library for the INN programs. It had some portability and utility code already when I started maintaining INN, and I expanded it significantly and wrote some new portability layers, such as the network API. In parallel, I'd been maintaining a few files and copying them between various programs going all the way back to newsyslog, my first significant C project.

When I started writing lots of Kerberos-related software, I standardized how I handled this portability layer, and when I switched everything to non-recursive Automake, I redid the division of code to be more modular. This package now collects nearly all of the portability code that I've needed with various packages into one place so that I can update each package from the canonical version before a release.

This is the first stand-alone release, synchronized against remctl 2.13 with the additions discovered for the upcoming remctl 2.14 release and with the test suite rewritten to use C TAP Harness 1.0. It's a grab bag by design and there as yet isn't a lot of documentation for how to use components in one's own project. In the long run, I suspect it will be something akin to how gnulib works for GNU projects, although I don't know if I'll write the level of automation around it that the GNU project has. (I don't use gnulib for licensing reasons.)

The current release is available from the rra-c-util distribution page.

2009-05-22: remctl 2.14

The primary feature of this release is new support in the remctld server for designating one argument to a command to pass on standard input. That argument will be spliced out of the command's command-line arguments and fed on standard input instead. This permits that argument to be of almost arbitrary length (it still has to fit into memory in the server) and to contain nul characters.

Other improvements include filtering unprintable characters out of remctld's logging, changing terminology throughout to use "command" and "subcommand" to talk about remctl commands instead of the unintuitive "type" and "service," compilation fixes on Mac OS X, support for Solaris 10's native GSS-API library, and fixes for several minor memory leaks in the remctld server.

This is the first software release I've done synchronized with the C TAP Harness and rra-c-util distributions for test suite and portability code. What's included here roughly corresponds to the 1.0 releases of both, but there's one C TAP Harness fix that will be in 1.1 that I uncovered while testing the remctl release.

You can get the latest version of remctl from the remctl distribution page.

2009-05-22: Yay, weekend!

Twig in the water

Today feels like a good day for a flow picture. This is another picture that I could probably take better now, but I still quite like it.

I finally got the major software releases I've been working on out the door, although much later in the day than I'd expected. It turned out that my redo of how to handle testing when the build directory is outside the source directory, while a bit of a simplification for the test suites run by C TAP Harness, made things more complicated for the native Perl, Python, and PHP test suites. That took a bit of fixing and a lot of testing. I suspect it will need some more work later on to clean it up and make it more obvious.

At some point, I want to write up my experiences from writing language bindings for remctl. There are a lot of tricks and work that has to be done to integrate language binding builds into the rest of a larger project that uses Automake.

The best part of today was that I got everything done that I needed to do in advance of the weekend and now I have a long weekend to do whatever I want. The only exception is that sometime this weekend I do need to deal with the USEPRO AUTH48 so that the RFC can be posted. But otherwise, I have a lovely long weekend stretching out ahead of me, which will hopefully be full of lots of video games, reading, and otherwise relaxing and enjoying myself. It's not a productivity weekend -- that's going to have to wait for a while. I still need to do some more relaxing and recovery.

2009-05-25: Beautiful holiday weekend

Aging trillium

Trillium. The flower starts out as white and then turns pink as it grows older. I caught this one at I think its most beautiful age.

This was a very successful and satisfying long weekend. I did not try to accomplish lots; instead, I did what I'd planned and spent most of the weekend playing video games. They weren't exactly the video games I thought I was going to play (I didn't finish Portal, but I got sucked into Marvel Ultimate Alliance), but there's nothing wrong with that. Blazing Birds was just released on XBox Live for $5 and is a wonderfully addictive tricked-out badminton game. It's very simple, and there are some difficulty curve problems (computer players go from relatively easy to extremely difficult five games from the end of the normal arcade mode for me), but it's a blast. They got the badminton physics right, and one naturally does strategic shots with the shuttle that are typical for real badminton matches.

(Don't get me started on the stupid XBox Live point system that doesn't match dollar amounts. I just convert in my head and only express the prices to other people in the converted form in partial protest. But otherwise, their online store is absolutely brilliant.)

Other weekend highlights: I did the one bit of work that I had to do and sent back my AUTH48 revisions for USEPRO. I still need to update my web site, but hopefully we'll have an RFC soon. I also wrote two reviews and posted several, which gets me back down to three awaiting writing again. Much more comfortable than seven, where I was a few weeks ago. And I baked bread, made peanut butter cups, and made soup tonight with fresh spinach and tons of vegetables, which is rather better than I've been doing with food lately.

This will be a bit of a weird abbreviated week, not only due to the holiday but also the upcoming conference. A very good friend is coming for the conference, arriving Saturday and leaving a week from Sunday, so I expect the first week of June to be extremely busy. Except for when I can get on during the conference, I doubt I'll be on-line much at all.

2009-05-26: Back to work

Italian cyprus

I've been posting lots of pictures of British Columbia, so here's a picture from Stanford for a bit of variety. Italian cyprus makes nice path-lining pattern.

This was a good day back to work. I managed to juggle a few different projects and advanced them all, and this evening I uploaded new Debian OpenAFS packages that add DKMS support for dynamic module builds. Tomorrow, I'll start re-IPing guests in our test VM environment to move to the production network, and maybe do some more coding.

Last modified and spun 2017-02-20