The missing #include for C. This project has been going since 2018 and started as an attempt to make an unopinionated, hassle-free Rapid Application Development library for C. It includes commonly-used datastructures that are written on top of a common memory management structure. I have used it for several school projects and for my own prototyping, and it is still under active development!
Senior Design Project at RIT. I managed a multidisiplinary team with two mechanical engineers, an electrical engineer, and three computer engineers. While the project was not completed, a great deal was learned about working with other engineers, specifically the challenges faced in other disciplines. The biggest technical acheivement on my part was writing a small real-time operating system with syscalls, mutexes, file descriptors, context switching, and safe interrupt handling --- from the ground up.
Disclaimer: I am not a frontend dev. However, in an effort to have an online presence, I have taught myself enough web development to make a static resume and the portfolio you're currently reading. This project is among the more foreign to me, requiring almost entirely skills outside my expertise. I am pretty happy with the results!
I worked with my classmate and good friend Wesley Dahar on the OPAL-01 processor for our Computer Organization class. What was supposed to be a quick, eight-instruction CPU for an easy class project turned into a full manual inspired by the style of the ARMv8-M ISA documents. We designed the ISA from the ground up in about a week and Wesley made some example programs using our ISA.
In Digital IC Design, OPAL-01 was used as the main coordinator of a neural-network accelerator design. My friend Sabrina Ly implemented the entire ISA in VHDL-93, and I wrote an assembler in C and the firmware for our accelerator in OPAL-01 assembly.
The Fundamental Theorem of Python, 1, states that anything can be done in python.
The Fundamental Theorem of Python, 2, states "just badly."
snake-lang is engineering stand-up. Although it is unfit for use in production code, it demonstrates that the dynamic nature of Python allows it to emulate the features of other languages, such as Swift. Eventually I plan on adding other demonstrations, such as the ability to have static class interfaces with initialization-time enforcement.
While this is one of my earliest projects, it is one I can say has absolutely positively affected many people and I am glad that I had the opportunity to do something beneficial!
This ongoing project aims to develop an ultralight alternative to a normal TCP/IP stack, that can run on a variety of PHY layers without the resource requirements of full TCP. It's current revision works in software on Linux, and can be considered a proof of concept. It was originally designed as an inter-process message passing system, but the target design has evolved into a two-layer messaging system designed primarily for edge devices and microcontrollers.
Inspired by Linus Åkesson's Craft demo from 2008, which featured an ATMEGA88 rendering incredible graphics on a VGA monitor, my friend Piers Kwan and I tried to recreate a small subset of that functionality on a Kinetis KL46 Cortex-M0+, for the final project of our Assembly Language Programming class. We managed to get static colors on the screen in only two days, in which we wrote all of the code, learned the protocol, and figured out how to test our designs. The code that ran in the final demo is 100% hand-written ARMv7-M/Thumb 2 assembly. Maybe someday we'll try and make something worthy of our inspiration...
Embedded C does not have to be ugly, full of complicated shell scripts and Makefiles, and this project is the proof. Originally developed for my race car in Interface and Digital Electronics, and then evolved to a more robust platform for my Senior Design team, this template uses Meson and a few very simple Bash scripts to automate the build, flash, and debug stages of baremetal firmware development in C. Not only is it faster and smarter than a Makefile, but it is easier to maintain and extend. Meson is flexible enough that we were able to make several builds of an operating system and applications for our Senior Design project from a single repository, all configurable with a single command at compile time!
Well versed in C at all levels ranging from baremetal embedded to
application-level work. Familiar with event-driven programming and async IO.
C is my favorite language to work in, by far.
Well-written and architected C can be just as beautiful as any other language!
I prefer to say "I'm a snake charmer" than "I'm a Pythonista".
My work here ranges from development to intra-team consulting.
All of my notable work in this area is secret due to NDAs with former employers.
Looking for proof? Have a look at this project which I managed:
P20123: Autonomous Search and Rescue Drones
Have a look at the previous pull requests in the firmware repository if you're curious about code reviews!
I have been using Linux as a daily driver since 2011! I run Sway on Arch.
Apart from common APIs like Berkeley Sockets, I know some specialized APIs:
epoll, GTK+, termios, select/poll
Experienced with writing algorithms and hand-optimizing code in ARM Thumb 2.
Cortex-M0+ and M4 experience primarily. I am familiar with working with
GNU linker scripts as well. Best example: Context switching on Cortex-M4
I have done professional and academic research in machine learning, with a focus on signal analysis and image processing.
The usual Python suspects are all familiar to me - Numpy, TensorFlow, SKLearn, Scikit, Matplotlib, etc.
Looking for something a little more low-level? I know CUDA too.
This website was made using Hugo, and my resume was built with HTML & CSS, no JS, and by hand!
I can work with web frontend in a pinch. I learned Tailwind CSS to make my resume responsive and printable.
I have written microservices using NGINX, uwsgi, and Flask at several jobs.
Didn't find everything you're looking for? Ask away!
I'm always learning new things, it's what I do. I learn on the job, too!
If I have some skills you are looking for, and I'm missing a few, I'd still love to hear from you.
My work at Apple was centered on debug infrastructure and triage tools, but did include work with EFI firmware. Projects include:
Preserving volatile debugging information across system reboots without dynamic memory and with data integrity verification.
Investigating the source of stalling on USB-3 connected core dumps and JTAG. Provided data and static code analysis to point to optimizations in third-party code needed to be made.
Writing a framework for decoding Intel Machine Checks, which was then turned into a service accessible over HTTP and JSON.
Converting some internal tools to Python3, and wrapping external Python2 tools in a compatibility layer so they could be containerized, and used from modern languages until their replacement.
Assisting with development of a framework to convert TianoCore build system into Xcode-compatible build definitions. Greatly optimized existing architecture without intrusive changes.
I worked as a machine learning researcher at AIS. Most of my time there was spent teaching myself the basics of neural networks, and then using them in a prototype cybersecurity project. The resulting systems ended up patented! Achievements include:
Creation of a data processing framework that could perform filtering, and data segmentation in an easily augmentable way. The framework included caching in sqlite databases, so that the operations could be paused and resumed without losing progress. I used the caches to keep the memory usage to a minimum, so that the framework could be easily run on laptops and personal computers.
I worked as a teaching assistant for a variety of classes, spanning computer science, assembly language programming, and control systems. I believe that it is important to enable students to learn and understand things, in order to make them better engineers. Most of my grading effort went into helping students become better writers, while most of my teaching efforts went into working in small groups with students to assist them with understanding the course material and beyond.
Planning to graduate in August 2021.
My thesis topic is about improving generalization performance of deep neural networks using Information Theory, and is currently underway.
Planning to graduate in May 2021.
Minor in Mathematics.
I took the minor in math because it was a weak subject for me, and I chose to improve my skills. I have definitely succeeded!
Working with mathematics at a higher level has helped me to think in abstracts and be able to model difficult concepts in a simple way.