(评论)
(comments)

原始链接: https://news.ycombinator.com/item?id=40800869

在这个概念中,创建一个涉及多个级别的在线游戏:2、3、4。我们什么时候进入下一阶段? 如果每一百万个盒子都未被选中,玩家可能会坚持保留至少一个盒子被标记。 这种互动体验呼应了 Twitch 等直播流媒体平台的激烈竞争,以及 Reddit 的 r/Place 项目的协作性质。 我们如何通过这款游戏来扩展、发展并满足人类对联系的渴望? 最初,用户点击排名最高的框,却发现其他人不断地撤销他们的努力。 孤立地看,这似乎是一件单调的苦差事。 但当遇到另一个有着相同目标的玩家时,互动变得更加活跃。 然而,尽管不断进行监控,但观察其他玩家未选中的框时,出现了不可预测的问题。 一个谜出现了——这些错误行为是恶意的还是只是随机的? 也许我们中间潜伏着一个淘气的“幽灵”。

相关文章

原文


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.



This problem is traditionally solved by attempting to teach the aliens how to decode the pattern inside the pattern itself. For example a rendering might look like
    x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
    x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x
    x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
    x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x
    x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
    x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x
    x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
    x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x
    x _ _ x _ x _ x x x _ x _ x _ _ x _ x _ x x x _ x _ x _ _ x
    x _ _ x _ x _ x _ _ _ x _ x _ _ x _ x _ x _ x _ x _ x _ _ x
    x _ _ x x x _ x x _ _ x x x _ _ x x x _ x _ x _ x _ x _ _ x
    x _ _ x _ x _ x _ _ _ _ x _ _ _ _ x _ _ x _ x _ x _ x _ _ x
    x _ _ x _ x _ x x x _ _ x _ _ _ _ x _ _ x x x _ x x x _ _ x
    x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x
    x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
    x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x
    x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
    x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x
    x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
    x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x
    x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
The idea is that the aliens can figure out first that these opening and closing sections have periodicity 30, and because they are so repetitive they do not contain the actual data bits, but then there is a central section which does contain complexity.

So then they will hopefully alight upon the idea of looking at the code two-dimensionally, and adjust their browser width until the lines all line up, at which point they get the custom message.



How long did you spend crafting this comment? Be honest.

I could imagine doing that with Vim, but I don’t think I could do it in less than ten minutes. And then I’d get sidetracked about whether to represent empty checkboxes with _ or - or a Unicode box.



    ┌───────────────────────┐
    │ https://asciiflow.com │
    └───────────────────────┘


IIRC these messages usually have their dimensions equal to primes, to help the aliens a little bit - for example the Arecibo message was 1679 = 73 * 23 bits. We're hoping the aliens have the sense to recognize a product of two primes.



Slightly, yes! The Arecibo message was 73×23 bits, with the hope that the aliens would break lines after 23 bits. But,
    i f . t h e s 
    n e i l a . e
    s . l i k e .
    o r t s u o b
    p h e d o n .
    w . r e d r o
    e . a r e . k
    c s . a d n i
    r e w e d . o
    a . e h t . n
    r e c i b o .
    e g a s s e m
    . a n y w a y
and that's to say nothing of spiraling orders etc.


The idea of public canvases has been explored thousands of times: r/place, 1 million pixels,...

This feels like something else, it's ok if it has its own identity, otherwise it devolves/converges into a place to draw dicks in.



Note for anyone confused, this is about AMOLED displays commonly used in phones and some OLED laptops from a few years ago.

W-OLED and QD-OLED have unconventional layouts compared to LCDs but every pixel has the complete set of sub pixels (RGB for QD-OLED, RGBW for W-OLED) so it looks more like this:

https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2F...

Just mentioning as while AMOLED phones being the majority of OLED displays seems plausible to me, it's likely not what people in this thread are picturing when they see OLED.



There's a link in the bottom-left corner, haven't checked, but reads like an accompanying reddit tool (since there's no real plugin system, guess it's a web app requiring credentials)



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. (-:



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.



Ironically, I was looking to see whether Hacker News and anyone else had picked it up, from the FediVerse post. Bing found the Reddit thread from "One Million Checkboxes" as the search query. It's the second search result as I type this.

Other interesting Bing search results are Arnold Trakhtenberg's re-creation of the WWW site code using Convex, at https://github.com/atrakh/one-million-checkboxes .



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!



Each time a checkbox is checked, a backend job asks ChatGPT to analyze the board state and write a script using Brainfuck that updates the checkbox states and runs it directly in production.

AI LLM cloud crypto.



You said crypto but you forgot where running it in production writes the checkbox change event to the blockchain. Checkbox display states only get read from the blockchain, obvi. Otherwise how could it possibly be secure

Checkboxcoin will be a separate product though, that's for the funding



You could sell T-shirts to cover your costs:

A T-shirt with a checked box on the front an unchecked box on the back.

A T-shirt with an unchecked box on the front and a checked box on the back.



How else do you propose a toaster generate heat to make the toast? At least it's not the thermostat so it thinks the AC needs to constantly be running. So there's quite a bit of positive logic in the toaster decision



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?



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.)



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).



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!!!



