The secret inside One Million Checkboxes
eieio.games
eieio.games
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!
Thank you for both the site and the articles.
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 :)
* 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.Well done and nice execution.
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 :-).
Thanks for the writeup!
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.
Best of luck to you.
It's always nice to hear that internet is still fun for ppl
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. :)
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'm spending too much time here.
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!
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.
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.
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.
If you don't mind sharing, what did you do to improve your mental health?
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.
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."
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 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.
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.
> 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.
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.
>It was fun, it was challenging, it was rewarding, it was amazing.
This cannot be overstated
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.
This is a lovely phrase. Is it an idiom or your own creation?
It works on different levels, I guess. =)
Not really relevant. But the quote reminded me of the show.
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.
A m a z i n g !!!!
So we _can_ have good things! And (most) people _are_ nice and cool and fun!
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.
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)
> 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.
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.
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.
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.
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!
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.
When I tried using it, he lost his fucking shit and went berserk.
At least it taught me how to be a better parent
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...
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!
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.
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.
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.
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.
I assume they deny knowing about bots. Nobody knows you're a dog, as the saying goes.
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.
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...
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.)
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.
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.
Couldn't someone use a bot to register interest a million times so they have a much higher chance of winning the lot drawing?
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.
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
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!)
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.
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.
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.
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.
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 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 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!
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...
Except reddit admins / mods abused Place, bypassing the timeouts, to place as many pixels as they wanted.
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.
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.
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.
Ah, i see someone has been burned by true, false and null before!
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
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?
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 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.
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?
2. Directly
3. Yes
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.
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
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.
Once you have the data, folks just tried looking at it in different ways to see what was there.
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)
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)
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.
I logged in to disagree, found out i had misconstrued a specific part of NEMA (and hallucinated a wiring diagram, to boot!)
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)
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.
If you're just gonna give up if/when you hit eg Redis rate limits, that doesn't inspire confidence in serverless.
How did you find the link? Please share... Really interested to find out.
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.
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.
- 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...
https://toggles.codewalkers.net/ https://trust-trials.codewalkers.net/
Found this out with one of the first Yahoo UGC products,Yahoo! Travel Trip Planner. Again with Yahoo! Pipes and then again with Polyvore.
of course, ya gotta
You're storing bits and you panic about hackers when the bits translated to ASCII display a URL? Come on...
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.