Aperiodic Tilings V: the Refinable Frontier
Explores techniques to refine ambiguous substitution systems for generating aperiodic tilings, enabling the creation of deterministic finite-state transducers.
Simon Tatham is a software engineer and writer known for his work on PuTTY and innovative programming techniques. His quasi-blog covers algorithms, C/C++ programming, cryptography, coroutines, and practical software engineering insights.
27 articles from this blog
Explores techniques to refine ambiguous substitution systems for generating aperiodic tilings, enabling the creation of deterministic finite-state transducers.
A technical exploration solving Langley's Adventitious Angles geometry problem using algebraic field extensions and complex numbers.
A developer shares opinions on parsing, grammars, and parser technologies, arguing for practical approaches over pure theory.
A developer explains his personal "policy of transience" in computing, detailing habits like disabling shell history and using temporary storage.
A history of the icon design for the PuTTY suite of tools, from hand-drawn origins to modern SVG versions.
Author explains why they host code in bare Git repos instead of platforms like GitHub, and details their preferred methods for receiving patches.
A comprehensive guide to the XOR operator, exploring its boolean logic, bitwise properties, mathematical concepts, and practical applications in computing.
Explains post-quantum cryptography concepts, contrasting them with classical systems like RSA, and introduces a toy cryptosystem for educational purposes.
A critique of modern bug trackers, proposing a 'separation of concerns' principle to better distinguish factual bug records from planning data.
A deep dive into flawed algorithms for detecting loops in graphs, exploring common mistakes and why they fail in puzzle-solving contexts.
A humorous guide to common code review antipatterns that hinder development, written from a 'dark side' perspective.
Simon Tatham defines 'symbiosisware' as software written solely for the developer's own use, exploring its unique characteristics and trade-offs.
A technical follow-up article exploring advanced finite-state transducer algorithms for generating and analyzing complex aperiodic tilings like Penrose, hat, and Spectre patterns.
A technical article on using finite-state transducers to generate and manipulate aperiodic tilings like Penrose and Spectre tilings, improving on previous recursive algorithms.
A guide to writing effective Git commit messages, focusing on essential information and reasoning over minor stylistic details.
A software engineer argues against teaching bubblesort, comparing it to other sorting algorithms and explaining its inefficiency.
Argues against command-line tools automatically printing full help text on errors, explaining why it's counterproductive for user experience.
An exploration of coroutines, their advantages over state machines and threads, and practical techniques for using them effectively in programming.
A deep dive into implementing custom coroutine systems using C++20's native language features, covering promise classes, awaiters, and practical examples.
Explores limitations and workarounds for the C11 _Generic type-generic programming feature, including practical solutions for complex use cases.