Each visit to the page deteriorates the main image
crowd-jpeg.vercel.app
crowd-jpeg.vercel.app
We talk about bit-rot, broken links, etc, so I thought it would be interesting to take that a step further and visualize what would happen if a webpage decomposed over time like organic matter.
All it has is some stupid placeholder text right now. It uses cloudlfare workers and kv storage to keep the current text, so there are lots of concurrency/latency issues. Once the entire page is deleted it will start again.
Code here: https://github.com/ch33zer/self-deleting
https://en.wikipedia.org/wiki/I_Am_Sitting_in_a_Room
> The piece features Lucier recording himself narrating a text, and then playing the tape recording back into the room, re-recording it. The new recording is then played back and re-recorded, and this process is repeated. Due to the room's particular size and geometry, certain frequencies of the recording are emphasized while others are attenuated. Eventually the words become unintelligible, replaced by the characteristic resonant frequencies of the room itself.
performance recording: https://www.youtube.com/watch?v=bhtO4DsSazc
back when i worked in a VHS dubbing facility, we'd get bored and do stupid stuff like this taking a master to VHS, then using the VHS as a master to make dub of dub of dub. after the 8th dub, it was pretty trash. Similarly, we'd take a video in -> video out to another VCR -> video out cascading down until the original signal to the video in of the last VCR was trash. (the place was wired correctly with proper video DAs. we did this because it was 3rd shift and no supervision)
The track "dlp 4" is a pretty good example of this, it can be found on youtube for the curious.
(you could probably actually set Stable Diffusion up to iterate towards a new refinement of an image each time a webpage gets a new unique visitor...)
https://www.youtube.com/watch?v=mjnAE5go9dI
They are tape loop recordings where noise and cracks gradually increase over time as the tape is played and deteriorates.
It reminds me of Sampson by Chris Burden. Each visitor to the art gallery pushed a pair of giant pistons further towards the point they would collapse the gallery walls.
When you look at a web page, there are only a few ways you know how old it is. Absent a date in the URl or page, your best guess is how modern or fashionable the CSS is.
With a paper document, you get yellowing, staining, curling, tearing - moreso if it were popular.
I'm not saying that adding wear and tear to a digital document is a good thing - but it could be a handy contextual skeuomorph.
Sounds (over)complicated. Isn't just a static html webpage on php/js backend with sqlite or even without, just grepping logs via cron, do the trick?
Having Nginx as a front-end, with static file caching enabled, would handle just fine the load from HN front page even on a RPi.
(1) turn on an ec2 host
(2) write a Python script to serve the image (degrading it on every call)
(3) configure nginx to ffi to the script.
https://docs.ycombinator.lol has been running for years without fail. It’ll probably shut off someday and be lost to history, but I’d bet on it lasting a lot longer than that ec2 instance. Free, too.
Vercel looks to be some service that deploys pre-built apps (geared towards nodejs/react, hard pass).
Maybe to someone who only knows "modern web dev" it seems like a parody, most people don't start with "let's learn 10 overcomplex frameworks and use a template generator which only takes one step".
For generating horrible bloated apps as fast as possible you may have something "easy", I will probably never use vercel, I'm much more likely to write a script and expose it on a port somewhere.
Unless I've misgauged vercel and you can feed it a python script or something...
You already have shared code, utils, infrastructure to deploy.
Personally I like to have all projects in the same language.
For instance the distorted image is being loaded as base64 data blob within the html. The size of that page is 401kB, most of which is in that base64 data. The actual jpeg is just 97kB (the non-distorted image is about 300kB). If the image is served separately, browsers will cache it for those who just reload the page (there is no need to update it anyway, since it is updated on the server every 400 requests only).
So with a 100Mbps connection you can easily (assuming unique users, thus no caching in the browsers) serve not just tens requests/s, but over a hundred requests/s. Put image on CDN, pre-degrade it to have many levels, and with the same server just serving html, you can do thousands request/s.
Your way sounds more complicated.
I wasn't sure how best to handle that on the backend side, not really something I've ever had to do before. Especially dealing with (possibly) full text fields and a bunch of people hitting up the website in a short period of time, possibly thousands at a time.
I could have just recorded visit counts, and have it randomly generate on the client side based on the visit count, but I wanted to keep it persistent for all viewers.
Also what would you need a database for? Why not write to a text file?
Like imagine a murder-mystery game, of sorts. The story gives more clues as each guess to solve the murder goes unanswered. Or a choose your own adventure type scenario, where the directions are "chosen" by some visit.
Interactive story telling on the massively-multiplayer scale could be really interesting.
Kind of matches another idea I had, but never got around to making, where it was kind of a mystery novel, but it was written in segments, and each purchased PDF would create a random assortment of like 30% of those segments, with some enforcement of sequencing or acts to keep them somewhat coherent, and in some of those segments would be some pretty crazy relevations, and then there's a shared community book available to anyone who's purchased a copy of the individualized book, that auto-includes any passages that people choose to share from their copies (or I could just let people do it themselves, add it to a wiki or whatever).
But they could also choose to keep it private if they wanted, and the website would let everyone know how many times each passage has been generated (but not shared).
I even considered making the tech in a way that if successful I could open it up to others to make and sell their own stories like that, like a dedicated website.
Problem is, you need to write a story that works with that format, and that's difficult. I started a bit of work on it, and then got distracted by other projects.
It's kind of like those old sticker books back in the day, where you buy packs of stickers and put them in numbered spots in the book and it slowly reveals the whole picture. Loved getting those back when I was a kid.
Also getting the random generation right so it doesn't like give everything away after just 10 books sold.
Still like the idea though. Maybe someday I'll get back around to it.
Probably because I was coming up with various ideas of making it more gamified, where visitors could help keep the page from falling into entropy by spotting errors and fixing them (like it'd only work if they changed it back to the correct word or whatever).
But yeah, pseudorandom might be the way to do this on a basic level. Good idea.
If you look at things that get overwhelmed by HN, more often than not they get fixed pretty quickly as the authors figure out they've missed something relatively straightforward that's response-murdering.
https://github.com/kumpmati/crowd-jpeg/blob/main/api/src/ser...
A website with a button and a countdown. If the timer hits zero, a large sum is donated to a charity. The button resets the timer. Anyone can push the button.
I would call it “This is Why We Can’t Have Nice Things.”
All I need is to figure out a free way to maintain a tiny api that provides state.
So you have the money to donate a large sum all the time?
Send me the money and I'll implement it :-)
I need a free state host for a single timestamp and I need to also write a button-pressing bot, carefully, to keep me out of crippling debt.
import requests
import time
for i in range(100):
print(i)
r = requests.get('https://crowd-jpeg.vercel.app')
if i%10 ==0 : time.sleep(3)Buahahahahahahah
https://joeldare.com/private-analtyics-and-my-raspberry-pi-4...
Granted, it was a Sunday.
The post has now 76 points in 40 minutes, so an average of (76*100+50)/40/60 ~= 3.2 that is close to your 4.9. But the peak may be much higher, like the 20/s reported by other users.
> You could see this website as a metaphor for the effects of tourism, how humanity affects nature, or how meme quality degrades over time as they are shared.
Given the hypercapitalist point of view here, I figured it was some auto-degrading NFT.