eieio.games

by nolen royalty

All My Work

Here's everything I've ever made or written.

Alright, not everything. But it's everything I've made since I began building stuff for the internet (March 2023).

I try to write a blog about every project I make. Sometimes I write blogs for their own sake too. Writing is fun.

I like seeing my work evolve. Infinite Hamlet isn't great, but there's a throughline from it to other stranger-interaction projects like One Million Checkboxes and Stranger Video.

Anyway. Here's everything. You can filter the posts by category if you'd like. I've tagged my favorite work with "Best Of."

Enjoy

30 posts displayed

A decade without a drink

That's a long time

Dec 17, 2024

This is a post about addiction and recovery. It is way outside my ‘whimsical games’ lane and I completely understand if you’d like to skip it.

I have no plans to write about this again, and I promise I will be back to building nonsense soon.

A sobriety calculator. It shows that the author hasn't had a drink in 10 years, or 120 months, or 3654 days, or 87,686 hours

That’s a decade without a drink for me.

After I quit I was hungry for stories. So today I’d like to share my own.

Keep reading

Writing down (and searching through) every UUID

I couldn't remember every UUID so I wrote them all down

Dec 4, 2024

I’ve been struggling to remember all of the UUIDs 1. There are a lot of them. So this week I wrote them all down. You can see my list at everyuuid.com.

1

A UUID is a universally unique identifier - a long collection of letters and numbers that is basically always unique.

The site looks like this - UUIDs are displayed in a random-ish but consistent order and you can quickly search for one that you like:

it's so much easier to remember them all now

I think the site is great. I can quickly find my favorite UUIDs and star them or browse them all to find one that’s just right.

But having 5,316,911,983,139,663,491,615,228,241,121,378,304 2 possible values made it way harder than it needed to be to write them all down. I’m not sure why the authors of the UUID spec wanted to include so many bits!

2

While UUID have 128 bits, UUID v4s reserve 4 bits for the version and 2 or 3 bits for the variant. I chose the 2-bit variant, which left me with 122 bits of entropy.

So I think the final implementation here is pretty interesting. Let me tell you about it.

Keep reading

Auto-texting STOP to unknown numbers

I am sick of political spam

Nov 4, 2024

I’m sick of political spam texts. Here is a stupid solution.

I’m not telling you that you should do this. But this morning I made my phone auto-respond “STOP” to any unknown number:

testing this was pretty satisfying

Sharing iOS automations is weirdly annoying (it’s easy to share shortcuts via iCloud, but I built this directly into an automation and I can’t make an iCloud link for it), so here is the logic written out:

Keep reading

PacCam: Pacman controlled with your face

Chomp to move, look to turn

Nov 1, 2024

I made a game. It’s called PacCam. It’s Pacman, but you control it with your face.

Looking very cool

You can play it here (or read the code).

You chomp your mouth to move and turn your face to steer. You look…pretty dumb while playing it. At the end it tries to give you the dumbest possible gif of yourself (it tracks when your mouth is the most open, and builds the gif around that moment).

a silly gif of my face; my mouth is openinganother silly gif of my face; my mouth is opening

I could fill a book with dumb gifs of me after all the testing I did

I’m really pleased with how the game turned out, but making it was way more work than I expected. Let’s look at why.

Keep reading

DOOM in the iOS Photos app

Well, kind of

Sep 23, 2024

I made a game with Adnan Aga. It’s DOOM, but it runs inside the iOS photos app. Kind of.

look, we eventually manage to get up some stairs

It is…technically playable? We managed to pick up some power ups and shoot at some enemies. It requires 8 manually configured iOS shortcuts, a dedicated photos folder, and a separately configured computer.

Let’s look at how it works!

Keep reading

I’ve released the data and code from One Million Checkboxes.

Thanks for playing. More games to come :)

Keep reading

The Secret Inside One Million Checkboxes

Teens wrote me a secret. I found them.

Aug 28, 2024

A few days into making One Million Checkboxes I thought I’d been hacked. What was that doing in my database?

A few hours later I was tearing up, proud of some brilliant teens.

But let’s back up.

Note - I’m trying something new; I’ve also made a YouTube video that tells this story. I’m trying to decide whether I’m interested in making videos; check it out if you’d like!

Keep reading

Scaling One Million Checkboxes to 650,000,000 checks

Dealing with unexpected popularity

Jul 25, 2024

