Most active commenters
  • jinay(6)

←back to thread

296 points reverseCh | 21 comments | | HN request time: 0.94s | 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. jinay ◴[] No.41920264[source]
When I was first learning computer vision, I wrote a program that could tell the time from an image of a clock [1]. I had no purpose for it besides the fact that it seemed like a cool problem to try and solve.

Years later, I get an email from a stranger in Korea, asking me how to run my program. Why would he want to use my silly program? Turns out you can adapt the code to read analog pressure gauges which is really useful for chemical plants. Goes to show that there's often a use for most things.

[1] https://github.com/jinayjain/timekeeper

replies(12): >>41921284 #>>41921434 #>>41921458 #>>41921846 #>>41923054 #>>41923488 #>>41923997 #>>41924793 #>>41925039 #>>41925087 #>>41933954 #>>41936559 #
2. nasseri ◴[] No.41921284[source]
That is so frickin cool!
replies(1): >>41921513 #
3. j_bum ◴[] No.41921434[source]
Thanks for sharing this. The blog article on building your pipeline was a fun read! Your solution has a nice blend of heuristics and DL.

If you’re ever interested in revisiting this click project, you could check out DeepLabCut [0]. A blogpost highlighted a toy example of training a DLC model to recognize clock arms [1], which may or may not be more consistent than your Canny approach :)

[0] https://github.com/DeepLabCut/DeepLabCut

[1] https://guillermohidalgogadea.com/openlabnotebook/training-y...

replies(1): >>41921485 #
4. bambax ◴[] No.41921458[source]
Cool anecdote!
replies(1): >>41921510 #
5. jinay ◴[] No.41921485[source]
Woah generalized pose estimation seems really useful and it's cool that the example is for reading a clock. Thanks for sharing!
6. jinay ◴[] No.41921510[source]
Thank you!
7. jinay ◴[] No.41921513[source]
Thanks!
8. el_benhameen ◴[] No.41921846[source]
Your anecdote gave me a genuine “that’s cool” smile, the sort that I haven’t had over a piece of tech in a bit. That must have been a fun email. Thanks for sharing!
9. andrewgleave ◴[] No.41923054[source]
This is very similar to when I used OpenCV to read the angle of a cardboard knob I pinned on the wall in my office to change the volume on Spotify!
replies(2): >>41923427 #>>41924158 #
10. yurishimo ◴[] No.41923427[source]
That is a super cool idea! Kinda sad that it doesn’t make much sense outside of a very particular use case scenario. Much more practical to mount a potentiometer to the wall for any sort of fixed installation.

It might be cool adapt for a mobile office setup where you’re only present in one location for a few days but still want some automated creature comforts.

replies(1): >>41925334 #
11. hi_hi ◴[] No.41923488[source]
Out of interest, how does this account for the orientation of the clock? Is it assuming 12 is always at the top, or is there some way it would work if the photo was somewhat rotated?
replies(1): >>41926446 #
12. dotancohen ◴[] No.41923997[source]
Did you once share this anecdote on /.? I remember this.
replies(1): >>41926457 #
13. christkv ◴[] No.41924158[source]
lol that’s great and not that useless at all. I could see using Lego and opencv to create adhoc control boards for some fun hacking.
14. Gazoche ◴[] No.41924793[source]
I used to work for a company that makes smart watches with real (software-driven) mechanical hands, and had to write a very similar computer vision program to read the time from those watches and automatically calibrate the position of the minute and hour hands. So yes it has real purpose ;)
15. kekeblom ◴[] No.41925039[source]
At ETH we worked on an analog pressure gauge reading project. In the larger project, we wanted to read analog pressure gauges in oil refineries. https://github.com/ethz-asl/analog_gauge_reader
16. blacklion ◴[] No.41925087[source]
long-long time ago (think end of last century) friend of mine take contract to automatize gas-pump stations on long gas pipe. Stations were here, with analog gauges and valves.

Offer from some "big" business with digital / connected gauges and motorized valves were too much for customer. He wanted much, much cheaper.

There were special modems, which use pipe as data line (think something like 150 baud shared between all stations).

So, solution implemented by my friend was like:

1) Electric motor with gearbox to motorize valves, it was cheap, as standard electric motors are cheap and customer has its own mechanical shop, so everything was cobbled in-house from standard of-the-shelf components.

2) Modem for each station (it was inevitable)

3) Laptop with B/W web cam on each station.

4) Software which can read gauges from webcam shots.

5) Software which transmit values from all stations to central station and allows to manipulate valves from central station (no automation here, 24/7 human operators)

Laptops and cameras were not cheap from personal point of view, but like x100 cheaper than special gauges and valves offered by gas-pipe equipment manufacturer.

It was not called "computer vision" at this time.

17. carapace ◴[] No.41925334{3}[source]
Cf. https://dynamicland.org/

> Dynamicland is a nonprofit research lab creating a humane dynamic medium.

> What that means is a way for real people in the real world to explore ideas together, not just with words and pictures, but with computation.

They're doing stuff like that.

18. jinay ◴[] No.41926446[source]
Yep, it does some naive rescaling of the clock to make it circular (since perspective would make it more like an ellipse in the image), but then assumes 12 is always at the top.
19. jinay ◴[] No.41926457[source]
Hmm, I've never used /. so it wasn't me who shared it.
20. p0d ◴[] No.41933954[source]
this had also crossed my mind back a while back for reading home gas meters :-)
21. gwern ◴[] No.41936559[source]
If your timekeeper doesn't perform adequately, there's an impressively overengineered neural net project to read clocks: https://arxiv.org/abs/2111.09162 "It's About Time: Analog Clock Reading in the Wild".

(Although I don't know how it would compare to the latest generalist vision models... Clocks are pretty well labeled in photographs online, one would expect.)