Nov 202011
 

Last May, when I tried to upgrade a motherboard that had trouble recovering from hibernation under Windows 7, I ran into an unpleasant problem: after the BIOS upgrade, the system refused to boot. No BIOS screen, nothing. I do have a test card that shows POST (BIOS diagnostic) codes during boot, but even with its help, I could not revive the board; clearly, its BIOS was busted.

Or perhaps not. Today, I looked at that motherboard again: Same symptoms. But then, for no particular reason that I can remember, I decided to remove memory modules from this board and reinsert them in different slots. Much to my astonishment, the board came back to life!

My guess is that either this was an unfortunate coincidence (a bad contact occurring just as I was rebooting after the BIOS flash) or, much more likely, the new BIOS did not like the particular combination of memory slots that I was using (I picked the two slots farthest from the CPU to minimize heating.)

Whatever the reason, the board now works fine. So what am I to do with it? I really don’t need it anymore (this is a board with a single-core CPU and I now have several dual-core boards either in test machines or as spares). Perhaps I should put it up on eBay while it is still worth something?

 Posted by at 11:34 pm
Nov 152011
 

This comic, from xkcd.com, would be funny if it weren’t so darn frightening:

The original caption, which also appears as hover-over text, reads: “I hear in some places, you need one form of ID to buy a gun, but two to pay for it by check. It’s interesting who has what incentives to care about what mistakes.”

 Posted by at 2:02 pm
Nov 062011
 

In his delightful collection of robot stories Cyberiad, Polish science-fiction author Stanislaw Lem tells us how to build a computer (a sentient computer, no less): the most important step is to pour a large number of transistors into a vat and stir.

This mental image popped into my mind as I was reading the last few pages of Andrew Pickering’s The Cybernetic Brain, subtitled Sketches of Another Future.

Beyond presenting a history of (chiefly British) cybernetics (and cyberneticians) the book’s main point is that cybernetics should be resurrected from the dead fringes as a nonmodern (the author’s word) alternative to the hegemony of modern science, and that the cybernetic approach of embracing unknowability is sometimes preferable to the notion that everything can be known and controlled. The author even names specific disasters (global warming, hurricane Katrina, the war in Iraq) as examples, consequences of the “high modernist” approach to the world.

Well, this is, I take it, the intended message of the book. But what I read from the book is a feely-goody New Age rant against rational (that is, fact and logic-based) thinking, characterized by phrases like “nonmodern” and “ontological theater”. The “high modernist” attitude that the author (rightfully) criticizes is more characteristic of 19th century science than the late 20th or early 21st centuries. And to be sure, the cyberneticians featuring in the book are just as guilty of arrogance as the worst of the “modernists”: after all, who but a true “mad scientist” would use an unproven philosophy as justification for electroshock therapy, or to build a futuristic control center for an entire national economy?

More importantly, the cyberneticians and Pickering never appear to go beyond the most superficial aspects of complexity. They conceptualize a control system for a cybernetic factory with a set of inputs, a set of outputs, and a nondescript blob in the middle that does the thinking; then, they go off and collect puddle water (!) that is supposed to be trained by, and eventually replace, the factory manager. The thinking goes something like this: the skills and experience of a manager form an “exceedingly complex” system. The set of biological and biochemical reactions in a puddle form another “exceedingly complex” system. So, we replace one with the other, do a bit of training, and presto! Problem solved.

These and similar ideas of course only reveal their proponents’ ignorance. Many systems appear exceedingly complex not because they are, but simply because their performance is governed by simple rules that the mathematician immediately recognizes as higher order differential equations, leading to chaotic behavior. The behavior of the cybernetic tortoise described in Pickering’s book appears complex only because it is unpredictable and chaotic. Its reaction in front of a mirror may superficially resemble the reaction of a cat, say, but that’s where the analogy ends.

In the end, the author laments that cybernetics has been marginalized by the hegemony of modernist science. I say no; I say cybernetics has been marginalized by its own failure to be useful. Much as cyberneticians would have preferred otherwise, you cannot build a sentient computer by pouring puddle water or a bag of transistors into a vat. The sentient machines of the future may be unknowable in the sense that their actions will be unpredictable, but it will be knowledge that builds them, not New Age ignorance.

 Posted by at 3:00 pm
Nov 032011
 

Facebook didn’t hate me after all. They just discontinued posting from RSS feeds.

