[ Content | Sidebar ]

star wars: knights of the old republic

May 16th, 2006

This will not, I think, be the most useful discussion of Knights of the Old Republic, simply because I can’t help but viewing the game through the lens of Bioware’s latest, which had the benefit of a couple more years of experience. With that warning in place:

Fun game. I kind of nibbled at the first planet, which had the result that it took me a while to get past it. I took a peek at a guide, and realized that I should either give up on the game right there or pick up the pace; I decided that I liked the game enough to want to keep going, and finished about a planet a week after that. (Admittedly, the first planet was longer than the others.) And I’m glad I did; it’s possible that the level design got better after the first planet, but I don’t think so: I think the plot just worked better when I was constantly making progress. (Obligatory Jade Empire comparison: that game, on the other hand, I was addicted to right from the start. But its later areas were notably weaker than its earlier ones, while KOTOR maintained its quality throughout.) Though it is also true that the plot got more richly woven as the game progressed, and the Major Plot Twist worked well for me. (For what it’s worth, the fact that it’s a Star Wars game didn’t matter much to me one way or another; maybe that gave me a negative bias, but only a very small one.)

The combat system is based on an underlying turn-based system, but you can just sit and let all your characters move and attack according to their defaults. This loses the richness of a real turn-based system, but is a lot less tedious; I probably would have been impressed if I’d played it before Jade Empire. I didn’t, however: I significantly prefer the latter’s complete abandonment of turn-based RPG combat.

Leveling up was pleasant enough; not too much in the way of micromanagement. Ditto for character classes. Party management was handled quite well: at (almost) any given time, you can pick two of your (up to) nine companions to use, but experience points accrue to the party as a whole, so you don’t have to worry about keeping all your characters leveled up. (Again, though, Jade Empire shows that we can do better by going even further in these directions. Yes, I realize this means that I’m not a traditional RPG fan.)

Good difficulty level. Even the final boss fight wasn’t too tedious.

Like several recent games (including Jade Empire), you can play it taking a good path or an evil path. Unlike all the other such games, I was tempted by the evil path, and if I were to replay the game (highly unlikely, if for no other reason than that I basically never replay games), I might well give that a try. I think being set in the Star Wars universe helped here: the evil side is relatively well fleshed out.

Almost 40 hours long; longer than I like these days, but that’s more because of my time constraints than anything else.

the rise of the creative class

May 14th, 2006

Today’s book: The Rise of the Creative Class, by Richard Florida. Or rather, the book of a couple of months ago; I really need to start blogging right after I finish something.

The book claims that something called the creative class has become hugely important over the last few decades, now outstripping the working class as a proportion of the working population, and threatening the service class, which has also had huge growth. (30% creative, 25% working, 45% service; agricultural is almost zero.) That’s just in terms of the numbers of people working in those fields; in terms of, say, financial impact, the creative class is quite a bit more important.

Which means that the creative class is starting to reshape its environment (working and otherwise); how it does that turns out to be quite interesting. For example, while the creative class isn’t necessarily particularly diverse (e.g. I work in the tech industry, which has quite a large number of white males in it), creative class members prefer to live in ethnically diverse areas, areas with a large number of gay people, etc. Creative class people like to be around an active artistic scene, but generally more at a small-scale level (lots of bands playing in various small locations) instead of a larger-scale level (stadium concerts, big orchestras). They like athleticism, but at a personal level (running, mountain biking, going out and doing something) instead of, say, going to a stadium to watch a big sports team. They don’t have much truck with, say, dress codes at work. They don’t work 9-5 hours (and frequently end up working rather more than 40 hours a week); they change jobs pretty frequently.

Most of which sounds pretty familiar to me, and most of which sounds like a good thing to me. And it gives me hope in the ongoing culture wars: the Christian conservatives scare me, but my side is growing, both numerically and economically. But, as the book also points out, we could be doing better in that regard. Creative class members turn out to be relatively apolitical, and I would be the first to admit that my political zeal has dwindled notably over the last several years. Maybe we’re too busy either working or exercising? Or hanging out at ethnic restaurants or nightclubs?

Speaking of which, I don’t quite understand the zeal for long work hours, either. Admittedly, creative class jobs are likely to be more interesting and more financially rewarding than other sorts of jobs; those would push us towards spending time at work. On the other hand, if we like living in richly textured environments, you’d think that we’d also like to spend as much time as possible out in those environments. I think there’s some sort of weird American dysfunction going on there.

