HN Debrief

Decoding the obfuscated bash script on a Uniqlo t-shirt

  • Programming
  • Developer Tools
  • Design
  • AI
  • Security

The post walks through extracting and decoding a bash script printed on a Uniqlo x Akamai shirt. The script is base64-wrapped behind an `eval`, and when decoded it animates the phrase “PEACE FOR ALL” across a terminal using colors and a sine-wave style motion. The author tried phone OCR, Tesseract, Claude, and manual cleanup to reconstruct it, then inspected what the script actually does. A linked designer video filled in the missing context. This was not random fake code. It was deliberately made as a real Easter egg and intentionally styled to be awkward for OCR.

If you ship code as design, people will inspect every detail, from font choice to shell portability. Treat novelty code like real code and assume modern OCR and vision models will tear through anything that only looks hidden.

Discussion mood

Mostly amused and appreciative. People loved that the shirt contains real runnable code, but the strongest technical reactions were nitpicky in a good way: the “obfuscation” is overstated, the typography mangles the monospace premise, and the script itself is charming but sloppy and non-portable.

Key insights

  1. 01

    The shirt breaks the monospace illusion

    The real design glitch is not the bash. It is that the printed code appears set in Roboto Mono and then spaced with kerning or proportional adjustments, which defeats the fixed grid code relies on. That pushed the conversation into a useful side topic about fonts like Monaspace and iA Writer Duo that bend monospace rules carefully, versus layout tools that do it accidentally and make code harder to read.

    If you put code into a visual design pipeline, check the output like code, not just like text. Disable optical kerning and any proportional spacing unless you intentionally want to turn readability into part of the puzzle.

      Attribution:
    • raphlinus #1
    • speerer #1
    • roblabla #1
    • Lalabadie #1
    • kccqzy #1
  2. 02

    OCR difficulty depends on the tool class

    Consumer OCR and AI copy-from-image features gave wildly different results, but purpose-built machine vision OCR and top-end multimodal models often got close enough or even solved it outright. One commenter said an industrial OCR model read it correctly on the first try with default settings, which is a reminder that factory text reading is a separate problem domain with different training data and support assumptions than phone OCR or generic document OCR.

    Do not generalize from one OCR failure. If your product, workflow, or security assumption depends on text being hard to extract, test against both consumer tools and specialized OCR stacks.

      Attribution:
    • wbh1 #1
    • speerer #1
    • fennecfoxy #1
    • kyusan0 #1
    • imp0cat #1
    • grumbelbart2 #1 #2
    • underyx #1
    • richstokes #1
  3. 03

    The extra comments may be part of the artwork

    What looks like bloated or LLM-ish code also makes sense as deliberate shirt design. The script needs enough payload to fill the garment, and the specific characters in the base64 likely matter because the highlighted letters spell out the visible message across the print. In that framing, verbose comments are not dead weight. They are layout material and part of the puzzle's affordance for people who decide to decode it.

    When code is also packaging or branding, optimize for the artifact, not just execution. Compression, comments, and repetition may carry visual or experiential value that outweighs code golf.

      Attribution:
    • IshKebab #1
    • petu #1
    • latexr #1
    • boomboomsubban #1
    • Tiberium #1
    • OtherShrezzing #1
    • lemagedurage #1
    • speerer #1
  4. 04

    LLM fingerprints are not obvious here

    The speculation that the script was LLM-generated never really stuck because the stronger explanation is simpler. The designer prototyped in Python, then produced bash that looks exactly like bash written by someone more comfortable in another language. The weird `bc` usage, over-commenting, and awkward structure read less like proof of AI and more like a translation by a human crossing tool boundaries.

    Be careful treating code style quirks as AI detection. Cross-language translation, novice shell habits, and design-driven constraints can produce the same smell.

      Attribution:
    • preetham_rangu #1
    • cb321 #1 #2 #3
    • shakna #1
  5. 05

    This sits in a long code-on-shirts tradition

    Several people connected the shirt to older novelty and activist code wear, especially DeCSS shirts and MIT code shirts, plus an earlier Uniqlo x Akamai design that used Go. That framing makes the shirt less of a one-off gimmick and more of an update to a familiar subculture artifact, with base64 and shell replacing the older era's legal provocation or language in-jokes.

    For developer marketing, this kind of object works because it plugs into an existing tradition people already know how to read. The novelty is not just the code. It is the continuity with hacker culture.

      Attribution:
    • ExoticPearTree #1
    • mdgld #1
    • thomaslwang #1
    • nico #1
    • breppp #1
    • speerer #1
  6. 06

    The script is runnable but not very portable

    Once people stopped admiring the stunt and tried to execute it, the rough edges showed up fast. The printed version appears to miss a newline after the shebang, some environments lack `bc`, and at least one locale setup breaks the Unicode hearts unless you force UTF-8. That does not kill the joke, but it does mean the code behaves more like a demo tied to one machine than a robust script.

    Novelty code still gets judged like production code when you invite people to run it. If portability matters, test shell snippets across locales, package defaults, and line-break handling before you print 10,000 copies.

      Attribution:
    • khernandezrt #1
    • l337h4x0rz #1
    • _kst_ #1
    • NikxDa #1
    • lloydatkinson #1 #2
    • em500 #1
    • cb321 #1

