Wednesday, August 26, 2009

Technical Certifications are worthless

Technical certifications, especially in the IT field, are totally worthless. Why? All a technical certification prove is that you were able to buy a couple of exam prep books, cram them in a week or two and take an exam. My monkey (if I had one) could do that. I can't tell you how many times I have interviewed certification-carrying candidates for open positions at my company only to find them severely lacking in thorough understanding of computer science. I don't care that you have an MSCD or MCP or whatever it's called these days if you don't know foundational concepts in computer science and database design.

For example, I don't want someone who just knows that you store things in a hashtable using keys. I need you to know why a hashtable is better than an array in some cases. I need you to know when an interface is better than an abstract class; when to use recursion; the different kinds of joins and when to use each one; I need you to understand how crucial source control is to our field. Don't just tell me "some other guy handled authentication in my last project". That's not good enough. Don't tell me "I don't remember the different authentication types supported by ASP.NET". And definitely don't say "Well I haven't used recursion"

And please please don't put "wed services" on your resume unless you are wedding singer. I know it may seem minor but typos really show you don't care about your work. If you did, you would run it through Word and proof read your own resume!

So if technical certifications are worthless, what's the alternative? Well how about you show me your dedication by getting a 4-year degree? At the very least that shows that either you really studied or you were able to pull off your charade for 4 years. Either way, you are better than the guy who can't explain basic stuff but has an armful of certifications.

Monday, August 24, 2009

Health care reform

Why would someone that's against the so-called public option on the grounds that govt can't do anything right be proud of having gone to Virginia Tech or another public university? Why would the very same person feel secure knowing the men and women of the [insert juridiction here] police department are on the watch? Last time I checked, the federal govt was in charge of immigration (bad job), airport security (ok job), emergency response (ok job) and military defense (good job).

I don't know which health care system we'll end up but I know a few things:
  • our current system is broken, ineffective and shameful. If we want to claim "best country in the world" status, we should be ashamed of a system where people are forced to marry Canadians for healthare. We ought to be ashamed of a system where every body (except for the very rich) is just one major health issue away from bankruptcy
  • if we don't cover the uninsured in a structured way, we'll cover them in emergency room fees
  • a system where your doctor orders unreasonable tests just because he wants to cover his ass when you eventually sue him...that can't be the best in the world
  • a system where doctors pay through the nose for malpractice insurance premiums (which are then passed on to patients)...that can't be the best in the world
  • a system where a little boy had to die from minor dental problems (which escalated because his mother couldn't afford dental care)...that can't be the best in the world
  • it's hilarious that the GOP are now being fiscally responsible when it comes to healthcare for Americans. Meanwhile, when Bush wanted to wage a war of revenge and a futile exercise in nation building...then the GOP didn't worry about the deficit. If I have to leave a mountain of debt for my children, at least it's better for the money to have been spent taking care of Americans. At least attempting to take care of anyway...should health care reform fail spectacularly.
  • Obama's handling of this healthcare agenda shows his inexperience.
  • How badly do you think Bill Clinton wishes the power of the internet and social media was available during his presidency?

Tuesday, August 18, 2009

Why I hate Nigerians


Ok maybe I don't totally hate Nigerians but I really really hate having to engage in any business deals with people that I call "overt Nigerians". The guy that answers his phone and proceeds to greet you in Yoruba (a Nigerian language) just because he hears your name is Tunde. The guy that goes all "my brother this" and "my brother that". Anytime I go against my natural instincts (or I am forced by circumstances) to use these guys, things inevitably go awry.

The latest moron that I had to deal with was the DJ for last saturday's Ikomo ceremony (baby outing) for our twins. Not being a party guy, I asked a friend of ours for recommendation and he recommended this dude (I'll call him DJ-certainly-not-christmas aka DJCNC). So my wife set things up with DJCNC to do 2 things:
  • DJ the party
  • arrive (like the other vendors) at 7pm to set up since the party starts @ 8pm
