<< preface

this blog is nina wenhart's collection of resources on the various histories of new media art. it consists mainly of non or very little edited material i found flaneuring on the net, sometimes with my own annotations and comments, sometimes it's also textparts i retyped from books that are out of print.

it is also meant to be an additional resource of information and recommended reading for my students of the prehystories of new media class that i teach at the school of the art institute of chicago in fall 2008.

the focus is on the time period from the beginning of the 20th century up to today.

>> search this blog

Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

2009-09-15

>> "Computer Programming as an Art", Donald E. Knuth, 1974

from: http://www.paulgraham.com/knuth.html

originally published in: CACM, December 1974


"When Communications of the ACM began publication in 1959, the members of ACM'S Editorial Board made the following remark as they described the purposes of ACM'S periodicals [2]:

"If computer programming is to become an important part of computer research and development, a transition of programming from an art to a disciplined science must be effected."
Such a goal has been a continually recurring theme during the ensuing years; for example, we read in 1970 of the "first steps toward transforming the art of programming into a science" [26]. Meanwhile we have actually succeeded in making our discipline a science, and in a remarkably simple way: merely by deciding to call it "computer science."

Implicit in these remarks is the notion that there is something undesirable about an area of human activity that is classified as an "art"; it has to be a Science before it has any real stature. On the other hand, I have been working for more than 12 years on a series of books called "The Art of Computer Programming." People frequently ask me why I picked such a title; and in fact some people apparently don't believe that I really did so, since I've seen at least one bibliographic reference to some books called "The Act of Computer Programming."

In this talk I shall try to explain why I think "Art" is the appropriate word. I will discuss what it means for something to be an art, in contrast to being a science; I will try to examine whether arts are good things or bad things; and I will try to show that a proper viewpoint of the subject will help us all to improve the quality of what we are now doing.

One of the first times I was ever asked about the title of my books was in 1966, during the last previous ACM national meeting held in Southern California. This was before any of the books were published, and I recall having lunch with a friend at the convention hotel. He knew how conceited I was, already at that time, so he asked if I was going to call my books "An Introduction to Don Knuth." I replied that, on the contrary, I was naming the books after him. His name: Art Evans. (The Art of Computer Programming, in person.)

From this story we can conclude that the word "art" has more than one meaning. In fact, one of the nicest things about the word is that it is used in many different senses, each of which is quite appropriate in connection with computer programming. While preparing this talk, I went to the library to find out what people have written about the word "art" through the years; and after spending several fascinating days in the stacks, I came to the conclusion that "art" must be one of the most interesting words in the English language.

The Arts of Old

If we go back to Latin roots, we find ars, artis meaning "skill." It is perhaps significant that the corresponding Greek word was τεχνη, the root of both "technology" and "technique."

Nowadays when someone speaks of "art" you probably think first of "fine arts" such as painting and sculpture, but before the twentieth century the word was generally used in quite a different sense. Since this older meaning of "art" still survives in many idioms, especially when we are contrasting art with science, I would like to spend the next few minutes talking about art in its classical sense.

In medieval times, the first universities were established to teach the seven so-called "liberal arts," namely grammar, rhetoric, logic, arithmetic, geometry, music, and astronomy. Note that this is quite different from the curriculum of today's liberal arts colleges, and that at least three of the original seven liberal arts are important components of computer science. At that time, an "art" meant something devised by man's intellect, as opposed to activities derived from nature or instinct; "liberal" arts were liberated or free, in contrast to manual arts such as plowing (cf. [6]). During the middle ages the word "art" by itself usually meant logic [4], which usually meant the study of syllogisms.

Science vs. Art

The word "science" seems to have been used for many years in about the same sense as "art"; for example, people spoke also of the seven liberal sciences, which were the same as the seven liberal arts [1]. Duns Scotus in the thirteenth century called logic "the Science of Sciences, and the Art of Arts" (cf. [12, p. 34f]). As civilization and learning developed, the words took on more and more independent meanings, "science" being used to stand for knowledge, and "art" for the application of knowledge. Thus, the science of astronomy was the basis for the art of navigation. The situation was almost exactly like the way in which we now distinguish between "science" and "engineering."

Many authors wrote about the relationship between art and science in the nineteenth century, and I believe the best discussion was given by John Stuart Mill. He said the following things, among others, in 1843 [28]:
Several sciences are often necessary to form the groundwork of a single art. Such is the complication of human affairs, that to enable one thing to be done, it is often requisite to know the nature and properties of many things... Art in general consists of the truths of Science, arranged in the most convenient order for practice, instead of the order which is the most convenient for thought. Science groups and arranges its truths so as to enable us to take in at one view as much as possible of the general order of the universe. Art... brings together from parts of the field of science most remote from one another, the truths relating to the production of the different and heterogeneous conditions necessary to each effect which the exigencies of practical life require.
As I was looking up these things about the meanings of "art," I found that authors have been calling for a transition from art to science for at least two centuries. For example, the preface to a textbook on mineralogy, written in 1784, said the following [17]: "Previous to the year 1780, mineralogy, though tolerably understood by many as an Art, could scarce be deemed a Science."

According to most dictionaries "science" means knowledge that has been logically arranged and systematized in the form of general "laws." The advantage of science is that it saves us from the need to think things through in each individual case; we can turn our thoughts to higher-level concepts. As John Ruskin wrote in 1853 [32]: "The work of science is to substitute facts for appearances, and demonstrations for impressions."

It seems to me that if the authors I studied were writing today, they would agree with the following characterization: Science is knowledge which we understand so well that we can teach it to a computer; and if we don't fully understand something, it is an art to deal with it. Since the notion of an algorithm or a computer program provides us with an extremely useful test for the depth of our knowledge about any given subject, the process of going from an art to a science means that we learn how to automate something.

Artificial intelligence has been making significant progress, yet there is a huge gap between what computers can do in the foreseeable future and what ordinary people can do. The mysterious insights that people have when speaking, listening, creating, and even when they are programming, are still beyond the reach of science; nearly everything we do is still an art.

From this standpoint it is certainly desirable to make computer programming a science, and we have indeed come a long way in the 15 years since the publication ot the remarks I quoted at the beginning of this talk. Fifteen years ago computer programming was so badly understood that hardly anyone even thought about proving programs correct; we just fiddled with a program until we "knew" it worked. At that time we didn't even know how to express the concept that a program was correct, in any rigorous way. It is only in recent years that we have been learning about the processes of abstraction by which programs are written and understood; and this new knowledge about programming is currently producing great payoffs in practice, even though few programs are actually proved correct with complete rigor, since we are beginning to understand the principles of program structure. The point is that when we write programs today, we know that we could in principle construct formal proofs of their correctness if we really wanted to, now that we understand how such proofs are formulated. This scientific basis is resulting in programs that are significantly more reliable than those we wrote in former days when intuition was the only basis of correctness.

The field of "automatic programming" is one of the major areas of artificial intelligence research today. Its proponents would love to be able to give a lecture entitled "Computer Programming as an Artifact" (meaning that programming has become merely a relic of bygone days), because their aim is to create machines that write programs better than we can, given only the problem specification. Personally I don't think such a goal will ever be completely attained, but I do think that their research is extremely important, because everything we learn about programming helps us to improve our own artistry. In this sense we should continually be striving to transform every art into a science: in the process, we advance the art.

Science and Art

Our discussion indicates that computer programming is by now both a science and an art, and that the two aspects nicely complement each other. Apparently most authors who examine such a question come to this same conclusion, that their subject is both a science and an art, whatever their subject is (cf. [25]). I found a book about elementary photography, written in 1893, which stated that "the development of the photographic image is both an art and a science" [13]. In fact, when I first picked up a dictionary in order to study the words "art" and "science," I happened to glance at the editor's preface, which began by saying, "The making of a dictionary is both a science and an art." The editor of Funk & Wagnall's dictionary [27] observed that the painstaking accumulation and classification of data about words has a scientific character, while a well-chosen phrasing of definitions demands the ability to write with economy and precision: "The science without the art is likely to be ineffective; the art without the science is certain to be inaccurate."

When preparing this talk I looked through the card catalog at Stanford library to see how other people have been using the words "art" and "science" in the titles of their books. This turned out to be quite interesting.

For example, I found two books entitled The Art of Playing the Piano [5, 15], and others called The Science of Pianoforte Technique [10], The Science of Pianoforte Practice [30]. There is also a book called The Art of Piano Playing: A Scientific Approach [22].

Then I found a nice little book entitled The Gentle Art of Mathematics [31], which made me somewhat sad that I can't honestly describe computer programming as a "gentle art." I had known for several years about a book called The Art of Computation, published in San Francisco, 1879, by a man named C. Frusher Howard [14]. This was a book on practical business arithmetic that had sold over 400,000 copies in various editions by 1890. I was amused to read the preface, since it shows that Howard's philosophy and the intent of his title were quite different from mine; he wrote: "A knowledge of the Science of Number is of minor importance; skill in the Art of Reckoning is absolutely indispensible."

Several books mention both science and art in their titles, notably The Science of Being and Art of Living by Maharishi Mahesh Yogi [24]. There is also a book called The Art of Scientific Discovery [11], which analyzes how some of the great discoveries of science were made.

So much for the word "art" in its classical meaning. Actually when I chose the title of my books, I wasn't thinking primarily of art in this sense, I was thinking more of its current connotations. Probably the most interesting book which turned up in my search was a fairly recent work by Robert E. Mueller called The Science of Art [29]. Of all the books I've mentioned, Mueller's comes closest to expressing what I want to make the central theme of my talk today, in terms of real artistry as we now understand the term. He observes: "It was once thought that the imaginative outlook of the artist was death for the scientist. And the logic of science seemed to spell doom to all possible artistic flights of fancy." He goes on to explore the advantages which actually do result from a synthesis of science and art.

A scientific approach is generally characterized by the words logical, systematic, impersonal, calm, rational, while an artistic approach is characterized by the words aesthetic, creative, humanitarian, anxious, irrational. It seems to me that both of these apparently contradictory approaches have great value with respect to computer programming.