The constant changing jobs seems a bit funny to me, too. People in my experience don’t change jobs as frequently as the book discusses – they talk about people routinely changing jobs more frequently than once a year, which sounds awfully fast to me. (On the other hand, there are a lot of independent consultants out there.) Now, I’m not a big one for company loyalty these days, and I can certainly sympathize with having your top priority being working with interesting people, on interesting projects. But it’s not at all clear to me why changing jobs should be a particularly good way to optimize that. I certainly don’t see why, in general, you would expect your new coworkers to be more interesting than your old ones. And while there’s something seductive about working on new projects, the flip side is that you don’t get to grapple with the challenges of long-lasting optimizations that span multiple projects (or even optimizations that last beyond, say, the launch of a new project).

I saw a lot of Jane Jacobs resonances in the book: the intermingling street life from The Death and Life of Great American Cities, the moral wars of Systems of Survival. I’ll have to think for a while about how (if?) to integrate this with the import replacement theory of The Economy of Cities, though.

One other thing the book has pointed out to me: a lot of the political writing I’m reading these days seems to take as a given (or at least imply) that it’s bad for manufacturing to be separated from design: blue collar people lose jobs, bosses get rich, inequality increases. Now, I’m all for employement and for reducing inequality. But separating manufacturing from design can have real benefits. The first is that it makes it possible for small companies to spring up and bring new products to market. It’s not just an issue of existing large companies shedding workers: it’s an issue of new companies coming into being that couldn’t have existed before. The other is that, just because manufacturing and design are in different companies doesn’t mean that jobs are being shed. In fact, the quality of jobs on both sides could improve: maybe a company that focuses on manufacturing could involve its workers more thoroughly (more creatively) in doing the manufacturing as well as possible than a less focused company that tried to do everything.

(x)emacs is not supposed to crash on me

May 11th, 2006

For whatever reason, XEmacs decided tonight to crash on me when I fire up Gnus. Not good – I like to be able to read my e-mail. Fortunately, there’s a workaround – it doesn’t happen if I touch my .newsrc first – but otherwise the crash is quite reproducible.

Sigh. I’d seen XEmacs crash once or twice since I bought the new computer – I guess it’s not rock-solid in 64-bit mode. But this is the first time it’s been a real problem.

I would say that this is what happens when I use an unusual mail client (Gnus) on an unusual editor (XEmacs) in an unusual operating system (64-bit Linux). But, on reflection, I’m not sure that’s fair – XEmacs is doubtless not the only mail client out there whose 64-bit version has bugs, and it’s certainly not Gnus’s fault that XEmacs is crashing. And at least I feel that, with XEmacs, I have a slight chance at being able to figure out what’s going on: if nothing else, I’ve built it from source many times before, so with luck I’ll be able to reproduce the crash under GDB with full debug info. Whereas I’d feel a good deal more helpless if this happened under, say, Thunderbird or Mail.app. (The latter of which was doing remarkable things to my boss’s mail headers earlier this week.)

And, if worse comes to worst, all the mail data is sitting there in flat text files, so nothing’s would be irretrievably lost if this whole setup stops working. Indeed, I could try just running Gnus in Emacs instead of XEmacs – the bug might well not be present there. I’d rather not, though…

e3 2006

May 9th, 2006

It would seem to be E3 time again; hmm. I suppose the world does not need another blogger talking about it, but I have nothing better to do. Besides, I never got around to talking about the name “Wii”.

Which is a stupid name. I know they’re trying a blue ocean strategy, I think that’s a good idea, I think that not using the name Revolution will help in that regard. But Wii reeks of bad consultants, and it doesn’t strike me as the sort of name that will appeal to the older nontraditional gamer. Still, I can’t see it making or breaking the console.

Actually, they could probably do a better job with their blue ocean strategy: there was a lot of traditional gameplay in their press conference. Then again, they probably are going to weight that sort of thing a bit more heavily at E3 than in their eventual lineup: I don’t recall them demoing Brain Age before its launch in Japan, for example. (I will give that game a try when we’re on vacation this summer; also, this game seems worth importing, for though I’m sick of sudoku by now, I still like number puzzles, and the DS seems like a good platform for that.)

