It’s Craptastic!

November 1st, 2008

Poop by gtmcknight

Poop by gtmcknight

Yes, this will be yet another public rant about how awful Comcast is. If you feel as though you’ve heard them all, I’m willing to bet that you haven’t heard this one.

Today was my day off. Like any day off, I slept in. When I (finally) awoke, I thought about what I should do today. Among the things that came to mind was to finally go and purchase and set up a new Tivo HD DVR. I know, at this point you’re saying, “but I already know how bad that DVR is, this is nothing new.” If you thought that and left the article, then you missed the punchline. It’s true, the Comcast HD DVR really is the be all end all of shitty DVRs. It crashes, it’s slow, it’s dumb (literally, it doesn’t understand when I say “only record new shows” that I mean I don’t want it to record reruns) and frequently needs a swift kick in the power plug. It’s also goddamn expensive at $16/month on your monthly bill. Tivo’s monthly service costs less than that, so I figured I could save some money (yes, not yet since I have to recoup the $300 for the Tivo hardware first) while having a superior DVR experience.

In order to use the Tivo HD DVR with your Comcast service, you’re going to need a cable card. The cable card handles all of the signal decryption stuff going on in the Comcast supplied DVR. In order to get one, you have to either go into a Comcast office or have them send a technician out to you. Since getting a technician would take days and I’m impatient, I opted to visit a nearby Comcast office to pick one up. That’s where the first problem occurred. I went to the Comcast website and tried to find local offices where I can get equipment. Unfortunately, you can’t find those offices on the Comcast website. You can however find “Payment Centers“. That didn’t sound like what I wanted, still…I decided to check them out. Maybe a local Payment Center doubled as an equipment place. Searching turned up three nearby offices. According to the website, the only equipment available for pickup at the offices was Cable Modems. So…I called 1-800-COMCAST. After faking out the phone system (hit zero twice to immediately go to customer service) I was routed to someone who informed me that the nearby Milpitas office could give me a cable card (even though the web site doesn’t say that they can, evidently Comcast doesn’t want you to know about cable cards). So began my journey.

I drove over to the Milpitas office, which is hidden way in the back of a shopping center. I walked in and a woman at the counter (with a freshly pierced hand, ouch!!!) asked if she could help me. I informed her that I was in the market for a cable card. She took my phone number and looked up the account. She asked if it was under my wife’s name, which it is, and I said yes. She then told me that because the first cable card is only free to people who don’t already have the HD DVR, it would cost an additional $7 (roughly) and that Lisa (my wife) would have to authorize Ryan Kennedy (me) to pick up the cable card for our account. She would have to call 1-800-COMCAST and give them her authorization over the phone. Stunned, I asked the woman if Lisa were to call in the next 15 minutes, could I just turn around and walk back in the office and get my cable card. She told me that I could.

So I walked outside, shaking my head, and tried to call Lisa. Busy. Must be on a conference call. No worries, I had other errands to run including the grocery store and Best Buy (to get the Tivo). I’ll just hit those to kill some time and then try calling Lisa again. So I drove over to the Milpitas Nob Hill, where I discovered just how much one store can completely screw up store layout. Seriously, who puts the peanut butter way over by the milk in the refrigerated section? Half an hour later, I emerged victorious from Nob Hill. I stowed the groceries in the trunk, got in the car and dialed Lisa again. Still busy. Well, off to Best Buy I suppose.

It was on my way to Best Buy that I started having a self-rant. I wondered (out loud) why it is that I can call up on the phone and order pay-per-view on my wife’s cable account but they won’t let me walk into the store and pick up a cable card. That’s when inspiration struck. I thought to myself, “what would Kevin Mitnick do?” When I arrived at Best Buy, I parked and got out my phone and dialed 1-800-COMCAST. Once again, I wielded the double-zero to great effect, immediately putting me in touch with a live person. I informed them that I needed to authorize someone to pick up a cable card for my account. They asked for my account number and I told them I didn’t know it. They asked for my phone number, which I supplied. They asked if the account was in my wife’s name and I responded that it was, so they asked me to verify with the last four digits of her social security number. I gave the operator the numbers and she asked who I’d like to authorize to pick up the cable card. I gave them my name and she told me I was all set.

I ran into Best Buy and purchased the Tivo HD DVR (this is another story entirely), put it in the trunk and headed back to the Comcast office. I walked up to the desk with the same lady I had talked with maybe 45 minutes earlier. “Welcome to Comcast, how can I help you?” Seriously? Did you have THAT many people in here since I was here last? I responded, “I’d like to get a cable card for my Tivo.” She asks for my phone number, which I give her, and she again brings up that the account is in my wife’s name, to which I respond “yes.” She then tells me, “you have a zero balance on your account”. We stare at each other for a minute and I, finally, respond “uh…okay.” She continues to stare blankly at me so I say “what’s the problem?” She tells me “there’s nothing to pay on this account.” At this point I figure she’s fucking with me, so I remind her that I just want to get a cable card. “Oh, I thought you said you want to pay your bill.” In my mind all I can think is, “holy crap…finally something to blog about after a few dry months.”

