Saturday Jenn and I spent the majority of the day at pyrotechnics training, an annual class put on by Western Display Fireworks. Western is the company we work for on the Fourth of July when we head up to Clatskanie and do the fireworks show. You have to attend a training class within the three years prior to your license expiring, and since our license expire next year, we figured this would be a good opportunity. Always good to refresh yourself on the laws and safety regulations.

LEGO Imperial Star
DestroyerSaturday night on the way back from pyro class we stopped by my parents’ place to visit. Mom picked me up a Lego Imperial Star Destroyer for a song at a sale she found so I got that from her. She also found this cool CSI Facial Reconstruction Kit, so she passed that along. Fun!

Sunday was chore day. We got up reasonably early and I went around the house to all the windows and re-caulked everywhere that the caulking had split due to the house settling. That meant all four corners to most of the windows and many spots along the top of each window, necessitating the removal of the blinds. It was a heck of a job and took close to four hours to hit every window in the place, but I got it done and it’s looking good again. Took a tube and a half of caulk, which is a personal record for maximum caulk use at a given time. Heh.

I had planned on watching The Empire Strikes Back and putting together the Lego Imperial Star Destroyer in the afternoon, but since I had run out of caulk (I only bought one tube), we had to run out to the store and while we were out we ended up getting Dance Dance Revolution Universe for Xbox 360 with a Target gift card we had left over from Christmas…

…which, of course, led to my evening consisting of the finishing up of tasks and an hour and a half of DDR, effectively routing my ability to also watch the movie and play Legos. I will have to commence Star-Wars-ing this evening when I get home.

DDR on Xbox 360 is a welcome addition to our home, though. Jenn and I were just talking about how we don’t go to the gym because we’re lazy and it’s boring, and we realized that the one time we did end up losing weight, we were doing an awful lot of DDR. The problem up until now was that, frankly, I’m a Gamerpoint Whore so not getting achievements while I game became patently unacceptable, regardless of the fact we have like three different DDRs for PS2. Now I can have my cake and eat it, too - DDR on Xbox 360 gives me my DDR fix as well as the ability to get Gamerpoints.

In a similar vein, the purchase of DDR was my impetus to pull the receiver out and rewire things so the Xbox 360 now goes through it, finally giving me digital surround in games and media. (Yes, I now realize what I was missing by not having this hooked up and it makes me want to go back and play all the games I’ve already played because it’s that much better.) It was going to have to happen anyway if I ever get off my butt and make the media server I want to, but having to get back there and futz around with the wiring just wasn’t on the top of my list of fun things to do. As it is, my receiver is at its limit with inputs, so the Xbox 360 is now plugged into the CD player optical-in jack and the CD player has been moved to the last remaining input - the “video auxiliary,” which is on the front of the receiver and only offers a standard RCA stereo-in connection. It means I don’t get the digital clarity when I listen to CDs anymore, but that’s not to big of a deal since I don’t listen to CDs very much. Plus, if it’s killing me that much, I can always listen to them through the DVD player rather than the CD player and I’ll get that digital quality back. What does bug me is that it looks hokey - the wires run from the back of the CD player, down the back of the cabinet, and along the shelf next to the receiver to plug into the front of the thing. Not much I can do about that, but it doesn’t overwhelm me with elegance. It does make me think about what I’m going to want in my next receiver, though, and the number one determining factor is going to be quantity of inputs.

At some point over the course of the weekend I put a nice gouge in the right lens of my glasses. Not really sure how it happened or when, but when I was cleaning them last night, there it was. It’s not in my direct line of sight so it’s not bugging me too bad, but if I look through the bottom half of the lens, there’s a bit of blur because of it. It’s probably time to get new lenses anyway.

personal comments edit

Technically Reginald Braithwaite started it, but freaking Atwood blogged it and now almost every blog in my RSS reader is talking about it, so I’m going to throw in my two cents in and then I’ll shut up.

The controversy: Lots of people who claim to be programmers actually can’t program.

What kills me is that this surprises anyone. It’s sort of like blogging that “lots of people who see the sky claim it is blue.” There are a lot of incompetent people, folks, but no one will admit they’re the incompentent one. Did you ever notice that everyone else on the road is a bad driver except you?

The point Atwood was making is that it’s kind of sad that people who come out of school with these great qualifications or have these amazing resumes or whatever can’t actually do what they claim. If you give them a simple problem to solve, they can’t do it. (That’s the “FizzBuzz” thing: Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz.”)

Hanselman has a pretty good response

  • that some features are inherent in the person (“When you’re putting together a basketball team, you have to remember that you can’t teach height.”). I sort of buy that and sort of don’t. There have been successful shorter basketball players. From personal experience, I know that I got shafted out of having a career in 3D animation and modeling because art houses believe you can teach an artist computer science but you can’t teach a computer scientist art (even though I had a portfolio, I also had a CS degree and not an art degree, so no one would touch me; times may have changed since then).

