Wednesday, February 11, 2015

Mechanics and Tech Support

This has been bothering me for some time, there is this assumption people who work with computers for a living must be able to fix them...

Imagine for a moment you have a mechanical engineer friend named Bob. Bob works for a company designing the hydraulic car lifts used by auto mechanics. Bob's good at his job. He's a great engineer and knows everything there is to know about hydraulic lifts. His team develops and designs all sorts of lifts and he's been doing this a long time.

Would you go to Bob for advice when your car stops working? "Hey, Bob! My power steering pump went out, could you take a look?". Being a mechanical engineer I'd bet Bob would be able to pop the hood of your car, reverse engineer the entire steering mechanism and eventually determine what's wrong with your power steering and how to fix it. If this is his idea of a good time... Does this mean Bob is qualified to do this work for you? No, fixing this part requires a working knowledge of how all the pieces in this system fit together. You need experience with this make/model/year or a general understanding of how this design is intended to function. You need to know what commonly breaks under the weather conditions in your local area. You need to call a mechanic, this is what they do and this is what they're good at!

The same is true with software/computer engineers. Just because I know how to make computers do things and do it really well doesn't mean I have any clue whatsoever why your computer stopped turning on. I design and test software targeted at enabling developers to produce software applications for Android on their Windows/MAC PCs. This in no way qualifies me to help you root cause your runDLL error. I know plenty of computer engineers who can barely turn on their PCs but when they go home at night they have to stop at their in-laws and setup a new wireless router. This makes no sense to me, there is an entire industry of people who do this for a living, they're called "Tech Support".

This is a completely different field of Computer Science and requires intimate knowledge of commonly used software/hardware/makes/configurations. People do this for a living full-time and it can take years to get good at it. There are people who specialize in Windows, they've spent decades learning everything they can absorb about how it works and how to fix it. They'll never be done, there are literally millions of lines of code, which means billions of ways it can break. Did you know there is not a single person on the planet who can build a smartphone or laptop from scratch? These modern technological marvels are SO complex they require entire legions of people to maintain, develop and improve. Even the simplest components, for instance your WiFi radio: You might be able to pull 10 of the word's foremost leading experts into a room and between them understand generally how the thing works and how it's built.