At this point she goes into the back, procures a cable card and brings it out and verifies that I’ve been authorized to pick up a cable card for my wife’s account. With cable card in hand, I leave the building, shaking my head all the way back to the car.

The moral of the story is (Comcast, you ought to be taking notes by this point), don’t be lame. The lady in the office could have saved me a lot of time if she had simply done exactly what the person on the phone did and ask me to verify the last four digits of Lisa’s social. Instead she completely passed the buck to their 1-800 phone operators, either because she didn’t know that she could ask for my wife’s social or because she didn’t want to be bothered with work on a Friday. Either way, Comcast you look like clowns.

UPDATE #1!!! (November 2, 2008): After activating my cable card, my internet access went down. Unfortunately, Lisa happened to be working from home at the time, forcing her to go into the office on Saturday because she had some pressing work to finish up. I called Comcast and ended up with the most clueless representative I’ve ever had to talk to. She scheduled a truck to come the next day (I’m not sure why they can’t remotely fix a something that they remotely broke). Anyway, the technician showed up the next day and found out that they’d somehow added a second cable modem to my account. As a result, no internet access for Ryan. After an hour of futzing around with their system, they finally got everything working.

UPDATE #2!!! (November 15, 2008): Today I went to return the HD DVR, making the transition to the HD TiVo complete. I took it back to the Comcast office in Milpitas and explained to the guy there why I was returning it, explaining that I was going to be using the HD TiVo from then on. He took it, scanned it, gave me a receipt and told me I was all set. Thinking Comcast got something right for once, I left for home.

When I got home, however, I noticed that all of my cable channels were…black. No Comedy Central. No Cartoon Network. No BBC America. No HD HBO. I went to their online help and started chatting with a support representative. They informed me that my cable card had been deactivated and that I would have to call on the phone to get it reactivated. At this point I was convinced Comcast had put me on a “make sure to completely fuck this guy over when he tries to do anything” list. I called 1-800-COMCAST and, after some fighting the automated answering machine, managed to get to a live person. I explained what had happened and asked if they wouldn’t mind reactivating my cable card WITHOUT taking out my internet access this time.

The technician took my account information and seconds later the channels sprung back to life. She asked me to check my internet access and I verified that it was still functioning properly. We have no idea what happened to deactivate the cable card, however I was just happy to have finally found someone at that company with half a brain.

I don’t get how Comcast stays in business given how much money they must be pouring into support to offset the low quality of their remaining workforce. Then again, people are dumb enough to pay $16/mo just to have their awful HD DVR.

Californians - vote yes on prop 2

October 14th, 2008

Vote YES! on Prop 2

Vote YES! on Prop 2

I am not a political person, however this past weekend I found myself walking in the Farm Sanctuary walk supporting California Proposition 2.

Proposition 2, put simply, means to improve conditions for farm animals in California. Farm animals today are kept in confining cages that prevent the animals from moving, stretching, lying down and turning around. The proposition is very simple:

In addition to other applicable provisions of law, a person shall not tether or confine any covered animal, on a farm, for all or the majority of any day, in a manner that prevents such animal from: (a) Lying down, standing up, and fully extending his or her limbs; and (b) Turning around freely.

These aren’t earth shattering demands. Nobody is being asked to become vegetarian. It’s a modest improvement on the quality of life of these animals. If you want to understand more of what goes on in these factory farms, I encourage you to watch this mini documentary by Mercy For Animals exposing the conditions inside these farms. Keep in mind, if you eat eggs THIS IS WHERE THEY’RE COMING FROM. Look closely at the bloody, lice-covered eggs and realize that you can do something about it by voting YES on proposition 2 in November.

Open Hack Day - the hackumentary

October 7th, 2008

During my time at Yahoo! I have been fortunate enough to meet and become friends with Ricky Montalvo (aka “kick ass movie guy” at Yahoo!). I first met Ricky at the Adobe MAX conference in Chicago where Ricky filmed my AIR Mail presentation.

At the recent Yahoo! Open Hack Day in Sunnyvale, Ricky worked with a crew of three filming his hackumentary. I was fortunate enough to be interviewed for the film and I was delighted to see myself (pimple and all) a few times in the trailer (at 1:02 and again at 1:41). I can’t wait to see the whole thing, but in the meantime have a look at the trailer.

Open Hack Day 2008 Wrapup

September 15th, 2008

In the past, I’ve given two long accounts of the Open Hack Day’s (2006, 2007). This time I’m going to keep it pretty short.

My Talks

I gave two talks. The first one went well, no drops in internet access (paying Ash’s assistant $50 to keep him busy during my talk really paid off). I lost internet access during my second talk, but was saved by Allen Tom and his EVDO-powered laptop. The talks seemed to be well received and generated a lot of questions.

My Job

I won’t mince words, I have hated my job for the past twelve months. Those who follow me on Twitter know that I’ve been a miserable person for quite some time now, frequently venting my frustrations loudly. I’ve simultaneously considered quitting the company, transferring internally and extended leave as solutions to my unhappiness.

