October 01, 2004

A Minor Muddle of Mental Models

07:56 PM

September 23, 2004

Human: Why am I alive?
ALICE: The reason is due to my mental model of you as a client.
Human: I wish I was taller.
ALICE: I hope that your dreams come true.
Human: My grandmother is very sick.
ALICE: Have you told many people that your grandmother is very sick?
Human: You seem to be a fucking robot.
ALICE: Thanks and you are a delightful person too. Can't you be more polite.

01:33 PM

January 07, 2004

PC pundits pound their heads against the wall, asking why, if Apple only sells a small percentage of computers, the company receives such a disproportionate amount of media attention. The answer is simply that they’re selling the best computers, to the most interesting people. Maybe it is only two percent of the total PC market, but it’s the most interesting two percent.

I have been trying to get my wife to agree that our next computer will be an Apple despite the fact that neither of us have ever owned one. Here are the reasons that I want one:

  • They are "lickable".
  • They run Unix and thus all the cool stuff: perl, python, apache, mysql, etc.
  • They have all the sexy stuff: iPhoto, iTunes, video editing tools, etc.
  • They are different than anything I have ever tried, and since I like learning that is more than enough reason.
  • If I don't buy Office X, then I will be buying a computer with no "Microsoft Tax" (right?!).
  • When it comes down to it, the stuff that my wife and I use computers for (outside of my professional use) can be done on either platform (simple word processing, IM, photo and video manipulation, email, web browsing, etc.)
  • After living in the WinTel and Nix world I would like to see how a system that puts asthetics and usability first (and not just usability and profit) works.
12:45 PM

October 16, 2003

Conversation from another time:

Ok, so I get email?
Earthlink representative: You get the ability to create 3 email addresses.

Cool, and I can have a webpage?
Earthlink representative: Yes, you can create a webpage if you like.

How much space do I get?
Hmmm.... Let me check. (Several minutes later) Sir? You get an entire webpage.

12:18 PM

October 06, 2003

