One Year of Gisnep

I launched a daily game as a side project, and here’s how that’s worked out.

One Year of Gisnep

This week marks the one-year anniversary of Gisnep, the daily puzzle I made initially just because I liked the name. So I thought I’d reflect on how it’s been doing, what’s happened with it over the past year, and what I plan for the future of Gisnep.

A Quick Recap

Gisnep is a daily game in the style known as “dropquote” or “quotefall” puzzles. Solving the puzzle each day reveals a quote – sometimes profound, or funny, or odd. I added a little twist to the traditional format, making the source of the quote something that is revealed as you solve the puzzle and can provide additional clues if you figure out the source early on.

Before I even thought of making a game, I had registered the domain name on a whim without knowing what I would do with it, and then gradually developed the game over a couple months. I discarded an earlier version that I decided was a bit too tedious to play. I am not much of a programmer, so I vibe coded the game before “vibe coding” was a term. You can read the whole story of how I built it in last year’s launch announcement.

Added Features

Initially, once it was out in the world, I had a lot of bug reports that I was squashing quickly. But I also began to get a lot of feature requests. I added a “settings” widget for some of the popular requests, like hiding the timer since some people found it stressful. I also added a toggle to highlight the current word you’re at, to help people understand how words wrap to the next line.

My typical settings when I play

I also decided that when you solve the puzzle, it would be nice to learn something about the source of the quote. So after a puzzle is solved you now get a “Who is that?” link to learn more about the quote source. I hear from people that they love this, and that they learn about interesting people from those links.

The link is automatically generated to go to the top Wikipedia entry for that person’s name. It’s a bit of a gamble that it will be the right person, and sometimes it fails hilariously. Like, the link for the poet Mary Richards went instead to the entry for the fictional character Mary Richards, played by Mary Tyler Moore. I finally updated the backend to allow me to override the default link so I could fix issues like that.

I also added some little features that I don’t explicitly mention anywhere. Like, if you switch to another tab, the timer on Gisnep pauses until you come back to it. That’s one way to pause the game if you need to get up for anything. Maybe I should actually mention that somewhere.

But the number one feature request people kept asking for was the ability to play old games. That was great to hear! People really enjoyed the game and wanted more of it. Someone on reddit even dug through the source code to figure out how to hack the game and let him play future puzzles, and shared a convoluted method that other players could use, too. So I prioritized adding an archive that would keep track of which games you still hadn’t played.

Green means in-progress. Gray means completed. Black means unstarted

Last month, a new bug surfaced that only affected people who had solved every single puzzle so far. I was pleased to hear from so many people reporting the bug. That meant that a lot of people have played every single puzzle.

I Added An Easter Egg

When I added the archive, each puzzle needed a unique URL. I settled on giving each puzzle a unique number (as opposed to using the date), and formatted the links like this example: https://gisnep.com/?game=338.

But then I thought of that guy on reddit who figured out how to play future puzzles. Surely, this would make it even easier for people to do that. They’d just keep increasing the number to play all the upcoming games. I needed to defend against that. I could just have a 404 page saying that no such page exists when people try to play future games, but I thought it would be more fun to have a surprise for someone who tries to play a game that hasn’t been released yet.

So I made a special game that only appears if you attempt to play an unreleased puzzle. I don’t keep a log of whether or not that game has been played, so I only know of one person for sure who has found it.

And now I guess you can find it, too. I know, it’s a bit of a spoiler to tell you about it, but it’s actually not the only Gisnep easter egg so I haven’t ruined every surprise. Shhhh.

I Tried Ads But Hated Them

When I added the archive, I planned to put ads on the game. I figured that the current day’s game would always be ad-free, but games from the archive would have ads. That seemed like a fair way to monetize.

I implemented it for private testing, and I hated it. Ads are just so ugly. I couldn’t stand to have them on the site, even if just in the archives, and even if just at the bottom of the page.

One placement of ads that I experimented with

I imagine that in order to make really good money on ads, you need to have significantly more visitors than I have, and probably more obnoxiously placed ads, and it didn’t seem worthwhile to ruin the experience for everyone in order to make a couple bucks. So I never rolled that out.

I have always had a tiny link on the bottom of each page that says “Leave a tip” and a surprising number of people actually do. I could imagine that if people saw me monetizing already with ads, they would be less inclined to make a donation. Since I don’t think I would have made that much money with ads, not having them has probably been the more lucrative choice anyway – and a much better user experience.

Some Numbers

So how many people actually play Gisnep? Not as many as I’d like.

On the busiest day, 3,544 people played Gisnep. That was just a few weeks after launch, when Tom Scott mentioned Gisnep in his newsletter. I’ve had a couple similar peaks, but more typically I have 1,300 to 1,500 daily visitors.

One year of traffic

But that’s nothing to turn up my nose at. About 1,400 people return to Gisnep every day to play. And that number of regular players has remained fairly steady with just a little bit of gradual drop-off as you can see in the chart above. Overall, I think it’s pretty good.

And on average, 50% of visitors play 2 games per visit, so the archive is definitely getting used. That’s just an average, of course. I can see from my logs that some people are playing a lot of games per visit and spending a lot of time on the site, and some people just play today’s game and leave.

But is this enough to call Gisnep a success? I mean, if it didn’t require any upkeep and was completely set-and-forget, I’d be happy with even one visitor per day. But for the (admittedly small) amount of work it requires to maintain, I wish more people were playing it.