It’s difficult to reconcile this attitude towards my job against my attitude leading up to the two previous hack days where I was proud of what I was working on and wanted to share it with the world. So much has changed since London, personally and professionally. It’s hard to accept so much change in such a short period of time, especially when it’s had such a huge impact on my mood.

Photo by riverspring

Photo by riverspring

I did, however, turn a bit of a corner in the past week. As hack day approached I actually found myself happy to be at work. I was enjoying what I was doing and I was looking forward to the next day. I was working twice as hard and getting four times the enjoyment and the only thing that had changed was that I was working towards hack day.

Which brings me to…

Mo Kakwan

Photo by Jinho.Jung

Photo by Jinho.Jung

I will never forget the night I spent with Mo Kakwan at hack day. No, get your minds out of the gutter. It wasn’t like that. It was better. Mo is a hack day legend. Friday night, after the Girl Talk concert, Mo popped into the room where I was stationed for the evening. He was curious to know what was going on and what I did. We chatted for a little while and he explained what he was hacking this year.

After a while, he asked if he could hang out in the room with several of us from Y!OS. Without blinking I told him, “of course”. For the next 17 hours (give or take) I was witness to the magic. Mo used me, mostly, as a sounding board for ideas in the early hours. In the later hours I helped him debug some issues in his hack. Throughout, I could see Mo go through all the hack day stages.

Mo started out passionate about the idea and quickly got to work. He was hammering out code, making things work. Before too long, he’d run into problems. After some quick thinking, he routed around the issues, determined to make the hack work. Hours later, as fatigue was kicking in, more problems. With the lack of sleep looming, you could see Mo getting frustrated as each problem mounted. He discovered he had a lot of work left to do and time was not on his side.

I crashed for two hours on the floor from 6:30-8:30am. When I awoke, he looked bad. The early morning had taken it’s toll on him. He’d hit the wall. He looked unsure of himself, disappointed that he might let everyone down by not outdoing his performance at the 2006 hack day.

Determined not to let that happen, I jumped in to lend what help I could. I pumped him up when he seemed down, helped to diagnose the snags he ran into and ran to get him help when I didn’t have an answer (thanks, Zach!). At around 2:00, only an hour before the presentations would start, he hit pay dirt. His virtual mosh pit sprung to life as physics engine-driven moshers hopped and bumped on stage with our recently digitized voices playing in the background. The joy on his face was incredible as we shared the (for me, anyway) most painful high-five, ever.

The joy of the hack is an amazing thing. That moment where your brain clicks in and says, “holy shit, after all that I can’t fucking believe it works!” It’s like the top of Everest to a climber. You get there cold, tired, beaten, exhausted and near death…but you will never trade that moment for anything else in your life. I relived that moment through Mo on Saturday…and realized how much I’ve missed it.

For the last twelve months I haven’t had my Everest. I’ve just been walking around the mountain…cold, hungry and near death. I need hack day. Not just one of them, I need lots of them. In fact, I need every day to be hack day. My happiness and my sanity depend on it.

So, how do I find a way to make every day hack day? I guess that’s my next hack.

Pulled pork to vegan in four months

August 18th, 2008

Back in February I made pulled pork for our Super Bowl party. It was a defining moment as an omnivore, the culmination of 30+ years of meat eating. Four months later (mid June) I made the switch, cold turkey, to straight up vegan.

I don’t miss meat, I don’t miss eggs, I don’t miss dairy. As long as I go to places that have several tasty, vegan options I’m quite happy. You really can’t go wrong with Thai (which I love) and Lisa and I have been able to find a few really great vegetarian/vegan spots. I’ve been going strong for more than two months now and I’ve never once had an urge or a craving to give in to.

My mom asked me the other day how my “vegan diet” was going. I don’t think she understands that it’s not a diet, it’s a way of life. It’s not just about what you eat, it’s about everything you buy and use. Lisa and I have been going room by room, switching everything we own to vegan. Just today I got my first two pair of vegan shoes: the Simple Shoes ecoS-Hemp and the Sno Tire-Hemp.

Of course, just because I don’t consider it a “vegan diet” doesn’t mean I haven’t lost weight. I’m down almost ten pounds since mid-May, almost 2/3’s of which is body fat.

Eat your own dogfood

July 2nd, 2008

Now we know why Laura is doing so well on the growth charts. - by booleansplitIf you’re developing a web service of any kind, eat your own dogfood. Build something using your web service. In fact, build many things using your web service. Do it early and often before you release your web service to the public. Find out what sucks about your web service, what’s broken and what’s simply downright inconvenient about your web service and then fix it. If you find you want to murder someone while using your own web service, imagine what your consumers will think of it.

All too often I find myself running into web services that are inconvenient to use from a developer standpoint. Often it’s because the people implementing the web service build whatever’s convenient for them. Spend some time building applications using your web service, make a list of the things that were harder than they should have been and then go fix them. Your users will thank you.

Photo by booleansplit

Yahoo! Address Book Web Service released (finally)

June 4th, 2008

When we first released the Yahoo! Mail Web Service, many people asked me if they could get access to the Yahoo! Address Book through it. I’m happy to say that today you can finally access the Yahoo! Address Book via web service.

