/home/jefpacker/portfolio$

Portfolio

Publications, patents, and open-source projects.

Beyond Behavior Cloning in Autonomous Driving: A Survey of Closed-Loop Training Techniques

P. Karkus, M. Igl, Y. Chen, K. Chitta, J. Packer, B. Douillard, T. Tian, A. Naumann, G. Garcia-Cobo, S. Tan, A. Degirmenci, A. Popov, N. Smolyanskiy, U. Muller, B. Ivanovic, M. Pavone

Tech Report · 2025

Surnamerator

Surnamerator app screenshot showing a surname generation interface

A last name generator powered by a small language model (SLM), inspired by my partner's desire for a new surname.

Challenges

My partner wanted control over the first and final characters of generated names. First characters were easy: initialize the prompt with them. Final characters were harder. I modified the dataset to embed "hints" of the final characters before the regular model input, giving the transformer enough context to predict the ending correctly.

What I Learned

Coded a transformer from scratch — previously I'd only used them via libraries or read about them in papers.

Resources

Special thanks to Andrej Karpathy for inspiring this project with his Zero-to-Hero series.

Azriel Dreambooth

AI-generated portrait of Azriel the cat Real photo of Azriel the cat AI-generated portrait of Azriel the cat AI-generated rainbow portrait of Azriel the cat

Used DreamBooth to fine-tune a Stable Diffusion model on my cat Azriel and generate AI portraits. Can you tell which is the real photo?

Challenges

Determining training hyperparameters took significant iteration. I wrote a Medium article outlining the configurations that worked.

What I Learned

Reinforced the importance of experiment tracking. Notating training images, steps, and learning rate produced more consistent results.

Resources

The HuggingFace diffusers class provided a great foundation. The Azriel model won 2nd place in their DreamBooth competition.

Rocketship RRT

Rocketship RRT screenshot showing a search tree expanding toward an orbiting planet

A JavaScript implementation of a Rapidly-Exploring Random Tree (RRT). The rocket uses the search tree to navigate space and intercept an orbiting planet.

Challenges

Determining an effective search methodology was tricky. I created a node queue prioritized by Euclidean distance to the planet. The Euclidean metric causes problems where the closest node can point away from the planet, making that path more costly than others.

What I Learned

First time writing JavaScript for the web. Learned how it integrates with HTML.

Scribe

Scribe app screenshot showing automated meeting notes interface

For AssemblyAI's Winter Hackathon, I built Scribe — an automated meeting note-taking app that lets users focus on calls and quickly catch up on anything they missed.

Challenges

The hackathon was only two days. Getting real-time data from web conferencing software was the main obstacle — Zoom, Meet, and others don't expose good APIs for this. I ended up using a plugin that read subtitles off a live Google Meet page. Getting raw audio would have made a much better product.

What I Learned

The AI-related parts were trivial. The hardest aspects were building the website and piping data around. Never underestimate boilerplate code.