Katie and I impulse bought the crap out of this at Costco…
…Dos Equis is pretty tough to beat. In my book. May your Cincos de Mayo be equally awesome. Buenisimo!
Verizon Wifi Tether…Droid + Ubuntu
The internets have been abuzz with talk of further stifling of Android tethering. Regardless of what will come of this, I would recommend getting a setup in place. May as well…you paid for the device. Am I right? My breaking point came with continued poor results from the wireless connection at work. Enough was enough. After trying several mean with which to tether, I think I have found one that is suitable for my needs.
My hardware is simple…mid-line Dell Studio Notebook running Ubuntu 11.04…Droid 2, rooted, running Fro-Yo. Verizon with data plan…unlimited, if that is still the case. Connection…check
I played around with several apps, but have found that Barnacle Wifi Tether from the Android Market does the trick quite nicely. I have dumped several gigs through 3G, and it is decently fast. Haven’t had to reboot, or do anything wonky to this point. I have had two clients connected simultaneously, and it seems to be chugging along. You must configure the security settings, as this puppy lets it rip wide open out of the box. Grab the app from the Market before Google folds to Verizon. If you need any help rooting your phone, holler at me as well.
Purple Drink
Baseball season is right around the corner. I am very ready to brush the dust off my cleats and see if my custom Triforce edition Baum Bat has as much pop as I suspect it does. A teammate and I have an eighteen pack of beer wager going on who hits the first dinger. Here’s to fastballs to pull… The flip-side of baseball season is my arm feeling like it will fall off. It started in game two of our first double header last season…my shoulder gets nuclear hot and sore. Inflammation city…which historically has resulted in me chewing on Advil like crazy. Maybe not this season…I stumbled across Nopalea.
Long story short, I have been looking for some anti-inflammatory alternatives to ibuprofen. I am tired of having an upset stomach all season, and wrecking my liver in the process. Nopalea fits the bill, ad moreover you can try it for free (only pay $9.95 for shipping) by calling 1-800-203-7063. It is basically a wellness drink that reduces inflammation via some crazy antioxidants. Very cool. With less inflammation, I should be good to go for another season. Turning two without a red-hot arm should be a nice change. If not, the eighteen beers I aim to win will ease the pain…
OBL Helmet Cam Footage 2
Drudge is reporting that the White House is preparing to release a photo of Osama dead. There is all sorts of speculation going on now…talks about releasing a video of his burial at sea, for instance.
Keep in mind that I avoid talking religion and politics on this site. There are all sorts of idiots blathering on about such things. This has nothing to do with the motivations, but rather a way to analyze the video, should it surface. Likely because it has been on my mind a lot lately, but the first thing that comes to my mind is the open source software I have been researching lately.

I have been messing around with an algorithm nicknamed “Predator.” Messing around, as in trying to get something developed on W7 / Matlab to work on Debian / Octave. Sort of a pain, but I digress. OpenTLD is the project…
How is this applicable? It works to track unknown objects in unbounded video streams. Here, it can be used to compare a reference image (known pic of Osama) to the example footage (military helmet cam) for identification purposes. This could be used also to dampen the movement of the video…take out the bounce.
Pretty interesting stuff, huh? I am really hoping I can get this up and running on my system. When I do, I promise I will demonstrate something less offensive than a video of this nature.
How to Use a Ladder
Ladder safety is a must in my book. Before tackling that weekend project around the house, take a look at these ladder tips I have collected. * Ensure the roof of the vehicle you are using is obstruction free * Make sure the ladder is fully opened, with both supports extended to their maximums * Look for and remove any dangerous/pointy objects from around the vehicle * Take note of any overhead power lines and or cables
Here, I have safely used a ladder to open this second-story window that had been painted shut. Safely used a ladder like a baller.
Ubuntu Natty Narwhal Features
I’ve had some time to poke around under the hood of Ubuntu 11.04, a.k.a. Natty Narwhal. I still am struggling to spell ’narwhal’ for the record, but I’ll share some of my first thoughts. After all, sharing is caring. Write that down. I’ll put the most obvious thing on the table first…they Apple-ed the crap out of this distro. Take a look at this screen shot, and tell me it doesn’t look an awful lot like OSX, with the bottom ‘stuff’ dumped on the left-hand side: (click to enlarge)
The good news is that like Leopard, Narwhal is usable. The same cannot be said for Ubuntu’s first foray into this new territory with Unity. Their last attempt was in 10.10 Netbook Edition, which was horrible to say the least. The UI was attempting to mix desktop features with mobile phone-like buttons, and it was a joke. Pretty much junk…I reverted my Mini 9 to the 10.10 Desktop Edition, and jumped back on the Gnome bandwagon. Well, to their credit, Ubuntu has polished the thing up. From what I can gather, Unity sits over Compiz…sort of like a plugin. I snagged the Compiz configuration tool via a CLI and messed around with the settings. The snap-to-side function that came stock with this was a pain in my ass, so I reverted it to my beloved ‘wobble windows’ It was sort of odd to have the options bar integrated with the top bar at first, but when I change gears and use multiple windows, I am liking the move. The window switcher function pans out and shows you four workspaces…see below (click to enlarge)
So basically, I am writing this post in one area, have Eclipse up in another, and have two CLI sessions live in their own spots. With the integrated file bar, the Gimp is far less cluttered…which is awesome. The taskbar slider function is a bit spotty still. I have taken Compiz down running my Arduino IDE (trying to set a temp file up as a taskbar item…it puked) but now have it configured and snappy. I would chalk that up to a training issue, rather than a show stopper. At the end of the day, I give it a surprisingly positive review. I was very satisfied with the last few long term support versions of Ubuntu, and hesitant to make the switch after the whole fiasco with Unity last time. You can switch back to Gnome, but I have no plans on doing so. Pros:* Linux distro. Give me terminal or give me death. * Firefox 4. Much improved. * Update manager. Keeps me current without much hassle. * Interesting UI. Make sure you download the Compiz manager to tweak things. * Free.99. Can’t beat the price Cons:* Ubuntu’s slant. Not bad, but they are steering us toward their cloud services and apps. * Not Linux-y. Feels like a Win7/OSX hybrid at times. * Rushed to market. Unity is in need of some refinement. At the end of the day, I am sticking with this distro. It will only improve. When the new Gnome drops, I’ll make the call as where to head, but this is it for the time being.
You’re Killing Me Smalls
1997 called…they want their dial-up back.
Looks like someone pissed off the network admins at work. I would find this really funny, if I were not excited to try Ubuntu 11.04 in a VM. Cancel. I’ll try this at home later. Expect a review of Natty soon.
The Salsa Incident 2
Having automated junk is awesome, for the most part. One drawback became glaringly evident recently, as I was enjoying some salsa in the lab.

