I took Friday through Monday off not only because I need to start eating up some of my PTO hours before I lose them, but also in celebration of my 29th year on Earth.

Friday consisted mainly of watching La Femme Nikita, Season 3 on DVD and entering my comics from my collection into ComicsPriceGuide.com. I got everything that’s been bagged, boarded, and boxed into the online database, so now I can submit the list of comics to my homeowner’s insurance company and get a rider on my policy.

Saturday was party-day. Stu and Tif came over early and we went to the local Indian joint and had some excellent food for lunch.

After that, we went and played a couple of games of laser tag. Laser tag was great fun, except there was this one asshole who apparently didn’t understand the difference between playing the game and just scoring points. For those who don’t play laser tag, the idea is that you have a certain number of shots (like your “ammo”) and a certain number of lives. When you run out of shots or you’ve been hit enough times to run out of lives, you have to return to base to get more. If you get hit, your “shields” go up and you can’t shoot or be shot for three seconds, at which time your shields go down. That three seconds is supposed to give you time to run away.

Shooting a person gives you a certain number of points based on the location you hit the person; shooting the opposing team’s base (there’s a target on the base) gets you a certain number of points.

The idea is that you sneak towards the opposing team’s base and try to shoot it; if you get shot, you run away and “regroup” or whatever. This asshole decided he only wanted to play for points, not play the game, so he stood right under our base and just pulled the trigger over and over, regardless of whether we were shooting him or not. Eventually he’d hit our base a few times, and when he ran out of ammo or we shot him enough times, he’d stroll leisurely back to his base, recharge, and come back and do the same thing. Sort of defeats the purpose of the game.

Of course, we all got tired of just standing there shooting this guy, so we played and ran around and had fun. At the end of the game, this guy comes out looking like he’s one of the top players out there because we got tired of screwing with him, but he didn’t play, he just stood there.

Apparently this guy and his son come in all the time and that’s just what he does. That’s his way of playing. Next time I find him, I’m cramming that laser gun up his ass. That’s bullshit.

We finished laser tag and headed back to my house, where we were joined by my friends Jason, Tracy, and Adam. We played some games, watched some shows, and had far, far too much to drink. (We peaked when Stu started making “Randoms” - just pour whatever you can grab into the cup until it’s full.)

Got some pretty cool stuff from folks. In all, I got (not necessarily credited by person):

Hopefully I didn’t miss anything. The point is that I got a lot of cool stuff from a lot of cool people, and thanks very much to those folks - you all rock, and you know who you are.

Sunday was spent recovering from Saturday. We were going to head to the beach, but Stuart’s “Random” caught up with him and we ended up taking it easy on Sunday instead.

Monday I finished the new Harry Potter book, and it was excellent, but I can’t believe she did what she did at the end. I mean, it totally opens the door for this last book to be just about anything, but come on.

And now I’m back at work. I forgot to go get my allergy shot today, so I’m going to have to do that tomorrow and listen to the shot clinic nurse rip me a new one because I’m a day late, so I’m looking forward to that. Plus I see that there’s more to do on the current project that’s due at the end of the week than I anticipated, so I’d best get to it.

Tuesday and Wednesday I felt like I had something in my eye. I couldn’t see anything when I looked in the mirror, and I tried washing my eye out but it still was there. Wednesday I decided to take a trip to the eye doctor.

I had an eyelash growing inwards. Explains why I never saw anything - every time I looked for what was in my eye, I would pull back my lid to get a better view. Feeling much better now, but I’m sure that’s going to cost me.

Watched that So You Think You Can Dance show last night. Eh. Not awesome, but better than American Idol.

Also fixed our upstairs bathtub faucet. When they installed it, they had a brake inside the faucet handle set so the maximum water temperature was limited. Of course, that meant you got the water to lukewarm and that’s about it. I found the specs online and was able to fix that right up. I’m not sure how people did this stuff without the Internet.

Speaking of the Internet, I found a guy who melted down 13 pounds of gummy bears into one big one. Reminds me of my taffy brick.

I also saw that James Doohan (Star Trek’s Scotty) died yesterday at 85. That’s too bad, and I’m sorry to see him go.

Finally it’s my parents’ anniversary today, so happy anniversary to them.

This weekend Stu and I took the entirety of Saturday and a box full of Zaino products and did the full wash-and-wax routine on our respective automobiles.

