Gistified, a podcast condenser

My podcast eyes are bigger than my ear stomach.

I subscribe to 133 of them. If even half released a weekly 30 minute episode, I’d need to clock more than a full day of listening to catch up!

Gistified turns your podcast subscriptions into an inbox of summaries, distilling lengthy episodes into takeaways and key quotes.

Part of me finds this project a little distasteful, taking a carefully labored over piece of media and boiling it down into an infotritional supplement. But, as with meal replacements, something is better than nothing - and I’ll take podcast soylent over skipping info dinner any day.

This tool has had a surprisingly large impact on my media consumption. There were so many little pockets of intrigue that I had simply trained myself to ignore because I didn’t have enough time or brainspace for them.

But in the past few weeks I’ve learned things about housing policy, geopolitics, and active supreme court cases that I otherwise would never have had time to know!

  • Built with NextJS, Whisper, GPT4Turbo, Tailwind, Lambda, ECS, Postgres, Vercel Blob Storage.
  • Github repo

Sounds like a good time, a bike ride visual synthesizer

Often when I am moved by art, it is because the artist has taken the seemingly mundane and, by framing it, revealed its beauty.

Perhaps you had become desensitized to the way the sunset looks through the subway window as it grinds over the manhattan bridge, or had never carefully examined the shape and color of fish scales. And then, wham, some painting puts you in closer contact with reality.

Beauty is mostly a matter of attention. Focus on anything with an open mind and you are bound to find nuance.

This seems to be the art of life! Figuring out how to direct your attention. Learning, and then re-learning, how to focus on things that are vital but not loud.

I was thinking about this as it relates to cycling.

I have a complicated relationship with riding my bike. When I have been at my lowest points, burnt out or depressed, cycling was the only thing that brought me joy and made me feel truly free.

But, as I began to take the sport more seriously, the joy started to go out of it. The feeling of wind in my hair, of being in motion, gave way to a focus on heart rate zones and target mph.

Then, last year, I had a major crash. I fell off the bike at ~25 mph, and skidding across the pavement felt like being swallowed by a concrete wave. My kneecap was shattered, and I spent about 3 months in recovery and physical rehab relearning how to walk.

When I finally got back on the bike, I was, obviously, not the same. Not only had I lost all my strength, but I now had intermittent swelling and bone pain if I pushed too hard. The loudest voice in my head wanted me to get back to where I had been, as quickly as possible. Technology made this worse. Every time I did laps in the park, Strava would remind me that I was a full minute slower than my fastest time, that todays average speed had only been 12mph.

Slowly, I narrowed the gulf, each week shaving a few seconds off. As I got stronger, I realized that I no longer felt safe going faster than ~15mph. On every downhill my body would snap tense and I’d flash back to the moments before my fall.

I spent a lot of time re-wiring my brain here, teaching myself that I wasn’t in danger, that I wasn’t a failure for going a little slower. Trying to get back to a place where I could just enjoy riding my bike again.

As part of this reclaimation effort, I felt compelled to make something beautiful out of the experience.

I immediately thought of Best of Luck with the Wall, a stunning 2020 short film that uses satellite imagery to make tangible the vastness of the US-Mexico border (and the inherent absurdity of policing it). Perhaps, with the lat-long data from the ride, I could create a similar experience?

Best of luck with the wall

Simply visualizing a bike ride was briefly interesting, but quickly became repetitive. How could I go deeper, uncover another layer of beauty here? I decided to generate an accompanying soundtrack based on the bike ride data, interpreting visual elements from each frame as a musical score.

The result is a mesmerizing, fully playable instrument. You as the user can decide which pixels get mapped to music, which instruments play, tempo, key, volume.

Sounds like a good time

I have been deeply moved by watching and listening to this. It has reminded me on a very visceral level that the experiences we have matter, and that there is beauty in everything that we do, should we take the time to look.

  • Use the synth here
  • Built with js, ffmpeg, sharp, toneJS, docker, aws ECS, mapbox
  • Github repo

Shit Patrol, an automated playlist

Years ago, I was involved in college radio. Every week, we would get hundreds of new albums from bands & promoters that wanted us to put their music on air.

We listened to every single CD we received. At least a few tracks, at least 30 seconds per. We called this Shit Patrol, and it was as mind expanding as it was brain melting. Often 100 genres in as many minutes.

Today, the struggle to discover new music is real. As with all media, trying to stay on top of what’s new feels like drinking from a firehose. Instead, you might throw on your favorite album for the 100th time this year, or lean into some form of curation - Spotify Discover, Bandcamp Daily, your favorite creator.

Or, you can attempt the sisyphean task of listening to every band that plays a live show in New York City every week!

If you brave this, you will be overwhelmed. You will hear things you hate. Things that confuse you. You will be blown away by a song that has only been listened to 312 times. Then, you can have the immediate gratification of getting to hear that band live! (or the disappointment of not being able to!)

  • Concert listings come from ohmyrockness.com (via an internal API and a clever webscrape)
  • Built with js, postgres, AWS lambda
  • Github repo

Comparely, a competitive intelligence proof-of-concept

In b2b SaaS, keeping tabs on the competition is an existential need. Sure, there is discourse over how much to base decisions around what competitors are doing - but if your biggest competitor rolls out a new feature, you want to understand why.

This cuts across teams. Sales needs to speak about competitors on calls. Marketing needs to design relative positioning. Product needs to advocate for (and against!) roadmap items based on where others in the market are now and where they’re going.

You can glean a lot about a company from public sources. Take a company’s site, tweets linkedin posts, articles about them on techcrunch, interviews with the founders, jobs the company is hiring for, and you can get a pretty solid picture of the company’s priorities, strengths, and weaknesses.

Comparely is a proof of concept exploring how automation & AI might be used to give b2b teams better telemetry on what is happening in the market.

The idea: pull data on a recurring basis, synthesize it with LLMs, and automatically notify stakeholders of anything important. This poc implements a basic feature comparison, but the potential to provide deeper insights is there.

Homepage Generate a comparison Feature comparison

  • Built with js, python, perplexity, gpt4
  • Data streamed to front-end via server-side-events
  • Automated emails with emailjet
  • Github repo

Bootcamp Projects

This Summer, I decided to make a career change.

I’d spent the last ~5 years working in Product Management, and while I enjoyed many aspects of my professional life - it had become apparent that I needed a change.

I wanted to spend more of my time and energy creating. As a PM I did the (necessary! challenging! often frustrating!) work of creating optimal conditions for good software to be created by others.

So, I decided to take a career break to learn to build software. I figured, even if I returned to Product roles, I’d have upskilled & enabled myself to build side projects.

Despite feeling fashionably late to the party, I decided to do a bootcamp. Here are some of the projects I worked on during that time.


2cents, pay for what you wiki

Despite fully believing that it is a force for good and a beautiful, humanist holdover from a more optimistic time on the internet, I have never donated to Wikipedia.

Instead of trying to understand why that is, I closed the gap between intention and action with sweet, sweet technology.

2cents is a chrome extension that automatically donates an amount of your choosing to Wikipedia for each distinct wiki article you read every week.

  • Built with js, stripe
  • Uses google oauth based on the chrome browser profile
  • Github repo

Extension, logged out Extension, logged in


Grace Shopper, an ecommerce site

Does what it says on the label.

  • Built with js, postgres, bootstrap
  • Implements session-based authentication
  • Implements search!

Shopping experience

Admin view of a user