I’m the maker behind PseudoRun, a live, interactive pseudocode editor and simulator. I wanted to share the story of how this project went from a small fix for a personal frustration to a full-fledged custom interpreter.
The Motivation: Why I Built This
I built PseudoRun because, as an IGCSE student myself, I was sick of two things:
Annoying, Distracting Ads: Most educational tools were choked with ads that made simple learning tasks nearly impossible.
Broken Code: Existing open-source pseudocode compilers/templates were often brittle and unmaintained, and they didn't accurately follow the unique Cambridge specification. After realizing I would spend countless hours modifying someone else’s broken codebase, I made the call to avoid the technical debt entirely and just "vibecode" it from scratch.
The Technical Challenge: A Custom InterpreterThe core challenge was that IGCSE pseudocode is a non-standard language. You can't just plug it into a standard compiler tool.
Custom Syntax: I had to design and implement a custom Lexer and Parser entirely in TypeScript to accurately handle the unique syntax of the specification (things like non-standard variable assignment, flow control structures, and specific input/output commands).
Client-Side Execution: The entire interpreter runs client-side in the browser. This ensures zero latency for execution and debugging, which is crucial for students who need instantaneous feedback.
The Roadmap: Making it Useful for EngineersWhile the tool is currently focused on the IGCSE curriculum, I want to expand its utility to the wider developer community.
My immediate next technical goal is to implement pointer support and memory allocation visualization. This would turn the simulator into a tool that not only teaches basic algorithms but also helps anyone visualize low-level concepts like stack and heap management, which is powerful for learning C/C++ fundamentals.
Feedback and InvitationPlease give PseudoRun a try—it's completely free and requires no sign-up to use the core editor.
I’d be especially grateful for any technical feedback on the interpreter's design, particularly on my custom parser implementation. Are there any tricky edge cases in interpreter design you think I should be bracing for as I scale?
Thanks!