We started at 9:30a. By 11:00a we had done an initial wash, run the claybar over the cars, and finished a secondary wash.

We had to take a break from 11:00a to around 5:00p because it was too hot outside. The day was supposed to be about 72 and overcast; it turned out to be closer to 80 and sunny. Not so great for waxing (we would have been in full sun).

During that break, we went out and grabbed something to eat at the mall, then came back home and played some Donkey Konga 2. Lots of fun, but we needed to get things going again, and when 5:00p rolled around, it looked like we’d have enough shade to finish the job.

We got three coats of wax on (two Z-5 and one Z-2) and had cleaned the interiors of both cars by the time we called it a night at around 10:00p. The light was gone, and we had accomplished what we wanted to accomplish.

Sunday I had no problems totally sleeping in, took a nap in the afternoon, and went right to sleep Sunday night. The wax job totally wore me out. Thank goodness it’s just maintenance from here on out (until a few years down the road when we decide to start over with the claybar again - last time I did this was a couple of years ago).

aspnet comments edit

Catching up on the morning news and whatnot I came across two different and interesting issues.

The first is a new KB article over at Microsoft: How and Why Session IDs are Reused in ASP.NET. Describes how the session ID is reused across applications on a server but the session instance is local to the application. Also describes what to do if you don’t want to reuse the session ID for your application.

The second issue is something I ran across this weekend. I was using a calculator program and one of the operations I entered (in the series) was 5.35 - 5.45. The answer I got back was -0.100000000000001: just a bit off from what I was expecting. I tried it again, and the same answer came back.

I ended up contacting the author of the program and he uses the Windows Script Host to perform calculations, so I wrote a quick test VBScript:

Dim myvar
myvar = 5.35 - 5.45
WScript.Echo myvar

Turns out the answer is still -0.100000000000001. I did a quick search on this and Eric Lippert explains why it’s happening. Long story short - rounding errors due to the base 2 nature of the computer. I understand the answer, but I’m not sure I like it. Makes me wonder if computers shouldn’t have been base 10 to begin with. Heh.

personal comments edit

I was joking a while ago talking about Nuttba - a hypothetical modified version of Roomba that could automatically drive around and smack you in the happy sack. It did, however, give me an idea.

See, I had an issue with my Roomba where some wheel sensor or another got blocked. Roomba support sent me a whole new one, but the old one was unusable. Time to play with the Roomba remains.

I decided that if it wasn’t going to vacuum any more, it needed to be speedy. Maybe I could take it one step closer to Nuttba? “Raceba” maybe

  • race it around the place?

The endgame: make Roomba a remote controlled beast.

I know Roomba already has a remote control, but Roomba’s not meant for speed. There are three possible schools of thought here: Hardware Engineer: Buy some parts to replace/rewire the engines, remove the unnecessary extras, and bolt the whole thing back together better than before. Software Engineer: Buy something that can replace the whole inner workings off-the-shelf with minimal effort because I don’t do that ‘hardware thing.’ Everyone Else: What’s the point?

I’m a software engineer, so my solution is not nearly as elegant as it could be if I knew more hardware stuff, but it only cost me $14 and took a couple of hours, tops.

[Warning - this is a 100% destructive process. Your Roomba will NEVER vacuum again. This unit was dead, so it was fine. But if you do this, it’s at your own risk and cost. Just be warned.]

Here it is: How to make Roomba more fun - pictures and step-by-step description of the process. Enjoy. Okay, so here’s the standard Roomba that we know and love.

Roomba - the
beginning

Flip him over. There are a bunch of screw holes that hold the bumper and body on. Look around and find them. Note there are a couple down by the black vacuum motor unit in the center of Roomba - theyr’re a little hard to get to, but you should see them.

Inspecting the underside of
Roomba

Detach the bumper first to make it easier - the bumper partially holds the main body top on. You’ll need a skinny screwdriver to get into the screws in the bumper, like I have here.

Removing the
bumper

The bumper is connected to the main body with some wires. Not that we need to be all that careful (we’re going to gut Roomba anyway), but disconnecting the wires makes for easier bumper removal.

Disconnect the bumper
wires