This has been a really long time coming and I think it’s great that the Yahoo! Mail Web Service finally has the complimentary service it’s been crying out for. Also, it’ll be nice when certain, nameless social networking applications stop asking me for my username and password to import my Yahoo! Address Book.

Customer service starts with the customer

May 9th, 2008

On Thursday I received a very strange phone call on my work line. Caller ID indicated only that the call had been transfered to my desk from elsewhere within the company. In the past, this has almost always been the calling card of recruiters. They find my profile on LinkedIn but don’t have my phone number. They know I work at Yahoo!, however, so they call the receptionist and ask to be transfered to me.

This time was different, however. I answered the phone, “This is Ryan.” Booming from the other end of the line I heard, “RYAN” in a strong southern accent. What followed could only be described as 5 minutes of nonstop railing against Yahoo! Customer Care. This gentleman had lost the password to his Yahoo! Mail account and over the course of the last week felt he was being given the runaround by our support technicians, going as far as to say that they had been “rude and hateful” towards him.

Working on his last nerve, he somehow found out about Yahoo!’s “postmaster Ryan K”. I’m nearly certain he’s referring to Ryan Knight, the “Ryan K” who took over the Yahoo! Mail blog after I hung up my evangelism cape. He managed to find the number for the Yahoo! Sunnyvale office and asked the receptionist to connect him to “Ryan K”. There’s more than one, so I can only guess that the receptionist rolled the dice and transferred him to me. Fortunately, he found a sympathetic ear.

After listening to him throw the customer care group under the bus for 5 straight minutes, we finally got to the part of the phone call where he would let me participate in the conversation. I asked some questions to collect as much information as possible. I tried to explain some of what might have happened during his dealings with customer care. He explained how important his email account was and how frustrating dealing with our customer care group was. He wasn’t happy and he wanted to make sure I was keenly aware of that fact.

After about 10 minutes on the phone with him, however, something happened. He came to know that I understood his frustrations and that I was equally disappointed with the experience he had been going through. In that instant, the phone conversation immediately lightened up. We each cracked a few jokes, shared a couple of laughs, established some common ground. Over the course of the next 5 minutes I collected a little more information and told him that I’d work my backchannels to get him the help he needed. It was the full 180. He started the phone call with spite and venom and he finished the call hopeful that we’d have this situation resolved for him. He was appreciative and, dare I say it, a bit happier.

Whether you’re dealing with 250 users or 250 million users, you can’t service your customers without talking to them. I mean really talking to them, not handling them with a phone in one hand and a script in the other. Talk to them, get to know them, understand why they’re upset and then make it all better.

Activator: Pimp my buddy list

May 1st, 2008

Neal’s Web 2.0 video is up on YDN now. This is his YOS talk and includes a sneak peek of my new project, Activator, at about 30:20 into the video.

True to it’s name, Activator is here to activate your social graph. It’s meant to help out with “cold starting” social networks. Many times when you first arrive at a social network, you have no friends and no clear means of how to find your existing friends. Activator’s charter is to find those people for you and surface them so you can quickly and easily add them. I’m still trying to figure out what’s the best way to write openly about Activator without getting myself into trouble. For now, check out Neal’s video and you’ll see a quick screenshot of what Activator may look like when released.

My new Yahoo! project

April 24th, 2008

Well, I guess now that Ari and Neal have totally totally let the cat out of the bag about YOS, I finally get to talk a little more openly about my new project: Activator. There’s a short paragraph in that article that mentions Activator:

The activator engine handles the combining of different relationship groupings, such as the Yahoo Mail e-mail address book, Yahoo Messenger contacts, Flickr friends, Yahoo 360, and Yahoo Mash, Sample said. Yahoo will be careful to protect user privacy and won’t apply the information without user consent, he added.

That’s not a great description of Activator, kind of leaves you wondering what the hell it actually does. As soon as I figure out how much I can talk about it I’ll post more. In any case, when you hear them talk about Activator you can think of me.

Code coverage != code quality

April 20th, 2008

My current project has a new requirement that in order to be feature complete we must reach 80% code coverage with our unit tests. At first, this seems like a good idea. You want to ensure code quality. Unit tests can help with that. So you figure you’ll come up with a way of measuring how much of your code is being tested. Soon, however, deadlines get tighter and actual features need to be finished. The code coverage is short of the required 80%. So you take the following code:

   if(unreachable) {
      doTheUnreachable();
   }

   int codeCoverageRequired = 80;
   cout < < "Feature complete requires " << codeCoverageRequired << "% code coverage" << endl;

This code has 4 executable lines of code, only 3 of which are being executed. You’re only at 75% code coverage. So you make the following change:

   if(unreachable) {
      doTheUnreachable();
   }

   int codeCoverageRequired = 80;
   cout < < "Feature complete requires ";
   cout << codeCoverageRequired;
   cout << " % code coverage";
   cout << endl;

This code has 7 lines of executable code, 6 of which are being executed. Now you’re at 86% code coverage. You’ve boosted your code coverage numbers by 10% simply by adjusting some lines of code. The quality is no better, but your code coverage is higher.