Emma Lehmer wrote in 1956 that she had found coding to be "an exacting science as well as an intriguing art" [23]. H.S.M. Coxeter remarked in 1957 that he sometimes felt "more like an artist than a scientist" [7]. This was at the time C.P. Snow was beginning to voice his alarm at the growing polarization between "two cultures" of educated people [34, 35]. He pointed out that we need to combine scientific and artistic values if we are to make real progress.

Works of Art

When I'm sitting in an audience listening to a long lecture, my attention usually starts to wane at about this point in the hour. So I wonder, are you getting a little tired of my harangue about "science" and "art"? I really hope that you'll be able to listen carefully to the rest of this, anyway, because now comes the part about which I feel most deeply.

When I speak about computer programming as an art, I am thinking primarily of it as an art form, in an aesthetic sense. The chief goal of my work as educator and author is to help people learn how to write beautiful programs. It is for this reason I was especially pleased to learn recently [32] that my books actually appear in the Fine Arts Library at Cornell University. (However, the three volumes apparently sit there neatly on the shelf, without being used, so I'm afraid the librarians may have made a mistake by interpreting my title literally.)

My feeling is that when we prepare a program, it can be like composing poetry or music; as Andrei Ershov has said [9], programming can give us both intellectual and emotional satisfaction, because it is a real achievement to master complexity and to establish a system of consistent rules.

Furthermore when we read other people's programs, we can recognize some of them as genuine works of art. I can still remember the great thrill it was for me to read the listing of Stan Poley's SOAP II assembly program in 1958; you probably think I'm crazy, and styles have certainly changed greatly since then, but at the time it meant a great deal to me to see how elegant a system program could be, especially by comparison with the heavy-handed coding found in other listings I had been studying at the same time. The possibility of writing beautiful programs, even in assembly language, is what got me hooked on programming in the first place.

Some programs are elegant, some are exquisite, some are sparkling. My claim is that it is possible to write grand programs, noble programs, truly magnificent ones!

Taste and Style

The idea of style in programming is now coming to the forefront at last, and I hope that most of you have seen the excellent little book on Elements of Programming Style by Kernighan and Plauger [16]. In this connection it is most important for us all to remember that there is no one "best" style; everybody has his own preferences, and it is a mistake to try to force people into an unnatural mold. We often hear the saying, "I don't know anything about art, but I know what I like." The important thing is that you really like the style you are using; it should be the best way you prefer to express yourself.

Edsger Dijkstra stressed this point in the preface to his Short Introduction to the Art of Programming [8]:
It is my purpose to transmit the importance of good taste and style in programming, [but] the specific elements of style presented serve only to illustrate what benefits can be derived from "style" in general. In this respect I feel akin to the teacher of composition at a conservatory: He does not teach his pupils how to compose a particular symphony, he must help his pupils to find their own style and must explain to them what is implied by this. (It has been this analogy that made me talk about "The Art of Programming.")
Now we must ask ourselves, What is good style, and what is bad style? We should not be too rigid about this in judging other people's work. The early nineteenth-century philosopher Jeremy Bentham put it this way [3, Bk. 3, Ch. 1]:
Judges of elegance and taste consider themselves as benefactors to the human race, whilst they are really only the interrupters of their pleasure... There is no taste which deserves the epithet good, unless it be the taste for such employments which, to the pleasure actually produced by them, conjoin some contingent or future utility: there is no taste which deserves to be characterized as bad, unless it be a taste for some occupation which has a mischievous tendency.
When we apply our own prejudices to "reform" someone else's taste, we may be unconsciously denying him some entirely legitimate pleasure. That's why I don't condemn a lot of things programmers do, even though I would never enjoy doing them myself. The important thing is that they are creating something they feel is beautiful.

In the passage I just quoted, Bentham does give us some advice about certain principles of aesthetics which are better than others, namely the "utility" of the result. We have some freedom in setting up our personal standards of beauty, but it is especially nice when the things we regard as beautiful are also regarded by other people as useful. I must confess that I really enjoy writing computer programs; and I especially enjoy writing programs which do the greatest good, in some sense.

There are many senses in which a program can be "good," of course. In the first place, it's especially good to have a program that works correctly. Secondly it is often good to have a program that won't be hard to change, when the time for adaptation arises. Both of these goals are achieved when the program is easily readable and understandable to a person who knows the appropriate language.

Another important way for a production program to be good is for it to interact gracefully with its users, especially when recovering from human errors in the input data. It's a real art to compose meaningful error messages or to design flexible input formats which are not error-prone.

Another important aspect of program quality is the efficiency with which the computer's resources are actually being used. I am sorry to say that many people nowadays are condemning program efficiency, telling us that it is in bad taste. The reason for this is that we are now experiencing a reaction from the time when efficiency was the only reputable criterion of goodness, and programmers in the past have tended to be so preoccupied with efficiency that they have produced needlessly complicated code; the result of this unnecessary complexity has been that net efficiency has gone down, due to difficulties of debugging and maintenance.

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.

We shouldn't be penny wise and pound foolish, nor should we always think of efficiency in terms of so many percent gained or lost in total running time or space. When we buy a car, many of us are almost oblivious to a difference of $50 or $100 in its price, while we might make a special trip to a particular store in order to buy a 50 cent item for only 25 cents. My point is that there is a time and place for efficiency; I have discussed its proper role in my paper on structured programming, which appears in the current issue of Computing Surveys [21].

Less Facilities: More Enjoyment

One rather curious thing I've noticed about aesthetic satisfaction is that our pleasure is significantly enhanced when we accomplish something with limited tools. For example, the program of which I personally am most pleased and proud is a compiler I once wrote for a primitive minicomputer which had only 4096 words of memory, 16 bits per word. It makes a person feel like a real virtuoso to achieve something under such severe restrictions.

A similar phenomenon occurs in many other contexts. For example, people often seem to fall in love with their Volkswagens but rarely with their Lincoln Continentals (which presumably run much better). When I learned programming, it was a popular pastime to do as much as possible with programs that fit on only a single punched card. I suppose it's this same phenomenon that makes APL enthusiasts relish their "one-liners." When we teach programming nowadays, it is a curious fact that we rarely capture the heart of a student for computer science until he has taken a course which allows "hands on" experience with a minicomputer. The use of our large-scale machines with their fancy operating systems and languages doesn't really seem to engender any love for programming, at least not at first.

It's not obvious how to apply this principle to increase programmers' enjoyment of their work. Surely programmers would groan if their manager suddenly announced that the new machine will have only half as much memory as the old. And I don't think anybody, even the most dedicated "programming artists," can be expected to welcome such a prospect, since nobody likes to lose facilities unnecessarily. Another example may help to clarify the situation: Film-makers strongly resisted the introduction of talking pictures in the 1920's because they were justly proud of the way they could convey words without sound. Similarly, a true programming artist might well resent the introduction of more powerful equipment; today's mass storage devices tend to spoil much of the beauty of our old tape sorting methods. But today's film makers don't want to go back to silent films, not because they're lazy but because they know it is quite possible to make beautiful movies using the improved technology. The form of their art has changed, but there is still plenty of room for artistry.

How did they develop their skill? The best film makers through the years usually seem to have learned their art in comparatively primitive circumstances, often in other countries with a limited movie industry. And in recent years the most important things we have been learning about programming seem to have originated with people who did not have access to very large computers. The moral of this story, it seems to me, is that we should make use of the idea of limited resources in our own education. We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. We shouldn't live in the lap of luxury all the time, since that tends to make us lethargic. The art of tackling miniproblems with all our energy will sharpen our talents for the real problems, and the experience will help us to get more pleasure from our accomplishments on less restricted equipment.

In a similar vein, we shouldn't shy away from "art for art's sake"; we shouldn't feel guilty about programs that are just for fun. I once got a great kick out of writing a one-statement ALGOL program that invoked an innerproduct procedure in such an unusual way that it calculated the mth prime number, instead of an innerproduct [19]. Some years ago the students at Stanford were excited about finding the shortest FORTRAN program which prints itself out, in the sense that the program's output is identical to its own source text. The same problem was considered for many other languages. I don't think it was a waste of time for them to work on this; nor would Jeremy Bentham, whom I quoted earlier, deny the "utility" of such pastimes [3, Bk. 3, Ch. 1]. "On the contrary," he wrote, "there is nothing, the utility of which is more incontestable. To what shall the character of utility be ascribed, if not to that which is a source of pleasure?"

Providing Beautiful Tools

Another characteristic of modern art is its emphasis on creativity. It seems that many artists these days couldn't care less about creating beautiful things; only the novelty of an idea is important. I'm not recommending that computer programming should be like modern art in this sense, but it does lead me to an observation that I think is important. Sometimes we are assigned to a programming task which is almost hopelessly dull, giving us no outlet whatsoever for any creativity; and at such times a person might well come to me and say, "So programming is beautiful? It's all very well for you to declaim that I should take pleasure in creating elegant and charming programs, but how am I supposed to make this mess into a work of art?"

Well, it's true, not all programming tasks are going to be fun. Consider the "trapped housewife," who has to clean off the same table every day: there's not room for creativity or artistry in every situation. But even in such cases, there is a way to make a big improvement: it is still a pleasure to do routine jobs if we have beautiful things to work with. For example, a person will really enjoy wiping off the dining room table, day after day, if it is a beautifully designed table made from some fine quality hardwood.

Therefore I want to address my closing remarks to the system programmers and the machine designers who produce the systems that the rest of us must work with. Please, give us tools that are a pleasure to use, especially for our routine assignments, instead of providing something we have to fight with. Please, give us tools that encourage us to write better programs, by enhancing our pleasure when we do so.

It's very hard for me to convince college freshmen that programming is beautiful, when the first thing I have to tell them is how to punch "slash slash JoB equals so-and-so." Even job control languages can be designed so that they are a pleasure to use, instead of being strictly functional.

Computer hardware designers can make their machines much more pleasant to use, for example by providing floating-point arithmetic which satisfies simple mathematical laws. The facilities presently available on most machines make the job of rigorous error analysis hopelessly difficult, but properly designed operations would encourage numerical analysts to provide better subroutines which have certified accuracy (cf. [20, p. 204]).

Let's consider also what software designers can do. One of the best ways to keep up the spirits of a system user is to provide routines that he can interact with. We shouldn't make systems too automatic, so that the action always goes on behind the scenes; we ought to give the programmer-user a chance to direct his creativity into useful channels. One thing all programmers have in common is that they enjoy working with machines; so let's keep them in the loop. Some tasks are best done by machine, while others are best done by human insight; and a properly designed system will find the right balance. (I have been trying to avoid misdirected automation for many years, cf. [18].)

Program measurement tools make a good case in point. For years, programmers have been unaware of how the real costs of computing are distributed in their programs. Experience indicates that nearly everybody has the wrong idea about the real bottlenecks in his programs; it is no wonder that attempts at efficiency go awry so often, when a programmer is never given a breakdown of costs according to the lines of code he has written. His job is something like that of a newly married couple who try to plan a balanced budget without knowing how much the individual items like food, shelter, and clothing will cost. All that we have been giving programmers is an optimizing compiler, which mysteriously does something to the programs it translates but which never explains what it does. Fortunately we are now finally seeing the appearance of systems which give the user credit for some intelligence; they automatically provide instrumentation of programs and appropriate feedback about the real costs. These experimental systems have been a huge success, because they produce measurable improvements, and especially because they are fun to use, so I am confident that it is only a matter of time before the use of such systems is standard operating procedure. My paper in Computing Surveys [21] discusses this further, and presents some ideas for other ways in which an appropriate interactive routine can enhance the satisfaction of user programmers.

Language designers also have an obligation to provide languages that encourage good style, since we all know that style is strongly influenced by the language in which it is expressed. The present surge of interest in structured programming has revealed that none of our existing languages is really ideal for dealing with program and data structure, nor is it clear what an ideal language should be. Therefore I look forward to many careful experiments in language design during the next few years.

Summary

To summarize: We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Therefore we can be glad that people who lecture at computer conferences speak about the state of the Art.



References

1. Bailey, Nathan. The Universal Etymological English Dictionary. T. Cox, London, 1727. See "Art," "Liberal," and "Science."

2. Bauer, Walter F., Juncosa, Mario L., and Perlis, Alan J. ACM publication policies and plans. J. ACM 6 (Apr. 1959), 121-122.

3. Bentham, Jeremy. The Rationale of Reward. Trans. from Theorie des peines et des recompenses, 1811, by Richard Smith, J. & H. L. Hunt, London, 1825.

4. The Century Dictionary and Cyclopedia 1. The Century Co., New York, 1889.

5. Clementi, Muzio. The Art of Playing the Piano. Trans. from L'art de jouer le pianoforte by Max Vogrich. Schirmer, New York, 1898.

6. Colvin, Sidney. "Art." Encyclopaedia Britannica, eds 9, 11, 12, 13, 1875-1926.

7. Coxeter, H. S. M. Convocation address, Proc. 4th Canadian Math. Congress, 1957, pp. 8-10.

8. Dijkstra, Edsger W. EWD316: A Short Introduction to the Art of Programming. T. H. Eindhoven, The Netherlands, Aug. 1971.

9. Ershov, A. P. Aesthetics and the human factor in programming. Comm. ACM 15 (July 1972), 501-505.

10. Fielden, Thomas. The Science of Pianoforte Technique. Macmillan, London, 927.

11. Gore, George. The Art of Scientific Discovery. Longmans, Green, London, 1878.

12. Hamilton, William. Lectures on Logic 1. Win. Blackwood, Edinburgh, 1874.

13. Hodges, John A. Elementary Photography: The "Amateur Photographer" Library 7. London, 1893. Sixth ed, revised and enlarged, 1907, p. 58.

14. Howard, C. Frusher. Howard's Art of Computation and golden rule for equation of payments for schools, business colleges and self-culture .... C.F. Howard, San Francisco, 1879.

15. Hummel, J.N. The Art of Playing the Piano Forte. Boosey, London, 1827.

16. Kernighan B.W., and Plauger, P.J. The Elements of Programming Style. McGraw-Hill, New York, 1974.

17. Kirwan, Richard. Elements of Mineralogy. Elmsly, London, 1784.

18. Knuth, Donald E. Minimizing drum latency time. J. ACM 8 (Apr. 1961), 119-150.

19. Knuth, Donald E., and Merner, J.N. ALGOL 60 confidential. Comm. ACM 4 (June 1961), 268-272.

20. Knuth, Donald E. Seminumerical Algorithms: The Art of Computer Programming 2. Addison-Wesley, Reading, Mass., 1969.

21. Knuth, Donald E. Structured programming with go to statements. Computing Surveys 6 (Dec. 1974), pages in makeup.

22. Kochevitsky, George. The Art of Piano Playing: A Scientific Approach. Summy-Birchard, Evanston, II1., 1967.

23. Lehmer, Emma. Number theory on the SWAC. Proc. Syrup. Applied Math. 6, Amer. Math. Soc. (1956), 103-108.

24. Mahesh Yogi, Maharishi. The Science of Being and Art of Living. Allen & Unwin, London, 1963.

25. Malevinsky, Moses L. The Science of Playwriting. Brentano's, New York, 1925.

26. Manna, Zohar, and Pnueli, Amir. Formalization of properties of functional programs. J. ACM 17 (July 1970), 555-569.

27. Marckwardt, Albert H, Preface to Funk and Wagnall's Standard College Dictionary. Harcourt, Brace & World, New York, 1963, vii.

28. Mill, John Stuart. A System Of Logic, Ratiocinative and Inductive. London, 1843. The quotations are from the introduction, S 2, and from Book 6, Chap. 11 (12 in later editions), S 5.

29. Mueller, Robert E. The Science of Art. John Day, New York, 1967.

30. Parsons, Albert Ross. The Science of Pianoforte Practice. Schirmer, New York, 1886.

31. Pedoe, Daniel. The Gentle Art of Mathematics. English U. Press, London, 1953.

32. Ruskin, John. The Stones of Venice 3. London, 1853.

33. Salton, G.A. Personal communication, June 21, 1974.

34. Snow, C.P. The two cultures. The New Statesman and Nation 52 (Oct. 6, 1956), 413-414.

35. Snow, C.P. The Two Cultures: and a Second Look. Cambridge University Press, 1964.

Copyright 1974, Association for Computing Machinery, Inc. General permission to republish, but not for profit, all or part of this material is granted provided that ACM's copyright notice is given and that reference is made to the publication, to its date of issue, and to the fact that reprinting privileges were granted by permission of the Association for Computing Machinery."

2008-12-14

>> Gruppe FOK, "Teleklettergarten", 2003

http://tkg.co.at.tt/

"A Kletterwand as a giant computer keyboard—this climbing wall (like the one alpinists use to train for a vertical ascent) has a computer keyboard integrated into it. Touching one of its 64 keys causes the corresponding program command to be executed on a local processor. The radio-equipped climbers obey the instructions of an operator. Experts from two fields—programming and mountain climbing—come together, and have to work together. The act of climbing introduces time delays and physical exertion into the otherwise instantaneous processes of programming and digital data processing."

video: http://www.youtube.com/watch?v=U0b0Z9qM5jI (starts at TC 1:15, ends at 2:35, language: german)


2008-12-09

Zachary Lieberman, Theodore Watson, "OpenFrameworks"

http://www.openframeworks.cc/

“OpenFrameWorks, is a new open source, cross platform, c++ library, which was designed by Zachary Lieberman (US) to make programming in c++ for students accessible and easy. In it, the developers wrap several different libraries like opengl for graphics, quicktime for movie playing and capturing, and free type for font rendering, into a convenient package in order to create a simple, intuitive framework for creating projects using c++. It is designed to work in freely available compilers, and will run under any of the current operating systems”

The developers of Openframeworks, Zachary Lieberman and Theodore Watson, are artists themselves. Examples of their works and collaborations:
Zach: DRAWN, Flong (together with Golan Levin)
Theo: Graffiti Research Lab

2008-07-13

>> Golan Levin, "AxisApplet", 2002

written for CODeDOC + also published on its website

http://www.whitney.org/arport/commissions/codedoc/Levin/index.html

http://www.whitney.org/arport/commissions/codedoc/Levin/axis.html




/*

AxisApplet by Golan Levin

http://www.flong.com/
15 August 2002.



-------------------------

"An Axis can't have more than three countries," explained Iraqi President

Saddam Hussein. "This is not my rule, it's tradition. In World War II you

had Germany, Italy, and Japan in the evil Axis. So you can only have three.

And a secret handshake. Ours is wicked cool."[1]



President Bush's recent assertion that North Korea, Iraq and Iran form an

"Axis of Evil"[2] was more than a calculated political act -- it was also

an imaginatively formal, geometric one, which had the effect of erecting a

monumental, virtual, globe-spanning triangle.



Axis is an online tool intended to broaden opportunities for similar kinds

of Axis creation. It allows its participant to connect any three points in

space [countries] into a new Axis of his or her own design. With the help

of multidimensional statistical metrics culled from international public

databases[3], the commonalities amongst the user's choices are revealed.

In this manner, Axis presents an inversion of Bush's praxis, obtaining

lexico-political meaning from the formal act of spatial selection.





-------------------------

References:

[1] "Angered by Snubbing, Libya, China, Syria Form 'Axis of Just as Evil'".

SatireWire, 1/30/2002. http://www.satirewire.com/news/jan02/axis.shtml

[2] "In Speech, Bush Calls Iraq, Iran and North Korea 'Axis of Evil'".

State of the Union Address, 1/29/2002.

[3] The databases referenced in this project are listed at the

end of this document.



-------------------------

Acknowledgements:

Thanks to Christiane Paul and the Whitney Museum for initiating and

sponsoring Axis. Andrea Boykowycz generously researched and prepared the

database materials for this project. Additional thanks to Tanya Bezreh

and Zachary Lieberman for enjoyable brainstorming. The map used in Axis

was created with Tony Steinke's excellent online MapMaker.



-------------------------

Caveats:

For practical reasons of display, some countries whose areas are less than

50000 square km do not appear in Axis. The boundaries and names shown and

the designations used in Axis do not imply the expression of any opinion

whatsoever on the part of the author or publisher concerning the legal

status of any country or territory of its authorities, or concerning the

delimitation of its frontiers or boundaries.



Although we have tried our best to document all possible Axes, our data

indicates that not all threesomes of countries have yet completed their

Axis registration form. Thus only approximately half of the 6 million

possible Axes are displayable at this time.

*/







import java.awt.*;

import java.applet.*;

import java.awt.image.*;



public class AxisApplet extends Applet implements Runnable {



//-----------------

// Declaration of variables.

// See end of document for inlined database.

Thread appletThread = null;

boolean stopThreadP = false;

int csrX, csrY;

int iter = 0;



FontMetrics fm,fa;

String axisStr = "";

String ctryStr = "";

String liteStr = "";

String axisStr2= "";

char iCh[] = new char[3];

boolean doText = true;

Font axisFont = new Font("Arial", Font.PLAIN, 11);

Font ctryFont = new Font("Helvetica", Font.BOLD, 14);

Font liteFont = new Font("Arial", Font.BOLD, 12);

Color colb = new Color(102,102,102);

Color col1 = new Color(72,72,72);

Color col2 = new Color(60,60,60);

Color colu;



final int FF = 255;

final int BASE = 72;

final int PDEC = 8;

final int MIN_SLEEP = 11;

final int MAX_PLAY_TIME = 19;

final int NCOL = 256;

final int NBIT = 8;

final int IW = 919;

final int IH = 476;

final int IY = 64;

final int APP_W = 919;

final int APP_H = IH+IY;

final int NPELS = IW*IH;

final int AXI_W = APP_W*2/3;

final int GC_FREQ = 120;



Image displayArea, srcImg, dstImg;

MediaTracker tracker;

PixelGrabber grabber;

MemoryImageSource mis;

IndexColorModel pal;

boolean loadedSrc = false;

boolean filtered = false;

byte srcArray[];

int csrIndex = 0;



byte palr[]; byte palg[]; byte palb[];

byte curr[]; byte curg[]; byte curb[];

int whichSel[];

int highlites[];

int curCtryID;

int bx,by,bw,bh;

float bxf,byf,bxa,bxb,bya,byb;



//-----------------

// Initialization of variables.

public void init(){

resize (APP_W, APP_H);

displayArea = createImage (APP_W, APP_H);

srcImg = createImage (APP_W, APP_H);

dstImg = createImage (APP_W, APP_H);

srcArray = new byte[APP_W*APP_H];

tracker = new MediaTracker(this);

prepareImaging("world.gif");

fm = this.getFontMetrics(liteFont);

fa = this.getFontMetrics(axisFont);



curCtryID = 0;

whichSel = new int[3];

highlites = new int[nCountries];

for (int i=0; i<3; i++){ whichSel[i]=-1;}

for (int i=0; i
bxf=APP_W/2; byf=APP_H/2;

bxa=0.36f; bxb=1.0f-bxa;

bya=0.29f; byb=1.0f-bya;

bh=20;

}



//-----------------

// Generic threaded Applet plumbing.

public void start(){

stopThreadP = false;

requestFocus();

if (appletThread == null){

appletThread = new Thread (this);

appletThread.start();

}

}

public void stop(){

stopThreadP = true;

if (appletThread != null){

appletThread.stop();

appletThread = null;

}

}

public void destroy(){;}

public void update(Graphics g) { paint(g);}

public void update(){ paint(this.getGraphics());}



public void run(){

while (appletThread != null) {

long then = System.currentTimeMillis();

compute();

update();

try{ if (!stopThreadP) {

try {Thread.sleep(MIN_SLEEP);}

catch(InterruptedException e){}

long now = System.currentTimeMillis();

int napTime = (int) (MAX_PLAY_TIME - (now-then));

if (napTime > 0) {

try { Thread.sleep(napTime);}

catch (InterruptedException e) {}

}

} else {

if (appletThread != null) {

appletThread.stop();

appletThread = null;

break;

}

}

} catch (Exception e) { break;}

}

}



//-----------------

// Imaging and palette plumbing.

void prepareImaging(String imageName) {



// load in the background image

boolean allLoaded = false;

if (!allLoaded) {

srcImg = getImage (getDocumentBase(),imageName);

tracker.addImage (srcImg, 0);

try { tracker.waitForAll(); allLoaded = !tracker.isErrorAny();

} catch (InterruptedException e){};

if(!allLoaded){stop();}

}



// store the image's pixel values for later testing

grabber = new PixelGrabber(srcImg,0,0,APP_W,APP_H,false);

try { grabber.grabPixels(); }

catch (InterruptedException e){;}

if ((grabber.status() & ImageObserver.ABORT)!=0){;}

srcArray = (byte[])(grabber.getPixels());

loadedSrc = true;

grabber = null;



// construct an interpolated color palette

palr = new byte[NCOL]; palg = new byte[NCOL]; palb = new byte[NCOL];

curr = new byte[NCOL]; curg = new byte[NCOL]; curb = new byte[NCOL];

for (int i=0; i
float fi = (float)i/(float)(NCOL-1);

curr[i] = curg[i] = curb[i] = (byte)0;

palr[i]=(byte)(BASE+40.0*Math.pow(fi,9.0));

palg[i]=(byte)(BASE+80.0*Math.pow(fi,6.0));

palb[i]=(byte)(BASE+120.0*Math.pow(fi,3.0));

}



// create a new image which uses the palette

colu = new Color(FF&palr[NCOL-1],FF&palg[NCOL-1],FF&palb[NCOL-1]);

pal = new IndexColorModel(NBIT,NCOL,curr,curg,curb);

mis = new MemoryImageSource(IW,IH,pal,srcArray,0,IW);

mis.setAnimated(false);

dstImg = createImage(mis);

}



//------------------

// Central computation method.

synchronized void compute(){

if (loadedSrc){

highlightCountryAtCursor(csrX, csrY);



// Update the current palette

for (int i=0; i
int vali = highlites[i] = Math.max(0, highlites[i]-PDEC);

curr[i]=palr[vali]; curg[i]=palg[vali]; curb[i]=palb[vali];

}



// Flash the selected countries

int which, nSelected = 0;

for (int i=0; i<3; i++){

which = whichSel[i];

if ((which >= 0)&&(which
curr[which]=curg[which]=(byte)FF;

curb[which]=0;

nSelected++;

}

}



// Construct the displayed texts:

// Fetch and assemble the list of countries

ctryStr = "";

nSelectedCountries = nSelected;

if (nSelected > 0){

long comProp1 = Long.MAX_VALUE;

long comProp2 = Long.MAX_VALUE;

for (int i=(nSelected-1);i>=0;i--){

which = whichSel[i];

if ((which>=0)&&(which
ctryStr += countryNames[which]+((i>0)?", ":" : ");

comProp1 &= countryProp1[which];

comProp2 &= countryProp2[which];

iCh[i]=countryNames[which].charAt(0);

}

}



// Assemble the axis string

if(doText){



// intersect the properties

int nCommonProp1 = 0;

int nCommonProp2 = 0;

for (int b=0;b<63;b++){ if(((comProp1>>>b)&1)>0){nCommonProp1++;}}

for (int b=0;b>>b)&1)>0){nCommonProp2++;}}

int nProps = nCommonProp1+nCommonProp2;



// Use various grammatical rules to make something sensible

axisStr2 = axisStr = "";

if (nSelected == 3){

boolean initial=((iCh[0]==iCh[1])&&(iCh[1]==iCh[2]));

if (nProps>0){

axisStr="Axis of ";

int prop=0;

long common;

int bit,strw;

boolean wordy=false;

for (int b=0;b
common = (b<63)?comProp1:comProp2;

bit = (b<63)?b:(b-63);

if (((common>>>bit)&1)>0){

String pnb=propNames[b];

if((nProps==1)&&(propAdjs[b]>0)){

axisStr+="the "+pnb;

if(initial){axisStr+=letStr+iCh[0];}

axisStr+=".";

} else {

strw=fa.stringWidth(axisStr+pnb);

if((++prop)
if(wordy||(strw>AXI_W)){

axisStr2+=pnb;

if(propVerbs[b]>0){axisStr2+="ing";}

axisStr2+=(nProps>2)?", ":" ";

wordy=true;

} else {

axisStr+=pnb;

if(propVerbs[b]>0){axisStr+="ing";}

axisStr+=(nProps>2)?", ":" ";

}

} else {

if(wordy||(strw>AXI_W)){

axisStr2+=pnb;

axisStr2+=(propVerbs[b]>0)?"ers":" countries";

if(initial){axisStr2+=letStr+iCh[0];}

axisStr2+=".";

wordy=true;

} else {

axisStr+=pnb;

axisStr+=(propVerbs[b]>0)?"ers":" countries";

if(initial){axisStr+=letStr+iCh[0];}

axisStr+=".";

}

}

}

}

}

} else {

if(initial){axisStr="Axis of countries"+letStr+iCh[0]+".";}

else{axisStr="These countries have not yet registered their Axis.";}

}

}

}

doText=false;

}



// Construct the floating indicator box

bw = Math.max(fm.stringWidth(liteStr)+12,24);

bx = (int)Math.round(bxf=bxa*bxf+bxb*((csrX>(bw+20))?(csrX-bw-20):(csrX+20)));

by = (int)Math.round(byf=bya*byf+byb*(csrY-bh/2));



// Update the world

pal = null; pal = new IndexColorModel(NBIT,NCOL,curr,curg,curb);

mis = null; mis = new MemoryImageSource(IW,IH,pal,srcArray,0,IW);

mis.setAnimated(false);

dstImg.flush();

dstImg = null;

dstImg = createImage(mis);

if(((++iter)%GC_FREQ)==0){System.gc();}

filtered = true;

}

}



//-----------------

// User interaction methods.

public boolean mouseDown (Event evt, int x, int y){

csrX = x; csrY = y; selectCountryAtCursor(x,y); return true;}

public boolean mouseMove (Event evt, int x, int y){

csrX = x; csrY = y; highlightCountryAtCursor(x,y); return true;}

public boolean mouseDrag (Event evt, int x, int y){

csrX = x; csrY = y; highlightCountryAtCursor(x,y); return true;}



void selectCountryAtCursor(int x, int y){

if ((x>=0)&&(x
(y>=IY)&&(y
csrIndex = (y-IY)*IW + x;

if ((csrIndex < NPELS)&&(csrIndex>=0)){

int ctryID = 0xFF & srcArray[csrIndex];

if ((ctryID >=0) && (ctryID < nCountries)){

if ((ctryID!=whichSel[0])&&

(ctryID!=whichSel[1])&&

(ctryID!=whichSel[2])){

whichSel[2]=whichSel[1];

whichSel[1]=whichSel[0];

whichSel[0]=(curCtryID = ctryID);

}

} else {

ctryStr = axisStr2 = axisStr = liteStr = "";

if (whichSel[0]>-1){highlites[whichSel[0]]=FF;}

if (whichSel[1]>-1){highlites[whichSel[1]]=FF;}

if (whichSel[2]>-1){highlites[whichSel[2]]=FF;}

whichSel[0]=whichSel[1]=whichSel[2]=-1;

}

}

}

}



void highlightCountryAtCursor(int x, int y){

doText=true;

csrIndex = -1;

if ((x>=0)&&(x
(y>=IY)&&(y
csrIndex = (y-IY)*IW + x;

if ((csrIndex < NPELS)&&(csrIndex>=0)){

int ctryID = 0xFF & srcArray[csrIndex];

if ((ctryID >=0) && (ctryID < nCountries)){

highlites[curCtryID=ctryID] = FF;

liteStr = ""+countryNames[curCtryID];

} else {

liteStr="";

}

}

}

}



//-----------------

// Double-buffered rendering; the main drawing method

public synchronized void paint(Graphics g) {

try {

// Get a nice fresh rectangle

Graphics gr = displayArea.getGraphics();

gr.setColor(colb);

gr.fillRect(0,0, APP_W, IY);

gr.setColor(Color.black);

if (filtered){ gr.drawImage(dstImg, 0,IY,this);}

else { gr.fillRect(0,0, APP_W, APP_H);}

gr.drawRect(0,IY-1, IW-1, IH);



// Draw the list of countries

gr.setFont(ctryFont);

gr.setColor(col2);

gr.drawString(ctryStr, 11, 22);

gr.setColor((nSelectedCountries==3)?Color.yellow:Color.gray);

gr.drawString(ctryStr, 10, 21);



// Draw the axis string

gr.setFont(axisFont);

gr.setColor(col2);

gr.drawString(axisStr, 11, 38);

gr.drawString(axisStr2,11, 54);

gr.setColor(Color.yellow);

gr.drawString(axisStr, 10, 37);

gr.drawString(axisStr2,10, 53);



// Draw the floating indicator box

if ((liteStr!="")&&(csrY>=IY)){

gr.setColor(colb);

gr.fillRect(bx,by,bw,bh);

gr.setColor(Color.black);

gr.drawRect(bx,by,bw,bh);

if ((whichSel[0]==curCtryID)||

(whichSel[1]==curCtryID)||

(whichSel[2]==curCtryID)){

gr.setColor(Color.yellow);

} else { gr.setColor(colu);}

gr.setFont(liteFont);

gr.drawString(liteStr,bx+6,by+bh-5);

}



// Swap the buffers and blit to screen

g.drawImage(displayArea, 0, 0, this);

gr.dispose();

}

catch (NullPointerException e) {

System.out.println("Error: " + e.getMessage());

}

}



//-----------------

// The database tables of countries and their properties.

static final String countryNames[] = {

"United States of America","Canada","Mexico","Guatemala","Cuba","Haiti","Dominican Republic","Belize",

"Honduras","Nicaragua","Costa Rica","Panama","Colombia","Venezuela","Guyana","Suriname",

"French Guyana","Ecuador","Peru","Bolivia","Chile","Argentina","Uruguay","Andorra",

"Paraguay","Brazil","Morocco","Armenia","Mauritania","Senegal","Gambia","Guinea-Bissau",

"Guinea","Sierra Leone","Liberia","Cote d'Ivoire","Ghana","Togo","Benin","Nigeria",

"Cameroon","Equatorial Guinea","Gabon","Republic of the Congo",

"Democratic Republic of Congo","Angola","Namibia","South Africa",

"Mozambique","Tanzania","Kenya","Somalia","Ethiopia","Sudan","Egypt","Libya",

"Tunisia","Algeria","Mali","Burkina Faso","Niger","Chad","Central African Republic","Uganda",

"Rwanda","Burundi","Zambia","Malawi","Zimbabwe","Botswana","Swaziland","Lesotho",

"Madagascar","Greece","Albania","Yugoslavia","Italy","Spain","Portugal","France",

"United Kingdom","Ireland","Azerbaijan","Belgium","Netherlands","Denmark","Germany","Switzerland",

"Austria","Hungary","Czech Republic","Poland","Sweden","Norway","Finland","Romania",

"Bulgaria","Turkey","Syria","Israel","Jordan","Iraq","Bahrain","Kuwait",

"Saudi Arabia","Belarus","Yemen","Oman","United Arab Emirates","Iran","Afghanistan","Pakistan",

"India","Sri Lanka","Nepal","Bosnia and Herzegovina","Bhutan","Bangladesh","Croatia","Cyprus",

"Burma","Thailand","Laos","Cambodia","Vietnam","Off-By-One Error","Malaysia","Singapore",

"Indonesia","Djibouti","Brunei","El Salvador","Hong Kong","Eritrea","Estonia","Philippines",

"Georgia","Papua New Guinea","Australia","Gibraltar","New Zealand","China","North Korea","South Korea",

"Mongolia","Japan","Russia","Greenland","Iceland","Kazakhstan","Kyrgyzstan","Latvia",

"Lebanon","Liechtenstein","Lithuania","Luxembourg","Macedonia","Moldova",

"Monaco","Qatar","Slovak Republic","Slovenia","Taiwan","Tajikistan","Turkmenistan",

"Ukraine","Uzbekistan","Antigua and Barbuda","Bahamas","Barbados","Bermuda","Cape Verde",

"Dominica","Grenada","Guadeloupe","Guam","Jamaica","Malta","Mauritius","New Caledonia","Palau",

"Puerto Rico","Reunion","Seychelles","Trinidad and Tobago"

};

static final String letStr = " whose names start with the letter ";



// The set of properties a country can have.

static final String propNames[] = {

"itsy-bitsy","small","huge","densely-populated",

"sparsely-populated","long and skinny","peninsular","island-dwell",

"landlocked","rainy","arid","cloudy",

"earthquake-prone","officially polylingual","officially Anglophone","Portuguese-speak",

"politically or territorially dependent","largely illiterate","heavily-indebted and poor","monarchic",

"dictatorially autocratic","communist","Slavic","predominantly Muslim",

"predominantly Catholic","predominantly Orthodox","predominantly Buddhist","Scandinavian",

"Baltic","Mediterranean","South Asian","Southeast Asian",

"Sub-Saharan African","Southern African","South American","Central American",

"South Pacific","East Asian","Middle Eastern","Central European",

"North African","Balkan","former Soviet","China-neighboring",

"camel-driv","tiger-roamed","pachyderm-keep","Olympic badminton medal winn",

"oil-produc","vodka-export","nuclear-powered","juvenile-offender execut",

"tourism-dependent","Olympic judo Silver medal winn","violence-ravaged","pepper-produc",

"cricket-play","oil-guzzl","cannabis-cultivat","bug-eat",

"least corrupt","insufficiently-reproducing","fermented mare's milk drink","orange-white-and-green flag-wav",

"US visa-waiver pilot-program participat","US bullet-buy","ancient pyramid-maintain","hydroelectric",

"border-disput","AIDS crisis-stricken","perceived as egregiously corrupt","undersexed",

"heavily landmined","person-traffick","shark-infested","Simpsons' travel destination",

"former French colony","comparatively depressed","comparatively happy","former Ottoman",

"former Sassanid","former Habsburg","former Roman","frequently lightning-struck",

"Australopithecus fossil-hous","population-skyrocket","EU","UN Security Council Permanent Member",

"G7","Fishery Committee for the Eastern Central Atlantic member"

};



int nSelectedCountries = 0;

static final int nCountries = countryNames.length;

static final int nProperties = propNames.length;

static final int nProperties2 = nProperties-63;



// Codes for the syntactic combination of properties:

// which properties are verbs, adjectives, etc.

static final int propVerbs[] = {

0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,1,

0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,

0,0,0,0, 0,0,0,0, 0,0,0,0, 1,0,1,1,

1,1,0,1, 0,1,0,1, 1,1,1,1, 0,0,1,1,

1,1,1,0, 1,0,0,0, 0,1,0,0, 0,0,0,0,

0,0,0,0, 1,1,0,0, 0,0,0,0, 0,1};



static final int propAdjs[] = {

1,1,1,1, 1,1,0,0, 1,1,1,1, 1,1,1,0,

1,1,1,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,

0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0,

0,0,0,0, 0,0,0,0, 0,0,0,0, 1,1,0,0,

0,0,0,0, 0,0,0,1, 1,0,1,0, 0,1,1,0,

0,0,0,1, 0,0,0,0, 0,0,0,0, 0,0};



// Binary property subscriptions, per country,

// represented compactly as decimal Longs.

// We have more property descriptors than bits in a Long,

// so we split the property annotations across two arrays.

static final long countryProp1[] = {

481603685151961092L,1668302186964082692L,907193884314963968L,869476237435731968L,

9288674250326176L,4503599644160128L,4785074620858496L,293296960109035522L,

864691162831917056L,576460786680205568L,292734010155602432L,4785108980597248L,

883549969091400192L,576742244476780544L,864691145635282944L,576742244460003344L,

288230393348424192L,576742244476787200L,576742244476792832L,576742244477042944L,

576742244476784672L,74027936071553024L,17196646400L,148618787720012033L,

882705544161263872L,875668669743530500L,329062940018218016L,2613798624001265920L,

18691706455056L,288318341385691648L,4521191822213666L,18084767254086144L,

18084767262318592L,18084771557294592L,18084767253938688L,288582219872862208L,

288582224167845888L,70373039415328L,281479272071200L,110690038886457344L,

576812600320614912L,351848033681410L,576812600319279104L,576812600319549440L,

883057374981791744L,594827003124023296L,648606315861525520L,938789424664174592L,

882775904299024384L,648588719380758528L,941604170136576000L,18102359448380416L,

18103458951753984L,18384933937742848L,49840037998629888L,300167220691984L,

40832563865977856L,54343362748093440L,89060450510080L,70373039546624L,

89060450641152L,18103458951603456L,576531125342839040L,666603117890257152L,

18084771566215426L,18014402821497090L,576531129637814528L,576531129637822720L,

666603122184962304L,576531129637560592L,70377334661378L,4503608217854210L,

869194736672710784L,185492010222751808L,283674008358912L,2342718430223798272L,

266556803498651712L,195625109368086528L,149463212650172416L,231653906386518016L,

1235956622737041536L,217017207060719744L,306548239878849536L,155092712184883202L,

1407093408577103872L,1369938711785515008L,227150855961313280L,1307451266821005568L,

5348574330093824L,2352849880096964864L,2307813883810676992L,9852173961658368L,

1299007017654421504L,1297881117747587168L,1298725542677194752L,2343842131103191040L,

2352851529385381888L,36310272540938304L,299342585922560L,99660009356420098L,

5084416653657088L,299342050239488L,4802666799039627L,299067171667970L,

146666329939117056L,2594922208379797760L,2551141862999040L,299342049575936L,

72356936087502848L,2551141862740992L,4917948385283028224L,75743158097572864L,

938850989799141376L,94645960986067072L,364905920100573472L,18016597536944128L,

114350350663938L,72444623213166600L,22801672157802496L,22517998707290242L,

18410225985131008L,869581758390599680L,292848327205323552L,869300283413889024L,

576856578706377248L,0L,649046114070692352L,1225260575836102793L,

905751292838679168L,18691706065922L,281477133131779L,288793360481652738L,

76569989758402561L,18033090207170560L,2306691832458772480L,288511853292712064L,

2599425808002985984L,653303491812946560L,1946417124859724948L,76561193682157569L,

1374442379997638784L,614723894391083012L,325592883920896L,767160186463850560L,

4621282555981725968L,767582398996545664L,2605099288006494212L,75920L,

1302103242397718672L,4900774013648769280L,4900211063703732480L,2306410357482061824L,

18032266118702082L,4503599644672257L,2307818282138206208L,1153484454577578241L,

36030996079972610L,288797724185198848L,4503600181542921L,299342049576002L,

1970874613760256L,1128098951081984L,145522700465475720L,4918225462213214464L,

4611989483645043712L,2596048108286640128L,4621559632854254848L,4503599627911297L,

4785074604097664L,581245826907521161L,76561193665380481L,45185L,

2594073385382199425L,2598576985010094209L,4503599644213377L,4503599644237953L,

869757678035943554L,4503600181043337L,869194736672456841L,68736319616L,

4503601774878849L,4785074620948608L,8606777473L,4503599644172417L,

3175882179406217345L

};

static final long countryProp2[] = {

117479460L,33558580L,268437516L,60L,67108864L,8224L,4L,134217764L,

4194364L,164L,4194356L,536870932L,1048628L,4227120L,36L,48L,

4202528L,148L,536870932L,134217892L,36L,36L,22L,524294L,

537919504L,134223892L,336077344L,82976L,335552512L,67117056L,67108864L,68157440L,

68165680L,68157440L,67108864L,71311489L,68157456L,68165632L,201334800L,67109024L,

67117296L,67108896L,67117104L,68165680L,68157488L,528L,84L,2099300L,

268438096L,2103472L,6291696L,4196384L,2097712L,1115184L,590376L,4784160L,

598016L,598048L,268443664L,134225920L,8225L,2105344L,8272L,1048752L,

48L,134225936L,80L,268435552L,4194884L,134217792L,96L,64L,

269492272L,76088356L,589840L,524320L,109576198L,76283942L,545783814L,126357542L,

59248678L,8421415L,131232L,143130630L,76316678L,8421414L,41943046L,524310L,

9175062L,852004L,262180L,603979780L,8421382L,67108918L,8388614L,67960832L,

134758404L,590884L,4718624L,4784164L,4718596L,4390944L,134218752L,196612L,

4262916L,134235136L,0L,4194304L,4195364L,4326432L,132624L,538050720L,

289L,16L,16L,135071248L,134217744L,134217888L,786996L,589856L,

134218784L,1049124L,8208L,1058336L,1057328L,0L,269484064L,1048614L,

1049760L,10240L,134217762L,2060L,2304L,544L,0L,536870948L,

606224L,536872960L,38918L,524288L,22L,16777512L,48L,67108896L,

268435456L,100669734L,16794784L,16L,32822L,32L,1072L,16L,

599044L,524322L,32L,8912914L,269025280L,268517408L,268959746L,4195328L,

262144L,786470L,288L,1072L,131105L,82048L,0L,0L,

134217732L,134217732L,134217728L,67108864L,8208L,0L,8192L,0L,

4L,268959744L,268443680L,10244L,536870912L,32768L,8192L,8224L,4L

};

}





/*

-------------------------------------------------------------------------

Databases referenced in this project:



http://www.cia.gov/cia/publications/factbook/

http://www.fao.org/WAICENT/FAOINFO/SUSTDEV/EIdirect/climate/EIsp0007.htm

http://www.fao.org/WAICENT/FAOINFO/SUSTDEV/EIdirect/climate/EIsp0056.htm

http://www.fao.org/WAICENT/FAOINFO/SUSTDEV/EIdirect/climate/EIsp0009.htm

http://www.ethnologue.com/country_index.asp?place=all

http://www.ethnologue.com/show_language.asp?code=POR

http://unstats.un.org/unsd/mi/mi_results.asp?row_ID=656&fID=r5

http://www.worldbank.org/hipc/about/map/map.html

http://www.panda.org/species/tiger/distribution.cfm

http://www.olympic.org/uk/athletes/results/search_r_uk.asp

http://www.eia.doe.gov/emeu/iea/tableg2.html

http://www.ivodka.com/vodka-by-country.html

http://www.eia.doe.gov/oiaf/ieo/figure_62.html

http://www.deathpenaltyinfo.org/juvchar.html

http://www.olympic.org/uk/athletes/results/search_r_uk.asp

http://www.hotnsaucey.com/countries.html

http://www.cricket.org/link_to_database/NATIONAL/ICC/

http://www.bp.com/centres/energy2002/oil/consumption.asp#

http://www.food-insects.com/book7_31/

http://www.transparency.org/cpi/2001/cpi2001.html#cpi

http://138.251.140.21/~josh/flags/alpha.html

http://www.foreignborn.com/visas_imm/other_visas/11pilot_program.htm

http://www.unaids.org/barcelona/presskit/barcelona%20report/table.html

http://www.boston.com/news/daily/27/sex_chart.htm

http://www.landmines.org/glc/index-glc.asp

http://www.state.gov/g/tip/rls/tiprpt/2002/10678.htm

http://www.flmnh.ufl.edu/fish/Sharks/statistics/GAttack/World.htm

http://www.snpp.com/episodeguide.html

http://www.eur.nl/fsw/research/happiness

http://www.fsmitha.com/h3/map21-ot.html

http://www.fsmitha.com/h1/map20per.htm

http://www.fsmitha.com/h1/map19rm.htm

http://faculty.vassar.edu/piketay/evolution/SiteMap.html

http://users.erols.com/mwhite28/20c-pop3.htm

http://www.fao.org/fi/body/rfb/cecaf/cecaf_mapandmem.htm

"In the Line of Fire," National Geographic, August 2002



*/









Plain text code



To view Axis properly, please widen your browser window to encompass this line:






>> Cornelia Sollfrank, "Women Hackers", 1999

Women Hackers--
a report from the mission to locate subversive women on the net


Cornelia Sollfrank, Rotterdam, 1999
First published in 'next Cyberfeminist International',1999


>> What is a hacker?
>> What does hacking mean?
>> Women hackers


Hacking and Cyberfeminism

Today the net has become a virtual, real and omnipresent part of life. Those who are not on-line find themselves confronted with www-addresses every-where, with advertisements for IT-technologies in TV commercials and on bill-boards. They feel surrounded by this new, mysterious presence. And this pervasive image carries the message that life will be better thanks to the high-speed information highway. We will all work and learn more effectively, consume better and cheaper products, get better medical care, have more interesting friends and more fulfilling love-stories when we are on-line. But there is also a dark side to this glittering promise: the exploitation of third-world labour, the monopolisation of software, the globalization of economies, compre-hensive information control and surveillance, and the cyborgization of our bodies. Both technophilia and technophobia flourish, creating an ever-growing gap. It is there, within that gap, instigated by the insiders---the developers and users of technology--that a politically motivated, constructive critique could and should take place. Within that specialized company there is one notable cultural environment which can be located and defined--the hacker scene.

What is a hacker?
Before going further I think it is necessary to take a closer look at the meaning of the term "hacker". A clear definition is difficult because the word has changed since it came into existence, and also because of the discrepancy between the hackers’ self-image (self-definition), and the public image (mostly defined by the media). When the term was invented in the 60s at MIT, it was definitely an honour-able title. Hackers were known for their resourcefulness and their persistence in solving software-related problems. The first hackers created the (as described in ‘hacker ethics’Stephen Levy’s book "Hackers", 1984) which was based on the idea of freedom of information and respect for other peoples’ data. But due to some spectacular hacks in the 80s and their subsequent representation in the media, the term hacker today has a negative image and criminal connotations. Today, hackers are fighting this negative conception by referring back to the early ‘hacker ethics’.

I would like to offer a variety of definitions, drawing on the Hacker Jargon Dictionary by Eric S. Raymond: There we can read that a hacker (originally, someone who makes furniture with an axe) is:

1. A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users who prefer to learn only the minimum necessary.
2. One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming.
3. A person capable of appreciating hack value.
4. A person who is good at programming quickly.
5. An expert at a particular program, or one who frequently works with or on it; as in 'a Unix hacker'. (Definitions 1 through 5 are correlated, and people who fit them congregate.)
6. An expert or enthusiast of any kind. One might be an astronomy hacker, for example.
7. One who enjoys the intellectual challenge of creatively overcoming or circumventing limitations.
8. [deprecating] A malicious meddler who tries to discover sensitive information by poking around. Hence 'password hacker', 'network hacker'. The correct term for this sense is "cracker."

These definitions do not only refer to computer hacking but also provide the opportunity to expand the term to include all kinds of systems (see 6.+7.). They point out that the actual terrain is not necessarily technology, and that the main characteristic of hacking is the attitude in which something is done. But in addition to the ‘right’ attitude, knowledge and skills are indispensable. So one of the most famous hackers’ mottoes is: "Hacking: Attitude and Competence!". To generalise, one could say that hacking is all about learning and free inquiry.

This kind of inquisitiveness, however, does not have exclusively positive connotations; it is also equated with poking one’s nose where it does not belong and asking awkward questions at the wrong time and place (1), especially when hackers' actions reveal the unreliability and insecurity of systems which are sold to the public as secure. In these cases, hackers are labelled by politicians and the media as dangerous criminals who steal sensitive or commercially valuable information, cause damage and endanger, in a worstcase scenario, national security. This is how hackers are usually viewed by the public, and onto them is projected all the uneasiness regarding new technologies. The fear of hackers is nothing other than the fear of uncontroll-able and, for most people, mysterious, new technologies.

In order to distinguish themselves from people with purely criminal motives--who do, of course, exist--hackers themselves introduced the term ‘cracker’ (see 8.). Cracker might be defined as a kind of hacker, hacker minus attitude (or with too much!). But this distinction has not gained wide acceptance. Nowadays, the term ‘cracking’ is mostly applied to a specific branch of hacking. There is a huge and well-organized scene which specializes in cracking all kinds of software, from operating systems to games. The ‘Crackers’ use the net only as tool for distribution, and do not work explicitly on network concerns. Cracking is of course illegal, because it means that licensed and copyrighted software is published for free; but crackers claim that what they are doing is legitimate, since according to the original hackers’ ethics, information should be free.



What does hacking mean?
The first spectacular computer hacks made the hacked systems visible. Formerly closed networks suddenly became public, and of public interest. The public had not previously known of the existence of such systems nor had any idea of their importance. The rendering visible of these systems raised questions such as who stands behind them, who controls and manages them and in whose interests.

Hacking into a computer system means coming face to face not just with the technological apparatus, but also with the knowledge and information framework which backs it up. The technological systems are run by so-called experts who, in the organisation and operation of the system, wield a lot of power. That these experts often fail, and that their systems are unreliable is an incidental discovery of hacking, and certainly helps to deconstruct the image of the suggested all-pervading power. But the more important insight is that technological systems are about controlling knowledge and information and therefore about controlling power. This adds a political dimension to hacking, although most of the early hackers weren't particularly concerned about the political dimensions of what they were doing. (Even now, many hackers prefer to focus on the 'sporting' aspect, placing themselves in the political spectrum as "liberal" or even "uninterested".)

There have always been closed knowledge systems in most societies, and technology is traditionally used for building and maintaining such repressive structures. Anything that liberates such information is, therefore, anti-repressive, and aids the struggle for open knowledge systems. Hackers have created a new category of illegal knowledge. They are developing effective tools and strategies of resistance that we need in the information society.

Working for a free flow of information is one concern; another, very important and constantly growing concern is the development and distribution of free software. The open source movement became a mass movement and has proved that collaboratively and carefully developed software (e.g. Linux operating system) is not just cheaper, but often of better quality than commercial products.

And, as a third main concern of the hacking community, I would like to name cryptography, the efforts to render data traffic anonymous in order to protect sensitive data and the private sphere of the individual. So, on the one hand hackers work for the opening of knowledge systems and provide handy tools for this undertaking, and on the other hand work for the protection of the individual. Actually, we are experiencing a kind of revival of the hacker myth in the late 1990s. It is now being acknowledged that hackers represent a group of experts who practise resistance from the inside, whereas in the 1980s hackers were an elite handful of peo-ple who could easily be criminalized by the mass media, given that what they were doing was, as far as the broader public was concerned, cloaked in a cloud of mystery. Hackers were labelled the ‘wizards of the information age’ as they seemed to be able to control the machines which control people. On a technological level, hackers are able to look behind the scenes of the new media/ technologies and therefore certainly have a lot of power. But nowadays they are starting to organize and publish their ideas, reach a wider public and acquire political influence. Thus people today have a better understanding of the concerns of hackers than they did ten years ago. Hackers are still the heroes of the information age as they seem to be the only ones who can adequately respond to the challenges which go along with the complete restructuring of our society, but they have also started to demystify their own process.

The computer-literate rebel as a species was anticipated by science fiction. It is not just that many hackers find their role-models in cyberpunk sci-fi stories, but also that many of the literary fantasies of the 80s have meanwhile become reality. According to Rosi Braidotti (2), sci-fi writers "strip the veneer of nostalgia that covers up the inadequacies of the present cultural (dis)order, and push the crisis to its innermost resolution".

Further evidence of the increasingly positive connotation of hacking is the fact that the term itself is being appropriated in many non-technological fields. It stands for a method of thinking and working which breaks up or into all kinds of systems and questions their reliability or integrity. You can, for example, hack theory, competitions, political organisations, the body, gender or the future. One could also say that the term "hacking" is often used today in the sense which people ten years ago would have used "deconstruction". But hacking contains the additional implication of subversion and underground, and has become popular in a culture where political activism is also a question of lifestyle.



Women hackers
In the course of pursuing my interest in hackers and their work, I attended several hackers’ meetings. Naturally, as a cyberfeminist, I was looking for women hackers. In the beginning I tried to ignore the fact that the few women who participated in these meetings were not actively involved in computer hacking, and did not consider themselves to be hackers. It took me a while to realize that in fact there were NO women hackers. Why?

In the beginning I assumed that this was more or less a coincidence, and I started to search more specifically for them. I asked around, talked to hackers, posted calls on several mailing lists and in news groups. Most people told me that there certainly WERE female hackers, but nobody had any detailed information. A German correspondent wrote that he had once seen a woman hacker at a meeting in Holland. She had shown up and then disappeared, a bit like a ghost, and he sounded rather sad that he wasn't able to get to know her better.

I also addressed certain people personally in my research, for example Bruce Sterling, a writer and specialist in the US-hacker scene. He wrote me back: "It's true, there are NO women hackers, but it no longer amazes me. Hacking is a teenage-male voyeur-thrill power-trip activity. You don't find female computer intruders, any more than you find female voyeurs who are obsessed with catching glimpses of men's underwear. Women are very, very rarely arrested for sneaking around in the dark of night, peering through bedroom windows. Teenage males are arrested for this all the time. It's not that women are physically or mentally unable to do it. It's just that there is no motive. Don't believe me? I would advise you to go to some cracking sites, and get the omnipresent point-and-click software, and go ahead and crack into some computers. You will soon discover how incredibly dull it is. There is no emotional payoff there.
You don't find young men who shoplift cosmetics, they just never do that. But young women do that ‘all the time’--stealing expensive lipstick and hiding it in your purse, that is the female emotional equivalent of a hacking-crime. There aren't many women who cruise around sites trying to snitch passwords and break into stuff at random. I don't know of any such women, personally. And I've never even ‘heard’ of a woman who did it on her own, without some boyfriend at her shoulder eagerly telling her how exciting it was. I once heard Jude Milhon vaguely refer to such a system-cracking woman. But I think it was an urban legend ..."
Basically Sterling does not make the distinction between hackers and crackers. And he says that women do not have a motive for hacking, because there is no emotional pay-off for them. Is he imputing a very poor emotional life to men, who seem to get a kick out of such dull activities? And why should girls or women not go for any power-trip activities? But what surprised me most was the fact that he completely left out the political dimension of hacking. And he implies that, because it is a silly thing anyway, there is no need for women to start doing it.

Another specialist I’ve come across in my research is Gail Thackeray. She is not a hacker herself, but is prosecuting them. She is member of the Special Counsel for Technology Crimes at Arizona Attorney General's Office, and is currently building a new computer crime unit. She had her biggest successes in hunting hackers in the early 90s, and she is feared and hated by the hacking community. I met her on an American hackers list, where I had posted questions and asked for gossip about her. The first answer I received after my request was from Gail Thackeray herself. Obviously she subscribes to all relevant lists and follows what is going on. She said that she would be very interested in the gossip about her

I tried, of course, to squeeze information about women hackers out of her. Here is her answer to the question:
"No, there are no serious technical women hackers. It's still largely a white male thing, at least here in the US. [Only one black hacker in Arizona (retired), and one in New York]. There were a lot of women phone phreaks, though for the most part they were merely "finger hackers" and more interested in the social aspects than the technical. One of these was "Kyrie" who got dozens of adoring adolescents to fund her escapades by stealing credit card numbers and posting them to her hacked-out voice mail boxes; she also had several who stole credit cards and sent her $$ by Western Union, under aliases. Bill Cook (formerly an Assistant United States Attorney in Chicago, now a private attorney) prosecuted her, with a little help from us. Again, she wasn't all that adept technically, and her motivation seemed to be part fame and part money. She went to prison for fraud."

To my question as to why there were no women hackers, she explained: "Men and women (warning: sweeping generalisation coming!) seem to obsess about different things, by and large. Even though many little girls play baseball, you never meet one who obsessively memorises the professional baseball stats the way whole armies of boys do ... Part of the lure of hacking is the same role-playing thrill people get from games like Dungeons & Dragons--another obsession more male than female. It's a (false) power rush, illusion of control, dominance, etc. to "take over" a system. The illusion of danger (very few hackers ever get caught, not because they're so clever, but because hardly anyone is working this beat) spices up what is really a fantasy game using other people's systems. In reality, few hackers are particularly creative--the vast majority are shameless plagiarists, using tools others have invented, invading systems that have no reason to be especially secure. I don't know why girls don't go to the "dark side" of the Net in the same numbers that boys do--why are there so few women CEOs of tech companies in Silicon Valley, where everyone can be a startup CEO? We get lots and lots of women passing bad checks and using false ID--but the actual counterfeiters so far are predominantly male. Dunno why.

I would think some of this must be changing, with virtual workplaces and such--after all, if "on the Internet no-one knows you're a dog," how would they know whether they're hiring a woman? I know there are a lot of women in Webpage design firms--maybe ask some of them whether they were ever hackers and if not, why not. The illegal kind of hacking-for-glory is a rather adolescent pursuit: maybe girls go through some other phase ... As to prosecuting male hackers, I prosecute lots of different kinds of crimes---statistically speaking, there are many more male criminals than female, though the difference is diminishing in the USA. As prosecutors, we meet the victims and become familiar with the adverse effects of crime on them, their families, businesses, etc. Usually, law enforce-ment is reactive --a victim complains of injury--rather than going out looking for offences being committed. Even undercover investigations like ‘Operation Sundevil’ are usually a response to complaints from a whole group of victims. It's not that we're targeting young male hackers, it's just that that's who we find, by and large, when we investigate the complaints."

It is characteristic that her argument leaves out any political reasons for hacking. She is tracing back hacking to psychological deficiencies from which male juveniles seem to suffer particularly. Thackeray represents "law & order", protecting helpless victims of criminal hacking activities.

But finally I came across one woman hacker who even made it into history. Her name is Susan Thunders, and she is described in the book "Cyberpunk" by Katie Hafner and John Markoff, 1991. She was a member of the so-called Roscoe gang in Los Angeles in the early 80s. She was a specialist in military computers, and her most outstanding ability was to manipulate other people. The following story of Susan is retold from the book.

The gang was named after Roscoe, her boy-friend. Another well-known member of the gang was Kevin Mitnick, who became a very well-known hacker after the gang era and currently is serving a three year prison term without an indictment.

First of all, they were telephone phreaks, which is to say they hacked telephone systems to make free phone calls and to tap other people's calls. They could do anything to telephone systems, change people's number, cancel accounts and so on. When the control mechanisms of the telephone companies switched to computer systems, the Roscoe gang also started to work with computers.

Susan was a tall blonde and worked as a prostitute in Hollywood. She had been mistreated and abused by her family and had started to look for comfort through the telephone. There was a telephone conference circuit she used a lot, called HOBO-UFO, and after a while she became interested in who was behind it. She contacted the operator, who was Roscoe, and they became friends and lovers. They had a lot in common, both having a penchant for psychological subversion, which means they were both good at manipulating other people. And she was infected by his fascination for computers.

For Susan it was a love affair, whereas Roscoe saw it more as a business partnership. She was his protégé, and showed great talent in invading computer systems. She specialized in military computers. Although she was still a beginner she could compensate for her lack of knowledge through her social abilities. One classic method she used was to go into the military bases, hang around in the officer's club, make contact with high military officials, make love to them and afterwards search their documents for passwords and information. And all the money she made through prostitution, about $5000 a month, was spent on computer and telephone equipment.

She was fascinated by power, and the computers which contained the most primal and secret information about military affairs were what attracted her most. There lay the real power, and she wanted it. But she still considered hacking as an art rather than as a source of income. She also loved spying on people and confronting them with the information she had collected about them.

After a while she found out that Roscoe was two-timing her and that he was planning to marry the other girl, who was a middle-class law-student. He split up with Susan brutally, and even her threat to betray him to the FBI failed to make him change his mind. She, however, was obsessed with revenge and started to collect material and hand-written documents which would incriminate him as a hacker. She monitored the phone lines of Roscoe, his girl-friend and Kevin, and started a multi-level private war against them. When she was sure of her evidence she contacted the investigation department, giving her concern for national security as her official reason for doing so. During the trial she was the main witness and assisted the prosecution with explanations of computer technology. Roscoe was sentenced to 15 months detention.

After that she gave up her hacking activities and became a security adviser. Two years later she was asked to join a hearing at the US Senate in Washington, where she spoke on national security and was asked to demonstrate her knowledge. She was given a computer, a modem and the name of a system she should hack; within twenty minutes she had the entire secret data of the system on her screen. She had brought all her talents into play, including her ability to convince people on the phone to hand out passwords, and thus provided incontestable proof that the weakest link in the security chain is the human being. After that performance she completely gave up her computer and telephone activities and embarked on a career as a professional poker player.

That’s what the story tells. We’ve heard above that women do not have any reason to break into computers. That was obviously different with Susan. She had reasons: a propensity for escaping from the real into the virtual world, combined with her desire for power and control; and certainly she wanted to impress her boyfriend. After Roscoe had left her, her strongest motive was revenge.

It is not clear if this is all based on fact, but the book claims to be a documentary account and is written by serious journalists. In any case, constructing the image of a woman hacker who is actually a whore fits perfectly into the convention of discrediting hackers by referring to their psychological deficiencies and immorality, and by imputing criminal reasons to what they are doing. And, if the hacker is a woman, nothing is a surer sign of her immorality than her being a whore. Sex, crime and technology all come together in the person of Susan Thunders. Sex was one instrument in her power play, technology another. Additionally, the whore also functions as a projection field for fears in a similar way that hackers do. But instead of representing the dark sides of technology, the whore represents the dark side of sexuality. Although Susan Thunders was a hard-core computer hacker, her hacker image will always be associated with her being a prostitute. It is unlikely we will ever hear the story of a male hacker who uses his sexuality in order to ‘do his job’, although other manipulative social engineering behaviours clearly belong to male hacking practice.







Hacking and Cyberfeminism
My research shows that extremely few women are active in the field of hacking. It is not just in the commercial development of technology, but even more in alternative fields and the technological underground that there are so few women involved. No matter what area of application and no matter what the objective, the borderlines of gender are still maintained. Of all the technological spheres, however, it is in the hacker scene that we find the fewest women. Hacking is a purely male domain, and in that sense a clearly gendered space.

The starting point for dealing with the subject of women hackers was the importance of the work hackers do, their function in society and the persistence of the practice as described above, linked to the fact that almost no women hackers exist. I find it significant that the deconstruction of the all-pervading power of technology, from a cyberfeminist point of view, has first to be combined with a gender-specific deconstruction of power, since technology is still, primarily, associated with maleness.

Although the handling of technology that traditionally has been female-associated, industrial machinery, scientific projects and computer languages have all been symbolized by female names, so the borderline between femininity and technology can be located where such attributes as technical competence, power and control over technology and the construction of machines are introduced. As Heidi Schelhowe, a German computer scientist, points out in her paper "Computer in der Informationsgesellschaft: Technolo-gie mit neuem Gesicht — und altem Geschlecht?", it is the task of gender studies in technical sciences to deconstruct the category of ‘technology’ per se, in the way that gender and sex are being deconstructed by the social and human sciences. Technology has traditionally been perceived as something that is based on abstraction and logical thinking, on reason, all characteristics which traditionally have male connotations, whereas femininity has been associated with nature, emotion, mysticism, and intuition. But although abstraction has been posited as the antithesis of a nature-related and physical femininity, one might argue that abstract thought is something which is basically independent of physical condi-tions, i.e. also of gender.

The simple presence of more women, however, would not necessarily change the resulting products. The demand for a higher proportion of women in technology implies a desire to question traditional assumptions and to raise consciousness regarding technology-implicated power structures. Software development and the required competencies have to be redefined. The new and still ungendered fields would then offer new opportunities for women (3).

In the same way as Schelhowe argues on behalf of computer science, I would like to argue, for the hacker scene, that it is imperative to deconstruct technology in the described way and to stop closing our eyes to the fact that ‘the hacker’ is a white male. Hackers do not just represent a danger for closed knowledge and power systems, but are, paradoxically, simultaneously representing them in the sense that only white males embody the new illegal knowledge.

While this opinion contains a generalisation about men and women and refers to the biological sex of a person, it also relates to the social construct of gender, and therefore recalls the feminist arguments of the 70s. But obviously, girls and boys are still brought up in different ways, and develop different preferences. It is necessary to face this fact and the resulting conflicts in order to bridge the gap between social and political realities and wishful cyberfeminist thinking.

I am not assuming that women and technology necessarily have as special and as close a relationship as certain cyberfeminists proclaim. My clitoris does not have a direct line to the Matrix--unfortunately. Such rhetoric mystifies technology and misrepresents the daily life of the female computer worker. The simple fact is that most women prefer to spend their lives doing other things than programming fanatically or exploring the depths of the net. And even within the cyberfeminist community, there are only a few computer professionals, and fewer nerds.

Currently most women seem to prefer to undertake politically engaged work in a purely cultural environment and on a non-technological level. Women are not actively influencing the development of hard- and software, and therefore are surrendering any chance to share the related power. The question is, whether cultural/ aesthetic practice alone can sufficiently affect technological development, or whether women finally will have to get their hands dirty with technology. We have to ask ourselves questions like "How deep do we have to get into techno-logy in order to be able to handle it consciously and be able to influence technological developments?", and "What prevents us from just going for it?" and "Does cyberfeminism necessarily require technical competence, or is it sufficient to theorize about technology and to focus on the social, cultural and political aspects of new technologies?"

We are living in a mental climate which is full of contradictions. Utopian theories promise a post-humanist age which is marked by gender- and body-obsolescence. On the other hand, the individual is still part of the power structures constituted by capital, race and gender. We have to bear with this contradiction, try to attenuate the power and the explosive force of the new utopias, and build new social realities with it.

To finish, I will give a brief glimpse into the near future when the world will be populated and shaken by women hackers, who are out of control: Please have a look at he Guide to Geek Girls (p. 48)

edited by Tina Horne

(1) Patrice Riemens, HEART - Don’t panic! Hack it!, INFO WAR, ars electronica 98
(2) Rosie Braidotti, Cyberfeminism with a difference
(3) Heidi Schelhowe, Computer in der Informationsgesellschaft: Technologie mit neuem Gesicht -- und altem Geschlecht?
http://waste.informatik.hu-berlin.de/Schelhowe/heidi.html

>> labels

>> cloudy with a chance of tags


Powered By:Blogger Widgets

followers

.........

My photo
... is a Media Art historian and researcher. She holds a PhD from the University of Art and Design Linz where she works as an associate professor. Her PhD-thesis is on "Speculative Archiving and Digital Art", focusing on facial recognition and algorithmic bias. Her Master Thesis "The Grammar of New Media" was on Descriptive Metadata for Media Arts. For many years, she has been working in the field of archiving/documenting Media Art, recently at the Ludwig Boltzmann Institute for Media.Art.Research and before as the head of the Ars Electronica Futurelab's videostudio, where she created their archives and primarily worked with the archival material. She was teaching the Prehystories of New Media Class at the School of the Art Institute of Chicago (SAIC) and in the Media Art Histories program at the Danube University Krems.