Now you should be able to remove the top (assuming you’ve removed the rest of the screws holding it on. The top is also connected with a bunch of wires. Just go ahead and cut those.

Wires connect the top to the
body

In the back where the dust bin plugs in, the little connectors that hold the dust bin in place also hold down some wires. You can pull them up to release the wires.

Pulling out the dust bin
holders

The main board in Roomba has a bunch of wires connected to it, too. Disconnect as many as you can. We’ll cut the rest later.

Disconnect wires from the main
board

Get that vacuum motor out of the way. We don’t need that anymore.

Clip the vacuum motor
wires

Okay, now, again, back where the dust bin connectors are, you’ll see that one side has some wires screwed to it. Unscrew the wire connections to release the wires, but put the little metal clips back - they stop the dust bin from rattling around too much.

The metal dust bin
clips

Strip the wires and stuff from the inside of Roomba. When you’ve got the wires stripped, he’ll look like this:

Roomba with the wires stripped
out

We don’t need the wheels anymore. Disconnect the springs that hold the wheels down, then unscrew the screws that hold the wheels on. Don’t lose the little screws or the plastic bits on the underside that hold the screws in, though - you need those.

Disconnect and remove the
wheels

The screw on the outside of each wheel that held the wheel in needs to be replaced. Those screws also hold the sides of Roomba together. Here’s the top view of where the right wheel used to be - you can see that the inside screw isn’t there, but the outside one is.

Replace the outside screws from each
wheel

This is the underside view of that screw - see how the little black plastic bit is what holds the screw in? That’s why you can’t lose those when you remove the wheels.

Underneath the wheel
bay

Here’s the trickiest part of the thing. You’ll see on each side of the main board that there are black plastic “boxes” that hold the bumper spring arms in. If you unhook the spring arms, you’ll see they just fly out and would never hold the bumper on.

The bumper arm movement restriction
boxes

Disconnect the bumper spring arms from the main board, then remove the main board from the Roomba by unscrewing the little retaining brackets on either side. Use a Dremel tool to cut the two ends off the main board

  • just enough to leave the black plastic boxes on each side. You don’t need the middle of the board, just those ends. Hot glue the two ends back into their original positions and replace the retaining brackets. It doesn’t have to be indestructible, just enough to hold the bumper arms in.

The trimmed down main
board

As you’ve seen, we’ve removed as much extraneous weight from Roomba as possible. One last thing - on the dust bin, there’s a blue rubber “apron” thing. Pull that off. You don’t need it dragging around. You can later sand down the tabs on the dust bin that held the rubber apron on.

Remove the dust bin
apron

Now, the R/C car I bought was the $14 6V el cheapo from the toy store. Roomba’s only about 12” in diameter, so you can’t have anything much bigger than this or it’ll stick out from underneath. This one was just about right, maybe a little on the small side. But the price was right, and I can always go back and use a better one. It’s going to be sacrificed anyway, so $14 was pretty reasonable.

The Tyco R/C car, ready for
use

Unpack the car and remove the plastic body because you won’t need it. Be careful when you remove it that you don’t accidentally rip off the antenna wire they have attached to the underside of the body.

Be careful of the
antenna

The stripped R/C car, ready to go Roomba:

The stripped down R/C
car.

At this point, you can re-attach Roomba’s top, then the bumper (in that order). Finally, the dust bin.

Here’s the other tricky part - you have to cut out notches in the Roomba body so the R/C car can mount to it. We’ll mount it with some screws using the same holes that held the original R/C car body on, but we’ll screw through Roomba’s underside.

I ended up holding the car up to the bottom of Roomba and tracing out some lines, then using a Dremel tool to cut out the parts to help it lay flat. You’ll see I cut out a section near the battery compartment and a small bit from the dust bin. The battery compartment turned out to be perfectly located for the wheels on the car, so I didn’t have to cut out anything to make sure the wheels would move correctly.

Mount the R/C car to Roomba using some screws. The screws I used were some 1.5” wood screws, but it doesn’t really matter as long as they fit in the holes in the R/C car. You’re going to be drilling some holes (or forcing the screws through) in Roomba anyway.

The R/C car mounted to
Roomba

Here’s a different view of the mounted R/C car:

The car mounted to the bottom of the Roomba
body.

Raceba lives! You’ll see it doesn’t sit too much higher than original Roomba - maybe another inch.

Raceba - ready to
go!

I took this thing to work and we had a blast with it. I think I’m going to put one of those orange kid bike flags on it so I can see where it is over the cube walls.