> "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 :)



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 :(.



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.



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” ;)



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!



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



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.



ok, fair point. i like treasure hunting. i should keep my private boxes locked.

and that makes me think of a new version of the game: actually hide treasures in some of the boxes. cookies, and also colored keys. keys allow you to lock (or unlock) boxes of a matching color. each key can only be used once.



// ==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();
})();


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



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.



(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.



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.



Great stuff. Little jealous, because I'd love to work on quickly scaling such experiment seeing how many people are playing with it. Sad, but having my head too burned out by corpo bullshit and my creativity level is in the basement :(

Are there any companies hiring where you can still work and not waste 90% of time on meetings and docs?

Probably too many clicks and my mind is just spitting out here instead of just dying in pain in silence :D



I think your sentiment is very common, and I’ve started writing about the underlying feeling.

The answer is no, if the answer is no for you. It turns out that people fall into one of two buckets: either your job doesn’t take over your mind, or it does. And when it does, it becomes difficult to do anything else without neglecting the job.

Most jobs are 90% meetings and docs. This is roughly the definition of a job. Startups are the exception, but those will definitely take over your mind.

My creativity level has been in the basement for the last year or so. It happens. Don’t try to fight it; try to be happy. In my experience it’s the only way to restore my creativity.



As someone who wanted to see the first page entirely checkmarked, I'd just like to say how profoundly disappointed I am, in you people.



The article above this on HN homepage was of Claude Sonnet 3.5. So, I used Claude Sonnet 3.5 and pasted an unchecking script. Presently I am at (-150)-ish checks.

function clickTickedCheckboxes() { // Find all checked checkboxes const checkedBoxes = document.querySelectorAll('input[type="checkbox"]:checked');

  // Iterate through each checked checkbox
  checkedBoxes.forEach((checkbox, index) => {
    // Use setTimeout to add a delay between clicks
    setTimeout(() => {
      // Click the checkbox
      checkbox.click();
      
      // If this is the last checkbox, call the function again after 2 seconds
      if (index === checkedBoxes.length - 1) {
        setTimeout(clickTickedCheckboxes, 2000);
      }
    }, index * 2000); // 2000ms (2 seconds) delay between each click
  });
}

// Start the process clickTickedCheckboxes();



When I was a kid I thought he was talking about the apes.

Also, I have not yet had a good, clever opportunity to say "Take your stinking paws offa me you damn dirty ape" but it is awaiting its moment.



It’s considered bad UX to have a million checkboxes (or a million of any UI element) on a single page.

Consider breaking this up into 3-deep nested pages, each with 100 options.



I'm sorry, I think I made the server crash with the following js code:
    Array.from(document.getElementsByTagName("input")).forEach(e => {e.checked = true})


there are a lot of great usage patterns going on.

i saw checked boxes hit almost 800K and then start dropping fast.

i've seen every other checkbox get checked on the entire screen in a second. some great scripting going on and i'm sure a lot insight is being learned by watching the tech stack handle these loads.

i noticed initially log messages were showing one check box change at a time but at some point updated to batching which is great. release and optimize!



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

That's probably one of these reasons that cross your mind to justify buying new domains. Which is an addiction to some folks (including me)



Keyboard shortcuts to scroll up/down don't work unless you click into the array of checkboxes. I think this could be fixed by adding `tabindex="0"` to the div holding the grid.



I want to see a time graph of the total number of checked boxes.

I would think that over time more boxes are being unchecked, but I also see a lot of people re-checking the unchecked boxes.

Also, I would think the script kiddies would be automatically unchecking most of them by now.

Yet, nearly all (over 900k) remain checked.



I wonder what we'd see if you could only check boxes that are adjacent to already checked boxes (you'd obviously need to seed the array with some "anchors"). How long would it take for people to clear it?



this is very neat, I love this kind of experiments! could I ask you what's your hardware configuration for handling so many WebSocket connections? I'm just curious to know what's the maximum capacity of WS connections you can reach now that you posted on HN :)



It would be fun to attempt this with crdt's and libp2p (...or similar, I don't actually know those tools well I just like the idea of getting the server out of the loop).



I guess I had a bit of a harsh reaction yeah, sorry about that. I came back here and found the site down. It seems to be back up now though and you're right that it doesn't really matter anyway.

I still do think that at least some people would prefer even their silly site not being spammed with scripted requests.

联系我们 contact @ memedata.com