Tuesday, July 31, 2007
Reading List: Brave Men
- Pyle, Ernie. Brave Men. Lincoln, NE: Bison Books,  2001. ISBN 0-8032-8768-2.
- Ernie Pyle is perhaps the most celebrated war correspondent of all time, and this volume amply illustrates why. A collection of his columns for the Scripps-Howard newspapers edited into book form, it covers World War II from the invasion of Sicily in 1943 through the Normandy landings and the liberation of Paris in 1944. This is the first volume of three collections of his wartime reportage: the second and third, Here is Your War and Ernie Pyle in England, are out of print, but used copies are readily available at a reasonable price. While most readers today know Pyle only from his battle dispatches, he was, in fact, a renowned columnist even before the United States entered the war—in the 1930s he roamed the nation, filing columns about Americana and Americans which became as beloved as the very similar television reportage decades later by Charles Kuralt who, in fact, won an Ernie Pyle Award for his reporting. Pyle's first love and enduring sympathy was with the infantry, and few writers have expressed so eloquently the experience of being “in the line” beyond what most would consider the human limits of exhaustion, exertion, and fear. But in this book he also shows the breadth of the Allied effort, profiling Navy troop transport and landing craft, field hospitals, engineering troops, air corps dive and light bombers, artillery, ordnance depots, quartermaster corps, and anti-aircraft guns (describing the “scientific magic” of radar guidance without disclosing how it worked). Apart from the prose, which is simultaneously unaffected and elegant, the thing that strikes a reader today is that in this entire book, written by a superstar columnist for the mainstream media of his day, there is not a single suggestion that the war effort, whatever the horrible costs he so candidly documents, is misguided, or that there is any alternative or plausible outcome other than victory. How much things have changed…. If you're looking for this kind of with the troops on the ground reporting today, you won't find it in the legacy dead tree or narrowband one-to-many media, but rather in reader-supported front-line journalists such as Michael Yon—if you like what he's writing, hit the tip jar and keep him at the front; think of it like buying the paper with Ernie Pyle's column. Above, I've linked to a contemporary reprint edition of this work. Actually, I read a hardbound sixth printing of the 1944 first edition which I found in a used bookstore in Marquette, Michigan (USA) for less than half the price of the paperback reprint; visit your local bookshop—there are wonderful things there to be discovered.
Sunday, July 29, 2007
Autodesk: Underwater archaeology with AutoCAD in 1984The latest installment in the Autodesk vintage image gallery is a collection of slides illustrating the use of AutoCAD in the underwater archaeology expedition to the wreck of HMS Pandora, the ship sent to chase down and capture the mutineers who took HMS Bounty, which struck the Great Barrier Reef off Australia and sank in 1791, not being rediscovered until 1977. Expeditions began in 1983, and these slides show work in progress and AutoCAD screen shots from the 1984 season.
Saturday, July 28, 2007
Perl: 2038 "Black Tuesday" Bug in Perl 5.8 gmtime and localtime FunctionsHaving more or less escaped cataclysm when the year rolled over from 1999 to 2000 (doomsayers having feared calendars would suddenly begin to read “Januark” due to the fabled y-to-k bug), the next big milestone about which to fret is January 19th, 2038, Black Tuesday, when Unix time() values, the number of seconds since January 1st, 1970, go negative if stored in a signed 32-bit integer. Now, most people assume that long before that date, everybody will have migrated to 64-bit or wider platforms which are immune to this problem, or to programming languages with less constrained representations of date and time than legacy C libraries. But the future is long in the tooth, and it can bite you even today. Consider: next January, calculations related to a 30 year mortgage will run into the 2038 bug if performed on software vulnerable to it. My own humble Web application, The Hacker's Diet Online, ran afoul of it a couple of days ago, when a user experimenting with values in the diet calculator ended up with a diet end date beyond 2038 and saw, instead, a date in the past. This was due to a vulnerability in Perl 5.8 to the underlying C library of which I was previously unaware. Perl does all of its arithmetic in 64-bit floating point, so I naïvely assumed that its gmtime and localtime functions were coded so as to correctly handle dates far beyond 2038, where 32-bit signed integer quantities go negative. This is not the case: Perl simply calls the corresponding C library functions and returns whatever they return, first truncating the value to the time_t type, which on a 32-bit platform will be 32 bits. You can see the consequences of this by running the following tiny Perl program:
my $years = 20; my $yearsec = 365.2425 * 24 * 60 * 60; my $then = gmtime(time() + ($years * $yearsec)); print("$then\n");which will print a date around 20 years (the $years setting) in the future. But if you change the first line to set $years = 40, it prints (when run in 2007), a date in 1911—let's do the time warp again! This problem should not occur (at least for a while!) on platforms on which Perl has been built with time_t defined as a 64-bit quantity, and is said to be fixed in Perl 6 (although I'll bet when 2038 rolls around, there are still many programs running under Perl 5.x implementations). The Hacker's Diet Online, like most of my programs, uses Julian dates almost exclusively, and only used Perl's gmtime in a few circumstances. Needless to say, I have converted all of them to use Julian dates, and if you need to handle dates beyond 2038 in your Perl programs which may run on 32-bit systems, be sure to use a package which handles arbitrary dates. I understand that the DateTime module, available from CPAN, is suitable, but I have no experience with it, as I use my own Julian module (which you can download as part of the source code for The Hacker's Diet Online) for such calculations.
Wednesday, July 25, 2007
Linux: Wine Turns to VinegarBack in February, I wrote how I had installed “Wine”, the Windows API implementation for x86 Unix-like systems, and had successfully used it to run the bill paying client program from my bank, which is available only for Windows. I concluded by observing that wine is one of the few things which improves with age. Well, perhaps I should have noted that's so only if you don't open it—afterward things go sour pretty rapidly. That's certainly been my experience with this particular cuvée informatique. At the outset, on version 0.9.30, it worked fine, apart from the few quibbles about changing keyboard focus with the Tab key which I noted in the original posting. Then, starting about a month ago (I didn't note the date nor the version in which this started happening), entering payment orders worked fine, but when I went to send them to the bank, the entire program would crash with a message of:
X Error of failed request: BadPixmap (invalid Pixmap parameter) Major opcode of failed request: 54 (X_FreePixmap)However, whether this happened appeared to be statistical in nature, so if I restarted the program (which fortunately had already saved the orders I'd entered) and continued to try to submit them, I would eventually be able to get through the transmission process without a crash. In some cases as many as ten attempts were required to actually send the orders, which was, to say the least, intensely irritating, especially since this had worked routinely for months. Next, along came the 0.9.39 update, which I hoped might fix the random crashes. It didn't, and instead raised the ante to full-blown system crashes (the first application-induced operating system freeze-up I have ever experienced in more than seven years of using Linux). After struggling through the now-routine application crashes and restarts and finally managing to transmit the orders, when you click on the final “Close” button to exit the program, the mouse and keyboard immediately freeze up and the system becomes completely nonresponsive. You can't get into the machine over the network, tapping the power switch to send a shutdown interrupt doesn't work, and the only option is a full power cycle, with the attendant risk to the file system. After enduring this on numerous occasions (being sure to save all work in progress and perform a file system sync before undertaking the risky business of paying bills), I discovered that if, instead of quitting the application in the usual way you simply kill the Wine program by typing Control-C in the terminal window in which it's running, the system lock-up can be avoided—nice. So today along comes version 0.9.41, which I installed in the eternal hope that, like a raw Bordeaux primeur, it would have mellowed with age; no such luck. At the right you see the field of the payment slip which is supposed to show my name and address. Now I'll be the first to admit that I'm pretty geeky when it comes to mathematics, radical in defence of liberty, and somewhat of a square, but I do not live in a village whose name includes three square root signs! Worse, while there's no problem selecting the payee and entering the reference number, when you click the field for the amount to be paid, you get an enormous blinking vertical cursor (several times the height of the field) and all keyboard input is ignored, so it's impossible to enter a valid order. Enough. I downloaded the wine-0.9.39-1.fc6.i386.rpm master installer from the Fedora 6 Wine page, removed the 0.9.41 installation, and installed 0.9.39 with:
yum remove wine wine-capi wine-cms wine-core \ wine-esd wine-jack wine-ldap wine-nas wine-tools wine-twain yum install wine-0.9.39-1.fc6.i386.rpmafter which, with the usual application crashes and freeze-evading Control-C I was, to some extent, back in business. I can live with this, and it's the oldest version available on the Fedora server. I may go looking for older Fedora RPMs from other sources to revert back to the happy situation of yore, but I don't think I'll be installing any of these “new and improved” updates to Wine for a while.
Update: Since one of the problems discussed above is a system crash, I should mention the precise kernel and configuration. This is a Fedora Core 6 distribution with the most recent kernel update, for which “uname -sr” reports “Linux 2.6.20-1.2962.fc6” (2007-07-25 16:29 UTC). Update: Dan Kegel suggests that I note that any system crash is, self-evidently, a result of a problem in the kernel or a driver or other module which runs with kernel privilege. Hence, while Wine is provoking the problem, it is not responsible for the crash. He further points out that crashes may be due to an interaction with the ATI “fglrx” driver which I use on this machine, and that there's a workaround for it (which I have not yet tried). There is now an open bug report on the font problem which links back to this posting. The UBSShell program mentioned in that bug report is simply a little wrapper—you don't need to launch the bill paying program through it and, in fact, when you install it on Windows, a start menu link is created to launch the bill paying program directly. (2007-07-26 13:21 UTC).
Sunday, July 22, 2007
Autodesk: 1985 IPO "Road Show" slides on-lineThe slides presented in the Autodesk Initial Public stock Offering (IPO) “road show” or “dog and pony show” in May 1985 are now on-line. Included are the sample drawing slides photographed off a CRT monitor which were shown to demonstrate the versatility of the product. The financials include data for fiscal year 1986 due to Autodesk's January fiscal year, which is explained in the Autodesk Trivia Quiz, question 2.
Saturday, July 21, 2007
The Hacker's Diet Online: 350 accounts, cluster support in productionYesterday, Moon Day, 2007-07-20, The Hacker's Diet Online passed the milestone of more than 350 users. The Web application entered beta test on April 29th, and went into production on July 2nd, at which time it had about 100 beta test users. Since then, new users have piled on with an “uptake” I haven't seen since the early days of AutoCAD. Today, I put a new version of the Web application into production which implements automatic replication of its databases across all machines in a “server farm” of the kind which drives the Fourmilab site. In fact, since synchronisation among peer servers is accomplished via open and secure tools such as ssh and scp, there is no requirement that servers be located at the same site nor use the same operating system: as long as it supports Perl, has a vaguely Unix-like file system, and allows SSH connections, a machine is (server) farm-fresh ready. Thanks to the file system based database architecture of the application, it's unlikely this update will destabilise anything. Nonetheless, I shall be monitoring the log throughout the week-end to see if anything untoward eventuates. If you observe any anomalies, please report them with the in-application feedback form.
Friday, July 20, 2007
Thursday, July 19, 2007
Fourmilab Internet outageAt 14:57 UTC (16:57 local time) yesterday, 2007-07-18, Fourmilab's Internet connection went down, with two “Loss of signal” lights illuminated on the leased line modem. I contacted the Internet Service Provider (ISP), who told me that the entire village in which the Point of Presence (POP) to which Fourmilab is connected had experienced a power outage, and while their equipment is on a UPS which allows riding out short power blips, there is no backup generator, so all customers connected to that POP had experienced an interruption in service. The power outage lasted about three hours. When the power was back on and everything had rebooted, the ISP called me to ask if my service was restored. It wasn't—the very same error lights appeared on the modem, and power cycling it changed nothing. At this point they said they'd have to send a technician to check the equipment at the POP, which could not be done before 06:00 local time today. When the technician arrived, he diagnosed the problem as a genuine outage on the line, and told the ISP service desk to put in a service call to Swisscom, who furnishes the leased line. They promptly did this, but for the wrong line. You see, next week the ISP has scheduled a migration of the line to a new POP located closer to Fourmilab, and has installed a backup line to allow the switchover without more than a brief interruption. They had already updated their records to indicate my connectivity as via the new line, and that's the one they reported down to Swisscom. Swisscom swiftly diagnosed the problem with that line, which does not have a modem connected to it yet. This unleashed a cloud of confusion among Swisscom, the ISP, and me, with multiple puzzled messages back and forth. When I finally managed to explain that it was the “old” line which was still being used and out of order, Swisscom was finally able to work on the actual problem, which turned out to be that the modem at the ISP's POP somehow misconfigured itself when resetting after the power came back on. Connectivity was restored at 09:59 UTC (11:59 local time) on 2007-07-19. The router connected to the leased line is supposed to automatically establish an ISDN backup connection when the leased line goes down, but this did not happen; it worked perfectly on previous brief leased line outages, and nothing has changed in the router or telephone system configuration of which I am aware. Since the router is due to be replaced as part of the POP migration next week, there's no point investigating this until the new router is in place. (The ISDN backup isn't remotely fast enough to handle the Web site traffic, but it allows client Internet access, DNS, and E-mail to continue to function, which is handy when you're tracking down problems and communicating with service providers.) At 19 hours, this is the second longest Internet outage Fourmilab has experienced in the more than 12 years the site has been on the Web. The longest was in the late 1990s when the cable bundle carrying the leased line was accidentally cut during an excavation, setting off a Marx Brothers cascade of calamity within the recently-privatised, disorganised, and understaffed Swisscom which took the site down for three full days.
Tuesday, July 17, 2007
Reading List: On Bullshit
- Frankfurt, Harry G. On Bullshit. Princeton: Princeton University Press, 2005. ISBN 0-691-12294-6.
This tiny book (just 67 9½×15 cm pages—I'd
estimate about 7300 words) illustrates that there is no topic, however
mundane or vulgar, which a first-rate philosopher cannot make so
complicated and abstruse that it appears profound. The author, a
professor emeritus of philosophy at Princeton University, first
published this essay in 1986 in the
In it, he tackles the momentous conundrum of what distinguishes
bullshit from lies. Citing authorities including Wittgenstein
and Saint Augustine, he concludes that while the liar is ultimately
grounded in the truth (being aware that what he is saying is
counterfactual and crafting a lie to make the person to whom he
tells it believe that), the bullshitter is entirely
decoupled (or, perhaps in his own estimation, liberated) from
truth and falsehood, and is simply saying whatever it takes to
have the desired effect upon the audience.
Throughout, it's obvious that we're in the presence of a
phil-oss-o-pher doing phil-oss-o-phy
right out in the open. For example, on p. 33 we
It is in this sense that Pascal's (Fania Pascal, an acquaintance of Wittgenstein in the 1930s, not Blaise—JW) statement is unconnected to a concern with the truth; she is not concerned with the truth-value of what she says. That is why she cannot be regarded as lying; for she does not presume that she knows the truth, and therefore she cannot be deliberately promulgating a proposition that she presumes to be false: Her statement is grounded neither in a belief that it is true nor, as a lie must be, in a belief that it is not true.(The Punctuator applauds the use of colons and semicolons in the passage quoted above!) All of this is fine, but it seems to me that the author misses an important aspect of bullshit: the fact that in many cases—perhaps the overwhelming majority—the bulshittee is perfectly aware of being bullshitted by the bullshitter, and the bullshitter is conversely aware that the figurative bovid excrement emitted is being dismissed as such by those whose ears it befouls. Now, this isn't always the case: sometimes you find yourself in a tight situation faced with a difficult question and manage to bullshit your way through, but in the context of a “bull session”, only the most naïve would assume that what was said was sincere and indicative of the participants' true beliefs: the author cites bull sessions as a venue in which people can try on beliefs other than their own in a non-threatening environment.
Friday, July 13, 2007
Reading List: The Case Against Adolescence
- Epstein, Robert. The Case Against Adolescence. Sanger, CA: Quill Driver Books, 2007. ISBN 1-884956-70-X.
- What's the matter with kids today? In this exhaustively documented breakthrough book, the author argues that adolescence, as it is presently understood in developed Western countries, is a social construct which was created between 1880 and 1920 by well-intentioned social reformers responding to excesses of the industrial revolution and mass immigration to the United States. Their remedies—compulsory education, child labour laws, the juvenile justice system, and the proliferation of age-specific restrictions on “adult” activities such as driving, drinking alcohol, and smoking—had the unintended consequence of almost completely segregating teenagers from adults, trapping them in a vacuous peer culture and prolonging childhood up to a decade beyond the age at which young people begin to assume the responsibilities of adulthood in traditional societies. Examining anthropological research on other cultures and historical evidence from past centuries, the author concludes that the “storm and stress” which characterises modern adolescence is the consequence of the infantilisation of teens, and their confinement in a peer culture with little contact with adults. In societies and historical periods where the young became integrated into adult society shortly after puberty and began to shoulder adult responsibilities, there is no evidence whatsoever for anything like the dysfunctional adolescence so often observed in the modern West—in fact, a majority of preindustrial cultures have no word in their language for the concept of adolescence. Epstein, a psychologist who did his Ph.D. under B. F. Skinner at Harvard, and former editor-in-chief of Psychology Today magazine, presents results of a comprehensive test of adultness he developed along with Diane Dumas which demonstrate that in most cases the competencies of people in the 13 to 17 year range do not differ from those of adults between twenty and seventy-one by a statistically significant margin. (I should note that the groups surveyed, as described on pp. 154–155, differed wildly in ethnic and geographic composition from the U.S. population as a whole; I'd love to see the cross-tabulations.) An abridged version of the test is included in the book; you can take the complete test online. (My score was 98%, with most of the demerits due to placing less trust in figures of authority than the author deems wise.) So, if there is little difference in the basic competences of teens and adults, why are so many adolescents such vapid, messed-up, apathetic losers? Well, consider this: primates learn by observing (monkey see) and by emulating (monkey do). For millions of years our ancestors have lived in bands in which the young had most of their contact with adults, and began to do the work of adults as soon as they were physically and mentally capable of doing so. This was the near-universal model of human societies until the late 19th century and remains so in many non-Western cultures. But in the West, this pattern has been replaced by warehousing teenagers in government schools which effectively confine them with others of their age. Their only adult contacts apart from (increasingly absent) parents are teachers, who are inevitably seen as jailors. How are young people to be expected to turn their inherent competencies into adult behaviour if they spend almost all of their time only with their peers? Now, the author doesn't claim that everybody between the ages of 13 and 17 has the ability to function as an adult. Just as with physical development, different individuals mature at different rates, and one may have superb competence in one area and remain childish in another. But, on the other hand, simply turning 18 or 21 or whatever doesn't magically endow someone with those competencies either—many adults (defined by age) perform poorly as well. In two breathtaking final chapters, the author argues for the replacement of virtually all age-based discrimination in the law with competence testing in the specific area involved. For example, a 13 year old could entirely skip high school by passing the equivalency examination available to those 18 or older. There's already a precedent for this—we don't automatically allow somebody to drive, fly an airplane, or operate an amateur radio station when they reach a certain age: they have to pass a comprehensive examination on theory, practice, and law. Why couldn't this basic concept be extended to most of the rights and responsibilities we currently grant based purely upon age? Think of the incentive such a system would create for teens to acquire adult knowledge and behaviour as early as possible, knowing that it would be rewarded with adult rights and respect, instead of being treated like children for what could be some of the most productive years of their lives. Boxes throughout the text highlight the real-world achievements of young people in history and the present day. (Did you know that Sergey Karjakin became a chess grandmaster at the age of 12 years and 7 months? He is among seven who achieved grandmaster ranking at an age younger than Bobby Fischer's 15 years and 6 months.) There are more than 75 pages of end notes and bibliography. (I wonder if the author is aware that note 68 to chapter 5 [p. 424] cites a publication of the Lyndon LaRouche organisation.) It isn't often you pick up a book with laudatory blurbs by a collection of people including Albert Ellis, Deepak Chopra, Joyce Brothers, Alvin Toffler, George Will, John Taylor Gatto, Suzanne Somers, and Buzz Aldrin. I concur with them that the author has put his finger precisely on the cause of a major problem in modern society, and laid out a challenging yet plausible course for remedying it. I discovered this book via an excellent podcast interview with the author on “The Glenn and Helen Show”. About halfway through this book, I had one of the most chilling visions of the future I've experienced in many years. One of the things I've puzzled over for ages is what, precisely, is the end state of the vision of those who call themselves “progressives”—progress toward what, anyway? What would society look like if they had their way across the board? And then suddenly it hit me like a brick. If you want to see what the “progressive” utopia looks like, just take a glance at the lives of teenagers today, who are deprived of a broad spectrum of rights and denied responsibilities “for their own good”. Do-gooders always justify their do-badding “for the children”, and their paternalistic policies, by eviscerating individualism and autonomous judgement, continually create ever more “children”. The nineteenth century reformers, responding to genuine excesses of the industrial revolution, extended childhood from puberty to years later, inventing what we call adolescence. The agenda of today's “progressives” is inexorably extending adolescence to create a society of eternal adolescents, unworthy of the responsibilities of adults, and hence forever the childlike wards of an all-intrusive state and the elites which govern it. If you want a vision of the “progressive” future, imagine being back in high school—forever.
Saturday, July 7, 2007
Vintage Autodesk trade show photosWith this being the twenty-fifth anniversary year of Autodesk's organisation and incorporation, as well as the launch of AutoCAD, I decided to rummage through my photo collection and post images from Autodesk's early days. First in this series are pictures of Autodesk's booths at two trade shows which bracket the initial public stock offering in 1985:
Wednesday, July 4, 2007
Firecracker FratricideI hear there's a holiday on somewhere today where people set off fireworks to celebrate how their individually armed ancestors fought for their liberty. Well, we don't celebrate that in these parts until August 1st, but here's a video to get you in the mood, regardless of the day on which you choose to make a joyful noise. (You, of course, do not want to read the comments on YouTube, as they will only depress you and spoil the exultation of this event.) Hat tip: buzz.mn (where “mn” means Minnesota, not Mongolia, as the IANA database would lead you to believe).
Solar System Live: Colour scheme selectionResponding to a general clamour from users, Solar System Live now provides a “Colour scheme” selection which allows you to choose among five different presentations of the orrery. In addition, this update wraps labels for check boxes and radio buttons in <label> containers so users of competently-implemented browsers can click on the label as well as the control to select it, and the page is rendered more accessible to users of non-graphical browsers.
Monday, July 2, 2007
The Hacker's Diet Online: Beta test concludedThe Hacker's Diet Online beta test program was concluded today and the application released into production. Anybody who wishes to use the online application may now create an account without the need of an invitation code. During the two month beta test process, more than 100 accounts were created by volunteer testers, whose exercising of the program and lucid reports of their experiences helped clear up numerous bugs and potential sources of confusion, as well as suggesting several new features which were added as beta test progressed. The development log lists all of the changes made since the start of the beta test program, and will continue to chronicle further changes. As promised, coincident with the end of the beta program, complete source code for the application has been released into the public domain; if you wish to install the application on your own Web server or use it as a “code mine” for developing your own Web applications, the more than 23,000 lines of code and documentation are now available for your downloading pleasure. If you'd just like to read the source code, you can do so with any PDF reader utility. I consider this production release “initial operating capability”. As is usually the case, once a program reaches that state, ideas for how to improve and extend it begin to pop up, seemingly faster than you can write them down. I expect the application will continue to evolve over the coming months, although after the last few months of intense concentration on this program, I may take a break and attend to other matters before diving back in to flat-out development. As always, comments, problem reports, and suggestions for improvements are welcome.
Sunday, July 1, 2007
Reading List: Next
- Crichton, Michael. Next. New York: HarperCollins, 2006. ISBN 0-06-087298-5.
- Several of the essays in Freeman Dyson's The Scientist as Rebel predict that “the next Big Thing” and a central theme of the present century will be the discovery of the fine-grained details of biology and the emergence of technologies which can achieve essentially anything which is possible with the materials and processes of life. This, Dyson believes, will have an impact on the lives of humans and the destiny of humanity and the biosphere which dwarf those of any of the technological revolutions of the twentieth century. In this gripping novel, page-turner past master (and medical doctor) Michael Crichton provides a glimpse of a near-term future in which these technologies are coming up to speed. It's going to be a wild and wooly world once genes start jumping around among metazoan species with all the promiscuity of prokaryotic party time, and Crichton weaves this into a story which is simultaneously entertaining, funny, and cautionary. His trademark short chapters (averaging just a little over four pages) are like potato chips to the reader—just one more, you think, when you know you ought to have gotten to sleep an hour ago. For much of the book, the story seems like a collection of independent short stories interleaved with one another. As the pages dwindle, you begin to wonder, “How the heck is he going to pull all this together?” But that's what master story tellers do, and he succeeds delightfully. One episode in this book describes what is perhaps the worst backseat passenger on a road trip in all of English fiction; you'll know what I'm talking about when you get to it. The author has a great deal of well-deserved fun at the expense of the legacy media: it's payback time for all of those agenda-driven attack reviews of State of Fear. I came across two amusing typos: at the bottom of p. 184, I'm pretty sure “A transgender higher primate” is supposed to be “A transgenic higher primate”, and on p. 428 in the bibliography, I'm certain that the title of Sheldon Krimsky's book is Science in the Private Interest, not “Science in the Primate Interest”—what a difference a letter can make! In an Author's Note at the end, Crichton presents one of the most succinct and clearly argued cases I've encountered why the patenting of genes is not just destructive of scientific inquiry and medical progress, but also something which even vehement supporters of intellectual property in inventions and artistic creations can oppose without being inconsistent.