Saturday, March 31, 2007

In Which I Do Not Fly a Kite on the Beach

Ah, I should be ashamed of myself. What kind of person pays a $65 buy-in for the craziest beach party of the year, and after one night says, "You know what? I'm tired of partying. Let's go home, read a book, and maybe write a blog entry."

I'll never be able to pass myself off as a normal person now.

It's not that I have no life, it's just that I can only do the social thing so long before I want to quit wasting time, and go do something geeky and constructive with my time. Alcohol doesn't really do it for me. I like the people at the beach party. I had the time of my life. But this morning I realized I'm just not interested in getting intoxicated enough to enjoy another night with 75 loud, intoxicated college students.

Ok, maybe it is that I have no social life.

I don't worry about it. I may be crazy but it's a happy kind of crazy. I enjoy my geeky life. I just wish my fiancee could have been here with me this weekend.

My original plans for the beach party were to get an awesome parafoil kite, and spend the weekend flying the kite on the beach. Then all the girls would say, "Wow, that's a cool kite, can I fly it?" And I'd have to say, "Piss off. Get your own kite."

(Just a joke - I'm really not that mean.)

So I bought the kite. Unfortunately some bad thunderstorms are keeping everyone inside this weekend - no kite flying, or beachly activities of any kind. I can't remember whether the Mythbusters episode confirmed or busted the myth that you can get killed by lightning striking a kite, but I'd hate to find out the hard way.

(Some people have this strange idea that you should go into the water, or something, when you go to the beach. I hear it's called "swimming". I've never tried it myself - it sounds terribly unpleasant.)

The book I'm curling up with on this rainy day is titled Born on a Blue Day. It is the autobiography of Daniel Tammet, who is a famous memory savant who has Asperger's syndrome. The book makes an outstanding contribution to the body of works that includes Temple Grandin's autobiography, Thinking in Pictures, and the novel by Mark Haddon, The Curious Incident of the Dog in the Night-time. I'll post a review of Born on a Blue Day sometime this week.

Tuesday, March 27, 2007

Why Do Anything?

Personal hack projects, like the kind they write about on hackaday, are indispensable to the aspiring technology wizard's development. These are small feats of engineering done for no other purpose than for the joy of making things, or to prove that something considered impossible can actually be done. Other computer science students often ask me how I acquired the skills I have, and want to know how they might improve their own skills. "Projects!" I tell them. I advise them to choose something that interests them but lies just outside their current skillset. In doing the project they will acquire the skills the project requires and polish the ones they already have. It's also great fun!

I, of all people, should not have any difficulty justifying to myself why I do projects - right? Well let me tell you...

I have a favorite uncle who is a computer consultant. I am greatly indebted to him - my first experiences with computers were playing games at his house when I was very young, and it was also he who gave me my first "real" computer.

We definitely have some common interests, but whenever I would tell him my latest idea for some fun but purposeless project, he would reply: "That sounds interesting... but why would you want to?"

As an adult and now a computer professional myself, I've come to understand his viewpoint. Our field is simply too full of possibilities to go tilting at every windmill. You have to pick and choose your battles. A simple but mundane solution to an interesting problem is not a waste of a good problem - it is a job well done, or at least done with minimal risk.

Yet there has always been something that bothered me about the way my uncle posed that question. "But why would you want to?" The answer to it is meaningless. I don't know why I want to. I just get ideas for projects and I do them.

It is not the answer but the question itself that troubles my thoughts. No, not even the question. It runs deeper than that. It is the act of asking the question that raises the hairs on my neck.

Because you see if you start asking this question when you have an idea for project to do for fun, it only leads to self-doubt. You will never reach your full potential if you question your own motivation. I've met many geeks who regularly do astonishing things with technology. I've met many more, just as smart, who talk about great things but do not do them. What stops them?

There are many cases where self-doubt is a good thing. It is a survival trait. One day my best friend needed to fix something on the roof of his house. I held a ladder while he climbed to the roof. It was very windy. Suddenly he hesitated and climbed back down. "What's wrong?" I asked. He said, "I don't know whether I suddenly became smarter or am just chickenshit, but I just got the feeling I shouldn't be up on that roof." As he said that, another violent gust of wind shook the ladder in my hands. I think he made the right choice.

Most electronics and software projects are not nearly as dangerous as climbing a ladder on a windy day. Provided you practice good lab safety habits, the real danger is to your own ego. The fear you deal with is just fear of the unknown - "What if I can't get this to work?" "I don't know where to begin." When it comes to doing a project, self-doubt is not a survival trait - it's a stumbling block.

It's appropriate to apply the "but why would you want to?" question when evaluating solutions to a major engineering project at your day job. You'd be irresponsible if you created unnecessary work by not differentiating between things that are fun to do and things you need to do. But if you ask "why would you want to?" about personal projects that are just for fun in the first place, you will invariably find a reason not to do it. An old 'geezer' I know recently lamented to me that the downside of today's advanced technology is that no one is impressed anymore when you show them what you've been working on, because they can buy a piece of consumer electronics from Walmart that does the same thing. When anything that has a real purpose is already available, and anything you may build that is one of a kind probably also doesn't have any practical value, it begs the question, "Why do anything?"

Coming soon

Coming soon: shorter paragraphs!

Monday, March 26, 2007

New Blog

Well! My first blog that is not one of my previous two blogs. Ahem. No really, this blog is better because it is:

A) Not on Myspace. [yuck]
B) Not on a university computer that no one can access! (Long story.)

I actually wanted to create a real website, complete with project pages documenting the cool things I've built, pictures, and file downloads; but I'm too poor to buy good webhosting, and too good to use a cheap one! So I'm starting a blog instead. C'est la vie. A blog is a better fit anyway.

The name of the blog is Steely Eyed Codeslinger. I - have worked for - occaisionally work for - may work for again? - a software company called CDFA, and as it is a small company we were a very close-knit group. We'd often have some good inside jokes buzzing about, and sometimes all watch the same movies or read the same novels. At one point when I worked there last year,
the boss, Dean Bortell, was reading Stephen King's Gunslinger novels, and got the rest of us into it. I enjoyed them but I never did end up finishing the series. I wonder if Dean did? Anyhow Dean changed the word "gunslinger" to "codeslinger" to describe the kind of "just do it, fast, clean, and efficient" programmers we were (or wanted to be). I always rather liked the codeslinger / gunslinger comparison. It was more-or-less a synonym for "hacker" but without the bad connotations, and "hacker" was a generic term but "codeslinger" was our own word. During that time I was always complaining that we needed to spend more time on our architecture (think before you shoot), but after getting more exposure to software done other places, especially academia, with their current gonzo Java fad, and meeting some real-life architecture astronauts, I realized that there is a lot to be said for a one-shot, one-kill style of coding without friviality. To me, the term "codeslinger" embodies that idea. Of course, it is a sliding scale - what I might bang out without having to think about it, what I might consider a perfectly straightforward solution, might make another programmer want to hang me by my neck with my keyboard cable. You have to be both experienced and good to be a "codeslinger" - you can't just bang out code without knowing what you're doing anymore than a cowboy can win a gunfight if he can't hit anything. The important point is not that the gunslinger shoots without having to think about it, the point is that he hits what he's aiming at. When you write software for money, time doesn't magically become free of cost while you do your planning. It costs money and affects your schedule, whether you are planning code or writing code, but of the two activities, only one actually results in a program. Once you've planned long enough to know you can hit what you're aiming for, then shoot, damn it!