Preston L. Bannister { random memes }

2004.05.31

Memorial Day … and beer?

Filed under: Personal — Preston @ 10:09 pm

Kids went back to their mother’s yesterday, so the house is quiet if something of a disaster.

Today started warm and sunny. Thought about heading down to Laguna Beach for a walk in the morning, but good weather and a holiday weekend means too many people. Spent the morning and most of the afternoon making the clean spot in the house bigger, and the pile of dirty laundry smaller.

Made and finished a pot to good coffee, read another chapter out of Agile Software Development (good book – but about a chapter a day is the most I can read), and finished off a few bottles of “Coastal Light”.

Don’t know why, but I really like this “Coastal Light” beer Trader Joe’s sells. Before I mostly drank German dark beers (served cool not cold). Sometimes the beer tasted good, and other times it didn’t. Probably averaged at most a dozen bottles a month (often much less). But this “Coastal Light” hits my palate just right – a hint of yeast, a bit of a bite, a hint of roasted grain, and a mild after-taste. I can drink this stuff all day (is this a good thing?).

Their brewery is in Paseo Robles. Maybe an excuse for a drive up the coast.

Drove down to Laguna late in the afternoon. Traffic was only a bit thick, and found a spot a half-block from the beach on Forrest (a nice street to wander down with all the shops). Spent a couple hours wandering around Laguna Beach. Lots families winding down their picnic-outing. Lots of folks not speaking English (asian, middle-eastern, hispanic in order of apparent numbers). Headed back just before sundown.

The pile of laundry is now clean. The kitchen is spotless. The bemused dog with muddy feet is in the backyard – and wants in.

Yahoo commits suicide!

Filed under: Web — Preston @ 10:00 pm

Someone has got to find a way to get feedback to Yahoo. For the past few weeks Yahoo has become nearly unusable. Yahoo runs a lot of their links through rd.yahoo.com or us.rd.yahoo.com, and almost every single time the link (redirection?) fails. I might have to stop using Yahoo (bummer).

What is even worse is that the “help” links have the same exact problem. It is entirely possible Yahoo does not even know of the problem, because no one can find a feedback path that works!

Argh.

2004.05.28

Human Response: melodic electronica

Filed under: Music — Preston @ 12:10 pm

Human Response: melodic electronica – more new music from Magnatune.

Same deal – listened to the entire set (more than once) and found this a keeper. Bought her piano music too, though I’m not generally keen on piano music.

2004.05.27

“Vintage” software?

Filed under: Software — Preston @ 10:34 am

Got email a few days ago from Eric Smith who was trying to find something out about the old Western Digital Microengine. My first job out of college was working at WD on the Microengine (1981-1982).

One of my tasks while there was to write software for the new hard disk controller for the Microengine. The hard disk controller used the WD1000 chipset (the first ancestor to today’s IDE/ATA interfaces).

When I first got the driver working, my manager got excited and we marched around the building announcing this fact to lots of people I didn’t know. At the time I had no idea why he did this. This was my first job out of college. On reflection, this might have been one of the first proofs that the WD1000 chipset really worked.

I spent considerable time optimizing the code. The numbers are still burned into my brain:

  • 3200 rpm disk rotation, or 53.3 per second
  • 16 sectors per track (actually 17, one spare to allow for bad blocks).
  • 512 bytes per sector (optimal combination for the then-current disks).

This meant there was 16*512*53.3 = 436906 bytes passing under the head every second. Once the hard disk controller had read a single sector into it’s buffer, the buffer had to be emptied before the next sector could be read. The time needed by the DMA controller was equivalent to just over 2 sectors passing under the head. Once DMA finished the software needed to reprogram both the hard disk and DMA controllers for the next sector. With all that I was pretty happy to get the interleave down to 5:1 (stable), and 4:1 (marginal). At the 4:1 interleave any sort of interruption would cause us to miss the sector and have to catch it on the next revolution, so we backed to 5:1 for consistent performance.

To get this level of performance I used a bit of a trick. While one sector was being read by the hardware, the software precomputed all the controller parameters for the next sector, and assembled the results into a record that could be block-assigned into the controller registers.

At 5:1 we are talking about ~87KB read/write per second. As long as the disk didn’t have to seek, we could swap half the 128KB memory to disk in less than a second. This lead to musing about swapping entire running applications to disk (~3 seconds to swap the entire memory).

When the hard disk controller came out for the IBM XT, it used a later WD chipset. By my standards (at the time) this was dream hardware. The controller did multi-sector IO! The DMA and CPU were faster! With that hardware I figured they might easily get a 2:1 or 3:1 interleave! I was shocked to find that the IBM XT shipped with a far worse interleave (9:1?) than I got with less capable hardware.

Right. Not that any of this is remotely relevant any more…

2004.05.21

Stargarden: huge ambient compositions.

Filed under: Music — Preston @ 4:57 pm

