A collection of some major projects over the years.
PennCloud is a fully distributed webmail and cloud storage system built from scratch. The core technology of the system is a fault-tolerant key value store based off of google's BigTable system. The cloud storage system allows for files up to 10MB and the webmail system is a fully functional email client. For a full list of features and design considerations see below.
IMG2GPS is a an ensembled, pipelined artificial intelligence mode based on a Convolutional Neural Network (CNN). Over 500 images were collected from the block around the Penn engineering quad and included the GPS location from those images. This model starts by classifying the images into "regions" and then uses an ensemble of region specified models to hone in location. See the project report below for more details.
PennOS is a fully functional Operating system including kernel level API, file system, and user-space terminal. This project was a group effort for the CIS 5480 course at Penn and required deep collaboration in the 4 person team. I primarily worked on kernel level device I/O and user-space to kernel-space communication, namely the shell (but I worked on many parts of the code as well). For a full feature description and the direct Doxygen documentation for the project, see below.
The ICPU-v0 (Ian CPU) is a superscalar, multistage pipelined processor for the RISC-V RV32I (core integer) and RV32M (multiplication/division extension) instruction sets. The processor runs at 5 MHz with a ~80ns worst case negative slack. This processor has been fully implemented on a field programmable gate array. This processor was developed over a semester in the Penn CIS 4710 course, check out the full incremental design as well as the final product below.
MiniMinecraft is a scaled down clone of the video game Minecraft. This project won the MiniMinecraft Hall of Fame award for the semester. Core systems include: optimized physics engine, multithreaded terrain generation, compressed game save data format, and complex shader pipeline. The game uses QT for windowing and the GUI and rendering uses the OpenGL pipeline. For a full list of features see the video above.
This is a Stirling engine which turns heat from the rounded area at the back of the engine into rotation through the heating and cooling of air in the chamber. The rotating flywheel has magnets on its perimeter which when placed inside the stator and coils creates alternating current electricity. This generator outputs 3 phases of 0.2Vpp, 40hz sine waves which when rectified achieve 1.5V direct current. This project is a work in progress and I hope to increase the power generation soon. This engine and generator were entirely designed and manufactured by me.
A dataset combining the World Ocean Database (WOD) and Ocean Biodiversity Information System (OBIS) datasets for use by researches to study the effect of climate change on biodiversity.
IDK is an autonomous or directly controllable robot for the mechatronics final competition. It uses a an ESP32 microcontroller and does most of its sensing through time of flight sensors. See the report below for full details.
A report comparing the machine instructions generated by CUDA and Triton, a novel GPU programming language with surprising speed and efficiency.
MicroMaya is a basic mesh editor that allows for simple operations and OBJ file viewing.
PennSat is a basic SAT solver implemented using the DPLL algorithm. (NOTE: graph above is runtime on random 3 CNF formulas with n=75 variables and m=324 clauses)
SV to Net is a partial SystemVerilog compiler. It converts abstract circuit representations in SystemVerilog into physical SPICE netlists, optimized by a constraint programming system. This is a work in progress.
imlamont.com is my personal website that you're on now! It's a static website hosting my projects and artwork. It is deploy on Amazon Web Services stored on S3 (updated through github actions) and hosted though Route 53 with HTTPS and distributed through the CloudFront CDN.