(Image credit: http://xkcd.com/627/)

I've done what we suggested Bob do above, I've taken people's computers apart (software and hardware) and analyzed each moving piece, tested it and familiarized myself with it enough to deduce what was wrong. "Ah ha! This part shouldn't be doing that... I'm not sure what it's supposed to do, or who made it, or who should fix it, or what part to replace it with ... but I know this part is causing your problem!" It's not my idea of a good time, I would rather watch paint dry.

Anyways, my rather rambling point is that most of us software engineers are about as qualified to figure out your computer problem as Bob is to fix your power steering. There's not some magic knowledge, or secret club that grants us unlimited access to all things that can go wrong. Just a tried and true method for resolving the issue and you'd be surprised how effectively you can help yourself.

Not-An-Ad: Free home phone with unlimited minutes

I know it sounds too good to be true, and honestly, if I hadn't seen it with my own eyes, I'd be right there with you.  I'd love to give you all the background: My hair pulling and screaming as I try to find a way to get VoIP working in my home for my kids to use when we're not around (they don't have phones yet), but I don't think you care.  So here's the magic:

1. Google Voice Number
Get a Google Voice number.  If you have a Google account, go to google.com/voice and set it up.  It's free, and this is a VoIP line with unlimited calling to US/Canada

2. Obihai's ObiTalk
Go get a device at www.obihai.com.  They have a great product comparison chart, but seriously, you probably just need the ObiTalk 100 ($39).  This one allows you to connect one phone to 2 VoIP services, which is (probably) all you need...

3. Dect 6.0 Wireless Phone
This is a new and amazing technology, I'm millennial and a cable cutter.  I've not had a land line in many years, my wife and I have used cell phones exclusively for more than a decade.  So this new approach to cordless phones caught me off guard: 1 base and as many as 5 phones attached to it that don't need plugged into the phone jack.  You'll need this since the ObiTalk only has one phone jack on it.

4. Anveo E911 Service (Optional and not free)
This part isn't free, and I'd wait until you get the Obihai to set it up, but basically you're paying another service (Anveo) for E911 service.  Once you connect the Obihai to your Google Voice account it'll warn you repeatedly that you can't make E911 calls, and as soon as you've finished acknowledging this repatedly it'll offer to forward you to their partner and pay $15/year for 5 E911 calls (more than 5 calls will reset your subscription and require you to renew early).


Many people out here on the web have probably already seen this and think I'm ridiculous for getting excited, but hey, there it is.

Monday, January 5, 2015

The Cat


Saturday morning,
I woke up and started getting ready for the day.  When I let the dogs out (step 1) I immediately noticed someone was barking but since I didn't recognize the bark I figured it wasn't mine. This is pretty normal, our new house is surrounded by dogs and someone is always barking at someone. I dismissed it because I didn't recognize the bark and figured there was nothing I could do.  After about twenty minutes of this persistent nagging bark I caved and went outside to see what was going on.

I'm quickly greeted by smiling Lucy and spot Thaleia (our Siberian Husky) on the side of the house fixated on the fence. Understand this is highly unusual, Thaleia is a Husky so she speaks all the time but she doesn't bark. Ever.  A Husky's speaking could probably be best described as a rolling series of vowels and the letter "R".  It doesn't have any abrupt points and rolls over you sleepily like a blanket made of gravel.  This was something I've never heard her do before.  The harsh and abrupt barks you might associate with an overly protective dog barking at the mailman.  Clean and crisp, and to the point.

I started working my way into the blackberries that had overrun this corner of the yard. About halfway back I notice these little amber eyes staring at me from deep inside a black ball of fur. A cat had gotten itself cornered and trapped between the house, blackberries and the dog.  I turned around and took the dogs inside. My plan was to give her some dog-free-time and let her figure it out.  Cats may not be smart, but she got into my yard, she had better be able to get out.

About twenty minutes later we had finished getting ready for a group meal and I needed to put the dogs out in the yard again. Concerned about the sanity of the cat and the physical well-being of my idiot dog I went to verify she had vacated our yard before releasing them. Naturally this drove them nuts. "You're going outside without me? But the cat is out there! I wanna go too!"

She hadn't left. She was still there, buried in blackberries, growling.

With an exasperated sigh I retrieved my work gloves and clippers intent on setting the cat free from her thorny prison and I got to work.

As I got closer she would growl louder and tense up, I would speak soothingly and take my time clipping overhead brambles. Eventually she a would calm and I'd creep closer and we'd begin the our slow, thorny waltz of mistrust anew.

After twenty minutes of this I'm looking down at a very angry kitty amidst as pile of thorns and ivy. Concerned she may be caught on the branches she's laying on I clip them close to her and step back. She looked up at me with those big amber eyes as if to say "don't you dare touch me filthy clod!"

I reach down with my gloved hands and gently pet her head to which she immediately melts. I calmly grab her and place my other hand under her feet and briskly begin working my way to the gate on the other side of the yard. As I get closer I realize the gate is locked from the outside. I stop on the patio to consider my options. Not knowing anything about the age and health of this cat I'm reluctant to just to toss her over the fence. My wife doesn't know which key opens the gate and I don't want to risk the cats patience waiting long enough for her to try each one in turn because I guarantee she will try all the wrong ones first.  Which leaves racing through the house. This seemed like a good idea at the time: My wife would go inside and rally the dogs and I would make the calm dash ten yards to the door.

It's worth taking a moment to note that at this point the cat and I have an understanding, a delicate truce that stipulates if I free the cat from my yard with no more canine interactions no harm will come to me and mine. The dogs of course were not aware of this agreement nor did they care for it and they desperately wanted to be involved in whatever I was doing.

The door opened and they raced out onto they patio. Straight at me.  The cat glared at me and began growling once more.  I begun to spin around in circles softly kicking my feet out at the dogs to keep them back and shushing their excitement.

Then Thaleia got in front of me and reared up on her back feet.  In a low stern voice I scolded her and told her to get back.  That was over the line. My calm admonishment of the dog was enough to breach the terms of our tentative truce. The cat hissed and spit then wrenched around at an angle I'd forgotten cats could achieve. With one last yowl the cat reached out and slapped me in the chin. I tightened my grip and stretched my arms out as far in front of me as I could.  I ducked down committed to completing this task and ran through the house, everything a blur of growls and hisses.  I counted my blessings that my work gloves were still on as the cat battered ferociously at her bindings

I found my way to the door and through it.  Out to the patio then I heaved the cat out and away from myself into the yard.  She tumbled through the air and flicked her tail at my clumsy expulsion.  With one more growl and hiss the cat was gone.  She ran down the street and didn't look back.  I couldn't say I missed her at that moment.

I turned around to see my wife and daughter standing in the doorway.  "But what if the kitty doesn't have a home?" My daughter asked innocently.

I looked at my wife in exasperation.  "Honey, did the cat get you?" she asked looking at me quizzically.  I removed one of my gloves and placed my hand to my chin.  When it came away it was warm and sticky with red blood.  Immediately images of a massive wound ranging from my lip to the tip of my chin sprung to my mind.  I finished my morning with thoughts racing with concern about contagions being introduced to my body and foul substances the cat left in my flesh with her vicious and unwarranted assault.

Wednesday, May 29, 2013

GSM Droid Bionic

I originally posted this here: http://forum.xda-developers.com/showpost.php?p=42437715

First some venting: I went to Israel for business. Before I left I did some research and found out that Pelephone (the local CDMA carrier) should be able to provide me with a CDMA SIM. Upon arrival I found that while these SIM cards are available online they don't sell pay-as-you-go in stores. I returned to my hotel room with my tail between my legs and quite accidentally discovered this thread.

I was attempting to enable my Bionic to use a pay-as-you-go SIM from a local GSM carrier (Cellcom) from my hotel room, using nothing more than my Windows 7 laptop, the guest WiFi, and a borrowed thumb drive. At several points during this process I seriously considered jumping out of the window of my 17th floor hotel room. I soft bricked my phone at least twice and learned A LOT (and I didn't consider myself to be a novice before beginning this). But thanks to all of the notes here I did eventually SUCCEED! In the interest of sanity I'm putting together what I did and what worked for me. I'm hoping people can take this and begin adding information to it so we can have ONE unified place with the latest method (instead of forcing people to read 117 pages and have to filter through what worked with ICS and what no longer does in JB).

This is by no means a final tutorial or guaranteed set of directions. It is simply what worked for me in my specific situation. I've incorporated troubleshooting tips and directions from these 117 pages, and hopefully this can be expanded upon into a more comprehensive guide in the future.

READ THESE DIRECTIONS ALL THE WAY THROUGH BEFORE BEGINNING

My phone is hardware rev A

Getting Setup
Make sure you have the latest Motorola Drivers installed: http://developer.motorola.com/tools/usb_drivers/
Starting with a freshly imaged phone:
It's guaranteed you'll have to data wipe at some point during this. You might as well make sure you're running a clean build before you start.

By the way if you get the error: "Failed flashing process. 5/24 oem fb_mode_set -> Phone returned FAIL" Try the following:
  1. open the file : cdma_targa_9.8.2O-72_VZW-22_cfc
  2. remove the lines:
    Code:
    <step operation="oem" var="fb_mode_set" />
    <step operation="oem" var="fb_mode_clear" />
  3. Save
  4. Restart RSDLite and flash again

Root Your JellyBean Bionic
EasyRoot didn't work for me on my hardware, I used a thumb drive to create an Ubuntu boot and did it "manually", if you have any Linux experience it shouldn't take very long. Here are links to both procedures:

RadioCOMM: http://dl.dropbox.com/u/6725402/Radi....2_Install.msi
  1. Boot Bionic, connect USB cable, set connection mode to anything other than "Mass Storage Device"
  2. Make sure USB Debugging is DISABLED (when I had it enabled, RADIOCOMM was unable to find my phone)
  3. Start RadioComm
  4. select Main -> MA -> Common -> MDM 6x00 chipset base
  5. select settings -> USB -> USB PST Driver
  6. select the FTM Common1 tab
  7. Try the buttons at top to read Version and MEID, if response is GREEN, you can proceed. If RED, there is likely a driver error that you need to resolve. (If drivers are correct, you should see moto usb networking listed under NETWORK Adapters in Windows Device Manager). Possible ways to fix driver issue…
    1. re-install Moto 5.4.0 drivers and reboot PC.
    2. reboot phone (remove/replace battery if possible).
    3. when connecting phone to PC, ensure its connected in PC MODE, not USB Mass Storage, Charge Only or other...
  8. in the NVAccess drop down, select 1877
  9. click read.
  10. should show 07000000000000000.... change the first characters to... 8703E80400000200
  11. click write
  12. exit radiocomm
  13. disconnect phone
  14. power phone off, insert Non-VZW SIM, and power up.

Build.prop edits
  1. Backup existing Build.prop
  2. Update build.prop with the one CellZealot provided (Don't do the apk/odex renames yet) (http://db.tt/TdVtcfHH)
  3. You can try using *#*#INFO#*#* and changing the value but this did not stick through reboots for me. It should however help you determine which value of ro.telephony.default_network is appropriate for you.
  4. If you need to be able to switch between Verizon and GSM carriers, in build.prop (be sure to do this before a data wipe because modifying the default_network value may cause the crash loop)
    1. Change both appearances of the value:
      Code:
      ro.telephony.default_network=0
      To:
      Code:
      ro.telephony.default_network=10
    2. In order to get 4G/LTE data with Verizon you will also have to restore these values to the VZW values (note I set these when I returned to the states, I do not know if it affects your ability to use GSM):
      Code:
      telephony.lteOnCdmaDevice=1
      ro.mot.phonemode.vzw4gphone=1
  5. Set chmod on build.prop to 644 (rw-r--r--)
  6. Restart
  7. This brought me to the "android.phone.com has stopped" crash loop, if you end up here do this:
    1. Boot into recovery and data/cache wipe
    2. On the first boot you will get this crash once, click OK then you will never see it again
    3. FYI: Every time you start your phone you will see "SIM Card from unrecognized source" error (if you're using the GSM SIM). This is expected right now, be patient!
    4. In other experiments I've noticed that sometimes it is possible to update the value without getting into the crash loop, but the value doesn't "stick". The build.prop file will say one thing while the *#*#INFO#*#* menu says something different. To fix this do a data/cache wipe.

APK/ODEX Renames
I haven't done this yet, the message doesn't bother me that much, and the risks of this change seem to outweigh the benefits. Doing this before a "Clear data" seems to prevent you from ever getting passed the "Please wait, this may take a few minutes" screen during an initial boot. Your only respite will become a complete re-image of the phone as this screen will never go away. I've reproduced this twice: Rename the files, do a factory reset, then wham, phone is completely unusable. After a complete re-image you MUST start from step 1! So keep this in mind if you ever need to factory reset your phone (without doing a complete flash) you will need to put these files back to their original state or you may end up needing to reflash your device but if you want:
  1. If you did a data wipe above you will need to root again, as the data wipe will have unrooted you (see above)
  2. Now rename the APK and ODEX files to get rid of the "SIM Card from unrecognized source" error. Files to rename are:
    • Stk.apk
    • Stk.odex
    • VzwPhoneService.apk
    • VzwPhoneService.odex

APN Updates
If you don't get data with your GSM SIM you may need to setup your carriers APN:
  1. "System Settings" -> "More…" -> "Mobile networks"
    1. Verify "Data enabled" is checked
    2. Select "Access Point Names"
    3. Click menu key to get "New APN"
  2. A Google search should do the trick for the appropriate values for your carrier. I simply searched for "Israel Cellcom APN" and this was the first result which contains everything you ever needed to know about Israel APNs. I'm sure similar sites exist for other carrier/country combinations:http://prepaidisraelisim.com/index.p...formation_id=7

Finally:
  1. If you don't want root, now is a good time to unroot
  2. Reboot your phone one more time for good measure
  3. Enjoy GSM on your Bionic!

And now that I'm home, I drive to the AT&T store to buy a Galaxy S4 and ditch Verizon and Motorola and CDMA permanently. Some things cannot be unseen.

Thursday, February 14, 2013

Bad Japanese Food

For Valentines Day Felicia and I decided all four of us were going to go out and get some sushi.  Nothing fancy or expensive, just some hole in the wall Japanese food.  She found a place via Google Maps that looked promising, it was near to our house, inexpensive and the reviews were very promising.  We didn't want to do conveyer belt, we wanted the legitimate sit down dine in sushi.  We pulled into the parking lot and got out of the car excited for an evening of moderate to good food only to find that the restaurant Felicia had chosen had a counter with bright lit signs over the cashiers heads.  We opted out of the fast food experience and on a whim walked into the little Japanese restaurant three doors down.

My first impressions were good: nice atmosphere, the hostesses all looked the part and the food smelled decent.  My first warning should have been the fact that within five minutes of entering the restaurant we had a table and they had no high chairs available.  On Valentines day nobody has free tables and everyone has babysitters: therefore everyone has high chairs.  Ignoring this small issue eager to get on with my evening I went to the car to retrieve our car seat while the rest of my family got settled.  On my way back through the restaurant I'm assaulted by the rancid smell of burning plastic.  Again I ignore what I now realize must have been the universe warning me away…

After getting our seating arrangements sorted and the menus distributed we promptly began to analyze the menus.  The menu looked fairly complete, many Japanese restaurants in the United States serve Chinese dishes but all the Japanese food essentials looked to be there.  After careful consideration we ordered as follows:

Felicia: Assorted Tempura a la carte
Natalia: Children's Bento with Gyoza and Teriyaki Chicken
Me: Bento with "Ton Katsu", Assorted Tempura and Sashimi
Additionally we ordered a plate of Yellow-tail rolls and Spicy Tuna rolls

First up, Felicia and I receive our "Cucumber Salads".  The menu neglects to provide any further indication as to what this really is and I naively believed it was some Americanized name for sunomono.  I was wrong.  This plate was actually diced cucumbers slathered in soy sauce and sprinkled with sesame seeds.  Which bares only one ingredient in common with sunomono: Cucumber.  All surprises and kidding aside this dish was palatable and the only complaint I have is that this particular plate just doesn't make sense.  It's salty and watery with sesame seeds which are flavorless.  It doesn't seem to have any culinary or health value.

Next we received our miso soups.  This is where things started to take a turn for the worse.  Immediately I noticed the miso soup was "weak", I dismissed this believing maybe this was a low sodium variety (perhaps to compensate from the salt overload of the "Cucumber Salad"?).  Almost immediately, Felicia notifies me her miso soup contains no tofu and no seaweed.  Natalia reports she has one piece of tofu in hers and I realize I've only received two.  Great, three pieces of tofu for the entire table.  We quickly evened the tofu and the seaweed distribution around the table and got back to eating our soup.  Long story short the miso soup was lacking, watered down, and the tofu was tough and chewy and tasted as though it had been tossed into our bowls on the way to the table.  Completely free of any miso flavor.  Not off to a good start, I can make miso soup better than this in my sleep.

Next our sushi arrived.  I remark jokingly that I hope the wasabi isn't just horseradish that's been dyed green but am genuinely pleased when I note it's the real deal.  Not only is it the genuine article but it's got a great kick, the kind you feel at the tip of your spine and arcs through your skull and sears your sinus's clean.  All-in-all a good experience.  The sushi was decent as well although genuinely nothing to write home about, it wasn't chewy or ripe, and went down well.  I've had spicier spicy tuna but it was an honest attempt and acceptable.

Next our main courses arrived.  Where do I start?

I began with my tempura, these breaded delicacies have a tendency to get soft and soggy over time and are best enjoyed   sooner rather than later.  The tempura items themselves could  best be described as "thick", this isn't really a big deal, I'm spoiled and know it.  I prefer a light fluffy breading that practically crumbles in a heavy breeze and sponges up the sauce before it even comes into contact with the bowl.  This had a consistency comparable to a potato chip.  This is fine, the food just spends more time in the tempura sauce.  Which tasted like oranges.  Really?  Oranges!  I asked Felicia if she noticed this "citrus" flavor in her assorted tempura meal.  She considered a moment and said she did and shrugged.  But I couldn't seem to get past it.  This flavor was so out of place with tempura I couldn't help but fixate on it.  With every bite the tangy flavors of Florida got stronger and more pervasive.  Invading my tempura experience until I couldn't take it anymore.  I put down the tempura and moved on to the "Ton Katsu".

Now anyone out there who knows even a little about Japanese is probably choking on their own righteousness screaming at me that it's spelled "Tonkatsu".  I know.  I am spelling it this way because this is how the restaurant spelled it in the menu.  I suppose with any of the non-Anglo-Saxon alphabets spelling is sort of a fluid subject once they've been transliterated.  Maybe this is even an acceptable spelling, but it's not one I've ever seen.  And Google seems to believe it isn't correct either.  You do your best to spell it using the sounds in an alphabet that wasn't designed to write the word you're writing.

Anyways, back to the "Ton Katsu".  I picked up my first piece of breaded pork and dipped it into my katsu sauce and took my first bite.  That's odd, doesn't quite taste right…  Let me try that again I thought to myself.  At which point my piece of pork fell completely clear of the breading.  A problem which would repeat itself throughout the entire dish, every piece of pork needing to be consumed separately from it's breading.  Every bite grating at me, something is wrong, something doesn't quite taste right… It's the sauce, what is wrong with the sauce?  Then it dawned on me.  I know this flavor, and it's not katsu sauce.  It was A1 Steak sauce.  I am not kidding, let me say that again: it was A1 Steak sauce.  They had certainly sweetened it just a hair, but there it is, once it was identified the flavor was unmistakable.  Now this wasn't a particularly repulsive combination in all honesty but I will say it was quite offensive once I realized what was going on.  Did they really think they could serve me A1 Steak sauce with my "Ton Katsu" and I wouldn't notice?  Maybe this is the difference between "Tonkatsu" and "Ton Katsu": the latter is served with steak sauce, while the former is a Japanese dish?

I finished with my sashimi, like the sushi was unimpressive.  It was flavorless, chewy and the serving size was ridiculously small.  Other than that I can't think of anything else to say.  At this point in the meal I don't think I would have been surprised about anything.

On to Natalia's dish.  Partly through the meal Felicia and I noticed she's been neglecting her teriyaki chicken.  Now for anyone who has ever taken a child under 12 to a Japanese restaurant you know teriyaki chicken is "candy".  Put simply this savory sweet dish is the best part of the strange food Mom and Dad have hauled you out to eat.  We asked her what's going on and she innocently shrugged and says she just preferred the gyoza.  My curiosity piqued I pinched a piece of her chicken and got to work chewing.  And chewing.  And chewing.  Dry, salty and absolutely the flattest teriyaki flavoring I have ever had the displeasure to taste.  You can buy more flavorful teriyaki sauce in a bottle on the bottom shelf of the grocery store.  "Go ahead and eat your rice, Natalia.  Let me know if it's crunchy."  She said it wasn't crunchy, but who knows if her she would have even noticed.  I didn't have the sense of adventure to try the rice myself and find out.  I'm not feeling cynical at all by this point of the meal at all.

Felicia surprisingly enough made it through the best.  Perhaps because she didn't notice the citrus in the tempura and this was the main portion of her entrĂ©e.  That in addition to the decent sushi quality she came out of the meal with no complaints.  As I finished my meal Felicia jokingly pointed out they serve tempura ice cream there.  I glared at her and we paid the check.  We left and went to Baskin and Robbins for our dessert.  Our Ice Cream was delicious.

Wednesday, April 18, 2012

Making Kool Aid

I wrote this piece years ago and wanted to add it to my blog.  It basically explains what a Build/SCM Engineer does.

For those of you who don't know I'm a Software Build Engineer at a major tech company (I'm not going to mention its name in this post as I make way too much fun of it).  In order to explain to Felicia what I do I've been using a Kool-Aid analogy lately that has actually gotten really hilarious so I thought I'd share it with you:

I make Kool-Aid for a living (metaphorically, of course).  More specifically I mix ingredients together to get specific flavors of Kool-Aid.  And I make a tremendous amount of money doing it.

At my company, there are four primary ingredients to Kool-Aid:

  • Water (Apps)
  • Flavor (Driver)
  • Sweetener (Docs/L10N)
  • Cyanide* (Install)
For the longest time the way we made Kool-Aid involved a black box that you stick your hands into with gloves.  You mix the ingredients by looking through tiny holes in the black box.  You can only see a little bit of the process at one given time, but you can smell it just fine!  The purpose of the black box is to make sure that no dust or anything gets into the Kool-Aid and therefore affect the flavor of the nice refreshing beverage.

Now we have robotic arms in those gloves doing the work for us.  I can still look through the holes, although they are smaller, and I can still smell the Kool-Aid.

When the Kool-Aid is finished we pour it into 5 glasses inside the black box (still unable to see exactly what's being done).  This was really messy in the old days when we had to do it by hand, but luckily with robots we can give it rates of pouring and exact duration.  So these glasses end up almost exactly the right size.  After the Kool-Aid is poured, one of them gets extra flavoring, another is very small and has no Cyanide.  Yet another is just some flavoring in a cup with no water or additives.  The cup we give Dell has Sweet N 'low instead of sugar... etc...

Once this is completed we take the black box off and hand it out.  Since these are software/metaphorical cups a nearly infinite number of people can take drinks from them and we'll never run out.

Also please remember, that from beginning to end it takes 4-6 hours to make Kool-Aid.  So I can only make one batch per day.

Food for thought:  Corporations aren't satisfied with just normal Kool-Aid, so we are constantly adding minerals and hormones to our water, as well as preservatives/chemical agents to the flavoring in order to make it better.  Generally this makes the Kool-Aid taste and smell better, but sometimes it has unwelcome side effects like:

  • May cause breast development/lactation in men
  • May cause facial/chest hair growth in women
  • If the cyanide is not perfect, instead of releasing your soul for the mother ship you may die
This is why there are multiple versions (1.0 etc) and why we have bug fixes/security patches.  That's why you have to agree to the EULA and sell your soul.  That's why we have so many versions of Kool-Aid, we are constantly trying to make it better and perfect, but of course as the consumer demands prettier/larger cups we have to change our proportions and ingredients.

You may ask yourself why does it take so much to make Kool-Aid?  The answer: because of corporate red tape.  We are liable if we can't reproduce a batch of exactly the same Kool-Aid 7 years from now.

By the way: I NEVER drink the Kool-Aid.

Tuesday, April 17, 2012

Buying a Crib (and a Radiator)

Not totally satisfied with the ending here, it kind of just stops.  But that was kind of how the night went so...

Last night started like a fairly regular evening.  I was sitting at home and decided I needed to go run a few errands.  First I needed to pick up a new radiator for my Subaru, secondly go purchase the crib we've picked out for Ephram.

I start my evening at Schuck's.  I'd checked the website before I drove over to verify they had the radiator I need in stock and they did.  As I walk up to the cashier I rattle off the make and model of my car, he looks up the radiator and comes to the same conclusion I did, they have the one I need in stock.  He says "one moment" in a thick Spanish accent and rushes off to find it.  A few moments later he comes back looking slightly confused, verifies the part number he's written down and rushes off again.  He's stopped by a few customers along the way but generally spends the next 10 minutes running back and forth across the store.

Eventually, he comes back over and turns the screen towards me.  Shows me that the system says they have one in stock.  The last one they sold was in June of 2010 and they had been "promptly" restocked in September of that same year.  In that amount of time it seems the radiator had sprouted legs and walked off. He apologizes to me profusely then calls one of their neighboring stores.  They have it as well, he asks the guy to walk into the storage room and verify.  The individual on the other end seems to resist this in confusion but complies anyways.  After confirming the radiator really exists my savior dispatches their driver just for me, collects my phone number and promises me a call when it shows up.  Excellent, could have been worse, let's go and get the crib.  This is where I made my first mistake: I should have just gone home now.

We drive over to Target and walk to the infant section.  Felicia indicates the crib she's chosen, and I pick up the "Ready to Buy" tag.  After hunting down a sales associate (they all seem to disappear when you need them) I indicate the tag to him.  He says he cannot help me but radios someone else over to help.  After a few moments a woman with a little Asian girl with a Vietnamese(?) accent walks over to help us.  She scans my tag and says they don't have any in stock but the one just up the road has exactly one left.  She suggests we call ahead to verify it really exists, after my earlier experience at Schucks, I avidly agree.  Felicia begins dialing as I drive over to get us some fast food (looks like we're in for a longer evening than previously anticipated).

As we pull into the fast food restaurant of choice Felicia is still on the phone.  The conversation has been going something like this "I want to make sure you have the Walden Crib/Changer combo in stock." Pause.  "No, not the Winter crib, the Walden crib."  While on hold she looks at me and says, she cannot understand half the words this woman is saying.  I ask her to put it on speaker so maybe I can help.  I'm promptly greeted by the voice of a middle-aged Russian immigrant with a very thick accent.  She begins explaining to us that yes, they have the "Winter" crib in stock and it comes in White and Cinnamon.  Felicia then begins to explain again we want the "Walden" crib, she's placed on hold again.  I tell her to hang up, she's been at this for 20 minutes now and the Target is 5 minutes away at this point.  We'll find out when we get there.

We walk into Target and walk straight back to the baby section.  I begin to seek out a sales associate (de ja vu?).  I find a man in a red shirt.  His name tag says "Shane", neither of us realize we are about to become best friends.  I explain I'm "Ready to Buy" and wave my tag at him (the same one I had acquired at the previous store).  He says that he's actually working the service desk tonight and cannot help me but radios for someone who can.  No response.  He tries again, and again, dead air.  He looks at me and says with a wink "How many times do I need to ask for something before it gets done?"  I joke cynically about it requiring six more goes.  He gets in four more attempts before someone on the other end responds, a voice I recognize.  I roll my eyes but hope she doesn't recognize our voices and even more, that face to face we communicate more effective.

We walk over to the cribs to meet our new helper.  She immediately greets us with "Oh you on phone!" and starts mumbling some excuse for her incompetence.  We smile and shrug and walk over to the aisle with the miniature display cribs and point at the "Walden" crib/changer combo we're interested in.  She says "Oh I thought you wanted this one" and points at the "Winter" crib.  No.  We want this one.  She pulls out her radio and calls back to see if they have any in stock.

"Product code?" the man in the back room groans.
"03-08-5821" our lovely assistant replies.
"That's a display item number, I need the product number" he replies almost patiently.
"Oh, ok, um..." she pauses "03-08-5821" she rattles off.
"That's the same number you just gave me, I need the product code" he replies not so patiently.  This actually repeats 3 more times before I lean in helpfully and point at the number the sales associate at the previous store had used.  She tells me that's the same number.  I believe it's a different number and tell her so.  She looks at me angrily but reads the number anyways.
"05-09-5821" comes the new and unique set of digits through the walkie-talkie.
"There we go!" comes the voice on the other end, "we have one left back here, come and get it."

We then stand around for a few moments waiting for our crib to arrive.  This is where I made my second mistake.  I should have checked, I should have verified that our incompetent friends had done what we had so nicely begged them to do.  Instead, I pay for the crib, load it into our Escape and begin driving home.  Five minutes later my wife turns to me and says "Honey..."
"Yes?" I reply exhaustedly.
"That's not the one we wanted."

I stop the car and turn and really look at the box.  We've been handed the "Winter" crib set.  Brakes, turn signal, begin driving again, back to Target.  I spend the next few minutes screaming at my steering wheel about incompetence and the inability to grasp simple concepts like pointing and gesturing.  After a few deep breaths I am Zen.  I am peace incarnate.

Those that know me know that when I'm wronged by the customer service industry I'm the jerk who comes storming in screaming about intelligence and listening skills.  I had decided at some point in this evening that I was going to take a different approach.  I was going to see it from their perspective.  Usually in these situations the person you work with to clean up the mess didn't make the mess in the first place.  I usually feel that the associate I'm working with may not have wronged me but probably deserves my ire anyways.  They probably wronged someone else, and I am their kharmic reward.  Today, however; I'm taking a different approach; I'm going to be nice, and courteous.  I'm going to understand and be patient.  I'm going to smile, and display no anger.

My phone rings.  It's Schucks, and they have my radiator ready for pick up.  How late are you open?  I'm going to be a few minutes...

We arrive at Target; I park out front in the fire lane for easy access.  I walk calmly into the store breathing deep as I go.  I roll my shoulders and swagger up to the service desk.  My old friend Shane is here and I explain to him "I got five minutes down the road and my wife turns to me and says 'they gave us the wrong one'".  He laughs and then almost begins to cry.  He turns to me and says "I'm sorry, it's just been one of those nights you know?"  He radios back to the storage room to get someone to help me unload it from the back of my truck and replace it with the right crib.

The storage room czar himself shows up to take my order, I tell him which one I want and he promptly runs off to grab it.  A few minutes later Shane receives a call from the back room indicating that the one "Walden crib/changer" that was left was wedged up at the top of a shelf up against the roof behind a bunch of other product and was likely going to take at least ten minutes to retrieve.  Of course, why didn't I realize?  Why should it be easy to just swap it out?  This must explain the reluctance in the first place.  There must be a conspiracy of laziness at work here, they knew from the very beginning it was going to be difficult to get it out, and decided for me that I didn't want this crib.  This is not the crib you're looking for.

I smile at Shane and inform him that I'll wait.  This has been a tremendous exercise in patience for me.  If I ever wanted an excuse to scream at people for incompetence this would be it.  I take a deep breath and walk over to the water fountain.  I take a sip and walk out to the car where my wife is waiting.  I explain what's going on and walk back inside for more waiting...

After many minutes the back room man (I think his name was Paul?) comes out wheeling a much larger box down the aisle.  We check out (I had to bleed a bit more money) and load it into the Escape.  We wave and smile and get in the car ready to be gone from this place.  I drive to Schucks where they have my radiator waiting.  Paranoia strikes me; I insist they verify that the parts number is the same as the one I wanted.  It is.