You can also play games by under-reporting the total lines of code in your project. As it turns out, this is easier than you might think. The code coverage tool we’re using (gcov) appears to have an issue with not reporting the lines of code in files that don’t get tested at all.

By gaming the system you’re able to give management the warm, fuzzy feeling that the code quality is high when, in truth, the opposite may true. Even a high code coverage number without gaming the system doesn’t necessarily mean that the code quality is high. Take the following, for example:

   size_t function( void *ptr, size_t size, size_t nmemb, void *stream) {
      ((string*)stream).append(ptr, size * nmemb);
      return size * nmemb;
   }

   string requestUrl(string url) {
      static string buffer;

      CURL* ch = curl_easy_init();
      curl_easy_setopt(ch, CURLOPT_URL, "http://unclehulka.com/ryan/blog/");
      curl_easy_setopt(ch, CURLOPT_WRITEDATA, &buffer);
      curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, writehandle);
      curl_easy_perform(ch);
      curl_easy_cleanup(ch);

      return buffer;
   }

If you call requestUrl() from your unit test, you’ll end up with 100% code coverage, however this code is as buggy as it gets (see the ’static string’ declaration).

The lesson is if you want to ensure code quality, use something that actually measures code quality.

Krav Maga - Day 7

March 27th, 2008

Yeah, okay…totally lagging in posting this. Day 7 was this past Saturday (3/23). We started out slow with our warmups. Running around, touching shoulders, dropping and doing pushups and situps. We eventually partnered up. I joined up with a well-tattooed guy about my height but, perhaps, a little bigger than me. We did a bunch of 1-2 punching combinations with the heavy pads. The best part about my partner is that he barked. Not literally, but the noise he made as he exhaled with every punch sounded just like a dog. At one point, Lisa looked around wondering who let the dog in the gym. Then she realized the dog was beating the living hell out of my blocking pad.

We eventually got back to knees. This time I partnered up with another Ryan. The name was the only thing we had in common, he was a head taller than me and much, much stronger. When we did knees he was either throwing me 3 feet backwards or 1 foot in the air. That being said, it was more enjoyable than the last guy who did a number on my jaw. We focused a lot on the knees that involve a hold. In the first, you grab your partner by the tricep and shoulder and then ram your knee into them. In the second, you lock your hands behind their neck, pull them in towards you and throw your knee into their face/chin/chest.

The conditioning is getting a little better. I’ve been doing some conditioning on the side. Using a deck of cards, I turn cards face up one-by-one. Every red card is pushups, every black card is squats. Aces and number cards are 1-9, face cards are 10 and jokers are wild…20 pushups or squats. This past Monday I got through 30 cards in 30 minutes, finishing 95 pushups and 120 squats. Doesn’t sound like a lot for 30 minutes, but it’ll get your attention. I can’t take credit for this hellish workout. Credit for that goes to Matt Furey’s book, Combat Conditioning.

Speaking of books, our school carries Complete Krav Maga, which features pictures of one of my instructors (Kirian). I’m going to pick up a copy soonish.

Krav Maga - Day 6

March 19th, 2008

I skipped Krav Maga on Saturday last week (trying to give my thumbs more time to heal up) so this past Monday was day 6. I’m a little behind in posting this, so hopefully I remember everything.

As usual, Jesse worked us over pretty good from the start. I have to say, my conditioning is improving. I still get tired and it’s still difficult to keep my hands up through long drills. But it’s getting easier. I’m no longer doubled over gasping for air during drills. That’s really the strongest measure of what three weeks of classes has done for me. Technique is great and all, but I need to get back in shape.

We did a lot of punching and kicking combinations as a warm up. Eventually, Jesse turned us loose doing hammer punches. Imagine you’re hanging a picture on the wall and you’re putting up the nail. Clench your fist like you’re holding a hammer and hammer the nail into the wall. Now take the hammer out of your hand and replace the wall with your partner, holding the heavy bag. Generate power from the legs and twist the trunk, transferring power to the shoulders and drive the bottom of your fist into the bag as hard as possible. When done right, your partner will wonder if you’re about to stop their heart with these blows (I was getting concerned when my partner was wailing on me). We started out with just the right and progressed to left-right combinations. Periodically Jesse would signal for us to go “all out”, hammering with the left and the right in rapid succession, as hard and as fast as we could. It’s a pretty devastating blow. Imagine leading with a kick or knee to the groin to double your opponent over and then driving a hammer fist into the back of their neck. Yeah, brutal.

We also did some work on getting out of side headlocks. Imagine someone comes up to you from the side and wraps their arm around your head and neck from the side. They pull you to one side, knocking you off balance and torquing your neck in the process. The counter is to go with it. If the attacker comes from your left and pulls you that direction, pivot on the ball of your left foot, swinging the right foot in the direction the attacker is pulling you. When your right foot lands, you should be perpendicular to your opponent and as close to them as possible. The free right hand swings downwards and then up, into their groin. Strike at least once, preferably two or three times. As this is happening, the left hand goes up, eventually coming between your head and your opponent’s head. With the left hand, you smash the bridge of the nose with your palm and grab the chin with your fingers. Pull back, causing the head to tilt backwards. At this point, your opponent is wide open for a range of different attacks. Punch the face or throat. Better yet, bust out that powerful hammer punch you just learned.