Instead, I now installed a new WordPress plugin that will supposedly help me automatically post my entries to Facebook.

In the process, I also updated my blog site to use a more modern theme rather than the beautiful but somewhat archaic theme I set it up with several years ago.

Let’s see if all of it was worth the effort.

 Posted by at 9:47 pm
Oct 222011
 

I’ve been using WordPress for this blog for the last several years. Lately, I noticed a problem: every new post I add appears in the “Uncategorized” post category, and it is impossible to remove a post from a category.

I’m sure the good folks at WordPress will fix this problem soon, but until then, here are the SQL statements I need to remove all posts from the “Uncategorized” category:

 DELETE vttoth_term_relationships FROM vttoth_term_relationships, vttoth_posts
  WHERE term_taxonomy_id=1 AND object_id=ID AND post_type='post';
 UPDATE vttoth_term_taxonomy SET count=0 WHERE term_taxonomy_id=1;

My WordPress database is called ‘vttoth’; for a WordPress database that uses a different name, the above instructions must be altered accordingly.

 

 Posted by at 2:10 pm
Oct 142011
 

I’m reinstalling Windows 7 on my main computer. I am doing an Upgrade (upgrading Windows 7 with itself) to avoid having to reinstall everything else. This is kind of a last resort solution, to deal with a problem that defeated all my previous attempts to fix, including some machine code level debugging. I hope the reinstall will do the trick. I’ll know in a few hours.

 Posted by at 10:19 pm
Oct 132011
 

While the world mourns Steve Jobs, another computing pioneer, Dennis Ritchie, died. Our world wouldn’t be the same without UNIX or the C programming language. My own life would have been very different without him. Jobs will long be forgotten when Ritchie’s legacy will still live on, decades from now.

#include <stdio.h>

main()
{
    printf("goodbye, dennis\n");
}

 Posted by at 12:27 pm
Oct 112011
 

Yesterday, I watched Terminator Salvation, the latest movie in the Terminator franchise.

Today,  I am reading in the news about an attempt to reconstruct visual images from MRI brain scans.

I am also reading about US military drones hacked by a virus of unknown origin and purpose.

All of which makes me wonder just how close we are actually to the kind of dystopian future depicted by the Terminator movies.

 Posted by at 8:08 pm
Sep 062011
 

It has been a while since I did anything in machine language. Until this past weekend, that is, when I spent a fair bit of time starting at disassembled code with a debugger.

Last week, I upgraded my Sony Ericsson smartphone to the latest version of its operating system. The upgrade process failed on my main computer when, after updated USB drivers for the phone were downloaded, they failed to install. The problem was not specific to the phone: all driver installations failed, with a not very informative code (0xC0000142, which just means that the application failed to initialize.)

Using the very helpful ProcMon utility from sysinternals (now owned by Microsoft) I managed to identify that it was a process named drvinst.exe that failed. This process is invoked automatically by the system every time a USB device is inserted, and also during device driver installations. So why did it fail?

I downloaded the latest Windows debugger (windbg.exe) from Microsoft; this debugger allows me to do things like debug child processes spawned by a parent process. (I later learned that drvinst.exe actually has a feature whereas it waits for a debugger after startup, to help with driver installation debugging; but chances are that I would not have been able to make much use of this feature, as the failure occurred before drvinst.exe actually started to execute its own code.) I attached the debugger to the DCOM service process (which is the one that spawns copies of drvinst.exe.) I was able to determine that it was during the initial process setup stage that this process failed, when it was attempting to attach to the gdi32.dll system library.

I still have no idea why this happens. But with the help of the debugger, I was able to tinker with this process, changing a processor register’s value at just the right spot, allowing it to continue. This inconvenient but workable process allowed me to install drivers for my phone and also updated drivers for my wireless mouse from Microsoft Update.

Perhaps the most incomprehensible bit is that the same thing works fine on an essentially identical computer. The actual failure occurs inside a kernel subroutine (undocumented system call 123Ah, called from GdiDllInitialize in gdi32.dll) that I cannot debug without a kernel debugger (and since I am trying not to mess my machine up too much, I opted not to do kernel debugging). That subroutine does not appear to be doing anything particularly magical. I checked and all relevant files and Registry settings are identical on the two machines. So it remains a mystery for now… nonetheless, it was educational. I learned a lot about driver installation in Windows 7, about process startup, and incidentally, about the ReactOS project whose open source equivalents to the relevant system components helped me a great deal to understand what was going on.

 Posted by at 8:13 pm