Some people post their daily scores on social media, and for a while there was someone playing every day on TikTok. But those people don’t have large audiences themselves, so they haven’t translated into very many new players. Growth hasn’t been viral, but people who play it seem to enjoy it enough that I have a lot of regulars. I’m running out of ideas for how to spread the word further without spending money on advertising. I’m open to suggestions.

The Mobile Issue

One thing I know would likely increase players is if it was easier to play on mobile, like other popular daily games. Right now, it’s functional on mobile, and people play it that way, but it’s not the best experience. Still, mobile users make up about 40% of the daily visits – and that percentage is a bit higher during the weekend – so I wish it were better for them.

The problem is that when I designed the game, I decided that 20 boxes across is the optimum number for gameplay. But that means they’re small little squares on mobile, hard to read or target with your finger on a phone.

I could do fewer squares across on mobile so that they can be bigger, but then the quote has to be really short so it doesn’t wrap on too many lines. And at that point, it’s a bit too easy to solve.

I considered making a “Gisnep Mini” version just for mobile. But it seemed like it would be too easy and it wouldn’t be fun – plus then I’d need to come up with twice as many puzzles each day. And when someone completes the Mini version on mobile, they still might want to play the harder version on mobile as a follow-up anyway. So I’ve resigned myself to this just being a game that’s better on desktop but still playable on mobile. For now, anyway.

I added some extra functionality in the mobile version to hopefully make it a little more playable. I have no idea whether people on mobile use this feature.

The Upkeep Challenge

I mentioned above that Gisnep still requires a little upkeep. That’s mainly in two areas:

First, the game has a different tagline every day. I thought this would give the game a bit of personality, but wow is it hard coming up with original taglines for every day that aren’t extremely lame. I use ChatGPT to help, but discard most of its suggestions.

The taglines are mostly selected randomly but I do sometimes peg specific taglines to specific days. Sometimes the connection is obvious (a joke about a movie coming out that week, or a holiday, or other notable event), but sometimes it’s more obscure and written just to amuse myself.

Every few months, I come up with a new batch of taglines for the next few months, manually edit the json, and upload to the server via FTP. It’s not the worst thing in the world as far as upkeep goes, but it’s a bit of mental overhead to even remember to do it.

If I ever run out of taglines, it’s currently programmed to just reuse them from the beginning. Would anyone even notice? Each time I add more, I wonder if it’s worth it or if I should just have one persistent tagline, or no tagline at all.

Or maybe I should lean into it even more, and make taglines connected to current events more often.

Actually, hang on a second... [vibe-coding]. Okay, I just built a web interface for myself to manage the taglines. It’s hopefully going to be less friction than manually editing a json and uploading it via FTP, and encourage me to write more timely taglines more often. We’ll see.

I can’t believe that I vibe-coded this in an hour, maybe a little longer with testing and troubleshooting. It’s not the prettiest thing ever, but it doesn’t have to be. It’s fully functional and also let’s me edit the “regular” taglines list, reorder them, and so on. And most importantly, if I type a word with a straight apostrophe, it converts it to curly. Never forget to include that in your interfaces.

The other bit of upkeep is the puzzles themselves. I can’t just pull random quotes from a quote database. They have to meet certain criteria for Gisnep: not too short; not too long; no more than once sentence; and they have to make sense without punctuation.

I’ve got some scripts that go through various free databases and pull quotes that meet those qualifications. Then I have to go through and remove the ones that are problematic (a surprising number of quotes in public databases are homophobic statements from politicians). And then I have to check for spelling issues, etc.

I do this in much larger batches than the taglines, so I actually don’t need to touch the quote database for another year or so, although I do add new ones occasionally when I think of them, or when people send me good quote suggestions.

And just like the taglines, I have the ability to schedule certain quotes for certain days, which I sometimes do, although I don’t know if people notice.

Amusingly, I sometimes get accused of scheduling certain quotes to reflect current events that were actually just coincidentally relevant.

The Future of Gisnep

As long as I still have a huge batch of upcoming quotes in the database, I see no reason not to keep Gisnep going. It would work fine without touching it for the next six months, but I have a couple more years’ worth of quotes ready to add to the database. If I gave up on anything, it would be taglines. I’d probably just turn taglines off completely if I didn’t want to maintain them anymore.

There’s also the question of the moose at the top of the game. His name is Mickey Moose. I never meant there to be a permanent moose. I have no idea if people like or hate the moose. I suspect most people are indifferent. I’ll probably keep him around for now.

The worst thing that could happen is if a new bug pops up that breaks functionality. Since launching Gisnep, I’ve started a new full time gig (I’ll tell you more about that some other time) so my available time to troubleshoot or add new features is less than it used to be.

What I really need is for some big famous celebrity like Sydney Sweeney Ryan Reynolds to post all over social media how much they love playing Gisnep. Then maybe I can reach the critical mass of players required to sell Gisnep to the New York Times for a bajillion dollars.

So if you’ve enjoyed playing Gisnep this year, the best gift you could give is to tell a friend. Or Ryan Reynolds. Or your friend Ryan Reynolds.

And that brings us to the end of another newsletter! It was a bit more naval-gazing than usual, but hopefully you found it interesting. If you didn’t, and somehow made it this far, then I’m surprised but also thankful.

Oh, one other small thing about Gisnep. I’ve seen occasional conversations where people wonder how it’s pronounced. Hard G or Soft G? I can’t believe I’ve accidentally made a product with a GIF-like debate. One thing I know from the GIF discussion is that it doesn’t matter what the creator intends, people will do whatever they want and swear it’s correct. But for the record, I say Gisnep with a hard G. And GIF with a soft G like the creator intended.

Thanks as always for reading. See you next time!

David