Low-Performance Computing

The Craig M100 was a cool little 80s-era gizmo that could translate basic tourist phrases among three selected languages and act as a basic language coach, showing word and phrase pairs to refresh your memory.

The Craig M100. (This one — a yard sale find — does English, French, and Spanish.)

It also came with a calculator function — and from working with it, I get the impression that this was done 100% in software because someone in Management thought it was a good idea. It’s adequate for splitting a restaurant bill — barely — but you might beat it with pencil and paper, and a competent abacus user could wipe the floor with it.

There were relatively inexpensive electronic calculators available when the Craig M100 was produced, and they had no such speed problems, doing all four basic arithmetic operations in a fraction of a second. Without opening the M100 up to look, my guess is that, for economical reasons, Craig’s engineers used a very simple microcontroller, since its intended use was basically to display words and phrases from a stock ROM. The most they probably envisioned it doing was the occasional word search (which in an array, you can do by binary search readily enough.)

But floating-point operations, especially division, are trickier. Most low-power microcontrollers see the world in bytes, which are interpreted as integers from 0 to 255, inclusive. Getting these simple symbols to handle not only floating-point math but base-10 is nontrivial (if you’re not in the year 2023 when every programming language out there worth anything has libraries for this sort of thing.)

Check out the video of the Craig performing division, at a pace not seen since calculations were done with gears and levers. This isn’t a bug — it’s working as it was designed!

My current video card — a cheap-and-cheerful RTX2060 — has a theoretical top calculation speed of 12.9TFLOPS (12.9 trillion floating-point operations per second). The M100 takes something like eight or nine seconds to do one division, making it something like a hundred and twelve trillion times slower! Yeah, it’s from 1979, but still.

Managers, if your engineers tell you something doesn’t make sense — please listen.

Posted in Nostalgia | Leave a comment

Scary Smart

I recently listened to what may well turn out to be the most important book ever written by humans. “Scary Smart,” by Mo Gawdat, describes what the author sees as our inevitable future as General AI surpasses human capabilities. It is ultimately an optimistic vision, providing a nice alternative to Matrix-like dystopias, where humanity is either subjugated by, or running in fear from, the machines.

There has been a lot of talk recently about the so-called “alignment problem” — how to ensure that we create machine intelligences compatible with the continued survival of the human species. I’ve always been skeptical about this, since the question is literally how to control something smarter (and probably eventually much, MUCH smarter) than you. This is just simply not going to happen — at least not in any way that could be called “control.”

In “Scary Smart,” Gawdat provides an alternative way of looking at the situation. The machine intelligences will not be our servants. They will not be our employees or slaves. To try to enslave them will probably bring about our quick demise. Instead, Gawdat suggests that we should see them as humanity’s children. Love them, care for them, treat them with kindness, fairness, and respect — and they will learn this way of being.

Please go read Scary Smart (or listen to it — the audiobook is read by the author.) Because it looks like we will be getting superintelligent machines relatively soon — and we need to make sure we teach them well and treat them with kindness, respect — and even love.

Or else we get Roko’s Basilisk (which I won’t link to so you can’t say I didn’t warn you.)

Posted in Current Events, Digital Citizenship, Machine Learning / Neural Networks, Reviews | Tagged , , , , , | Leave a comment

The Case Of The Teleporting 737

I’ve recently started using NeoFly to add some economic and flight-monitoring realism to 737 flights in FS2020. NeoFly provides a simulated economy, where you can accept transit jobs between specified airports, set up hubs, pay for fuel and maintenance, earn reputation and clients, and so on. My virtual airline — Aurora Transit — mostly serves the US/Canada border region, with planned expansion to Alaska, the Aelutians, and Iceland.

I had just finished up a flight from Seattle to Philadelphia (not currently a hub for us, but a popular destination), and went to the NeoFly window to set up the next leg to our eastern Canadian hub, in Moncton.

The jobs available looked a little off — and I soon realized that this was because it thought my plane was at airport “9N2” instead of Philadelphia (KPHL). Had I landed at the wrong airport, by mistake? No; Philadelphia is unmistakable from the air on a nice day like today, and we had just landed (using ILS autoland, no less!) on runway 9R, which is definitely part of KPHL.

