Readit News logoReadit News
eieio · 2 years ago
(developer here)

this is....more popular than i expected. the server's gonna be having some problems for a while

nomel · 2 years ago
I think there's a severe problem with this implementation. By using wrapping, I can't write "boobs" and have everyone else read my graffiti without them having having the same zoom wrapping point.
matthewfcarlson · 2 years ago
I spent five minutes writing “hey you, yes you” only to read your comment and realize my message is unparsable for those not on mobile.
paulddraper · 2 years ago
We need community consensus on checkboxes per line
sdenton4 · 2 years ago
Morse code would do the trick!

One check for short, two checks for long, two blanks for end-of-character.

CobrastanJorji · 2 years ago
No, no, it's a feature. Your message has been cleverly hidden behind a modern day scytale cipher. Intended recipients must know the correct screen width.
some_random · 2 years ago
The other problem is that there are a bunch of people here running scripts to automatically erase anything you do in the name of checking every box
altairprime · 2 years ago
That sounds like a feature.
the_snooze · 2 years ago
This is very reminiscent of old defrag tools. Keep this running in the background, for old time's sake. https://www.youtube.com/watch?v=KR3TbL3Tl6M
stavros · 2 years ago
The HDD sound doesn't correspond to the defragging :(
JdeBP · 2 years ago
You announced it on the FediVerse, where it has already been boosted almost 700 times as I write this 4 hours later, and it spread to Reddit within 2 hours of that, as you know because you replied to the Reddit post. There is definitely going to be an initial spike of activity, given those. (-:
adaptbrian · 2 years ago
Love seeing things go viral off the fediverse, it's not designed to push the end of the spectrum out and more organic examples like this might help bring another layer of user adoption.
assimpleaspossi · 2 years ago
I'm glad about that. Should keep Reddit type people occupied for days.
sillysaurusx · 2 years ago
Out of curiosity, what’s the Reddit thread?
akarve · 2 years ago
> more popular than i expected

we know what's important here on hn

eieio · 2 years ago
i spun up 5 more servers and pushed some optimizations and i think it's gonna be ok for a bit.
CodeWriter23 · 2 years ago
I think you just hit the 640K problem.
rldjbpin · 2 years ago
hn hug of death in full action. currently unable to visit. all the best working it out tho!
RcouF1uZ4gsC · 2 years ago
If you have time, one cool suggestion for gamification would be to do a SHA-256 hash of the binary values of the checkboxes and display current hash and the lowest hash so far.
ayhanfuat · 2 years ago
Would be fun to read a writeup of how you implemented it.
eieio · 2 years ago
it's a tiny flask server, a bitset stored in redis, updates broadcast (too frequently! but i don't want to change it now) via websockets, and react-window to only render the checkboxes that are in view.

I'll do a writeup when i finish putting out fires!

tazu · 2 years ago
By the performance of it, probably some bloated server-side Javascript running on a toaster.
wordToDaBird · 2 years ago
Just an idea, but make it an internet game. Have a level 2,3,4.

The question is under what circumstances should that game switch to the next version. The idea I had was if all 1Million boxes are unchecked, but this is the internet someone would make it their life’s mission to keep one box checked.

IDK, I think you hinted upon something fun that we all like, it’s the Twitch vs thing, where everyone can interact and our total capacity makes the experience. This is also like the reddit/r/place which was also very fun.

I think you have a genuinely interesting idea, how can you grow it, nurture and change it to hit the true itch of humanity?

sillysaurusx · 2 years ago
Is it ok if I try to write a script to uncheck all the boxes? I don’t want to spam your server and ruin it for everyone if there’s no rate limiting.

(I wince mentioning this publicly; still have flashback trauma from when some HNer wrote a script to download as much data as possible from our Firebase and got a $1k bill overnight.)

eieio · 2 years ago
Hi! Sorry it took me a bit to get to this, I've been hacking to keep the server up for the last several hours.

Lots of people are botting, I don't think there's anything wrong if you bot too. There's a tiny bit of client-side rate limiting and originally i had server side rate limiting too, but I got rid of that a while ago (I was cutting anything I could to speed things up).

