May 24, 2026
Brace yourselves, keyboard drama
Curly braces: An evolution of Unix and C
Before modern keyboards, coders had to fake curly braces — and commenters are obsessed
TLDR: Early Unix programmers often couldn’t type curly braces directly, so the system translated substitute characters behind the scenes. Commenters loved the bizarre workaround, swapping old memories, decoding strange language design choices, and reigniting the eternal fight over what code should look like.
A delightfully nerdy history post about curly braces somehow turned into a full-on comment-section memory lane, with readers reacting like they’d just discovered their grandparents texted in code. The big revelation from Thalia Archibald’s blog is that early Unix machines and the famous Teletype Model 33 didn’t even have the now-essential {} characters. So in the early 1970s, programmers basically had to hack around the keyboard itself, using escape tricks like \( and \) just to write code that today looks totally normal.
And yes, the community had feelings. One camp was pure nostalgia: people chimed in with hazy college memories of weird double-character stand-ins, sounding half haunted and half impressed that software survived at all. Another crowd seized on the missing symbols to explain old-school language quirks, especially why Smalltalk’s arrow symbols suddenly make historical sense. It was one of those rare threads where obscure computer history made commenters go, “Wait… that weird thing I’ve seen for years actually had a reason?”
Then came the philosopher-kings of programming discourse. One standout comment turned the whole thing into a broader rant about how people get weirdly emotionally attached to what code is ‘supposed’ to look like. That gave the thread its spiciest undertone: beneath the fun trivia was a low simmering debate over convention, aesthetics, and whether programmers can ever stop arguing about punctuation. In other words, classic internet drama — except this time, the divas were braces, arrows, and 1960s keyboards.
Key Points
- •The Teletype Model 33, based on ASCII 1963, lacked lowercase letters and characters including `{`, `}`, `|`, backtick, and `~`, creating problems for later C syntax.
- •C89 introduced trigraphs such as `??<` and `??>` for braces, and C95 later added digraphs like `<%` and `%>`, but these standards came after the Teletype Model 33 era.
- •Beginning with UNIX V4 in November 1973, the teletype driver translated `\(` to `{` and `\)` to `}` for terminals that could not print brace characters.
- •The article places the addition of brace translation between the August 1973 nsys kernel, which lacked it, and the V4 manual; Utah_v4 and Dennis_v5 kernels included the support.
- •UNIX's brace-escaping behavior grew out of line-oriented terminal input handling inherited from Multics, which used `#` for erase and `@` for kill on devices that printed on paper and could not erase output.