Projects
Personal Projects
Felonious Pythonic C++ Formatter
A VS:Code based C++ formatter that makes the code “Pythonic” and deserves capital punishment.
Created with pure TS, on top of VS:Code plugin environment.
https://github.com/axmmisaka/felonious-cpp-formatter
Legal Studies Graduation Requirement Calculator
A Brute-Force DFS based calculator that helps UC Berkeley Legal Studies students calculate whether they can graduate, and if not, what classes do they need.
Created with TS, React.js and WebWorker.
https://axmmisaka.github.io/ucb-ls-graduate-calculator/
Research-related Projects
Reactor-TS
Lingua Franca (LF) is a polyglot coordination language built to enrich mainstream target programming languages (currently C, C++, Python, TypeScript, and Rust) with deterministic reactive concurrency and the ability to specify timed behaviour.
I worked on the TypeScript runtime of the Lingua Franca project.
I refactored a large portion of the runtime to ensure it passes TypeScript typing check, introduced ESLint to ensure code quality.
I revisited the formal definition and technical implementation of mutation as described in Lohstroh 2020 tech report.
I adapted certain Savina test suites (a test suite developed by researchers at Rice University to test Actor-based programming languages) to Reactor-TS.
I also wrote a chronological reactor topology visualizer with Vite+React.js+Mermaid.js+Material UI.
More about Lingua Franca: M. Lohstroh, “Reactors: A Deterministic Model of Concurrent Computation for Reactive Systems,” Ph.D. Thesis, EECS Department, University of California, Berkeley, 2020. [Online]. Available: http://www2.eecs.berkeley.edu/Pubs/TechRpts/2020/EECS-2020-235.html
Lingua Franca Website
I completely rewrote the Lingua Franca Website, deprecating the old Gatsby-based and heavily customised website forked from the VS Code website, which became a heavy tech debt for us.
The new (and current) LF website is based on Docusaurus, which utilises React.js.
I mainly resolved the following issues which is the reason we heavily customised our old website; I tried my best to ensure my solutions are built on top of wheels other people built, requires minimal effort from our side, and best compatibility as we move forward:
- Lingua Franca has its own syntax, and we want to display properly highlighted code on the website, but the syntax definition file is only available in TextMate grammar where we use it for VS:Code highlighting. Docusaurus uses prism.js whose grammar is incompatible with it.
Solution: I found Shiki which takes TextMate grammar and highlights stuff. For my mental health, I decided to take the easy path: I created a MDX/React component that usesShiki
to render the LF code into properly-coloured HTML, then dynamically display the rendered HTML in an unsafe way. - Lingua Franca has different “targets” (C, C++, TypeScript, Rust, Python). Code examples in one documentation should contain that of multiple targets, and users should be able to swap what they want to read.
Solution: I wrote a bunch of MDX/React component wrappers/utilities that allows users to write “switchable” docs in MDX. The real pain is to make them easy to use while ensuring that they are properly and consistently typed. - We need a fancy landing page, and I built it.
It indeed looks modern now, if you ask me.
Course-related Projects
RISC-V CPU (EECS 151/251LA: Introduction to Digital Design and Integrated Circuits - Application Specific Integrated Circuits Laboratory)
For the class project, we built a 5 stage, fully-bypassed RV32IC CPU, with a direct-mapped write-back cache and a 2-level (global+local) branch predictor. We were placed runner-up for the EECS 151LA ASIC design award, which is very sad, because the winner will have a Apple Watch/AirPod sponsored by Apple.
I will eventually write a well-formed tech report and post it on my website. For now it’s not a thing yet.
PintOS (COMPSCI 162: Operating Systems and System Programming)
PintOS is an instructional operating system that runs on x86 IBM-Compatible PC that supports kernel threads, multithreading (with non-preemptive priority scheduling), loading and running user programs, and a simple FAT file system.
I might eventually write a well-formed tech report and post it on my website. For now it’s not a thing yet.
Snow-Simulation (COMPSCI 184/284A: Computer Graphics and Imaging)
I might eventually link the tech report here. I can’t find it now, unfortunately.