Hacker News new | past | comments | ask | show | jobs | submit login
The secret inside One Million Checkboxes (eieio.games)
2365 points by todsacerdoti 3 months ago | hide | past | favorite | 218 comments



author here :)

this is my favorite story from running the site, and possibly the best story I've ever been a part of. I'm not a big crier but I have cried so many times thinking and trying to write about it over the past 2 months. And of course, the process of discovery (and going from panic to excitement) was pretty crazy too.

One of my favorite things about this is that it validated one of the core beliefs I have when making these things - that you need constraints for the small group of people that are jerks, but that for the most part those constraints are fodder for the largely-good and very creative folks that play around on the internet.

Happy to answer any questions folks have!


I had a massive "discussion" (argument) with a friend the other day, they were convinced that the internet is just a place full of trolling and nasty commentary and social media was the thing likely to ruin things for our children. My position was that if you spend your life looking at X, Facebook or whatever then, sure, it can seem a bit of a hellish landscape, but the Internet is and can be so much more than that.

This article is perhaps one of the finest examples of this and I applaud you massively for writing the site, looking at how people used it and then taking the time to share the experience.

It's made me really happy reading it and I'll be sharing it lots. A wonderful experiment, well played and much respect. :)


While you're right that the Internet contains a lot of wonder and exploration, the vast majority of people (and kids) will not interact much with that part of the Internet, if at all. Additionally, social media platforms have collapsed what would have been standalone, somewhat magical experiences into their own uniform platforms. I've heard someone say that kids today tend to think in terms of "apps" and not "websites", because rather than having everything scattered across a lot of small, independently maintained, websites, there are instead a few web apps that contain 99% of what you want to get at.

That means that if you really want to "surf" the web these days you have to dig deep and avoid getting sucked into a social media platform. And when you do dig deep there's not that much out there, because the people who would be maintaining their own web page now just have a facebook page for their business and a twitter account for their personal posts.


I was about to comment something similar but you said it so well - this is the internet at it's best, bringing people together to have fun in interesting ways. I remember when it was all like this, but you can still stumble across little moments like this


Thank you. I enjoyed the sense of play and this story more than anything I have read about the internet in a long time.

I am def burned out, and need to come up with something frivolous. I am reminded of Richard Feynman´s story of spending 10 years depressed after the war, and him finding joy of the physics in a spinning disk one day at lunch, so he could disregard what he had done before.


Speaking from experience: hang in there. It may seem irrecuperable. It may take a long time, but you will recover.

Best of luck to you.


I loved this. It's really.. endearing and adorable? And it's what I wish the internet was used for more.

Thanks for the writeup!


Fantastic telling of it in both text and video form. Great to celebrate these people doing the kinds of things we learned so much from! Thanks for sharing.


Thanks for the great writeups, this one, the one about scaling, and your work in general. It's been very inspiring.

Also, you're absolutely right about largely good and creative people.

I built a OMCB clone because the concept possessed me; i threw it online, a day later, okay a couple of dicks, whatever. Holy shit someone put a huge Hokusai's The Great Wave in there! (My version uses a fixed width/height, a big scrollable canvas, so that was easy to spot)

Seeing that felt so good, so joyful :)


Perhaps you have said this elsewhere, but why shut the site down?


A few reasons!

  * More than anything, I think it's good for things to end! I figured interest in the site would die off over time (and it started to), and I thought it was better to close things out providing a special experience for the people that used it than to keep it up to get a few more users
  * Costs started adding up; donations stopped matching them. I coulda figured out how to lower my costs but I wasn't excited about it.
  * While the site was up I felt an obligation to make sure someone hadn't found some trivial workaround to deface the thing and I didn't want to do that anymore.
I'm very pro ephemeral stuff! So I feel good about the decision. But it's a good question.


"More than anything, I think it's good for things to end"

You know who else said this (in spirit)? Bill Watterson, author of Calvin and Hobbes.

There are few other people I'd be proud to be in the company of :-).


also R.E.M.


I enthusiastically agree - and really all that matters is that you feel good about it. As a software engineer who's built (and shut down) many projects, I have always been envious of art forms in which the artist gets to create a piece of work and then "finish" it. We are often at the mercy of perpetual maintenance.

Well done and nice execution.


I don't think I've ever officially shut anything down. Endings are too sad for me.


Just because you've never officially shut anything down, things have still ended. May as well throw a party.


My parents put it as “it’s best to quit while you’re having fun”. Took me years to appreciate it. I’ve passed it on to my kids. They’re finally starting to get it.


I wish they did that with The Simpsons lol


Your story brought a huge smile to my face. Thank you for sharing, those kids are alright.


Would you be willing to open source the backend code for this? Would love to take a look!


This is not what you're looking for, but I built something quite like OMCB to satisfy my curiosity: https://github.com/jarombouts/yougottaclick


This sounds like a perfect recipe for an episode of the Corecursive Podcast!


The messages used the fact that 1,000,000 = 1000 x 1000. But of course 1,000,000 has many other factorizations. Were there messages in any of those?

I guess next time you pick a prime (or a semiprime) if you want to make it harder (or easier) for people to guess a good shape!


The Discord URL message that eieio found could be found without relying on 1000x1000, imagery. The other pictures did described in the article did, though.

As for your question, the answer is yes. Bear in mind that the question you're asking is essentially the same as "if you resize your browser window so you can see a specific number of checkboxes per row, are there any drawings you can see?". And people definitely did draw stuff in widths other than 1000! It was just at a vastly smaller scale and done manually.

That said, I do want to try analyzing any available data to see what I can find, for sure.


That resonates with playing call of duty demo or something like that, free game and only one multiplayer map it was abused for loopholes and bugs because of lots of jerks in a small place and you know every pixel of the game.


Hi! I missed the site but I have enjoyed reading about it after. As much as I enjoyed the last article, I enjoyed this one even more.

Thank you for both the site and the articles.


Great and very emotional (at least for me) story. Thanks for sharing.

It's always nice to hear that internet is still fun for ppl


Never heard of the site til now. How did people start finding about it?


I remember it from a HN thread two months ago: https://news.ycombinator.com/item?id=40800869

I'm spending too much time here.


This was really sweet to read. Thanks for sharing.


If you can believe it I found a hack in the early days of PayPal and I was able to buy anything for 1 penny when I was like 15. I just tested it in a couple of e-shops (that was the name back then) and it worked, but I cancelled the order just after checkout just to make sure I was not in the blame for anything coming home that was not expected by the family. Also I was scared of the FBI haha. The only thing I exploited this bug for was to buy all the computer e-books from one of the first publishers. I absolutely devoured the UNIX and x11 ones.


Excellent writeup! I'm curious, why did this scenario make you cry?


I'd guess tears of joy!


I don’t know. Reading this made me tear up a bit. I learned software engineering when I was in junior high school. I learned it because I sucked at math, and I want to write programs that solve my homework. Then I continue writing LAN chat, HTTP server, Anti Virus, and a lot more things just because it was fun to do.

It was fun, it was challenging, it was rewarding, it was amazing.

Now that I’m working, with the endless stream of new technologies, the debates of X considered harmful, J is better than K, and a barrage of never ending new things. It started to numb my mind.

Somehow, those joyful feeling of engineering no longer feels like the blue sky. I think its still blue, but for an eye washed in silvers, everything looks gray.

Reading this story somehow light up that childhood feeling of me learning software engineering. It can still be fun. I can still write things for the sake of me and not for the sake of exit nor a new shiny SaaS.

