Sunday, January 25, 2009

Obama Fisting?

This just in, Fisting considered affectionate.

P.S. Wikipedia has become the de-facto source of information for the 21st century.

Tuesday, January 13, 2009

Synaptics Multi-Touch Support in Linux

Wow, I didn't know that you could enable multi-touch support using the synaptics driver in linux. I really need to try this out on my laptop. Out of the box running ubuntu 8.04 it does the edge scrolling but sometimes that kicks in when I don't want it to, so being able to tweak these things would be awesome.

Sunday, January 11, 2009

Ryan's Steak House Macaroni and Beef

Found on the internet as a Best of Craigslist post.

A couple of weeks ago we decided to cruise out to Ryan's Steakhouse for dinner. It was a Wednesday night which means that macaroni and beef was on the hot bar, indeed the only night of the week that it is served. Wednesday night is also kid's night at Ryan's, complete with Dizzy the Clown wandering from table to table entertaining the little bastards. It may seem that the events about to be told have little connection to those two circumstances, but all will be clear in a moment.

We went through the line and placed our orders for the all-you-can-eat hot bar then sat down as far away from the front of the restaurant as possible in order to keep the density of kids down a bit. Then I started my move to the hot bar. Plate after plate of macaroni and beef were consumed that evening, I tell you -- in all, four heaping plates of the pseudo-Italian ambrosia were shoved into my belly. I was sated. Perhaps a bit too much, however.

I had not really been feeling well all day, what with a bit of gas and such. By the time I had eaten four overwhelmed plates of food, I was in real trouble. There was so much pressure on my diaphragm that I was having trouble breathing. At the same time, the downward pressure was building. At first, I thought it was only gas which could have been passed in batches right at the table without to much concern.

Unfortunately, that was not to be. After a minute or so it was clear that I was dealing with explosive diarrhea. It's amazing how grease can make its way through your intestines far faster than the food which spawned the grease to begin with, but I digress...

Entering, I saw two sinks immediately inside the door, two urinals just to the right of the sinks, and two toilet stalls against the back wall. One of them was a handicapped bathroom. Now, normally I would have gone to the handicapped stall since I like to stretch out a bit when I take a good shit but in this case, the door lock was broken and the only thing I hate worse than my wife telling me to stop cutting my toenails with a pair of diagonal wire cutters is having someone walk in on me while I am taking a shit. I went to the normal stall. In retrospect, I probably should have gone to the large, handicapped stall even though the door would not lock because that bit of time lost in making the stall switch proved to be a bit too long under the circumstances. By the time I had walked into the regular stall, the pressure on my ass was reaching Biblical proportions. I began "The Move."

For those women who may be reading this, let me take a moment to explain. "The Move." Men know exactly what their bowels are up to at any given second. And when the time comes to empty the cache, a sequence of physiological events occur that can not be stopped under any circumstances. There is a move men make that involves simultaneously approaching the toilet, beginning the body turn to position ones ass toward said toilet, hooking ones fingers into ones waistline, and pulling down the pants while beginning the squat at the same time. It is a very fluid motion that, when performed properly, results in the flawless expulsion of shit at the exact same second that ones ass is properly placed on the toilet seat. Done properly, it even assures that the choad is properly inserted into the front rim of the toilet in the event that the piss stream lets loose at the same time; it is truly a picture of coordination rivaling that of a ballet dancer.

I was about half-way into "The Move" when I looked down at the floor and saw a pile of vomit that had been previously expelled by one of those little bastards attending kids night; it was mounded up in the corner so I did not notice it when I had first walked into the stall. Normally, I would not have been bothered by such a thing, but I had eaten so much and the pressure upward was so intense, that I hit a rarely experienced gag reflex. And once that reflex started, combined with the intense pressure upward caused by the bloated stomach, four plates of macaroni and beef started coming up for a rematch. What happened next was so quick that the exact sequence of events are a bit fuzzy, but I will try to reconstruct them as best I can.

