Back in 1993, I was taking a number theory class, and there was a semester-long factorization contest that we could participate in. I implemented a distributed multiple polynomial quadratic sieve (MPQS) for the Mac, and I needed a cluster of computers to run it on.
The computer lab in the math building had a bunch of Mac Centris 650s on an AppleTalk network. But they were running some kind of secure software that didn't give you access to the Finder, only specific software, so I couldn't pop in a disk and run my own programs.
You can see in this picture that the Centris had two little buttons on the front. One was a reset button, and the other generated a non-maskable interrupt (NMI). If Macsbug was installed, the NMI button froze everything and dropped you into the system debugger.
If no debugger was installed, then the NMI button brought up a small system monitor window. It was extremely basic and didn't do much more than let you look at raw memory and, importantly, let you poke new byte values into memory at arbitrary addresses.
On my own computer, I wrote a tiny program that would display the system file picker and execute whatever file was chosen. I printed out the machine code for that program and brought it with me to the lab. It was only a few dozen 8-bit hex values.
I could enter that program in the system monitor, but I needed a way to run it. The Mac had several hooks (function pointers) at fixed low-memory addresses, and one of them was a callback that would be repeatedly invoked as the user was dragging something in the GUI.
So I put my program's address into that hook, exited the monitor, and dragged a scroll bar indicator somewhere. Bam! The system file picker appears. I navigate to the Finder program, select it, and click Open. The Finder launches, and I have full access to the computer.
I repeated this on about 15 computers and loaded my MPQS program on each of them. About half the lab was now running a distributed factorization algorithm controlled by a central host over the network, and the whole thing actually got results!
On these computers, I could factor a general number with around 70 decimal digits in a reasonable amount of time (like overnight). And yes, I won the contest.

• • •

Missing some Tweet in this thread? You can try to force a refresh

Keep Current with Eric Lengyel

Eric Lengyel Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!


Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!

This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!