The magic of programming

It’s the Fourth of July, and I’m enjoying life at the beach.  What better time to muse on my blog!  And so, two posts in one day – enjoy!

For many years now, I’ve thought that programming bears a strong resemblance to the medieval view of magic.  In writing a program, we create strange incantations in arcane languages that channel forces far from normal human experience.  And if we make even a minor mistake in creating our spell, disaster can occur.  We summon demons to do our bidding, but if we make a mistake in the summoning, the demons are unleashed.

A bit of history: the first time the Internet really achieved mainstream recognition was when Robert Tappan Morris released his worm into the world.  It crashed the Internet back in 1988, years before there was a world-wide web, and the Internet made the front pages of the nation’s newspapers for the first time.  To learn more, see the Wikipedia article on the Morris Worm.

But here’s the thing: Robert Tappan Morris did not intend to do all that damage.  He just wanted to write something that would highlight the vulnerability of many of the computers on the net, that would slip into those computers, slowly propagate, and that he could eventually point to and say, “Look at how insecure we are.”

But Morris’s worm had a bug, and it spawned off copies of itself far faster than he intended.  The damage done was not because the worm did anything terrible: it just sucked up all the resources on the computers where it ran because it forked off copies of itself in an out-of-control fashion.  The graduate student Robert Morris had made a minor mistake in his summoning, and the result was an Internet catastrophe.

Does that remind you of anything?  Imagine Morris as played by Mickey Mouse, think of those copies as animated brooms, and pretend that the crashing servers are water levels rising higher and higher.  Pretty quickly have the Sorcerer’s Apprentice sequence from “Fantasia.”

Morris is now a tenured professor at MIT.  Mickey is no longer an apprentice – he is now the master wizard, training others.  I have no information on the state of his plumbing.

Posted in computing thoughts | Leave a comment

We are the wizards

Any sufficiently advanced technology is indistinguishable from magic. – Arthur C. Clarke

For the vast majority of humanity, we have achieved Clarke’s vision: our technology is now indistinguishable from magic.

Do you understand what happens when you turn the key to start your car?  Do you know why flipping a switch fills your room with light?  Do you know how that little box that you are staring at brings you these words?

You may at that.  There may be no mysteries for you in these technologies.  But if that’s the case, you are one of the wizards.

We engineers are the wizards of the modern world.  Because if our world operates on magic, and it does, then it needs wizards to keep that magic working, wizards who understand the arcane forces, wizards who extend the power of our magic in new ways.

That is our job.

We are not the kings.  We do not generally run the great corporations or governments, we serve them.  We are the Merlins to the Arthurs, to the presidents, senators, and CEO’s.  (Though there is the occasional Wizard-King – Bill Gates springs to mind.  And while some view him as a wizard-king in the mode of Sauron, I’ll admit to a secret joy in the fact that the richest man in the world is one of us.)  We do not command the world.  But we do in a very real sense run it.

It’s a wonderful thing to be a wizard.  It’s a wonderful thing to master these technologies.  We can do great things for the world, and have plenty of fun doing it.  And as people gaze on these wonders with amazement, we smile, knowing that these are our gifts to the world.

What a great time it is to be a geek!

Posted in computing thoughts | Leave a comment

A very geeky family moment

My daughter, home from college, plays Dungeons and Dragons.  She is playing in a campaign over this summer with some college friends who happen to live in the area.

My son, who is now living in Charlottesville, used to play with these same people.  But he’s two hours away now, too far to stop by for a nice little game of D&D on the weekend.

Enter technology.  My son got himself a webcam yesterday.  He’s going to play remotely – at his computer in Charlottesville while the group here in NoVa play near a webcam.

We did the test of this last night.  The connection worked great.  (Video over AIM has some problems in my house, for some reason.  But Skype worked just fine.)

At around this time, I got an IM from my wife, who is in New York this week at an art seminar.  She has a Macbook with her, with a built-in webcam.  I IM’d her through installing Skype, and video IM’d with her from my Powerbook.

So, at one time, we had my son vid-conferencing from Charlottesville to my PC, while my wife was vid-conferencing from New York to my Powerbook.  And here I was in the middle, seeing and talking to them both real-time.

What a wonderful world we live in!

Posted in computing thoughts, family | 1 Comment

A criticism of Ruby

In general, I’m really loving working with Ruby on Rails.  (For the non-technical, that is a programming language and development environment.)  I’m astonished at how fast I can build things with it.

But I do have one criticism.  I am frequently finding one certain type of bug that is really annoying to me.  A bug that would not occur in Java or C++ or another strong-typed language.