Thank your for writing this. It gave me a ray of hope that it can still be fun.


> Somehow, those joyful feeling of engineering no longer feels like the blue sky. I think its still blue, but for an eye washed in silvers, everything looks gray.

Beautifully said. I'm glad to hear that you feel hope for rekindling this feeling. It sounds like you've already figured this out, but I want to highlight that this a symptom of burnout, and that people who resonate with this should take it seriously.

I remember once I was helping someone at work who was learning Python. They were having trouble understanding how binary file types worked. When it clicked for them, they were so delighted.

I realized I hadn't felt that way in years. It wasn't long after that I realized I was too burned out to stay in my position, and needed to take some time to work on my mental health.


I'm not sure it is burn out for me. I think part of it is it feels less special. Maybe that's selfish or delusional on my part. Basically, I used to feel like I was doing something at least somewhat unique. Now, via Youtube and Github, I see that everyone is doing the same thing and repeating the same stuff so I end up with a "why should I do it if it's already been done" feeling.

It's similar to blogs. I ran blog since 26 years ago. Before Facebook, posting and sharing on the net felt special. After Facebook, everyone was posting so blogging was no longer special.

I get that doing it for the fun of the doing itself is a thing. Cooking might be the perfect example. Yet I have a similar problem there. More often than not I learn that a recipe is too much work and it's just better for me to enjoy and appreciate that someone else is willing to make it professionally, and better. One motivation is dishes I can't find at local restaurants. But I still often come to the same conclusion. That it's too much work and I should just wait and really enjoy the dish the next time I'm in a place where it's possible to get it.


I've been burned by that "why should I do it if it's already been done" feeling. I'm still grappling that but the thing that helps me is a quote from Brian Eno where he basically says "f--- originality". Don't try to be original, just do the thing and it will be unique because it's you who did it.


Thank you. Now that you mentioned it. Maybe it was a burnout.

If you don't mind sharing, what did you do to improve your mental health?


Let me disclaim that this is a work in progress and that I am not a doctor.

Part of it was that I had a breakdown. That was unpleasant. But ultimately it was part of the process. (Not to say this is necessarily true of everyone!) This forced me to quit my job. I have a one track mind, so I couldn't really do the work on myself I needed while I was working. I hope this isn't necessary for you or anyone else though.

When I was breaking down, I lashed out at the people in my life. I made things very hard for them. But they forgave me and supported me. Sometimes I have a mad instinct to smash everything and start over. But they didn't let me push them away.

Reading the Zhuangzi helped me to conceptualize why I allowed myself to be burned out and didn't do anything about it until I was a wreck. In particular, there's a refrain about people who are useful being ground down by being put to use. I realized that I invested my identity in being useful to others, and my team especially, because I didn't respect myself enough to be useless. I didn't value myself outside of being valuable to others. That attitude will inevitably burn you out.

Studying Zen and Taoism and meditating has helped a lot. Partly it's just a very different perspective from what I'm normally exposed to, so it broadens my horizons and helps me take things less seriously. The Zen notion of "practicing" with a problem is a perspective I find really valuable.

I started therapy and I started taking an antidepressant. This was a mixed bag, my therapist ended up moving away and I think I need to change my medication, but I think it was an important step. Something I struggled with was that I didn't understand the mechanism of action behind therapy and I didn't really see any benefit in any particular session. But I've also had to accept that I just don't understand what I need in my life, I think I do but I'm constantly proven wrong, so not being able to see why something is helping doesn't actually mean it isn't.

Similarly, my medication doesn't seem to do anything. But there have been a few times I've had a really hard day, and then when I'm taking my meds in the evening, I realize I had forgotten yesterday. I also think the lows haven't been as low.

About a year and a half after my breakdown, I had a profound spiritual experience I'm not entirely comfortable discussing, you might call it a breakthrough. None of these things caused it. But I think they were all preconditions. I'm not "fixed," and in the intervening time I've had depressive episodes and panic attacks on occasion. But I was "fixed" for ten glorious days, and it proved to me that, regardless of whether such a thing can be permanent, it is possible.


Thanks for posting this. It's helpful to read about how others deal with burnout.

Your post reminded me this quote is from a book written in Turkish by a psychologist that had a profound impact on me related to this topic:

"Every rise and ascent to a higher level represents the death of our lower personality at the level we leave behind. Then, we can gently return to that level and whisper to the ear of the actor playing that role with love, understanding, and affection, 'Yes, you are me, but I am not just you!' This way, we can end the dominion of that role in our lives. We both free it from an existence it actually hates and offer ourselves an opportunity for growth! The biggest obstacle in abandoning the role, that is, the lower personality, is not knowing the existence of a higher level - the fear that if the role goes away, we will fall into a void."


Thank you for taking your time to write this, it gives me a valuable insight. Wishing all the best for you, me, and others out there who're struggling.


<3


I just wanted to thank you for sharing your experience in such details. Wishing you all the best on your path to recovery and beyond.


I have similar feelings these days, but I don't think it's burnout for me. I still love programming and making cool stuff.

I think it's just natural cynicsm when you see what the industry does. Making you cross moral boundaries to keep a job, the realization that the best workers may not be guaranteed job security, that there so much cool tech but you may mostly be stuck with CRUD work for business, etc.

I'll still keep at it as I still have much to learn. But reality can be more disappointing than the dream.


At the time I was lost joy of coding too but I was able to found it again.

One key point was to ignore learning new tech if it was not absolutely necessary and focus just creating new things. I think it all started from Sebastian Lague's video which reminded how beautiful coding can be.

[https://youtu.be/X-iSQQgOd1A?si=aqriiWmcqqphOiuI]


He is a Savant.


Same! It reminded me of a story about the latest Phrack issue called "Calling All Hackers" [1] and made me hopeful that indeed the hacker spirit is still present in the younger generation and will always be, as long as we older folks encourage it instead of trying to hammer it down. Makes me remember the times I was a teen and I was writing code because I wanted to, not because I needed to. Sometimes I used these skills for good, other times for stupid crap like hacking the "competition" and I'm ashamed of this, but all in all this experience made me who I am today and I'm grateful that I had it. And I'm happy the next generation is still finding joy in coding.

[1] https://news.ycombinator.com/item?id=41306128


Thank you for this.


> think its still blue, but for an eye washed in silvers, everything looks gray.

This is a lovely phrase. Is it an idiom or your own creation?


Thank you. I wrote it as I was inspired by the Silverwash from Witch Hat Atelier, a disease that causes the eye to see grayscale. Its also because silver is a symbol of money, and as an adult; the responsibility to provide for our family, pay here and there, taxes, tuitions, mortgage, etc - can make life feels bleak.


Ah, nice. I initially interpreted silver as age (grey hair) but that made me intrigued: age can make you jaded but can also give perspective to appreciate the good.

It works on different levels, I guess. =)


I interpreted it to mean "many shiny new tools" so that any project just feels like "nothing special" any longer, queueing up with all the other shiny tools.


There is a similar quote from Bojack Horseman „You know, it's funny; when you look at someone through rose-colored glasses, all the red flags just look like flags.“

Not really relevant. But the quote reminded me of the show.


Sometimes it's good to just step away and do something random. Do Advent of Code but non-competitively, just make it work in a random language without following best practices. Pick up pico-8 and write a crappy game or script with two-lettered variables because you don't have the space or arsedness for longDescriptiveVariableNames. Play games like TIS-100 or Shenzen I/O, making sure to print out the manuals and put them in the oldest folder you can find, and / or spill coffee on it.


