Archive for the ‘Code’ Category

A Computer Science Degree Does Hurt (A Lot)

The other day I was skimming through my feed reader and I came across a post by Leah Culver called A Computer Science Degree Doesn’t Hurt (Much). Having my own opinions about CS degrees (and degrees in general) this really caught my attention. Not surprisingly, I can’t help but disagree.

Like Leah says, you spend years in classes you don’t need. Writing an assembler in assembly for hardware that doesn’t exist is not a useful way to spend time. Poring over parentheses to write an artificially-intelligent tic-tac-toe game in ((scheme)) is not either. Learning some vague high-levelisms of operating systems isn’t going to help you when your web server is serving 1000 hits per second and you’re bumping up against the open file handle limit.

The skills you need to build real-world applications don’t come in school. In fact I don’t even think a CS degree gives you the faculties to learn this stuff. I can’t tell you how many people I’ve met with a CS or CE degree that couldn’t do ANYTHING practical. I’ve interviewed them, I know this. Yes Leah, coding problems are hard. They can be fun. They’re not real though. Give your average CS major a programming problem and they’ll hammer out a solution in some obscure language. Ask them to architect the design of a high-traffic ad server with a db backend and they will run for the hills.

So why does the degree hurt so much? Because all that time you’ve spent in school is lost time. You’ll never get ahead of it. While the CS major was banging their head against some contrived optimization problem, the self-starter was re-writing a high traffic web application from scratch. While the CJ major was wasting their time in a college physics class, the hacker was learning how MySQL indexes affect in a real production database. While the CJ major is still trying to un-learn Scheme and Fortran and Java, the motivated hacker is hammering out a solution in Perl because its the best tool for the job and he’s been using it to build tools for all the years you spent in college.

Try it, get out in the real world. I absolutely PROMISE you that plenty of interesting problems will get thrown your way. They’ll come way out of left field and they will be a lot more fun to solve than something you’re going to get graded on. The tools you need to solve them are available to anyone. Especially if you don’t limit yourself to being a “programmer” who doesn’t know anything about the system underneath. Like I said, when you start banging against the open file handle limit or kernel memory limit, you’ll know you’ve arrived.

Our higher education system is flawed, most critically when it comes to fast-moving targets like Computer Science. While I doubt it will be our generation to stand up and make a change, I hope it happens soon. In the mean time, go do your thing. If you want to drop out and actually pursue something, don’t let anyone stop you.

P.S. It might be unfair to point out that Leah’s blog is toast from being dugg, but what the heck. Mine wouldn’t go down…. Got Experience?

Hey Job Sites, Quit Scraping Resumes

I got an email from a recruiter with a GREAT OPPORTUNITY today. Since I usually get amused by how poorly they’ve done their homework, I gave her my number and she gave me a call. After trying to qualify how much experience with PHP I had, I just said “Look, you’re going to have to be pretty convincing to get me to stop what I’m doing right now.” So she says, “So why did you post your resume on Monster.com, just to see whats out there?”. Hold the phone, I’ve never even visited monster.com.

I think its pretty obvious that Monster and other job sites are scraping resumes. In fact, its a perfect crime because since they charge to see resumes you can’t even verify if you’re on there or not. If I was looking for a job, I’d post my resume. By scraping resumes you waste my time and the recruiter’s time.

Check this out:

80.132.236.240 - - [01/Sep/2006:18:09:18 -0500] “GET /robots.txt HTTP/1.1″ 404 208 “-” “JobSpider_BA/1.1″

However, its asinine to actually do your own crawling for resumes. Google has done the hard work for you, just scrape Google.

Check out this badass job query, it’s even location targeted via Google’s handy .. operator:

.net+%7C+SE3+(developer+%7C+%22software+engineer%22+%7C+architect)
+(intitle:resume+%7C+inurl:resume)+55000..56999+-~jobs+~minneapolis

To you recruiters (who will never read this because you don’t do your homework): seriously do your homework before you call someone. You have my resume. Type my name into Google. Find out a little bit about me. It should be instantly clear that there is only one David Dellanave. All of my work history is right in front of your face. Quite a bit about me personally is there too if you spend a little time.

Once you’ve done your homework, don’t call me unless you’re going to come hard. Don’t ask me how much PHP and MySQL experience I have. Don’t offer me a GREAT OPPORTUNITY at $35k and I’d have to move to the bay area. If you’re going to dial my number, or email me…bring it. Otherwise you’re just wasting my time, and I’m going to waste yours. If you want to take me out to lunch, we can work something out.

Holy Crap I Found an Awesome OS X Feature

I got to thinking today that it would be neat if I could place a background image in my Terminal windows. See, I spend 99.9% of my time ssh’ed into other machines. I do all my development remotely on other boxes. It doesn’t really get confusing which box I’m on, but it can take a second to find a different machine, and a lot of times I end up popping a new Terminal and opening a new ssh.

Sure enough, Terminal.app has a background image feature. Thing is, I needed to find a way to automatically change the image based on what machine I ssh’ed into. I started digging around, and holy shit did I find an awesome feature. I had no clue that you can actually save entire Terminal sessions.

You go into Terminal->Window Settings. Make whatever changes you want. In my case I set the name and background image for a particular machine. Close that. File->Save. Select “Execute this command” and enter the ssh command for the host. Say “ssh -l david dellanave.com”. Save the file. Couple this with ssh public key authentication, and I can launch a new Terminal session with a handy background image that automatically connects and logs into the box I want. Hell yes.

And no, this isn’t my normal desktop, I setup one of my side monitors as an example. Too much sensitive stuff on the main display.

Sexworld Minneapolis

eBay’s API Rules

Most people who would actually read this know that with AuctionAds, I’ve had my head deep inside the bowels of the eBay API. Recently I sold a whole lot of 1 item on eBay and I had the daunting task of leaving 400+ feedbacks in front of me. I google’d for some tools, and not coming up with anything I just assumed the API didn’t allow feedback calls. After lamenting this to the ex-director of API at eBay when I was in San Francisco last week, he told me they DID have Feedback calls. In about 5 minutes I was able to write a script to leave 400+ feedbacks for me.

I love the eBay API.


$requestXmlBody = '<?xml version="1.0" encoding="utf-8"?>';
$requestXmlBody .= '<LeaveFeedback xmlns="urn:ebay:apis:eBLBaseComponents">';
$requestXmlBody .= "<RequesterCredentials><eBayAuthToken>$userToken</eBayAuthToken></RequesterCredentials>";
$requestXmlBody .= '<ErrorLanguage>en_US</ErrorLanguage>';
$requestXmlBody .= '<CommentText>Great eBayer! Thanks for purchasing and prompt payment!</CommentText>';
$requestXmlBody .= '<CommentType>Positive</CommentType>';
$requestXmlBody .= "<ItemID>$item_id</ItemID>";
$requestXmlBody .= "<TargetUser>$user_id</TargetUser>";
$requestXmlBody .= "<TransactionID>$trans_id</TransactionID>";
$requestXmlBody .= '</LeaveFeedback>';

Never Hire a digg-loving Developer

This, and the comments that follow it, are all the reasoning you need.