My Projects
This is a list of all the projects that I have worked on over the years. Some projects I worked over the course of my university work. Others were a product of work experience. Finally there are personal projects which I just started on a whim and worked on for my own enjoyment.
Senior Design
University - Computer Engineering
My senior design project is to create an AI powered anti squirrel bird feeder. The idea is that while there are anti squirrel feeders on the market they rely on fallible trickery that many squirrels learn to bypass. So the goal of this project is to design a system which uses a camera and AI algorithms to recognize when it should activate some method of deterrent.
We just started this semester on the project with Dr. Randall Geiger as our client and advisor. As of now we are working on designing it. There are many considerations we have to take into account, for instance the feeder should be a low power device so that it can run for prolonged periods without needed frequent battery changes. This however may be difficult to achieve if we do the AI computations on the device. So we are considering methods of lifting the bulk of the computation to another location.
You can check out our presentation slides on our user needs analysis here.
Relevant Topics
- Embedded Programming
- Hardware Design
- System Integration
- Team Skills
Stilts
Personal - Open Source
One of my personal favorite projects I have worked on. This is a completely open source templating engine. Some of the best work on this project is not even in the code itself but rather the documentation. I won't cover the technical details too much here, but it basically takes advantage of the rust compilation pipeline to compile template files directly into your rust programs. The template language therefore is basically just rust which is pretty cool.
/// templates.rs use stilts::Template; #[derive(Template)] #[stilts(path = "my_template.html")] struct MyTemplate { x: u32, } let output: String = MyTemplate { x: 20 }.render();
<!-- my_template.html --> <ul> {% for n in 0..x %} <li>{% n %}</li> {% end %} </ul>
Relevant Topics
- Language Design
- Parsing & Lexing
- Open Source Projects
- Documentation Writing
- Lang: Rust
MIPS Capable CPU
University - Computer Engineering
As part of my program at Iowa State I worked on a team to create a CPU pipeline that was compatible with the MIPS assembly language and binary instruction set. This project was semester long and involved modifying the CPU after it was complete. The first goal was to create a single stage pipeline where all instructions are completed in a single clock cycle. Through the course though we learned about multi-cylce and pipelined designs for CPUs and so we implemented first multi-cycle and then adding pipelining into that version.
The two most important components I personally designed for that project were the ALU and as a part of the ALU the barrel shifter. Technically the project was always only required to be 32 bit compatible, but I wanted to design my components generically so that they could for different sized inputs.
For example the following is the entity declaration for my barrel shifter which takes two generic arguments that can be used to configure its behavior.
entity shifter is generic (DATA_WIDTH : natural := 32; SHIFT_WIDTH : natural := 5); port (iData : in std_logic_vector(DATA_WIDTH-1 downto 0); iShiftAmt : in std_logic_vector(SHIFT_WIDTH-1 downto 0); iDirection : in std_logic; iArithmetic : in std_logic; oValue : out std_logic_vector(DATA_WIDTH-1 downto 0)); end entity shifter;
Relevant Topics
- CPU Architecture
- Hardware Description Languages
- Langs: VHDL > MIPS ASM
Cyber Defense Mentorship
Work - State of Iowa
Early on as a part of my job I was able to take part in mentoring students at the Johnston High School to take part in the annual ISU cyber defense competition. As a part of this process I helped develop the weekly presentations that we were able to give to the participating students. It was an extremely enlightening experience for me because it really got me thinking about how to make information easy to understand. It was also where I first started really trying to step into another person's headspace to try to find out the roots of misunderstanding. On top of that it was a great deal of fun seeing the kids improve and implementing the concepts we talked about. I really developed a deep respect for teachers and communication skills.
(Also totally bragging but our teams won first, second, or third place nearly every year)
Relevant Topics
- Leadership
- Mentorship
- Cyber Security
Taste Buds
University - Computer Science
Taste Buds was a semster long team project in which we implemented and deployed a full stack mobile application. Our specifica application was a social media site for sharing recipes and also meeting people based on food preferences. The idea was that users could publish recipes and users who like similar recipes, ingredients, and styles could be matched together in a tinder style swipe system.
My specific contributions to this project were on the backend API. I designed the interface that the frontend devs used to implement the UI. My design followed a REST API design principle. More specifically I also designed the user matching algorithm and interface for the frontend. I designed it to be a simple single endpoint that would be requested while logged in as the current user which would always return the next highest rated user profile for recommendation.
Relevant Topcs
- Teamwork
- REST API
- Full Stack Development
- Lang: Java
Cybot
University - Computer Science
TODO!
Relevant Topics
- Embedded Systems
- Low Level Programming
- Langs: C > Rust
Event Ticketing System
Work - State of Iowa
TODO!
Relevant Topics
- Integrated Systems
- Langs: Python > Javascript > Vue
I281 Assembler
University - Computer Engineering
TODO!
Relevant Topics
- Parsing & Lexing
- Assembly / Compilation
- Lang: Rust
Flashy Map
Work - State of Iowa
A custom map visualization using available javascript libraries for dynamic world maps and for drawing 2d graphics.
Relevant Topics
- Graphics Processing
- Real Time Data Processing
- Efficient Cache Management
- Langs: Javascript > Python > HTML