I love this shirt! Here's a nice video from the actual designer about the process of making this shirt (including intentionally making it hard to OCR): https://youtu.be/jocGLiecpjU?t=526
Decoding the obfuscated bash script on a Uniqlo t-shirt
71–80 of 253 posts
Re: Decoding the obfuscated bash script on a Uniqlo t-shirt
#72Re: Decoding the obfuscated bash script on a Uniqlo t-shirt
#73My old colleague had one with a Go program[0] which I always thought was quite cool. [0] https://github.com/GL-Kageyama/UNIQLO_Akamai_T-shirt_Code
Re: Decoding the obfuscated bash script on a Uniqlo t-shirt
#74Re: Decoding the obfuscated bash script on a Uniqlo t-shirt
#75Re: Decoding the obfuscated bash script on a Uniqlo t-shirt
#76OCRing this is a nightmare and is a good benchmark to any self-proclaimed good OCR/vision model. I think though it could likely be easily OCR'd if you give the image to any decent agentic harness with a good vision model, e.g. newest Claude/GPT ones, and tell them to split the image per lines, and then just OCR each line individually. I wonder if the script itself was written by an LLM before obfuscation? There seem…
> I wonder if the script itself was written by an LLM before obfuscation? From the prototype shown here [0], and the way they talk about their process, I sincerely doubt it. Especially as they mention trying to make it hard for AI to handle the output. [0] https://youtu.be/jocGLiecpjU?t=567
The AI not handling the output relates to the final base64 output on the T-shirt (which other comments in this thread mention manually keying in or TFA discusses in the context of OCR). So, that is just not relevant to the question.
What made me start to wonder, personally, was that the output seems identical if you use "♥PEACE♥FOR♥ALL" instead of the version with internal repeats. IF there is any point to that "manual expansion of the cycles", IMO that deserves a comment much more so than "# Calculate length of text; text_length=".
Also, that `echo -n ...` followed by `echo ""` instead of just plain `echo` in the first place seems like the kind of copy-pasta code LLMs generate. Then again, regular devs also write pretty bad copy-pasta code.
There is also this the weirdly "broken down" calculation with 3 `bc` invocations not 1 as if it was translated from a language with more arithmetic/special function power than bash.
There is also the color scale stuff done in the loop instead of outside (except the one color=$(..)) which seems very unnatural and also very like machine translation.
Also, at least for me, on my bash-5.3.15(1), `char="${text:t % text_length:1}"` does not work to slice out the multi-byte UTF8 heart symbols, but it sure does look like the kind of thing an LLM would do translating from a python3 script (such as something like https://news.ycombinator.com/item?id=48830669) into bash.
Another thing is, as others here have observed, there is nothing "gradual" about the xterm-256 color cube. So, "gradient" is a misnomer and exactly the kind of weird things LLMs do when they cobble text together.
Finally, all the tput stuff the script does instead of just "print x spaces" really smells like a human description of the side scroll in the video game graphic he shows inspired him somehow LLM-corrupted/complexified into the vertical scroll terminals do.
None of this is conclusive, but the video mentions 2023..2025 as when he did it and given that he was a designer and his concerns more visual than code-oriented, I'd have to say I disagree with your sincere doubt and I do strongly suspect the decoded script was very likely LLM-circa2024-generated, possibly with light post-edits by hand.
Re: Decoding the obfuscated bash script on a Uniqlo t-shirt
#77Re: Decoding the obfuscated bash script on a Uniqlo t-shirt
#78Re: Decoding the obfuscated bash script on a Uniqlo t-shirt
#79 #!/usr/bin/env python3
from os import environ; E = environ.get
from math import sin
from time import sleep
text = "♥PEACE♥FOR♥ALL" # The text to sine-scroll animate
nText = len(text) # Number of utf8 chars
freq = 0.2 # Frequency scaling factor
color0 = 12 # xt256 Color cube segment 12..
As mentioned in https://news.ycombinator.com/item?id=48830634 , the heart symbols did not otherwise even work for my bash and some have commented on liking the screen saver.