I went home and, after giving Roomba a thorough cleaning, did some testing.

So it was acting up around the virtual wall units. I had some placed around the bedroom so the Roomba wouldn’t go under the bed and destroy the crap we have down there, but what ended up happening was that Roomba would spin in circles and clean the same four square feet over and over. I couldn’t for the life of me figure out what was up.

After reading some of the FAQs on the iRobot site, I started gathering that the virtual walls not only put out a beam forward (as the virtual wall) but also a beam around the wall unit itself, presumably so the Roomba doesn’t run into the unit and knock it over or change its position.

On the bottom of the virtual wall unit is a diagram that sort of illustrates this:

Original virtual wall

You can see in the diagram a small dotted halo surrounding the virtual wall unit as it projects the beam. I had interpreted this halo as a circle to highlight the virtual wall unit. Not the case - it actually outlines the wall unit’s beam pattern.

As it turns out, this diagram is correct, just not to any sort of scale. The correct diagram would look more like this:

More accurate virtual wall

Notice the halo extends to the far reaches of space. This is more accurate. In fact, if I cover the little broadcast point on the top of the virtual wall unit (to stop the halo), Roomba behaves as normal again.

That’s why you see the virtual wall in the diagram parked behind a physical wall and broadcasting outward - so Roomba doesn’t pick up on the protective halo of the virtual wall unit.

Why was I afflicted? I had changed the way the virtual walls in the room were laid out from previous times Roomba had run. Before I had blocked the virtual walls with a pillow so Roomba wouldn’t hit them, which, at the same time, meant I unknowingly had blocked the virtual wall’s protective halo so I never saw the behavior. This time I had not blocked the virtual walls with a pillow, and Roomba went nuts. Too much infrared in a small space.

So I’m back to status quo on that front. Virtual wall placement now becomes a more strategic task, but I should be okay.

I’ve had my Roomba for about a month now and I love it. Thing is, it’s starting to act up a bit I’m not sure if it’s just dirty or if it’s actually malfunctioning.

Roomba has these “virtual wall” units that shoot out a beam of infrared light and when Roomba detects that light, it won’t cross through it. The virtual wall transmitter seems to shoot the beam a little wide, like plus or minus 15 degrees from center. Starting last night, Roomba seems to be picking up on this IR more on the order of plus or minus 45 degrees from center, which is really hosing things as far as its ability to clean. Use a virtual wall and Roomba goes nuts.

I’m hoping it’s just in need of a cleaning. I downloaded some troubleshooting tips for cleaning the thing and I’ll try that out tonight. If it doesn’t work, I guess I’ll be contacting customer service.

personal comments edit

As much as some folks might disagree, there is a difference between just developing software and developing software that will be used by other software developers to create new and interesting products. This includes the people who write business tier and data access tier functionality in an n-tier architecture.

I get in arguments about this kind of thing with folks. They believe I’m expecting perfection, which is something impossible to provide. That’s incorrect; I expect excellence. Understanding the difference between excellence and perfection is important, just as it is important to understand what it is to write code and what it is to write code for people who will use it to write code.

What’s the difference? While I could (and generally do) argue that there shouldn’t be any difference, here’s what I’ve found:

People who write software do error checking. People who write software for people who right software will not only provide meaningful error messages as a result of that error checking but will also add trace and debug statements so someone using it can figure out where precisely the error is happening and how to fix it.

People who write software have documentation. People who write software for people who write software provide API documentation, task-based documentation (HOWTO), examples, remarks, and helpful tips. An undocumented API is almost as useful as a nonexistant API.

People who write software only look at taxonomy and naming in relation to the application. People who write software for people who write software use clear, concise naming for identifiers and filenames that makes sense to people outside the scope of the application and makes use of the API intuitive; and they organize code in structures (namespaces, files, etc.) that make sense beyond just an individual application.

People who write software focus on what needs to be done now. People who write software for people who write software also focus on what will be done in the future. (Which is another way of saying: People who write software extend code. People who write software for people for people who write software make extensible code.)

In short:

People who write software make code that works. People who write software for people who write software make code that is usable.

A lot of random thoughts coming through here.

Flip-flops are quite possibly the worst footwear ever designed. Ever. I don’t care how hot the girl is, if she’s wearing flip-flops, she’s disqualified. Flip-flops with jeans is the worst. If you’re not on the beach, walking to the beach, or coming home from the beach, you should not be wearing flip-flops. Period.

I really don’t understand how the Winter Hawks, who have been the picture of mediocrity all season long, can kick the ass of the best team in our division one night, then turn around and lose horribly to the worst team in the division. Except for the folks that sit next to us and the occasional fight, I don’t feel like I’ve gotten my money’s worth this season.

Speaking of the people who sit next to us… there are two 50/50 raffles at each home game (for those unaware, a “50/50 raffle” is where they sell a bunch of raffle tickets and the winner takes home half of the total money collected; thus, the more people who buy tickets, the larger the prize is) supporting the players’ education fund. The people next to us, Tim and Barb, each buy a ticket for each raffle every game - that’s $4 per game. At 36 home games, you’re looking at $144 every season just for raffle tickets. I can’t tell you how many seasons we’ve gone where they don’t win a dime. Luck changed for them this weekend, though, where they won two nights in a row. I guess I can’t give them shit for being losers anymore now, can I?

Spent Friday night watching the Hawks win, then Saturday Jenn and I ran around doing errands, visiting parents, etc.

Saturday night Stuart and Tiffany came over and we played “Dirty Minds” and “Apples To Apples.” “Dirty Minds” was fun but went altogether too quickly. Like, to the point where we wondered if we were somehow playing it wrong. Most times you wouldn’t even get a second turn. “Apples To Apples” is a blast, though, and I could see how it would be even better with more people (with only four of us, games went reasonably quickly, but were still great fun).

Sunday I spent most of the day cleaning my car, which desperately needed it. I washed it, waxed it (two coats), vacuumed, put Rain-X on the windshield, washed the inside windows, wiped the seats down with leather protectant, and dusted. Yes, it took most of the day.

Sunday evening we watched the Hawks snatch defeat from the jaws of victory in an amazing 3 - 1 loss. The guy behind me decided that he wanted to do one of those really high-pitched, shrill whistles at every good play. Normally I wouldn’t be too mad, but we are right in front of the glass, so not only does it hit me from behind, but bounces off the glass and hits me from in front, making it doubly loud. I asked the guy nicely to stop. Yeah, that worked really well.

This morning coming in I cut this lady off who decided to tailgate me for a mile and then switch lanes and pace me in my blind spot for another mile. I turned on my signal and switched lanes. She had to slam on the brakes, of course, then zoomed up on my other side and attempted to cuss me out. Unfortunately for her, I don’t read lips. Sorry, bitch. Can’t help you. I let the tailgating go… but don’t pace me in my blind spot. I hate that.

I still believe that Roomba is the bomb. Roomba has vacuumed our house since it showed up, and it definitely does a way better job than I do. Plus, the novelty factor is huge. I love it, the cat loves it (and chases it around the house). Awesome.

Turns out they have something called the “RoboMower” that looks a lot like Roomba for your lawn. I watched the video on it and it looks really cool. Wired News has an article, too. I may have to look at these.