In that moment of impending projectile vomiting, my attention was diverted from the goings-on at the other end. To put a freeze frame on the situation, I was half crouched down to the toilet, pants pulled down to my knees, with a load of vomit coming up my esophagus. Now, most of you know that vomiting takes precedence over shit no matter what is about to come slamming out of your ass. It is apparently an evolutionary thing since shitting will not kill you, but vomiting takes a presence of mind to accomplish so that you do not aspirate any food into the bronchial tubes and perhaps choke to death. My attention was thus diverted. At that very split second, my ass exploded in what can only be described as a know, as in a newspaper headline along the lines of "30,000 Killed In wake of Typhoon Fifi" or something similar. In what seemed to be most suitably measured in cubic feet, an enormous plug of shit the consistency of thick mud with embedded pockets of greasy liquid came flying out of my ass. But remember, I was only half-way down on the toilet at that moment. The shit wave was of such force and of just such an angle in relation to the back curve of the toilet seat that it ricocheted off the back of the seat and slammed into the wall at an angle of incidence equal to the angle at which it initially hit the toilet seat. Then I sat down. Recall that when that event occurred, I was already half-way to sitting anyway and had
actually reached the point of no return. I have always considered myself as relatively stable gravitationally, but when you get beyond a certain point, you're going down no matter how limber you may be. Needless to say, the shitwave, though of considerable force, was not so sufficient so as to completely glance off the toilet seat and deposit itself on the walls, unlike what you would see when hitting a puddle with a high-pressure water hose; even though you throw water at the puddle, the puddle gets moved and no water is left to re-form a puddle. There was a significant amount of shit remaining on about one third of the seat rim which I had now just collapsed upon. Now, back to the vomit...

While all the shitting was going on, the vomit was still on its way up. By the time I had actually collapsed on the toilet, my mouth had filled up with a goodly portion of the macaroni and beef I had just consumed. OK, so what does the human body instinctively do when vomiting? One bends over. So I bent over. I was still sitting on the toilet, though. Therefore, bending over resulted in me placing my head above my now slightly opened legs, positioned in between my knees and waist. Also directly above my pants which were now pulled down to a point just midway between my knees and my ankles. Oh, did I mention that I was wearing not just pants, but sweat pants with elastic on the ankles. In one mighty push, some three pounds of macaroni and beef, two or three Cokes, and a couple of Big, Fat Yeast Rolls were deposited in my pants...on the inside...with no ready exit at the bottom down by my feet. In the next several seconds, there were a handful of farts, a couple of turds, and the event ended, yet I was now sitting there with my pants full of vomit, my back covered in shit that had bounced off the toilet, spattered on three ceramic tiled walls to a height of about five feet, and still had enough force to come back at me, covering the back of my shirt with droplets of liquidshit. All while thick shit was spread all over my ass in a ring curiously in the shape of a toilet seat. And there was no fucking toilet paper.

What could I do but laugh. I must have sounded like a complete maniac to the guy who then wandered into the bathroom. He actually asked if I was OK since I was laughing so hard I must have sounded like I was crying hysterically. I calmed down just enough to ask him if he would get the manager. And told him to have the manager bring some toilet paper. When the manager walked in, he brought the toilet paper with him, but in no way was prepared for what happened next. I simply told him that there was no way I was going to explain what was happening in the stall, but that I needed several wet towels and I needed him to go ask my wife to come help me. I told him where we were sitting and he left. At that point, I think he was probably assuming that I had pissed just a bit in my pants or something similarly benign.

About two minutes later, my wife came into the bathroom not knowing what was wrong and with a certain amount of worry in her voice. I explained to her (still laughing and having trouble getting out words) that I had a slight accident and needed her help. Knowing that I had experienced some close calls in the past, she probably assumed that I had laid down a small turd or something and just needed to bring the car around so we could bolt immediately. Until I asked her, I'm sure she had no idea that she was about to go across the street and purchase me new underwear, new socks, new pants, a new shirt, and (by that time due to considerable leakage around the elastic ankles thingies) new sneakers. And she then started to laugh herself since I was still laughing.