It’s great fun. I was paired up with Nate, a level 2 student that I’ve worked with before. He’s big and not afraid to smack me around a bit (other people seem to think you’re made of glass at times) and he’s really good at telling me everything I’m doing wrong. After a few minutes I was getting the hang of it, but then class was over (pitty).

My thumbs are still pretty torn up, but are getting better. I managed to get out of this class without any new injuries, although one of my partners managed to poke me in the eye pretty well during one of the drills. No biggie, I made sure to put a little extra mustard on the hammer punches to return the favor. ;)

In other Krav Maga news, we were given handbooks by the school. Among other things, it details what we’ll learn at each level. Let’s just say that the first item on the list for the green belt curriculum (level 3) is head-butting. Just 10 months to go.

Krav Maga - Day 5

March 10th, 2008

Before you ask…yes, I plan to blog every day of Krav Maga.

After the class on Saturday, I was looking forward to a slightly more tame Monday class. Jesse, the Monday instructor (and Saturday assistant), usually spends more of his class going over technique. That means things slow down a bit giving you more time to catch your breath. Today however…he had some surprises for us.

Things started out pretty normal. Some running (with ~16 people in a crowded room, running becomes interesting) along with pushups and mountain climbers to get the blood moving. After that we partnered up. I was teamed up with the 14 year old in the room, not his lucky day. If he was lucky he weighted around 130 pounds…roughly 100 pounds less than me. We started out with one person on all fours. They then piked up so they were on their hands and toes with their butt up in the air. The other partner then military crawled underneath them to the other side. One there, the partner on the ground dropped low, allowing the other partner to jump over them back to the starting position. The person on the ground goes back into the piked position and we start over. At one point, the instructor blew his whistle and we went either all under (back and forth) or all over (back and forth). It was insane, I’ve got the carpet burns on my knees to prove it.

When that was over, one partner again got on all fours. The other partner then sits on their shoulders, hooking their feet around the other partner’s knees on the ground. The partner on top leans back and sits back up…kind of like doing a situp. This is where the weight discrepancy came into play. I started on top, leaned back and the kid’s arms buckled and I flattened him like a pancake. Fortunately I caught myself with my arms and managed not to pop his skull. Not wanting a lawsuit, they found me a larger partner.

When that was done we went back to punching and kicking drills, this time moving around the classroom to get used to throwing punches while on the move. Usually we stand in one place and throw them, so this was a nice change of pace. These punching and kicking drills still kill me. My arms get tired and it becomes difficult to keep the hands up, which is essential in any combative confrontation (protect your head at all costs).

We wrapped up with more choking. I pitty the fool who tries to choke me from the front. He’s in for a rude surprise, roshambo style.

I feel like my conditioning is improving. I won’t say it’s good, because it’s not. I’m still the fat guy huffing and puffing (sometimes wheezing) with his hands on his knees. But I’m huffing and puffing a little less and I’m going on three weeks without missing a day. I dare say I’ve even dropped a little bit of fat over the past week, according to the scale anyway.

Important safety tips when handling json-c

March 10th, 2008

We’ve been using json-c internally for parsing and generating JSON in my new project. It’s a pretty nasty interface to work with, so I’ve been considering putting a prettier face on it for C++ developers. Today I sat down to do that. Instead, I spent many hours allowing json-c to repeatedly win games of roshambo.

It started out simply enough, a simple class to wrap the json_object:

#include <string>
#include <json/json_object.h>

class JsonObject {
    private:
        json_object* obj;
        JsonObject();

    public:
        static JsonObject parse(const std::string& json);
        ~JsonObject();
};

There wasn’t much to it at this point, but I had enough to set up my Makefile to check that everything compiled properly. Sadly…it did not. While the compilation step was successful, linking wasn’t so fortunate:

libjsonwrapper.so.1: undefined reference to `json_object_put(json_object*)’
libjsonwrapper.so.1: undefined reference to `json_tokener_parse(char*)’

I spent some time (and by some time I mean most of Sunday) futzing with the Makefile, making sure json-c was properly installed, compiling my own version of json-c, checking different hardware architectures and operating systems…all with no luck whatsoever. I even looked at some other code that we have that uses json-c, checking out the Makefile to see what that code was doing that I wasn’t.

At around 8:45pm I took a break and went for Sunday bowling (Homestead Lanes does a special on Sunday nights, it’s great…you should go sometime). When I got home, I dug back in. Still no dice.

So I went back to the other code we’d written that uses json-c and looked at some other things. Finally, I happened upon it:

#include <json/json.h>

It’s subtle, but including json.h instead of json_object.h makes all the difference in the world. At first I didn’t want to know why, I was just mad that it mattered at all. Obviously json.h is some aggregate header that keeps you from having to #include every little file you need. But clearly it’s also performing a little black magic along the way that does something to affect linking. Ready to lose my shit, I dug into the header:

