U.S. Patent 11,669,350

Last year, I was awarded a U.S. patent for the remote desktop video conferencing system that I developed, collaborate.

Collaborate is, and will remain, open source and free to use. The purpose of the patent is only to claim my legal rights as the inventor; I have no intention of trying to monopolize the use of this technology.

The A.I. Revolutions

The recent surge of interest in Large Language Models (LLMs) like GPT-4 has motivated me to set aside my mathematical research for a time and focus instead on A.I. The current LLM revolution does not seem to be a passing fad.

I’m predicting not one, but three A.I. revolutions that I expect to follow in fairly short order:

  • The Large Language Model Revolution
  • The Machine Vision Revolution
  • The Personal Robotics Revolution
Continue reading “The A.I. Revolutions”

The Golden Age of Computing

Ah, the Golden Age of Computing!

It isn’t here yet.

Maybe a hundred years in the future.

I’ll be nice.

If you read this then, take joy! You’ve got a wonderful digital assistant that’s an expert draftsman, chessplayer and trivia champion, runs a tight, secure network presence for you, is always letting you know the latest interesting tidbits on the news feed or the personal side, sigh…

For now, I’ve got to deal with nginx configuration files.

When I got up this morning the network was down. I had moved a laptop yesterday from wired to wireless and back, it didn’t come back right and its used as a router because the real router doesn’t have a wifi interface. Probably still not right, but I got the power turned on to osito. It took a while.

Jotted some things down in my diary, took a smoke, had something to eat, back to work.

Now I’m trying to re-install collaborate. Remove the development version. Install the distributed version. Why is it so slow? Dig through Google pages because I can’t remember the name of the debugging program – that’s it! iftop! Why is it connecting secure? Why is my website so slow?

Oh, crap, my website is down (again). D—. Dig through the docs and keys to figure how to get into the aws console. Oh, it looks fine. Wait a minute, that was just a typo on my part, logging in to the wrong machine. False alarm.

Finished the install, but it’s broken. Stare at its logs. bbb-html5 didn’t install right. nginx couldn’t start. Check the nginx logs. Why didn’t that file delete? It was part of the removed package. Check the package versions. Yup, we got the right package, but that file shouldn’t be there. Who knows why it wasn’t removed. Remove it by hand. Complete the install.

OK, now I can connect, but no audio. Seen this plenty, just down and up the videoconferencing server. OK, now it works with audio!

It’s 3:30 in the afternoon. I just finished my first task for the day: install the currently distributed version of collaborate on osito.

To those of you reading this in the Golden Age of Computing, take joy!

We in the early twenty first century see their potential, but waste so many hours dealing with all these bugs, the lack of natural language recognition, and the bugs, the bugs, the bugs!

In the Golden Age of Computing, you’ll be able to get some work done.

/etc: Please stop enabling

One of the most painful legacies of UNIX’s long gestation is the mess of scripts, configuration files, and databases we affectionately call “/etc”. Binaries go in “/bin”, libraries belong in “/lib”, user directories expand out under “/home”, and if something doesn’t fit? Where does it go? “/etc”.

Of course, “/etc” isn’t really the overflow directory that its name would imply. “/config” would be a far better choice, more accurately reflecting the nature of its contents, but like so much of the data contained within it, its name suggests a lack of organization rather a coherent collection of configuration settings. While the rest of the filesystem has moved on to SQL, the user account database is still stored in colon-separated fields. Cisco routers can snapshot a running network configuration to be restored on reboot, but the best we can do is fiddle the interfaces file, then reboot to take the changes live. Or adjust the interface settings by hand and wait for the next reboot to see if the network comes up right. Our name service is configured in /etc/hosts, or /etc/resolv.conf, or /etc/network, or /etc/dnsmasq.d, or /etc/systemd, or wherever the next package maintainer decides to put it. Nor can you simply save a system’s configuration by making a copy of /etc, because there’s plenty of non-configuration information there, mostly system scripts.

What a mess.

Continue reading “/etc: Please stop enabling”


Apple’s recent announcement of the iPhone has inspired me to reconsider how IT can be used to support foreign language studies. According to Apple, the iPhone will have a microphone (it’s a phone, after all), run OS X, and have 4 to 8 GB of memory. That should be a sufficient platform to load a voice activated dictionary. After training a voice recognizer, you could speak a word into the device which it would then lookup in a dictionary and display the dictionary entry on the screen, providing language students with the detail of a full sized dictionary in something that could fit in their pocket.

Could pocket Spanish-English dictionaries be a thing of the past?

Dynamic DVD

As streaming video has become more commonly available, it is now plausible to discuss offering a video interface to a website. A user could connect to a site using a video client and “navigate” on-line video content using a DVD-style user interface – video menus, highlighted on-screen buttons, fast-forward, subtitles. Alternately, such an interface could augment conventional TV broadcasts, offering a nightly news program with video hyperlinks to hours of detailed coverage of events we currently see only in sound bites.

Continue reading “Dynamic DVD”

Building chess tablebases over the Internet

I’ve read some stuff on the Internet about using pre-computed tablebases to solve complex endgames. Apparently you can load a five- or six- piece tablebase into a program like Fritz and it will then know how to mechanically solve any endgame with five (or six) pieces on the board.

I starting thinking about this, but more along the lines of building the tables dynamically, using a pool of cooperating computers on the Internet. The idea would be to direct your search towards certain game positions that you wanted to analyze. This would work well in static analysis and also in relatively slow correspondence time controls (like Gary Kasparov vs The World, or the upcoming The World vs Arno Nickel).

Continue reading “Building chess tablebases over the Internet”