On June 26th 2024 I launched a website called One Million Checkboxes (OMCB). It had one million global checkboxes on it - checking a box checked it for everyone on the site, immediately.

The site, 30 minutes after launch

I built the site in 2 days. I thought I’d get a few hundred users, max. That is not what happened.

Instead, within hours of launching, tens of thousands of users checked millions of boxes. They piled in from Hacker News, /r/InternetIsBeautiful, Mastodon and Twitter. A few days later OMCB appeared in the Washington Post and the New York Times.

Here’s what activity looked like on the first day (I launched at 11:30 AM EST).

Unique visitors hourly during OMCB's first dayChecked boxes hourly during OMCB's first day. The first few hours of data are missing.

I don't have logs for checked boxes from the first few hours because I originally only kept the latest 1 million logs for a given day(!)

I wasn’t prepared for this level of activity. The site crashed a lot. But by day 2 I started to stabilize things and people checked over 50 million boxes. We passed 650 million before I sunset the site 2 weeks later.

Let’s talk about how I kept the site (mostly) online!

Keep reading

One Million Checkboxes

One million checkboxes that anyone can check

Jun 25, 2024

Hi. It's Nolen (eieio) from the future, a day and half after I posted this.

While it was live, One Million Checkboxes was played by over half a million people. Over 650 million boxes were checked. The site was featured in the New York Times and has a Wikipedia page. Wild stuff.

This post discusses the original implementation. You can read about how I scaled up the site here, and you can read a story of some incredible emmergent gameplay from the site here.

The original blog post continues below.


I made a website. It’s called One Million Checkboxes. It has one million checkboxes on it. Checking a box checks that box for everyone (and makes some numbers go up).

You can find it at onemillioncheckboxes.com.

checking some boxes

Why

I don’t really know. The idea came up in a conversation with my friend Neal last Friday and I felt compelled to make it.

Keep reading

Questions to ask when I don't want to work

Treating myself a little more kindly

Apr 2, 2024

Sometimes I don’t want to work. Not wanting to work makes me feel bad.

My identity is tied up in liking to work hard! And I work for myself - it’s very easy to slack off. Not wanting to work makes me feel lazy. It makes me feel like I need to buckle down, and I feel like something is wrong with me when I can’t.

This used to make me upset. I’d spend days distracted, neither fully working nor fully relaxing. Now when this happens I tell myself:

You love to work. That hasn’t changed.

Something else needs to.

This reframing has been a revelation for me. Thinking this way makes it easier to change my process, helps me find what excites me, and makes it easier to consciously take breaks. Here are some questions I ask in order to isolate what needs to change.

Keep reading

BreakTime: Brickbreaker inside Google Calendar

Giving google calendar critical functionality

Mar 12, 2024

I made a game. It’s called BreakTime. It’s Breakout (aka Brick Breaker) running inside Google Calendar. Your meetings are bricks. It (optionally) declines the meetings you destroy.

shattering some meetings

It’s a chrome extension. You can install it here. It has no external dependencies; it’s 1,500 lines of javascript including a little game engine I made for the project.

Making it was a ton of fun. Let me tell you about it.

Keep reading

Teleyegraph: convert blinks to morse code

Who says face tracking isn't useful?

Feb 13, 2024

I made a little tool. It’s called telEyegraph. It converts blinks to morse code.

me, blinking out a dril tweet

I built it because I’m fascinated with controlling things with your eyes and as a test of the React and CSS skills that I spent January learning.

You can play with it here or check out the code on github.

Keep reading

Talk Paper Scissors

Rock paper scissors with strangers over the phone

Dec 21, 2023

We shut Talk Paper Scissors down on November 24th, 2024. Tens of thousands of people played it in the year that it was live.

I made a new game with greg technology. It’s called Talk Paper Scissors. It lets you play rock paper scissors with strangers by calling a phone number.

The talk paper scissors mascot. It's a rock with googly eyes on it.

the Talk Paper Scissors mascot

It’s an attempt to make an audio-only stranger video. Here’s how it works:

  • you call a phone number
  • you’re asked to say rock, paper, or scissors
  • you aren’t allowed to say anything else
  • you hear a recording of what the stranger said and are told whether you won or lost

Games are 3 rounds long. Your stats are tracked between rounds.

When the game was live, you could play by calling 1-(515)-762-5762 (that’s 1-515-ROCK-ROC).

Keep reading

I Made a Substack

Thinking about audience engagement

