Joseph Micheli

A guided tour of github.com/jmicheli

This index provides an overview of my projects along with more detailed descriptions of the technologies involved and the challenges traversed in each. Clicking the thumbnail will open the release page or a live demo for the corresponding project.

While GitHub is designed for quick access to code by developers, this page is intended for readers browsing for big-picture insight into the solutions I've employed in each of these projects.


Graphics Programming

Graphics programming is a broad concept covering a variety of applications distinguished by their focus on providing visually interesting or highly realistic outputs. Such applications are most often written in low-level languages like C, C++, and Rust and rely on low-level graphics APIs to interact with the underlying hardware.

MD Renderer

A simple realtime test scene running in MD
  Render. (Click thumbnail for releases)

A simple realtime test scene running in MD Render. (Click thumbnail for releases)

MD Renderer is a realtime rendering engine written in Rust and interacting with the GPU through the Vulkan API, the modern successor to OpenGL. Vulkan exposes an extremely low-level interface by which applications can interact with the memory, execution, and threading model of the GPU in order to write highly efficient graphics applications.

Presently, the engine uses a Blinn-Phong shading to provide reasonable visual fidelity using classic PBR-style materials with surface properties defined using color, roughness, and normal maps. It supports multiple lights and allows a user to implement simple interactions with the scene through keyboard/mouse inputs, which the example uses to provide an FPS-style camera to explore the test scene.

GitHub

Frontend

Frontend projects demonstrate a developer's ability to write code executed or displayed on a client's machine, often in a browser. Modern frontend development depends on knowledge of HTML, CSS, and JavaScript, as well as comfort using varied frameworks and among changing standards.

WebGL Game of Life

The Game of Life occurs on an infinite 2D
  grid. Black cells are dead, while white cells are alive. (Click thumbnail to open a demo)

The Game of Life occurs on an infinite 2D grid. Black cells are dead, while white cells are alive. (Click thumbnail to open a demo)

Conway's Game of Life is a classic project for frontend developers because it is both visually impressive and mathematically beautiful.

In addition to demonstrating standard frontend principles, my rendition of the Game of Life makes use of the Lit framework to output a reusable native web component. Further, the game is "played" using GLSL fragment shaders compiled and executed on the host's GPU, demonstrating basic graphics pipelining and framebuffer swapping in addition to providing a much more performant, parallelized version of the game.

GitHub

Automation and Tooling

Scripting and automation can be a full-time job in and of themselves, but an ability to automate easy or repetitive tasks is invaluable in any environment. In my own workflow, I use command line tools developed in Python, build automation in Docker, Github Actions, and even platform-specific libraries like Windows Presentation Foundation to make tools accessible to non-technical people.

Patent Downloader

The Patent Downloader before
  starting a download. (Click thumbnail for releases)

The Patent Downloader before starting a download. (Click thumbnail for releases)

The Patent Downloader (PDL) tool was developed to help paralegals at a law firm onboard new clients with large IP portfolios. Previously, paralegals would search for, download, and rename PDFs of patents by hand—a process which could take an entire workday. This tool completes the same task in seconds.

The PDL is a WPF application written in C#, using Microsoft's .NET framework. When users input a file containing a list of patent numbers, the tool scrapes the file to generate a list of patents to download before beginning a download processes using worker threads to download multiple documents at a time. In addition to outputting PDFs, the PDL provides robust logging options to report results for record-keeping or bug reporting.

GitHub