Projects
I have worked on a fair number of projects, and here is an (incomplete) list.
DMOJ
The DMOJ is an online judge developed by me and Tudor. It is a distributed system with the capability of grading massive amounts of submissions simultaneously, as would be required by large programming contests. Some notable features include:
- Support for IO-based, interactive, and signature-graded tasks.
- Submission in over 50 programming languages.
- Live submission status.
- Powerful administration interface.
- Secure and powerful sandbox, permitting full control over the user-submitted program.
For more details, see the GitHub project for the site and judging backend.
BGP Networking
Since December of 2022, I’ve started to run my own BGP network—AS200351—for experimental and learning purposes. For more information, see as200351.net.
Open Source Work
I am currently one of the developers for the Looking Glass project, a display solution for virtual machines with GPU passthrough. My work focuses on improving Wayland and Windows support.
I’ve contributed to many open source projects, the most significant of which
include emscripten and LLVM. Perhaps the most interesting
part of this was porting UndefinedBehaviorSanitizer
,
LeakSanitizer
, and AddressSanitizer
to run on WebAssembly
emitted by emscripten.
I’ve also made minor contributions to various other open source projects, addressing some of the bugs I ran into, but they are not significant enough to be listed here.
Smaller Projects
Installation
Installation
Run pip install 2048
.
Run 2048
to play the game. Enjoy.
On Windows, you can run 2048w
to run without the console window.
Resetting the game
If for some reason, the data files get corrupted or you want to clear the high score...
-
On Windows, delete
C:\Users\<yourname>\AppData\Roaming\Quantum\2048
. -
On macOS, delete
/Users/<yourname>/Library/Application Support/2048
. -
On Linux, delete
/home/<yourname>/.local/share/2048
.
The latest download is available on Jenkins (direct link).
More features include:
- Full chording support in program, but due to the keyboard chording limitations, only 3 - 7 keys may be pressed simultaneously, so your milage may vary.
- Multitouch with hardware support.
- Recording music into a MIDI file.
- Key signature changing.
- Different keyboard layouts.
- Using Windows's builtin beeping functionality when MIDI is unavailable.
The latest download is available on Jenkins (direct link).
Features:
- Zalgo encoding and decoding,
- Customizable Zalgo level.
- Control Unicode diacritics used.
- Load and save potentially large Zalgo files directly.
- Quick trascription between Latin, Cyrillic, and Greek.
- Convert X-SAMPA into IPA.
- Convert between Unicode normalization format C and D.
Sometimes, your mouse button does not register when clicked, and sometimes it registers as multiple separate clicks. This can be annoying, but you may not be able to replace it right away. This program solves the issue.
The latest download is available on GitHub.
Features:
-
A press of the pause/break key is translated into a single instaneous click of the primary button (usually left).
- This is helpful to click without stopping the mouse.
- ⊞+Alt+Shift+M can be used to toggle this feature.
-
The context menu key press/release is directly translated into press/release of the primary mouse button.
- This is helpful for dragging.
- Alt+Shift+M can be used to toggle this feature.
- Ctrl+Alt+Shift+M can be used to toggle this feature.