Martin Guy as a computer programmer
<martinwguy@gmail.com>
You asked for it. Here we go.
<BRAGGING ON>
I know how to program in
APL,
autoconf,
awk,
BASIC,
BCPL,
Bourne shell,
C shell,
C,
COBOL,
COMAL,
Csound,
Forth,
GIMP image-distortion scripts,
Haskell,
Informix 4GL,
jq,
KRC,
Lisp,
Lua,
Miranda,
Occam,
Pascal,
PHP,
PostScript,
SQL
and the
ARM, Orion, PDP/11, PIC24, VAX, Z80, 6502, 6809 and 68000
assembly languages,
6502 and PDP/11 machine codes and
HLH Orion microcode.
Of these, Miranda, jq and PostScript are the most beautiful
and Informix 4GL and autoconf the nastiest.
I know how to run AIX, 4.X BSD, Debian, MS/DOS, Solaris and Xenix systems
and can arm-wrestle EMAS and VMS.
I have programmed for 1970s mainframes, the Commodore PET,
the Research Machines 380Z, the Acorn Atom and BBC Micro,
MS/DOS, TOS, NeXT and many Unices.
For Windows I made a program that opens a window with a random aphorism in it.
I know the I2C, MIDI, RS232 and TCP/IP protocols.
I know how to do audio and video transcoding,
bittorrent,
cryptocurrencies,
cryptography,
databases,
data compression,
data recovery.
debugging,
digital electronics,
digital typography,
library cataloguing,
live CD construction,
numerical algorithms,
parallel processing,
program size and speed optimization,
releases of free software projects and
Unix system installation and administration.
I have studied colour science, ethnology, languages, nutrition, optics,
psychotherapy and religion,
am a first-class shot, a glider pilot
a classical concert pianist, studied clarinet, play guitar,
repair musical instruments
and am currently studying chemistry.
I studied economics but it didn't make any mathematical sense.
I've written programs to:
- play and win a four-coin game
- play hangman with you, drawing the growing gallows with printed characters
- automatically conjugate Spamish verbs
- typeset sheet music on an ASR/33 Teletype
- edit text files at the command line and save them on cassette (piiiii!).
Interestingly, you got out of insert mode back to command mode
by typing a dot on a line of its own, at the same time as "ed" was
being written on the other side of the planet to work the same way.
- Wrap Trap: a two-player video game similar to a 2D version of
Tron's lightcycles (before the film came out!)+
using the 380Z's 16 four-quadrant characters in the
console's font to double the effective screen resolution.
- play C.P.E. Bach's Solfeggietto on a single square-wave oscillator
and make serial music of it by playing random bars with
random transposition, inverted or not, forwards or backwards
and at slowly varying speed.
I lost the last copy of it on cassette when my van was eaten
by the Mutoid Waste Company.
- A three-dimensional graph-plotting program for the Sinclair ZX80,
using *its* four-quadrant characters to double the screen resolution.
- an algorithm to flood-fill an arbitrarily-shaped pixel-delimited area
of the Acorn Atom's bitmapped display, implemented in 6502 assembler.
- solve simultaneous equations by matrix inversion.
- anagram: list potential anagrams of a given phrase using a large
dictionary.
- Print text in a circle in PostScript to print circular badges
and other PS programs for campaign logos and so on
- maze: navigate a three-dimensional view of a maze,
implemented with the painter's algorithm:
- empress: Data compression by optimal variable-length Huffman coding.
It beat the current champion of the time, compact, and was beaten by
compress.
- run Conway's Game of Life fast in assembler on a b/w bit-mapped screen
without using any backing storage
- calculate and display regions of Mandelbrot's fractal,
implemented in C and VAX assembly language to use the spare time
of the University's ten VAXen and Orions.
- monitor the memory resource usage of the Xenix kernel on a PDP/11
to be able to allocate the right number of each in the kernel build
and keep a company's business running
- speed up the Unix version of the portability layer of a software product.
The replacement I wrote was one sixth of the code size
and ten times as fast. The previous programmer quit and went to Mars.
- raster format: Yet another format for raster image files with tools to
import and export a number of other image formats of the day and to
perform operations on them including
a new algorithm to rotate by 90 degrees an image larger than the
available RAM without making the virtual memory system thrash.
- genpoly: visualize proposed radio aeriels' sensitivity
in all directions as a three-dimensional vector plot by
implementing Leneert Ameraal's hidden line removal algorithm.
- sqrt: A new digital algorithm for square roots based on Mr C.Woo's
method for doing them on an abacus. It was six times the speed of
BSD's math library's hand-crafted VAX assembler routine that did it
by Newton-Raphson successive approximation in floating point.
- bigfloat:
an infinite-precision scientific math library in KRC, Miranda and Haskell.
- A bug database and user interface for a company's product software
in Informix 4GL, a something-on-top-pf-SQL language.
No named compile-time contants.
We had to ran the source through M4 to have such luxuries.
- libwrite: a C library to write Write documents.
- recwav: show spectrograms of audio files quickly on slow hardware
using variable-precision fixed-point arithmetic.
- typeset: Do high-quality typography on dot-matrix printers of
WordStar, TopCopy Plus and text files, complete with automatic kerning.
- profile the CPU execution time of programs compiled with Turbo C.
- Pot Poker: play a new card game designed for a projected
television game show.
- recover 6000 patients' data from a doctor's custom-written
surgery management system that had been programmed with a time bomb
and pour them into a new, much better system running on the same hardware.
- An ex-novo Italian word list for "anagram" and to make a spell-checker,
including automatic conjugation of verbs and of the male, female and
plural variants of nouns.
- Quadrophonic acoustic holography using two sound cards and calculating
the distance from the different speakers of each sound you wish to place
in 2D space by making the wavefronts of the signals from the speakers
coincide in one point.
- 4vol: a JACK plugin to quadruple the mono power of a sound card
by feeding an inverted version of the signal to one of the outputs
and connecting a speaker between the left and right signal pins.
- kickdirt: my only piece of studio-quality music, created using Csound
both as a synthesizer and as a sequencer.
- simone: the boot loader, Linux kernel and Debian base system for a
200MHz 64MB single-board ARM computer
- armeabi: make the first truly open-source cross-compiler targetting
the ARM EABI and most of the bootstrapping and package porting
for the new Debian "armel" port based on it.
- crunch: fix GCC's non-working code generation for Cirrus Logic's
MaverickCrunch floating-point ARM coprocessor and
repositories of Debian packages compiled with it,
making floating-point math approximately four times faster.
- Lua ed: a port of GNU "ed" to a microcontroller by translating it
from C-for-Unix to Lua-for-eLua.
- reimplement a bit-banging I2C driver in PIC24F assembler
making it work ten times faster, at full 100MHz bus speed (just!).
- mine cryptocoins on four server racks with 24 GPUs.
On its first test it made a net profit of just over 3000 euros a month.
When the Silk Road was closed a month later,
cryptocoin value multiplied by ten.
- Linux KRC:
revive an exctinct computer programming language from 1982
by translating its BCPL-for-EMAS interpreter to C-for-Unix
by way of a slew of #defines to make C syntax closer to BCPL.
- image: zoom a bitmapped image in a window in ten different GUI toolkits:
Agar, Elm, Evas, Fltk, GTK2, GTK3, IUP, QT4, SDL1 and SDL2.
- spettro:
scroll a log-frequency-axis spectrogram of music as it plays.
- cdvd:
rip, catalogue and compress large collections of audio CDs
- sox_ng:
unify the bug fixes and enhancements to a command-line
audio processing system and make regular new releases of it
after a nine-year pause since its last release resulting in
fifty differently patched versions in the software distributions
and as many individual forks on github and elsewhere.
I also maintain:
- fritzzz: the first open-source ray tracer
- rat: a program to save disk space by making multiple links
to a single copy of identical files.
- xvi: the smallest full-feature clone of the "vi" text editor
Hardware
I enjoy building
usual computers,
or rather unusual computer cases, specializing in
totally silent ones for audio recording.
I know how to project and realize digital electronics and
grok analogue electronics up to the resistor-condenser-inductor level.
Future projects
Future programming projects are:
- a harmonizer that lets you play a chord on a keyboard
and hear your voice singing all the notes at once,
either by you singing the bottom or the top note of the chord
or by it detecting your voice's pitch and adjusting it.
Let the brave, the deaf and the tone-deaf sing!
- a tool to speed Live CDs' boot times up
by reorganizing the position of blocks accessed during a normal
boot sequence so that they are in increasing linear order
from the start of the disc.
When booted from USB sticks it will make no difference.
I have digitized a lot of books
in English and
in Italian,
the bulk equivalent of about twenty-three novels,
first by correcting Gutenberg's texts then by digitising them myself
either as scanned facsimilies or typed in by hand
and proofread against the originals, never with OCR as
the Gutenberg Shakespeare had "He held the babe in his anus":
"nu" has four vertical bars like "rm" and it goes past the spelling checker
without a blip.
I have catalogued:
- The Auro social centre's collection of historic newspapers from 1930-1968.
- The Auro social centre's collection of a thousand schoolbooks
left over from their annual bring-and-buy events.
- The Vulkano social centre's collection of anarchic
and libertarian journals.
- The 5,500-volume contemporary newspaper library I created at Vulkano,
complete with a report the goes day by day showing what news
each paper gave most importance to in its leading title.
- The Fondazione Marco Montalbano's library of 7,000 comic books,
devising appropriate categories; if I'd used the Dewey decimal system
I could simply have written 741.5 over the entrance.
- The religious library and papers of a 1920s Italian priest,
found in an abandoned house.
Of these libraries I now only have the catalogues though
I believe the Fondazione Marco Montalbano still has its comics.
<BRAGGING OFF>
More? Oh, come on!