Category Archives: General

Phew, back from SIGGRAPH

Well, I’m back. Hope you all didn’t miss me too much. I‘ll try to provide links to some of the papers that I liked, and also some feedback on the conference itself later in the day. Stay tuned.

No SIGGRAPH would be complete without a story or two of how I committed horrible social blunders, so I’ll get this out of the way first thing. But first, some background. Back in the mid 1980s, I was a hapless graduate student at the University of Oregon. I had no particular interest in computer graphics. I’d taken an undergraduate course on the subject, and we had spent pointless weeks deriving and rederiving Bresenham’s algorithm for line drawing, and then showing how we could use it to draw circles. Snooze.Picure from Whitted's classic paper

But then I got a copy of Turner Whitted’s 1980 paper An Improved Illumination Model for Shaded Display. The abstract:

To accurately render a two-dimensional image of a three-dimensional scene, global illumination information that affects the intensity of each pixel of the image must be known at the time the intensity is calculated. In a simplified form, this information is stored in a tree of “rays” extending from the viewer to the first surface encountered and from there to other surfaces and to the light sources. A visible surface algorithm creates this tree for each pixel of the display and passes it to the shader. The shader then traverses the tree to determine the intensity of the light received by the viewer. Consideration of all of these factors allows the shader to accurately simulate true reflection, shadows, and refraction, as well as the effects simulated by conventional shaders. Anti-aliasing is included as an integral part of the visibility calculations. Surfaces displayed include curved as well as polygonal surfaces.

In short, Turner had invented the rendering technique that we know today as ray tracing. And quite frankly, it changed the course of my interests in computer graphics as well as ultimately my career. It’s an amazing thing to realize that just reading a six page paper from someone that you never met can affect the course of one’s life so dramatically.

Luckily, I did ultimately meet Turner.

I’m not sure what year this was, but it was perhaps fifteen years ago that I was attending a SIGGRAPH Birds of a Feather meeting that we used to hold which was called “The Raytracing Roundtable”. Organized by Eric Haines, people interested in raytracing would show up, we’d go around and introduce ourselves, and then pointlessly argue about which acceleration structure was the “one true, fastest” technique. They were fun back then. On this particular year, I introduced myself, saying that I wrote the “MTV raytracer” (which was still rather popular back then) and that I worked at Pixar on rendering technology.

Then, the person to my left introduced himself: Turner Whitted. He mentioned that he now worked primarily on digital design. And the intros moved on.

The odd thing was that I suspect only about one in three people there knew who he was. I was delighted for the chance to talk to him, and we exchanged pleasantries, and he flattered me by saying that he had swiped a chunk of the ray intersection code from my raytracer (quadric ray intersection, if memory serves). I was in heaven.

Fast forward maybe ten years. I’m at SIGGRAPH again, and hadn’t spoken to Turner in all that time. I’m on a bus heading back to my hotel from the Staples Center, and I see Turner board the bus. He calls me by name, somebody he hadn’t talked to in a decade. I’m totally floored. We talk about FPGA design a little bit, something that I keep being interested (but as yet have not found the time to adequately explore) but I’m left again knowing that I’ve been in the presence of a truly great pioneer and a really nice guy.

Fast forward to this SIGGRAPH: I’m at the Disney R&D mixer, and I see Turner again. He comes right up, shakes my hand, what a nice guy. I introduce him to Julian, and we chat again about digital design. Somehow the topic of tools comes up, and Julian talks about Altera’s tools and their support of Linux (the operating system that we both prefer). Without really thinking about it, I blurted out that I had sworn to send Microsoft no more of my money.

Of course the thing you may not know (and which I only remembered hours later) is that Turner heads the graphics division of Microsoft R&D. Doh!

My self-imposed moratorium of sending Microsoft money had begun with this annoying day when I finally deciding to nuke my increasingly lethargic laptop and but Ubuntu on it. It’s still running Ubuntu, and works just fine. I’ve since moved on to using a little cheap Macbook, which I basically love to death. All the nice GUI with the underpinnings of Unix which I love. I don’t really believe that Apple is a more benevolent commercial enterprise than Microsoft, but I think they are more focused on improving customer experience, and it shows. Even when I ultimately bought my son his new Windows Vista box, I couldn’t help but be reminded about how great the out of box experience was with my Macbook, and how by comparison the Vista experience was slow and clunky. So in a sense, I don’t really regret saying what I did: it expresses a very real frustration with their products.