I  write a valid Rails program.  It fails with strange errors somewhere in the bowels of the Rails infrastructure.  I scratch my head in great puzzlement.  Finally, I realize what happened: I used a variable name that was already used by Rails.  Something like “url” – something that you would expect that I could use.  Ruby never warned me that I was overwriting a Rails variable – that’s perfectly valid.  (Java or C++ would give me a compile error, tell me that the variable already exists.)  Instead, with Ruby things just break.

I change the name of my variable to something a little less general, something like “story_url”.  Suddenly, things work perfectly.

Not only does Ruby on Rails give me no warning, but I have yet to see a set of complete documentation of semi-reserved words (words that I should not use in my Rails application, though the Ruby language allows them).

How annoying!

Posted in ruby on rails | 1 Comment

A criticism of Google

This past week, I’ve been spending my time installing software of various sorts for my new job.  Much of that has involved doing new things, including finding documentation for things that I need to do online.   In the course of this, I’ve run into a limitation of Google.

Much of the software that I’m installing is relatively new, meaning written within the last five years.  And as popular open source projects, they’ve undergone frequent updates.  And the documentation is not all that great.

But there’s been plenty of people who have shared their experiences in blog posts and others.  And so you’d think that Google would be a great resource to find stuff.

But Google has a big problem in these cases.  One of the major components of Google’s search algorithms is link traversal.  A page that has many links to it is rated higher than one that has no links.  But older pages are far more likely to have links to them – after all, they’ve been around longer for people to find and link to.

As a result, Google search results tend to skew to older pages.  Which is a big problem if you’re looking for information about something that has been around for a little while, but has changed much in that time.  The resources that you find are likely to be out of date.

You can go into advanced search and limit results by date.  But I’d like to see all results, just skewed to the most up-to-date data.

Which goes to show, even the mighty Google is not the perfect solution for all problems.

Posted in computing thoughts | Leave a comment

Curse you, entropy gods!

The gods of entropy have been having much play with the Dzikiewicz family of late. Within the last month, we’ve had breakdowns of a washing machine, car, and AC unit. Today I’m dealing with the biggest issue yet.

Julie got a call last night from one of the neighbors at the beach. Apparently water was streaming out of our house. That could be something relatively minor, or something relatively major. So we got her father to stop by the house to report further.

Alas, it was something relatively minor that has relatively major consequences. The toilets here have a habit of clogging up. The last time we were here, apparently we left the upstairs toilet clogged, and the flapper not completely closed. Had someone been here, the result would have been that we would have heard the toilet running in an annoying manner, someone would have noticed it, and we would have fixed things. But we were not here, not for the past two weeks. So the toilet overflowed and water continually dripped out, onto the floor, into the floor, onto the floor below, into the floor below, and onto the carport below that.

So, a relatively minor issue, but we’ve now got sopping carpets on two floors, water stains on a ceiling, and buckled hardwood floors in one section of the house. Which is particularly annoying because those hardwoods were just replaced about a month ago.

And here I am, sitting here in the beach house, having come down to meet the plumber and now waiting for the water-clean-up people. And cursing the gods of entropy – let them hover over someone else’s house for a while!

Posted in family | Leave a comment

Launching my baby bird

This has been a season of great changes. But this weekend was probably the greatest. Julie and I packed the van and drove one bed, four chairs, seven cartons of miscellaneous items, and our son Andy to Charlottesville, where he is working this summer.

This is not Andy’s first summer working in Charlottesville. He has, in fact, worked there for the past three. But this time, he is doing it as a college graduate, and he is not planning on returning to our home as a resident. Our little bird has left the nest.

I have mixed feelings about this. There’s the obvious fact that I’ll miss Andy a great deal. He has grown to be a fine young man, with a lovely dry wit and a wide range of interests and talents, and I always enjoy his company. His absence certainly makes our home a poorer place.

But I have always viewed this as the end goal of parenting: to bring a new adult to the point where he is ready to face the world on his own, capable enough to take care of himself and others, and decent enough to make the world a better place by his presence. In this, Julie and I have succeeded, and I feel a great deal of pride.

After a long day of heavy lifting, Andy took Julie and me out to dinner. It’s an old tradition amongst our circle: when your friends help you move, you treat them to a meal afterwards. Andy’s been on enough moves to know the drill. And it was a fine moment to see him step up into that responsibility, to treat us to this last meal together before he goes off to make his place in the world. A little funny, to be the one treated. But a joy to be the guest of such a good guy.

Posted in family | Leave a comment

Making it up as we go along

In the start-up life, there is no infrastructure, and your opinion on everything matters.

Think of all the things that are provided for you in a big company.  There are standard offices, someone buys furniture, internet connectivity is provided, the telephones just work.   From the perspective of most employees, all of this just happens.

But at a start-up, nothing just happens.  We have to figure out all of this stuff, and everyone can offer an opinion.