grog454 · 2 years ago
Either there's some kind of update batching or it's already happening.
LorenDB · 2 years ago
Stop that script, I'm watching you ruin the board!
yard2010 · 2 years ago
Oh my god that sounds like my worst nightmare.. this is why I'm scared to death with these pay as you solutions
j0hnyl · 2 years ago
How much is all this costing you?
eieio · 2 years ago
I am very late to this but as of now I think it has cost me about $85, although that will go up a little more quickly once I go through the bandwidth buffer I have with digital ocean (shouldn't be too bad tho)
thomasfromcdnjs · 2 years ago
What are you running that can handle that many websocket connections/messages?
hipadev23 · 2 years ago
basically anything that supports async/event-based would work just fine on a $10/mo vps
eieio · 2 years ago
just a bunch of little flask servers lmao i thought I'd get like 50 people on this thing tops
bobmcnamara · 2 years ago
One whole megabit!
sneak · 2 years ago
just ban all those jerks who keep unchecking
the_arun · 2 years ago
Before I read your comment, I was looking for a way to uncheck all at once :)
dtonon · 2 years ago
Funny, a websockes hell! Can you port it to Nostr? Could be an interesting stress-test
nomilk · 2 years ago
The devtools console is chaos
daynthelife · 2 years ago
Can you make the checkboxes indexed from zero?

(Maybe I am too dogmatic)

giancarlostoro · 2 years ago
What's the backend look like for this? :)
is_true · 2 years ago
Congrats!!
PROgrammerTHREE · 2 years ago
white screen of death for me :(
webappguy · 2 years ago
I love some stats and details on this, what kind of traffic are you seeing etc. Do you have a way to determine how many boxes in your visitor checks/unchecks? 97% of your pictures from Hacker News etc. Congrats on the hit!!!! Fun playing with it!!!
adityaathalye · 2 years ago
> "One million checkboxes that anyone can check"

> Why

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

The best kind of reason :)

DaoVeles · 2 years ago
So silly it had to be done.
johnchristopher · 2 years ago
At first I was clicking the top but people kept unchecking my stuff. Why can't we (we ? who's that we ?) all get along toward clicking them all ?

So I figured there would be less people fighting down the window, right ? For a while I was alone. It was a boring and meaningless job but it felt peaceful.

Then I met someone who's also checking boxes, 5 seconds top, they are gone. Okay, then I kept scrolling, checking boxes. Then, I don't know why... I scroll back up, just a little bit, just 2 lines of boxes, just to... goddammit there are random unchecked boxes now and I didn't see nobody unchecking them !

There's a ghost unchecking boxes :(.

paulnpace · 2 years ago
Why must you destroy things? I am merely trying to restore the checkboxes to their original state in nature.
verdverm · 2 years ago
bureaucrats, always making us check the boxes, we must fight back
vizzier · 2 years ago
Agreed.
AA-BA-94-2A-56 · 2 years ago
I jumped to a random spot, very far down. I decided to write HELLO in checks. I didn't get past the H before someone found me and griefed it. Must this 1 million checkbox ledger of art, devolve into madness? No matter how far I scroll there is nothing discernable. A wasteland of meaninglessness. This is just chaos.
Shocka1 · 2 years ago
I did the same, but started writing Fudge, to keep it clean. I got to FU and someone finished it with CK. It made me laugh much harder than it should have.
stevebmark · 2 years ago
You missed the poor website design that the columns are dynamic with your browser window width, so letters are random for anyone but you
amscanne · 2 years ago
Such a strange reflection of ourselves that I had the exact same intent and methodology as you.

I’m sure that we were not alone, and there were many of us appeasing the goblins in our brains yelling for order, diligently checking boxes row by row (or some other orderly pattern). If I had landed on the page with every box checked, I would have felt a sense of doneness and left it in that perfect state. It’s so hard to empathize with all these maniacs here who would destroy that beauty just to write “boobs” ;)

ssalka · 2 years ago
tried doing:

```

$$('input[type=checkbox]').forEach(elt => elt.click());

```

and got an alert that said "CHILL LOL". fun site

999900000999 · 2 years ago
Time to write a Playwright script.

const { chromium } = require('playwright');

(async () => { // Launch the browser const browser = await chromium.launch({ headless: false }); const context = await browser.newContext(); const page = await context.newPage();

    // Navigate to your page
    await page.goto('https://example.com'); // Replace with the actual URL

    // Click all checkboxes
    await page.$$eval('input[type=checkbox]', checkboxes => {
        checkboxes.forEach(checkbox => checkbox.click());
    });

    // Close the browser
    await browser.close();
})();

I'm proud of myself for getting the chill alert without even running a script, just frantically tapping with my fingers!

