Rastegar · a playground on the internet

Built by hand,
one project at a time

Games, quizzes and one stubborn iOS app.

I am Paj. This is my corner of the internet — the place where the things I make end up.

Right now that means three things. Games you can play right here in the browser, no download and no account. A devlog about TAG, an iOS app I am building so my friends and I can play a month-long game of tag without arguing about who tagged whom. And an anime shelf, because the Big 3 and Dragon Ball are the reason half the stuff on this site looks the way it does.

Nothing here is a product. It is a workshop with the door left open.

The shelf

Everything here runs in this browser


No installs, no accounts, no ads. Pick one and go.

All games
The devlog

I am building an app so my friends can play tag for a month

It is called TAG. GPS decides who caught whom, the rules live in the database, and whoever is it when August ends carries it for a year.

The beta is open. You need the TestFlight app, the link, and a gang to join — and the invite mail lands in spam more often than not.

Latest entry

A notification got through

I bought the developer account, and within a day the app was signed onto a real phone, push was arriving for real, and version 1.0.0 was sitting in App Store Connect. Also: the most unhelpful error message I have ever been handed.

Read it

TAG — where the app is right now

It is out, and people are playing it. TAG is on TestFlight, the external beta passed Apple's review in a matter of hours, and the link is public: join the beta. You need the TestFlight app, that link, an invite code from a gang, and Always on the location question. The invite mail from Apple has a habit of landing in spam.

Five testers on the first build, thirty-one sessions between them before I had finished writing this. It is a real game now rather than a thing that compiles.

Build 2 went out to everyone today and took five new things with it: the whole gang on the home screen, protests after the fact, a location requirement you cannot quietly opt out of, anonymous tips to whoever is it, and a gang chat. Apple let it through without another review, since it stays inside what was already approved.

The week's other work was less fun and more important. I went through the database asking not what the rules allow, but what a modified app could do around them. Four holes, all the same shape: a table where the permissions were wider than any rule justified. One of them let a gamemaster rewrite the history of who caught whom. All four are shut, and a test now fails if any table is ever given a write permission without a policy to justify it.

Migrations 1 to 36 in production. 74 unit tests, 538 database assertions, and four interface tests that play the real game against the real backend.

Next: screenshots, review notes, and the App Store itself.

Every entry