Take internet connectivity as an example.  Back at AOL, the internet just worked.  I don’t know who set it up – as long as the socket in my wall worked, I was happy.  But here, we have no MIS department, so Michael is in the corner arranging DSL or a T1 or some other connection with providers.  And if I have an opinion (which in this case I don’t, as long as our connection is fast enough), it will be carefully considered before making any decision.

Or a matter on which I do have an opinion: office space.  We haven’t actually got offices yet – we’re squatting in a conference room in our lawyer’s office.  So we all get to go visit some possible spaces.  What’s more important – avoiding a bad intersection, or the nice sports club down the hall from one suite?  Being walking distance from a number of good lunch spots, or a slightly lower rent?  We all get to have our say.

Once we pick out a space, we all decide how to lay it out.  Go for a windowless private office, or have a nice big bullpen for development?   Have a nice desk, or perhaps a big overstuffed chair?  (Yeah, I’m considering not having a desk at all.  I work in a recliner when at home – I’m in one right now.  I like the working-in-a-den style, and there’s no reason why I shouldn’t do it here.)

Plus, one lovely coincidence.  Our current leading candidate office space is at 8260 Greensboro Drive.  That probably does not mean much to you, but it was the location of my office in my first job out of college.  Julie and I even belonged to that sports club I mentioned, way back when Julie was doing water aerobics working around her first pregnancy.

Posted in job | Leave a comment

Andy is graduated!

I’m actually fairly remiss here. Last weekend, Andy, my oldest son, graduated from U.Va. And somehow, I never posted. Congratulations Andy! Needless to say, we’re very proud. Also needless to say, it seems a bit strange to have my oldest no longer in college.

We had arranged for Andy and Kate (both of whom were students at UVA this past semester) to extend their stays in their dorm rooms through the graduation. As a result, Kate and Diana stayed in her dorm room, while Julie and I stayed with Andy in his. Andy’s room was not as cramped as you might think, as he had one bedroom in a suite of two rooms. Julie slept on the couch in the living room of the suite, while I slept in the other bedroom.

In order to show that though graduated he can still worry his parents, on Friday night Andy told us that he was heading over to the psychology department to work on some things that he’s going to be doing there over the summer. (Andy’s lined up a summer job at the university, one that shows promise of being extended into a full-time job past the summer.) He told us not to wait up for him.

At around five AM, I woke up. Andy was not in his room. Julie and I conferred, and around 6:00 AM I wandered over to Gilmer Hall, home of the psych department. The doors were locked, but I must have looked suspicious, trying to get into Gilmer, as the university police soon showed up. I explained that I was looking for my soon-to-graduate son, and that he was working all night before graduating in Gilmer Hall. (Yeah, right, I could see them thinking.) So the three of us wandered through Gilmer’s halls, looking for Andy. And all the while, I entertained a series of questions that left me with the realization of how little Andy tells us.

“Who is he working for?””Someone in the psych department.”

“Who?”

“I don’t know.”

“What office?”

“I don’t know.”

“Does he drink?”

“I don’t think so.”

“Does he have a girlfriend?”

“I don’t know.”

We never did find Andy. (Later, he claimed that he had been behind a locked door working in an office. I suppose I’ll have to trust him on this.)

Anyway, he’s graduated now, with a BS double-majoring in Computer Science and Psychology. Go enjoy some pictures of the occasion, on the web at: http://www.flickr.com/photos/jdzik/

You can recognize Andy easily. He’s the graduate wearing jeans and a t-shirt under his gown.

Posted in family | Leave a comment

Off to a good start

So yesterday, I’m sitting in an all-day meeting with my fellow starter-uppers to nail down details of how we’re going to work together and what we’re going to build. A lot of requirements discussions, diving deep into the product definition. And a lot of fun – there’s nothing quite like starting with a blank sheet and beginning something brand new.

It’s a meeting much like many that I’ve been in over the last several years. But at some point, I realize that there’s a big difference this time. Absolutely everyone who has a say in what we’re going to build is in the room. We don’t have to check with anyone else to make a decision, there is no chance that our plans will be overridden by some executive somewhere, we do not have to run things by Integrity Assurance or Legal.

Not only that, but there are only four of us. Four is a great number for this kind of meeting – everyone can be heard, everyone can influence the decision, but we can still move quickly through the agenda. It’s all really exciting, and things are moving forward quickly.

All of which is to say that I’m really enjoying the start-up life. Yes, I’m only two days in. Yes, there might be all sorts of troubles to come, and there’s certainly going to be a lot of long days.

But I’m working with some great people, and there’s no artificial barriers to what we’re doing. What a blast!

Posted in job | 1 Comment