I am getting quite curious about the gameplay now that first-hand reports are trickling in. Even traditional games will feel quite different, but I don’t have a feel for exactly how this will work. I had missed the fact (or forgotten) that the controller has an accelerometer built in, so it can tell how fast you’re moving it, not just where you’re pointing it; the fishing minigame in the new Zelda will certainly be an experience. Speaking of which, it’s too bad that it looks like there will be separate disks for the Gamecube and Wii versions of the game: it would be nice to play the same segment on both consoles to see how it will feel. (The again, I’ve played enough Zelda on recent consoles to have a pretty good idea how the Gamecube version will feel.) And, honestly, I’m still worried that there will be aspects of the Wii Zelda controls that I won’t like – will using the controller to slash with the sword be a distraction from the adventuring? (Will you even use the controller to slash with the sword? Maybe not.)

Pretty muted press conferences, given that one console just launched and two are about to. I would have thought they’d have more to say, somehow. Maybe it’s just my world-weary point of view now, though: new consoles don’t inherently excite me, and we’re in the end-of-generation lull of games, while the good games of the next generation aren’t far enough along to have much meat on them.

And where’s the Wii Smash Brothers? That’s a great series. Not that I have any friends to play video games with these days…

random links: may 8, 2006

May 8th, 2006

I looked into using delicious for this, but its automatic blog posting doesn’t quite do what I want. So I guess I should cook up some way of transforming its RSS feeds, or something. (An excuse to learn about XSLT!) In the mean time:

house of rpgs

May 8th, 2006

Sorry I’ve been so quiet over the last month or so. One reason is that I’ve been spending a fair amount of time playing Knights of the Old Republic. It’s not that I was blown away by it: I was just enjoying it enough to want to finish it while realizing it was a long enough game that, if I didn’t want it to drag on for half a year, I should put some effort into doing so. Which was a good move; for whatever reason, I’ve been enjoying it rather more since I started devoting more time to it.

But I’m not the only RPG player in the house: Miranda has finally learned to read well enough that we’re willing to let her play the Gamecube Paper Mario game. Which she is now spending quite a bit of time with, and I don’t blame her: very well done game, that. So, between the two of us, the TV was in use playing one RPG or another basically all day Sunday.

Almost done with KOTOR, though. Which is why I got a copy of Guitar Hero on my way home today, complete with guitar controller…

lean book-buying

April 28th, 2006

I was thinking about ways in which production might be building up between stages of pipelines that I’m involved in, and I realized: I have forty or so books sitting on my “recently”-bought-but-not-yet-read shelf. That’s several months of inventory – probably well over half a year, actually, given my depressingly low current reading rate and the fact that I try to read books in a pattern consisting of a new book, a book I already owned, and a library book.

So I certainly have room for improvement in my inventory management. I do a lot of my book buying through Amazon these days – if I could just convince myself not to buy a book that I didn’t think I would read within the next month (which would still allow me to use free shipping), I’d eliminate the vast majority of that. If I wanted to push that source of waste down even further, I could even spend the $79 for Amazon Prime and not buy anything that I wasn’t planning to read within the next half-week!

But what, really, are the costs of this excess inventory? Let’s see:

  • It’s probably close to a thousand dollars of inventory. At first, signing up for Amazon Prime sounded ridiculous, but if I were to invest that thousand dollars wisely, I might be able to pay for Amazon Prime with the interest, never mind the principal. So, from that point of view, it’s my current behavior that is ridiculous! (But free shipping combined with one month of inventory is probably the best bet financially.)
  • There’s a risk of the inventory going stale. I’m not actually too worried about this – I don’t buy books unless I’m quite sure I’ll want to read them at this point – but I still suspect that not buying a book unless I was sure I wanted to read it right after I finished my current book would have its advantages.
  • There are warehousing costs – bookshelf space is at a premium in this household, and we already have plans to buy a new bookshelf for Miranda (good girl!) and a couple for Liesl and me in the next month. To be sure, the books in question occupy low-value space (the tops of bookshelves), and the costs in question are relatively small, so I’m not inclined to make too much of this. Unless we start including the costs of the floor space taken up by the bookshelves. I guess we’re paying around $30/square foot; but it’s not entirely clear to me how many square feet to charge to a bookshelf. Hmm. Not quite negligible, perhaps, but the cost of the books themselves still clearly dominates. [Edit: no, it doesn’t – I made a math error in the previous sentence.  See comments.]
  • I personally find it easier to manage finances when costs are relatively even from month to month – I’m not very good at mentally balancing out the costs of infrequent splurges.

All in all, the benefits seem real. What are the costs? I don’t see a downside to replacing Amazon splurges with smaller Amazon purchases. I will miss the occasional physical bookstore splurge, though. But I’m rather less sentimental about physical bookstores than I used to be – Amazon’s inventory makes them much, much more valuable to me than physical bookstores. And it’s not clear that this will reduce the percentage of books that I buy in physical bookstores – it will significantly increase the number of book-buying opportunities, which means that there will be many more times when I’m allowed to buy a book when I’m downtown after dinner, so I might well wander into a bookstore.

Are there ways in which this would cause me to buy more books? Not at all clear to me – I don’t see why it would make it harder to be disciplined about limiting my percentage of reading that happens with newly-bought books to a third. In fact, it might lower the number of new books that I read – right now, that inventory is always sitting there reminding me that it needs to be read, but if it weren’t there, I’d probably feel much freer to just reread some of my favorite books that I already have lying around the house.

Of course, if I really wanted to save money, reducing inventory is the least of my worries – I could stop buying so many books in the first place. But that’s a separate discussion…

Anyways, this is all somewhat beside the point – right now, I have the happy coincidence of on the one hand, having lots of books to read before I can start buying again, and, on the other hand, having spent enough money on computers and car repairs recently that I really should be saving money. So not much book-buying in the near future. But once I start buying again, I suspect I will take a leaner approach; Amazon Prime is even starting to sound pretty tempting. And it’s not like I’ve never used this strategy before – I don’t buy a new video game until I’m almost done with my current game, and that’s served me well for years.

lean manufacturing

April 27th, 2006

I’ve been really curious about lean manufacturing (which basically means the way Toyota does things) for a couple of months now. I was aware that people had made some analogies between it and agile software development, but my interest got more concrete when I started reading Silk and Spinach: that’s a blog that spends a lot of time talking about that analogy, using various Japanese terms to talk about high quality, continuous improvement, and other things that sound productive to me when developing software. From there, I learned about Evolving Excellence, a blog about lean manufacturing itself, which I also quite like.

I just finished reading Toyota Production System, the key original source book on the subject. Which wasn’t at all what I expected: I didn’t see any references to the specific Japanese words that I was curious about, and in general there wasn’t the explicit laser focus on high quality. (Though I can see how it developed: more below.) Instead, there was the term kanban, which are cards used for resource/production management whose use I’m only starting to understand, and a laser focus on eliminating waste.

Which they think about in quite interesting, and I think quite productive ways. As far as I can tell, Toyota’s ideal would be that, when a customer walks into a car dealership and buys a car (or maybe takes it for a test drive), a car would magically be created instantly on the spot, while nothing would be invested on building the car until that very moment. This is referred to as a “pull model” of production, as opposed to a “push model”, where forecasts drive production. And anything that doesn’t help with this goal is considered waste.

This is, obviously, impossible in real life, but it does give you a rather different way of looking at waste. We can all recognize that people standing around doing nothing is wasteful; what is less obvious is that focusing on having people work full time can also cover up waste. This is the waste of overproduction: the easiest way to have people work full-time is for them to produce products that aren’t immediately needed. And there are second-order effects, too: to enable those people to work full-time, the easist thing to do is to make sure that they always have an abundant supply of their necessary raw materials (e.g. the components they’re assembling) at hand, which leads to overproduction in the earlier stages, products that aren’t immediately needed.

And this is bad for (at least) the following reasons:

  • That excess inventory needs to be stored somewhere, incurring warehouse costs.
  • If demand for the excess inventory never materializes, the effort spent producing it was wasted: the people creating the excess inventory could potentially have been working on something valuable, or not been hired in the first place.

Analogies have problems, and in particular it’s not clear to me exactly what lesson the first point has for software development, but certainly the other point is relevant. So now I’m wandering around work trying to figure out where I’m committing the sin of overproduction, where there’s waste that I hadn’t been seeing.

To get back to our story, the lean solution to this problem is to manufacture everything “just in time”. They still want to keep their pipeline flowing as smoothly as possible: they just try to use buffering as little as possible while accomplishing that. This is the (or at least one) source of the lean focus on quality: if you have a defective part, you don’t have extra parts that you can use to replace it, so it stalls your entire pipeline. So you’d better work hard to not have defective parts in the first place!

Next in the reading list is Lean Software Development. Its authors have experience both in manufacturing and software development, and are quite aware that the two are very different things. Their thesis is that software development is more like product development than manufacturing; fortunately, Toyota has something to say here, too. But I am planning to read more books about lean manufacturing itself; it seems quite interesting, totally aside from its potential applications to software development.

Toyota has a few videos on the subject available from their web site. I enjoyed them, though I’m not sure I would have gotten much out of them if I hadn’t already been reading about the topic.

how do i find my router’s external ip address?

April 27th, 2006

I’m too cheap to get a fixed IP address, and at some point recently, my router’s external IP address (i.e. the one assigned by my cable provider) changed. So I’d like to write a cron job that runs every hour and dumps my external IP address on a computer somewhere else, so I’ll always know how to connect to it.

I’m blanking on a good way to figure this out from within a cron job. If I just ssh ‘lastlog’ or ‘who’ to the remote computer, I only get my last actual login. If I try to mimic sshing in for real in a naive way (e.g. ssh $REMOTE_HOST << EOF) then I get complaints because stdin isn't a terminal. I'm pretty sure I could go down that path a little longer and fix it, but I get the feeling that I must be missing some much simpler solution to this problem: the information I'm trying to get isn't exactly a big secret, after all. And no, I don't want to log into the router and ask it, if for no other reason than that I've set up the router's administrative interface to only be accessible via a wired connection, which isn't possible from the computer where I want to run the cron job.

jane jacobs, r.i.p.

April 25th, 2006

And now Jane Jacobs is dead. Sigh. Go out and read The Death and Life of Great American Cities, everybody.

I really like this picture of her.

customers and tests

April 21st, 2006

One thing I forgot to mention in my last post: the reason why my boss was so concerned about integration testing was because of customer feedback. Which is a perfect example of why customer representatives should be involved in writing tests (instead of, say, just handing off requirements and leaving it up to the engineering team to provide the tests): if we use the analysis from that post, then customer representatives have insights into how it’s important for a test to be realistic that the engineering team doesn’t have. And, of course, the engineering team has its own insights into that as well (combined with an improved ability to make tests precise, fast, and easy to write), so they need to be involved, too.

proper level for tests

April 20th, 2006

We had a (very useful) meeting at work today which, at one point, turned to the extent to which our end-to-end tests should extend beyond the software that we are writing and actually invoke our software via our partners’ software. (As opposed to driving our external interfaces through test clients that we’ve written ourselves.)

My boss was strongly in favor of integration tests (i.e. ones that used our partners’ software); I was against doing that as the default (though I certainly agree that some basic integration tests are useful), but admittedly some of that was an emotional reflex instead of a well-considered response. So here’s a try at the latter.

What makes a good test? One answer: the test should be (in no particular order):

  • Precise
  • Fast
  • Easy to write (and maintain)
  • Realistic

Precise: a test is intended to verify certain behavior, and an ideal test will fail every time if your code sin’t as intended, pass every time if the code is as intended. Fast: the more (useful) feedback the better, and the quicker you can get back to programming the better. Easy to write: you want to encourage people to write as many tests as is useful, and to keep the tests up to date as the code changes. And realistic is good, too: what matters is how your product will behave when released into the wild.

Software is built out of subsystems, each having different interfaces. And the first three desiderata all argue for the same behavior: you should write your test at the interface of the subsystem that’s in charge of the behaviour you’re trying to test. Any further in is impossible; but the further out you go, the less likely it is that your test is going to be precise, fast, maintainable. Whereas the fourth desideratum suggests that you should write your tests at the largest-scale interface that is practical.

In the past, I’ve had a bit of a blind spot in this regard – I appreciated unit tests faster than I appreciated acceptance tests, for example. But acceptance tests have saved me several times over the last year, so I really do believe in them now. (Note, however, that acceptance tests don’t have to be end-to-end.) My unit tests aren’t perfect; also (as Phlip periodically points out on the XP newsgroup), if your tests are a bit broader than absolutely necessary, then they can also serve as backup tests for the systems other than the one that you’re focusing on. (This is why he warns against overuse of mocks.)

Anyways, clearly some level of end-to-end testing is required: even if you want to test through the interface of the subsystem controlling the behavior under test, that still suggests some amount of end-to-end testing, because sometimes the behavior under test is nothing less than the behavior of the entire system! But not always – usually the behavior you’re interested is more specific, and usually you have a choice of interfaces at which you could test the behavior under question.

The criteria above give one answer as to what interface to chose: chose the highest-level interface for which it’s possible to write the test without seriously sacrificing precision, speed, or ease of creation. Most of the time, this will be a narrow interface; sometimes, though, it will be a broader interface. And it’s worth investing some amount of effort into building up tools to make it easier to test via that broader interface: there may not be much you can do about the precision and speed metrics, but judicious tool-writing can be an enormous help with the ease of use metric.

At work right now, we have thousands of unit tests; you can run them all in ten minutes or so, and if you’re working on one particular piece of code, you can run the relevant ones in much less time than that. Which is necessary to maintain a good workflow: you can run some of them constantly to catch your mistakes quickly, you can run all of them before you check in your code, just to make sure you didn’t guess wrong about which tests are relevant.

We have hundreds of tests that test our system more broadly, typically running our entire system (but not our partners’ systems). We run these every night. This is good, too: if something slips through the unit tests, you’ll find out about it soon. I suspect we could get some mileage out of speeding up those tests, and they’re lacking in precision at times, but I don’t have anything useful to say on those fronts, and I don’t think that’s a pain point.

We have something like ten tests which check integration with our partners; those also run every night, except when they don’t because something has changed the behavior of our partners’ systems in a way that we need help to resolve. (As has been the case for the last couple of weeks.)

And my boss is right in saying that this isn’t enough tests at the integration layer. (And we all agree, of course, that their reliability has to improve.) On the other hand, I’m right in being worried about focusing excessively on that level: tests should be precise, fast, and easy to write, and currently our integration tests satisfy none of those criteria.

This suggests the following courses of action:

  • We should examine our non-integration end-to-end tests, and try to judiciously pick some to move over to the integration layer, in a way that gives us the most bang for our buck.
  • We should invest time in making our integration tests more precise, faster, and easier to write, so that we can move more tests to that level in the future.

To be sure, I have no idea how to balance that latter investment against other forces competing for our time. We certainly have other high-priority tasks (my current favorite of which is getting our Customer ducks in order), but it’s important enough that, even now, it’s worth spending effort on. And it should be an ongoing task for the indefinite future.

live house

April 18th, 2006

I’m in the middle of reading some Christopher Alexander, which of course gets me thinking about how our house works. And my conclusion is that I quite like it, but that Miranda can take almost sole credit for that.

The downstairs has one largish L-shaped room, a small kitchen, and a small den. The upstairs has a largish master bedroom, Miranda’s bedroom, and the library / guest room. There’s a bit of a garden in the back, a porch off of the master bedroom.

And we have stuff all over the place: books line most of the walls, and there’s a pleasant amount of artwork and such on the remaining walls. But Liesl and I don’t actually spend much time in most of the rooms. Miranda’s room doesn’t really count for this purpose, but as for the others: we spend lots of time in the kitchen, we spend lots of time in the den (both the TV and the cable modem connection are there), we spend meals at a table that is in one part of the large downstairs room. But, honestly, we don’t spend much time in the rest of the large downstairs room, or in the library / guestroom, and the bedroom basically gets used for sleeping and other related tasks. To be sure, those rooms aren’t completely dead – if nothing else, I regularly gaze at the bookshelves therein – but using them isn’t our first instinct. And we never go out on the balcony and basically never go into the backyard.

Or at least that’s the way we used to do things. Miranda, however, takes a different tack. She spends some amount of time in her room, of course, and some amount of time watching movies in the den. But she likes to draw in the large downstairs room, and she also likes to play in the library, either doing legos or working at a desk that we just constructed here. (Following a design from a quite nice activity book that she got for Christmas, if I’m recalling correctly – thanks, Uncle Brian!) And she even spends some amount of time sitting at the desk in our bedroom, drawing or playing with the little sculptures/etc. that she and I have put there. (She likes to keep me company while I’m stretching, for example.) And she likes the back yard, though she doesn’t spend a whole lot of time there. (Yosha has also decided that the back yard has its advantages, too.)

I’m glad that she’s getting so much use out of the rest of the house, but it also makes the rest of the house seem much more alive to me. I’ve find myself spending more time in the living room and library recently, for example (admittedly, sticking a second computer in the library doesn’t help), and hanging out in the non-den room downstairs. But I still have more progress to make.

Not that she can take all the credit – like I said, there’s a fair amount of our stuff around the house, stuff that’s not for show but that we care about and use. And I like the way the piano placement has worked, making the large room downstairs more of a defined room instead of an open area with a vague boundary.

Still a ways to go. I have to train myself to use more of the space. Now that it’s getting warmer, we should probably try to lessen the boundary between the den and the back yard: maybe spending time out there, maybe just leaving the door open (but with or without the screen? I would say with, but the dogs might destroy it), maybe leaving it closed but leaving the blinds completely open so we can get more of a view.

And our bedroom, despite its size, is woefully underused: if you just want to sit and read a book, there’s no good place to do that, the bed and desk both being possible but both having drawbacks. One of Alexander’s design patterns that I’d really like to use is a window nook; I’m not up for doing actual construction, but maybe we can stop leaving the windows there covered by default, put a slightly more comfortable chair there, and rearrange the desk and dresser somehow so there’s a more defined space near the window and balcony, lessening the inside/outside barrier.

We could even think about what would make the balcony a more pleasant place to spend time; I’m a little dubious about that, but on the other hand I do like the view of the courtyard of the townhouse complex. (Nice trees.)

Probably other things to do first, though. We just got a leak in the skylight fixed last month; Liesl’s in the middle of arranging for follow-up plaster work. Next on the priority list is to arrange for somebody to go down into the crawl space and tell us if we have termites, structural problems, or an overactive imagination; then we’ll have to deal with the consequences. And we have to get the backyard fence fixed. Miranda is actively lobbying for us to take control of the backyard and plant a garden in that; I’m tentatively in favor of the idea, but I doubt I’ll have the energy for that this year, so maybe I’ll try to stall her until next year. We just got some prints that need to be hung up (that will be easy, we can do that next weekend); and Miranda is running out of bookshelf space (good girl!), as are we, so we need to buy three more bookshelves at some point, maybe next month. But perhaps at some point over the summer we can think about rearranging stuff in our bedroom, possibly buying another chair in addition. I shall raise the issue with Liesl.

mario & luigi: partners in time

April 9th, 2006

Today’s game: Mario & Luigi: Partners in Time, for the DS. It’s the sequel to Mario & Luigi: Superstar Saga, for the GBA, and is not entirely dissimilar to the Paper Mario series.

The gameplay is quite similar to its predecessor; in particular, the DS’s special features are almost entirely unused. (It could easily have been released as a GBA game; I don’t really care either way.) You’re controlling four people instead of two (baby and grownup Mario and Luigi), but it doesn’t make much of a difference – in fact, like the earlier game, it hardly matters that you’re controlling multiple people. The characters are much, much less distinct than those of a traditional RPG; I guess this is what happens when you start with a characterless hero and add more people who are essentially clones of him with only minor modifications.

The core gameplay is pleasant enough. In particular, I like the way combat works (both here and in Paper Mario): it’s turn-based but with button pressing controlling how you attack and defend. So when you see a new kind of monster, it takes a bit of experimentation to figure out how best to defend against it (and attack it, sometimes), but even once you’ve learned that, you’re reasonably involved in the battles without feeling oppressed.

Well, not too oppressed. There’s not a lot of variation to the combat in the battles – Paper Mario, with its badges and variety of partners (with actual different attacks) does better in that regard. Honestly, there were rather too many times when I spent an hour or so making my way across some bit of terrain, and getting absolutely nothing of interest out of it – sure, there are boxes to hit, and enemies to battle, but nothing that I haven’t done a zillion times before. So a bit more novelty would definitely be appreciated.

Another way in which this series falls down in comparison to Paper Mario is how it handles leveling up – it’s all quite generic here, whereas in that series you have an assortment of badges to chose from, giving you an interesting range of options. Also the production values are lower here, but that’s expected for a handheld game in comparison to a console game.

Ultimately, I don’t have a lot to say about the game. It’s pleasant enough, but quite lacking in ambition: coasting on earlier successes and gameplay advances without really adding anything to the party. I’m not sorry I played it, and I might even play the next game in the series (assuming there is one) if it comes out when I have a lull in my handheld game schedule. But if not, I won’t be missing anything.

help me with my sql query!

April 8th, 2006

Currently, I’m performing SQL queries that look something like this:

select id from books where author_id in
(select * from
((select 106 id) union all
(select id from compound_authors where author_id = 106))
as extended_authors);

I have a hard time believing that the select * from bit is really necessary, but I can’t find a way to get rid of it without introducing a syntax error. The lesson, I suppose, is that I should learn SQL syntax, but does anybody know the right way to write this?

pasta siracusani

April 7th, 2006

I’m pretty sure this is from The Top One Hundred Pasta Sauces, by Diane Reed, but that book was Jordan’s, so I can’t say for sure. The original recipe recommends spaghetti (or even vermicelli, which really doesn’t sound like a fit to me), but I prefer the fusilli that another recipe recommends: that way, the capers can nestle in the spirals.

The eggplant is the chief determiner of the quality of the dish. I’m too lazy to do the whole “purge eggplant by salting it” deal, but I put in a lot of olive oil (not quite deep-fry level, but close – actually, deep frying would probably work great!) when cooking the eggplant, and cook it for a while. (And then pour out some of the olive oil after cooking the eggplant.)

Quite a substantial sauce, but everything in it is good.


Pasta Siracusani, from The Top One Hundred Pasta Sauces

1 lb fusilli
1 eggplant
olive oil
3 cloves garlic
4 anchovy fillets
14 oz can tomatoes
12 oz jar roasted red or yellow peppers
2 Tbsp capers
12 pitted black olives
a bit of minced basil, or dried basil
1/2 cup parmesan cheese

Cube the eggplant, and fry until soft in the olive oil. Mince garlic and anchovies, chop tomatoes, and add them to the sauce. Cook for about ten minutes. Slice peppers into strips add peppers, capers, olives, and basil, and cook for another ten or fifteen minutes. Meanwhile, cook pasta; mix pasta, sauce, and cheese.

random links: april 2, 2006

April 2nd, 2006

wordpress 2.0.2

April 2nd, 2006

I’ve just upgraded this blog to WordPress 2.0.2. (From 2.0.1; largely a security fix.) Pity they don’t make patch files available. Let me know if you see anything weird.

patty cake

April 2nd, 2006

I saw four kids playing patty cake on the playground at school last week. I hadn’t realized that you could do that with more than two people: basically, whenever you would clap the other person’s left hand, you instead clap the left hand of the person to your right, and whenever you would clap the other person’s right hand, you instead clap the right hand of the person to your left. (Unless hands are crossed, in which case things get a little harder for me to describe.)

The other interesting thing about this particular grouping was that two of the four kids were boys. (All around fourth grade, I think, plus or minus one year.) And their hands were flying just as fast as the girls’ hands: clearly they’d done this before. The particular chant they were doing, lemonade, has a “freeze” bit at the end, and they were more into the competitive aspect of that than the girls were, but not so much as to harm the game for anybody else.

immigration

April 2nd, 2006

I was really glad to see all the pro-immigrant protests last week. Nice to see a bunch of students willing to cut school for that, which I totally wasn’t expecting – I wouldn’t have though a priori that immigration would get that sort of response. Shows how much I know, I guess. (Of course, I like to see students cutting school in general, but that’s a separate blog post.)

I’m somewhat unsure of the correct response to immigration. My moral standards suggest that there is almost no reason to restrict immigration at all. It is a fact of life that people have dramatically different rights and access to resources based on factors of their life over which they have no control. In many instances in the past, we’ve come to the conclusion that such discrimination is morally abhorrent; why is it so much more acceptable to treat people differently based on where they were born than it is to, say, treat people differently based on their gender?

But I suspect that there are some reasonable answers to that question that I haven’t seen yet – just because nativist bigots get most of the press, along with my governor equating illegal immigration to anarchy (hmm, actually I’m sympathetic to anarchists too, come to think of it), doesn’t mean that there aren’t good arguments to be made. And the pragmatics of the situation deserve a good look, which I haven’t seen. (I would have a hard time evaluating pragmatic arguments, admittedly; I should spend more time learning about economics, I think.)

How the World Works had a good post on the subject. Good blog, that; makes it worth clicking through the Salon ads every day.