Introduction to Bimachines

A gentle overview of bimachines with examples.

Resolving Ambiguity in Text Rewriting

Strategies for resolving conflicts that occur when two replacement substrings overlap.

Finite-State Transducers for Text Rewriting

An formal overview of regular expression-based text rewriters.

C# Channels - Async Data Pipelines

How to implement an assembly line concurrency model in .NET using channels.

C# Channels - Timeout and Cancellation

Explore cancellation and timeout techniques with channels.

C# Channels - Publish / Subscribe Workflows

Concurrency patterns in .NET using channels.

A Practical Guide to State Machines

Express application logic in a concise and declarative way using state machines and C#’s pattern matching.

Translation using Syntactic Rules

How to describe a formal language and build a translator with ANTLR and JavaScript.

Computing Ranges in Constant Time

Range Minimum Query with Sparse Table and Dynamic Programming.

Gödel's System T in TypeScript

Experimenting with a rudimentary type system that ensures the programs always terminate.