Dec 6, 2023

I made a newsletter. It’s here, on substack. Then I wrote a post on my blog about making a substack. It’s here, on my blog, which you’re reading right now.

Keep reading

My Computer Tells Me to Go to Bed

Nudging myself towards a better sleep schedule

Nov 23, 2023

Every night at 12:15 AM my computer tells me to go to bed.

No, really. A voice says “time to sleep.” Then this window pops up:

a popup window that says 'time to sleep' and explains that it's rare that if I'm using the computer past midnight I'm doing something worthwhile.

yeah, it's a little verbose

If I hit “ok” the window pops up again a minute later. Sometimes I move the popup out of view and ignore it for a few minutes. Sometimes I snooze it and keep coding (or writing - it’s 12:28 AM right now). But most of the time I go to bed.

Keep reading

Stranger Video

Stare into a stranger's eyes

Nov 16, 2023

Update: the day after I posted this stranger video went viral in japan. It was a ton of fun. The viralness has died off for now; I’m working on a separate post about the experience of using stranger video at peak popularity.

I have a new project. It’s called ‘stranger video.’ It’s about staring at strangers.

this is me and a friend - no strangers!

stranger video has some rules:

  • you are paired with a stranger for a video call.
  • video is tightly cropped to just your face and cuts out if there’s no face in frame.
  • no audio, no text chat, just silent video.
  • video cuts out as soon as one of you blinks.

You can play it at stranger.video

It’s the most uncomfortable thing I’ve built. I hope you love it.

Keep reading

I made a game. It’s called Flappy Dird. It’s Flappy Bird inside MacOS Finder.

ad placements start at $2,000

It has instructions, high score tracking, and marquee banner ads. You double-click to start a game and select any file in the window to jump. It runs at 4 frames a second and can’t run much faster. It occasionally drops inputs for reasons that you’ll understand if you finish this blog.

I’m going to lay out how Flappy Dird works and how it got there. Head to the github repo if you want to check out the code or play the game yourself.

Keep reading

A real-time game that runs in a Google Sheet

A deranged adventure

Sep 16, 2023

I made a game. It’s in a Google Sheet:

really, really, I'm fine

There’s some stuff going on here! But in addition to aesthetics this game is “real time” - the spreadsheet tracks the time when you complete tasks and compares those times to where the animated blue progress bar is. Your final evaluation (in the lower right) tells you whether you completed your tasks early, on time, or late. This is all driven purely via Google Sheets formulas - no Apps Script or other trickery needed.

Let’s talk about how this works!

Keep reading

Measuring something changes it - and sometimes that's enough

Changing behavior without worrying about individual metrics

Aug 29, 2023

Every night I write down six seconds of my day that I want to remember.

Some nights I struggle to come up with something worth writing down. That’s ok! Sometimes I’ll struggle for many days in a row. That’s less ok.

But when I have multi-day stretches where I have nothing to write down I notice. And noticing causes me to start changing my behavior. Journaling this way helps me seek out memories worth remembering.

Measuring and optimizing the right metric can be powerful. Measuring and optimizing the wrong metric can be disastrous. But sometimes the act of measurement itself is sufficient to change behavior for the better.

Keep reading

Hexagone

A font that converts hex color codes to RGB

Aug 26, 2023

So here’s a neat trick:

the font is called hexagone because it gets rid of hex

By changing the font I’m able to automatically convert hex color codes to RGB! What’s going on?

Keep reading

Swedish Furniture Conglomerate Survivors

Busting ghosts in a haunted Ikea

Aug 21, 2023

Basics

Gameplay Video

I like the 'pop' that the ghosts make

Keep reading

Wub

Say nonsense words fast

Aug 11, 2023

Basics

  • Genre: Competitive toungue twister
  • Links: play it right here or play it on itch
  • Engine: A little hand-rolled javascript
  • Time Spent: ~4 hours one evening
  • Other Stuff: I built this game at Recurse Center, a magical place that functions like a writers retreat for programmers. Consider applying!

In Wub you’re prompted to say some silly phrases while a timer plays. When you finish saying the silly phrases the timer stops. The first phrase you say is “wub wub 1.” That’s why it’s called wub.

1

Interestingly, the API does a better job of detecting the phrase “wub wub” than detecting a single wub!

wub wub wub wub wub

Keep reading

Infinite Hamlet

Typing Hamlet one character at a time into twitch chat

Aug 2, 2023