Against the grain

  1. 01

    Base64 is not worthy of deobfuscation hype

    The skeptical take is that calling this “obfuscated” flatters a very simple trick. The payload is plain base64, the script is heavily commented, and the only real friction comes from transcribing text off fabric. That reframes the whole thing as marketing wrapped in hacker aesthetics rather than an actual reverse-engineering challenge.

    If you present encoded content as a puzzle, set expectations carefully. Technical audiences will punish inflated language faster than they will punish a lightweight gimmick.

      Attribution:
    • episode404 #1
    • raffael_de #1
    • ape4 #1
    • sanmarzano #1
    • mgaunard #1
  2. 02

    Modern consumer tools already solve it

    A few people rejected the whole OCR struggle as self-inflicted because Android image text selection, Safari and Preview text extraction, Gemini, and ChatGPT could already recover or repair the script quickly enough. Even when OCR made mistakes, base64 structure and language-model context often filled in the gaps automatically.

    Assume the baseline capabilities of phones and mainstream AI tools are higher than they were a year ago. Anything relying on casual extraction difficulty is on borrowed time.

      Attribution:
    • fennecfoxy #1 #2
    • OtherShrezzing #1
    • grumbel #1
  3. 03

    Manual work would have been faster than the automation detour

    Several commenters saw the post as a miniature version of corporate over-automation. For a one-off task, typing the script or dictating it to another person may beat juggling OCR engines, diffs, and model-assisted cleanup. The value of the tooling exercise was entertainment, not efficiency.

    Separate “I want to automate this” from “automation is the cheapest path.” For infrequent small tasks, the right decision may be to do it manually and move on.

      Attribution:
    • exabrial #1
    • e28eta #1
    • duskdozer #1
    • world2vec #1

In plain english

awk
A Unix text-processing language often used for pattern matching and lightweight scripting.
base64
A text encoding that turns binary or plain text data into a limited character set, often used for storage or transport but not for security.
bash
A widely used Unix shell and scripting language for command-line automation.
bc
A command-line calculator language available on many Unix-like systems and often used in shell scripts for arithmetic bash cannot do easily.
Consolas
A monospaced font from Microsoft commonly used in coding environments on Windows.
DeCSS
A program and legal flashpoint from the early DVD era that decrypted DVD copy protection and became famous in code-as-speech debates.
eval
A command that executes a string as code, which is convenient but risky because it runs whatever text it is given.
kerning
Adjusting the spacing between specific pairs of letters to improve visual appearance.
LLM
Large Language Model, a machine learning model trained on huge amounts of text to generate and analyze language.
Monaspace
A family of coding fonts from GitHub that experiments with improved readability while preserving code alignment.
OCR
Optical Character Recognition, software that converts text in images or scanned documents into machine-readable text.
Roboto Mono
A monospaced typeface from Google where each character is meant to take the same horizontal space.
shebang
The first line of a script, starting with `#!`, that tells the system which interpreter should run it.
UTF-8
A standard text encoding that can represent Unicode characters, including symbols like hearts and Japanese text.

Reference links

Designer and original references

Typography and code layout

Code art and shirt lineage

  • DeCSS
    Background on the famous code that inspired a long-running code-on-shirts tradition.
  • Wired on the DeCSS T-shirt case
    Historical reference connecting this shirt to earlier code-as-fashion and code-as-speech moments.
  • Quine Clock
    A related example of playful, dense code art that people recommended to anyone who enjoyed this puzzle.
  • aem1k site
    Home for more ASCII and code visualization work in the same spirit.

OCR and automation references

Product links