It’s also no secret that I am an enthusiastic supporter of open source. I’ve used FreeBSD since the release of 1.1.5.1 back in 1994, and various distributions of Linux almost as long, now pretty much using Fedora at work and Ubuntu at home. These systems are both capable and represent a philosophy that I support: that society is well served by having a free, user-created computing environment. I suppose it’s a form of idealism that I like to entertain and promote.

But I shouldn’t have acted like an ass. The simple truth is that Microsoft R&D employs some of the greatest minds in computer graphics and I should be intellectually strong enough to separate my frustration with their products from the admiration both the fine work that people like Turner have done and continue to do. I should also work harder to keep my idealism from becoming dogma. I’ll try to keep this tension in mind more clearly when I comment about this stuff in the future.

An aside: as it is, my resolve in my pledge is already weakening: it appears that DirectX 10 allows you to do quite a bit more than the OpenGL support that is accessible from Linux. Support for the latest, fastest stuff always appears for Microsoft before Linux, and much as I might like that to be different, it’s the reality of the situation. I’m in a position where I’m forced to admit that the Windows platform may actually grant more power and capability than Linux.

Okay, enough of that, on with the technical highlights.

As a reminder, you can get most of the papers as links from http://trowley.org/sig2007.html.

The sole exception that I found interesting is Brian Guenter’s paper Efficient Symbolic Differentiation for Graphics Applications. I’ve studied automatic differentiation techniques quite a bit, and while I haven’t dissected the paper yet (I had to leave before it was presented) I’m pretty intrigued by the results. Several computer graphics applications that I am interested in require the differentiation of complex sets of equations, and this promises to evaluate these in a much, much faster way.

Real-time Edge-Aware Image Processing with the Bilateral Grid was pretty cool. Bilateral filtering has many applications, and this technique allowed many previously non-realtime processes to be done interactively. Neat!

Plushie is a system that allows anyone (even kids) to sketch out designs for stuffed animals, and then creates a 2D pattern so that you can cut them out and sew them together.

Photo Clip Art and Scene Completion Using Millions of Photographs harness the power of Flickr and the millions of photos that can be downloaded from there, and harnesses in interesting ways. The first searches for elements (such as cars and peoples) that can be seamlessly incoporated into the picture you are editing, even trying to match the lighting and sizing people accordingly, and the second allows you to replace parts of your image (such as telephone poles) with bits of other, similar pictures. Both very nice papers, and very thought provoking.

Many-Worlds Browsing for Control of Multibody Dynamics is a simulation system that allows you to select very unlikely but physically correct simulations to achieve a goal. If you check out the video, you’ll see that they managed to find an initial position which causes letters falling through a pachinko style maze of pins to form the word “SIGGRAPH’. This system harnesses fast multi-body simulation enable you to direct the action.

Some other good things: panels about the cooperation between Lucasarts and ILM, panels on Happy Feet, Spiderman and Transformers (as well as Ratatouille) and the cool weather and good food of San Diego. Oh, and the girl with the solar panel bikini to charge her iphone.

[tags]SIGGRAPH,Computer Graphics,Turner Whitted,My Bad[/tags]

Matt Blaze: California voting systems code review now released

Keeping in the entire “hacker” theme, I read today on Bruce Schneier’s blog that code reviews of three voting machines that are proposed for use in California elections has been released. I found that (not surprisingly) someone that I knew had worked on one of them, and now that the report is published, he is free to talk (and blog) about it.

Matt Blaze: California voting systems code review now released

The problems we found in the code were far more pervasive, and much more easily exploitable, than I had ever imagined they would be.

I haven’t read the final reviews, but right now, security for voting machines seems to be a serious problem.

Matt exemplifies the best of the kind of hacker that I mentioned in my previous post, and here is participating in a project of monumental importance. At stake is literally the trust of the American people in the integrity of their democracy. It would be easy to put this control into the hands of a few companies who make millions of dollars selling voting machines, but as the reports that are coming out of this review indicate, they simply have not done a reasonable job of protecting the integrity of our democratic process, despite their assurances that exploits of such systems are impossible.

I’ll probably have some downtime next week, and will try to read more of the reports.

[tags]Security,California Voting Machines[/tags]

Defcon 15: Undercover reporter flees

I proudly accept the label of “hacker”. That word gets tossed around alot, and means different things to different people, but I mean it mostly in the sense that author Steven Levy might have approved of. (I think it is a tremendous shortcoming that Levy’s fine book Hackers is only mentioned in passing on the above Wiki page). To me, a hacker is a person who is fascinated (even obsessed) by the inner workings of complex systems and mechanisms, and in the prospects of manipulating them to produce desired and unexpected effects.