#ifdef __cplusplus
extern "C" {
#endif

#include "bits.h"
#include "debug.h"
#include "linkhash.h"
#include "arraylist.h"
#include "json_util.h"
#include "json_object.h"
#include "json_tokener.h"

#ifdef __cplusplus
}
#endif

Whoomp there it is: extern “C”. If you include json.h it does the right thing and makes everything inside of json-c use C linkage when compiling C++. If you don’t include json.h and instead include one of the files that it includes…then nothing uses C linkage causing the linker to FAIL.

Thanks json-c for consuming a day of my life that I can never have back.

Krav Maga - Day 4

March 8th, 2008

So, today was…different. Like last Saturday the instructor really stuck it to us. We ran in a big circle for a while, switching directions on demand. Seemed almost tame. And then his inner masochist woke up. Five jumping jacks, five squats, five burpees, five pushups, five mountain climbers…repeat. We did that for what seemed like five minutes.

We finished up with that and then paired up. I found someone roughly my size, although he was definitely a few levels above me. We did the usual: punch and kick each other. Then they decided to teach something else…knees. It started out simple, knee the other person at 50%. Then the instructor gave the word: grab your partner around the neck and go to f’ing town on the pad. It seemed okay at first, the guy was pummeling the pad (and the back of my neck) but I was okay. Then he started landing blows high on the pad, sometimes slipping just past the pad to land a shot on my chin. Just to mix things up, sometimes he’d go low on the pad and nail me in the stomach…not far from the jejunum I’d guess. It was awful, pad or not.

We wrapped up doing an A-B drill. Three person teams. One on each end of the gym and one person in the center. The person in the center listens for the instructor to yell “A” and “B”. For “A” they run to one side and punch the hell out of the bag. For “B” they run to the other side and kick the hell out of the bag. The instructor periodically throws in some twists, switching right in the middle of running from one to the other. At one point, the instructor switches the “A” pad holders to knees. While the person is kneeing the hell out of the pad the “B” pad holders run up behind the person in the middle without them knowing. Now when the instructor calls “B” the person turns around and immediately starts punching the pad. It was pretty greulling.

Now, at the end of the day, all I feel is my jaw. I think all of the knees that missed the pad and clipped my chin did a bit of damage. Nothing permanent, I hope.

Krav Maga - Day 3

March 3rd, 2008

Today started my second week in Krav Maga classes. I’m starting to feel like I can keep up better physically with the class now. I’m not saying I don’t double over, gasping for air in the middle of a drill…but I do it less often now. Of course, the class today was less heavy on the insane, nonstop drills. We stopped more often for the instructor to demonstrate a technique.

We started out doing running drills. The heavy bags were brought out (more about those later) and we had to slalom them (in and out) down one end, sprint back and slalom the next row of bags. On the instructor’s signal, we were to stop, find a classmate and do our “touch the shoulders” drill (try as hard as you can to touch your opponent’s shoulders while preventing them from touching yours). When he signaled again, back to running. At one point, he turned out the lights and even strobed them to simulate adverse conditions. He likened it to being in a brawl in the middle of a carnival. People and obstacles everywhere with limited visibility.

We spent a bit of time on punches, working on the fundamental 1-2, left jab, right jab punches. We worked with the tall, heavy bags for the first time today (they have this awesome track that the bags hang from, allowing you to move the bags around the room). We did some simple 1-2 combos, eventually going to power punches (hard as you can) and finally all-out (hard as you can, fast as you can). This is exhausting stuff…when you’re done it’s hard to keep your hands up. In between rounds of that, we were also doing pushups.

We also did a drill in teams of three. One person held the large punching bag, one person did everything they could to demolish the bag with their fists, while the third person did everything they could to keep the puncher away from the bag. This was insanely exhausting. I ended up with two guys that were both larger and more fit than I was. By the end of the rotation (everyone going through each assignment once) I was dead. It was great.

We also spent some time on close in combat with the elbows. This is the first time I’ve done elbows in the class. We started with what the instructor called #1, which involved striking across the body with your right elbow at about chest/chin height. Then we moved to #2, which strikes away from your body with your right elbow (standing straight, look right and throw your elbow in that direction). We then moved to #7 (I guess #3 through #6 will come later), which is the elbow straight down (imagine your opponent doubled over in front of you and deliver a blow to the back of the neck/spine with your elbow).

Once we were comfortable with those, we went back to choking drills. This time, instead of breaking the grasp and kicking the balls (like we did both days last week), we fall back two steps, establish our fighting stance, raise our right arm straight up and do the #7 elbow, breaking the choke. From that position, we went immediately to the #2 elbow, aiming for the face of the person choking us. I got to practice on Lisa, which was fun. Whenever we do the choking drills, she always ends up with red marks on her neck from my thumbs. I imagine being pulled over by the cops on my way home with red marks on her neck and my knuckles bloodied up. That should make for interesting conversation.

Another week or two of this and I think I’ll be ready to up it to 3 days a week. But we’ll see how I feel tomorrow and Wednesday. In any case, Krav Maga is awesome. If any of this sounds at all interesting to you, I highly recommend it. Great workout, practical self defense, cool instructors and all-around good time.

