Hi, I'm Daniel Prilik 👋

github | resume | blog | projects
June 1st 2022 - A picture of me in front of the Mesa Arch at Canyonlands National Park, Utah

I'm a Systems Programmer who builds robust, performant, and elegant low-level software, with a depth of knowledge in Emulation and Virtualization in particular.


Since ~2017, I've almost exclusively written code (personally and professionally) in 🦀 Rust 🦀.


I'm currently based out of Seattle, WA, working at Microsoft on the Hyper-V team.


When I'm not working / slacking / hanging out with friends, I try to find time to work on open source and side-projects. You can find links and info about most of the projects I've worked on below. For the most up-to-date info on what I've been working on, check out my Github profile.


Oh, and I graduated from the Software Engineering program at the University of Waterloo in April 2020 🦆.


When the mood strikes, I'll occasionally blog about cool projects I've worked on, or technical topics I find interesting.

Some posts I'm particularly proud of include:


Email: daniel@prilik.com

GitHub: daniel5151

Resume: LinkedIn

Notable Open Source Projects

These projects all have at least one thing in common: they are still actively being used by folks to this day!


Sure, the other projects I've worked on are cool and all, but the community aspect makes these projects a bit more special :)

Highlight
gdbstub
2020+
An ergonomic, easy-to-integrate, low-footprint, no_std, no-panic implementation of the GDB Remote Serial Protocol in Rust.
surface-dial-linux
2020
A Linux userspace controller for the Microsoft Surface Dial. Translates raw HID and evdev events into simulated mouse/keyboard inputs. It also supports haptic feedback!
QMK Firmware (contributor)
2019
QMK is an open source mechanical keyboard firmware. I've worked to improve RGB lighting effects & systems, and I'm hoping to add Rust support to the project as well.

Emulation

Growing up, I loved playing retro games on my PC using emulators, and as I learned more about computer architecture and low-level programming, I discovered that I loved writing emulators as well!


I've written emulators for retro game consoles, simple educational VMs, obscure single-board computers, and classic fruit-themed music players.


Nowadays, I mostly scratch my itch for emulation through my day-job, working on Microsoft's next-gen virtualization stack.

Highlight
clicky
2019+
As far as I can tell, this is the world's first (public) clickwheel iPod emulator. It's very WIP, but it can already boot some homebrew!
ts7200
2020
A high-level emulator for the TS-7200 Single Board Computer, a relatively bespoke ARMv4t platform used in CS 452 - Real-Time Programming. Written in Rust.
uwmips
2019
A Rust-y rewrite of my old mips241 emulator. The code is cleaner, and supports new MIPS instructions (as used in CS 230). It even adds a
time traveling debugger!
Highlight
ANESE + wideNES
2017-2018
AKA: Another NES Emulator.
The first emulator to implement wideNES, a technique to automatically map out NES games! Written in C++11
AC8E
2017
AKA: Another CHIP-8 Emulator.
A CHIP-8 Emulator written to get a feel for emulator development, and to explore programming in Rust.
mips241
2016
A simple emulator for the MIPS-like VM used in uwaterloo's CS 241.
It includes a fully interactive debugger!
Written in C++11

One-Offs

These projects don't really fit into any other category, but hey, they're still pretty neat little projects!

vrai-tracer
2019
A simple ray-tracer written in Rust. Doubles as a testbed to experiment with various programming techniques and paradigms
(e.g: static vs. dynamic dispatch)
fusion-kbd-controller-rs
2018
A small utility to configure the RGB keyboard on the Gigabyte Aero 15x. Involved reverse-engineering the proprietary USB protocol using Wireshark.
Playbulb SPHERE Controller
2016
Using WebBluetooth to control a multicolor LED lamp + WebAudio to change color based on mic input.

Hackathon Projects

Ahh, the Hackathon.


A whirlwind weekend of free pizza, soft drinks, and sleep deprivation.

Truly a quintessential part of the CS undergraduate experience!


Here are some of the Hackathon projects that I'm particularly proud of. For a full list of all the hackathon "experiments" I've worked on (including some really dumb ones), check out my Devpost profile.

WINNER
nfinite.space
2016
A cloud file-storage service that leverages space from connected users to store other users' files.
Winner at Hack the North 2016.
WINNER
fastify
2017
Leverages the scalability of the BitTorrent protocol and the bandwidth of AWS to "torrentify" arbitrary file links.
Winner at QHacks 2017.
BigPicture
2016
A collaborative art experiment where users fill in small chunks of a large canvas to collectively create stylized versions of interesting artworks.

Older JavaScript Projects

I don't really work with JavaScript much these days, but from ~2013 to 2017, JavaScript was my go-to language.


Unlike most of my more recent infrastructure/hardware/low-level work, these older projects tend to be much more visual and interactive. If you've got some time to kill, some of these projects can be great little time wasters!

Branch Doodle
2016
A JS reimplementation of a design I used to doodle back in high school. A central seed branches out according to a simple pattern.
bconsole
2016
A drop in replacement for `console` in node.js with line-numbers, log groups, and colors. Published to npm.
Highlight
1212!
2015
1212! is a simple little puzzle game I wrote back in high school.
At one point, it averaged ~1000 visitors a month.
DiceSiege
2015
A small demo of a procedural map generation engine I wrote for a Risk-like strategy game. Rendered with Two.js.
Simple Physics Sim
2013-2014
A simple physics sandbox written when I first started learning JS. It isn't terribly accurate or pretty, but it made for a great project to learn basic JavaScript.
Cellular Automa
2014
A basic Cellular Automa written for a school project.
Conway's Game of Life
2014
A basic implementation of Conway's Game of Life in HTML5 canvas written for a school project.
3D Music Analyzer (WebGL)
2014
Uses the WebAudio API and ThreeJS to visualize a audio stream in 3D realtime. Supports microphone input!
2D Music Analyzer (Canvas)
2014
Uses the WebAudio API and HTML5 Canvas to visualize a audio stream in 2D realtime. Supports microphone input!

University Lecture Notes

CS-137
2015
These are my flavored-Markdown CS-137 notes, written in 1A.
CS-241
2016
These are my flavored-Markdown CS-241 notes, written in 2A.

Email: daniel@prilik.com

GitHub: daniel5151


Hosted with Github Pages