Working on My New Place - Week 2

Second week working on my new place. My dad has been helping me quite a bit, so things are coming along pretty well. Last week we removed all the popcorn from the ceiling, demolished part of one wall, and widened the entrance to the closet in the bedroom.

This week we spent fixing all the stuff we destroyed last week. This primarily consisted of putting up drywall, corners and "spackling" everything. Drywall work basically sucks, demolishing is way more fun. I'm just glad I don't have to do this shit every day.

We also cut a few holes in one of the closets for plumbing for my new washer/dryer. These condos do not typically have these, but I think adding one at the cost of some storage space would be really nice.

Working with my dad can be an interesting experience. Here is just a short list of things he said this week:

  1. "Try cutting it straight, that might work better."
  2. "Dammit! Oh, no, that's OK."
  3. "C'mon, put some oomph behind it, you girl."
  4. "Don't mess up the carpet! The guy who owns this place is a real ass about his carpet!"
  5. "Man you wouldn't believe... well, maybe you would 'cause you're gullible."
  6. "Not very straight, is it?"
  7. "Crap, Steve, I put a hole in your wall! Come fix this."
  8. *Sound of the saws-all rumbling, then suddenly stops* "Hey Steve, I found a wire!"
  9. "Not bad. Not as good as mine, but not bad."
  10. "Glad this isn't my place."

Working on My New Condo!

I just purchased a one-bedroom condo in Bellevue, WA. Great location (near Microsoft), it's in great shape and was an excellent price :) But... there are a few things I'd like to change. So here I am working on my new place - first day after closing escrow.

Figure 1: Me and my chainsaw

Tearing down a wall is a very delicate operation. It requires a lot of forethought, skill, an engineering degree and a bit of patience. But since I don't possess any of those things I settled for a scary mask and a big fucking chainsaw.

This may also help explain why I don't have a girlfriend...

Calculate Moon Phase Data with PHP III

Yet another awesome update to the PHP-based moon phase script, which was a translation of the Perl Astro::MoonPhase module. This module is designed to calculate the phase of the moon for a particular date or set of dates, and is very accurate - and also pretty awesome, did I mention that?

Christopher Hopper was kind enough to work the code into a PHP class, with doxygen-style comments and everything! The class as well as an example script is included in the archive linked below. A big thanks to Christopher for doing all this work. Enjoy!

PHP Class and Example Script -->

Personal Kiosk Project, Part I

One of the things I've been wanting to build is a personal touch screen kiosk-like thing where I can quickly access information (weather, movie times, etc) as well as listen to music, make a phone call, view photos and various other things. I recently had the opportunity to play with a Eee Box PC at work, so I thought this was a great platform on which to build this kit. The Eee Box features a 1.6GHz processor, an 80G hard disk and 1GB of RAM (although I ended up upgrading to 2GB).

After purchasing the Eee Box, the next thing I needed was a decent touch screen. These can be rather expensive. I hunted around for a while, but in the end I just got lucky. I found a 3M M150 15" touchscreen on Ebay for a real bargain. This has a really nice capacitive touch screen, embedded speakers/microphone and supports both Linux and Windows. Many monitors have mounting screws on the back for mounting on walls, or for attaching thing clients. The Eee Box also comes with a mount specifically for this purpose, what a great combo!

M150 Touchscreen with Windows

I first started testing the touch screen and implementing things using Windows. Because I work for Microsoft I actually had access to try Windows7. Amazingly, it worked pretty well, and the touch screen drivers - designed for Vista of course - worked perfectly. I ultimately ended up using Ubuntu because I had other things I wanted to toy with, but there was no technical advantage here. One hint: use the 32-bit version of Windows and the driver. Since this was a Eee Box with 2GB RAM this was a no brainer, but I can say that the 64-bit driver doesn't work nearly as well.

