Thursday, January 31, 2008

The Age of Application


As I study Computer Science, I am often surprised at the timeline of discoveries. It is easy to assume that the greatest advances in Computer Science happened within the last twenty years because of the proliferation of computers in that period. In fact, most of the fundamental algorithms were developed in the 60s and 70s, some even earlier. Arpanet, which would eventually become the Internet, has its roots in 1969. Machine learning, a branch of Computer Science that still feels futuristic, was being developed intensely in the early 80s.

Technologies emerging from Computer Science go through two phases. First is a phase of discovery and initial development. During this phase the science itself is fleshed out thoroughly, but is applied narrowly. Second is a phase of wide application. This phase usually begins when hardware and manpower catch up to the science. A good current example is natural language processing. The science was fleshed out in the 80s and 90s, but now that hardware has caught up and a large number of programmers are developing NLP software, NLP is emerging into the mainstream.

Tuesday, January 29, 2008

Ethics in Critical Software


If a software error causes harm to a user, should the software developer be held responsible? If the software developer was clearly negligent in testing the software and ensuring its proper function, then yes the developer should be held responsible. However, if the developer thoroughly tested the code and it still caused a user harm, we enter an ethical gray area. Should the developer have tried more test cases? Is the software merely an implement by which the developer harms others the way a driver can with a vehicle? Perhaps the developer is guilty of manslaughter for negligently failing to test every possible input.

This thinking has two flaws. First, software of significant size or with analog input cannot have all possible inputs tested. For some software, testing all inputs would take longer than the life of the solar system, while others could never be fully tested. Second, the hardware that the software is run on has flaws of its own. There is no such thing as perfect hardware. Logic gates fail with very low probability, but high enough that it can happen. In short, it is not possible to guarantee that software will always work. In these situations, it is only ethical to release the developer from responsibility if they have done a good job of testing their software.

Wednesday, January 23, 2008

Music a la 2008


This blog post is written in response to yesterday's Ars Technica article: A brave new world: the music biz at the dawn of 2008.

Phonographs, records, 8-tracks, cassette tapes, and now - CDs; all going the way of the dodo. Good riddance, I say. I can remember going to the store with my mom when she bought our family's first CD player. At the time we were willing to pay an arm and a leg for CDs because they were new technology. Who could have guessed that almost 20 years later we would still be paying the same high price? DVDs, on the other hand, have been around for less than half as long, cost far more to produce, and can regularly be found in five-dollar bins.

Why is the cost of music decreasing so much now that it can be purchased digitally? Is it because a CD costs so much to print and distribute? That is part of the equation, but it doesn't explain how DVDs can be shipped profitably for five dollars. Rather, CDs are monopolistic in nature, while digital music cannot sustain a monopoly. Sure, there are many music labels, but CDs are monopolistic because there is only one Radiohead. If you want to buy Radiohead, there is only one company that sells it, you have no alternative but to buy from them. However, digital music has competition in the form of file sharing networks. There is now more than one source of Radiohead. Music companies are forced to lower their prices to a level at which users are willing to pay for the new product of the music industry: legality and a clean conscience.

Wednesday, January 16, 2008

Leveling the Field

Perhaps the most important accomplishment of the Internet will be that it levels the playing field for many people around the globe. Thanks to instant communications and instant information, many jobs that were originally done in the United States can now be done elsewhere. This is great for others who are now able to participate in the global economy, but doesn't seem like much of an accomplishment for the laid-off worker whose job was outsourced. This situation brings to mind a line from The Incredibles: "When everyone's super, no one will be!" This may not be good news for Americans who are used to being the top dogs for the last century, but a level playing field is just what the world needs. While many jobs may be outsourced, there is plenty of opportunity in America for entrepreneurs to explore new technologies while employing workers domestically.

Equal opportunity for all, not just for Americans, is a worthy goal, but only time will tell if the Internet can be the great leveler.

Sunday, January 13, 2008

We, Robot

The purpose of this blog: CS404 Credit
The secondary purpose: Mind dump
The tertiary purpose: Take over the world
-End Transmission-