shinyblog

Friday, April 29, 2005

a decadent morning

I climbed into bed just after Jon Stewart said, "Okay, people, that's our show for today! Goodnight! Here's your momoent of Zen!" Then he showed a clip of Bruce Willis, bald but with a Bolton-style mustache, reading a speech in exceptionally bad French. (I don't speak French, but I could still tell it was bad French.)

I woke up at 7:10, or actually, 7:03, because the clock in my bedroom is seven minutes fast. The alarm was set for 8:30, so I knew I had some time for a mellow morning. I drank coffee with cream, spread nutella on wheat bread, and read Harper's Monthly. Ah. Just delightful.

Thursday, April 28, 2005

Chatting with Zeb

[I'm working on an NSF proposal about telecollaboration; I wrote this description of how our family uses teleconferencing to keep in touch from different sides of the country. Some specifics have been changed for the purposes of narrative, but this is pretty much an accurate description of what we do and how it affects us.]

Most Sunday mornings, I sign on to my chat software before I even get coffee -- not because I'm one of those people whose entire social life is on the internet, but because there's a three-year-old boy three thousand miles away waiting to talk to me. I live in Rhode Island, and my nephews, Zebediah and Isaac, live in Seattle, along with my brother Dan and his wife Melissa. On Sundays, as every day, Zeb wakes up early, Dan tries to wake up early, and Melissa sleeps in. Dan takes the boys in to the kitchen and gets them set up for breakfast, Zeb in a real chair because he's a big boy, and little Isaac in a baby chair. Then Dan opens up his laptop computer, plugs in the the tiny webcam, signs on to chat, and asks me if I'm ready to talk to his boys. We spend the next hour or so sitting around the kitchen table, talking and playing with eachother. Zeb and I have been doing this for about a year and a half; we've established some rituals, like always wants to see my power tools, and what my cats are doing. Sometimes Zeb questions me about things he's been thinking about: "Sascha, what do you like about police officers? Sascha, do you have all-weather tires?" and I always ask Zeb what he's been up to. He usually replies, "I don't know?" and looks to his Papa to remind him. Dan says something like, "You went to the train museum, remember? And you saw a tow truck, and..." at which point Zeb pipes up and says "Sascha! I went to the train museum!" I haven't seen Zeb in person in nine months, but I know all about how he talks in complete sentences now, how he can use a spoon himself, how he loves Mars and the Hubble Space Telescope and dragons, how he plays with little Isaac and kisses his head, and how incredibly energetic he can be on a Sunday morning. Saturday nights, Zeb usually talks to his Grandma Deb, and he talks to Grandpa Mark and Grandma Shelley whenever they all happen to be online at once. Sometimes my brother will come online and ask if I can chat, reporting that Zeb has been saying, "Papa! I want chat Sascha!" When one of us appears at my brother's house in Seattle, Zeb doesn't hesitate; he knows exactly who I am, and runs towards me for a hug. "Sascha! Come read me a book! Sascha! Have you seen my fire truck?"

What I've left out of the story is what it takes to make all of this possible. First, the participants: my brother, my mother, myself, and my father are all computing professionals: two hard-core programmers, one master IT problem-solver, and one school media specialist. Next, the hardware: we all have Apple Macintosh computers, and my brother gave each us of an Apple iSight camera, with integrated microphone and noise-cancelling software, designed by Apple to enable this sort of one-to-one video chat. We all have broadband connections and almost all of us have wireless networking, so we can hold our webchats from whatever part of the house we like. Finally, there's a set of behaviors that make it work for us: Zeb runs around a lot, so Dan keeps adjusting the camera to point at him; Zeb's voice is high and quiet, or entirely inaudible if he's too far from the camera, so Dan repeats most of what Zeb says, especially when talking to my mother, who has a partial hearing loss. The video quality is rather poor, especially for small fast-moving objects like Zeb, so my brother supplements the video conferences by frequently posting high-resolution digital camera images of his family. The connection goes down so often that Zeb has learned to explain "There was network congestion, Sascha!" when we reconnect.

[I'm not sure what comes next, in the NSF proposal. "Everyone should be able to hang out with their far-flung relatives this way!" isn't going to be enough to convince hard-core scientists to invest scientific funding. So I'll keep thinking about it.]

And thanks, Dan, for having such beautiful children, and helping me hang out with them!

Friday, April 22, 2005

this weekend is the prepare-portfolio weekend

Screen is done, and that's been occupying most of my weekends since December. I'm working on a grant proposal, but that can wait until Monday. I'm going to teach John Cayley, a cool hypertext poet how to use Java 2D for fine control over the appearance of text in applications for cross-platform deployment -- but that's not until Wednesday. (Yes, I know the effort is probably doomed; not because John's a poet, but because the goal is pixel-perfect rendering on multiple platforms... but we'll see.)

In any case: I have the weekend to my own purposes, and my purposes are this: to press forward with my job search! I've had a few interesting conversations with scientific textbook publishers; since they're starting to do educational software and online services... which I know something about. God, to work at O'Reilly, or Addison-Wesley, or Prentice Hall! Maybe not as a technical writer, but on their tools, their site, on their code examples. O'Reilly!

But I stray from my PURPOSE for this weekend:

  1. Gather ingredients for my portfolio.

  2. Scan things if necessary.
  3. Organize my portfolio. Themes, projects, media, timeline - something that makes sense.
  4. Deploy my portfolio on the web.
  5. Deploy my portfolio as a DVD.


It wouldn't be a weekend if I didn't do some programming, so, I'll probably either learn more about Laszlo, which has a cool, solid approach to authoring rich internet content. They're the creators of the
Behr ColorSmart Colorpicker, which is one of the best things on the web, ever. And I'm very curious to dive into Java 1.5, but I know I'll do better if I only learn one new language/library/application at a time. So this weekend is about focus, and getting things done. It will be such a pleasure to end Sunday night by posting a new version of my portfolio... and so amazing to spend a weekend working only on my own projects!

Wednesday, April 20, 2005

Peter F. Hamilton and too much nonlinearity

Does anyone actually understand Peter F. Hamilton? I'm reading Pandora's Box -- at only one 1k-pages volume, one of his smaller works -- and it was mostly making sense until all of a sudden a whole bunch of things happened simultaneously to a dozen major characters, at distances of several hundred light years. Now, I'm willing to punt on simultaneity, since Hamilton employs faster-than-light travel in the form of wormholes... but his haracters switch allegiances and bodies and possibly even names partway through, and sometimes they are dead for a few decades before getting re-lifed, and sometimes they forget their own memories on purpose... But still, really I was mostly following it -- socialist terrorism, safe but strange aliens, wormholes, and infinite rejuvenation -- until the narrative suddenly ended up 250 light years away with humans in between the midddle of at least one unknown alien civilization's nuclear bomb party.

On a scale from extremely non-linear and distributed narrative to linear single-person narrative, I've only found three books that go too far towards extremely non-linear:

  • Pandora's Box by Peter F. Hamilton

  • Ilium by Dan Simmons

  • Light by M. John Harrison


Neal Stephenson's Cryptonomicon and Baroque Cycle do meta-linear just right, and I absolutely adore Kim Stanley Robinson's Mars trilogy. I'll even admit to enjoying George R. R Martin's Storm of Swords epic. Looking at my bookshelf, I don't see any books which I found too linear... but then, there aren't many linear books on my bookshelf, except for a few memoirs... although even memoirs tend to be composed in little chunks; August Burroughs begins Magical Thinking, his latest memoir, with a detailed story about being in a Tang commercial which I can't begin to place in the narrative of Running with Scissors, supposedly the memoir of his insane childhood.

I suppose the real literary theorists will argue with my imposing a linear scale on non-linearness. Feel free to suggest a better way of thinking about it, or help me figure out what's going on with the middle five hundred pages of Pandora's Box.

Monday, April 18, 2005

A different side of Providence

For the last few days, I've been taking the bus around Providence... because my car is in need of major repairs, (a new clutch, apparently) and I still need to get to and from work. Providence is very different on public transportation. Providence feels more like San Francisco, on public transportation. (At least, Providence in April feels like San Francisco in March-October.) There are a whole lot more people who are not affluent white college students. The bus routes go through the center of downtown Providence -- Kennedy Plaza -- yielding some vistas inaccessible from a car: Waterplace Park and the skating rink, a plaza at the head of Westminster street, the river walk down along South Main Street... Mostly there are a whole lot more green places, public places, and art places from the bus than from a car. The public transportation system seems to be actually designed to pull people into downtown and create a feeling of liveness there; it works.

I remember wandering downtown as a freshman some spring afternoon ten years ago. This was before Kennedy Plaza was renovated, before the mall, before the traffic flow changes on Westminster... I ran into Garth, a rock-climbing artist who lived in the Milhaus Co-op with me, and we had a sugary greasy lunch at a dark Chinese restaurant on an alley. I went on to the Arcade, then, probably; the first glassed-covered shopping area in the United States, where people could walk between several stores and restaurants without getting rained or snowed on. Built in the early nineteenth century, I think, it's now cramped between too many boxy office buildings. The voluminous (but not tall) semi-industrial buildings, combined with one-lane major streets, create an urban canyon effect, like New York on a 1:4 scale, and even more claustrophobic. My memory of Providence, from my undergraduate days, boils down to "Providence is a hole."

Today I saw a different Providence; not a hole but a presence, a place, a personality, a life. Kennedy Plaza is now a real plaza where people gather; Waterplace Park and the River Walk extend public urban space from the north to the south end of downtown; the Providence Place Mall creates a reason for surbanites to enter the city.

Providence is not just a waypoint for me between a suburban youth and a west-coast adulthood; Providence is a real place, and I live here.

Friday, April 15, 2005

Capturing high-quality video with G3D

My collaborators and I put together a sketch submission for SIGGRAPH '05. Along the way we came up with a process that lets us capture high-quality video with G3D, the C++ OpenGL abstraction we're using for CaveWriting. This technique is a vast improvement over the video capture techniques I've used for interactive 3D graphics in the past, because it captures the actual bits on screen and yields a high-frame-rate video with smooth animation.

(Until recently, we did video capture of interactive graphics either with a digital-to-analog scan converter, or by filming the walls of the cave with the head tracker attached to the camera. These techniques yielded low-resolution images with a fair amount of distortion; they did, however, capture real-time interactions. Based on my preliminary research, standard video capture applications will have difficulty with capturing high-frame-rate graphics which rely on extensive hardware acceleration; the technique described below slows down the frame rate, captures each frame, then re-creates interactive frame rates in post.)

The process has several steps:

  1. Set your rendering hardware to do exactly what you want. In particular, do you want to turn on hardware antialiasing? You'll want to go through the whole process with and without hardware antialiasing, to see what gives you better results after your whole encoding & compression process.

  2. After drawing each frame, capture a screengrab using G3D::RenderDevice::screenshot("grabs/"); This will create a series of dated and numbered screenshots in jpeg format in the grabs/ directory. Interact very slowly! Your motions will be speeded up by a large factor (10-300 or so) depending on many things. You'll have to do iterate through this process a few times to get the timings right.



  3. Assemble the screenshots into a video. On the Mac, using QuickTime Pro, do File -> Open Image Sequence, open the directory with all your images in it, import at your desired output frame rate (probably 30 fps), then save as that same frame rate. You can also do this with Graphic Converter, which (unlike QuickTime) doesn't require registering to use this feature, On Windows, Morgan suggsets using VirtualDub. For Linux, Peter Sibley suggets mencode/mplayer


  4. Tune timings; if your animation is based on real time passing, extend the duration of each tween; if your animation is based on simulation time, slow down the passing of simulation time.


  5. Archive, if desired, and clean up the captured images. Frame numbers just keep incrementing with every subsequent call to RenderDevice::screenshot(), so if you don't clean out the grabs directory, you'll be using an awful lot of disk space, and it will be tricky to identify the first frame of each run.


  6. Repeat steps 2-5 until you have the timing you want. In our experience, we captured about a thousand frames at 800x600 at 1-2 fps; the same program running without frame-grabbing ran at >100 fps.


  7. Edit and title. We edited using iMovie 4, which was acceptable but not great.


  8. Add audio.


  9. Export. Video is huge; for SIGGRAPH we had to get our sketch down from 250 mb without audio to under 40 mb with audio. Video compression is an art, and not one that I know well. If you can recommend good video compression settings for captured CG, let me know. We used MPEG-4 compression with medium quality.



A few suggestions:

  • Leave a lot of time for working with video. Video can bring even blazingly fast computers (like our dual CPU 2 gig ram G5) to a crawl.

  • If you're using linux, figure out how to capture to a local temporary directory (/tmp or /ltmp) rather than using the networked file system.
  • You might have to ask for permission in advance to use local storage.