November 3, 2025

Ink vs IDE: choose your fighter

Handwriting Programs in J

Can you really code by hand? J lovers cheer, others say “ow my brain”

TLDR: Wayne explores handwriting code with the ultra‑compact J language, arguing its tiny, tree‑like style might fit pen and paper. The community splits: dreamers want a programmable e‑ink tablet, skeptics say J is brain‑breaking, and an old 2017 debate resurfaces—highlighting how we still want more human ways to code.

Hillel Wayne fell down the rabbit hole of the ultra-compact language J, asking a wild question: could code be better hand‑written? J, descended from APL, uses “verbs” and a right‑to‑left style that turns programs into tiny puzzle trees. Wayne argues its concise, binary‑tree vibe might actually suit pen‑and‑paper better than bulky typed code.

Cue the comment drama: some readers swooned over the analog dream, like the e‑ink crowd craving a stylus‑friendly coding tablet. One fan basically said “forget VR, forget AI, forget robots—give me handwriting Emacs,” and the thread nodded in wistful agreement. Others? Absolute brain‑melt. J’s cryptic symbols had folks joking it’s less a language and more hieroglyphics for math wizards. A brave soul confessed J “broke my brain,” twice. Meanwhile, a nostalgia bomb dropped: this debate lit up back in 2017 with a big HN thread, proving this fight never dies.

The strongest opinions split hard: Team Paper says thinking by hand is magic; Team IDE says “why suffer?” The memes flew—“J stands for Just Why,” “monads = one‑arg, dyads = two‑arg, headache = infinite.” Still, there’s genuine excitement: if any language could make handwritten code feel natural, J’s compact style might be the one. Will someone build the e‑ink coder of our dreams?

Key Points

  • J is an array programming language descended from APL, using verbs (monads/dyads) and right-to-left evaluation.
  • The article demonstrates defining an explicit mean function in J and a tacit equivalent using a fork (`+/ % #`).
  • J’s interpreter can optimize tacit verbs, making them faster and more memory-efficient for certain array sizes.
  • J provides compact combinators and operators like `f@:g`, `(f g) y`, prefix `f \ y`, and accumulate `f /\ y`.
  • Tacit J verbs expand to binary trees; conversely, binary trees of verbs/nouns can often be condensed into a single tacit verb.

Hottest takes

"I don't want VR headsets... I just want this" — yepguy
"J kind of broke my brain" — tombert
"(2017) At the time (100 points, 29 comments)" — gnabgib
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.