Stargarden – more new music from Magnatune.

After listening to the entire set (more than once – hope the bandwidth doesn’t cost them too much) found this a keeper. For some reason this went well with testing an LPD capture service (don’t ask).

2004.05.14

Finding Lisp

Filed under: Software — Preston @ 12:50 pm

Back in college (in the late 1970’s) I signed up for a couple of undergraduate research projects. One was to build a small (?) natural language interpreter. The second was to build a prototype Ada programming environment (remember when Ada was a hot/new language?).

Both were written using UCI Lisp.

The folks in the Ada programming environment project generated an Ada parser, interpreter, compiler, and integrated editor for a subset of Ada in a remarkably small amount of time. This was only possible by leveraging off the Lisp environment.

Lisp had a pretty steep learning curve, but once you “got” the ideas in Lisp programming, you could get far more done in less time than in any other language. Since the full Lisp programming environment had a tendency to turn a “big” computer into a single-user machine, Lisp was widely viewed as impractical. We’re talking about when “big” was a one MIPS machine with a megabyte of memory. With today’s computers … well, I could probably host the entire Lisp research community of that time on my current PC.

When XML came out I had a distinct “been there” feeling. XML is basically another (more expensive) way of presenting Lisp s-expressions – and is a great idea for pretty much the same reasons.

Ran across someone visiting the same meme – Finding Lisp.

Not that I think going back to Lisp is really practical at this point. In fact the combination of Java and XML covers much the same ground, and “critical mass” is important.

2004.05.08

Long Bets – Passing the Turing test by 2029

Filed under: Software — Preston @ 2:08 pm

Long Bets [ 1: By 2029 no computer - or "machine intelligence" - will have passed the Turing Test. ]

Interesting bet… and I think we could build the software to pass the test today!

Back when I was in college I took an interest in Artificial Intelligence (AI). The then-current body of knowledge that went under the label “AI” was clearly a very log way from simulating intelligence. In thinking about the problem I came up to three main obstacles:

  1. The amount of compute power needed.
  2. The amount of storage needed.
  3. The amount of accessible information needed for learning.

First we can estimate (very roughly) the amount of compute power needed to achieve “intelligence” simply by looking at the human brain. The estimate has a high side, and a low side (with a very large range between). The low side goes something like:

  • There are ~1 billion effective neurons (there are ~10 billion neurons, but most look like wiring).
  • Each neuron has an effective “fan out” of ~10 connections (there can be thousands of connections, but given the connections were made almost by chance, as a guess most are not useful).
  • Each neuron can in effect make ~10 “decisions” per second (a neuron can fire up to something like a thousand times per second, but given the neuron is an analog device, you need a fair number of pulses to add up to a “decision”).
  • The human mind is really nature’s first try at intelligence. It is reasonably likely that the human mind is not built very efficently, and intelligence could be achieved with perhaps 1/10 the processing power of the human brain.

Taken together the above gives a (very!) rough estimate of the minimum compute needed for intelligence:

( 10 * 10 * 1 billion / 10 ) = 10 billion “decisions” per second

These “decisions” are essentially binary in nature, and are (very) roughly equivalent to the bits flowing through a computer CPU. So the equivalent rate for a CPU would be something like the number of bits in a machine word multiplied by rate at which the CPU processes instructions.

In the late 1970’s the then-largest current machines were vastly slower than the low-side estimate for needed processing power.

Storage was another problem. If each fan out from a neuron was roughly equvalent to a bit of storage, then we needed a computer with perhaps 1 to 100 billion bits of storage.

In the late 1970’s the then-current machines had vastly smaller storage.

Learning was another problem. Humans take decades to achieve full intelligence, and during that time are exposed to quite a lot of experiences. We don’t want to take decades educating an experimental AI, only to find that we got the design wrong and have to start over. We need a huge amount of available information to feed to our AI for each successive experiment.

In the late 1970’s … well, you get the picture. At this point I dropped my interest in AI, figuring it would be decades before we would have just the raw computing power needed.

A few years ago, I remembered this old exercise, and was slightly shocked to realize that just the generic PCs in my study were near or above that old estimate.

I strongly suspect that we already have what we need support AI. We have multi-gigahertz CPUs and multi-gigabyte memories. We have a vast pool of information accessible via the Internet.

Of course we don’t have a clue about how to write the software….

2004.05.02

Silly Internet Game

Filed under: General — Preston @ 12:45 pm

Hey, this wasn’t my idea … Silly Internet Game … playing the “game”, the following is from Save Your Knees :

” And if a large piece wedges itself between the bones, the knee may suddenly lock. ”

The game instructions: Grab the nearest book, open it to page 23, find the 5th sentence, and post its text along with these instructions. I would add to the instructions: point back to where you got the idea so that we can follow the threads.

( And yes, the quoted sentence applies to me. I am not looking forward to visiting the doctor. )