Right on the goddamned floor.
I have a pretty good idea for my next project: salsa-eating sonar detection bypass switch.
Projects in Flight
I have two projects running right now…both are really grinding my gears. Colloquially speaking. You know what? That is a stupid term. Scratch that. I have two problems that I am trying to solve. Number one: figure out how to assign a dynamic IP address to my ethernet setup for the Arduino
Getting old. I need to figure this out in a hurry, as it will open up a whole range of project possibilities. I have been tempted to throw in the towel on this thing and go at it through the Android, but think I need to grind through this on principle. We’ll give it another few hours. Project two involves an image recognition algorithm. I am trying to port a Windows/Matlab proof of concept over to Debial/Octave. This has been my real time-suck…having issues with libraries. I’ll likely dump several more lunch hours into this guy…could be very cool if I can get it running. Pics once I get something aside from a command line to post. Stay tuned.
DIY Minority Report
Spoiler1: This is awesome. Spoiler2: I’ve never seen Minority Report.
I do know that there is some sort of hands free interface, and that is what I have put together.

Long story short, I have extended upon my PING))) project to include some sweet touchless home automation. I have the ultrasonic sensor interfacing with my garage door and a lamp, utilizing a servo and a PowerSwitch Tail, respectively.
Video contains a rare thumbs up from the author
Snippet? Oh, INDEED…
//DIY Minority Report
// Joseph Swanson | 2011
// https://swantron.com
// Setup
// LEDs connected to pins 11, 2-5
// Ping))) sensor signal to pin 7
// Servo signal to pin 10
// PowerSwitch Tail to pin 13
// Ping))) +, servo + to 5V
// Ground the shit out of everything
#include <Servo.h>
Servo myservo;
int pos = 0;
// Pin assignment
const int ledPin1 = 11;
const int ledPin2 = 2;
const int ledPin3 = 3;
const int ledPin4 = 4;
const int ledPin5 = 5;
const int pingPin = 7;
const int lampPin = 13;
// Create variables to store LED states / lamp state
int ledState1 = LOW;
int ledState2 = LOW;
int ledState3 = LOW;
int ledState4 = LOW;
int ledState5 = LOW;
int lampState = LOW;
void setup() {
// Servo pin definition
myservo.attach(10);
//Define pins 1-5, lamp pin as output
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(lampPin, OUTPUT);
}
void loop()
{
// Reset LEDs levels to low to begin loop
ledState1 = LOW;
ledState2 = LOW;
ledState3 = LOW;
ledState4 = LOW;
ledState5 = LOW;
// Reset Servo position to initial location
pos = 0;
// Set duration variable
long duration, cm;
// Loop section for ping signal pin...start as output
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
// Listen with same pin
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
// Convert time to a distance
cm = microsecondsToCentimeters(duration);
// Configure this for LED sensitivity
delay(100);
// March through cm values...set levels where appropriate
if (cm < 95) {
ledState1 = HIGH;}
if (cm < 60) {
ledState2 = HIGH;}
if (cm < 40) {
ledState3 = HIGH;}
if (cm < 25) {
ledState4 = HIGH;}
if (cm < 10) {
ledState5 = HIGH;}
if (cm < 40 && cm >= 30 ) {
lampState = HIGH;}
if (cm < 25 && cm >= 15 ) {
lampState = LOW; }
if (cm < 10) {
pos =( pos + 14 ); }
// fire all LED values...fire servo...fire lamp
digitalWrite(ledPin1, ledState1);
digitalWrite(ledPin2, ledState2);
digitalWrite(ledPin3, ledState3);
digitalWrite(ledPin4, ledState4);
digitalWrite(ledPin5, ledState5);
digitalWrite(lampPin, lampState);
myservo.write(pos);
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
// 340 meters per second...do some math
return microseconds / 29 / 2;
}
As the code implies, I have set this thing up to look for pings in particular regions. The LEDs indicate where I am at, and the rest sort of plays out from there. The lamp is set up as a switch, with ON and OFF having separate regions. The servo/g-door opener is a simple ON when the region is occupied…similar to my previous setup.
Pretty flipping sweet. As usual, send any feedback my way. This is still in the proof-of-concept mode, and will likely get scrapped for parts soon. Not to mention, Katie will probably want to be able to use the garage door opener, which I disconnected to string that wire that I have running manually to the servo. Be prompt.