I turned off Infinite Hamlet on September 30th.

Some quick stats: 41 unique chatters submitted 4,400 characters and completed 136 lines of hamlet. Running it was a ton of fun! I’m excited to revisit this kind of game in the future.

Basics

  • Genre: twitch-plays-pokemon-like
  • Links: play it live on twitch
  • Engine: Godot 3.5
  • Time Spent: ~2 weeks on and off
  • Other Stuff: I built this game at Recurse Center, a magical place that functions like a writers retreat for programmers. Consider applying!

Gameplay Video

To play Infinite Hamlet you attempt to type out all of Hamlet one character at time via twitch chat. That’s the whole game. It’s called “Infinite Hamlet” because of the infinite monkey theorem

Riveting

Keep reading

Wordle in the Firefox address bar

Abusing the Opensearch spec to make a game

Jul 5, 2023

So here’s a neat trick:

If only the font was monospaced

That’s the firefox address bar! And I’m playing a full game of Wordle in it! What’s going on?

Keep reading

Game 6: Get the DVD logo in the corner

Achieving my childhood dream (of getting the DVD logo in the corner)

Jul 3, 2023

This game was linked from New York Times Watching newsletter on Friday September 8, 2023. This was super cool for me! Margaret Lyons I have no idea how to get in touch with you but thanks for mentioning my game!

Basics

  • Genre: Uh. Arcade action game / childhood dream achievement simulator (?)
  • Links: play it on itch or check out the code on github
  • Engine: PICO-8
  • Time Spent: 4 days (June 27th - June 30th)
  • Other Stuff: I built this game at Recurse Center, a magical place that functions like a writers retreat for programmers. Consider applying!

Gameplay Video

My favorite part was adding manual 'particle effects' by drawing individual pixels to the screen

Keep reading

Game 5: Reshape TD

A tower defense with roguelike elements

Jun 12, 2023

Basics

  • Genre: Tower defense with a vaguely roguelike choose-1-of-3 upgrade system
  • Links: play it on itch or check out the code on github
  • Engine: Godot 3.5
  • Time Spent: Uh. 15ish days? May 8th - May 13th part time, May 29th - June 11th full time 1.
  • Other Stuff: This game shamelessly rips off the UI of DesktopTD, one of my favorite games of the flash game era. Thanks for the many hours of enjoyment, DesktopTD!
1

More context than you want or need: I started making a tower defense, went on a trip and worked on it in my off hours, dropped it to make click click trick for a game jam, and then started back up on a new tower defense on June 7th (using the bones of the original TD).

Gameplay Video

I was so excited when I first combined 'many projectiles' and 'exploding projectiles'

Keep reading

Game 4: click, click, trick

A rhythmic puzzle game built for a game jam

May 23, 2023

Basics

  • Genre: Rhythmic puzzle game
  • Links: play it on itch or check out the code on github
  • Engine: Godot 3.5
  • Time Spent: May 15th - May 21st (1 week)
  • Other Stuff: The first few levels of the game are probably too hard. If you almost immediately get stuck check out “the game is too damn hard” below.

Gameplay video

No phones in sight just squares pulsing to beats

The game is about leading the little gray guy into a trap and then making it to the end of the level.

Keep reading

Game 3: Don't Send Me a Puddle (Ludum Dare 53)

A physics puzzle about taking ice down a mountain

May 5, 2023

Basics

1

Alright I did a two-hour game jam and made a relaxing drive but that doesn’t really count.

Gameplay video

If I showed any more you'd get spoiled!

Keep reading

Game 2: Sisyphus Needs a Nap

A greek myth launcher game

Apr 27, 2023

Basics

  • Genre: Launcher, almost idle. Inspired by “Learn to Fly” and some other games popular in the Flash era.
  • Links: play it on itch or check out the code on github
  • Engine: Godot 3.5
  • Time Spent: April 11-13, April 18-26 (12 days with some traveling in between)
  • Other: Sisyphus Needs a Nap got more plays on itch in a single day than platris did over its lifetime! It also made it to the top of itch’s “new and popular web games” page. Neat!

Gameplay Video

alright I cheated and started part of the way through the game but it's more fun that way.

Keep reading

Game 1: Platris

Playing tetris while platforming

Apr 21, 2023

Basics

Gameplay Video

the enemy is named doug

Keep reading

Thanks for reading!

Keep up with me on my socials 👆

Or sub to my newsletter here! 👇