My AppleTV has served me well over the past two years. I hacked it to enable support for other formats (AVI, etc) and to browse files stored on my file server (as opposed to just ones I bought in iTunes); ATVFiles is useful to that end. But its support for MKV and OGM files (frequently used for anime and now Bluray files) was massively lacking and it just doesn't have the processing power to decode 720p or 1080p video (unless it was purchased from iTunes), a major limitation with the advent of Bluray titles.
A month or so ago XBox Media Center was made to work on an AppleTV and I started playing around with that. I was always turned off by its default skin but the new one, Media Stream, is very slick and even rivals the AppleTV's wonderful interface. Above and beyond ATVFiles XBMC supports the concept of a media library; complete with meta-data about all shows and movies in your library. Add all that to the wonderful timing of a fresh version coming out in November and I felt the desire, no the need, to upgrade.
The hardware for the project was easy to pick out aside from the motherboard since I want to go for an integrated graphics chip if I could find one with the power I needed. I also knew I wanted the computer to have a small footprint so I went with a MicroATX setup this time around: a nice Intel Core 2 Duo at the heart of it, a Intel motherboard with HDMI port and a sweet integrated graphics chipset with on-board decoding of popular Bluray codecs, reasonably attractive case, 1 Gig of RAM, Seagate HDD (SSDs just aren't cheap enough yet), and a Media Center Edition remote. Already reasonably cheap, having a birthday around the time I wanted to build it helped bring the cost down even more. Parts in hand assembly was easy although tight being a MicroATX case and all. Although not perfectly silent like my last media PC (a price I knew I'd pay for using a MicroATX case — those tiny fans bite you in the ass) one can only hear it when everything else in the room is off so I'm happy with the results.
Originally I was going to put Windows XP on it but I ran into an odd bug where XBMC would play back standard files somewhere around one frame every five seconds. Using VLC I had no issues. The XBMC forums confirmed this is a bug but they don't know what exactly is causing it (in November when I tried XBMC on the gaming box XP I had no issues). Remembering how much of a pain Linux can be to get audio-out over optical working, especially with newer chipsets, I figured I'd see if Vista would work out. I knew going into this Vista was going to be a world of hurt but my options were limited.
Loading Vista and getting XBMC working went without much trouble, but I had to spend a lot of time A) working through Vista making me want to reformat the PC and battle Linux to get audio working and B) screwing with the remote to get it to work right. Two pieces of software helped with this: IR Server Suite and Event Ghost. IR Server Suite works to translate the IR codes sent by the remote to system events and Event Ghost listens in the background for when an event happens (button pressed, system comes back from sleep, etc) and runs commands.
With regards to A Vista seems to not deal with mapped network drives the way I'd expect it to. Whenever I boot up or resume from sleep it would complain it couldn't reconnect the drive, but as soon as I double-clicked the drive letter it'd open up and be fine. I had to do this specifically through Explorer. Odd. So I had to set Event Ghost to launch (and the promptly close) an Explorer window for that drive whenever the system boots or comes back from sleep.
With regards to B IR Server Suite went a long way to getting everything working perfectly. Just set up the mappings in XBMC's keymapping.xml file and it all worked. Except for when you resume from sleep. Every couple resumes the remote would stop working (except for the arrows, those worked). Turned out Input Service was crashing (even though I went in and set that service to restart if it crashed) and I had to manually stop and start the service to get it to pick up the remote again. Of course this had to be done before XBMC was launched or else XBMC itself wouldn't see the remote. So I have Event Ghost set to kill XBMC when the system goes to sleep, and then I have Even Ghost set to run a bat script that restarts the Input Service and then launch XBMC.
To make things sync up nicely (since XBMC can't monitor a folder for new files and automatically add them to the library) I set XBMC to automatically scan for new content on launch (and because of those Event Ghost settings that is every time I wake the pc on to use it). I've also mapped a key on my remote to manually trigger an update incase I need to. I debated having a script running on the file server that would notify the media pc whenever a file was added, but that'd only be ideal if I was going to leave the media pc on all the time, as opposed to making it sleep whenever I'm not using it.
Turned out to be a bit more of a project than I expected on the software configuration side, mainly because I had to move to Vista, but we watched the Bluray version of Serenity in last night. It was beautiful and made the project worth it.

I've really grown to love jQuery over the past year or so and jQuery, like any other javascript framework, has plenty of date pickers. The one that comes with the jQuery UI package isn't bad but it is not without shortcomings (in my opinion). I prefer to allow the user to quickly change years and months but I'd like to do that without drop-downs. I hate having to present the user with a dropdown containing all the years from say 1920 to 2008; scrolling through that is annoying. Also, at least as far as I figured out, the calendar won't highlight the currently selected date. So I dug around jQuery's plugins looking for other calendars and stumbled upon this datepicker. It's much closer to what I'm looking for — fast, sharp, no drop-downs, and easy to use.
Being the perfectionist I am even though it was close to what I want I still wasn't happy for two reasons. Firstly the calendar only disappeared once you clicked somewhere else. I was actually pretty surprised by this; many people use the tab key to move between inputs on an HTML page and as-is this calendar stayed up even after you tabbed out of a field, sometimes getting in the way of other fields. Looking around this isn't limited to just this plugin, many of the plugins I found had this problem. Secondly the calendar only updated itself based on the input field it was binded to when it was toggled in and out of display. If you entered the field then typed in a date the calendar would not redraw to show that date — you'd have to exit the field then go back in to see the date selected. One of the reasons I wanted a date picker was to show users their currently entered date (helps when you're trying to remember what the third Friday of April two years ago was) and having to exit the field to see this was a show-stopper.
The second issue was partly correctable with some additional code external to the plugin (binding the keyup event on the field to update the date in the datepicker). However that uncovered a bug: if you type in a date with January as the month it would always display as December. So I've modified the plugin to correct that date-parsing issue and to improve how it reacts to someone tabbing out of the current field, a much-needed improvement in my opinion.
You can grab the improved version of the plugin here:
jQuery Date Picker
Credit for the original code goes to Stefan Petre.
Finally got around to setting up a site for the wedding: http://www.mywedding.com/curtisandkiera/. Still needs lots of information, but it's a start at least, plus the theme is actually really nice (most of the pre-made ones are crap at other sites). Dunno if we'll get a domain name; it might be worth while for ease of telling people (once you add a slash people's eyes glaze over).
Thanksgiving was fun and I think we figured out the critical mass for our apartment. Rousing success with lots of rock band.
Update: http://curtisandkiera.com was available to I snagged it. The site we're using doesn't support domain names so I just have it forwarding to the mywedding site. This way we at least have an easy URL to give people.