Aug 272011
 

I never thought Apple computers were hip. Every so often, I thought about buying Apple hardware, but if I did so, I’d want a development system, so my shopping cart at apple.ca rapidly ballooned to some 2,000 dollars… by which time I inevitably realized that I’d be buying expensive toys that would become obsolete long before I’d find the time needed to become proficient with Apple’s development tools.

And now here is an interesting article, from the Ottawa Citizen no less, elaborating on something that I felt all along: that despite its hip image, what Apple sold to the masses all along was really mediocrity.

Of course this probably means that I am not one of the cool kids, but if that is the case, so be it… life is way too short to worry about coolness.

 Posted by at 8:11 pm
Aug 172011
 

I am not usually in the business of recommending software or hardware products, and it’s certainly not something anyone pays me to do… but recently, I began using two products, both of which have exceptional value, even though one came free of charge and the other cost only 150 dollars.

The free product is Secunia’s Personal Software Inspector (PSI), a software application that turned from something I never heard about into something I cannot live without virtually overnight. It is an application that keeps tabs on all the software installed on your computer and lets you know if any of them are out of date and require updates. Like antivirus software, PSI sits quietly in the background most of the time, but it pops up an unobtrusive warning whenever a new update becomes available, and even offers a direct link to the manufacturer’s download site. It is nice, incredibly useful, it recognizes hundreds of installed applications, and, well, it works as it is supposed to and doesn’t cost a penny.

The product I paid money for is a Cisco RV042 small business router. It does what small business routers do, connects your internal network to an external (DSL, cable, etc.) Internet connection. What makes it special is that it allows your internal network to be connected to two external connections at the same time, and it performs dynamic load balancing and failover functions between the two. I now set up my network architecture to take full advantage of it… and in the coming days, it will be working overtime, as I am planning a major change to my DSL service which will likely involve some unpredictable downtime. The router has other useful functions, too, not the least of which is that it can act as a VPN server, allowing a remote computer to connect to the internal network. The best part is that, like Secunia’s software, it simply works as advertised.

 Posted by at 8:47 pm
Aug 122011
 

Back when I was learning the elementary basics of FORTRAN programming in Hungary in the 1970s, I frequently heard an urban legend according to which the sorry state of computer science in the East Bloc was a result of Stalin’s suspicious attitude towards cybernetics, which he considered a kind of intellectual swindlery from the decadent West. It seemed to make sense, neglecting of course the fact that the technological gap between East and West was widening, and that back in the 1950s, Soviet computers compared favorably to Western machines; and that it was only in the 1960s that a slow, painful decline began, as the Soviets began to rely increasingly on stolen Western technology.

Nonetheless, it appears that Stalin was right after all, insofar as cybernetics is concerned. I always thought that cybernetics was more or less synonymous with computer science, although I really have not given it much thought lately, as the term largely fell into disuse anyway. But now, I am reading an intriguing book titled “The Cybernetic Brain: Sketches of Another Future” by Andrew Pickering, and I am amazed. For instance, until now I never heard of Project Cybersyn, a project conceived by British cyberneticists to create the ultimate centrally planned economy for socialist Chile in the early 1970s, complete with a futuristic control room. No wonder Allende’s regime failed miserably! The only thing I cannot decide is which was greater: the arrogance or dishonesty of those intellectuals who created this project. A project that, incidentally, also carried a considerable potential for misuse, as evidenced by the fact that its creators received invitations from other repressive regimes to implement similar systems.


Stalin may have been one of the most prolific mass murderers in history, but he wasn’t stupid. His suspicions concerning cybernetics may have been right on the money.

 Posted by at 3:03 pm
Jul 122011
 

I was trying to resolve a tricky problem today with the domain name system on one of my servers. One possibility was that a broken root server might have been responsible for the faulty behavior. So I began reading about broken root servers. Reading up on this topic, I happened upon an article published a few years ago discussing the pros and cons of internationalizing the Internet’s numbering authority. So I went to Wikipedia to read up about the current status of ICANN. This led me to another article about the proposed Interplanetary Internet, and about delay-tolerant networking in general. Soon I found myself reading a variety of articles on the history of computing, including the legendary decline of once famous companies like Data General and Digital… and eventually, after reading about early computer architectures and calculators, I was staring at an article discussing the early inventions of Hero of Alexandria, who indeed had a steam reaction engine and another invention that used expanding hot air to displace water which then opened church doors, two inventions that are often confused these days, leading many to believe that Hero’s engine was capable of useful work.

