Even more about me
If you're in this deep, you're likely either a bot or particularly bored. I'm keeping this page around mostly for personal reference, but maybe you might find something interesting here anyway — it's essentially a timeline of CS-related events in my life.
2018
- Spent a bunch of time mining a v3 onion for this site.
- Wrote a client hack for changing emojis in Slack.
- Helped out with writing testdata for the Canadian Computing Competition.
- Set up a system for building identical PDF and HTML versions of my resume from LaTeX source.
- Worked on porting the DMOJ judge to ARM platforms, including my Android phone.
2017
- Designed a RISC CPU in Verilog for a Cyclone II FPGA, alongside an assembler and compiler for a small subset of C ("TudorC").
- Represented UofT at the ECNA ACM-ICPC team competition in Windsor. Did slightly better, placing 17th of 139.
- Attended my first hackathon.
- Started 2nd year at UTSG.
- Began using a graphical WSL setup daily. Contributed a bit to polybar to add support for WSL.
- Wrote a Nintendo Entertainment System emulator in C# 7. Runs under Mono, too.
- Made a tool for patching Blade and Soul clients bypassing verification through import address table rewriting.
- Participated in UTSCode, and won a nice mechanical keyboard that I'm using to type this.
- Helped run the Don Mills Programming Gala again, in a lesser capacity.
- Gave a talk at an ACSE conference on the uses and benefits of automated grading in classroom settings.
- Started running a Tor relay.
- Worked on porting the DMOJ judge to FreeBSD.
2016
- Wrote a Slack integration for LaTeX math.
- Reverse engineered several PS2/PS4 game archives to extract some background pictures and music I liked.
- Made a server for rendering LaTeX documents, intended for embedding pretty figures into HTML pages.
- Set up this site.
- Represented UofT at the ECNA ACM-ICPC team competition in Windsor. Placed 28th of 126.
- Dropped out of the co-op program after the first semester, applied to transfer to UTSG.
- Started school at UTSC (they had a co-op program!)
- Began working at Ivy Global as an intern. Started managing a Windows stack for the first time.
- Graduated from high school, but got deferred from UWaterloo to UofT. Oops.
- Organized the second Don Mills Programming Gala, to similar success. Passed the metaphorical torch down.
- Wrote a very fast Nintendo Gameboy Color emulator in Java.
- Participated in the provincial ECOO programming competition. Held on to the trophy for another year.
2015
- Organized the first Don Mills Programming Gala. Had 150 students come participate.
- Thinking Dart was pretty sexy, wrote a photosphere viewer in it.
- Started handing in programs for physics assignments.
- Made an addictive osu!-like speed-typing game in Java, using JAVI.
- Played around with a lot of fancy Java graphics.
- Wrote the inverse of the script.
- Made a script to convert cubemaps to sphere maps. Apparently this was a common enough problem that it got some unexpected attention.
- Participated in the provincial ECOO programming competition. Placed 1st this time around. Used the trophy as a pretzel container for the next 2 years.
- Wrote a RuneScape bot based on runtime code injection and static analysis of gamepacks to reverse their obfuscation.
- Continued working on the DMOJ, as well as writing monthly problemsets.
2014
- Wrote a RuneScape bot by proxying OpenGL render calls and matching calls to entities being rendered on-screen.
- Attempted to use this to automatically translate light novels. Was unsuccessful.
- Played around with handwriting recognition with self-organizing maps.
- Hosted the very first monthly Don Mills Open Programming Contest.
- Started writing the DMOJ over March break. At this time, we called it the "Don Mills Online Judge".
- Wrote a debugger for Swing layouts by injecting debugging code into running applications.
- Developed a lightweight XUL-inspired toolkit for designing Swing UIs, with JavaScript (Rhino) integration. Called it Xwing.
- Brought 3D rendering to Windows (cmd.exe) terminals.
- Developed a game engine in Java. Implemented fun stuff like shadows, parallax maps, normal maps, reflections, skyboxes, etc. Hunted down driver bugs for months.
- Wrote a cProfile-like profiler for Java, with runtime instrumentation.
- Made a 3D space game in Python with OpenGL.
- Wrote a 3D tile-based game engine and development environment.
- Participated in the provincial ECOO programming competition. Placed 3rd.
2013
- Wrote a (very) partial Minecraft client implementation in Python.
- I liked the idea, so I made one for visualizing some graph traversal algorithms too.
- Put together a visualization for various cellular automaton configurations.
- Developed a set of Java bindings for FFmpeg, as well as boilerplate for Swing video playback integration. Called it JAVI.
- Wrote a very fast Java bytecode manipulation framework. Built some disassemblers and obfuscators on top of it.
- Made a MIDI keyboard.
- Put together a simple mechanism for injecting code into running JVMs. Used it many times since.
- Sort of made a search engine for emojis.
- Implemented Zalgo, but in Java.
- Ported HAL to Java. Creatively called it JAL.
- Started school at Don Mills Collegiate Institute.
- Wrote some fluent wrappers for Java's Reflection API. I still use them whenever I'm doing that sort of stuff.
2012
- Wrote a personal assistant chatbot with text-to-speech in Python before Siri made it cool. Called it HAL.
- Developed some fairly popular plugins for Bukkit (a Minecraft server mod before it got DMCA'd).
- Spent too much time on FLL robotics.
2011
- Made an extremely inefficient RuneScape bot based on color and subimage matching.
- Wrote crappy RuneScape bot scripts for RSBuddy.
- Started programming on an Arduino Uno.