When the media normally mentions hackers, it is in the context of computer crime: individuals who exploit vulnerabilities for either financial gain or simple vandalism. There is, of course, some overlap between these two camps, but I don’t identify myself with criminals of any sort, even those who nominally commit their acts to call attention to software vulnerabilities. After all, if someone kicks in the door of your house to demonstrate how easily a criminal might do it, I don’t think they deserve any special thanks.

But short of committing crimes, I think there is a valid purpose in engaging in exercising the skills that such criminals would employ. Someone doesn’t need to kick in my door, but someone can setup a door, and then show how easily such a door can be kicked in. This kind of information advises the publics on the risk of using weak doors, and the publicity means that door manufacturers are likely to do a better job.

Well, all that is background. This is just a way of saying: I think it would likely be pretty cool to attend DefCon. I’ve read about their goings-on for years, and think it would be a fun way to spend three days, immersed in a world that I’ve mostly seen from the edges. I’ve attended other smaller get-togethers of similar nature, but the sheer size and scope of DefCon is somewhat appealing.

Here’s the thing about such conferences though: the people involved are in general pretty cautious about talking about what they do. Much of what they do is circumvent security and copyprotection mechanisms, and the legal climate here in the U.S. makes that a fairly risky thing to admit to. In particular, it’s a bad thing to admit to in front of the general press. The press covers events like this with remarkably little subtlety, usually using interviews merely to confirm the preconceptions that they and the public already have about the hacking community. Such characterizations aren’t helpful, or even truthful.

The net result of this is that press are either denied access to such conferences (such as ones that I have attended) or are required to wear a press badge so that attendees know when they are talking to the press. The press is further required to obtain permission to film any individual in private conference areas, or to film conference sessions. Usually, general sweeps of cameras on the audience are not permitted. Those are rules.

That’s the background.

It appears that there was a bit of a kerfuffel (is that a word) this year as NBC Dateline producer Michelle Madigan showed up at DefCon this year. She apparently registered as an ordinary attendee, had repeatedly rejected the idea of using a press pass, and was reportedly secretly filming the goings on using a hidden camera. In the opening session, it was announced that there was a press person posing as an ordinary attendee, and that she should be found and escorted from the premises. She was told that she would be welcome to return if she used the appropriate press pass.

Link to Hack-a-day coverage, and youtube video of the results:

Defcon 15: Undercover reporter flees – Hack a Day

She obviously is a bit concerned about being photographed and followed as she is leaving. I must admit that I feel a bit of sympathy towards her, which is (upon reflection, and somewhat surprisingly to me) likely due to the fact that she is a woman, placed in a position which might (somewhat reasonably) be considered threatening. Still, I can’t help but think of the irony of this situation: she was photographing people secretly, and, let’s face it, quite likely to publish a report which portrayed the individuals filmed in a less than exemplary light. These people had told her (through the policies of the conference) that if they were to be photographed at the conference, you had to obtain their permission first.

She chose not to obey the rules. When you break the rules and get caught, it leads to some uncomfortable moments.

Frankly, I think that they could have done this better and more politely. They could have simple refused to grant her a pass, and announced that fact in the opening session. The drama of creating a potential mob scene in the opening session, and the risk that it could escalate was simply to great to justify any of the delicious irony of outting her live. Regardless of the intentions of the organizers, it could have rapidly gotten out of hand, and that would have sucked. Let’s face it, if one person is crying that you be tarred and feathered, that’s probably not a big deal, but if a conference room full of hundreds of people are all chanting it, you might have some legitimate reason to be fearful for your personal safety, and nobody should feel that their personal safety is in jeopardy in such a situation.

Be polite, people.

[tags]DefCon,Hacking,Hackers[/tags]

Puppy vs. Kitten

I’ve written before about my cat Scrappy: the partially feral cat who now bitches at me if I don’t pet him enough. He went through a period where he obviously was getting into fights with other cats in the neighborhood (thankfully, which has not happened much lately). I often wondered why he would fight cats where he obviously wasn’t coming out the winner. This video demonstrates why: cats are obviously willing to fight things twice their size. To their credit, they do appear to have a mastery of the sneak attack that dogs seem to be unaware of:

Bugs Bunny, greatest banned player ever

U.S.S. Mariner » Blog Archive » Bugs Bunny, greatest banned player ever

The exclusion of non-human players like Bunny is another shameful example of the long history of injustices done by baseball’s racist policies. That black and rabbit players could only play against white players in non-sanctioned exhibition matches deprived the game of some of the best talent to ever play, and from what we’ve seen, robbed scientists of a chance to better study phenonema with wide applicability to questions of physics that could have greatly benefited all residents of the earth, be they human or Leporidae.

Thanks Dan for the link.

