Sunday, October 29, 2006


One of the reasons that I love science is that it gives me the power to do things. It is probably one of the things that attracted me to chemistry as a kid- the ability to make things explode, burn, gel, polymerize, change color- all of these have a visceral appeal to them.

I was a kid when computers first became available to individuals. There is no doubt that I fell in love with them for exactly the same reason.

What makes chemistry so hard is not that there is any one part that is beyond the comprehension of an idividual of normal intelligence, but that the subject is so vast and interelated that it is difficult to get a hand hold in the beginning. And frankly, what one learns in the earliest formal class in chemistry doesn't give one much ability to do things. It gets a little better in organic chemistry, the power yield, but the input in time, and the necessity to master a daunting array of facts by internalizing a handful of powerful organizing principles escapes many, if not most, students. But this is what is necessary to use chemistry to do things.

Computer programming, when I was a kid up through college, was similarly daunting. I learned Basic, then FORTRAN, assembly, then C, then C++. Each new project was begun anew, though I learned to save my earlier work.

Paradigms began to emerge in computer science that conspired to save prior work and coding. The use of libraries of code meant that once something hard was figured out, one could include this work in new programs. Changing and extending this could be problematic, but it was very much an improvement.

If libraries of code were designed well, the person using them did not need to worry about how they worked.

This continues to this day, with the advent of programming models such as Object Oriented Programming. This took some time for me to understand, but the benefits were clear- when designed well, it allowed even more code reuse, less worry about how the implementation was done, but significantly, it allowed one to 'grandfather' in earlier code, using inheritance, to make a new variant of the code that extended or changed the original without doing any modification to the original directly.

There is a similar seismic shift in Web-based programming. We are in the early phases of this, although web applications are available that have the functionality of desktop apps (Google's Spreadsheet and Wordprocessing applications are examples. You need a Google account to get to them, but that is free, as are the apps.)

It is particularly easy to use some of the resources available on the web- Google, Yahoo, Amazon, and others are providing application programming interfaces (APIs) to their services. This allows someone with very limited programming experience to leverage the work (and servers!) of these companies to accomplish goals in their own webpages.

Both Yahoo and Google have map services and provide APIs for them. With just a few lines of code, I can (for example) bring up a map of the National Zoo in Washington DC. All the work to find and display this data, to say nothing of the expense and work that went in to gathering and entering it into computers, is available to me free of charge. The force multiplication is hard to imagine.

Blogger, unfortunately, doesn't seem to allow javascript in entries, or I'd show some. I have begun to set up a server at home, and I will link to stuff I do in the future.


Post a Comment

<< Home