That's because we can't grow. You want your easy-to-use distilled library? Too bad, here convoluted hallucinated framework and it's an industry and community standard. Or you can get nothing, ha-ha. Going off the "grid" returns you there in no time.

I've found a personal set of tech that is bearable and static and am building up the swiss army tool kit that is either easy to use, or at least I am familiar with and can steer. It's just for me, no link available. My personal garden of programming. The downside is I can't interact with the "industry" that much, which I considered harmful anyway.


What a beautiful sentence "for an eye washed in silvers, everything looks gray"..


“I program like we programmed 15 years ago” told me once my friend and engineer which I consider one of the best graphics programmers around: his projects are fast, beautiful and innovative.


This is, I think, how I felt writing Go. Not necessarily 15 years ago as I was doing Java then, but an "older" but simpler and more straightforward style of programming.

Want to create a database connection? Write "database.connect(host, username, password"). Want to inject a dependency? Just set it in a struct in your main method. Want to create a production build? "go build *.go". Put it in a makefile if you want.

Versus the modern approach, writing YAML to instruct your cloud service to set up a database, docker images that get env vars from somewhere magic, XML or magic auto-injection or however backend works nowadays, typechecking and transpiling, etc.


Writing code for the joy of it, those were the days


I’m 62, and write code every day. For free, and I still regularly release apps. Most of my work (not all) is open-source.

I love it.

The secret is that I no longer work for people that destroy my work, treat me badly, or force me to do it in a way that destroys creativity, Quality, and velocity.

Being “frozen out” of the tech industry was painful, but it resulted in the first truly happy work I’ve ever done. I’m doing what I dreamed of doing, back then. Out of necessity, I have a much-reduced scope, but I still get a lot done.

However, all those decades of shipping software, on someone else’s dime, made it possible for me to do things the way that I do it now. It gave me the ability to pay the bills, and the Discipline and habit, to write (and ship) good software.


Yeah, the side of programming I love is when I write code for free, or contribute to open source projects.

> The secret is that I no longer work for people that destroy my work, treat me badly, or force me to do it in a way that destroys creativity, Quality, and velocity.

You are right.


I’m in my 40s and I still do this all of the time. Computers can still be your hobby and not just your job.


This is why I've never taken a coding job despite having played with code since I was a toddler (I'm 36 now). To me, coding is a creative endeavor and I just cannot do creative things for pay/on a deadline. It's the same reason I prefer not to write fiction for money.


Every time I want to have that good old feeling, I create three files in a new directory on my home server: index.php, index.css, index.js :)

I would have done everything in Perl for maximum creativeness but didn't have the time to bring myself up to date with the current version.


I feel like we have an entire generation of engineers lost in the SaaSification, over-abstraction, over-branding of everything.

I think we need to give junior engineers permission to not care about "whats becoming an industry standard" and "HN front page frameworks/vendors/tooling/etc". It's okay to stop caring about whether or not what you ship is perfectly engineered; the state of the art isn't close to perfect either when you get into the guts of it.

For ongoing skill development, spend more time reading books, manuals, and research papers. Spend less time following software thought leaders on YouTube and X, less time chasing the shiny new thing on the HN frontpage.

Just build. Roll up your sleeves. Find the flow. And just build.

(Note: this is really bad advice if your goal is to learn how to LARP as a senior engineer, land a comfy job at FAANG, go on the conference circuit, and build an audience on social)


From time to time I write code just for the heck of it. That endless debate on how you could've done this better with x instead of y don't happen in a personal project. Unless you're a jerk to yourself (like I sometimes am)


(while reading the article..) In the beginning I was like a slow "whoooooaaaah" (mouth 20% open). Then as I scrolled down more and more the 20% became 80%.

A m a z i n g !!!!

So we _can_ have good things! And (most) people _are_ nice and cool and fun!


Hear hear!

>It was fun, it was challenging, it was rewarding, it was amazing.

This cannot be overstated


You comment deserves at least two upvotes.


This part is so important:

> The adults in my life were largely not mad at me. They asked me to knock it off, but also made me a t-shirt. I don’t think I’d be doing what I do now without the encouragement that I received then.

Teena need a place to be moderately mischievous, with semi-real social outcomes, but also some boundaries and help to not take it too far.

And adults who aren’t authorities over them except insofar that they have cool talents the kids want to learn.


Back in 1999 while I was in high school, I played a goofy harmless prank on one of the school computers.

I created a 2-page slideshow presentation. Both of them had the same black background with grey text that appeared to be a DOS session indicating that Windows was deleted, except one had an underscore at the prompt. By telling the program to automatically advance the slides every second, and to loop the presentation, it gave the impression of a blinking cursor. It looked like a broken computer, but simply pressing Escape would get out of it.

Of course, it's worth mentioning that these were Macs, so they didn't even have DOS or Windows.

Anyways, a teacher saw it and thought I had hacked/broken the computer and sent me to the principal that didn't think it was funny and punished me by making me spend the second half of my lunch period with the school IT guy for the next 2 weeks so I could shadow him and see how much vandalism he has to deal with.

When I saw him the first time, he was like "Wait, what did you do?" and I recreated it. He thought it was funny as hell and thought it was ridiculous for them to act like I broke a computer.

We had a lot of fun hanging out. Even after my punishment was over, I still frequently went to his office to chat or walk around and fix computers.


I love that story, and that's actually such a fantastic punishment IMO (even if it was a bit unwarranted).

I did some similar harmless "hacking" in my high school that accidentally ended up crashing a major switch causing the whole schools network to die for the day. I told my programming class teacher right away, but unfortunately in my case the superintendent decided to press charges.

In the end all it taught me was to never never trust anyone, not exactly the best lesson for an already introverted teen to internalize...


Yeah, pretty sure I would have simply been suspended for pulling off the GP's prank. Maybe even expelled, but then parents would talk it down. Your event would definitely have me gone. Sorry your experience was like that.


Heh. I made a Visual Basic 6 program that showed a static screenshot of the desktop. I did this because I only got a few hours in the evening to use the family computer, but if i ever got up to use the bathroom my dad would "play one game of bejeweled real quick" that would sometimes end up taking the entire evening.

When I tried using it, he lost his fucking shit and went berserk.

At least it taught me how to be a better parent


Yes! That IT guy got you. So many of us, myself included, can trace our love of computing and free spirits to people like your IT guy.

Remember kids. It will be your turn to free a young soul one day, and you should give same as you once received.

And having already a turn or two myself, I can report it feels great!


Yes, I had a similar experience in high school. I ended up modifying a virus that infected a bunch of computers and causing problems, so I got kicked out the lab until the next year (but this was late September, so no biggie.)

The next year I mentioned to the teacher that I had something I wanted to play with, can I please get access to a PC (the lab computers were Acorns), and so he gave me after school access to the accounting classroom, more storage on the network drive (50MB when everyone else had 5!), and basically free reign if I didn't break things. So I didn't, and was running Tierra on piles of machines overnight, just to see it doing cool things, and getting in in the morning to save everything and reboot them. It certainly set me up well for the future.

And didn't break things, because I didn't want to kill the golden goose!


Our high-school had an intro to programming class which taught folks how to use VB6 in a computer lab. It was exceptionally self-driven and gave me a lot of rope to do whatever I wanted.

