In April I got my tax refund back and found that I had enough money to buy a new car. I had been planning to do this for a while, since my current car was getting a little old (OK, maybe more than a little). If you aren't familiar with it, my old car was a 1984 Buick Century:
It was a good car, but it had recently started to show its age. The brakes were getting sticky, the engine would often putter out when going in reverse, and I was a bit worried about the safety (no airbags, untested seat belts, very old body designed before strict side-impact test requirements, etc..). Ultimately I was worried that if I had any problems with it, I might have to pay far more than the car was actually worth in order to repair it. So it was time to get a new car.
If I had infinite money, I might have liked to get a new BMW M6, but that was a little bit out of my price range. I narrowed my search down to these criteria:
- Good gas mileage (for a non-hybrid)
- Not too expensive
Ultimately I decided on the new 2006 Volkswagen GTI. The GTI is basically a high-performance version of the VW Golf (like the GLI is a high-perf Jetta). The newest model has a new 2.0L turbocharged engine, and the "Direct-Shift Gearbox" (DSG), which is a dual-clutch automatic transmission that can be used in manual mode with the shifters on the steering wheel.
You might recognize the new GTI from the "fast" commericals on TV, in which an evil little rabbit coaxes drivers to drive with the windows down, kick their girlfriends out of the car, and disobey police officers (the symbolism of the little rabbit is that the GTI is the 'evil' version of the VW Rabbit (aka Golf)). Here are Google Video links so you can view them in all their glory:
There are also some other ads with Peter Stormare (of Fargo & Seinfeld fame) as a German engineer ("in da house") who smashes up riced-out economy cars and replaces them with GTIs. I didn't like those ads as much.
So far the GTI has been pretty awesome. Here's a picture (with a reflection of me thrown in for free):
And some more:
Last weekend I became distressed that the 500 MHz processor in my cell phone (i-mate Jasjar) was going to waste for most of the day, so I decided to do something about it. I searched around a bit and came across PocketSNES, a Super Nintendo emulator for Pocket PCs (in a strange twist of fate, PocketSNES is maintained by somebody who works for the same company I do). When I was a kid, I was (still am?) a huge SNES fan, so this sounded perfect.
Unfortunately PocketSNES was built for PocketPC 2003 (not 2005), and was hard-coded everywhere for portrait-mode 240x320 screens. After fixing a lot of bugs and recompiling with the latest SDK, I was able to get it to work in 480x640 mode:
Now it was more or less usable, but it was very slow. I debugged it and discovered that Windows Mobile 5.0 was using an emulated framebuffer for GAPI games, which was slowing everything down considerably. After poking various memory addresses (and crashing the phone several times - so much for Windows CE memory protection..), I found that the video memory for the Intel PXA embedded video begins at virtual address 0xA87AA000, and is laid out linearly (480x640x16). Replacing the GAPI code with direct video memory access and turning on compiler optimization made PocketSNES run quite fast (even the sound worked pretty well).
Now the only problem was that it was a huge pain to play using the little on-screen keypad. Using the phone's keyboard didn't work too well either since it had a hard time accepting multiple simultaneous button presses. After some more searching, I came across the Chainpus BGP100 Bluetooth gamepad (yeah, they need a new name for it):
It looks hideous because it's designed to fit around a cell phone (my phone was too big). It was surprisingly easy to set up and associate it with the phone using Bluetooth. The software for it, on the other hand, was very poorly implemented and translated. It had also not been recompiled for Windows Mobile 5.0 either. As a result, there was almost a 1-second delay between a button press on the gamepad and when it was recognized by the game (this was mainly because PocketSNES was using 100% of the CPU). Unfortunately the source code was not available, so I had to re-implement its functionality by hand in order to fix that problem. The gamepad implements the Bluetooth Serial Port Profile (SPP), and it sends sequences of 3 bytes for each button press & release event, so it was actually extremely easy to work with. I just had to create a virtual COM port using the Bluetooth control panel, open the 'file' COM3 and read bytes from it when it was input time.
When that was all done, I was able to play at a comfortable distance from the phone:
This should be very useful for boring meetings at work
Here's a video:
Hello, and welcome to this blog. Introductory posts are always a bit awkward, so as an attempt to take the easy way out I decided to structure this one as a FAQ.
Who are you?
I’m a computer programmer living in the Seattle area.
Why did you create this blog?
For a couple of reasons:
1. I was dissatisfied with the current Google results if you search for my name.
2. I figured I would be able to post some stuff that people might find interesting.
As for reason #1, here’s a link so you can track my progress: Google results for ‘Eric Faller’. As of the date this was written (May 2006), the results include a mishmash of random things:
- The horribly out-of-date homepage for a club I used to run while in college.
- An old friend’s web site for a computer game we used to work on.
- The web site of a French dude with the same name as mine (rapidly gaining on the #1 spot).
Fortunately none of the results contain anything too embarrassing, so I’m currently more or less OK. But, I’m fully aware that the first thing that modern people do when meeting (or dating) somebody new is Google them. So, obviously it can’t hurt to have some sort of positive influence over the results. Plus, I have found that reading the archived posts of somebody’s blog is a good way to quickly learn a lot about the person and avoid potentially dangerous conversation topics (“ooh, well when I made that comment about people from the East Coast, I meant everybody except people from New York, you see...”).
As for reason #2, it will be up to you to decide if my posts are actually interesting. I’ve read a good number of blogs so I hope I know what to do. I’ll try to avoid posting boring stuff (“Today I ate cheerios for breakfast, went to work, came home and went to bed”), cryptic stuff (“Here’s a picture of the back of Joe’s head,” (no explanation of who Joe is)), pompous stuff (“Obviously the opening brace goes on its own line – anybody who thinks otherwise is an idiot”), and lazy stuff (“Does anybody know what the website for the IRS is? Post a comment if you know”). My goal is to post more-or-less regularly on a variety of topics, while keeping the content interesting (so far I have learned that pictures = good, and spell checking = good). We’ll see how it goes. If you see a post that sucks, write a comment that says “This post sucks” and I’ll get on it (obviously, more constructive feedback helps as well).
So basically this is all about you and your ego, isn’t it?
Yep, pretty much. Isn’t that the whole idea behind blogging?
It looks like this blog is running on WordPress?
I looked at a variety of blog hosts/software packages and ultimately chose this one for a couple of reasons:
- It’s free, and there are no ads (always good).
- The provider can easily be switched - don’t have to worry about it getting bought out by some megacorp.
- It’s totally customizable: I can set the style to whatever I want, get rid of any annoying “Powered by Blah Inc” thingies, and if I wanted to it’s easy to write a little PHP widget for the sidebar that shows the weather in Turkey (for example).
You know, Real Programmers write their own blog software by hand. In frickin’ assembly.
Yeah, I know. I started out by mocking up something in ASP.NET, but as I was attempting to write an RSS library by hand, I thought to myself, “NIH syndrome!” and gave up. It probably would have taken a few weeks or months (of my spare time) to implement half the features that every other software package already has, and I realized that all that time could be better spent doing something fun. So that’s the story: basically, I’m lazy.
What's that picture at the top?
That's a picture of my desk. I couldn't think of anything better. Plus, it's a pretty hot-looking desk.
I had some other questions too, but I forgot what they were since you talk so much.
Sorry about that. If you have any questions or suggestions for posts, feel free to leave comments!