Friday, February 25, 2005

Doublespeak legislation

I'm linking to the text of HB 1991, proposed legislation introduced in Washington State that is similar to a number of others introduced in other states. Like the others, it's basically written by David Horowitz, a conservative activist, and "Students for Academic Freedom". There are a large number of blogs that comment on the politics of such things, so I'll just go over the content of the bill.

The bill has two sections; the first is for the most part a bunch of generalizations and "feel good" statements that I suppose is meant to predispose the reader to thinking that the whole is innocuous or high-minded. Lots of language like, "The central purposes of a university are the pursuit of truth, the discovery of new knowledge through scholarship and research, the study and reasoned criticism of intellectual and cultural traditions, the teaching and general development of students to help them become creative individuals and productive citizens of a pluralistic democracy, and the transmission of knowledge and learning to a society at large." However, even here, I believe there is an attempt to "bless" certain words and turns of phrase by close association with others. For example, the inclusion of "reasoned criticism" in the above quote is probably meant to associate with it concepts such as research, scholarship, and the search for truth. Like some other words and phrases, it will be used in section two in a manner that, taken in isolation, would mean something considerably different. A pretty neat technique, I must say. Other doublespeak phrases from section one include: "freedom to teach and to learn", "appropriate conditions and opportunities", "critical intelligence", "openness", "never-ending pursuit of the truth", "complete and unlimited freedom", and "orthodoxy". My doublespeak award goes to paragraph 4: "Academic freedom consists in protecting the intellectual independence of professors, researchers, and students in the pursuit of knowledge and the expression of ideas from interference by legislators or authorities within the institution itself. This means that no political, ideological, or religious orthodoxy will be imposed on professors and researchers through the hiring, tenure, or termination process, or through any other administrative means by the academic institution. Nor shall legislatures impose any such orthodoxy through their control of the university budget." Imagine, a piece of state legislation that dictates how hiring, etc. will be modified to accommodate people who agree with the legislature's political agenda (if it passed, that is) that appears to state, as a basic principle, that the legislature shouldn't interfere with academia. The beauty is that it appears to do this, but actually states that "orthodoxy" won't be imposed (as if anyone would ever need to impose an orthodox opinion on any organization).

Here's my annotated second section (my comments in italics):
Sec. 2   A new section is added to chapter 28B.10 RCW to read as follows:
     To secure the intellectual independence of faculty and students and to protect the principle of intellectual diversity, the following principles and procedures shall be observed. These principles apply only to public universities and to private universities that present themselves as bound by the canons of academic freedom. Private institutions choosing to restrict academic freedom on the basis of creed must explicitly disclose the scope and nature of these restrictions.

OK, so this is a definition of academic freedom for all universities in the state that observe such things.
     (1) All faculty shall be hired, fired, promoted, and granted tenure on the basis of their competence and appropriate knowledge in the field of their expertise