Phil Haack brings up an interesting corollary

  • that it’s fascinating how many people solved Atwood’s puzzle in the comments (utterly missing the point) and got it wrong because they didn’t read the requirements thoroughly. That’s just as bad as not being able to program.

But the best response I’ve seen, and the one I agree with most, is a tiny blurb from Mike Gunderloy on today’s Daily Grind:

…about 90% of the “essential .NET knowledge” and “write this code at an interview” questions I’ve seen (not specifically on Scott’s weblog, but around in general) are beyond me, despite a successful programming career that spans a couple of decades now. There are other skills besides tucking stuff away in your head. Dogged determination, a few basic techniques, brute force, and good skills at looking things up can go a long way in this industry - not that those are the most common skills in this industry (or any other) either.

So there are really two issues here: What can you do and what do you know?

From a “what can you do” standpoint, I think programming at the interview is a must. If I’m interviewing someone for an ASP.NET job, I like to see that the person can create a page that takes some information in and echoes it back. It doesn’t have to be anything special, just something to indicate you know your way around. (Bonus points if you can do it without the visual designer.) I try not to have people “code on a whiteboard” because, frankly, I’m an Intellisense addict myself and rely on that and the compiler to tell me when I’ve accidentally used the “Count” property instead of the “Length” property or what-have-you. If you can pseudocode it, I’m good.

The “what do you know” question is more tricky. I find that the facts in your head are generally the things that are relevant to projects you’re working on at the time and some remnants from past projects. For example, I’m not a COM guy. I got my CS degree on Solaris and my first couple of jobs were in LAMP land, so, no, I really can’t tell you about the ins and outs of why COM needs this or the limitations of COM’s foo. I’ve never needed to know, and frankly, if it came down to it, I’d go look it up, so there’s really no point in having it memorized.

I can’t tell you how many times I’ve been neck deep in some complex situation in ASP.NET and thought, “Hey, this would be a great interview question!” No, it wouldn’t. It wouldn’t be good because it’s only really pertinent to the odd edge case situation I’m in, and it doubly wouldn’t be good because I’ve been working with that exact thing for the last 80 working hours. If I were to ask myself that same question in a year, would I remember the answer? Probably not.

This reminds me of the best teacher I had in college, the guy who taught the computer algorithms class. Lots of kids didn’t like him because of his teaching style. At the beginning of the class, he’d give a brief intro of what you’d be seeing. Then he’d put up a slide that described an algorithm - sorting, searching, whatever - and you’d copy the slide down. He’d ask for questions when everyone was done, and swap slides. Rinse and repeat. Tests were entirely over the slides and the book, and the test was open-book, open-notes.

Right now you’re asking what the point was, aren’t you?

The point is this: There is no time in your programming career where you’ll be working without access to reference material. You need to be familiar with the concepts and aware of what’s going on, but there’s no point in memorizing things you’ll be able to easily look up when you need them.

Pragmatic.

That’s probably the most brilliant thing any professor ever presented to me in my entire college career. (That, along with my vector calculus professor admitting that we’d only really need to know vector calculus “out of curiosity” - that most of us would never use it again.)

So in my mind, the answer to questions like “What is the maximum amount of memory any single process on Windows can address?” is “Google.” It’s trivia. When something like that becomes relevant to what I’m working on, I’ll go look it up and that’s the point at which it will be fresh in my head. Somehow I don’t feel like not having that information at-the-ready makes me less of a good developer.

What I’m more interested in, as far as “what you know,” are conceptual things. Do you understand the various concepts of object orientation? Can you compare and contrast strong typing vs. weak typing? Can you talk to me about garbage collection and why it’s important (or not important)? Which languages have you worked with and what were some benefits and drawbacks of each? When you get to applying for a specific position (e.g., an ASP.NET developer), can you answer some simple things like what the events are in the page lifecycle? Difference between a handler and a module? Things that you’ll be using every day. I might not ask you to code a handler or a module, but you should at least know what they are.

Of course, if you can’t at least pseudocode an answer to the FizzBuzz problem or, given a decent IDE, actually write an application that does it, don’t bother applying.

web comments edit

I use Google Talk and like it as a reasonable chat client, but the primary use I have for it is the mail notification for Gmail.

To get to your Gmail inbox from Google Talk, you right-click the icon in the Windows task bar and a little menu pops up and lets you choose “Inbox.” The problem I’m having is that it doesn’t always quite work. You not only get the Google Talk menu, but also the standard task bar menu:

Google Talk focus
issue

If you left-click the task bar first, then right-click the Google Talk icon, everything works. If you dive in and right-click the Google Talk icon directly, this weird focus thing happens. What gives?