The PCs in the lab were very slow, and a known prank (taught to everybody at some point by virtue of being a victim) was to hold Win+E, spawning hundreds of Explorer windows and bringing the PC to its knees. Sometimes you could wait it out, but a stealthy pranker could hold it so long a restart was required.

Well, I created a little VB6 programme named "DoraTheExplorer.exe" which would do exactly that when you clicked on it. I put that on the schools shared drive (where you could sometimes find portable executables of the original Halo game until the admin found and deleted it).

My prank was successful for a short while until, however, it became quickly evaded by folks just hitting Alt+F4 quickly and exiting the Dora Programme.

I then discovered you could get the programme to launch another instance of itself on exit, but this was also countered by spamming Alt+F4 rapidly.

Finally, I hit my magnum opus. A hydra. Everytime you'd close dora.exe, it'd open two more. It was an ICBM in the Explorer prank wars and defeat was declared.

The admin knew about this the whole time, and they were generally chill. They made it clear that if anyone lost work or if it caused harm, then I'd be held responsible. But that never happened because everyone knew what dora.exe did, I was too proud not to tell folks :P People only clicked on dora.exe for the dumb pleasure of crashing their PCs and trying to see if they could evade it.

Very grateful for that class and the generally chill environment I was in.


I did almost exactly the same thing at my school (brought down the system with a VB6 script that wrote infinite text files to networked storage). They sent my mum a letter accusing me of terrorism.

At the time I thought I was pretty ridiculous and unfair (lucky my mum agreed), but now looking back with adult eyes I also see it as an almost criminal level of disregard for the job of raising children. Just absolutely irredeemably small-minded, truly pathetic, it makes me so angry to think that there are still young people growing up in that environment and being taught by those people.


People are afraid of what they don't understand - Someone, at one point

The adults in that situation didn't understand the full (or rather, how small) scope of what happened, so for them it looks wildly different than to you or me. To them, computers are black boxes that are not to fuck with, and the ones who do, are only out after destruction and ruining things. That's why they react like they do.

Not to excuse the behavior, they should of course have talked with people who understand what happened before trying to address it, but lack of resources, knowledgeable people and understanding often leads to being able to.