misiek08 · 2 years ago
You need to directly send 42["toggle.... via WebSocket. Of course you need to check which are checked before if you want to clear instead of reverse.
beretguy · 2 years ago
Hmm… Is there a way to trick it to accept js that checks all boxes?
misiek08 · 2 years ago
The problem is you need to send 467k (current count of checked boxes) websocket messages and backend(s) are already dying for ~1 hour. Good luck with that, I only played for some time by clearing first 1000 boxes every few seconds.

Even after you send those 467k messages they need to be sent to (I assume) few thousands browsers each, so you need to wait for 467M messages to go through :D

recursive · 2 years ago
Yes
paulddraper · 2 years ago
IDK if the problem is JS or the rate
hk1337 · 2 years ago
document.querySelectorAll("input[type=checkbox]").forEach(i => { i.checked = false; });

seems to work for a second. no alert.

Scarblac · 2 years ago
Presumably that skips the code that sends the event to the backend?
binarymax · 2 years ago
All the boxes must be checked. To whoever is unchecking them, please reconsider and come over to the checked side.
paulddraper · 2 years ago
Plot twist: half of viewers see it inverted
mastersummoner · 2 years ago
Oh you absolute madman
khazhoux · 2 years ago
That “both sides are the same” attitude is how we got ourselves into this situation in the first place.

Vote Unchecked in November!

drisden84 · 2 years ago
I did 1k (0.1 percent) then figured I'd done my job. No scripts, just human labor/algorithm.

Could I boost it to 2-5x time with a simple JS script? Sure. However I figured rate limits were in place/that wasn't the spirit of...whatever this is.

Reminds me of Peter Molyneux's Curiousity: https://en.wikipedia.org/wiki/Curiosity%3A_What%27s_Inside_t...

em-bee · 2 years ago
stay out of my boxes.

the more you check, the less freedom you have, so i am in favor of leaving some boxes unchecked. especially the boxes that contain my private stuff.

airspresso · 2 years ago
treasure hunting for those boxes
localfirst · 2 years ago
Reconsidered and im with the uncheck gang fam
sumtechguy · 2 years ago
only if there are cookies
jonahx · 2 years ago
"The road to hell is paved with good intentions."
elf25 · 2 years ago
No. I want the world to burn.
lcnPylGDnU4H9OF · 2 years ago

  document.querySelectorAll('input[type="checkbox"]').forEach(function(checkbox) {
    checkbox.checked = Math.random() >= 0.5;
  });

wlaurance · 2 years ago
My favorite quotes:

- super satisfying, like a bubble wrap mmo

- global fidget toy

- This is brilliant! The websocket server must be going brrr

https://x.com/itseieio/status/1805986839058079896

MechanicalFish · 2 years ago
// ==UserScript== // @name Check All Unchecked Checkboxes // @namespace http://tampermonkey.net/ // @version 1.0 // @description Check all unchecked checkboxes on the page // @author MechanicalFish // @match https://onemillioncheckboxes.com/* // @grant none // ==/UserScript==

(function() { 'use strict';

    function checkAllCheckboxes() {
        var checkboxes = document.querySelectorAll('input[type="checkbox"]');

        checkboxes.forEach(function(checkbox) {
            if (!checkbox.checked) {
                checkbox.checked = true;
            }
        });
    }

    const observer = new MutationObserver((mutations) => {
        checkAllCheckboxes();
    });

    observer.observe(document.body, { childList: true, subtree: true });

    checkAllCheckboxes();
})();

some_random · 2 years ago
This really feels like it defeats the purpose of the site ngl
Vampiero · 2 years ago
Well maybe next time OP will actually do their analysis and figure out that the project is DOA before even writing one line of code.
Mystery-Machine · 2 years ago
This ain't gonna work for 1,000,000 checkboxes. You could try using requestAnimationFrame or querying only non-checked checkboxes querySelectorAll('input[type="checkbox"]:not(:checked)') or not calling checkAllCheckboxes for all mutations.

Edit: or just call querySelector('input[type="checkbox"]:not(:checked)') and do them one by one in some kinda while(true) loop

sillysaurusx · 2 years ago
Just write data to the underlying API. No need to interact with the browser UI at all.

Deleted Comment

LorenDB · 2 years ago
I feel like the checkbox grid should have been locked to a certain width. I can see people attempting to draw things, but they're skewed on my screen.
eieio · 2 years ago
(I made the site)

this was on purpose! I figured there have been enough collaborative internet drawing experiences (with a locked canvas that was easy to draw on) that it'd be interesting to try something a little different and see what emerged.

That said, it might be a dumb idea! But I wanted to try it.

jslakro · 2 years ago
If one uncheck and check again should claim it as checked
scrumper · 2 years ago
Oh, that's a shame. The big willy I drew is only visible at exactly the width I have it set at. I wonder what random things I'm missing. It takes a while to reflow too so it's not like it's easy to resize the window and see in realtime what other people are ding.
striking · 2 years ago
I think having to "scan" to identify images is kind of fun! And it means the artist gets to choose the width of their own art. A lot of folks have a common screen width so there are fewer combinations than you think.