Locating Underground Trains Without GPSPermalink

The Transit app blog:

This is the holy grail of underground detection: since you can predict where a rider is, you can show them where they are on a map, update their ETA, and tell them when to get off at the right station.

What’s even more wonderful? Our station counting works completely offline. Both of our models (the motion classifier, and the mixer) have been compressed into tiny files that run on your phone, without sending any data to Transit’s servers.

No tracking. No cookies. Your vibration data is your own damn business!

Not only did they make it run offline, on your own device, but they also didn’t use the term “AI” at all in the post. When so many other companies are rushing to brand everything slightly more complicated than if-then-else as “AI” this is refreshing. Kudos to them.

Reverse Engineering Text Messaging on a HF RadioPermalink

xssfox:

In part one I left you with a cliff hanger regarding page calls. And I particularly like this little note:

This shouldn’t be hard

Like it’s a radio from 1993. Easy right?

That was nearly 7 months ago.

Page calls are text messages sent between radios. Essentially SMS for radios. Or I guess WhatsApp(?) messages for radios. The protocol is very similar to the selcall protocol, just with the message spliced in…. however…..

Codan decided that page calls should be locked down. My assumption here is that the 93xx series of radios were the first by Codan to be advanced enough to allow paging and to keep a market edge they wanted to make it harder for competitors to provide interoperability (pretty sad imho). So page calls include two extra bytes that are validated before receiving.

The rest of the post details the process taken to reverse engineer the generation of these two bytes, including the development of not one, but two 8051 emulators.

WebVM Runs Full Graphical Linux System in Browser Using VirtualisationPermalink

Alessandro Pignotti writing on the Leaning Technologies blog:

WebVM is a full Linux environment running in the browser, client-side. It is a complete virtual machine, with support for persistent data storage, networking and, as of today’s release, Xorg and complete desktop environments. In an instance of WebVM, everything executes locally within the browser sandbox.

WebVM runs on any modern browser, including mobile ones, thanks to WebAssembly, HTML5 and CheerpX: a novel x86 virtualization engine for browsers, developed by us at Leaning Technologies.

You may have seen other sites that run operating systems in the browser. Typically these compile an emulator to WebAssembly and host that in the browser. This works quite well with the light demands of older systems but can be a bit slow for more demanding systems.

WebVM takes a different approach. The CheerpX engine is a JIT compiler from x86 to WebAssembly and is able to run Linux binaries unmodified. WebVM adds a browser based Linux syscall implementation that allows it to run binaries, including graphical ones in the browser, much faster than using a whole system emulator.

Screenshot of WebVM running in Firefox. It is hosting i3 on Alpine Linux with xterm and GVim running.
WebVM running i3 on Alpine Linux with XTerm and GVim running.

Bill Atkinson, Andy Hertzfeld, Eazel, Nautilus and GNOME 1.4

I’m a big fan of Bill Atkinson’s work on the original Macintosh, in particular QuickDraw and MacPaint. Today I heard the news that he has pancreatic cancer:

On October first, I was diagnosed with pancreatic cancer. Because of vascular involvement, surgery is not possible. I am taking weekly chemo treatments to shrink the tumor before surgical resection. I am tolerating the chemo pretty well, and I am in good spirits. Every day I make a point of getting out in the sun and walking with Cai and Poppy.

I wish him well with his fight with cancer.

A related post from Dr. Drang on Mastodon led me to re-read a great story on folklore.org about Bill, written by Andy Hertzfeld:

Bill Atkinson, the author of Quickdraw and the main user interface designer, who was by far the most important Lisa implementer, thought that lines of code was a silly measure of software productivity. He thought his goal was to write as small and fast a program as possible, and that the lines of code metric only encouraged writing sloppy, bloated, broken code.

This lead to a Wikipedia rabbit hole that started with Andy and Bill co-founding General Magic along with Marc Porat, and concluded with me discovering that the Nautilus file manager used in GNOME was created by Eazel, a company Andy Hertzfeld founded after General Magic. Eazel didn’t succeed, but as it laid off most of its 75 employees, 1.0 of Nautilus was released. This 1.0 version was included in GNOME 1.4, released on 13 March, 2001.

I was able to track down a virtual machine image of Red Hat running GNOME 1.4 and after a little but of massaging was able to run it in QEMU on my much newer Linux system. Incidently GNOME Files—Nautilus’ successor—is my file manager of choice on Linux. Please enjoy these screenshots I took of that surprisingly usable 23 year old system.

Screenshot of the GNOME 1.4 desktop. There is a Nautilus window open on the 'Start Here' page.
Start Here
Screenshot of the About Nautilus dialog listing many names in the credits, including Andy Hertzfeld. The Eazel logo is in the top right of the window.
About Nautilus
A screenshot of early 2000s GIMP.
GNU Image Manipulation Program
An early version of the GNOME website in the Mozilla browser.
Early version of the GNOME website in the Mozilla browser
The now defunct Linux Orbit website in the Mozilla browser
Linux Orbit website in the Mozilla browser
Screenshot of the Nautilus help showing a delightfully annotated screenshot of a Nautilus window.
Nautilus Help

If you’d like to try it out yourself, follow the steps below to run it with QEMU. Alternatively, if you use Virtual Box you can import the .ova directly:

  1. Download the image from http://ftp.gnome.org/pub/GNOME/misc/GNOME1.4.ova
  2. Extract the disk image: tar xf GNOME1.4.ova
  3. Convert it to qcow2: qemu-img convert GNOME\ 1.4-disk1.vmdk GNOME\ 1.4-disk1.qcow2
  4. Run it: qemu-system-i386 -m 256M -nic user,model=pcnet -drive file='GNOME 1.4-disk1.qcow2'

The login details are: username gnome, password gnomehistory. The root user also has the same password.