This was an interesting project for me. I've always been a fan of Linux, but I encountered some very interesting challenges/annoyances with this project that I hadn't foreseen. After prototyping this project in Windows and Linux, I found that it would have been far easier to use Windows, even the pre-beta Windows7 I had would have worked just fine. Ubuntu is great, but I just ran into a bunch of little annoying issues (which I'll outline later).

M150 Touchscreen with Ubuntu

One major problem I ran into with Ubuntu were the touch screen drivers. The originl driver for this screen was distributed as a kernel module (with source code), and a closed source XF86 driver. The kernel module didn't compile properly under recent kernels, so I had to do a little hacking to get the module compiled. Sadly, even when I got the module compiled, the XF86 module wouldn't load properly with the Xorg version distributed with Ubuntu 8.04 or 8.10.

So, I emailed 3M and asked for help. Amazingly, they responded by providing me an unreleased driver. This new driver removes the need for a kernel module, and has an updated driver that is supposed to work with Xorg. Unfortunately, the driver does not work properly with the version of Xorg distributed with Ubuntu 8.10, but does work with Ubuntu 8.04 (Xorg version This updated driver is now available on 3M's website.

So, that's great. Now I have a working, and fairly recent version of Ubuntu with a killer touch screen! Woot! But wait, this was quite an effort. Why is it that I was able to get the touchscreen working immediately with an older driver and a pre-beta version of Windows (Windows7), but had a difficult time with Ubuntu - and it still doesn't work with 8.10? I suppose one could blame 3M for this, but I don't think they deserve all the credit. We all know kernel developers (and apparently Xorg developers) don't have much sympathy for closed drivers, and so break interfaces and change things quite often. I can't argue if this is right or wrong, all I can say is that it's fricken annoying sometimes.

The Interface

After getting the touch screen working, most everything else was pretty easy. I got the Intel driver working with Ubuntu 8.04 and Compiz-Fusion. Interestingly, this was a bit of a task in 8.04, but worked out of the box in 8.10. There's a big bug report about this, but the long/short of it is that one needs to explicitly disable LVDS in the xorg.conf file.

Wireless was also a hassle, but again it worked fine after installing a new driver (pretty easy, plenty of posts and reports about this issue as well). I then installed the Avant Window Navigator, which is a launcher/task bar replacement. This provided a nice-looking launcher for all the applications to which I wanted access.

After configuring Avant, I then installed these nifty things called Screenlets. This provides an architecture for folks to write little applications that sit on the desktop, similar to Vista Gadgets or OSX Dashboard. Very handy for things like weather and stock reports.


Ultimately I'm pretty happy with the outcome. Besides the aforemented driver issues with the touch screen, Intel video and wifi, there are a couple Linux-specific things I still need to solve.

The first is the most idiotic. Of course, I don't want to leave this thing turned on all the time, so I would like it to got to sleep after some time. GNOME, unfortunately, will sleep even when playing internet radio (or Pandora or similar) via Firefox. There are plenty of bug reports as well about this involving VLC and other media players. Apparently the fix is to have the application inform GNOME that it should not sleep. Wait, what? So, every application that could possible play music/video needs to inform the GNOME that it's doing so? Shouldn't GNOME just detect this? Seems backward to me. Yet another thing I wouldn't have ever had to deal with in Windows.

One solution might be to periodically test to see if the sound is working and send a message to gnome-power-manager to not sleep. One can check the sound card via a shell script like the following:

    if cat /proc/asound/card0/pcm*/sub0/status | grep -qs RUNNING ; then
echo "Sound is running!"

I haven't tested this yet, however, but if I do I'll post a followup on this. Unfortunately, sleeping is mostly a moot point since after waking up the sound no longer works at all... great.

One other annoying thing is that in order to make a phone call through Ekiga, I cannot just pause the internet radio or Pandora or whatever. I actually need to close the browse. Annoying, but not a huge deal.

Anyway, this is an awesome project. A little pricey, but a really handy tool to have around. I've already coded up a script so that this little box reads the news to me in the morning, and audibly tells me the weather and other information. The possibilities are limitless!

Calculate Moon Phase Data with PHP II

A little while ago I posted the code to a PHP-based moon phase calculation program, which was a translation of the Perl Astro::MoonPhase module. This application can calculate the phase of the moon for a particular date or set of dates, and is much more accurate than other PHP-based moon phase calculation programs I've seen.

Thanks to Alexander Cicovic, I noticed a silly error in the phasehunt() function that caused it to loop infinitely :-/ While I was digging into the code, I decided to also add the phaselist() function that was added to the latest Astro::MoonPhase module, version 0.60.

The script can be easily include()'ed into your PHP apps. Also for bonus points I updated the moonphase.php sample script to include an example all three functions (phase, phaselist and phasehunt). So, here they are below: -- Moonphase Functions
moonphase.php -- Sample Code


Update: This script is now available as a PHP class.

Model Rocketry Awesomeness

The Build

I've recently re-discovered an old hobby of mine; model rocketry! On a whim, a buddy of mine (John Kew) purchased a couple model rockets from a local hobby store. I purchased a rocket called the Big Daddy, which is a rather large rocket that accepts D and E sized engines. John went with a multi-stage rocket that, although was probably more technically advanced, was not nearly as totally sweet and awesome as the one I chose.

Anyway, the build was rather trivial. A little hot-glue and an hour or so and it was all together. Here's what the finished product looked like:

Instead of just purchasing a typical launch controller and launch pad, John and I decided to have a build-off. I built a totally cool looking detonater... uh, I mean, model rocket igniter thingy. It's a pretty simple device. Just a single circuit with a cutoff switch, and some wires to connect to the igniter on the rocket engine.

John built a pretty awesome launcher as well. Instead of a spiffy custom case he used a lamp cord, a wall socket, a light switch and a Staples Easy Button. I'll try to get some pictures of that formidable contraption posted a bit later.

The Launch

Unfortunately, I don't have any photos of the launches. John's wife Sarah took a few, I'll try to get those posted later on.

The only place in King County at all that allows model rocketry is called 60 Acre Park in Redmond, WA. I had purchased a number of various D and E sized engines to try out. In short, all the launches went more or less without incident, except that there was a bit of a wind and the Big Daddy suffered from serious windcocking (where the rocket hooks into the wind). We adjusted the launch rod as best we could, but that did not really help much. Luckily, the parachute deployed properly each time and was able to drift the rocket back into the park ;)

I think over the next year I'll dig deeper into this rocketry thing. Perhaps I'll build a 10,000+ foot rocket, or send some helpless GI-JOEs into orbit...

Happy Halloween!

The drill press makes pumpkin carving a bit easier.

The page is just a place I can link to that includes a few tidbits about myself. I'll probably update this page occasionally.

Work Stuff
Taking it home with me

Online Profiles
Invading my own privacy

Personal Projects
Stuff that matters

ParaDB -- Paranormal Reporting Database

Space Weather Archive

Sentry Firewall


Other Contributions

My Google Health Profile

Last week someone sent me word about a new service from Google called Google Health. I'm sure a lot of folks are rightfully a bit dubious about this service, but luckily their privacy policy is pretty clear about how they share your data (it appears they won't, basically). So hopefully they'll follow that policy and folks will find it to be a valuable service.

