Skip to main content
danangell.com/blog about

Twitch Donations IRL

A cropped image of a display showing just the top with a rainbow colored $69.00 donation amount
I gamified donations in an organization that gives everything away for free.

I volunteer at Noisebridge, a hackerspace in San Francisco. Anyone can walk in off the street and use our 3D printers, sewing machines and electronics lab. No dues are required. Newcomers sometimes ask how to become a member. I’ll tell them “You already are!” but what they’re really asking is how to formalize the relationship: give money, get access. They already have access. So the trick is getting people to pay for something they get for free.

The Problem

Our building is rented, so we need some way to come up with $11k every month. Thankfully the organization is 100% volunteer-run so our total monthly expenses are only around $14k. To get recurring revenue there are some membership tiers that grant 24/7 access. However, these tiers also come with the responsibility to sweep people out when you leave. Many people aren’t interested in that. There are people that give us money every month without anything extra in return. But this system isn’t particularly lucrative. Before the pandemic the community had a monthly surplus. But shutting the space down for a year and a half killed a lot of momentum. Members left San Francisco, or the country entirely.

The organization has periodically reached a crisis state where we are months from bankruptcy. Thankfully we have so far managed to fundraise our way out of these moments. With such a vast network that includes both high paid tech employees and early adopters of Bitcoin it’s not uncommon for a $100k donation to come into our accounts. But we only need to fail this game once for the organization to die. It’s better for us to become self-sufficient by building financial fitness rather than be dependent on generous crypto-millionaires.

Fixing the Basics

Before I started this project we had a few different ways to donate.

  • Cash (with cash boxes placed around the space)
  • PayPal
  • A Stripe-powered page where you needed to type in your credit card number

I had been upset with our Stripe page. I used it to create a recurring donation, but it provided no means to increase the amount during our last fundraising panic. People occasionally contacted the treasurer to adjust or cancel their recurring donations, which was always a slow process. I decided to rebuild the site to provide the bare minimum for managing your recurring donation (cancellation, amount changes, payment method updates). But why stop there?

I wanted us to support Apple Pay and Google Pay. Digital terminals were out of the question. Who’d trust a random machine in a space as anarchist as this? I decided to stick QR codes around the building. They link to a web page which offers the new payment methods. I wrote some OpenSCAD code and 3D printed multi-color QR codes. There’s a little red logo in the middle to catch your eye. The design makes it easy to pattern-match on what is a donation prompt. The complexity of 3D printing a QR code also provides some proof of authenticity.

A QR code on a large laser cutting machine A donation prompt screenshot

I’ve also placed around 20 other QR codes in the space, following the Disney World principle of trash cans. Place them so that no matter where you are you can see one.

Making it easier to give us money helps. But I also wanted to add some social proof. A way to show people that yes, people are donating for the laser cutter, sewing room, 3D printers, etc. So I installed 4 displays in the space that show real-time alerts for donations and new memberships.

The Displays

You can see above the special effect used for an amount that is the highest in the list. The list is a log of the previous 20 donations.

Beyond social proof, people get rewarded with various animations to celebrate their donation. Surprisingly, a lot of people find joy in these effects. I’ve seen multiple people bring in their friends, direct them to a display to donate, and they all get excited when an animation plays. I’ve also seen many more instances where people say something like “Do this for me and I’ll donate to Noisebridge”. Everyone will see the donation, so the statement holds more weight.

I added a border of RGB NeoPixels to each display, with 3D printed diffusers glued to each pixel. This helps make the display feel more real. We have all grown numb to the magic of millions of pixels that can each display millions of colors 60 times per second. Displays show a portal into the digital world. What’s on a display is deemed less real than its surroundings. But adding just a little novelty helps bleed the digital domain into meatspace.

Image of a screen mounted to a wall showing a log of donation amounts
The way the LEDs work is kind of fun. Each display is driven by a Raspberry Pi 5 (2GB model). What you see on the screen is a web page hosted on the same server hosting all of the other donation related functionality. The Pi also hosts a web server that provides an API to control the LEDs which the web page connects to in a cross-origin request to localhost:3000. In order to simplify deployments the LED API receives what are essentially 1-dimensional shader functions written in JavaScript. I take functions right out of the front-end, call toString() on them and ship them off to the Pi where they are eval()'d :D

Just like on some Twitch streams, there are special donation amounts that trigger certain effects. Above you can see what happens when you donate $13.37. There are a bunch of different effects on the screen and corresponding LED strip animations. $4.20 and $420 are of course well supported.

What Works

I have noticed that we raise more through the QR codes and displays when I’m around to prompt people to donate. I might tell someone I know to be generous that there’s a new animation if you donate $42. Repeat a few times and that’s $126. There’s a separate social problem here where I will need to get other people invested in the project. My current plan is to get other members to add new effects, giving them a sense of ownership, and then they can go around letting people know there’s a new effect to try.

Often I see people donate just to test out the display on their first visit. The default donation amount for the QR code shown on the displays is $100. This is adjustable, but periodically someone accepts that default.

The Data

Stacked bar chart showing subscription vs. one-off donation income on a monthly basis.
Stripe income. The data for May 2026 is incomplete as of the time of posting.

You can see a huge spike from when I launched this system. We had a number of very large and celebratory donations initially. But so far it looks like we’ve leveled off at a net increase of $2,000 per month. Our budget shortfall had been about $5,000 per month. This project has cut that by 40%. Keep in mind we have other income streams and Stripe started off well behind PayPal given the previous UX issues.

Now everyone in our anarchist organization has their eyes on the finances. This might be more important than the extra income. I plan to create a new dashboard in our building showing membership stats (number of monthly donors, total recurring income). When your organization is primarily based in a physical location, you should use this fact to your advantage. You can avoid looking at a digital dashboard. It’s much harder to avoid a bright flashing display.

All of the code is available on GitHub. You can visit the live site at donate.noisebridge.net.