Software

Talking to machines since the 1980s

Programming computers is one of my passions and has been for most of my life. It all began thirty years ago when I sat at my mom’s kitchen table keying in machine language instructions for an eight-bit Motorola microprocessor to make it flash LEDs. I quickly graduated from looking up hex opcodes to writing the CPU instructions in assembly language, letting an actual computer turn them into machine language.

I carried a textbook about microprocessors around with me in middle school to read instead of the boring official coursework. We were offered one computer class with some Commodore PETs to use–clunky built-in keyboards and character-mode green screens.1 The teacher took a hands-off approach, and I spent my whole time writing a crude character-based Pac-Man clone.

BASIC on an Apple II and Atari 2600 soon followed. Then I finally wrote something in C, a DOS shareware program called Dataviewer that netted me $15 from exactly one user registration.

A thing of beauty

Software development has come a long ways since then, and now I do everything with object-oriented Python. This site runs on a custom server based on Twisted, serving HTML that is generated from modified Markdown format with a package I wrote for Tellectual Press to publish books. That package is private, but I’ve contributed a couple of others to the Python Package Index that you are free to copy, use, and modify under the Apache License:

AsynQueue provides asynchronous task queueing based on the Twisted framework, with task prioritization and a powerful worker interface. Worker implementations are included for running tasks asynchronously in the main thread, in separate threads, and in separate Python interpreters (multiprocessing).

sAsync builds on AsynQueue and the excellent SQLAlchemy package to provide SQL database in an asynchronous fashion. Everything revolves around an AccessBroker that conveniently manages database access, table setup, and transactions. It also offers persistent item-value stores, arrays, and dictionaries.

———

I resumed development of these two packages after a hiatus of some seven years. There’s been considerable interest. AsynQueue was downloaded over 5,000 times in the first month of my resumed releases, with nearly 4,000 downloads for sAsync.

Interactive Mandelbrot set at mcm.edsuom.com

If you want to see an interactive demo of my software running a bunch of things at once, check out mcm.edsuom.com, which runs the mcMandelbrot (multi-core Mandelbrot set) package that’s bundled with AsynQueue as a demo.

It computes the Mandelbrot set over a region of the complex plane, refined by you with mouse clicks on the image, on my quad-core VPS. The programming involved Python, of course, as well as inline C for the computationally intensive stuff, responsive CSS for the site layout, and some JavaScript for the user interaction.

Notes


  1. A Commodore PET sits in the office of the travel agents (and spies) in The Americans. The table on the “screen” doesn’t ever seem to change.