Similarly, I at one point (before I'd consider myself a programmer) worked as a customer support agent contracted out to a popular fruit technology company, saw efficiencies in how things were done manually and hacked together a browser extension. At first just me and my colleague next to me was using it. Eventually, it spread and eventually management found out.

Instead of trying to elevate the processes and seeing that things could be better, they decided to eventually get rid of me, too risky they said.


I wasn't screwing around with the network in high school, but got called in to the principal's office to answer some uncomfortable questions because (and I swear on my life I am not making this up) I knew how to change the desktop background on my account. This apparently made them suspicious of me. Simpler times, I know.

It was an early lesson in the fact that there are a lot of people doing IT in schools who, frankly, suck at their job. Most of the good IT people are getting paid way more elsewhere. The crappy ones are working in an environment where easily 1 in 50 of the students know more than they do and some of them feel threatened and lash out when someone is outing them for being lousy at their job, intentionally or otherwise. Like you did (disk quotas much?). Like they suspected me of.

Fixing the structural problem would require paying IT people in schools a rate that more closely matches what they'd make in industry. Fixing the social problem would require hiring people who understand what you and the author figured out: that nurturing people and directing their impulses productively yields better long-term outcomes for everyone.


Yup, absolute insanity. My good friend was expelled because he used "net send" while our teacher was giving a presentation. Wasn't even anything vulgar.


The first time I heard a Chuck Norris joke was via "net send" in a high school computer lab.


This is very sweet, and I'm sure I'd have responded infinitely better to this than what I received growing up..


> The typical ways that folks - especially folks who don’t program - bump into bots are things like ticket scalping and restaurant reservation bots. Bots that feel selfish and unfair and antisocial.

This reminded me of how a ski resort, Palisades Tahoe, implemented free but scarce parking reservations for weekend parking last winter. Since it's one of the most popular ski destinations from the Bay Area, you can imagine that bots were written. Every time new spots would "drop" (become available for the following weekend) I think on Tuesdays and Fridays or something like that, they'd be gone in seconds. Clearly bots! So naturally I had no choice but to write one. It just alerted me (via Pushover) when cancelations would lead to open slots, it didn't actually reserve spots on its own, but that was good enough to get the job done for me and my crew.

Several Reddit threads had non-bot-writers discussing that bots must be slurping everything up. I felt so antisocial, but really had no choice.


It's a shame because the solution is very simple. You have a period of time where people can register interest which is long enough that everyone can do it at their leisure. After this window closes you draw lots. Whoever wins the lottery gets the opportunity to buy (eg by receiving an email with a magic link). If they don't, you draw another person and offer it to them.

Otherwise you have an "auction" where instead of giving the resource to the people willing to pay the most, you give it to the people with the best programming skills (who then turn around and flip it to the people willing to pay the most). Which is pretty unfair, since programming is a specialty, and since presumably we're in a context where giving it to the people who pay the most isn't considered acceptable (or we would just hold an auction).

I believe this is used in parts of the sneaker/fashion industry.


That's good if there's something to buy, but in my scenario it's free. The resort's goal isn't to charge for this parking, it's to ensure that the number of vehicles on the roads leading to their parking lot doesn't exceed the number of parking spaces. So if they have N parking spaces, they allow N reservations to be made, but people are cautiously greedy and make a reservation (when the opportunity begins on the prior Tuesday) before they even know that they're planning to ski that weekend, leading to near-immediate depletion. If the weather isn't looking great, they'll eventually cancel their reservation (lest they get on the resort's no-show shit-list, which ultimately leads to the resort refusing your business -- you must cancel or be found to have parked) and those cancellations are what the bot alerts on.

How would a lottery work for this situation? Everyone thinking of maybe skiing signs up on Monday, then on Tuesday an email is sent to N people saying "you won the parking lottery," then someone canceling last-minute (to avoid the no-show penalty) causes another "you won" email to go out randomly to the wait list? What if the person on the wait list doesn't see that they've won at the last minute, do they get a penalty for not having proactively removed themselves from the wait list upon deciding to ignore email the rest of the week? I guess this could work, but it's pretty dicey...


It works the same, the price is just $0. I'm sure I'm missing nuances since I don't know this resort's business, but here's what I'd propose.

You let people register interest by Monday (potentially weeks in advance). You draw N lots on Tuesday. People get an email, they have the option to reserve a space and 24 hours to exercise it. M people do so. On Wednesday you draw N - M lots. You keep going until either you've assigned all the spaces or you've run out of time.

People will still exercise a greedy strategy, and they might cancel their interest ahead of time, but if the lottery hasn't started that's a free operation. If they click the link and indicate they aren't interested any longer, we can offer the spot to someone else immediately. If they never click the link, then it gets bumped to Wednesday. Hopefully that's tolerable.

How far you may register in advance and how long you have to exercise your option are variables that you can tune. If you're getting overwhelmed and failing to assign spaces, you reduce one or the other.

Last minute cancellations or spots that people repeatedly failed to click the link for, need to be assigned ASAP to avoid a dead weight loss; for these, you can fail back to the old system. Maybe you email everyone who hadn't gotten a space, and the first to click the link wins. If that were the edge case instead of the norm, it probably wouldn't be a big deal to give it to the bot folk. At that point, they're playing an important role in making this market efficient, the sort of HFTs of the ski resort.

Alternatively, you can do just one round and then go to first-to-click. That gives the people who aren't botting room to breathe, at least.

(After typing this all out though, I do see that this is conceptually simple but complex to implement.)


> What if the person on the wait list doesn't see that they've won at the last minute, do they get a penalty for not having proactively removed themselves from the wait list upon deciding to ignore email the rest of the week?

No, when you get the "you won a spot" email, you have to click to confirm. Probably it should be set up to give you 12-24 hours to do so, and if you don't, it draws a new person and sends them an email.

I was surprised to read your initial post about it being hard to get spots. I went four times this past season... though I think maybe only once on a weekend (in January), and it was easy to get a parking reservation. Maybe that was early enough in the season that people hadn't written many bots yet. Bummed that it's going to be a pain next season.


The deadline to cancel without penalty is 9am day-of. In reality people will cancel at all different times, but for this exercise of designing out enough of the stampede conditions, let's say the first cancellation occurs at 8:55am day-of. So now it sends the "you won" email -- maybe the recipient even knew they were at the top of the waitlist so they can anticipate this. They've only got 5 minutes of cancellation window themselves! There is no way of giving another 12-24 hours RSVP time.

Now here's where it gets interesting: this means a rational no-bot human ought to ignore the whole system until 9am day-of, at which point the greedy "just in case" reservations have all been canceled, so all reservations are real people, and the ridiculousness of the system has led enough people to find alternative transportation that plenty of spots are available for easy taking, right? If no-show penalties are enforced properly.

I was out there in early March and this consumed me for a few weeks leading up to it, but it was fun.


> After this window closes you draw lots.

Couldn't someone use a bot to register interest a million times so they have a much higher chance of winning the lot drawing?


IIRC they require that you submit your license plate number when you register for parking, so no, you could only register once per vehicle.


I wonder if you could register using all the plate numbers from a nearby car rental place, then try to rent the corresponding car if it gets chosen.


Rental cars actually add an interesting aspect to all of this: if you use a disposable (not also used to buy your ski pass) email address and the license plate of your rental car for a reservation, the resort will have no way to penalize you for being a no-show! Any attempt at collecting a fine, prohibiting future business, etc. would be against a useless email address and plate number that you don't reuse the next time you visit.

Also, once you've managed to get a reservation, the system allows you to modify the plate number on your reservation, presumably to allow for renting after reserving.


And you'll need to address this whichever approach you take. If you can't pin them down to an identity, you'll probably need to take a deposit.


Type many fake invalid license plates, and cancel them, freeing a spot at a time of your choice.


You don't need to cancel a reservation in order to convert it from a bogus plate number to your actual plate number. Changing your plate number is already permitted by the reservation system.


What stops you from sybil attacking the lottery and selling to highest bidder?


yeah it only works if you have some kind of ungameable unique id for each participant

if it's parking, you could conceivably make people enter their license plate number when they enter, which would allow you to detect duplicate entries, and is reasonably hard to game if you have some enforcement mechanism on the actual parking side of things


During Covid I was forced to write a bot just to sign up for swim lane reservations at our local pool. Spots opened up at midnight two calendar days before. Most folks looking to regularly swim at 7am don’t make it a habit of starting up to midnight, and all spots were always booked up by the time I would wake up at 6am. So I wrote myself a bot, which was surprisingly fun and effective!


I use a bot for booking overnight huts on the more popular hiking trails in my country. They become available for booking online at a fixed time each year and are all taken a few seconds later. Using a bot is the only reliable way to get one.

Amusingly there are news articles every year about whether or not people are using bots to book these huts and the operators always deny it vehemently. Whereas I know my bot is up against loads of other bots.


We used to run into the same issue booking camping spots in Massachusetts, which open many months in advance. I don't know what the situation is nowadays but it used to be very competitive, with spots vanishing in seconds after opening.

Amusingly, one camper family we came across said they manually register at the stroke of midnight, but they all do it together from like 6 computers in their house.


> the operators always deny it

I assume they deny knowing about bots. Nobody knows you're a dog, as the saying goes.


Out of curiosity, what tech do you reach for when building something like this?


For mine, I just used a $1/mo VPS with a cron job running a bash script that used curl to poll the parking system and determine if its response was interesting. I used "copy as cURL" from browser dev tools to find something usable (which incorporated a slightly fragile, but very long lived, session token corresponding to my "cart") and I actually had to use curl-impersonate [0] for Cloudflare bot detection to stay out of my way. And then curl to alert me via Pushover.

[0] https://github.com/lwthiker/curl-impersonate


Selenium


The government services booking system has received this treatment in some parts of some southern european countries. Organised groups have monopolised the system and go on to sell appointments.

It's an open secret that you can either battle the bots to try to get an appointment slot in 6 to 12 weeks, or you can pay 50€ to the right person and have one in a few days.


I had to do similar during the first summer of COVID to get my boat onto Lake Tahoe. Lake Tahoe (and most lakes in CA) requires boat inspections immediately prior to getting onto the water (mostly to prevent Quagga contamination). Those inspections had to be scheduled online during COVID, and there was similar supply & demand to what you describe for parking, so I wrote a bot that notified me (also via Pushover) when a slot became available.

Once I got the reservation I had to tow the boat 9 hours, praying the whole time I didn't have a drop of water on the boat, for which most inspectors will immediately fail you and send you away. The inspection crew there turned out to be pretty awesome though, and they actually washed my whole boat down with hot water which apparently kills any (baby? egg? idk) Quagga muscles.


It's so funny you mention this, I actually just launched something super similar today for the California DMV (as a Bay Area student). It checks for openings from cancellations and notifies people.

There's a special kind of magic that comes from meaningfully improving your life from software :)

(the project is https://dmvfilter.com if you want to check it out!)


I should write a bot for making a parking reservation at work too. At least if there's no-shows people get told off for it (I wonder if they get barred from the parking reservation if they really take the piss after that though).


At least you were actually using the parking spots for yourself and friends. Bots become truly problematic when they're used for reselling.


I really enjoyed this post, it brings me back to when I was in high school learning java and I made an app that took over your whole screen with a grid of “x” buttons where only one of them actually closed the window. When someone left their computer unlocked I would pop in a a floppy disk and run the program then leave.

We had an IT guy at our school who would always ask us what we were up to which we would answer honestly. He never got mad at us for figuring out how to get Halo CE or Starcraft or other games running over the network, but he did tell us to knock it off when we got too bold.


My friend memorized his SC CD key so he could reinstall it quickly. Good times

We had a network file share so no floppy necessary. Very easy to hack everyone's computers.

I wrote a script that would read the title of all your open windows and close free games.com or whatever the popular game site was at the time. Shouldn't be playing games in class right? I felt bad when it closed some 3d modelling program because of the save file name he chose. Oops.


if you're just playing on LAN, both 1234-56789-0123 or 3333-33333-3333 work as a cd-key for original StarCraft. installing Brood War on top doesn't even need a cd-key


Back when i was a teenager i was so excited when me and my friends found (technical) loopholes in stuff. It was a game in itself. Getting away with cheating, getting away with "hacking", etcetera. We did some things that may have cost someone some revenue, like writing down cd keys and other stuff, but we meant no harm. No real big damage was done.

Nowadays i have two teenagers myself. Whenever some/we suspect they are "up to no good" i will try and remember my own teenage years. Then i tell them something like that i think that was awesome and i'm proud, but don't get caught again. :)


We had multiple copies of Unreal Tournament on burned CDs and hidden on network drives like that too, good times.


The shared computers at our school (college equivalent?) were locked down in theory, that is, you had to get the IT guy to grant you internet access, otherwise you could only use things like Word and the like.

We found a workaround; if you opened up notepad, went to the open file dialog, then I forgot the next step but it would open up the file explorer, which turned into Internet Explorer if you entered a URL in the address bar.

Of course, we also had copies of Linux that booted off of CDs, but they were a bit too obvious.


I think there was something like this that allowed you to bypass the password on Win95 - you click help, then something, then it opens the file explorer


> He never got mad at us for figuring out how to get Halo CE or Starcraft or other games running over the network

I had found out that Quake 2 could be run without admin privileges, so I installed it on a bunch of computers throughout my school. Lots of people got into it, but I ended up getting in huge trouble including suspension and parents being called because I "ruined the Internet." The IT person insisted that networked games take up all of the bandwidth and that i had "hacked the computers" to gain admin permissions to install.

As an aside, I seem to have a story for lots of comments in this thread!


This is reminiscent of a story in the New Yorker about Reddit - there is a part of the story that describes r/Place:

Last April Fools’, instead of a parody announcement, Reddit unveiled a genuine social experiment. It was called r/Place, and it was a blank square, a thousand pixels by a thousand pixels. In the beginning, all million pixels were white. Once the experiment started, anyone could change a single pixel, anywhere on the grid, to one of sixteen colors. The only restriction was speed: the algorithm allowed each redditor to alter just one pixel every five minutes. “That way, no one person can take over—it’s too slow,” Josh Wardle, the Reddit product manager in charge of Place, explained. “In order to do anything at scale, they’re gonna have to coöperate.”

https://www.newyorker.com/magazine/2018/03/19/reddit-and-the...


> “That way, no one person can take over—it’s too slow,” Josh Wardle, the Reddit product manager

Except reddit admins / mods abused Place, bypassing the timeouts, to place as many pixels as they wanted.


I was one of those hating on the bots. Thank you for this post, I needed it. I too got in trouble at school for programming things I shouldn’t have. But I’ll forever be grateful to the math teacher who said I was allowed to use programs on my TI-83+ calculator as long as I was the one who had written them and I didn’t share them with anyone else.


Once back in the day, when I used to admin a vBulletin forum, we installed an arcade system. It was a fun way to play games, and earn pointless currency ("XMB Bucks") to lord over each other like it mattered.

But a few months after that, I realized that the arcade had a hidden sub-forum feature, that was being very actively used by a bunch of people. They managed to bypass the registration screen on vBulletin, and somehow register directly for this hidden arcade feature. They'd been chattin' it up, like a colony of rats living under our floorboards.


> The adults in my life were largely not mad at me. They asked me to knock it off, but also made me a t-shirt. I don’t think I’d be doing what I do now without the encouragement that I received then.

When I started college, the WWW was quite new. I quickly learned to view pages with NCSA Mosaic at the CIP pool, but had no clue at all how all of this worked. I was determined to find out, though.

I read somewhere that you needed a patchy server to make your own pages. So I googled Apache on Altavista, was briefly surprised that the first hit wasn't about the tribe, and carefully followed all the instructions without knowing what I did.

After a while I could see my test page in Mosaic and happily went home. It was late already, I was tired, so I pondered if I should boot my computer and dial-in to find out if I could see my page from home as well.

I did not understand much, but I figured, if I could view the page from home, everyone in the whole world must be able to see it.

This thought left me no peace, so I did it and to my biggest surprise it actually worked![1]

I didn't sleep much that night. Having grown up in a rural place without even a library, this absolutely rocked my world.

About two weeks later I received a notice from the university, that I wasn't allowed to run services on university resources without permission, so I had to shut it down. But apart from that, nothing bad happened, I am very glad they reacted reasonably.

[1] Our computers had public IPs and firewalls were yet to come.


Not your core point, but it is fun to remember that NAT wasn't always a thing, and many networks just PCs with public internet addresses and no firewalls. Even NetBIOS worked over the plain Internet back then. You could just \\x.x.x.x\c$ and it would work a decent percentage of the time.


Great story, it added a delightful touch to my breakfast! ^^ Kid developers are free from all the modern (not always in a good way) tooling and routines of the professional world. I'm working on a platform that's kind of an open-source Roblox alternative, and it attracts profiles like theirs. They're so creative and always eager to help, reporting bugs and potentially harmful hacks. Cheers to them!


Agreed, this is my favourite story on HN in a long time!


This reminded me of Archer Scavenger Hunt[0]

From Wikipedia: Shortly after episode 2 aired, a viewer noticed that a serial number featured on the computer screen in the episode was actually hexadecimal ASCII code for a website URL. This URL was the first step in an extensive interactive online "scavenger hunt" which animator Mark Paterson had devised as a side project to the season, which was awarded the Primetime Emmy Award for Outstanding Interactive Program for 2015.

[0] https://figgis.agency/walkthrough


> To do this I said - a checkbox has two valid states. It’s checked or it’s unchecked

Ah, i see someone has been burned by true, false and null before!




That's actually useful, but annoying it doesn't have a corresponding HTML attribute. And also.. it can be both checked and indeterminate, which is fun.


This was already such a fun and interesting project, but its even cooler to watch the community give back to it in the same spirit!

On the note of community, I would kick myself if I didnt link the Elixir clone it inspired. As I think its the best example of how powerful the primitives of elixir are when it comes to massive and distributed concurrency

https://github.com/PJUllrich/twomillioncheckboxes


> the inevitable tug of war over how much moderation is required to prevent a digital space from becoming an uninhabitable cesspool.

I am wondering what is it in humans that it must follow this pattern ending in a cesspool? This would make a very interesting study in human psychology and hopefully gaining enough understanding to maybe improve this condition.

On the other hand, antagonists also help driving progress as well, the pendulum like back and forth is also very beneficial to humanity.

How do we reconcile these?


I have a work-in-progress theory that permissiveness for some level of misbehaviour is what is necessary for freedom.

For example, as Gibson put it, Singapore is Disneyland with the death penalty. Now, how many Singaporean artists can you name?

But you know who Banksy is.


i'm one of the people who was in the mentioned discord server: it was really fun :) me and my friends had a lot of fun drawing stuff, we drew the calmjak, jet lag the game logo, the bottom right qr code (covered up by some other person's art though) and other stuff (they're visible on the "the grid at it's most chaotic" image)


I like every simple boring idea executed in an interesting way. Making things for sheer fun and presenting them to the world is just a few hours away.

I am sure if we all count the silly ideas together that we have in our head or somewhere in diaries like One Million Checkboxes the numbers could be close to one million. Maybe this is a message to all of us, we shouldn't be afraid to test our ideas.

I can't wait any longer to start working on my ideas ASAP.


Hi, I read the twitter thread and also watched the video. The people are really awesome and creative!

I'm just learning about the codes and I did not understand some things, so I'd be very grateful if anyone helps me to understand these things...

1. The 1000x1000 image is the million checkboxes in 1000 rows x 1000 columns right?

2. Do they create the image directly with the checked and unchecked boxes, or we have to convert them to binary/ASCII etc to see the image?

3. The site can have only 1 1000x1000 image, right? So to make the image change, someone has to overwrite the present image with the help of another bot?


1. Yes

2. Directly

3. Yes


Did only one bot acted on the page at a time or multiple bots controlled the checkboxes at once when there were many small pics/elements to form the 1000x1000 image? I meant to ask did multiple people draw on the canvas at the same time or it was only one person/bot at a time?


(i'm the author)

there were a bunch of bots run by different people, but for the most part they coordinated in the discord so that they weren't fighting over the same "territory"

at one point there was a group not in the discord trying to draw in the same place as the people in the discord, which lead to the bots constantly changing checkboxes to try two different images! but it was mostly cooperative


what was the technical nature of the bot, a local shell bash/python script running constantly to make curl-esque requests the clicks on defined parts of the grid? Or something on top of the browser like a chrome extension? I'm curious because I wonder what the defense would be against it (I'm naive to such things).


Most of the bots were in python or node afaik. Bash would be a little hard because you had to send data over a websocket.

They had some notion of the squares they were watching and what their values needed to be (to draw the images). And then they subscribed to the full state of the grid (which my API made really easy to do) and would respond by sending websocket requests to check boxes when they got toggled to the "wrong" value.

I'm sure people did other things - lots of people wrote scripts in the browser console. But I think the above is basically what people in the discord did.

I had some basic protections in place. There's some client-side rate limiting that prevents the really trivial "run the script in the console stuff" and then some server-side per-IP limiting to prevent really aggressive botting. Plus my server got slow at some points which inadvertently slowed people down.

The big difficulty with the server-side stuff is that you don't want to be too aggressive with IP based limiting because sometimes a large group of people resides behind a single IP (like at a school) and you want to make sure that all of those people can play. So it's a balancing act.


Thanks for replying! Now I understood.


Maybe I am misunderstanding the question but it seems like there were/are various bots at work here, but in principle a "single" bot could do these things, and is certainly how they handled animation. But even a single bot could be running many times over, or be otherwise multi-threaded.

It does seem important that as far as the page was concerned you couldn't, say, check two boxes at the exact same time. So whatever work they did to coordinate the animations had to happen through tons of single requests.


Yes, got it now! Thank you <3


Thank you for answering. The process is very hard to comprehend for me. These guys are so creative!


I love this story but I wish I understood it better. How did people find their way to the URL if they didn't have DB access? Did they inspect the traffic with a proxy and see the db file going back and forth? I'm just trying to understand what one of these teens had to do to find their way onto that channel where they were hanging out. What steps did they have to figure out on their own?


When you loaded the page you got the state of each of the one million checkboxes. That's the data. People just wrote computer code to read that. You can also check a box to write, manually or with computer code. So you can read and write. Usually you talk to a database with a language like sql but in this case, checkboxes work too ;)

Once you have the data, folks just tried looking at it in different ways to see what was there.


I guess the question might be more along the lines of... Does JavaScript watch each checkbox and POST to some URL when the local user toggles one? Does it poll some URL to learn about changes from the server? Maybe web sockets?


The author has another post that describes how the website worked, including how it changed over the course of its existence. But briefly, yes, web sockets are used to stream updates from the server.

http://eieio.games/essays/scaling-one-million-checkboxes/


That was so fun to read! It's nice to see internet's creativity at best. Plus: one more data point proving that creativity flourishes when resources are limited


It reminds me the Contact movie [1]:

Arroway [the protagonist] discovers the signal contains over 63,000 pages of encoded data. Hadden meets with Arroway and provides her with the means to decode the pages. The decoded data reveals schematics for a Machine that may be a form of transportation for a single individual.

Actually, IIRC there's a subplot in which an autistic child draws pages over pages of 0 and 1 while watching TV noise; the protag discovers they represent something, by chance, when looking at the pages tiling the floor, from a balcony.

[1] https://en.wikipedia.org/wiki/Contact_(1997_American_film)


Wasn't that from the X-Files? Or maybe I'm misremembering. I think I'm thinking of this: https://x-files.fandom.com/wiki/Conduit but I also remember it being seen from a balcony, so maybe I'm conflating two things I've seen together.


You are indeed correct. Funny how I mixed them up.


Yeah, you are right, the “TV noise” sub plot is not part of Contact.


That email server story could have been written almost verbatim by me. In high school (this was around 1998 or 1999) I also wrote a mass-mailer bot to spam my friends. I showed my friend how to do it, then he modified it a bit but left it running too long and it ended up crashing the school's mail server. I was terrified for a bit because I thought this is the kind of thing that gets you expelled, or suspended. But our CS teacher (Hi Mr. Zamansky) talked to us for like 10 seconds, essentially saying "hey guys, knock it off, ok?" and it was all good.


I was an intern with you when you were at Deepfield ! This is super cool to see!


Ah hello! Glad you enjoyed it, and hope post-Deepfield life (if you're not there anymore) is treating you well :)


This would make a great talk at Defcon. Wholesome hacking at it's best.


When I was at the university, I was frustrated with how the Unix servers were managed (IBM AIX 3 to give you a timeframe).

I social-engineering-hacked my way in and fixed some stuff (very basic stuff, I knew nothing about administration back then). Then went to the sysadmins to explain.

They offered me to join their team and this drastically changed my future (for the best).

The annoying kid can be a godsend sometimes, I always try to remember that when sighting at what they did or attempted too do (this cover both my kids and the young recruits in my team)


Reminds of something I thought of as a kid. You know the two way switches for a light bulb: where both switches can turn the same single light on and off. You probably have one.

What if it were a 100 way switch and you had the challenge of keeping the light on (maybe everyone else is trying to keep it off). This is like just one checkbox in this game. It is cool to see this exists and someone figured out how to keep the lights on.


It's just a XOR gate, isn't it?


Toggling either switch in a 2 way (in the US it's called 3 way) toggles the load on or off. it appears if you toggle any input in xor it toggles the output, so, yes.

I logged in to disagree, found out i had misconstrued a specific part of NEMA (and hallucinated a wiring diagram, to boot!)


When I saw the checkboxes image at the beginning I immediately thought of Reddit's place so it was only natural people would draw on it with bots.


Related:

Scaling One Million Checkboxes to 650M checks - https://news.ycombinator.com/item?id=41079814 - July 2024 (51 comments)

One Million Checkboxes - https://news.ycombinator.com/item?id=40800869 - June 2024 (305 comments)


This is an awesome post and sounds like it was an awesome experience.

I’d be interested to see an alternate-history version of this, in a universe where it was built with a serverless architecture. My hunch is that a lot of the late-night hacking sessions wouldn’t have been necessary, but when it went down (due to resource caps) it would’ve been down down, not just slow.


You'd have a serverless Lamda hit Elasticache/Redis and then still run into scaling issues because the code you wrote wasn't optimized. Given enough Lamdas and no connection pooling, you'll still exhaust Elasticache and have to do something about it. You'll run into the question about how the bandwidth bill is going to look like in the morning and want to figure out a way to not bankrupt yourself before going to sleep. Worse, AWS is known to gouge for bandwidth, and Lamda doesn't give you the same absolute rate limit control as the author's setup did.

If you're just gonna give up if/when you hit eg Redis rate limits, that doesn't inspire confidence in serverless.


https://nekoweb.org is another great place to get back in touch with the fun side of computers. There are lots of teenagers just figuring out how to make basic sites, which is heartwarming in its own right, but there is also some really creative, impressive stuff.


If this really happened, on both sides - author, and haxor, well, ... there is still hope for this world. Amen.


As one of the people who found the original Discord server back when the site was live, I can attest that this is absolutely true.


You were one of the elites!<3

How did you find the link? Please share... Really interested to find out.


In my case, I kind of worked backwards from the way eieio found it. I was at the very bottom of the million checkboxes when I noticed there was a repeating pattern. And if you zoomed out enough, and sized your window large enough, it looked like this: https://matrix.theblob.org/omcb-repeating-pattern.png

It was obviously a bot, but it definitely wasn't random. It was a pattern that repeated every 208 checkboxes. At first I thought it was a barcode, but it wouldn't scan even when I turned it into a form that should scan. Then, I figured it could potentially be a binary code, so I tried treating the repeating pattern as binary, with the checked boxes as 1s and the unchecked boxes as 0s. That got me the URL that eieio talks about in the original article.

Once I was there, I discovered from the other members that I had taken a more arduous route than I needed to; it turns out that the site's API was such that it sent its initial state as a base64-encoded version of the full binary state of the board. Decoding the base64 and looking at the end of the data would also have gotten you the same URL, and as such many of the people in the server were bot developers who had done exactly that because they wanted to reverse-engineer it.


Oh, I see! Thank you for explaining it to me!


As a current student and self-taught developer this is one of the best representations I’ve seen about what makes the world of CS fun. You have a bunch of people with a crazy idea that’s just SO niche and they’re able to use their brains to create something beautiful of immense value.


This restore my faith in positive human creativity. It makes me wonder what I can do to encourage the constructive collaboration among the younger generation. I agree that todays doom scrolling has destroyed so much of todays potential.


This is why I've always encouraged people to hack my games. Exploits that ruin other players' fun will obviously be moderated accordingly, but if they're just doing cool stuff, I don't want to ruin their fun!


offhand, gggg (4g) has this same outlook; and requests that people who cheat or hack the game merely disable stat reporting (leave the leaderboards alone if you want to cheat).

I should make a list of devs/studios that encourage hacking/cheating in their games. for example, Thomas Gervraud (Brotato creator) put sliders in the gameplay settings that let you set enemy speed, health, and damage stats (up and down!).

Anytime i load up wemod and a game isn't in the database, i fire up cheatengine (i donated, even) - and if that gives me a hard time, i usually request a refund on the game.


I never heard of OMCB before, but it's the kind of site that I would love for my teenage kids to find and play with the way those teens in the discord channel did--providing opportunity for creativity and engineering.


This story kinda makes me nostalgic for the 4Chan that I experienced before it became a QAnon driven cesspool. Back then, between all the gore and other unmentionable stuff, there was the community that formed the 'Anonymous' of that time. Some highlights for me from that period were:

- botting Rick Astley to win 'Best Act Ever' at MTV EMA in an effort to 'Rick Roll the world' [0] - botting to help a random average looking lady win a cruise and a cover shoot for a fashion magazine, ahead of actual models - faxing tons of black pages to Scientology centers

This also helped me end up with a career in IT, so I really understand the sentiment of the writer and I appreciate how they interpreted these acts of 'vandalism'.

0: https://www.theguardian.com/music/2008/nov/07/rick-astley-be...


Love stories like these. I miss the old internet where people just created things for the shear joy of it. I've tried my hand at two different things so far, but neither has found much steam.

https://toggles.codewalkers.net/ https://trust-trials.codewalkers.net/


This is what I pay internet for


The internet is still cool, the kids are all right. I'm more hopeful now, thanks OP and thank you discord kids!



One of the most profound lessons I learnt early in my career: if you give people a ”canvas” you will be surprised/blown by how they use it.

Found this out with one of the first Yahoo UGC products,Yahoo! Travel Trip Planner. Again with Yahoo! Pipes and then again with Polyvore.


Side note but just wondering what you use to capture those little screen recordings as gifs?


not the author but any screen recorder (OBS) can record the video, and ffmpeg + imgmagick can make a video clip into an animated gif (that's how i would have done that specific conversion) but gifv exists so maybe ffmpeg or one of the others can output gif directly from video. there's also "services" online that will gif-ify a video.


I love this. Got me a bit nostalgic. This is the type of stuff we used to do in high school with too much time and a lot of "would it work if..?", but nothing anywhere near this level though, amazing!


That is a wholesome story. Thanks for letting it play out like this. In a world of increasing abstractions that hide the details, it's great to encourage the next generation to experiment and explore.


This reminds me of the Pixelflut multiplayer Canvas project: https://wiki.cccgoe.de/wiki/Pixelflut


Say this was a malicious actor, how would one place a block/filter for this type of activity? Track each IP request and rate limit on an individual level?


This is exactly the kind of content I visit HN for. Thank you!


what a wild ride.


What an amazing story. I think I also think about my younger self, just a bit dumber! Thank you for posting this.


We’ve got “be gay do crime” - love that

of course, ya gotta


This is the site I went to (65 days ago), saw the swastikas, clicked back, mentioned that fact on HN, got downvoted to -4 and told I was "pearl clutching". But it also kicked off an interesting thread[0] about how sites handle users being able to draw anything. I wonder what it's like now. Oh. It's 1,000,000 solid checks because he disabled unchecking in order to end the site.

[0] https://news.ycombinator.com/item?id=40802456


This blogpost reminds me of the type of content that was more frequent on HN back years ago.


This is a really heartwarming story


this warmed my frigid heart. so glad to see this sort of curious spirit endures :)


Enjoyed the site personally when it was up, enjoyed this post even more. tyvm


we are so back


Awesome read! thanks for sharing this story.



I'd say the mechanics are more similar to https://en.m.wikipedia.org/wiki/R/place


Reminds me Reddit Place


this reminds me of the one million pixels website


This is peak internet. Thanks so much for sharing. What a lovely read.


Beautiful


When I firstly saw the Million Checkboxes website I was disappointed by the impossibility to see all picture at once. Now I know this was my fault.


The video is very good. You seem like a natural. I watched it all. Thanks for the story ^_^


Hahaha, you legends. Brilliant stuff from the kids. Love it.


TL; DR for the first part of the story: Developer discovers ASCII.

You're storing bits and you panic about hackers when the bits translated to ASCII display a URL? Come on...


It means that someone was using checkbox status to encode ascii which isn't at all obvious unless you "happen" to convert the raw bytes to ascii. i'm guessing BSON when output as ascii doesn't have such shenanigans.


[flagged]


You are right, but you could've said that in a nicer way.


Bro thinks we need to look at their hello world bit shifts and basic js.


feel free to link your projects that were in The New York Times - or better, knowyourmeme.com!


I had projects that were in every major news outlet when I was about 20. Press doesn't mean your projects are good. Don't believe your own hype. its p toxic.


I had a projects that was mentioned by the president of america and also the premier of Japan!


Absence of evidence isn't evidence of absence. Believe it or not, not everyone wants to release every work under their identity. I know that most HNers are only motivated by ego and money though. So it's probably an alien perspective to you. Though none of that really matters here because you missed the main point:

Getting press attention does not make a work substantive. What the press are attracted to is sensational, current-event stories. It's more about finding a hook and a story that will be entertaining than anything else. Once you realize this its quite easy to get reporters at major outlets to cover your work. Though its not going to work if your work is a CRUD app. The context matters a lot.

The reason I don't like posts like this on HN is because they don't provide anything useful and the engineering would be obvious to any junior dev. Novelty stuff like this is just honestly goofy. The same goes for every post filled with people reinventing wheels because they get to use their favourite hammer to do it. Is this a place where people post hello world programs and programs designed to do literally nothing. Or is it a place to celebrate things that are actually clever, useful, or worth celebrating?

Oh hell, who am I kidding, it's just a place to promote anything you've built providing you have enough friends to vote for it. Forgive my foolishness.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: