I hadn’t been to a

I hadn’t been to a haunted house in several years, and was starting to feel really deprived. Especially since I’ve given of my best to this holiday before, I wanted to do some super-duper Halloween-y stuff! Fortunately, I have enthusiastic friends who are willing to drive hundreds of miles to see Amish teenagers in rubber masks, all shaky on Red Bull, jumping out of the trees on bungee cords and brandishing chainsaws in the air.

There were some hitches in the program: I managed to deliver on the promise of warm apple cider doughnuts, but had to substitute local Mexican food for open-air barbecue (problem with the directions.) And, instead of taking everyone to the local punk rock bar afterwards, I accidentally steered the group into the smoky headquarters of West Chester University Jockocracy.

Nobody seemed to mind too much, though. There was still some goodwill left over for
command-performance cheesiness the next day.

Special feature of this picture: Kate almost showing!


click the buttons to select your desired level of cheesiness

As for the hayride itself, it was freaking awesome. The flatbed wagons are pulled through trails
in the woods, with only inches of clearance between the sides of the wagon and the surrounding trees.
Amish seasonal workers in facepaint and masks are everywhere — leaping up behind you when you’re
looking at the fire-breathing dragon, leaping onto the wagon from derelict ghost-town sheriff’s porches,
and yelling “Dy-no-mite!” just before a giant, hot ball of flame shoots up from behind the wagon. I hadn’t ever thought of giant fireballs as a necessary part of Halloween before, but you bet your ass it was a great idea. Along with the bungee-jumping zombies (and the fact that we were being pulled by real farm equipment, not an electric cart), this hayride was 110% kickass.

The hayride finishes through a long, low mineshaft, complete with lots of runaway mine carts
almost smashing into the wagon, giant, horrific, animatronic underground monsters, etc. I wasn’t scared, I wasn’t!

Jessica, visible in her pink coat, got lots of extra chainsaw attention. The Lulu pin on her
lapel pretty much summed the experience up:

Lulu before

Lulu after
I hadn’t been to a

Steve Farrell sent me this

Steve Farrell sent me this link:

What do 10-year-olds in 2003 have to say about the games we played in 1983? Like Pong, for example?

Niko: Hey�Pong. My parents played this game.

Brian: It takes this whole console just to do Pong?

Kirk: What is this? [Picks up and twists the paddle controller] Am I controlling the volume?

Andrew: This is a lot like that game. Um, whatchamacallit�air hockey.

Sheldon: Except worse.

Read the article >>

Steve Farrell sent me this

Kieran had some thoughts on

Kieran had some thoughts on the Time Traveler’s Handbook:

I’ve been
thinking about your time traveler’s guide project, and
although you’ve probably mentioned this before, are
you thinking of it as mostly a technical guide, an
etiquette manual, or a combination of the two?
Naturally, in a great deal of my history of science
reading thus far, the tales of scientists making
discoveries or inventing things in the past is just as
much about the cultural and social circumstances as
the time as it was about the level of scientific
advancement. The social construction of scientific
knowledge has, of course, figured prominently in our
discussions. I can imagine you having a great time
giving instructions both about what technical devices
might be available to our trusty time traveler
whereever he or she might land, but also mentioning
that if they happen to find themselves in a salon in
Victorian England to be sure they can speak
knowledgeably about Vestiges on the Natural History of
, but not to reveal that they know who the
author is unless it’s after 1850.

Good advice.

Also, my brother Oliver visited Philadelphia a week or two ago, and make a great pencil drawing of an ancient Greek philosopher getting excited about playing Xbox. So that’s progress, too. (Other drawings by Oliver on this site)

Kieran had some thoughts on

It’s been a while since