You can watch it on Google Video.

Schneier on Security: Conversation with Kip Hawley

Bruce Schneier was invited to come to Washington to talk with Kip Hawley, head of the TSA. He’s currently putting up a five part article about those conversations on his blog. Part 1 Part 2 and Part 3. What we see is an agency which is trying to put on a better face without actually addressing any of the real concerns that people have. They want us to trust them, but they don’t wish to actually demonstrate that we can trust them. It also demonstrates that the TSA is very interested in behavioral profiling. Quote of the day:

Don’t forget, we see two million people a day, so we know what normal looks like.)

Addendum: Schneier asks about the 3 oz. limit for liquids, asking what’s to keep a terrorist from trying to smuggle a quart of some dangerous liquid on board. After all, if you accidently forget, they just confiscate this stuff and huck the liquid in the bin: they don’t immediately strip search you and put you on a watch list. So, a motivated terrorist could try, multiple times, to get such liquids past security, and given the effectiveness of screening, eventually succeed. Hawley’s response was that “If the TSO throws your liquids in the trash, they don’t find you a threat.”

Well, if that’s the case, then why do they bother throwing your liquids in the trash at all? If I’m not a threat, how about letting me keep my 12 oz. bottle of Paul Mitchell shampoo?

Late night hacking…

I was tired and cranky all day.  My wife is asleep, but I’m hacking on my laptop in the dark.  How lame is that?

This is really just a test to make sure I’ve got the feedburner problem ironed out.  Maybe now I can sleep.

Apologies for brief not-so-brief downtime…

I was attempting to upgrade some unrelated packages on my FreeBSD server, with the net result that something truly horrible happened (and which I don’t really understand): apache2 and mysql were essentially deleted from my system. Curse you portupgrade. I’m becoming less enamoured with my old time friend FreeBSD, and more enamoured with Ubuntu, so perhaps it is time to abandon FreeBSD on my server. I’ll ponder it more later.

It appears that I have a significant hardware error, one which I am not in the mood to fix at the moment. So, I’ve taken this as an opportunity to move my weblog off my home webserver and onto a remote webhost. I bet that I have made the wrong choice when it comes to webhosting, but it’s cheap at least.

Expect images and some of my sidebar stuff to be broken. I also expect that the feedburner is down, but I will try to get that remedied shortly.

Sigh.

Addendum: Feedburner is still eluding me.  It’s balking at my feed, when it never did before.  Sigh.

Playing with the ICFP contest…

Well, I didn’t have time to actually do the challenge this year, but I’m trying to work through it here. I made some significant progress, and can now render pictures of Endo’s RNA:

There is some minor issue which causes a small y offset between this image and the target. I can’t for the life of me figure out what is the problem (it looks like the originals are generated properly, but that the offset occurs during compositing, not sure how that can happen, since the images are statically allocated). I’ll work on it some more. Ahh! The problem is that my RNA wasn’t correct (it had two copies of almost the entire file, with some small residual offset between the two). I’ll have to work on my DNA to RNA compiler more now. I cheated somewhat in that I ran someone else’s compiler to generate this RNA, but it obviously wasn’t without bugs. I should have checked it against the hint in the manual which gave the precise number of RNA commands that we are supposed to have, it would have uncovered the error much sooner.

[tags]ICFP Contest[/tags]

Addendum: If you don’t know what I’m talking about, you can find out more here.
Addendum2: I can’t figure out how to use C++ ropes, which frankly seem to be a non-standard and depracated par t of the STL. That’s okay, I hate the STL anyway. Yeah. Who needs it?
Addendum3: I begin to see the light!

Addendum4: I’ve made considerable progress, but with much more to go. While I find this year’s contest to be pretty interesting, I am left with the overall impression that it is more of a puzzle than an actual programming contest. Last year’s contest presented us with an initial programming problem, but then a relatively straight path to a number of different problems that weren’t hard to find, but which were hard to solve, requiring that people write theorem provers and search programs that were well specified. This years contest so far is an initial harder (much harder) programming puzzle, followed by spelunking. The “programs” that I’ve had to write thusfar are really just the dna->rna converter and the rna renderer, and a handful of python scripts to massage and extract stuff from dna. I suspect that eventually I’ll need to write some kind of disassembler/assembler, but my guess is that I’m still hours away from that. Moreover, doing probably won’t be hard, except that we have to discern so much information about the underlying machine that is hidden.

Still, an interesting problem, which I will no doubt continue to spend some time on.

Happy Birthday Brainwagon!

