Unbreakable, Unfakable, Cent-ual Linux

So of course, the financial news world is buzzing with Larry Ellison’s announcement that Oracle will be selling their own flavor of Linux: Unbreakable Linux, which they freely admit will be pretty much stolen from Red Hat and sold for about half the price at the entry level. The only real reason this has made the news at all is because investors more or less freaked out, dropping Red Hat stock by 25%. In response, Red Hat has started an “Unfakable” campaign to try to defend themselves.

Here is why investors are wrong, and Red Hat really has nothing to worry about.

First of all, whether Oracle’s goals are to support their customers running Oracle on Linux, or to undermine Red Hat, the fact remains that Oracle really hasn’t been a player in the OS support business. More importantly, they don’t have a lot of experience contributing and working with the Open Source community. This is an area where personal contacts (like those built up by Red Hat since their inception) are the most important commodity.

You can go to lots of other web sites and read all about that sort of stuff, though. Want to know the real reason why Oracle won’t be stealing all of Red Hat’s business? Well, Oracle plans on taking Red Hat Enterprise Linux, stripping out all the logos (which is what Red Hat uses to enforce their licensing), and sell it as a renamed product, for less money.

But, here’s the interesting part. You can get the same exact thing for free already! The CentOS project exactly fits that description. They even provide all of Red Hat’s latest updates and security fixes, usually within hours of Red Hat releasing them. And yet, Red Hat is still around, despite the fact that this lower-cost competitor has been around for years. This shows that cost alone isn’t enough for customers to leave Red Hat, which is the critical hinge of Oracle’s strategy. Let’s not mention the not-very-well-thought-out logic that companies willing to pay for Oracle’s database software (which isn’t cheap) are not going to compromise on their Linux support just because of a few hundred dollar price savings.

Further, there are nothing but unknowns associated with switching to Oracle’s “Unbreakable” Linux. For example, they don’t support the full gamut of Red Hat products, like JBoss, GFS, or Directory Server. Companies requiring this functionality are out of luck, and would no longer have the option of even using them in the future. More importantly, given Oracle’s uncertainty with its Linux strategy in the past, who knows how long it’s going to be until they just scrap the whole product line, leaving their Linux customers who-knows-where? The smart CTO will stay away from this product offering.

So what does this news really mean? First, Larry Ellison is still unpredictable. Second, he seems to have some sort of grudge against Red Hat. And last, with their stock dropping 25% for no real reason, this is a good time to pick up some Red Hat options :)

Robo-Digged :)

My RoboSheep made it to the front page of Digg.com today :) Cool.

One thing I want to comment on is that some of the hardware people out there are complaining that this project isn’t that impressive, and some of the software people are complaining that the software isn’t that impressive. The point behind the whole thing is that from an amateur / non-techie perspective, and especially from a non-electrical engineering perspective, a lot of this stuff is *very* intimidating. By doing a project that is both a) straightforward, and b) rewarding / fun, the idea is to overcome the first and hardest part of the learning curve: that it is freaking intimidating to start building electronic circuits on your own without any formal training.

Having said that, I come from a deep software background, with a fair amount of (hands-off hardware knowledge), and I still found this project intimidating. But it’s still something that a smart high-school student could do. Hopefully, this article will help lower the bar for some of the people out there who want to get started in robotics but don’t know how.

[later] I also got linked from Make magazine. Thanks! :)

RoboSheep

I got inspired to build something that has been bouncing around in the back of my mind for a while:

A stuffed animal that turns it’s head to watch you! I figure this would be a fun way to build a simple robot, and would also serve to spook out house guests (and my wife!) :)

Last week, I ordered a Basic Stamp from Parallax — a most excellent beginner’s microcontroller. A microcontroller is a very cool thing — it’s like an entire computer on a single chip. You can plug each pin in to a servo or button or any other input or output, and get it to interact with its environment. The only drawback is that the microcontroller is slow, and only has a little RAM. The one I got has only 8 bytes! Of course, it only costs $15… I definitely recommend this board for anyone getting started in robotics or micro controllers.

Anyway, I built my robot into a stuffed sheep my wife had. I used Parallax’s PIR sensors for the eyes. These are infrared motion sensors. I figured that if it senses motion only in the right one, it should turn the head right. If it senses motion only in the left one, it should turn left.

This basic idea worked fine, although there were some problems with the sensors.

First, the sensors were way too sensitive — the slightest thing would set them off. This was due in part to the fact that they have a very wide field of view. This is good for a security system, but for my robot, if one sensor saw motion, they both did, making it difficult to tell which direction the motion was coming from. I countered this by cutting out paper “irises” for the PIR sensors, which you can see in the pictures below. This turned out to be pretty easy.

