My personal projects are listed on this page with all the relevant information needed to get started. Some projects have articles and wiki pages; they are linked for your convenience. Furthermore, please visit my GitLab profile.
📑 Quick Jump:
Alfred (HTCPCP, HTCPCP-TEA)
https://gitlab.com/deepnet42/alfred
Introduction
Alfred is a proof of concept appliance for brewing tea over the Hyper Text Coffee Pot Control Protocol (HTCPCP) and the Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA). See RFC2324 and RFC7168.
HTCPCP was an April fool’s day joke published under RFC2324. Alfred implements the server and the client for a subset of features in brewing tea.
Topics
- Antlr4
- Sockets
- *nix System Programming
- Threads
- Server and Client Design
- Daemons
- Protocol Parsing
- HTCPCP and HTTP
Unlimited Register Machine
https://gitlab.com/deepnet42/urm
Introduction
The Unlimited Register Machine (URM) as implemented per specification from Computability: An introduction to recursive function theory by N.J. Cutland. This is a modification of machine originally based on Shepherdson and Sturgis’s model (1963).
A URM is a simple and minimal machine that in principle is Turing equivalent (another model of computation). It consists of four very basic instructions: Zero, Successor, Transfer, and Jump. The URM has, as the name implies, an unlimited number of registers. Each register stores a natural number. Below are descriptions for the four functions:
Instruction Name | Instruction | Meaning | Pseudocode |
---|---|---|---|
ZERO | Z(n) | Set register numbered n to the value of ZERO (0) | Rn ← 0 |
SUCCESSOR | S(n) | Increment register numbered n by ONE (1) | Rn ← Rn + 1 |
JUMP | J(m,n,q) | Jump to instruction numbered q if m==n, otherwise proceed to the next instruction | if (Rm=Rn) ip ← q; otherwise ip ← ip + 1 |
TRANSFER | T(m,n) | Set the value of register numbered n to the value of the register numbered m. | Rn ← Rm |
A URM executes a program, which is made of the four instructions and is of finite size. A URM does not guarantee to halt for an arbitrary program.
Articles
Topics
- Computability
- N. J. Cutland
- Theoretical Computer Science
- Recursive Descent Parsing
- Compilers
- Programming Languages
- Virtual Machines
- Emulation
Cara (Human Resource Machine)
https://gitlab.com/deepnet42/cara
Introduction
Cara is a feature rich virtual machine with a suit of tools built for the Human Resource Machine game assembly files. Cara seamlessly runs all and any HRM code. It tries to maintain original compatibility with the original game, but also offers extensibility to go beyond the game’s boundaries. For example, Cara can be extended with new instructions, additional memory, and so much more. It has a transpilation support (source to source compiler). It is possible to compile HRM assembly files to native binaries!
A bit about the game
HRM game is made by Tomorrow Corporation. HRM is disguised as an assembly language programming activity, but it is much cuter and user friendly. Instead of typing instructions, the player visually builds with commands by moving code blocks much like in the Scratch programming language by MIT, which is based on the Logo programming language. HRM assembly instructions are minimal, yet, theoretically, these instructions make up a register machine that is Turing complete (😲).
Articles
Human Resource Machine: Part 1 | Human Resource Machine: Part 2 | Wiki
Topics
- Computability
- Theoretical Computer Science
- Recursive Descent Parsing
- Compilers
- Programming Languages
- Visual Programming
- Virtual Machines
- Emulation