I know what competence is, but what is "appropriate knowledge"? Apparently, competence isn't enough, since this other qualification is also mentioned.
and, in the humanities, the social sciences, and the arts, with a view toward fostering a plurality of methodologies and perspectives.
Well, well, it seems that some conservatives support affirmative action. Just not for folks who've been discriminated against in the past -- they want it for themselves. I'm not in one of the fields mentioned (apparently, there's no need for "plurality" in the sciences, business, or engineering), but in most science and engineering departments, hiring tends to be concentrated in certain areas of inquiry so that faculty have colleagues to work with -- to provide "ciritical mass". No department can be strong in every area.
No faculty may be hired, fired, or denied promotion or tenure on the basis of his or her political or religious beliefs.
     (2) No faculty member may be excluded from tenure, search, and hiring committees on the basis of the member's political or religious beliefs.
     (3) Students will be graded solely on the basis of their reasoned answers and appropriate knowledge of the subjects and disciplines they study, not on the basis of their political or religious beliefs.
So now they want to legislate how I grade? It seems they're in favor of grading based on effort rather than results, at least, that's how I interpret "reasoned answers". As stated before, I have no idea what "appropriate knowledge" is, but I presume that the legislature will determine what knowledge is appropriate and what is not, and students could appeal grades based on me requiring them to exhibit knowledge that is not "appropriate".
     (4) Curricula and reading lists in the humanities and social sciences should reflect the uncertainty and unsettled character of all human knowledge in these areas by providing students with dissenting sources and viewpoints where appropriate.
Apparently, the humanities and social sciences are just a mess: there's no such thing as truth or even certainty. Any opinion could be valid, and so every opinion is equally valid. If you're in such a field, make sure your courses reflect the fact that it's all just a pile of crap baloney. Ignorance really is strength.
While teachers are and should be free to pursue their own findings and perspectives in presenting their views, they should consider and make their students aware of other viewpoints. Academic disciplines should welcome a diversity of approaches to unsettled questions.
Affirmative action: it's not just for people anymore. Who will decide what "other viewpoints" are "appropriate"? Will a history course need to incorporate Holocaust deniers' "viewpoints"? From a practical point of view, this is meant to give students the ability to appeal grades (or to allow punishment of professors) as long as someone in power believes that his or her pet "viewpoint" was omitted from a course.
     (5) Exposing students to the spectrum of significant scholarly viewpoints on the subjects examined in their courses is a major responsibility of faculty. Faculty will not use their courses for the purpose of political, ideological, religious, or antireligious indoctrination.
Who will decide which scholarly viewpoints are "significant"? Not that faculty, that at least is clear. On the one hand, students should be "exposed" to a spectrum of ideas, but not to the extent that anyone has their own world view challenged.
     (6) Selection of speakers, allocation of funds for speakers' programs, and other student activities will observe the principles of academic freedom and promote intellectual pluralism.
Affirmative action for speakers, too.
     (7) An environment conducive to the civil exchange of ideas is an essential component of a free university; the obstruction of invited campus speakers, destruction of campus literature, or other effort to obstruct this exchange is prohibited.
     (8) Knowledge advances when individual scholars are left free to reach their own conclusions about which methods, facts, and theories have been validated by research. Academic institutions and
I'm sorry, but individuals don't get to decide "which methods, facts, and theories have been validated by research". This is only done by communities of scholars. I can believe anything I want, but validity must be earned by convincing other people in my field.
professional societies formed to advance knowledge within an area of research, maintain the integrity of the research process, and organize the professional lives of related researchers serve as indispensable venues within which scholars circulate research findings and debate their interpretation. To perform these functions adequately, academic institutions and professional societies should maintain a posture of organizational neutrality with respect to the substantive disagreements that divide researchers on questions within, or outside, their fields of inquiry.
So now they want to legislate how professional societies work? I guess there'll no longer be any IEEE standards issued, as that would violate neutrality. Professional societies, by their nature composed of scholars in their field, tend not to decide matters that are subject to true "substantive disagreements". On the other hand, they don't serve as venues for crackpot ideas -- if you want colleagues to read about your work, then you need to convince them: 1. that you are aware of what others have done and are doing in the field, 2. that your work is also in the same field, 3. that your work explains the world at least as well as existing work, 4. that your methods can actually address questions in the field, and 5. that your methods are capable of falsifying your hypothesis (that it was possible for you to be wrong).
Wow! Quite a long read, wasn't it? Reward yourself with a visit to Students for an Orwellian Society.

Friday, February 18, 2005

Software tools I'm using today

The title of this article is a bit misleading, as my primary intent is to document my current approach to producing numerical simulation code -- mostly the libraries/classes involved. However, I'll also cover my "workflow", which is laughably simple.

My research focuses on developing neural networks and neuron simulation software so that I might gain a bit of insight into how nervous systems perform computations. This tends to be computationally intensive work. The individual simulations aren't very huge, but I often need to run tens of thousands of them to systematically explore various combinations of parameters. The simulations themselves are also somewhat fluid, in that there's often a number of different structural variations in the models to explore, too. Once upon a time, I tried to write all my code with graphical user interfaces, first using custom libraries I wrote for Turbo C under DOS, then for X Windows, and most recently for MATLAB. The problem with GUIs is that virtually every change in the simulator produces changes that propagate through the GUI. This is incredibly time consuming. And, while MATLAB is a great environment for numerical analysis and visualization, interfacing it to C or C++ code involves too much glue code. Eventually the process of changing the glue and GUI dominates any simulation-oriented coding.

So, I've stopped integrating the simulators into a GUI, and now write stand-alone code, mostly in C++ using Emacs, the g++ compiler, and RCS (Revision Control System). I don't even use a debugger, just output to cerr, because the few bugs I produce are usually the type that a debugger isn't very helpful for (OK, I'm just too lazy to learn gdb). Here are some libraries/classes I've found useful lately:

  • ParamContainer, a class that's basically a wrapper around a program's command line parameters. It makes it pretty simple to define, parse, and retrieve command line options, including short and long keywords, required and optional parameters, and parameters with and without arguments. All with just a few lines of code.
  • TinyXml, a set of classes for parsing XML files. I've decided that XML is the best way to go for producing files to contain simulation parameters, outputs, etc. I can incorporate documentation into the XML files, both by the very nature of the XML and by adding comments. It's very easy to format output as simple XML. TinyXml makes it straightforward to pull even fairly complex structured data from XML (you may sense a common theme here).
  • In a related note, I've hacked together a set of classes that "automatically" (with the addition of only two lines of code in each .cpp file) collect RCS version information (or any arbitrary information that can be written in a string) for each source file used to build a program and will format it as XML comments for output. I now write these comments into every simulation output file I produce, so I know exactly what code was used to produce the results (assuming I bother to check in the files after each change is debugged). This is a pale shadow of my Logos system (which doesn't exist right now). For example, the beginning of an output file might look like:
    <?xml version="1.0" standalone=no?> 
    <!-- State output file --> 
    <!-- This can be used as input; the "Statistics" element --> 
    <!-- is ignored when the state is read by the simulator (but --> 
    <!-- can be read by functions written for MATLAB) --> 
    <!-- $Id: SourceVersions.cpp,v 1.2 2005/02/18 13:41:04 stiber Exp stiber $ --> 
    <!-- $Id: KIIgrowth-prog.cpp,v 1.5 2005/02/18 20:45:20 stiber Exp stiber $ --> 
    <!-- $Id: KIIgrowth-simulator.cpp,v 1.7 2005/02/18 20:45:54 stiber Exp stiber $ --> 
    <!-- $Id: InputGenerator.cpp,v 1.1 2005/02/18 20:46:58 stiber Exp $ --> 
    <!-- $Id: Matrix.cpp,v 1.3 2005/02/18 13:40:02 stiber Exp stiber $ --> 
    <!-- $Id: VectorMatrix.cpp,v 1.4 2005/02/18 13:41:42 stiber Exp stiber $ --> 
    <!-- $Id: CompleteMatrix.cpp,v 1.3 2005/02/18 13:38:53 stiber Exp stiber $ --> 
    <!-- $Id: SparseMatrix.cpp,v 1.3 2005/02/18 13:41:35 stiber Exp stiber $ --> 
    <!-- $Id: MatrixFactory.cpp,v 1.3 2005/02/18 13:40:11 stiber Exp stiber $ --> 
    <!-- $Id: RNG.cpp,v 1.2 2005/02/18 13:40:44 stiber Exp stiber $ --> 
    <!-- $Id: norm.cpp,v 1.2 2005/02/18 13:41:51 stiber Exp stiber $ --> 
    <!-- $Id: DistanceList.cpp,v 1.4 2005/02/18 19:39:01 stiber Exp $ --> 
       <!-- Mitral unit states --> 
       <Layer name="mitral"> 
          <StateQueue name="x" stages="3"> 
             <Matrix type="complete" rows="1" columns="25" 
       0.968226 1.10523 1.28773 0.684952 0.401885 0.344824 -1.56298 0.989861 
    and so on.