Next, the sensors take a long time to reset. They basically send a 0 or 1 to the CPU: 1 means there is motion, and 0 means there isn’t. This worked fine, and when I moved my arm, it sent a 1. However, it takes 2-3 seconds for the sensor to reset back to a non-motion state, even if I stop moving. There are a variety of reasons for this, and you can read up on how PIR sensors work to learn why, but the problem was that the head would always turn too far. Also, since the motion sensors were mounted on the turning head, they would constantly detect motion!

The solution here was to turn the head when motion was detected on one side, but then wait a few seconds before looking at the sensors again. This worked great, but unfortunately means that the stuffed animal won’t be able to track motion smoothly.

The last problem I ran into was that the motion sensors don’t provide any sort of degree of the motion sensed. Therefore, we don’t know how far to turn towards it. 90 degrees? 45? My solution was to turn the head some random amount within a small range. If it turns out this amount was too small, the robot will detect more motion the next time its sensor resets and turn some more. if it was too much, then the next iteration it will turn back to correct. if it was just right, then it will detect motion with both detectors and stop turning.

Incidentally, by the way, a regular human will almost constantly set off a motion detector pointed at them. They are sensitive enough that even breathing motions can be detected unless you are specifically trying to hide. The end behavior is that if there is a person in the room, the robot will turn towards them, slowly zeroing in on looking right at the person. Also, because the servo is embedded in a stuffed animal, the sound is muffled, and pretty silent. Basically, it looks like any other stuffed animal, except that if you sit in the same place for a while, you will notice that it seems to be looking at you. And, unless you happen to be looking at it exactly when it turns its head, you won’t know what’s going on! Excellent — exactly what I wanted :)

There are some drawbacks. Since the sensors are so simple, multiple people in the same room will confuse it. Also, because the sensors are infra-red, they can be confused with an air conditioner in the room, or by opening the window on a hot day. But overall, those effects are negligable.

All in all, this was a great project. I haven’t really build a robot or my own circuit before without any instruction, and this project took me maybe 6 hours, including reading the manuals, learning pBasic, figuring out how to wire everything, and tweaking the code. Total cost was $65, including shipping for all the parts, but not for the stuffed animal :)

Attached is the pBasic code which I have running right now, as well as some photos of the robot. I think my next step is going to be to put the Basic Stamp board inside the sheep, so it isn’t so conspicuous. :)
Feedback / Comments welcome!

RoboSheep 4RoboSheep 2RoboSheep 1RoboSheep 3

‘ {$STAMP BS1}
‘ {$PBASIC 1.0}

SYMBOL Servo_pin = 0

SYMBOL Temp = W0
SYMBOL Temp2 = W1
SYMBOL Rand = W2

SYMBOL RSensor = PIN1
SYMBOL LSensor = PIN2

Init:
Rand = 55

Main:
RANDOM Rand
Rand = Rand // 8
Rand = Rand + 8
PAUSE 2300
Temp = RSensor
Temp2 = LSensor
DEBUG Temp, Temp2, ” ”
IF Temp = Temp2 THEN Center
IF Temp > Temp2 THEN Right
GOTO Left

Right:
DEBUG “Right”
FOR temp = 0 TO Rand
PULSOUT Servo_pin,120
PAUSE 30
NEXT
GOTO Main

Left:
DEBUG “Left”
FOR temp = 0 TO Rand
PULSOUT Servo_pin,190
PAUSE 30
NEXT
GOTO Main

Center:
‘FOR temp = 0 TO 2
‘PULSOUT Servo_pin,150
‘PAUSE 20
‘NEXT
GOTO Main

Windows Mobile 5 followup

So, I used my Windows Mobile 5 phone for an additional 3 weeks after writing my last post. What I found was that there is a serious bug in Windows Mobile 5 where it would suddenly stop syncing for no particular reason. This seemed to be somewhat correlated to when it was plugged in or unplugged from USB (either computer or just power, didn’t matter), although it wasn’t an exact correlation.

The phone would work totally fine as a phone, and I could even browse the web on it, but it refused to sync (“Waiting for Network Connection” — liar). The only way to get it to sync again was to reboot the phone. The worst part was that the only way to know that it was no longer syncing was to go into the activesync application on the phone and check the status. Needless to say, this isn’t something you normally do, so essentially, your mail might just not work for, say, the whole weekend and you might not even know it.

I tried many different ways to solve this problem: Setting static DNS entries for my mail server, setting every possible combination of network settings, reflashing the phone’s firmware, upgrading the phone’s firmware. Nothing worked.

So, I’m back to my Blackberry for now. I know all the cliches with Microsoft products, but hey, they’re cliches for a reason. When the phone worked, it was very cool. But I can’t use a product that only works 70% of the time, and doesn’t even tell me when it’s not.