~ $ cd research && cat README.md

Research

In 2003 every new processor had run old programs faster for twenty-five years, and it seemed it would last for ever. My thesis began from the hunch that it would not: that the desktop would go multi-core, and that the problem would stop being the hardware and become the programmer, who now had to write many coordinated lists of instructions instead of one, and mostly did not know how.

So the question of the whole PhD is one of usability. Supercomputers had been parallel for decades, and most of their users were not computer scientists. What they used, OpenMP, lets you take a serial program and annotate it, a line at a time, until it runs in parallel. Could that way of working be carried to the machines everyone was about to own, which did not share memory, and whose cores were not all the same?

Algorithms Acceleration of Pattern-Matching in Multi-Core Architectures, Universitat Rovira i Virgili, defended in Tarragona on 8 July 2011, cum laude, directed by Francesc Serratosa. Eight years, two universities, and an unusual spread for one thesis: a runtime, a simulator, a compiler, and an algorithm.

What is in it

Since

Two experiments I ran later, and wrote up on Medium:

What it left

The thesis ends on a sentence I still use: desktop computers are indeed desktop supercomputers, not only by their performance, but also by their complexity. Its tools were released under the GPL, and its last slide argued that research software should be published with its sources, the way a paper is published with its proofs.

And it left a habit. Everything I have built since for other engineers — a platform, a test harness, a course — starts from the question this started from: not what the machine can do, but what the person in front of it can be expected to get right. A small case of it: the recipe for concurrency I wrote a consensus algorithm by, so that students could.

The thesis lists sixteen publications. The record: the thesis, at Dialnet, and what DBLP indexes.

Use ls to see the parts, or cat parallel-tools to read one here.

~/research $ ls

~/research $

~/research $