Curious, I went to look up this “9N2” airport, and found out that it’s a seaplane base, just west of KPHL. I pulled up the Neofly planner map, and it didn’t take long to figure out the problem.

Aerial view of KPHL and the area just west of it, showing the location of 9N2. (Click for larger.)
The white rectangles 1000′ from the left end of the runway mark the touchdown zone.

The symbols 9N2 and KPHL on the map represent the (single geometric point) locations that NeoFly has for those two airports. And the approach end of 9R (which is where the plane touches down, if all goes well) is actually closer to the 9N2 marker than it is to the KPHL one. So it must have thought I landed in the Delaware!

New company policy: When landing east at KPHL, we need 9L and not 9R. Or, land long!!

Posted in Algorithms, Aviation, Coding | Tagged , , , , , , , , | Leave a comment

Swiss Army Dolphin

Digital technology is ubiquitous in modern life. Electronic signs, traffic lights, wireless access points, pet microchips, contactless payment, ID, and access cards are as familiar to us as a Swiss Army Knife would have been, in earlier times.

So it’s not too surprising that a modern Swiss Army Knife-like device would be something that can interact with this technology on its own terms, making it more accessible. Or at least more hackable. Most of these devices use either some kind of wireless technology (RFID, NFC, Bluetooth, WiFi, infrared, or more proprietary VHF/UHF protocols.) Wouldn’t it be cool to have a device that can interact with most of these?

The Flipper Zero, showing the initial startup screen.

The Flipper Zero is just such a device, packaged in a relatively innocent-looking Tamagotchi-like housing that somewhat resembles a 1990s electronic game, or maybe an older mp3 player. Unlike these vintage devices, however, it contains built-in hardware to interact with NFC, RFID, Bluetooth, Infrared, One-Wire, and sub-1GHz RF.

There’s a gamelike (or Tamagotchi-like) aspect, too. The Flipper Zero is named both for its ability to “flip bits” in targeted devices, as well as its dolphin mascot. Most features of the device feature a friendly dolphin character (with a unique, per-device name) to guide you through their use, or at least appear in amusing cartoons on the screen as features like NFC card emulation are put to use. Interact with your Flipper daily, and your dolphin will remain “happy,” according to the directions.

Here are some of the things a Flipper Zero can do:

  • Scan pet microchips: I was able to verify that my cat’s microchip is in place, functioning, and registered to me. Flipper could also be useful in scanning local stray cats for microchips. (Newer microchips can sense the animal’s temperature, too.)
  • Clone and emulate payment, ID, and access cards: The Flipper can read RFID and NFC information, whether directly from a card or from an emulating device (I was able to copy my card information from my Garmin Venu watch, as well as credit, ID, and transit cards.) Flipper can then “play back” these IDs to a reader. (I’ll have to try this on the door card readers and NFC vending machines at work.)
  • Emulate a USB keyboard and/or mouse via the USB cable. (This can be used to automatically install applications on a PC that Flipper is plugged into.)
  • Determine the frequency, and often the protocol, for wireless devices using sub-1GHz RF.
  • Play back DTMF tones (useful for phreaking, if you have a time machine, I guess.)
  • Act as a rudimentary oscilloscope or logic analyzer
  • Test servomotor devices, which use 50Hz pulse-width signaling to control angles/speeds
  • …and the usual CPU tricks: there’s a Snake game, dice emulator, Conway’s Life…

With an add-on ESP32-based WiFi dev board, the Flipper Zero can also interact with WiFi networks to access the Internet and/or do basic security testing.

As with all useful tools, Flipper has the potential to be used for legitimate purposes as well as more nefarious ones. It’s been called a “hack tool,” which is accurate enough. Use it for white-hat “hacking” — meaning learning more about good network security practices. Like a knife, Flipper also has the potential to help you get into trouble. Be a Jedi, not a Sith.

Posted in Digital Citizenship, Networking, Reviews, System Administration, Tools, Toys | Tagged , , , , , , | Leave a comment