Tuesday, February 15, 2005

Positive ID

The linked CNET article reports on the "Real ID Act" recently passed by the US House of Representatives. It would give the Dept. of Homeland Security authority to set standards for drivers licenses. As supporters say, it's not the same as a national ID, because compliance on the part of states is voluntary. Of course, if a state doesn't comply, residents won't be able to do things like fly.

I think a business opportunity stems from the following: " In the United States, the federal government is planning to embed RFID chips in all U.S. passports and some foreign visitor's documents." I can imagine people wanting passport covers that block the RFID chip from transmitting. Otherwise, anyone with relatively simple equipment will be able to scan tourists walking by to find out who the Americans are (even if they can't read the personal information stored on the chips -- a big if).

Cyberterrorism -- where have all the sysadmins gone?

Seems like security is the theme of the day. Considering that "cyberterrorism" has been in the news for what seems like decades, you'd think that government and commercial organizations that run computers would have gotten around to hiring competent sysadmins who can run things securely. But, if the linked MSNBC article is to be believed, critical infrastructure is still vulnerable to attack. Most of what the article talks about is web site defacing, but there is certainly the implication that more is doable, given the desire. However, some of the most concerted hacking attempts are directed at university and e-commerce computers, and it seems that, except in isolated instances, they are secure. My read is that "cyberterrorism" will mostly involve a constant probing for vulnerabilities with occasional successes. If critical systems are just not connected to the internet, then the successes can be kept at the level of annoyances. Yes, that's two ifs: constant grooming of competent sysadmins and sensible systems architecture. The cynic in me isn't hopeful.

Viruses gone wild

The CNET article I've linked to discusses the possibility of viruses infecting home appliances, cars, etc. as they gain more sophisticated computing capabilities and internet connectivity. Personally, I'm not really sure what the advantage would be of having a net-connected refrigerator or toaster, but then again I didn't think that anyone would want to buy books online --- and give up the enjoyment of browsing through the books at a bookstore. My take-home lessons:
  • Until Microsoft gets its act together, avoid running Windows on appliances like media centers or cell phones. It's not just that Windows is the most common OS in the ecosystem (and thus most attractive to virus writers); its distribution philosophy (and, I would say, underlying architectural principles) facilitate infection.
  • Think before you connect any computerized device to the internet. Tivos dialing in directly are secure. Though Tivos run Linux, the distribution seems pretty well secured; I'd make sure I had a home firewall before connecting it via the internet, anyway.
  • Use a hardware firewall. Even if you will only be connecting one computer to a cable modem sitting right next to it, get a name-brand firewall box (should be less than $50) and connect it between your computer and the broadband hardware. Use the free ShieldsUp! service at Gibson Research to test your firewall. It's my understanding that a new Windows machine is likely to be infected with malware before it is able to finish downloading the latest OS patches from Microsoft, if connected to an unsecured network.
  • In a ideal world, wifi access points would be sold with randomized network IDs and WEP passwords, printed on a slip of paper in each box, and with encryption on. Unfortunately, they're universally shipped wide open --- like selling door locks that all have the same keys. Either secure your wifi (and test it) or don't buy it.
  • Secure your computer as though the other layers of security don't exist. Turn off services that aren't needed. I run both Mac OS X and Linux at home; OS X has pretty much everything nonessential turned off by default (and a software firewall turned on), but Linux usually has a bunch of daemons running and services enabled that I don't need.
  • If you think of a good argument for getting a network-enabled toaster (other than stupid toaster tricks), please let me know.

Thursday, February 10, 2005

Darwin Day Celebration

The anniversary of Charles Darwin's birth is approaching (February 12th). This article's title links to the Darwin Day web site, which includes a registry of events scheduled for the anniversary, building up to the 200th anniversary in 2009. In a related vein, if you want to get depressed about the sorry state of science education in this country, you might read this article at or this one at the Salt Lake City Weekly. Relevant web sites include Pharyngula and The Panda's Thumb.

How is this relevant to computing careers? Well, if your goal in life is to just be a "code monkey", hacking out this subroutine or that class as directed by your manager, then maybe not much. If you have more ambitious goals, then ask yourself this: how can you hope to imagine things that computers might do, but don't yet (you might call these "future products") if you can't appreciate how mechanical/algorithmic processes can produce complex, subtle behaviors?

Tuesday, February 08, 2005

How not to make your point, or the universality of Godwin's Law

I had the flu last week, and didn't think it terribly wise to blog with a fever, so let me post this rather belatedly (though the topic seems like it will stay in the news for a bit).

For those who haven't heard of this, Ward Churchill, Professor of Ethnic Studies at the University of Colorado, Boulder, has stirred up a bit of a fuss lately. There's probably a couple hundred real news stories out there on the web, in addition to the usual blog blatherings (like this one); you might as well start here. I gather that his fundamental point is that 9/11 is an outcome of US foreign policy that could have been predicted. I'm not so interested in his points, though, because there's something he has to say early on in his writing that I just can't get past, and that is the topic of this comment. In his writing, he compares the folks working in the World Trade Center to "little Eichmanns"; in his later "explanations", he makes Eichmann sound like a minor logistics officer. As you might guess, this has engendered some public comment, plus the usual speech cancellations and death threats.

I think this shows the applicability of Godwin's Law beyond usenet newsgroups. (For those who know only about the web and not usenet, I'll borrow a quote from "The Princess Bride": "When I was your age, the web was called usenet".) One of the "corollaries" of Godwin's Law is "if you mention Hitler or Nazis in a post, you've automatically ended whatever discussion you were taking part in". In this case, Churchill has pretty much guaranteed that nobody will pay attention to anything else he has to say, not only now, but quite likely ever. It doesn't matter how profound or worthy of discussion any of his other writings are; he has killed off any rational discussion of his views. This is probably not what he intended.

So, now people in Colorado (probably most) want to run him out of town on a rail. While I personally can't get past his invocation of Godwin's Law, I can quote Voltaire, "I disapprove of what you say, but will defend to the death your right to say it." One of the reasons university faculty are granted tenure is so that they can be free to pursue their interests and express their views without fear of retribution (well, that's overstating things a bit: the administration can always reassign you to an office that used to be a broom closet; they just can't fire you). And, lest we decide that Churchill has stepped over the bounds that must exist, keep in mind what Isaac Asimov said: "Politically popular speech has always been protected, even the Jews were free to say 'Heil Hitler'."