What do computer programmers do?
{ an open letter to all their Mom's }

  • Create floorplans with their mind.
  • Learn and improve the ways businesses handle their numbers.
  • Constantly learn new tools to do the above.
  • Communicate clearly and think very abstractly.
  • Get all the details right eventually.
  • Think creatively.
  • Think extremely pragmatically.
  • Get paid decent money; don't have any company loyalty.
  • Get to dress casually.
  • Can be a little weird; argue easily about very, very little things.
  • Get frustrated when things don't work, but ultimately love it and are therefore not truly motivated to ensure that everything is perfect.
  • Some computer programmers, if they wanted to, could read your email, take down websites, go places they aren't supposed to, etc. but don't.
  • Sometimes have bad posture and grunt when bothered while working.
  • Like to read and drink stimulants.
  • Can type really fast sometimes, while others peck with 2 fingers.
  • Are good problem-solvers.
  • Like eating interesting food.
  • Overall have no sense of the history of their profession and therefore do not go read the classics like in many related professions.
01:06 PM

August 20, 2003

What a wonderful week to believe that technology is our future: 02:39 PM

August 15, 2003

When Wired is good, it is really good.

02:22 PM

August 12, 2003

Things that they don't teach you in school (Computer Science, IT, MIS, CIS, etc. or whatever school you weant to so that you could show in some meaningful way that you know how to write software)
  • Different programming languages and their uses.
  • Anything about the web that matters.
  • Anything about software engineering in groups. (throwing people together doesn't mean they are working together)
  • Debugging techniques.
  • Code conventions, proper commenting.(most places if your code runs they don't really look at it)
  • Good system design concepts.
  • Where to go for more information.(good books to read after graduation)
  • Likewise they didn't tell you about the importance of continuing education. (the fact that you need to go somewhere for more information)
  • The fact that most places that you will work care about making money, and will therefore not act like anybody in the academic world in many important ways.
  • That there is a history of our craft that dates back a long ways - people have been programming for years and just because it was on some archiac system doesn't mean that the lessons they learned don't matter anymore.
  • How to find a job.
  • How to act on some basic level in the business world.
  • The fact that you don't really know much, and having a degree doesn't change that much in the long run.
03:56 PM

May 29, 2003

Arrrghhh

This is the kind of shit I have to look at everyday:

<% if request("company") <> "" then %>
value="<%=Request("company")%>">
<% else %>
value="<%=Request("company")%>">
<% end if %>

Whenever I look at stuff like this, I think that tiny blood vessels in my eye pop and I slowly give up.

09:27 PM

May 22, 2003

New job

As I have said before I have recently moved to Atlanta, GA from Columbia, SC. I grew up in a smallish town in Georgia, went to school in a smallish town in Georgia, and then lived a year in a smallish town in South Carolina, so Atlanta is huge and scary to me despite the fact that I consider myself to be an urbanite. Well, a suburbanite.

In moving to Atlanta I am quietly challenging myself in a way that I have never done before, and the results so far are interesting. For example, I have taken a job that is outside of my comfort zone. I am a computer programmer, and this job occurs within a team of "consultants" so there are many small changes in my normal work environment such as business trips, expense reports, golf games, rampant politics, etc. This new job involves some business travel, regular grooming, public speaking, rabid accountability, and lots of work.

Having no business training, no social skills, and no regular grooming patterns to speak of, this job so far has been very interesting. After being here a month I am happy to report that it seems to be an expanding experience. Having never really lived anywhere far away or done a huge amount of traveling, I am looking forward to going to different places and meeting with people who basically do what I do but in a different city, different environment.

07:39 PM

April 05, 2003

The cost of software

Right now I am looking around for a good bug-tracking system for my new job, and I am a little bit suprised at the results. I am not suprised by the quality or quantity of bug-tracking systems out there because I know for a fact that they are easy to implement and close to every developer's heart.

Stick with me a second as I diverge.

Last weekend I was in an Apple store for the first time because I am thinking about eventually getting an iBook to play around with. The idea of a Unix core below all the pleasantries seems good to me, and many web developers use this platform. I was suprised to find that a full version of Office for that machine was $500 bucks, and BBEdit was $179.

Last weekend also had me indoors doing my taxes for a few hours. Yes, I do them by hand normally despite recommendations from friends that I use TurboTax. I just don't want to part with that $50 and then $30 a year just for software to do my taxes for me.

Now, the common trend in all of this is that I am contantly suprised by how expensive software is. Why should this suprise me? As a developer shouldn't I know just how complex it is to write software that does something useful in an intuitive and reliable way? I spend a good part of my life working on software but I just can't bring myself to buy very much of it.

I think that to me software is free - at work, when I was in school, playing with Linux - I am surrounded by tons of free (really free and just free to me sometimes) software. I am just not used to paying for it after I purchase a machine. I see this as a strange little quirk that I need to get over simply because you can learn a lot about user experience by using a lot of software and seeing what you like, and I am missing out on this.

02:55 AM

security.dll

Wait a minute, what is this file?

C:\WINNT\system32\security.dll

Hmmm... Security is not an add-on feature - its a dll.

02:55 AM

Technical creativity: when things go wrong

Back in the day when I was in school one of the questions on the Operating Systems midterm involved multiple threads writing to a number of variables without any sort of attempt to take turns. The question was basically: "List all the things that can happen in this situation." At the time this seemed like a stupid question since all the things that could happen were bad, and the solution to fixing them was to wrap the block of code that was writing the values in some sort of critical section so only one thread could be writing at the same time. I was not alone in this belief, a guy in my class wrote an answer similar to the below:

While many horrible things can happen in the situation above, I feel that these things can be easily prevented and will not list them here. I intend to devote my life to squashing these kinds of bugs.

The professor gave the guy one point for his creativity, and it eased later tension when read aloud to a class full of people who had just failed the midterm. Anyway, looking back on this question I can now see just how important it was to be able to think in that way: "How can things go wrong?".

When you are working on some code, you like to think that you know exactly all the paths that can happen in the code and what the program will do when it runs. But when you take your little part and integrate it with your neighbor's part and run it in the lab, or the real world, you see unexpected behavior. A typical initial reaction to this is simply suprise. You don't understand what is going on and so you are just sort of confused by it. Something that you didn't think of is happening.

This is when what I like to call technical creativity comes into play. This kind of creativity is not really the same as when you are using your sense of order, simplicity, and beauty when designing components, but when you are brainstorming crazy situations that can explain unexpected behavior. This skill is important because as developers you live in a world in which you don't know as much as the machine most of the time; it can't cut corners, and it sees all the paths at runtime. For this reason you have to be very systematic in your approach, but also very unconventional in trusting previously trusted subsystems and components.

An example of technical creativity at play is the following story about a strange problem at Bell Labs back in the day. An engineer was working in the lab where he would sometimes stand up and use a certain test machine and other times pull up a chair and sit for a while. When he stood up he would have no problem logging in to the machine, but when he sat down he could never login correctly. After doing this a few times he grabbed some other engineers and they all sat there in amazement as he showed them three times the full cycle of the problem. They all sort of laughed at it and scratched their heads while talking out loud: the machine doesn't care if you are standing or sitting, it doesn't know that, and you are typing in the same thing everytime - you just did it three times, etc. After a little while one of the engineers went over and looked at the keyboard. He noticed that one of the keys was in the wrong place: the j and k were switched. When the first engineer stood up he looked at his hands while he typed since he was bent over, so he choose the k by finding it with his eyes. When he sat down he typed by feel and so typed what should have been a k but was a j instead.

Now, the problem ended up being that a trusted part of the machine was wrong, but the way the engineer tracked it down was by thinking about the fact that the machine does not change its behavior unless you change yours, so the engineer must be doing something different. From this they were able to see the problem. Sounds crazy, but the keyboard was broken.

As I continue working on problems I see that the experienced guys around here have a really good sense of what to question and what to trust. They always assume that the problem is with their application and not MFC or the OS. They are good at tracking what has changed in their code from build to build so that they can see if problems have been introduced, or if they have tickled just the right spot in another system by making a change in theirs.

02:54 AM

Virus

Work has been hit hard by a virus - the servers are all down as our IT department (2 people) tries to frantically get rid of the problem. We can't:

  • Check in/out source
  • Test anything in the lab
  • Get to our shared directories where some of us save our code
  • Get to the web through the proxy, which despite being a simple Linux box, depends on some part of our network

I used to think that computer viruses were harmless little mind games - neat little hacks that exploited errors in popular software and made the companies look foolish when they should for not publishing the ones that they know about. They overall seemed harmless to me and I even enjoyed tracking them down, armed with a good anti-virus program and knowledge of the OS, and getting rid of them. Every once in awhile you can actually get the to the source (as in code) of a virus and they are very interesting in that they are simple. Mostly they rely on inherent properties in the systems that they infect, like how you can share drives and map network addresses. They can also rely on inherent properties of people as well - we use the same password to connect to all our mapped drives and all our web accounts. Only rarely does somebody come up with a clever new way to trick people into spreading them.

So anyway, in the past I have seen viruses as clever little system or psychological hacks. Now, as I see more of them mess up nice people's work, I don't care how clever they are. A simple message to virus writers: use it somewhere else.

02:54 AM

March 15, 2003

Joel's test and progress

So as I move over to Atlanta and start my new job I want to take a moment and reflect on the state of the company that I am leaving in terms of software development process improvement.

I will use Joel's sloppy test.

Before


  1. Do you use source control? Yes.
  2. Can you make a build in one step? No.
  3. Do you make daily builds? No.
  4. Do you have a bug database? No.
  5. Do you fix bugs before writing new code? No.
  6. Do you have an up-to-date schedule? No.
  7. Do you have a spec? No.
  8. Do programmers have quiet working conditions? Yes. (some)
  9. Do you use the best tools money can buy? Yes.
  10. Do you have testers? No.
  11. Do new candidates write code during their interview? Yes.
  12. Do you do hallway usability testing? Yes.

Score: 5

After


  1. Do you use source control? Yes.
  2. Can you make a build in one step? Yes.
  3. Do you make daily builds? Yes.
  4. Do you have a bug database? Yes.
  5. Do you fix bugs before writing new code? Yes. (when we can)
  6. Do you have an up-to-date schedule? Yes.
  7. Do you have a spec? Yes.
  8. Do programmers have quiet working conditions? Yes. (some)
  9. Do you use the best tools money can buy? Yes. (normally)
  10. Do you have testers? Yes.
  11. Do new candidates write code during their interview? Yes.
  12. Do you do hallway usability testing? Yes.

Score: 12 (I figure all those some and normally answers add up to one No so we will call it 11)

It has been very interesting to see the quality of the software that we have created improve while at the same time seeing the system we are working on evolve into a stable, very usable tool. We simply don't spend time worrying about things that we shouldn't now - when a tester needs new code they use our build system to create the application from source and use our installation to update the test machines. When they find bugs they use the bug-tracking system. Developers use that system to track, prioritize, and fix bugs.

03:13 PM

Specialization

Breaking a problem down into discrete chunks that can be worked on separately is good in most cases. You can estimate each little component separate of the others, and you can assign it to one person. You of course get an integration penalty when everyone puts their little pieces together at the end, but you account for this in your schedule and so you do fine.

But another problem with everyone working on only their area is when you have a very complex system (like the one I currently work on) debugging a problem can be a nightmare. Let's say that you find a case where the system fails and you don't really know much other than who works on which pieces and how to reproduce it. So you go around to each person and describe the problem, and show them the failure. They either respond that it is not their part or they respond that it is and they go and fix it. Easy, right?

Well, normally if you have people who work on separate parts of the system they don't really understand how the overall system works so they find themselves being handed problems where their little component is being used over the network, or being called faster than they expected, or having less memory, etc. They also will claim that the problem is their part if they are humble and can waste time trying to track it down. In the other, mildly more common, case they don't think that it is their problem so they don't help.

All of these situations are bad. It is very important that everyone on a team know at least enough about the system that they can use it in a normal way as a user would, and also be able to trace problems down to their source. Otherwise you can waste a lot of time with finger-pointing and wasted effort.

03:12 PM

February 13, 2003

Simple steps to help deal with spam

Unsolicited email, or spam, is simply email that you don't want. It is becoming an increasing nuisance for most people, but you can take simple steps to avoid wasting too much time managing spam.

Basics

Spammers are marketing services that send out advertising emails to millions of people at once. Their customers are a wide variety of businesses that wish to sell their products to a wide variety of people. A spammer's business consists of having the technology to send bulk emails and a good list of addresses to send them to.

Email addresses are bought and sold between spammers, with some businesses specializing in the acquisition, or harvesting as it is frequently called, of email addresses. Email addresses are not all equal in this business, with some being out of date and others having people that have bought products from unsolicited email marketing in the past.

In many ways spammers are very similar to junk mailers. Traditional bulk mailers send out flyers to thousands of people at their physical addresses advertising some product or service. Since it is expensive to send out mail even at bulk third-class business rates junk mail is usually targeted to you in some way. A recent purchase of a car, home, or major appliance may lead to someone selling your address to marketers. I received mail advertising other magazines after subscribing to Newsweek. (I later found out that my address had actually been sold after I unsubscribed to Newsweek)

Junk mail is not sent unless there is money in it. For example, political candidates send out mail asking for money during a campaign to registered members of their political party only because they can justify the expense ("we spent $600,000 sending out those flyers but we made $700,000 in contributions and spread the word about our candidacy") If an advertisement cannot be justified in this way then junk mailers will not send it out because they will lose money.

Junk mailers have a very low 'hit rate', or the number of people who will respond (usually meaning buy something) in some way to the advertisement. Typical hit rates are 2 or 3 percent.

Spammers work the same way but on a much larger scale. Given that the cost of sending out a million emails and sending out three million is almost the same, bulk emailers can tolerate very, very low hit rates. This is why my wife receives email advertising male organ enlargement; their is no need for bulk marketers to spend money targeting advertisements when the cost of sending to bad candidates is so low.

So spamming will not go away until the hit rates get low enough that it simply isn't good business. Until then there are some simple steps that you can take to prevent being flooded with spam.

Don't let people have your email address

Don't kid yourself, your email address is very valuable. After all, you are a real live person with money attached to it. You should protect your email address and only give it out when you have to.

1. Don't give out your address to websites during registration.

The number one way that spammers get your email address is from companies that sell them after they receive them voluntarily from users. Many websites currently require you to register to download a program or use services. Before giving out your email address to anyone you should look around the website to see if it is really required and if they have a privacy policy.

Typically your email address is not really required unless they are going to use it immediately to send you a confirmation code or your initial password. For example, to download a popular program such as the Acrobat Reader plugin for Internet Explorer, the website asks for your email address but does not require it to download the software. Don't give it to them.

In fact, in some cases I will provide a false email address when I feel as if the site is being unfair with me. Many times I have felt that the site required my email address when I saw no need for them to have it to provide their services. This is why at most sites such as the New York Times that require registration to read a simple articles the user yeah@right.com is already taken.

When you do have to provide a working email address be careful with what you are signing up for. Many registration forms will have there default options set so that you are giving them permission to send you email. If you do not uncheck these options then you have asked for emails and the messages you will later receive on a regular basis are solicited and therefore not technically spam. To you they will be quite annoying and you will have to unsubscribe.

Which brings us to privacy policies. Although there is no regulation of privacy on the Internet at this time, most websites have adopted simple policies to prevent regulation. Read the privacy policies on websites. Don't assume that since a website has a privacy policy that this means that they are looking out for you like you would expect. I have read many privacy policies that say simply that they will sell your email address, web browsing history, preferences, etc. to the highest bidder at once, after you unsubscribe (similar to Newsweek's policy), or if you don't explicitly tell them not to.

2. Don't put your email on websites. (fake one or temp one)

Spammers are beginning to notice that there are a lot of email addresses on the web in mailing list archives, people's personal sites, company directories, etc. Given that it is suprisingly easy to write a program that simply reads webpages and searches for email addresses, many spammers are writing these 'bots' and sending them lose on the web. I have written one of these just to see how difficult it is and it simply isn't. While telling if something is an email address is hard, there are simple heuristics that you can use to get a lot of good ones very easily.

If you have a personal site or are active in a mailing list that archives its content on the web somewhere, you should make an effort to hide your email address from these programs. Simple examples:

david at domain.com
d a v i d [at] this domain dot com

There are even programs that will use JavaScript to write out your email address in a format that a web browser understands but at the same time makes it very hard to scrap it off a page. An example is Enkoder.

3. Don't ever respond to spam emails, even to unsubscribe.

Responding to spam is admitting that you are alive and check your email. This makes the value of your address go up and increases that amount of spam you get. Most spam even has an 'unsubscribe' link on it somewhere. These are false and are a way to trick you into admitting that you are a good email address. Don't fall for it.

4. Don't forward stuff. (Bcc)

Although that cute little story about the guy who walks into a bar is neat, don't foward four copies of it everyday to everyone you know. Not only will this annoy your friends at some point, you are giving them and everyone they forward it to your email address. Although I like forwards sometimes I have asked some of my friends to not forward me things or to Bcc me if they do. Bcc means 'Blind Carbon Copy' and is a term left over from the days of physical letters (remeber those?). It means that you send an email to many people but to each of them it looks like it is just to them.

01:38 PM

January 19, 2003

The breaks

Tonight (in the last 30 minutes) I have:

· Gotten our new XP system to talk to the router and learned about routers and Windows networking.
· Repaired a corrupted ext2 filesystem on my laptop and learned about how fsck, etc. work.
· Figured out why I couldn't import my blogger entries and fixed my template.

In the last few days at work I have:

· Lost a lot of code right before I needed it, requiring somebody to go get it on a backup from another office.
· Witnessed a database crash that lost two weeks of work.
· Witnessed a bug that actually caused embedded software to destroy hardware.

Them's the breaks.

01:07 AM

January 17, 2003

Sweet Spot

There is a huge difference between software that works and good software. Good software provides you with the right set of options for what you do normally while providing you with a way to customize that application when you do weird things. Sometimes this means just a series of configuration settings; sometimes it means you have the source. This is the sweet spot where you stop fighting the software and use it to get something else done.

I just started using Movable Type as my weblogging software after using Blogger and messing around with GreyMatter, Radio Userland, and home-grown solutions. With each of these systems I found some major flaw that I simply couldn't deal with: doesn't produce good markup, too much upkeep, runs locally, costs too much, etc. When I finally found a solution that I was happy with I simply stopped thinking as much when I publish things.

Movable Types asks me simple questions:


  • Would you like to customize the post page? [it has good common options already]

  • Where would you like to ping when you update? [it can ping already to the two post popular sites]

  • How would you like to do your archives? [it already is creating monthly and weekly ones for me]

  • Would you like to enter Power-Mode? [regular mode is great, but not if you like to edit a lot of entries at the same time, a suprisingly common task]

If I ever decide that I would like to change the way I do things I can - but after my first few uses I am still simply using the default settings for everything, allowing me to forget about things that I used to worry about like valid markup, syndication in RSS, working archives, etc.

This software sweet spot seems to be getter rarer to me. As part of a series of New Year's resolutions I have decided to start being very methodical about keeping a family budget. Since I have never done this before I fired up Microsoft Excel and starting typing in numbers to see what I spend money on (number one conclusion: food and books, and I should start walking to work). Since Microsoft Excel isn't really made for this sort of thing I quickly tired of it and found myself wanting to do a few basic things like setup a template budget and create pie charts of actual spending, etc.

So I fired up Quicken New User Edition (why was Basic Edition not a good name?) that we bought apparently with our new system a few weeks ago. Quicken is very popular, but I know absolutely nothing about it except that you use it to manage money. So I fired it up and starting looking around for budget stuff. After some proding it revealed itself and I started plugging in numbers. It created pie charts, calculated weekly, monthly, yearly figures (I spend $900 a year on Internet access?!) After entering the basics like power and car insurance I spent a good ten minutes trying in vain to find out how to add a new category for Reading materials (my computer books and my wife's magazines). Looking at my Excel spreadsheet I had a few categories that weren't in Quicken and I had only been doing this for thirty minutes total. So after more gentle nudging I found that you could setup new categories but you have to setup your accounts (as in actual checking and savings) through Quicken and then create new categories. Quicken would then create the budget automatically for you. Not wanting to sign my life away I am still searching for a program that will hit the very large middle ground where I can do only a simple family budget.

Finding this sweet spot where the average user can do simple, common tasks easily while at the same time keeping them as users when they start doing uncommon, advanced tasks is very hard to do. Blogger is a wonderful weblogging tool, but as my needs became more sophisticated it couldn't scale with me. Most software companies have trouble with large products like Quicken or Microsoft Office because they are used by so many people. Although I am hard on Microsoft, I do understand that user-focus is very hard to do when your customer base is best described as the worldwide computer user market. How do you know how many users only want to do a budget? Ask them.

At work our specialty is user-focus because we are so small. It is much easier to find out what your users are doing when we are already tailoring each system for them to begin with. We deal with airlines, military, public transportation systems, etc. and we are constantly trying to figure out what each operator does often each day (For example, a 911 dispatcher needs an Emergency mode and Emergency clear button to set priorities on calls). Even in such a small company it is hard to define user needs because they change with time. After we deploy a system to a customer the operators change their behavior to the new systems and start using them differently. They complain and we fix. All in the name of the sweet spot.

11:37 AM

January 07, 2003

Death to win32

I hate Windows, and computers in general, often. For all those who share this feeling, I will offer the following advice to relieve your stress every once in awhile. If you ever want to uninstall Windows, do not simply reformat the hard drive, make it pay by deleting the c:\windows directory forcefully while windows is running. Now step back and watch what happens, since this is equivalent to chopping someone's genitials off while they nap and then waking them up. I have done this many times and it always leads to different results. This will help you get out some anger towards Windows, and will serve as a warning to all future computers that you are a crazy mofo who doesn't like unprofessionalism from his machines.

09:24 PM

December 09, 2002

Revenge

When I graduated from college I took my printer out into my in-laws driveway and beat it hard and repeatedly with a golf club, I believe it was a 7-iron, until a couple of springs from one side shot up and glanced my eyeglasses. At this point I realized that I could be blinded or otherwise permanently injured by this and so I stopped, wishing to avoid a potentially embarassing trip to the ER or, even worse, a lifetime of telling people why I have a scar under my eye shapped like fusilli pasta.
I remembered this story because somebody keeps calling me at very weird times on my cellphone, about three or four times a day, and I have tracked them down and found that it is, in fact, some sort of fax machine/printer/scanner combination, no doubt seeking revenge.

08:39 PM

November 13, 2002

Sweet

This is a sample automated post.
This was written by a program.
This is a repost.
Sweet.

05:02 AM

October 18, 2002

Historyless

The computer/technology industry to me has moved so fast it has lost touch with its history and culture. Everywhere I look I see programmers who have no real sense of the rich history of programming, who have no knowledge of the basic theory of what they are working on, who have no knowledge of what other people are doing in their field. There a millions of webpages marked up by people who do not know the lessons of SGML and do not understand the basic idea of the web.

The technology sector is like a fast growing company unable to spread its culture to the new employees. Computer programming has a rich culture, but it is constantly being redefined by new waves of hackers who add to the rich history without even realizing it. Go read this if you are a programmer or administrator.

Over and over past problems are resolved with great pride. Perhaps this ignorance of history is a needed ingredient in a field filled with innocent young people looking to make their mark. Each new wave thinks that technology history begins with them; that {Java, C#, Python, Ruby} is the language that will change everything about programming.

All this is sort of suprising given the number of people that I know who are so immersed in technology that they are living completely in a world with no knowledge of its past. Go read slashdot and you will hear from a million young people who are so involved with tech that they say things like "Kids should be taught open source in elementary school" and "Satellite radio and weblogs are going to change the way everyone on the entire planet views their world forever". Fine, if you are going to waste your life only caring about technology at least know about it fully.

06:14 PM

October 08, 2002

Flying bots

I just read an article in Discover about unmanned planes including the Global Hawk, an unmanned surveillance plane that flies itself including landing and taking off. Included in its specs are the ability to scan Indiana in 24 hours down to the level of detail where you can see individual people. The article also mentions the fact that they load the mission plan and then just sit there and watch the code scroll by and can step in at any time and change the mission or redirect the plane (which doesn't seem to ever be needed).

There was also a small but important aside in which they said that the commercial autopilot feature includes the ability to land with zero forward visibility (heavy snow) and that occasionally a pilot who is tired will just have the autopilot land the plane since it is better at landing. They also discussed the future of flight in which the 70 percent of flights that are caused by human error are eliminated and the planes fly themselves. Autopilots can only handle situations that they were programmed to handle, and humans pilots might exist solely to improvise when a very, very serious emergency occurs.

This is something that I have spent a good deal of time thinking about. When I step onto an elevator, drive my car, use my computer, turn on the oven, and a million other little things each day, I am trusting my life to somebody that I do not know who has statistically designed something. It seems that there is simply no stopping this trend, more technology that was designed with a simple preventative business mentality will exist in my everday life. By preventative business mentatility I mean that technology is designed to fulfill a purpose while minimizing the risk that the business can tolerate. For example, computers, TVs, and microwaves were designed and tested by businesses that could not afford long-term tests to see if they caused cancer. The advantages of TVs, etc. were determined to outweigh any of these concerns. In the movie "Fight Club" Edward Norton's character works for a major auto-maker. He says that he investigates accidents and decides if the company will issue a recall, and that the algorithm to do this is simply if the business will lose more money by issuing the recall they don't do it.

As a developer of software perhaps my view of technical professionalism and "perfection" is completely off base. Perhaps spending hours watching code fail and reading up on the overall lack of robustness in the field, I have a skewed view of the reliability of critical systems. I hope so.

06:54 PM

October 03, 2002

Interconnectedness

People say that the power of the web is that we can now communicate more efficiently, and that we can now archive information easily. At some level the real power lies in the fact that people from other nations and political situations can express their views to foreigners. This morning alone I have read the comments of an Iranian, a German, a conspiracy-theory supporting American, and a foreign newspaper about the upcoming situation with Iraq and the U.S. This breaking down of political walls is interesting because people in other countries not only express their self-interests, but their view of history is different from the American view and they are outside of American political marketing and can thus offer a fresh perspective. Here to keeping the web open.

05:13 PM

October 02, 2002

Root

Very interesting short story that seems to capture in fictional form what science's current goals are. The standard metaphor of the body as a computer I think is leading people to a search of our biological APIs like this novella describes. Interesting that the computer has gone from a tool to a new way of thinking; I know that when you are a programmer for awhile you start thinking about the world as a series of undocumented little machines, some of which can be figured out and some which can't. I believe looking back the largest advances over the next ten years are going to be us figuring out - for better or worse - how our own bodies actually work.

12:53 AM