She began to ask for an explanation as to what had happened when I promised her that I would tell her later, but that I just needed to handle damage control for the time being. She left.

The manager then came back in with a half dozen wet towels and a few dry ones. I asked him to also bring a mop and bucket upon which he assured me that they would clean up anything that needed to be cleaned. Without giving him specific details, I explained that what was going on in that stall that night was far in excess of what I would expect anyone to deal with, what with most of the folks working at Ryan's making minimum wage of just slightly above.

At that moment, I think it dawned on him exactly the gravity of the situation. Then that manager went so far above the call of duty that I will be eternally grateful for his actions. He hooked up a hose. Fortunately, commercial bathrooms are constructed with tile walls and tile floors and have a drain in the middle of the room in order to make clean up easy. Fortunately, I was in a commercial bathroom. He hooked up the hose to the spigot located under the sink as I began cleaning myself up with the wet towels. Just as I was finishing, my wife got back with the new clothes and passed them into the stall, whereupon I stuffed the previously worn clothing into the plastic bag that came from the store, handing the bag to my wife. I finished cleaning myself off and carefully put on my new clothes, still stuck in the stall since I figured that it would be in bad taste to go out of the stall to get redressed in the event I happened to be standing there naked and some little bastard kid walked in. At that point, I had only made a mess; I had not yet committed a felony and intended to keep it that way.

When I finished getting dressed, I picked up the hose and cleaned up the entire stall, washing down the remains toward the drain in the center of the room. I put down the hose and walked out of the bathroom. I had intended to go to the manager and thank him for all he had done, but when I walked out, three of the management staff were there to greet me with a standing ovation. I started laughing so hard that I thought I was going to throw up again, but managed to scurry out to the car where my wife was now waiting to pick me up by the front door. The upshot of all this is that I strongly recommend eating dinner at Ryan's Steak House. They have, by far, the management staff of any restaurant in which I have eaten.

Saturday, January 10, 2009

Expectation Management is Everything

Whether you are in product development or customer service, more or less every single measure of success comes down to how well you have managed expectations. After all, what is a failure other than a customer or consumer considering you to have missed their expectations?

This can cut both ways, however. I recently ordered something online for several hundred dollars. My shipping options were 1) free, 2) $12/2nd day, 3) $20/overnight. I really wanted to get the item in time to play with it over the weekend, however I was placing the order on a Monday before an upcoming holiday weekend.

I was about to place the order for 2nd day shipping when I noticed that the site said orders take 3 days to ship. Therefore I felt there was no reason to pay more to get the item before the weekend and I'll take slow, ground freight from across the US. That's too bad because I thought the long weekend would be the perfect time to play with my new toy.

Frustratingly, a few hours later (the following morning), I got an email that the item had shipped by ground freight. Had I paid for the 2 day, it would arrive before the up coming long holiday weekend. Instead it would arrive just after the long weekend. Argh.

Thursday, January 8, 2009

Top five both ways!

I was thrilled to see that in the 200 best/worst jobs list, I have BOTH the 5th best and 5th worst jobs. I am both a software engineer (rank 5) and an EMT (rank 196).

Tuesday, January 6, 2009

No vpn support on android (yet)

After searching the forums and the Internet I've ascertained that there is no current support for vpnc on the G1. I don't know if the ARM processor will have trouble keeping up with IPsec, but now that I've done a few test programs my next task will be to investigate building vpnc.

Sunday, January 4, 2009

Stdout on the Android DEV-1

Pro-tip: Always have a terminal running and showing the output of adb logcat. That's where all your System.out.println()s will show up as well as stack dumps of your fatal exceptions.

Not that I ever get fatal exceptions, that is.