Unfortunately, I am not capable of useful work when I get lost like this on Wikipedia. My problem with DNS remains unsolved.

 Posted by at 3:18 pm
Jul 082011
 

Today, I received a phone call from 1-510-943-3040.

A gentleman with an Asian accent informed me that he is from the MS Windows Service Department (or whatever) and that in the last 30 days, they received repeat warnings from my computer about some malware attack.

I played along for a minute or two… but when the gentleman asked me to turn on my computer, I just couldn’t any longer. Still holding back my anger, I first explained to him that right now I am staring at a bookshelf containing a number of books I wrote about C++ and Windows programming; that I’ve been a computer professional since the 1970s (true, I received my first professional contract at the tender age of 16 in 1979)… and then, in language more rude I am afraid, I also told him that they are nothing but crooks and criminals, and that he should get off my f…ing phone.

The insolence!

 Posted by at 9:45 pm
Jul 072011
 

This morning my main server greeted me with an unexpected and unpleasant surprise: it no longer recognized its video card. This problem has happened before (removing and reinserting the video card fixed it) but this time around, I decided that rather than investing the time into fixing the old server, I should finally complete the setup of my new server, which has been in a half-finished state for months.

Well, to make a long story short, I am now writing this using the brand spanking new server, and just about everything works… but it was a pretty much non-stop 15 hours and I am tired like a horse. A few more hours to go tomorrow, fixing things like temperature sensor drivers or the UPS software.

Groan.

 Posted by at 2:57 am
Jul 042011
 

Many years ago, I once bought a CD changer: a standard form factor internal CD-ROM drive that could “swallow” four CDs at a time, which then all appeared under different drive letters.

One of the most infuriating things about Windows (NT 4.0 at the time) was that every once in a while, when a program enumerated all drives, it caused the drive to needlessly cycle through the four CDs: clickety-click, zoom, zoom, clickety-click, zoom, zoom, clickety-click, zoom, zoom, clickety-click, zoom, zoom, taking its sweet time.

I no longer use that CD changer, but I do have several external hard drives permanently hooked up to my computer. They are Western Digital MyBook drives, which spin down after some minutes of inactivity. And… you guessed it, every once in a while, say when I am running an installer, stupid Windows spins them all up, sequentially of course, to consume as much time as possible.

I wonder if Microsoft will ever acknowledge this as an issue and fix it. Based on past experience, I am not holding my breath.

 Posted by at 1:10 pm
Jul 022011
 

Yesterday, Intel lost the bid for the patent assets of defunct Canadian company Nortel, despite joining forces with Google.

Google bid some odd amounts; for instance, at one point they bid $1,902,160,540.

The digits happen to be those of Brun’s constant: B2 = 1.90216058…

Brun’s constant is the sum of the reciprocals of twin primes. B2 = (1/3 + 1/5) + (1/5 + 1/7) + (1/11 + 1/13) + … According to Brun’s theorem, this sum converges. The limit of the sum is Brun’s constant.

A professor of mathematics named Thomas Nicely once used a group of computers to calculate twin primes up to 1e14, computing Brun’s constant among other things.

At one point, Nicely’s computations failed. After eliminating other sources of error, Nicely concluded that the problem was a fault in the new Pentium processors present in some recently acquired computers in the group.

Nicely notified Intel, but it wasn’t until after a public relations disaster that Intel finally responded the way they should have in the first place, offering to replace all affected processors. This cost Intel $475 million.

Who knows, if they still had that extra $475 million cash in their pockets, they could have bid more and won yesterday.

 Posted by at 10:21 pm
Jun 292011
 

Looks like Facebook is having trouble grabbing my blog entries. It stopped a while ago… when I reset the blog settings on Facebook, it downloaded the latest, but then it stopped again.

I’ll try to reset it one more time but if it doesn’t work… hey, blogs were meant to be write-only anyway. I am yelling at the world, I don’t necessarily expect the world (or even my close circle of friends) to yell back.

Still, one would think that Facebook, with its fancy, shiny new data center and all that, would be a little more robust.

 Posted by at 5:16 pm