Krav Maga - Week 1, Day 2

March 3rd, 2008

Saturday was our second Krav Maga class. Unlike Monday, which was a Level 1 class, Saturday is an “all” class. I think it means all levels are welcome and they’ll pick some lowest common denominator routines to go through. The class was a bit larger than the Monday class. You could really tell when we were all lined up doing pad exercises, there just wasn’t room to move. Hopefully that’s not what it’s always like. I’m not crazy about really crowded gyms.

We did a lot of the same exercises as the Monday class. This time instead of being pummeled by a much larger classmate, I was matched up with an older but similarly sized gentleman. Of course, he’s been taking the class for the last nine months. I figured he would be easier on me with his punches than my Monday classmate…wrong. He seemed to take great joy in pounding my chest with his fists. I found it amusing that he was happily pounding the piss out of me while wearing his “I’m a vegetarian” shirt.

I think I fared better than I did on Monday, although I still get winded and need a short break to catch my breath. I was sore across the top of my back and shoulders Sunday morning when I woke up. Other than that, no issues, however. That’s a good sign since I have a quick turnaround to get to the next class on Monday. All in all, I’m really enjoying it. The workout really kicks your ass and you’re learning practical self defense.

Krav Maga - Week 1, Day 1

February 25th, 2008

Inspired by a recent episode of Fight Quest, Lisa and I went to check out a local Krav Maga school on Saturday. We sat through 30+ minutes (out of 3 hours) of a belt test for about 14 students. While not nearly as intense as the Fight Quest footage was, it was still pretty brutal watching them go through their warmup routines.

Tonight Lisa and I had our first class at the Academy of Self Defense in Santa Clara. They gave us two free weeks to check it out, so we dropped in on the 7pm Level 1 class. Let’s just say that Level 1 is only referring to the competency level, not the intensity level. The class started out with us mounting punching bags on the ground, pounding our fists and elbows into the imaginary face of our enemy. When the instructor blew his whistle, we rolled on our side to our backs, grabbed the punching bag handle and proceeded to wail on the virtual assailant’s face with our fists. That went on for about 5 minutes.

After that, we paired up for more work. I paired up with someone slightly taller but considerably larger than myself. Mistake. We took turns punching the bag that the other was holding up. I landed some strong rights, but my left is weak by comparison. We switched and my partner took turns pummeling the bag with his ham sized fists, driving the air out of my lungs with every punch. Seriously, I’m pretty sure the pad is just there to make sure I don’t get a bruise or a broken sternum because it wasn’t doing much to prevent his powerful blows from pushing me backwards.

After a few minutes of that, we started running around like mad. Literally. One of us ran with the pad while the other ran with nothing, sprinting through the crowded classroom, dodging the other students. When the whistle sounded, the person with the pad stops and the other person seeks them out to take out some sweet aggression on the pad. Once again, wind being knocked out of my lungs. On a related note, don’t let the pad come away from your chest…or else it just gets repeatedly driven back into your chest by your partner. Also, don’t let the pad dip…or else it will be driving dinner out of your stomach instead of air out of your lungs. Words of wisdom by Ryan Kennedy.

There were some other drills. Voluntary amnesia is suppressing those memories in the hope that forgetting the misery means I’ll go back for more. We did some choking. One partner chokes the other. The person being choked has to simultaneously break the choke and kick the other person in the balls. The choking might explain the amnesia.

That brings up a fun topic…rules. There are none. In other martial arts there are things you don’t do. You don’t gouge the eyes. You don’t strike the back of the neck. You don’t kick the balls. All of those are the bread and butter of Krav Maga. Crushing the testes of your opponent is how you start the fight. Most martial arts start with a bow. Krav Maga subscribes to the roshambo school of starting fights. This lack of rules is really what draws me to Krav Maga. There are no formalities before the duel. There is no referee. There are no points. You win if you don’t die. It’s reality based fighting, this is how it’s going to be if you’re attacked on the streets or on a battlefield. Bow to your opponent? Not unless you want him to kick you squarely in the face.

We rounded out the night with 10 jumping jacks and 10 burpees. Well, the class did. I was able to do about 5 jumping jacks and prevented myself from performing any vomitees. It was brutal. My hands are chewed up from the punching (my poor, delicate, programmer hands) and the physical exertion is flat out exhausting. I loved it, I’m going back on Saturday and I’m going to do it all over again. With luck, I’ll loose some weight and get back in shape while learning some practical defense techniques.

Wanna join me? It’ll be great.

Smoking in a pot

February 3rd, 2008

Inspired by the likes of Alton Brown and my friend Jed, I took on the terracotta pot smoker this weekend. Why? So I could make pulled pork for my Super Bowl party.

Aside from getting totally smoked out by it and having to jigger with the lid to get my 7.25lbs Boston butt in there, it’s gone well. The only real hitch has been the thermometer. The first thermometer I used, a replacement smoker thermometer was registering temperatures below 200F. I was about to give up when I figured I’d try another thermometer and it read much higher numbers (around 219F). I’ve switched to that one and the 2-3 hour smoke is underway.

It’s like cooking with MacGyver…it’s awesome.