Second protip: The ID being assigned in the layout MUST be the android namespace id (android:id), NOT the XML id. Doing the latter will cause your calls to findViewById() to return null. However, the ID will be placed into the R file regardless. Which can be confusing.

Installing Android Apps On A DEV-1 Phone

I may be really dumb, but it took me forever to figure out how to simply get an app installed on a physical phone. When I finally found out the tools to use, I was getting errors like the one below when I tried to actually copy the app over.

$ adb install ~/sandbox/HelloAndroid/bin/HelloAndroid-debug.apk
123 KB/s (6758 bytes in 0.053s)
pkg: /data/local/tmp/HelloAndroid-debug.apk

To do the install, you need to do two things. First, create a signed apk file, then copy it over. The signing process is straightforward once you have got your debug keyring set up correctly. For some reason my setup on ubuntu (32 bit) didn't work out right after installing the dev kit and trying to use the eclipse plugin. The debug keyring was unusable, so I deleted it and recreated it.

  1. rm ~/.android/debug.keystore

  2. /usr/lib/jvm/java-6-sun/bin/keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -keyalg RSA -validity 100000 -storepass android -keypass android

Turns out the debug keystore is expected to have both a keystore and key password of android. Then the build scripts work. This command sets up the keystore so that the ant build script will create signed debug apps. However, as a separate problem, the Eclipse Android plugin doesn't generate the ant script.

Even though the plugin supposedly wraps the command below, I ran it again on my source directory and it created the ant files.

$ ${android-sdk}/tools/activitycreator --out HelloAndroid

I could then do an ant in the source dir and get bin/HelloAndroid-debug.apk. It was signed, as expected and that let me install it. After you've setup USB connectivity, and verified it with adb devices...

  1. Connect USB cable to phone

  2. Pull down notification window and let USB mount SD card

  3. Settings->Applications->Development->USB debugging (enable)

  4. $ ${android-sdk}/tools/adb install ~/HelloAndroid/bin/HelloAndroid-debug.apk

The output of the last command looks something like this:

137 KB/s (8323 bytes in 0.059s)
pkg: /data/local/tmp/HelloAndroid-debug.apk

Saturday, January 3, 2009

Frist post update

Turns out, it takes some getting used to.

Frist post

Well, I wonder if being able to blog from a mobile device is a good thing or not...

Do Not Shout In The Datacenter

Who knew that shouting could cause disk problems.

Android DEV-1 Phone using "T-Mobile VPN" APN

I just received my Android DEV phone in the mail and discovered it's a bit tricky to set up without purchasing the special service plan that T-Mobile wants you to buy at around $40/month. Unfortunately you CAN NOT setup your android phone without first logging in and syncing to a google account. This requires a working 3G data service out of the box.

(I have the "T-Mobile VPN" service which provides a routeable IP instead of a natted one.)

Turns out, the phone works just fine on their older unlimited data plans, albeit at 2G speeds (GMRS). I'm happy with that because I just want the same level of surfing capability I had with my old Motorola Z8.

There was the problem of the setup. To get it to work, I did the following:

  1. Added the "T-Mobile VPN" APN to the list of apns (which you can do from the initial-setup screen)

  2. Booted the phone with my wife's Google enabled SIM card

  3. Logged in with my google account

  4. Switched on 2G only mode (I don't think that this is necessary)

  5. Rebooted with my sim card

  6. Deleted the US 3G APNs from the list

The catch is that without removing the 3G APNs it will still try to use those to connect to the internet. Not a good thing because that only leads you to a captive portal by T-Mobile offering to upgrade your service.

Now I get the data service I like (and pay for), on the device I want.
Now to see about this developer kit.

Thursday, January 1, 2009

The Nature of Self Interest

"Evil is always the assertion of some self-interest without regard to
the whole, whether the whole be conceived as the immediate community or the total community of humanity." -- Reinhold Niebuhr.