Website work

I’ve been pretty quiet on the blog lately, partly because I went on a long vacation and partly because I’ve been too busy with real work to do anything much on at-home projects (at least, at-home code projects). Another reason is that I’ve been working on a couple websites that hadn’t launched until recently. The first project was a website for Butterfly Haptics, which is my parents’ new company. They’re producing a really cool magnetic levitation haptic interface - a sort of super-high-tech 3D mouse that lets you feel virtual objects as if they were solid. I’m really excited about what they’re building, and I’ll be at SIGGRAPH this year manning their booth in the New Tech Demos area.

Butterfly Haptics Screenshot

The other site, which just launched, is my wife’s new art site. She makes wood-fired ceramic sculptures of bizarre, cute creatures, and the new site was hand-drawn by her to reflect their style. It’s implemented as a Wordpress theme, which gives her a much easier way to manage the content of the site, and it also means that she can now blog about her process and other art topics. Check out some of the cool time-lapse videos of her sculpting the critters.

evafunderburgh.com Screenshot

Anyway, that’s what I’ve been up to. Hopefully soon I’ll be able to get back to building more cool things and talking about them, as well as clearing out my backlog of draft blog posts.

XBList 3.2.0 works with the new Xbox.com

I read today that Xbox.com had gotten a redesign. I had hoped it wouldn’t impact the friends list page, which XBList uses to get its friend info, but unfortunately it had. The friends list is now split into 16-friend chunks. That meant I had some work ahead of me to make sure XBList could work with the new format. I’m pleased to announce that after only a few hours of work, XBList 3.2.0 has been released, which works just fine with the new site. I’m glad that all the refactoring work I had put into the software in the past allowed me to make a change like that without breaking anything. There is now the possibility of some slight weirdness if a friend changes status in the split-second between XBList loading one page and another, but I don’t think much can be done about that.

Of course, I couldn’t just make the fix and call it a new release. I’ve neglected XBList in the last year as I’ve been deep into work and other projects, but I’ve been accumulating little fixes, and as long as I had the code open today I added a much-asked-for feature: Halo 3 integration. OK, it’s not the best integration, but there are now menu items that link straight to your friends’ Halo 3 Service Record page, and better yet, Halo 3 emblems are now loaded in preference to the old Halo 2 emblems. If your friend has both, they’ll just get the Halo 3 emblem. I was amazed at how many people on my friends list (who hadn’t had Halo 2 emblems) popped up with Halo 3 insignia once I finished the feature. I hope this is enough to tide people over for a while.

I also improved the detection of Xbox.com outages. They seem to be better now, but around December the site was down all the time, and now XBList will be pretty clear about when it’s Xbox.com’s fault that you can’t log in. Hopefully that’ll reduce some confusion.

Please pick up XBList 3.2.0 and let me know what you think! The full changelog may be of some interest also.

Setting up IIS7 (with bonus PHP instructions!)

Every time I try to set up IIS7 on a Windows Vista machine I run into the same series of problems. You’d think I’d have learned by now, but I usually just struggle through the cryptic error messages and get it working one way or another, then forget about it until the next time I need IIS7 on a machine that doesn’t have it. Finally I’d had enough and so I decided to write myself a little guide here so I won’t waste as much time next time. These instructions are basically the same as these, but with additional detail and screenshots.

Read the rest of this entry »

Better concert experience with ear protection

One of the advantages of living in Seattle is that I get to see great live concerts from my favorite bands. The last week has been a good one for concerts. Last Saturday I got to see The Presidents of the United States of America, who were fantastic, and on Wednesday I saw The Decemberists, who are one of my top 10 favorite bands.

The Presidents of the United States of America playing in the Sky Church

I went to a lot of shows in college, too, and I was even in my own band, which was at the very least loud. After a couple particularly noisy concerts left me feeling uncomfortable about the idea of hearing damage, I (and the rest of my band) picked up some earplugs.

Foam Earplugs

You may have used earplugs like these, foam pellets that block out all noise. These are great for sleeping through construction or operating loud machinery. But using them at a rock concert completely misses the point. Instead, we went to Guitar Center and picked up some earplugs that are designed for musicians.

Hearos Rock n’ Roll Ear Filters

I bring my pair with me to every concert I go to. They don’t just block out sound, they actually make concerts sound better. First, they reduce the volume to a comfortable level, not quiet but not painful either. More importantly, they filter out a lot of the “shimmery” noise you get in a big crowd - the random static of the crowd yelling, the echoes of the room, and the highest part of distorted guitars. Once you’ve gotten those out of the way, lyrics become understandable, individual instruments pop out of the noise, and bass becomes richer, without as much rattle. It’s really a better way to listen to concerts. And of course you’re protecting your ears from permanent damage. They are definitely a win all around.

Firefox bug rendering list items next to floated elements

I was working on a web app a couple weeks ago when I hit a weird problem. I had a sidebar floated right, and an unordered list right next to it. What was weird is that each list item was getting “pushed aside” by the floated sidebar. This went against what I thought I knew about how floats work in CSS. My understanding was that floats should be removed from the page layout, and appear above any other block level elements, like my list items. Reading CSS Float Theory: Things You Should Know and the W3C spec on floats only backed up what I thought. Floats should always appear above block boxes, like LIs. I wrote up a minimal test case and tried it out. What I expected was something like this, where the green boxes are LIs, the red box is my floated DIV, and the purple box is a normal block element like a P:

CSS compliant float rendering

Instead, what I saw in Firefox 2 was:

Firefox bug 163110

It actually took me a very long time to get to this point because I hadn’t even bothered to try it out in non-Firefox browsers, since I assumed Firefox was right and I was missing some arcana in the spec. I had tried it out in Internet Explorer 6, but I had taken that as even more evidence that Firefox was right (if it differs between IE6 and Firefox, it’s usually IE6 doing it wrong). However, when I finally popped my test case into Safari 3 and Opera 9 and they agreed with IE, I realized that it was really a Firefox bug. Not too much searching later I came across this css-discuss post which pointed out the bug and offered two solutions. Either I could force my LIs to take up the whole space by setting “width: 100%” on them, or I could use the proprietary Mozilla CSS property “-moz-float-edge: content-box“. Either one made the list items act like I expected them to, though you give up some flexibility with the first method, and the second won’t validate.

This bug has been filed as Bug 163110 since August 2002, and many duplicate bugs or similar-but-not-quite-duplicate bugs have been filed since. Unfortunately, it doesn’t look like anyone is working on fixing it, and I don’t expect to see this problem go away in Firefox 3, which should be shipping relatively soon. I’m just going to have to add it to the list of bugs and workarounds I need to keep in mind whenever I’m navigating the minefield of modern web design.

Update (5/29/08): This has been fixed as of Firefox 3 RC1. Yay!