Thoughtful products.
Down to the details.

I’m a full-stack engineer with a frontend focus. I like working through how something should feel to use, then building it.

See my work
Reelate’s Breaking Bad title page, with review, recommendation, watch-list, and streaming options.

Reelate.

Keeping up with
what friends watch.

College made it harder to keep up with what my high-school friends were watching. That’s why I started Reelate. I’m the founder and the sole engineer.

A rating shouldn’t
need a keyboard.

I wanted people to have plenty of control without making a quick opinion feel like work. The slider lets them pick a score in one gesture, and the haptic feedback makes it feel tactile and enjoyable.

Reelate’s rating slider at 0.0, before a score has been chosen.

Sometimes it’s
an 8.3.

A whole number doesn’t always match how you feel about a movie. I chose 0.0–10.0 with decimals so people could be specific, without typing a number into a fiddly little field.

The rating slider at 10.0. The same control allows scores in decimal increments.

I’d rather hear
from a friend.

A recommendation from someone I know means more to me than a generic list. I wanted Reelate to keep that personal part, so you can send a movie to a friend and add why you think they’d like it.

Reelate’s recommendation composer, with a recipient selector and personal message field alongside Breaking Bad.

DoorList.

Spotify, inside
the event playlist.

At DoorList, I built the Spotify integration so people could add music to an event’s playlist without leaving the app.

DoorList’s empty event playlist, with Spotify recommendations ready to add.

A small sign
that it worked.

After you add a song, its title briefly turns green, then fades back to white. I wanted the app to acknowledge what you just did without stopping you from picking the next song.

The “Added” label stays there after the color fades, so you can still tell which songs you’ve picked.

A DoorList event playlist after a song has been added. The song has an Added label.
Reelate’s Breaking Bad title page, with review, recommendation, watch-list, and streaming options.

Pilot.

Pages and
suggestions.

At Pilot, I built the frontend and backend for pages that bring related insights, metrics, and product changes together, and reworked the suggestion engine to use multiple agents. These are a few of the small interactions I care about in the product.

Pilot’s Events service page, with related insights, a key-metrics chart, product history, and the Events Agent panel.

A little movement
in the sidebar.

A moving gauge or a few redrawn lines won’t change what a sidebar does. But those little moments can make it more enjoyable to use. I care about getting them right without making the rest of the page move around.

Pilot’s sidebar, with a gauge icon beside Flight Deck and a lined icon beside Product Tracker.

The tooltip shouldn’t
jump around.

When you move between points, a tooltip has to keep up without becoming distracting. Here, it slides to the next value and fades out when you leave, so it stays easy to follow.

Pilot’s chart, with a tooltip showing the value at one point.

A sidebar that
doesn’t jump.

An expanding sidebar group needs more space. Letting the rows below move with it makes the change easier to follow than having everything jump to a new position.

Pilot’s sidebar, with Product Tracker collapsed and the other groups below it.

Notifications without
leaving the page.

Checking notifications doesn’t need to take over the whole page. The inbox and its filters open on top of the workspace, so you can narrow things down without losing your place.

Pilot’s inbox filters, with Suggested and Ticketed checked in the Status menu.

One place
to find things.

When you know what you’re looking for, it helps to have one place to start. The command palette brings areas, insights and navigation together, with groups that make the choices easier to scan.

Pilot’s command palette, with choices grouped into areas, insights and navigation.

What’s happening
while you wait?

I like being able to follow a request while it’s running. The loading animation and status cards help with that. The insight is still being generated in this clip.

Pilot’s insight generation view, with status cards and a request that’s still running.

The Lion.

A restaurant in
our fraternity house.

For an AEPi fundraiser, we turned our house into a restaurant for a night. I built the website and the tools we used to run it.

The Lion’s restaurant website, with its blue and gold lion and a welcome to the fundraiser.

Different jobs need
different screens.

The host needs to see which tables are free. The kitchen needs to see the orders. I kept those views separate so each person could focus on what they needed to do.

The Lion’s host view, with a grid of tables marked Available.

Just the course
you’re working on.

I kept the table names and order status visible when filtering by course. That way, the kitchen can focus on one part of the meal and still see where each order belongs.

The Lion’s kitchen queue, with course filters and orders grouped by table and status. Timers in this archived recording are out of date.

No need to memorize
the drink menu.

Each drink ticket includes the recipe, so the person making it can check the ingredients and amounts without leaving the order. It also makes the view useful to someone who’s still learning the drinks.

The Lion’s bar ticket for an AEPi Sunset, with ingredients and amounts. Timers in this archived recording are out of date.

Want to work
together?

Let’s connect