Today, five years ago, I posted my first message to the newly christened brainwagon.org. Now, a couple of thousand posts and a thousand comments later, I’m still here, boring people with the rather odd and eclectic collection of posts. I hope some of you continue to enjoy it.

Oakland Athletics…

have just dropped their 8th game in a row, in truly ugly style. They now are 12 games back of the Angels, and 10 back from the Mariners. Earlier this afternoon, they sent veteran catcher Jason Kendall to the Cubs. It seems to me that Beane is having a sale, and everyone is up for grabs. If it was just one team to beat, I’d be more optimistic, but with two…

We’ll miss you Jason. Fantasy baseball wise, the A’s probably will find some way to replace you, but you have had a tough year batting-wise. I loved watching you swat singles into the gap. I like the intelligent way you call the game, and the strong throws and the gutsy way you’d block the plate (with your face, if need be). And mostly, I’ve got a lot of respect for anyone who crouches behind the plate, day after day, and catches.

Best wishes!

[tags]Oakland A’s, Jason Kendall[/tags]

False Copyright Claims

One of my personal pet peeves are companies that try to assert intellectual property rights over material which has entered the public domain. It’s everywhere: museums claiming copyright over photographs and scans of artwork, movie companies that tag public domain movies with copyright warnings, and even in copy centers which refuse to copy books which have entered the public domain.

Slashdot today had an article about False Copyright Claims, calling these actions “copyfraud”, and presenting a legal analysis of the practice and how it might be remedied. While I believe that copyright terms are too long, the ability to stifle use of public domain resources through this kind of intimidation is perhaps of equal or greater seriousness.

[tags]Public Domain, Copyright, Intellectual Property[/tags]

I hate Integrated Development Environments

Why do people think these things are a good idea? I don’t get it.

Yesterday, I received an Arduino microcontroller board in the mail. These things use the Atmel AVR microcontroller (specifically, an ATMEGA168) and include a nice little FTDI USB to serial chip and are pre-programmed with a boot loader for easy programming. Neat!

So, I set out to make a program which blinks the led. I had avr-gcc and avr-libc installed on my machine, so I figured it would be pretty easy. After all, it was when I was doing my previous programming of these things using my old development board.

So, I go to their tutorial page. They recommend that I install their java environment. Sigh.

That wouldn’t be that big of a deal but I’m running Ubuntu. Not only Ubuntu, but Ubuntu running on an AMD64. I end up surmising that I have to run the IA32 bit version (which I install), and then run their gadget which starts the environment.

It asks me where I want to put my files. I specify my home directory. Then…. nothing.

No errors. Java seems to be working hard, but to no visible sign of anything good being done.

So, I modify the startup script to “strace” the java process. It spends minutes stating directories that aren’t there. Minutes and minutes. Minutes and minutes. I have a home directory that is full of junk, so I’m not completely surprised, but I’m guessing it is in some loop caused perhaps by an errant symbolic link. I tell it to use an empty subdirectory of my home instead.

Bingo.

Elapsed time: about ninety minutes.

Now, I’ve got an environment. I’ve got the pleasure of using an editor that I don’t like. Of having a build process that is completely inscrutable. Hidden config files. If I simply want to download code into my chip, I dont know how. Bleh.

All that IDEs do is make it possible to sweep ugly things under the rug, rather than fix them. If you want to compile helloworld.c on a typical unix box, you just type “cc helloworld.c”. That’s it. The simplest case is simple.

I want makefiles. I want to edit with vi. That’s it. I can do the rest of it myself. Why do people think they need to setup the workflow for other people?

Thus concludes the rant for the day.

[tags]Arduino,Rant and Rave[/tags]

Odd plays…

Okay, I haven’t posted anything about baseball lately, so I thought I’d remark about the oddest play I’ve heard of this week. No, it wasn’t Ichiro Suzuki’s inside-the-park homerun during the All Star game (although that was bitching), but rather occurred during tonight’s game between the Athletics and Twins.

Cuddyer triples off A’s middle reliever Kennedy with one out the bottom of the seventh. Kennedy then beans Morneau, giving batters at the corners with only one out. Calero comes in for relief in the bottom of the seventh. He tosses one pitch, gives up a hit, allows a run to score, and gets two outs.

How? Torii Hunter singles to left, Cuddyer scores, and then Stewart to Crosby catches Morneau out at third, and to Ellis gets Hunter out at second.

Nice.

Calero only threw the one pitch in the losing effort.

[tags]Oakland Athletics, Baseball[/tags]

Addendum: On this date in 2005, one of my favorite Athletics, Miguel Tejada, won the All Star MVP. Okay, technically, he was an Oriole, but we know he’s still green underneath. We miss ya, Miggy.