This was fun, I forget sometimes how silly all our grade school math worksheets used to be. I always had trouble showing my work for simple additions and multiplication, it's a bit easier when its a self motivated dunking on the GPUs.
It may take 4-5 days and 1000+ people, but it's definitely created a greater sense of community than any faster rendering system. I like looking over the different pixels and knowing that they represent some nerd-sniped engineer like me.
Ah, I remember seeing some chinese summer math workbook shared online where the answers to each problem could be translated into a bit that could be plotted in a giant grid on the last page.
When completed, it would show a QR code, that upon scanning would mark completion of the workbook and show you the answer key. The implicit idea being you didn't have to be perfect, just good enough so the error-correction algorithm of QR codes was enough to pick up the final image. (Probably extra credit if you could figure out how to do as few problems as needed and then use EC to still figure out the secret link)
It's slightly older than 3rd grade, but for Pi Day 2022, Matt Parker marshaled a couple dozen students to spend a weekend computing pi by hand: https://www.youtube.com/watch?v=dtiLxLrzjOQ
The author should implement an error correction system, where 1) the result is withheld from the display until a second corroborating calculation comes in, and 2) if there is disagreement, request an arbitration from a third user whose job is to pick which of the two is the best answer.
It is a bit odd; they specifically ask for the picture of the worksheet, and say they’ll check it. I wonder if the just haven’t gotten around to it yet. Automatic error checking would be nice (IMO just let multiple people do each pixel and take the most popular result).
They ask for the worksheet to check that you're not cheating. They don't check the pixel values. I think much of the charm of the image is seeing the errors.
By the way, there's more going on in the shader algorithm than you might expect. Here's an explanation of the worksheet:
u, v are coordinates relative to the center of the image
h is radius from center, squared
Section B generates the ball:
B3-8 generates the reflected color on the ball.
B9-11 applies the diffuse illumination to the ball.
B12 adds the illumination highlight.
Section C creates the ground:
C5 puts a shadow directly under the ball.
C13 is the cast shadow of the ball.
Section D creates the sky with a simple gradient
Section E converts the image from two-color to three-color
Or a story if anti-aliasing but getting each pixel computed multiple times and averaging the results. Over time the image should get better as the errors are diluted. It will significantly increase the amount of HPU time required, but with enough human processing units willingly taking part the wall-clock time might not be too badly affected.
Yes, I find it interesting to note the different types of errors. There are some random errors, but many of the errors seem to be repeated. It looks like a lot of people ended up in the wrong code path, resulting in blue/white pixels in the lower half, while fewer people made the reverse mistake (yellow pixels in the upper half). There are a lot of purple pixels in the upper right; I wonder what led many people to the same mistake.
Another interesting thing is to try to reverse-engineer the worksheet: section B is the sphere, section C is the ground, and section D is the sky. But then there's the lighting model, shadow, etc.
All of the pixels were already taken by the time I tried, but I did an "error" pixel (11, 26) just for my own pleasure.
Somehow I got RGB(255, 50, 194), which is different from the value posted on the chart. Actually, I'm not sure how originally they got 0, since G comes from R and B, which are both positive, and the expression is multiplication and addition.
This was as much fun as it looked like. I got some nice paper, a nice pen, and made neat boxes for steps, rough columns, etc. I also converted the final RGB to hex for fun, and made a rough representation of it via colored pencil combinations. Total time was about an hour, I think, but the time wasn’t important to me. This was enjoyable.
It’s funny that “This was as much fun as it looked like,” could be interpreted accurately in either direction, depending on your personal predilections.
I used to think this way but I have become frustrated at my inability to intentionally convey interesting thoughts. I now strive to minimize ambiguity.
Yeah, this was a tad flippant. At work, I’ve often had something I write be received in a wholly different manner than I intended. My coping strategy for now is to preface anything that I think might be viewed differently with a “this does not mean…” warning. But of course, if I knew all of the sentences that might be received differently, I wouldn’t be in this situation to begin with.
This is a particularly fun exercise when you recall that the original "computers" were people doing arithmetic, not at all dissimilarly to what’s done here, just with less parallelism. Though they did at least have mechanical adders and multipliers!
Los alamos used a room full of women for doing simulations when their IBM machine was out of order:
We needed a man to repair the machines, to keep them going and everything. And
the army was always going to send this fellow they had, but he was always delayed.
Now, we always were in a hurry. Everything we did, we tried to do as quickly as
possible. In this particular case, we worked out all the numerical steps that the machines
were supposed to do — multiply this, and then do this, and subtract that. Then we worked
out the program, but we didn’t have any machine to test it on. So we set up this room with
girls in it. Each one had a Marchant: one was the multiplier, another was the adder. This
one cubed — all she did was cube a number on an index card and send it to the next girl.
We went through our cycle this way until we got all the bugs out. It turned out
that the speed at which we were able to do it was a hell of a lot faster than the other way,
where every single person did all the steps. We got speed with this system that was the
predicted speed for the IBM machine. The only difference is that the IBM machines
didn’t get tired and could work three shifts. But the girls got tired after a while.
".. Based on the unbelievably true life stories of three of these women, known as "human computers", we follow these women as they quickly rose the ranks of NASA..."
Sure they used their brains. But "brains behind the operation" is a term of art.
Is the McDonald's cashier the "brains behind the operation" because they count change as part of their duties?
Counting change accurately is very important to the continued successful operation of a retail establishment. But it's menial work.
Even Wikipedia agrees with me:
> Alan Turing described the "human computer" as someone who is "supposed to be following fixed rules; he has no authority to deviate from them in any detail."
I think the term "human computer" is extremely misleading without the cultural context behind the term, i.e. that these people were essentially doing 5th grade math worksheets all day. Reading numbers, plugging them into a calculator (yes, really), and writing down the results.
“The reason that these pre-electronic computation jobs were feminized is they were seen as rote and de-skilled,” says Mar Hicks, a historian and author of Programmed Inequality. It wasn’t true, though: “In a lot of cases, the women doing these computation jobs actually had to have pretty advanced math skills and math training, especially if they were doing very complex calculations.”
The work could require superhuman endurance, though. “They had to keep working eight hours a day doing the same equation over and over again—it must have been mind-numbing,” notes Paul Ceruzzi, author of Reckoners: The Prehistory of the Digital Computer.
If I take the words of Alan Turing then your interpretation of menial work, then programming is menial work too. You have fixed rules that you can't deviate from. Is all programming really menial? I would argue that it can be very mentally taxing, the same way math or any intellectual work can be.
At its bases, NASA employed nearly 80 black women as computers, says Margot Lee Shetterly, author of Hidden Figures. One of them, Katherine Johnson, was so revered for her abilities that in 1962, John Glenn asked her to personally verify the flight path of his first launch into space on the Friendship 7 mission. The astronauts didn’t trust the newfangled digital computers, which were prone to crashing. Glenn wanted human eyes on the problem.
“They had a tremendous amount of respect for these women and their mathematical abilities,” says Shetterly. “The male engineers often were not good mathematicians. So the women made their work possible.” Still, some friction existed. Women who asked for promotions got stonewalled or turned down: “For women who wanted to move up, who wanted to be supervisors—particularly if that involves supervising men? Not so much.”
The women wouldn't have been employed without the engineering work, but the engineering work wouldn't have been possible without these women. They were equally the brains behind getting things to space. A sizable number of these women later became programmers, because building the computers was seen as the really difficult task. Coding was dull work. Writing code that gets people safely to the moon and back was obviously trivial.
Over the course of the film, the three women cover a broader range of capabilities than just doing arithmetic, and that tagline is not unreasonable. I'm not being very specific on purpose - you should watch the film.
It feels like a missed opportunity to not show each pixel's worksheet: It would be cool if you could click on each pixel, and it opens a PDF scan of that persons calculations.
Sadly you can’t do that on a site without having people post very inappropriate things, so it would require a human moderator, which I speculate makes it unlikely to happen.
Are you certain a human is inspecting the image? Or is this “moderation” currently automated?
Yes obviously it “can” be done, I’m suggesting it won’t for long, because there’s a big difference between submitting something to the site mods versus submitting something that is anonymously exposed to the public.
I’m saying this as the owner of a site where I made the mistake of allowing crowd-sourced image content to be anonymously served to others. It didn’t take long before not only was there NSFW content, but there was also illegal content.
* edit OH BTW I only just noticed this site was created by IQ, who has already dealt with this exact issue on ShaderToy and had to restrict and remove user submitted images due to abuse! The decision to not show people’s images is almost certainly intentional and by design.
The page does actually say they want to see intermediate results “so we can validate your work.” (Edit that quote has been removed now.)
But there’s no promise that they will. The photo feature may be more of an automated speed bump, a way to reduce silly answers and pixel spam, and let people self-select, than an active human moderation tool. Moderating is boring and expensive in time and/or money, why would anyone actually sift through thousands of hand-written pages of arithmetic?
I had a lot of fun doing this, and while doing the arithmetic, figuring out what the shader algorithm is actually doing. Such a great idea, turning internet users into the world's slowest and most inaccurate GPU
I don’t know anything about shaders, so forgive the question.
My understanding from looking at the worksheet is the person who created the target image has created three separate formulas (depending on the area of the image), that when you feed in the X and the Y coordinates, it spits out the correct RGB value for that pixel. Is that correct? That’s wild.
At their heart, that's what pixel/fragment shaders are. They're calculations for determining what color a pixel should be.
A really basic one returning red for every pixel would make a red screen. The most common use would be rendering a textured mesh and determining how lighting should effect it (is it skin? A metal surface?).
Then you can look at crazy things like https://www.shadertoy.com/ which are all purely made in pixel shaders (also that site is run by the creator of the Human Shader)
What a great experiment. Math looked a bit daunting at first (pixel 22,34) glance but it really wasn't bad. Took me about 4 minutes in total to do the math.
Highly recommended for anyone who wants a chill afternoon challenge. And the best part is seeing the final image come together.
I found it interesting working out what the different sections were on my own. I can't write shaders, but it was enough to roughly judge which parts were ground, sky, and sphere, and where the ground included the shadow. I didn't spot the ambient occlusion or lighting on the sphere, though.
It took me 10 minutes to do the whole computation by hand, so I wouldn't say it's a LOT of work. At the same time I believe this is also one the points of this experiment, to show how much work goes into computing a single pixel value for a very simple 3D scene which makes us appreciate more that our GPUs can do this work billions of times per second.
It's double the work if you skim the instructions too fast and pick your own empty pixel and compute it, only to find that you need to be assigned one!
so someone can just write a script to generate the full image right? since instructions are the same for each pixel. Would make it easier to check your work..
Reminds me of the good old days when you didn't need an expensive GPU to play the latest path-traced games, just a pencil, some paper, and a few friends.
Next time something like this gets done, add a box about estimated time to compute and amount of people computing to the submission form, so that data will more closely describe the amount of work hours used.
Heuristically we can still get an estimate: Group names to individuals and groups. Guess average group size. Take difference between claim and submission for time it took to compute.
I always wanted to see this principled, computer aided work, but for social / real world needs. A lot of friction and pain in our lives comes from the difficulty of regrouping and organizing.. when you have a framework in place to accrete everybody little efforts into a big coherent whole .. I would guess it makes everything fun and fulfilling.
People were too quick to claim so I wrote a hacky script to try to auto-claim in a loop and then ended up with a PNG in my terminal, beware, save the response to the request if you're going to automate the claiming part.
I mean if you want to do it perfectly with no chance of error, let a computer do it, or just find the reference image. This is communal mathematics, and the errors are a part of the experience.
Saying the mistakes make this worse is like saying "I'd really enjoy spaghetti, I think, but all the noodles are ruining it."
the final step in the worksheet provides an error correction heuristic and procedure:
> Thanks a lot for being part of the Human Shader, go find your pixel in the public canvas! Tip: if its color looks wrong to you, feel free to review your calculations and submit again with the same code!
By scrubbing through the duration I haven't found a single error pixel that has been corrected, though. Which is a pity, as they do stand out quite glaringly.