It’s been a while since I posted here. What I’ve been doing:

  • Kate made curtains for the baby’s room, which feature monkeys riding on camels. It’s a good, Rudyard Kipling-esque kind of monkey-camel riding thing, though, not the kind of thing destined to give nightmares. The oil painting by my brother Oliver, however, is a different story: it features a placid, pallette-knifed wood scene. A mountain is reflected in the lake, and in the middle of the lake a giant eyeball floats. That one’s not staying in the nursery.

  • Yesterday, I dug three craters in the yard to get rid of three overgrown bushes in front of the house. I was astonished at how much dirt I had to move in order to get the root balls out. The toughest case — a gnarled evergreen — forced me to dig a seven-foot Comedy Bomb Crater with the root ball standing proud in the middle. Still, it was satisfying work, especially since the bushes were so tall that our house had been starting to look like the one that you don’t want to lose your softball in the back yard of. Even though the freaky crone inside turns out to be very nice, with the lemonade and the cookies and the happy after-school special ending.

    I took the brush to the Lanchester Landfill in Snuffy’s truck, which is a HUGELY cool mid-nineties tan Ford F150 with a black “CASH” sticker on the back. I wore Amish broadfall pants with suspenders and a Carhartt coat, and enjoyed the hell out of being a gentleman farmer for the day. (“Gentleman farmer” = “No idea what you’re doing”)

  • Kate and I have been talking about baby names. For no good reason, I find myself attracted to the polysyllabic names of ancient conquerers, like “Sennacherib” or “Ozymandias.” I would never saddle an actual kid with that name, although “Yosemite Young” is still under consideration. “Ashley” and “Madison” are DEFINITELY not. (We don’t find out the gender of the baby for another month, BTW.) This site from the Social Security Administration has been a big help.

  • Last weekend, Kate and I went to a nearby farm to buy some pumpkins. Like many farmers in the area , Milky Way Farm is adapting to suburban sprawl by becoming a B2C operation. They’ve built and opened a creamery, selling gourmet ice cream. They have a big pumpkin patch, to which you ride on a wooden trailer ringed with hay bales. A local teenager, fresh from soccer practice, stands by the tailgate on the way over and rapidly recites a half-remembered tour: “The building on your right is the barn, where the cows go to, um… where they go, when they have to, um, go somewhere.” The parking field is packed solid with minivans and SUVs, and the pumpkin patch is packed solid with affluent suburban families in casual clothing. Kate overheard two couples talking: “Oh, do you pick your own pumpkins too? We’ve been coming here for years. We even cut our own Christmas trees!” Overcome by this display, Kate muttered “Wow, lady! Do you even kill your own Easter bunnies?”, which almost caused me to drop the three head-sized pumpkins I was staggering along with.

  • I put a windshield on my motorcycle so that the ride to the station is a little less cold. Now that I’ve got hard saddlebags and a windshield, the bike is edging towards being an old-man cruiser. However, I don’t see any of the local hipsters riding their Italian cafe racers to and from work in 40 degree weather, so I’m probably retaining some measure of coolness. Like it matters. Unfortunately, it’s dark on both ends of the ride, these days — to the station at 6:30, from the station at 7:30 — so I don’t get to see the leaves. What’s more, the darkness on the ride to the station is making the ride more dangerous. Twice in the past two weeks someone has pulled out from a side street directly in front of me. These were low-speed events: the most at risk were some bruises, but my horn, my vocabulary, and my middle finger have all been getting a workout. If it doesn’t get much lighter when daylight savings starts, I’m gonna think about packing the bike up for the winter.

  • I’m working on a highly secret prototype project, whereby I will use old, clunky electronics as protective cases for new, expensive, and delicate electronics. Did I mention it’s highly secret?

  • I finally finished a project I’d been working on as a going-away present for my friend Kieran Downes, who’s now at MIT studying the history of nuclear weapons. It was a mushroom cloud nightlight made out of clear vinyl, pop-rivets, and some of Kate’s quilting template material, and it turned out pretty damn cool, if I do say so myself. The next day, I left it on the train, and it got lost. Ugh.

  • I got a promotion at work! When I get my new business cards in six months, they will read “Associate Director, Technology”. I now share a window office and have that most important badge of Agency status: my very own Herman Miller Aeron Chair. With no doctor’s note or conference-room larceny needed!

It’s been a while since

I’m learning to use a

I’m learning to use a new Web application architecture called Struts, which is a Java framework for making complex websites that carefully separate the front-end pages (which creative folks build) from the back-end code (which the programmers write) from the business logic that orders the pages (which the client service teams change their minds about all the time.)

Web pundit Philip Greenspun has recently compared J2EE (that’s Java 2, Enterprise Edition) applications to SUVs. They’re big, heavy, unwieldy, and theoretically have more power than you ever could use, or want — especially if you do all your driving to and from the grocery store. Which is news to nobody. “Pick the horse for the course” is a standard mantra among experieced interactive architects. Writing a prototype? Great — use PHP and CGI. Writing a landing page that just captures names and addresses for a sweepstakes? Fine, use VBScript and get on with your life. Writing a shopping cart for a thousand simultaneous users? Okay, NOW you need to fire up the Hummer.

Anyhow, saying that Struts has a steep learning curve is, um… correct. What makes it especially difficult is the way that every piece of Java code you write depends on the one above it, which depends on the one above that. The chain runs all the way up the ladder, just like your name and address in your seventh-grade biology textbook went all the way up to “…the world, THE UNIVERSE!”

java.lang.IllegalArgumentException: Path success.html does not start with a '/' character,  at org.apache.catalina.core.ApplicationContext.getRequestDispatcher(ApplicationContext.java:1179),  at org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher(ApplicationContextFacade.java:174),  at org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.java:1751),  at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1596),  at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510),  at javax.servlet.http.HttpServlet.service(HttpServlet.java:760),  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853),  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247),  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193),  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256),  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643),  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480),  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995),  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191),  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643),  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480),  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995),  at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416),  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180),  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643),  at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171),  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641),  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172),  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641),  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480),  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995),  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174),  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643),  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480),  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995),  at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223),  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601),  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392),  at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565),  at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619),  at java.lang.Thread.run(Thread.java:534)
So when you break something in Java, you don’t just get an error message about the closing parenthesis you forgot. The server proceeds to read you the riot act, telling you about your code, then describing how your dumb mistake broke the thing above it, and now the thing above THAT doesn’t work. Java goes into great detail about your ancestry, what it thinks about the town where you came from, and how if your dog was as ugly as you, Java would shave its butt and teach it to walk backwards.

The only thing Java is lacking is the proper vocabulary.

I’m learning to use a