For these 2 things, this dude's fee was $100 per hour. I don't know what DJs go for these days but $100 per hour is not chicken change (I might have even been fleeced but we didn't have the luxury of time to shop around much). I sent him a check for a $200 deposit and he cashed the check. So now I knew we had a DJ for the event.

Fast forward to Saturday evening around 5pm-ish...we are setting up the hall. The photographer is setting up his equipment and he overhears us saying DJCNC is our DJ. So he says to me:

"Are you sure DJCNC is your DJ? I know he is playing in Fort Washington right now"

My first thought was "oh shit! We forgot to finalize with the DJ!". Then I remember that he had cashed my check.

Me: "Oh really? Are you sure we are talking about the same guy...his name is [real name redacted]"
Photographer: "Yes. My partner is working with him right now and they are playing at a Nigerian party"
Me: "Hmm, that's interesting. I'll call him"

So I spent the next hour and half trying to reach this DJ to no avail. His phone was immediately going to voicemail which meant 1 of 3 things:
  • his phone was dead
  • his phone was turned off
  • he was screening his calls
So now I am royally pissed. It's 8pm and guests are already arriving. Everything is in place except for the DJ. We are now playing a 1-sided phone tag where I'll call him, leave a message and find out from my photographer's partner that the DJ is still in Fort Washington (30 minutes away). So I call my brother-in-law who is a part time DJ. I tell him "please please bring your DJ equipment".

To cut a very long story short, the DJ arrives just as my brother-in-law was unloading his DJ equipment. DJCNC walks in, doesn't apologize and asks "Do you want me to set up?" I am like "hell yeah you f**king idiot! Do you think I send $200 checks to random people for no reason?". Outwardly, I tried to remain calm ('cos you don't want him playing shitty music) and told him to set up. I also made him aware that he was 2.5 hours late (he arrived at 9:25pm instead of 7). He gave me some bullshit excuse that were obvious lies but I didn't call him on it.

At the end of the party, I decided to pay him for 3 hours work even though he only worked for 2.5 hours. And still the dude didn't apologize once for
  • being horrendously late
  • being incommunicado
Fortunately, everything else went well. As for DJCNC, his performance wasn't earth-shatteringly good. Even without the lateness issue, I doubt that I would have referred him to others. Add in his lateness...well you have this blog which is a definite anti-recommendation. If you need a DJ for your party, DJCNC isn't your guy.



Friday, August 14, 2009

The Redskins are fools

  • What killed the Redskins last season was the break down of the offensive line. The defense ended the year ranked 4th in the league, behind only Steelers, Ravens and Eagles. That means the Redskins defense ended the year ahead of the Giants D with their vaunted d-line. Granted the Redskins D didn't make much game-changing plays (28th in sacks and 17th in INT). But given all that, you would think the pressing need this offseason would be getting O-line help, right? Well that's conventional logic. Around here, we buck convention. We went out and got Haynesworth (DT) and Orakpo (DE/LB). We re-signed DeAngelo Hall (CB) and signed a FA punter. For the O-line, we signed a former Redskins that didn't play last year in Buffalo (not exactly a team with a stout o-line).
  • For the first pre-season game, conventional logic say you give your starters enough reps to get in a rythm, then you play your backups. Against the Ravens yesterday, we allowed Jason Campbell to pass just 6 times (3 of which were incomplete)! Meanwhile, Joe Flacco (a second year QB) was out there slinging passes like a multi-year pro-bowler.
  • To further buck convention, we decided to hold out a few of our starters. Santana Moss, Clinton Portis, Albert Haynesworth, Carlos Rogers and Randy Thomas weren't even dressed for the game. Granted Thomas was hurt, but why not put your $100 million man (Haynesworth) out there to see what he can do in your scheme? If you are scared of injuries, wouldn't you rather he got injured now than later?
  • Conventional logic says you can't take anything away from preseason games. But I think that's not true. This was the Ravens first game since last year (and they've had less time since they went deeper in last year's playoffs). They were more physical, sharper, crispier (save for a few penalties) and to add insult to injury they blanked the Redskins and put up 500 yards of offense (to the Redskins' 196). This from a team that's predominantly run-first. So yeah, theRedskins can take away 2 things from this game: 1. we suck and 2. unless things change, Jim Zorn better be looking for a good realtor.
I know it's only the first preseason game but I think Redskins fans are in for a world of disappointment this year. Being Redskins fans, we ought to be used to it by now!

Wednesday, August 05, 2009

Linq, SQL, CAML

So I went to a presentation about Linq yesterday. The presentation was given by Scott Allen. Before I get into my impressions of the content, let me say a few things about the packaging. You know how they say first impressions count? Well Scott Allen either didn't know that or he just plain ignored it. I wasn't impressed with the dude's appearance. But, before you crush me with accusations of superficiality, I have to say 5 minutes into the talk I was already impressed with his content. His tone was just right and the approach he took to explaining Linq (and even the use of "var" which I, hitherto, thoroughly despised) was excellent.

That said, I am sold on Linq-to-everything but sql. Some of the language enhancements that were made to support Linq are things I have always wanted to do. For example, you have a list with several items and you want to find items that match a criteria. How do you do it? You write a loop that has a lot of what Scott called "ceremony" i.e. fluff:

List matches = new List();
foreach (MyType x in myTypes)
{
if (MatchesCriteria(x))
{
matches.Add(x);
}
}

With C# 3.0, you just write
var matches = from t in myTypes
where t.StartsWith("svchost")
select t;

Imagine being able to query an xml document, a web service and a collection of objects with the same syntax.

So we are all in agreement that Linq is great for querying objects. However, where it breaks down for me is when you start using Linq to query modern day databases. I have a few problems with LinqToSQL
  • Microsoft's implementation of LinqToSQL (and I suspect all other implementations) uses queries generated on the fly. Sure SQL Server will optimize and cache queries for you but how do test the generated queries? How do you know the queries being generated by Microsoft's LinqtoSQL provider generates sound queries when it has no prior knowledge of your database?
  • When you use LinqToSQL, you give up all the power of SQL for the simplicity of Linq's syntax. For trivial applications that might be a good trade off (after all who wants to bother with stored procedures, views and functions in a trivial app). But for non-trivial apps, I think you need the flexibility and power of SQL with a C#
  • Ignoring the efficiency issue, when you start mixing queries with C# code, isn't that just a recipe for maintenance nightmare? Imagine how much harder it'll be when renaming a table; adding new columns, dropping existing columns, modifying existings columns...if you've got C# code directly accessing those objects.
  • What's so wrong with plain old SQL? Attempts to replace SQL with a 4th generation language-based query language will almost always fail. Why? For one 4th generation languages are geared towards you (the developer) coming up with the algorithm to retrieve data. Whereas, SQL is all about tell the RDBMS what to get and it figures out the best way to get it. When you start writing queries in C#, C++, Java, XML...well to me it looks like you are trying to do too much. And you just might end up with CAML, which is a truly awful query language native to SharePoint.
I get why Microsoft might have felt the need to introduce LinqToSQL for completeness sake. After all, you can't talk query with talking SQL. But I fail to see how one could use LinqToSQL in non-trivial applications.

Sunday, August 02, 2009

Fatherhood Tales

One of the ubiquitous things in our living room, in addition to all the baby changing stuff, is a notebook that we call the "baby book". This notebook contains a record of our babies' lives. We record who ate what, when and how much. We record who was changed when. We record who weighed and measured what when. We record who pooped and when. We record who took what medicine and when.

Why all the note taking? When we first got home, we had all these time-sensitive things we had to keep track of:
  • babies need to eat every 3 hours
  • babies need to poop once a day (or we call the doctor after 2 days)
  • my wife had to take 2 medicines: one every 4 hours and the other every 6 hours

At first, I tried to use the alarm on my cellphone. So basically, I would set the alarm for 3 hours after feeding the babies. That quickly turned out to not be sustainable. So we came up with this simple idea of a notebook with 3 columns:
  • who did it
  • what was done
  • when it was done
Now if I want to know when the babies last ate, I just look it up. If I want to know why Dara is so cranky, the baby book tells me she hasn't pooped in 1.5 days. If I want to know when my wife can take another dose of motrin, I just look it up. If I want to know what Toni weighed at the last doctor's visit, the baby book tells no lies.

Of course, the accuracy of the baby book depends on accurate and timely data entry. So to visitors, it might look like a crazy and perhaps over the top thing to do. But so many times, the baby book has come to our rescue. Without it, keeping track of the little things would have been overwhelming.