Most active commenters
  • ajxs(3)
  • gdhkgdhkvff(3)

←back to thread

296 points reverseCh | 18 comments | | HN request time: 1.034s | source | bottom

I recently came across the concept of "useless" programs - pieces of code that serve no practical purpose but are fun, creative, or challenging to write. These could be anything from elaborate ASCII art generators to programs that solve imaginary problems. I'm curious to hear about the most interesting or creative "useless" programs the HN community has written. What was your motivation? What unexpected challenges did you face? Did you learn anything valuable from the experience? Some examples to get the ball rolling: 1. A program that prints the lyrics of "99 Bottles of Beer" in binary. A text-based game where you play as a semicolon trying to find its way to the end of a line of code. A script that translates English text into Shakespearean insults. Share your creations, no matter how quirky or impractical. Let's celebrate the joy of coding for coding's sake!
1. ajxs ◴[] No.41919953[source]
A long time ago I wrote a useless, but fun program that attempts to programmatically recreate a source image by randomly placing randomly sized, randomly coloured rectangles onto a canvas. If the result of this random application of colour is closer to the source image, it's kept, otherwise the changes are discarded. Over time, it gets reasonably close to the source image.

https://ajxs.github.io/pbp/

replies(6): >>41920220 #>>41920380 #>>41921412 #>>41921498 #>>41923435 #>>41923497 #
2. nmax ◴[] No.41920220[source]
This is awesome.
replies(1): >>41921056 #
3. IAmGraydon ◴[] No.41920380[source]
Isn’t this basically how stable diffusion works?
replies(2): >>41920428 #>>41921419 #
4. IshKebab ◴[] No.41920428[source]
No.
replies(1): >>41920524 #
5. IAmGraydon ◴[] No.41920524{3}[source]
I’m pretty sure it is, except instead of comparing the result to a source image, it is analyzed and scored by a model that was trained to recognize images.
replies(2): >>41920923 #>>41921293 #
6. msephton ◴[] No.41920923{4}[source]
It's kind of the opposite. Stable Diffusion starts with random noise, changes it, asks the model of it's representative of the goal, repeat. But there's much more to it.
7. ajxs ◴[] No.41921056[source]
Thank you very much! The browser landscape was very different when the original code was written, around 10 years ago. Maybe I'll revisit it and see if it can be optimised!
8. Diti ◴[] No.41921293{4}[source]
Diffusion models are trained to denoise.
9. kristianp ◴[] No.41921412[source]
I like how the code is just plain javascript, and less than 114 lines of code.

https://ajxs.github.io/pbp/main.js

replies(1): >>41923834 #
10. NotAnOtter ◴[] No.41921419[source]
This is like the tech reporter's version of stable diffusion.

Does it have some similarities? sure. Is it easier to understand than actual stable diffusion? yes.

Is this basically how stable diffusion works? Not even close.

11. gdhkgdhkvff ◴[] No.41921498[source]
Sort of similarly (sorry I don’t have a link handy but could find one tomorrow if anyone is interested), there was an interesting program someone posted in an AskHN post a year or two ago where the program took an input image, started with a blank circle that was made up of a configurable number of “pins” evenly spaced apart around the perimeter, and then starting from one “pin” iteratively found the next pin that, when connected with a line from the current pin, most made the generating image look more like the input image compared to the other possible lines, and then onto the next pin and the next until you had an image that roughly looked like the input image. The point of that original program was to figure out the best way to connect pins inserted around a circular frame with a single long thread and then weave the image with it. The original post had pictures in it of the guy’s finished artwork and everything.

I don’t remember what language he wrote it in, but I converted it to a react app that handled everything client side using html canvas and bitmap images. Not to publish or anything, just for fun.

replies(2): >>41922523 #>>41923634 #
12. jimhi ◴[] No.41922523[source]
Please find! I’m looking for this now too
replies(1): >>41924889 #
13. eloisius ◴[] No.41923435[source]
Fun. At a very high level this is similar to what Gaussian splats do. You nudge Gaussians, that start out as random blobs in 3D space, in a direction that minimizes a cost between their projections into known camera poses and input images.
14. dspillett ◴[] No.41923497[source]
I've seen a similar thing used to generate low-size versions of images using arbitrary SVG primitives (large triangles or circles rather than small blocks), for use as placeholders while high-res images load. I can't find any of them in quick search, but there were a couple of F/OSS tools that implemented the trick.

UPD: found one of them, https://axe312ger.github.io/sqip/ (look at the “SQIP primitive art” column in that page's examples table)

15. kuu ◴[] No.41923634[source]
With your description, ChatGPT tells me it may be this one:

https://github.com/callummcdougall/computational-thread-art

Is it? :)

replies(1): >>41924911 #
16. ajxs ◴[] No.41923834[source]
I was feeling a bit self-conscious about my 2015 Javascript, and gave it a bit of a polish! So it's slightly more than 114 now. I'm glad you appreciated this! The whole idea is built around a very simple mechanism.
17. gdhkgdhkvff ◴[] No.41924889{3}[source]
After much sleuthing, I finally found the original comment. It has a link to images of the built out project which is nice and in the replies the OP posts links to the GitHub gist. If any interest in my react version I can make that public too, just know it was quick and dirty but does work.

https://news.ycombinator.com/context?id=37036108

18. gdhkgdhkvff ◴[] No.41924911{3}[source]
It wasn’t but that is VERY similar haha. Wonder if this person had the same idea as I did. Namely “hey this idea is cool! I MUST build it myself to tinker with.” Lmao

After much sleuthing, I finally found the original comment. It has a link to images of the built out project which is nice and in the replies the OP posts links to the GitHub gist. If any interest in my react version I can make that public too, just know it was quick and dirty but does work.

https://news.ycombinator.com/context?id=37036108