A broken feed fails quietly
When a feed breaks, nothing crashes. The partner app just shows fewer shows, and no one files a bug. Monitoring is not a nice extra here. It is the only way you find out.
I am a software engineer at Bandsintown. I own the partner data feeds: the system that sends fresh concert listings to the apps where people already listen. On the side I run Brightside, a small lab where I build the tools I wish I had.
Partner data feeds
Four apps, four data contracts, one export. Pick an app to see where a concert listing shows up for the people who use it.
On tour
These screens use a made-up artist. They show where the feed data lands, not each app’s exact design.
Lessons
Most of these I learned the slow way. They apply to any pipeline that sends data to someone else.
When a feed breaks, nothing crashes. The partner app just shows fewer shows, and no one files a bug. Monitoring is not a nice extra here. It is the only way you find out.
Every validation gate shipped in observe mode first. It logged what it would have stopped for weeks. Only then did it start to block, and blocking means sending nothing rather than sending something wrong.
The partner modules share very little code. That looks wasteful until one partner changes its contract and you can change one module without risk to the other four.
A ticket seller can appear by its display name in one table and by its domain in another. Matching on both fixed rows that had never matched before.
An OR join against keys that repeat multiplies rows without a warning. When the question is membership, ask a membership question.
df.filter(col("seller").isin(allowed))I moved the feeds out of two monorepos into one service repo. Deploys, alerts and docs now belong to one thing, and a new engineer can find all of it.
Brightside
Brightside is my independent lab. It builds its own tools, takes on a few fixed-scope builds for other teams, and offers advice where that is the better fit.
Every Brightside tool started as a job I kept doing by hand. Weld began as my own job search. Plop began because I wanted to know how easily an agent could be tricked into misusing its tools. Quill is an idea about personal software I have carried for years.
The rule is simple: if I have to learn the tool before it helps me, it is not done yet. Each product does one job, ships small, and loses features before it gains them.
Interests
The work changes. These stay the same.
The reason the day job matters to me. A good feed means someone finds the show.
Tool-using AI is only useful when you can prove what it will not do.
Talking is the oldest interface. Gael and Crackle are both experiments in it.
Pipelines, contracts and the checks that keep them honest.
Writing
Longer thoughts on data feeds, small software and the tools I build.
Guestbook
Notes, testimonials and photos from people who visited. I read each one before it shows up here.
No notes yet. Yours can be the first.
Contact
Questions about data feeds, a build you want help with, or a show you found through Spotify. Write to me here or by email.
hello@brightside.club