One has to wonder, of course, what is their angle? Google is first and foremost an advertising company. Search and data analytics is just a means to this end. So are they planning on flashing ads about Paxil to folks who suffer from depression? Probably.

In any case, check it out and see what interesting things you can do with your medical history. The Internet is a great place to reinvent yourself - for example, according to Google, I'm now officially a 30-year old dwarf with a severe allergy to cabbage juice.

SambaXP 2008

This last April I had the opportunity to attend SambaXP in Göttingen Germany. This was my first time in Germany, and I have to say I like the place a lot. Unfortunately, I didn't have a whole lot of time to explore. I spent most of the time in Göttingen where the conference was. But that, too, was a nice place to visit. I just wish I spoke any German at all.

I flew into Copenhagen, Denmark (btw, business class RULES), and then hopped over to Hamburg. From there it was about a two-hour train ride down to Göttingen. Pretty easy overall, even for a sleep deprived traveler like me.

SambaXP was just great. Microsoft was there in force, with engineers and architects to meet and exchange information with the Samba team. I felt I was watching a bit of history as Andrew Tridgell of the Samba team asked the Microsoft employees in the audience to stand up, and be recognized. That was nice. Microsoft has gone beyond what any regulatory agency has asked. The Samba Team (and the world) now has open access to 30,000+ pages of documentation and new friends in Microsoft with which to collaborate.

Anyway, enough preaching. Here are a couple photographs I took at Germany. I actually didn't take all that many, unfortunately.

Train station in Hamburg, Germany

Germany at ~120MPH

I've Arrived!