Simon Tatham's Home Page
Welcome to my web site. I'm Simon Tatham, a software engineer and
free-software author in Cambridge, UK.
Here are links to the various other pages of this site.
-
About me: some idea of who I am.
-
Free software I've written, which you can download.
-
PuTTY: an SSH client for Windows, also able to
talk to serial ports and speak older insecure protocols like Telnet.
-
A collection of GUI puzzle games, portable to
many platforms: provided on the web in Javascript, downloadable
versions for Windows and Unix, and third-party ports to various mobile
devices.
-
spigot: a command-line exact real calculator.
-
Halibut: a documentation system with simple
syntax and multiple output formats, used for the manuals of most of my
software.
-
agedu: a Unix utility for tracking down where
you're wasting disk space, by making it easy to spot large amounts
of data with last-access times a long time ago.
-
IPBT: a Unix
curses
application
which plays back ttyrec
files with precision rewind
capability.
-
xtruss: an X11 protocol tracing utility.
-
A collection of miscellaneous Unix utilities.
-
Gonville, an alternative font of musical
symbols for use with GNU Lilypond.
-
Tweak: a Unix
curses
-based hex
editor designed for highly scalable performance.
-
DoIt: a utility to allow a Unix machine to open
documents on a Windows machine (for example, sending commands back
to your Windows desktop machine from a Unix server you've connected
to from there).
-
WinURL: a Windows utility to pull text out of
the clipboard and launch it as a URL at the touch of a hot-key.
-
There are a few other things I've written which I'm now considering
more or less unmaintained. See
my unmaintained software page.
-
My algorithms collection: some neat
algorithms that aren't in common use.
-
Mathematical sorts of things. (Many of these pages include some
downloadable software so you can play with them yourself.)
-
A series of articles about generating aperiodic tilings in software
using string-processing algorithms:
- Part 1: recursive algorithms for walking around Penrose tilings and the hat tiling discovered in March 2023.
- Part 2: same thing for the Spectre tiling discovered in May 2023.
- Part 3: replacing the recursion in the previous articles with a finite state machine, slightly improving efficiency and eliminating a failure case.
- Part 4: further improving the state-machine construction algorithm, and exploring various special instances of the tilings.
-
A solution to the impossible Solitaire Army
problem (by cheating, of course – making an infinite
number of moves).
-
A few HTML5 web toys demonstrating mathematical things:
-
Some selected articles and essays:
-
How to Report Bugs Effectively: a general
article on how to send a programmer a bug report which will actually
help them fix the problem.
-
How to Read Error Messages: a guide to
getting the most out of typical kinds of error message you see from
software, over and above "something went wrong".
-
A loose trilogy of articles about coroutines, because I'm a great fan of them:
-
Coroutines in C: an implementation of
coroutines in portable ISO C, by a similar technique to Duff's device
plus some C preprocessor abuse.
-
Writing custom C++20 coroutine
systems: an exposition of the C++20 coroutine mechanism and how to
use it and customise it.
-
Philosophy of
coroutines: a more general article discussing what coroutines are
good for and how to get the most out of them.
-
Metaprogramming custom control structures in C:
another piece of C preprocessor abuse to let you build quite general
user-defined looping constructs alongside C's basic
for
and while
.
-
The Descent to C: an introduction to C for
people coming to it from higher-level languages, intended to warn you
in advance about the likely culture shocks.
-
My personal FAQ about the fact that I have
no sense of smell.
-
More assorted articles, organised into a kind
of quasi-blog.
I'm on Mastodon as @simontatham@hachyderm.io.
(comments to anakin@pobox.com)
(thanks to
chiark
for hosting this page)
(last modified on Wed Sep 18 15:13:55 2024)