There's a similar anecdote Gillian Anderson recently revealed during an interview on the X-Files, saying Chris Carter had an OCD-like habit to write dialog to conform to certain text layout preferences (no widows[1]) in the script, which made for the show's distinctive style of dialog cadence.
I also saw that interview, then out of curiosity I tried to find any evidence of this. There are some fan sites with ostensibly original X-Files scripts out there[1]. Looking through some written by Carter[2], I wonder if this is apocryphal, or if he was messing with her a bit.
Just scroll through and look. In almost every paragraph or dialogue block, the last line ends very close to the right margin. Pretty much the only places that doesn't happen is when there's a single short line of dialogue by itself, meaning it doesn't wrap to a second line.
Looking through scripts on Boggsfiles, it's much more inconsistent, but it does happen, and perhaps more frequently in the later seasons. Here's one, from season 9; take a look at page 10 (page 13 in the PDF) for example, but it really happens throughout.
“Chris told me I mean that there was a particular way that we used to speak in the show that it that wasn't a normal rhythm and syntax. It was slightly backwards. which felt like it was almost part of the cryptic aspect of the series.
“And it wasn't until we were working on this, I think, the second feature. I was sitting in a parked vehicle waiting to shoot and our showrunner and creator Chris Carter came up to me who was directing the feature and he said he looked at my sides where my lines were and he said, "Look, no widows." And I said, "What what are you talking about?" He said, "No, no widows on the paragraphs that each character has." the word went all the way to the end with the period. So, you didn't like end halfway through that line. So, it was a perfect So, it was a perfect rectangle.
“So, the dialogue was designed visually. For nine years. [laughter] Wow. So, you're struggling. You're struggling with his OCD.
Forming every paragraph of dialog into perfect rectangles is way more extreme than just avoiding "widows". The usual term for this is "full justification" and typographically when it's done it's typically through word spacing and letter spacing. Full justification in monospace through word choice (which is what the Ares Luna article is about) is bonkers, but I can't see that happening for TV dialog.
I've sometimes heard "orphan" used to represent a single word left alone on its own line at the end of a paragraph, but the terms are often confused and Carter could have used "widow" in that sense.
> I've sometimes heard "orphan" used to represent a single word left alone on its own line at the end of a paragraph, but the terms are often confused and Carter could have used "widow" in that sense.
This is an acceptable use of the term "widow". From the Oxford English Dictionary [0]:
> A short line of text (usually one consisting of one word or part of a word) which falls undesirably at the end of a paragraph, esp. one set at the top of a page or column.
But there are dozens of contradictory meanings for "widow" and "orphan" [1], so the definition that you gave isn't wrong either.
Funny because "fixing an orphan" is hard in real life (assuming they've lost both their parents, you have to find them a foster home) but easy in typesetting (just add an empty line before), whereas "fixing a widow" is easy in real life (just remarry) but hard in typesetting.
"No widows" on its own isn't enough to create a distinctive dialog cadence.
"Widows" (alone at the top) and "orphans" (alone at the bottom) are single lines cut off from the rest of a paragraph by a column/page break. The solution is generally just to fiddle with column/page breaks, which is purely typographical.
I'm sure that there's a distinct identity to X-Files dialog; it's just not due to this quirk.
I can totally see a fellow typography geek bragging about this to someone and them being horrified haha.
ETA: I speculate that Carter was avoiding "widows" to be considerate to the actors by not splitting lines across page turns.
I'm also reminded of how David Milch supposedly wrote a lot of Deadwood in iambic pentameter. I only learned about this after seeing the show, but I did pick up the "Shakespearean" feel of some of the dialogue. Constraints often force creativity.
Bugger all - particularly given the boom mic operator and other framing "gaffs" are (as I recall) all part of the "wide screen" 16:9 later release on BluRay etc that were somewhat rushed out the door.
A number of show of that era were filmed wide (16:9) and post processed / coloured / reframed and broadcast on TV in a box 4:3 aspect ratio
No visible boom mic operators, etc - careful eyes in the initial post production for TV phase saw to that.
Later wide screen releases were rushed with no real post production budget to address these and other issues - that's on the studios wanting a second grab at money, not the original creative teams.
Similar complaints abound for Buffy the Vampire Slayer and (IIRC) The Wire (?) and their wide screen releases.
In programming certain word choices are valuable in this way. It's sad that pairs like true/false, good/bad, first/rest, and left/right are unequal length. But there are nice pairs like old/new, head/tail, fast/slow, same/diff, and right/wrong, which can help with create natural vertical alignment throughout a function.
Ah, but I use a normal proportional font in my editor so same and diff have different widths.
That was the fun comment. The serious ones:
1. I'm trading the ability to align statements on consecutive lines for a more pleasant reading experience.
2. Nobody ever complained that my source code is
a = 1
ab = 2
abc = 3
instead of
a = 1
ab = 2
abc = 3
3. No tables or diagrams in comments of course but I think that I could configure my editor (emacs) to use a monospaced font there. I do use a monospaced font for the ``` ``` blocks of md files.
I wonder if at any point during writing, the heroic author of that Super Metroid guide learned that "missiles" are not spent "missles", and decided to own the mistake rather than reword the entire guide.
Judging by the lowercase “m” it’s the 8x16 variation[1] and not the 9x16 one you linked, but otherwise yes, looks like the plain old VGA font? (Incorrectly displayed, as the site points out: the VGA didn’t have square pixels in either of those modes.) The site uses (AVIF) images in place of text, but it’s like 15 minutes to write a program that typesets an ASCII file in a given monospace bitmap font and writes out the result as say a PPM (and I’m sure ImageMagick can do it if you’d rather dig through docs than program), so this doesn’t seem to require any further explanation?
I few years ago I saw a TV interview where some gen-z kid confidently stated: "the dictdionary is supposed to reflect how I talk, not the other was around."
The tricky part is that spoken language and written language are not the same. Even if you are a descriptionist that believes dictionaries should represent how people write, it doesn't necessarily mean that the spelling changes based on how people pronounce it.
And are British, at least in Australia (and the US, I guess?) we pronounce the second "i".
It is always fun when you notice where someone is from based on secondary clues like that -- my favourite is the choice of "a" or "an" where it is ambiguous (for instance, I recently ran across "an HTTP request" where I would've said "a HTTP request").
Definitely in the pool of people that used to do this extensively. I would occasionally increase/decrease the colum limit by a few characters and try again if the words didn't align.
I suspect LLMs would actually struggle significantly with doing it consistently if given purely as a prompt instruction, but you could always constrict the sampling to force words that create a legitimate chain or fine tune / RL in some signal that would assist with it.
You are right that this is hard from a prompt alone, but for a slightly stranger
reason than the obvious one. The model never sees columns. It sees tokens, and a
token can be one character or nine, so "make this line 80 wide" asks it to run a
hidden tally over pieces it cannot count by looking at them. Any slip early in a
line compounds, and there is no backspace key to reach for once it is committed.
That said, the failure is not total. A model can lean on a learned feel for line
length, pick shorter or longer synonyms to land close to the target, and rewrite
a sentence when it overshoots. It will not be perfect every time, but it lands a
lot more often than pure chance would suggest. The sampling trick you mention is
the real fix: mask each token that would push a line past the limit, and force a
newline the moment the count hits the mark. That converts a fuzzy instruction to
a hard constraint with zero training. Fine tuning helps too, but mostly sharpens
the same internal counter rather than replacing it. This reply is a small proof;
if any line here is off by one, feel free to consider your point demonstrated...
An raw LLM no, but given code execution it can do a good job. I had my Claude Sonnet write a sonnet in this form after 14 rounds of iteration with Python:
"perhaps it would be best to let the browsers do it on screens, and typesetting software for printed materials, since they have access to the font, size, text region boundaries, it comes at the small cost that users don't actually get to read what an author wrote, but increasingly this is an LLM anyways, if its a website or legal contract alike"
And here I at first thought the direction the original post was going was "here's how I got a LLM to do this automatically". Seems like it would not be so difficult. Might still be be a win over their innate dispositions.
> BoVeX gives us a controlled tradeoff between these two states. By changing how much it costs for the text to be semantically wrong, we have a dial that allows us to smoothly interpolate between Lorem Epsom and Donald Knuth.
> At the same time, who among us didn’t nod in recognition at least, having once spent hours massaging a button UI string or a tooltip just to get it to fit under the certain width in a densely packed interface?
I did, and then I got a customer email about how they were using a display-zoom OS accessibility feature and things were truncated on their device. :')
Even as a backend dev who dabbles in frontend as a hobby - I get the view looking great on desktop, then a week later I open the site on mobile and am horrified
> This presents a problem for the typical way that academic papers are written, which is to do all the work in a coffee-fueled fugue in the last few days before the deadline, then stay up all night writing the paper and finding citations for the pro-forma “related work” section which you did last but you know that the reviewers will insist upon
I have zero exposure to academia but chuckled because thats often what I do for blog posts :P
AIs these days are pretty good for the 'find prior art and related work' part I find. Of course, you should treat their output like that of an over-eager but somewhat unreliable intern.
The German is more crass: Hurenkind and Schusterjunge, translates to 'child of a whore' and 'shoemaker boy'. The child of a whore does not know where it comes from (who is their father), the short final line - the shoemaker boy is so poor, he does not know where he will end up (the short first line)
Those who lived through the (text-mode) WordPerfect era may remember 'widow and orphan protection' as being one of the features which was advertised for this program, i.e it could be set to either move that orphaned first line of a new paragraph to the next page or move a few extra lines or a whole paragraph to the next page to keep the widow company.
I remember using WordPerfect in that era and never understanding what that feature was. It seemed implausible to me that it was actually protecting human widows and orphans, but I couldn't imagine what it had to do with text layout!
Absolutely! Unfortunately for me, I probably wondered about this 35 years ago and learned the answer 15 years ago. Otherwise, I could be one of today's lucky 10,000 in the xkcd 1053 sense.
this is only tangentially related to the article, but I've always found text justification strange. For me paragraphs with ragged edges are easier to read than justified paragraphs, because the irregular ending point helps me keep track of where I am. And justification can lead to some very odd-looking lines. So I've just never quite understood why it's so common in typesetting
Differences are supposed to convey information. E.g. a paragraph's first line is indented to indicate that this is a start of a paragraph. Differences in line width convey no useful information, so the are suppressed. Same goes for overall text height on a page, although this rule is broken more often.
Typesetters are known to be very specific about small details. E. g. tables are typeset with meticulous alignment rules. It may look superfluous, but it is not. The nature of the craft is that it has to be invisible unless you know where to look.
I've definitely been guilty of wording my multi-line doc comments in a way that would ensure they'd flow without awkward right margins. I would have a macro in vim that would call the fmt program to reflow the comment to 79 (later 98) characters, and then would iterate on word choice until the comments looked good. Not exactly right-justified, but no very ragged edge either.
That's the sort of attention to detail that makes me love an app. Apple used to have this. It's why I became one of their users. My hope is that John Ternus understands why this sort of "spinning of wheels" is essential when he takes over. I read that Steve Jobs picked the order of the icons in the Dock himself. Some people know that little things matter.
In a very real sense this is exactly what LLM watermarking does. It "chooss the words carefully" in order to get text to "line up," but not with a visible margin... instead with a verifiable word distribution that proves the author knew a secret key.
My dad told a story of a classmate in high school going through the effort of manually justifying text in a paper he wrote and being rewarded with a plagiarism accusation.
That was done by typing the whole paper twice, with added spaces the second time.
I’ve been searching all over for a classic example of this that I first found around 1986, but I can’t locate it. It went on for a page or two, hand justified lines of maybe 40 characters, and then at the end of it he started making each line one character shorter, until the essay ended with these, the only words I remember from it:
dumb is
what I
think
this
end
is
!
If somebody can find it, share it here, I’m going to post it on my own website so it is saved for history. The last time I saw it was 5 or 10 years ago, and there was only one or two copies on the internet at that time, and now there seems to be none.
You may be thinking of one of the poems of Christian Morgenstern? He used many tricks of formatting for jokes, famous example that fits with yours is The Funnels
I did something similar in my paper "Meno II: A self-referential Socratic dialogue about memory and computer programming" [1] (published in The Reasoner). Every length-200 block of text is carefully chosen so as to steganographically encode one character of a computer program, and Socrates and Meno decode the program in real time by examining the words they've said.
I didn't do it entirely by hand, but I didn't just one-shot it with AI either (good luck). Instead, I wrote the whole dialogue in a special format specifying alternate words [like|similar to] [this|what I'm [currently doing here|doing right now]]. For each length-200 block, the number of variations grows exponentially in the number of "options" to thus choose from, so it becomes feasible to have a computer systematically choose options so as to hide the desired secrets.
The same method could be used for monospace alignment, though I suspect it would be harder the narrower the page be.
I must admit to occasionally rearranging words or choosing different synonyms to make a column of spaces line up in a monospaced paragraph, so that you could draw a straight line down one column the screen without passing through any letters or punctuation. Or making a diagonal line of spaces, top-left to bottom-right.
I usually only did that when the text already was close to lining up that way, though.
It's a guilty pleasure of mine, spending a few minutes to clean up the aesthetics of docstrings and comments. I justify (heh) it to myself by catching unclear wording on this last cleanup pass -- and not taking it too far, obstrusifying for the aesthetic.
I used to go to my computer laboratory in high school and at my mom's work to print out GameFAQ walkthroughs in the late 90s. They were excellent. I wrote this to remind myself of simple fun that's been superseded by grander ambitions, and sometimes I think I am wrong for choosing the latter.
Before LLMs, there were Markov chain bots. We used SeeBorg on IRC and over time its dictionary would fill up with whatever everyone said. Most of it was nonsense, but every once in a while it would say something perfectly timed. Almost everything It said making sense or not was hilarious though.
BITD I used Protext word processor on Atari ST (and later DOS/Windows PC) which automatically justified monospace text. It also had a pretty good dictionary (all in 512KB of RAM) and I remember doing this word dance to get lines to flow better.
In a recent interview on Conan O'Brien's podcast, Gillian Anderson said X-Files creator Chris Carter wrote his scripts visually so they didn't have any widows (the last line of a paragraph carried over to the top of the next page):
Chris told me I mean that there was a particular way that we used to speak in the show that it that wasn't a normal rhythm and syntax. It was slightly backwards. which felt like it was almost part of the cryptic aspect of the series.
And it wasn't until we were working on this, I think, the second feature. I was sitting in a parked vehicle waiting to shoot and our showrunner and creator Chris Carter came up to me who was directing the feature and he said he looked at my sides where my lines were and he said, "Look, no widows." And I said, "What what are you talking about?" He said, "No, no widows on the paragraphs that each character has." the word went all the way to the end with the period. So, you didn't like end halfway through that line. So, it was a perfect So, it was a perfect rectangle.
So, the dialogue was designed visually. For nine years. [laughter] Wow. So, you're struggling. You're struggling with his OCD.
I must admit I've indulged in constrained writing when I was a teenager with the same purpose: circumventing spontaneous layout errors in Word when writing a paper for school, feeling a non-negligible amount of anxiety due to the deadline being around the corner. Terrifying.
The Super Metroid guide is the kind of thing that AI will render obsolete, which makes me sad.
One of my favorite quotes is from Penn and Teller, "Sometimes magic is just someone spending more time on something than anyone else might reasonably expect". AI has shifted that a bit.
But lots of technology has rendered formerly human-lead things obsolete, and I'm sure we'll find new ways to express creativity.
But he didn't need to do that before either. He did it because he cared (in a weird way, sure). And some people will still care.
Video game text FAQs in general though were a dying genre before gen AI anyhow. Something I bemoan when I try to find one little piece of info and I'm faced with guides that are spread out on dozens of webpages for impressions of ads that I don't even see, or long videos that I have try to scroll through and take a ton of time just to find out if the person even went to the area I'm interested in. I sure miss Ctrl+F on GameFAQs.
Yup that's my point, and maybe the bigger issue isn't if people care or not but rather... can we distinguish between "they cared" and "they spent 30 seconds on a prompt".
I recently started reading a book sample for "Superintelligence" on Kindle, but stopped reading because all the text was noticeably justified, often with large gaps between words in many sentences. This was very annoying, especially since the option to disable justification was unjustifiably disabled.
Strangely enough, this same book doesn't have the same problem on other platforms.
Almost irrelevant to the story itself, but here's what it feels like to use Emacs these days.
The story talks about monospace fonts and how unappealing they could be for reading prose. It is a fascinating post on itself, but here's what happened - it caught my eye while I was busy, I clicked the link, it opened the page, I kept it hanging around and forgot about it. Then HN page got buried in my browser history. After a while, I found the tab, I read the story and it made me thinking if anyone shared any thoughts on HN. Instead of digging it up from browser history - I ran consult-hn and found the thread - it showed up in an org-mode-derived buffer of hn-reader.el. I was reading through the comments, and I was like: "yah, this probably would be easier and faster to read if I used a different font". I enabled variable-pitch-mode, but it didn't get much better - the default font I set for the face isn't great - I just needed something that existed in both Linux and Mac. I should've picked a better one.
"Let me try a different font", I thought. And how do you change the font family in Emacs? There's probably a way doing it through the UI, but thank you, no thank you - I have a programmable editor. I instinctively opened a scratch buffer and started typing: (set-face-attribute ... And at that point I realized: "Well, this would, a) Change the font everywhere b) What the heck were the parameters for this sucker?".
Of course, why not ask the LLM? I started typing the prompt, right in that buffer. I could've just finish typing and call (gptel-send). But, "what if this becomes a longer chat?". I mean, I still could continue chatting in that buffer, but there are benefits for having specialized gptel buffer, for instance, all my gptel-dedicated buffers get automatically saved. So, instead, I invoked (gptel-inline) - if the answer is short - I'd dismiss the popup and if I have follow-ups, I'll just continue.
LLM told me how to change the font in the current buffer. But I said: "I want to change it for any chosen buffer, since I'd be invoking this from the scratch buffer". At this point I was thinking: "I'm just fooling around, but let's see where it takes me..." It gave me this code snippet.
Since a gptel buffer is just an ordinary buffer, I changed `target-buffer-name` to `HNComments` and evaled it. The font in the buffer immediately changed. "Meh, I don't like this one, I want to try another...", then I changed the font name.
And at that point, I felt so stupid for wasting my time, I typed: "Can you just build me a consult picker, to select a font for a given buffer with a live preview."
And it just did. ~25 LOC. It took me far longer to write about it, in reality, the transition from a fleeting thought, from a mere idea to a concrete implementation took me seconds. Seconds!
And now I have a command that I can either keep in my scratch buffer, or stick into my config. Or literally just discard until next time I need to temporarily change the font in a given buffer.
Note: this is not a post about "how awesome it is to use AI in Emacs", no. It is all about how enormously flexible Emacs is to bend around to deal with any kind of text.
Sometimes I think I'm too detail-oriented. Then I remember that someone once spent weeks manually rewording a game FAQ so the right margin would look pretty in a text file. And I feel better about myself...
There's a similar anecdote Gillian Anderson recently revealed during an interview on the X-Files, saying Chris Carter had an OCD-like habit to write dialog to conform to certain text layout preferences (no widows[1]) in the script, which made for the show's distinctive style of dialog cadence.
1 = https://en.wikipedia.org/wiki/Widows_and_orphans
I also saw that interview, then out of curiosity I tried to find any evidence of this. There are some fan sites with ostensibly original X-Files scripts out there[1]. Looking through some written by Carter[2], I wonder if this is apocryphal, or if he was messing with her a bit.
[1]: https://www.boggsfiles.com/x-files-scripts-by-season/season-... [2]: https://drive.google.com/file/d/1BQbfRmeq3FsajjYcEuqDHv0kf2B...
Hey, I looked into this too! And I came to the conclusion that it's completely true.
The movie she mentioned in the anecdote was I Want To Believe. Here is the actual scanned screenplay, rather than re-typed:
https://lvei.net/wp-content/uploads/script-de-prod/The-X-Fil...
Just scroll through and look. In almost every paragraph or dialogue block, the last line ends very close to the right margin. Pretty much the only places that doesn't happen is when there's a single short line of dialogue by itself, meaning it doesn't wrap to a second line.
Looking through scripts on Boggsfiles, it's much more inconsistent, but it does happen, and perhaps more frequently in the later seasons. Here's one, from season 9; take a look at page 10 (page 13 in the PDF) for example, but it really happens throughout.
https://drive.google.com/file/d/1dlnc2prPVgPLN4CQSiMQMvD2VSl...
Wow, thanks for doing this digging. In the interview Gillian recounts Chris Carter saying "Look, no widows."
Maybe this was not the rule, but something that he had always strived for, so he felt the need to call it out as something cool?
Here is the interview where she mentions it, with the correct timestamp, backed-up just enough to give it context.
https://youtu.be/d3bCel607lQ?t=1162
“Chris told me I mean that there was a particular way that we used to speak in the show that it that wasn't a normal rhythm and syntax. It was slightly backwards. which felt like it was almost part of the cryptic aspect of the series.
“And it wasn't until we were working on this, I think, the second feature. I was sitting in a parked vehicle waiting to shoot and our showrunner and creator Chris Carter came up to me who was directing the feature and he said he looked at my sides where my lines were and he said, "Look, no widows." And I said, "What what are you talking about?" He said, "No, no widows on the paragraphs that each character has." the word went all the way to the end with the period. So, you didn't like end halfway through that line. So, it was a perfect So, it was a perfect rectangle.
“So, the dialogue was designed visually. For nine years. [laughter] Wow. So, you're struggling. You're struggling with his OCD.
Forming every paragraph of dialog into perfect rectangles is way more extreme than just avoiding "widows". The usual term for this is "full justification" and typographically when it's done it's typically through word spacing and letter spacing. Full justification in monospace through word choice (which is what the Ares Luna article is about) is bonkers, but I can't see that happening for TV dialog.
I've sometimes heard "orphan" used to represent a single word left alone on its own line at the end of a paragraph, but the terms are often confused and Carter could have used "widow" in that sense.
I'm curious to see what the hard-copy scripts actually looked like. The soft copies I've seen aren't particularly idiosyncratic but maybe they've been normied: https://www.dailyscript.com/scripts/the-x-files_production.h...
> I've sometimes heard "orphan" used to represent a single word left alone on its own line at the end of a paragraph, but the terms are often confused and Carter could have used "widow" in that sense.
This is an acceptable use of the term "widow". From the Oxford English Dictionary [0]:
> A short line of text (usually one consisting of one word or part of a word) which falls undesirably at the end of a paragraph, esp. one set at the top of a page or column.
But there are dozens of contradictory meanings for "widow" and "orphan" [1], so the definition that you gave isn't wrong either.
[0]: https://doi.org/10.1093/OED/1579263894
[1]: https://tug.org/TUGboat/tb43-1/tb133chernoff-widows.pdf#subs... (Disclaimer: I'm the author of this article)
Widows are when the final line of a paragraph starts the next page. Orphans are when the first line of a paragraph ends a page.
Funny because "fixing an orphan" is hard in real life (assuming they've lost both their parents, you have to find them a foster home) but easy in typesetting (just add an empty line before), whereas "fixing a widow" is easy in real life (just remarry) but hard in typesetting.
"No widows" on its own isn't enough to create a distinctive dialog cadence.
"Widows" (alone at the top) and "orphans" (alone at the bottom) are single lines cut off from the rest of a paragraph by a column/page break. The solution is generally just to fiddle with column/page breaks, which is purely typographical.
I'm sure that there's a distinct identity to X-Files dialog; it's just not due to this quirk.
I can totally see a fellow typography geek bragging about this to someone and them being horrified haha.
ETA: I speculate that Carter was avoiding "widows" to be considerate to the actors by not splitting lines across page turns.
I just realized I have nearly always avoided widows and orphans because it felt bad to write that way.
I wonder if I was ever taught to write this way and forgot, but I feel like I just learned the terms for the first time.
I'm also reminded of how David Milch supposedly wrote a lot of Deadwood in iambic pentameter. I only learned about this after seeing the show, but I did pick up the "Shakespearean" feel of some of the dialogue. Constraints often force creativity.
Meanwhile Xfiles has a montage on YouTube of all the times the boom mic crept into the shot.
So I can’t super accept that these are geniuses - it was cheap TV.
In hindsight sure, whole cult following etc. but doesn’t mean it is well designed or even thought out.
What does the writing quality, genius or otherwise, have to do with the boom mic though?
Bugger all - particularly given the boom mic operator and other framing "gaffs" are (as I recall) all part of the "wide screen" 16:9 later release on BluRay etc that were somewhat rushed out the door.
A number of show of that era were filmed wide (16:9) and post processed / coloured / reframed and broadcast on TV in a box 4:3 aspect ratio
No visible boom mic operators, etc - careful eyes in the initial post production for TV phase saw to that.
Later wide screen releases were rushed with no real post production budget to address these and other issues - that's on the studios wanting a second grab at money, not the original creative teams.
Similar complaints abound for Buffy the Vampire Slayer and (IIRC) The Wire (?) and their wide screen releases.
In programming certain word choices are valuable in this way. It's sad that pairs like true/false, good/bad, first/rest, and left/right are unequal length. But there are nice pairs like old/new, head/tail, fast/slow, same/diff, and right/wrong, which can help with create natural vertical alignment throughout a function.
Ah, but I use a normal proportional font in my editor so same and diff have different widths.
That was the fun comment. The serious ones:
1. I'm trading the ability to align statements on consecutive lines for a more pleasant reading experience.
2. Nobody ever complained that my source code is
instead of 3. No tables or diagrams in comments of course but I think that I could configure my editor (emacs) to use a monospaced font there. I do use a monospaced font for the ``` ``` blocks of md files.4. I'm using Atkinson Hyperlegible Next https://www.brailleinstitute.org/freefont/
Row/col works but width/height doesn't, alas.
I sometimes use abbreviations like wd/ht. Should be understood with surrounding context.
I hope! And I abbreviate w w w.
> It's sad that pairs like true/false, good/bad, first/rest, and left/right are unequal length.
You're just matching them wrong. On/off and yes/no may look unequal, but what about yes/off or on/no?
This reminds me of all the (fun) times I had coming across “enable toggle” and “disabler enabler”.
Bonus points for taking “YES” (looking at you FreeBSD) or “1” or “ON”.
I wonder if at any point during writing, the heroic author of that Super Metroid guide learned that "missiles" are not spent "missles", and decided to own the mistake rather than reword the entire guide.
Also, the font used for the monospace examples in the post is a great kick to the nostalgia. Which one is it? It reminds me of https://int10h.org/oldschool-pc-fonts/fontlist/font?ibm_vga_...
Funny tidbit: "missile" used to be an adjective, "a missile weapon" = "a weapon than can be sent/thrown".
Same with cereals, "cereal" was an adjective that meant "relative to the goddess Ceres" then "relative to bread/wheat". "Cereal plants" -> cereals.
It's called "nominalization (or substantivization) by ellipsis".
Judging by the lowercase “m” it’s the 8x16 variation[1] and not the 9x16 one you linked, but otherwise yes, looks like the plain old VGA font? (Incorrectly displayed, as the site points out: the VGA didn’t have square pixels in either of those modes.) The site uses (AVIF) images in place of text, but it’s like 15 minutes to write a program that typesets an ASCII file in a given monospace bitmap font and writes out the result as say a PPM (and I’m sure ImageMagick can do it if you’d rather dig through docs than program), so this doesn’t seem to require any further explanation?
[1] https://int10h.org/oldschool-pc-fonts/fontlist/font?ibm_vga_...
I think you meant "spelt" rather than spent. A but ironic, all things considered.
Now I'm wondering if you meant to use but instead of bit intentionally or not... I'm not great with subtle humor in writing.
Muphry's law, innit
oh ironny
I think you menat to spell "irony"
And there I was wondering about used missiles!
Apparently, I googled, “expended ordnance” is the term.
I did, yes. A but ironic indeed.
> learned that "missiles" are not spent "missles"
I choose to believe that the author was channeling the spirit of Noah Webster as a deliberate champion of phonetic spelling reform.
Or Andrew Jackson approaching the problem from the other end.
“It is a damn poor mind indeed which can't think of at least two ways to spell any word.”
As a rather, well... "creative" speller I blame Webster for locking things down and ruining it for the rest of us.
I few years ago I saw a TV interview where some gen-z kid confidently stated: "the dictdionary is supposed to reflect how I talk, not the other was around."
The tricky part is that spoken language and written language are not the same. Even if you are a descriptionist that believes dictionaries should represent how people write, it doesn't necessarily mean that the spelling changes based on how people pronounce it.
That's actually how many of the dictionary people see themselves.
That is in fact what the dictionary is supposed to do.
Also known as descriptivism. That's what it do.
A natural descriptivist.
And are British, at least in Australia (and the US, I guess?) we pronounce the second "i".
It is always fun when you notice where someone is from based on secondary clues like that -- my favourite is the choice of "a" or "an" where it is ambiguous (for instance, I recently ran across "an HTTP request" where I would've said "a HTTP request").
I'd argue that "le" is not really phonetic to how people pronounce words ending in that; "missils" would be more phonetic
> I'd argue that "le" is not really phonetic to how people pronounce words ending in that
Sorry? How do you think people pronounce words such as truffle / turtle / tremble / pickle / maple / rubble / etc. etc. etc.?
Should be missels then?
Let's settle the argument by all agreeing on mussels instead, and enjoy a nice seafood dish with garlic and a white wine sauce. Delicious.
They're where they keep the nuclear wessels.
Definitely in the pool of people that used to do this extensively. I would occasionally increase/decrease the colum limit by a few characters and try again if the words didn't align.
Could be a saving grace in the age where the robots come up with all the copy.
Robots would excel at writing that sort of copy I’d assume. (I haven’t tested it but doubt an LLM couldn’t handle that)
I suspect LLMs would actually struggle significantly with doing it consistently if given purely as a prompt instruction, but you could always constrict the sampling to force words that create a legitimate chain or fine tune / RL in some signal that would assist with it.
An raw LLM no, but given code execution it can do a good job. I had my Claude Sonnet write a sonnet in this form after 14 rounds of iteration with Python:
The autumn wind moves slow across the field,
and every falling leaf now yields its fight.
The summer gold at last has ceased to yield,
and short days now give way to longer night.
I walk alone beside a calm and quiet stream,
and watch it slowly carry every fallen leaf.
I think of you as some half-forgotten dream,
and taste again that same old, bitter grief.
The silent stars come out to watch it still,
and pale moonlight falls gently on the hill.
A lonesome owl calls out from past the mill,
and time moves on, unhurried and calm, until
the dawn returns to paint the sky brand new,
and I still recall the love I lost with you.
Monospace formatting: start each line with two spaces to get monospace (and then you won't need double linebreaks).
"perhaps it would be best to let the browsers do it on screens, and typesetting software for printed materials, since they have access to the font, size, text region boundaries, it comes at the small cost that users don't actually get to read what an author wrote, but increasingly this is an LLM anyways, if its a website or legal contract alike"
And here I at first thought the direction the original post was going was "here's how I got a LLM to do this automatically". Seems like it would not be so difficult. Might still be be a win over their innate dispositions.
Tom 7 did something like this. https://www.youtube.com/watch?v=Y65FRxE7uMc
> BoVeX gives us a controlled tradeoff between these two states. By changing how much it costs for the text to be semantically wrong, we have a dial that allows us to smoothly interpolate between Lorem Epsom and Donald Knuth.
it's unbelievable this was not pointed out earlier in this thread, long live tom 7
> At the same time, who among us didn’t nod in recognition at least, having once spent hours massaging a button UI string or a tooltip just to get it to fit under the certain width in a densely packed interface?
I did, and then I got a customer email about how they were using a display-zoom OS accessibility feature and things were truncated on their device. :')
See also: localizing your interface to German
Yep, any concern about text widows and orphans in modern app layouts becomes irrelevant as soon as you have to localize.
Just build your layout so it can squash/stretch appropriately.
Or if you're really insane, localize the entire UI.
Anyone who ever worked as a front end developer definitely felt this.
Even as a backend dev who dabbles in frontend as a hobby - I get the view looking great on desktop, then a week later I open the site on mobile and am horrified
suckerpinch has a great video where he uses an LLM to do this same thing automatically
https://tom7.org/bovex/
towards the end of the knuth version
> This presents a problem for the typical way that academic papers are written, which is to do all the work in a coffee-fueled fugue in the last few days before the deadline, then stay up all night writing the paper and finding citations for the pro-forma “related work” section which you did last but you know that the reviewers will insist upon
I have zero exposure to academia but chuckled because thats often what I do for blog posts :P
AIs these days are pretty good for the 'find prior art and related work' part I find. Of course, you should treat their output like that of an over-eager but somewhat unreliable intern.
No mention of Tom7's "Badness 0" by the author is the a crime!
He managed to create the ultimate version of form over function. All hail Lorem Epsom.
and in latex too, not just monospace
Two definitions that I had to look up.
* Widow: a short final line of a paragraph that gets stranded at the top of the next page or column.
* Orphan: a first line of a paragraph stranded at the bottom of a page or column.
The German is more crass: Hurenkind and Schusterjunge, translates to 'child of a whore' and 'shoemaker boy'. The child of a whore does not know where it comes from (who is their father), the short final line - the shoemaker boy is so poor, he does not know where he will end up (the short first line)
https://de.wikipedia.org/wiki/Hurenkind_und_Schusterjunge
Edit: Also, LaTeX has specific penalties for those two: https://tex.stackexchange.com/a/32116
Those who lived through the (text-mode) WordPerfect era may remember 'widow and orphan protection' as being one of the features which was advertised for this program, i.e it could be set to either move that orphaned first line of a new paragraph to the next page or move a few extra lines or a whole paragraph to the next page to keep the widow company.
Text mode WP is the reason I hate almost all word processors, everything else is tepid goat piss by comparison.
A bit over dramatic, but then again this HN.
I remember using WordPerfect in that era and never understanding what that feature was. It seemed implausible to me that it was actually protecting human widows and orphans, but I couldn't imagine what it had to do with text layout!
Kinda cool when you learn the answer to something you were wondering about decades ago.
Absolutely! Unfortunately for me, I probably wondered about this 35 years ago and learned the answer 15 years ago. Otherwise, I could be one of today's lucky 10,000 in the xkcd 1053 sense.
There are also Rivers - when spaces between words on multiple lines align vertically. Harder to control for than widows and orphans.
this is only tangentially related to the article, but I've always found text justification strange. For me paragraphs with ragged edges are easier to read than justified paragraphs, because the irregular ending point helps me keep track of where I am. And justification can lead to some very odd-looking lines. So I've just never quite understood why it's so common in typesetting
Differences are supposed to convey information. E.g. a paragraph's first line is indented to indicate that this is a start of a paragraph. Differences in line width convey no useful information, so the are suppressed. Same goes for overall text height on a page, although this rule is broken more often.
Typesetters are known to be very specific about small details. E. g. tables are typeset with meticulous alignment rules. It may look superfluous, but it is not. The nature of the craft is that it has to be invisible unless you know where to look.
I've never given this much thought, but I agree with you 100%.
After reading this article I thought "wow that's really impressive and I hate it".
For the same reasons you mention, and the words seem to "blend together" into a blob of text and losing my interest.
Still super impressive that people do this though.
It's just neatness. Like ironing clothes or putting on a tie, it's not about it serving a functional purpose. It's just to show off straight lines.
Same here, justified text feels difficult to read. And, I had academia where where students are forced to justify text....
I've definitely been guilty of wording my multi-line doc comments in a way that would ensure they'd flow without awkward right margins. I would have a macro in vim that would call the fmt program to reflow the comment to 79 (later 98) characters, and then would iterate on word choice until the comments looked good. Not exactly right-justified, but no very ragged edge either.
That's the sort of attention to detail that makes me love an app. Apple used to have this. It's why I became one of their users. My hope is that John Ternus understands why this sort of "spinning of wheels" is essential when he takes over. I read that Steve Jobs picked the order of the icons in the Dock himself. Some people know that little things matter.
In a very real sense this is exactly what LLM watermarking does. It "chooss the words carefully" in order to get text to "line up," but not with a visible margin... instead with a verifiable word distribution that proves the author knew a secret key.
My dad told a story of a classmate in high school going through the effort of manually justifying text in a paper he wrote and being rewarded with a plagiarism accusation.
That was done by typing the whole paper twice, with added spaces the second time.
I remember reading Project Gutenberg email updates from Michael S. Hart in the mid to late 90s that were famously formatted like this.
It’s not too hard if you try, once you get in the groove :-)
I’ve been searching all over for a classic example of this that I first found around 1986, but I can’t locate it. It went on for a page or two, hand justified lines of maybe 40 characters, and then at the end of it he started making each line one character shorter, until the essay ended with these, the only words I remember from it:
dumb is
what I
think
this
end
is
!
If somebody can find it, share it here, I’m going to post it on my own website so it is saved for history. The last time I saw it was 5 or 10 years ago, and there was only one or two copies on the internet at that time, and now there seems to be none.
Lewis Carrol was about 123 years ahead!
https://en.wikipedia.org/wiki/The_Mouse%27s_Tale
I know the feeling - a lot of what I remember from the internet 20 years ago simply doesn't exist, and is unfindable on any search engine.
You may be thinking of one of the poems of Christian Morgenstern? He used many tricks of formatting for jokes, famous example that fits with yours is The Funnels
https://www.babelmatrix.org/works/de/Morgenstern%2C_Christia...
I am filled with both a deep admiration and horror at this.
It's shockingly impressive.
And that it was done for an amateur game guide! This is like a legendary work of art.
I did something similar in my paper "Meno II: A self-referential Socratic dialogue about memory and computer programming" [1] (published in The Reasoner). Every length-200 block of text is carefully chosen so as to steganographically encode one character of a computer program, and Socrates and Meno decode the program in real time by examining the words they've said.
I didn't do it entirely by hand, but I didn't just one-shot it with AI either (good luck). Instead, I wrote the whole dialogue in a special format specifying alternate words [like|similar to] [this|what I'm [currently doing here|doing right now]]. For each length-200 block, the number of variations grows exponentially in the number of "options" to thus choose from, so it becomes feasible to have a computer systematically choose options so as to hide the desired secrets.
The same method could be used for monospace alignment, though I suspect it would be harder the narrower the page be.
[1] http://philpapers.org/archive/ALEMIA-4.pdf
Ha, I quite enjoy doing this in comments or commit messages where practicable. But, that's just a few lines. :)
I must admit to occasionally rearranging words or choosing different synonyms to make a column of spaces line up in a monospaced paragraph, so that you could draw a straight line down one column the screen without passing through any letters or punctuation. Or making a diagonal line of spaces, top-left to bottom-right.
I usually only did that when the text already was close to lining up that way, though.
It's a guilty pleasure of mine, spending a few minutes to clean up the aesthetics of docstrings and comments. I justify (heh) it to myself by catching unclear wording on this last cleanup pass -- and not taking it too far, obstrusifying for the aesthetic.
I do this at work with the comments in my code. No one's ever noticed <thumbs-down-emoji>
Man. I kinda want to stress test my memory of super metroid before reading this guide. I could do a sub 3hr run through at 100% when I was a child.
I know I couldn't today.
I have never felt more seen. I do this with comments all the time, rewording things to look nice on that 80 or 100 column mark.
And it shows! Wait, no, it doesn’t.
So maybe it is possible to use alternate words in writing without compromising on writing quality after all.
The part that horrifies me about this is the disincentive to revise any part of the text due to the flow-on effects.
I used to go to my computer laboratory in high school and at my mom's work to print out GameFAQ walkthroughs in the late 90s. They were excellent. I wrote this to remind myself of simple fun that's been superseded by grander ambitions, and sometimes I think I am wrong for choosing the latter.
Before LLMs, there were Markov chain bots. We used SeeBorg on IRC and over time its dictionary would fill up with whatever everyone said. Most of it was nonsense, but every once in a while it would say something perfectly timed. Almost everything It said making sense or not was hilarious though.
(source: https://github.com/allanlw/seeborg)
If I remember correctly, this is the tweet (and HN post) that brought it to the attention of the world back in 2021: https://news.ycombinator.com/item?id=28651093
BITD I used Protext word processor on Atari ST (and later DOS/Windows PC) which automatically justified monospace text. It also had a pretty good dictionary (all in 512KB of RAM) and I remember doing this word dance to get lines to flow better.
Manual: https://www.atarimania.com/st/files/protext_5_04_arnor.pdf
Screenshot of manual section: https://jumpshare.com/share/jOnMu7M36AOEWyoL0QDl
In a recent interview on Conan O'Brien's podcast, Gillian Anderson said X-Files creator Chris Carter wrote his scripts visually so they didn't have any widows (the last line of a paragraph carried over to the top of the next page):
Chris told me I mean that there was a particular way that we used to speak in the show that it that wasn't a normal rhythm and syntax. It was slightly backwards. which felt like it was almost part of the cryptic aspect of the series.
And it wasn't until we were working on this, I think, the second feature. I was sitting in a parked vehicle waiting to shoot and our showrunner and creator Chris Carter came up to me who was directing the feature and he said he looked at my sides where my lines were and he said, "Look, no widows." And I said, "What what are you talking about?" He said, "No, no widows on the paragraphs that each character has." the word went all the way to the end with the period. So, you didn't like end halfway through that line. So, it was a perfect So, it was a perfect rectangle.
So, the dialogue was designed visually. For nine years. [laughter] Wow. So, you're struggling. You're struggling with his OCD.
I must admit I've indulged in constrained writing when I was a teenager with the same purpose: circumventing spontaneous layout errors in Word when writing a paper for school, feeling a non-negligible amount of anxiety due to the deadline being around the corner. Terrifying.
I still do that. I'll tweak the wording just so a single name doesn't sit on its own line.
The Super Metroid guide is the kind of thing that AI will render obsolete, which makes me sad.
One of my favorite quotes is from Penn and Teller, "Sometimes magic is just someone spending more time on something than anyone else might reasonably expect". AI has shifted that a bit.
But lots of technology has rendered formerly human-lead things obsolete, and I'm sure we'll find new ways to express creativity.
LaTeX has existed for a certain amount of years already.
Sure but that's not what I was talking about. I was talking about the guy who wrote a 17,000 guide manually in monospace so that it was justified.
But he didn't need to do that before either. He did it because he cared (in a weird way, sure). And some people will still care.
Video game text FAQs in general though were a dying genre before gen AI anyhow. Something I bemoan when I try to find one little piece of info and I'm faced with guides that are spread out on dozens of webpages for impressions of ads that I don't even see, or long videos that I have try to scroll through and take a ton of time just to find out if the person even went to the area I'm interested in. I sure miss Ctrl+F on GameFAQs.
Yup that's my point, and maybe the bigger issue isn't if people care or not but rather... can we distinguish between "they cared" and "they spent 30 seconds on a prompt".
Lt. Worf tends to be a bit “shoot first ask questions never” be he was never this dense. C’mon.
Ye gods! The fact that this was done by hand... I have no words.
Learned this the hard way explaining a bug fix; a single ambiguous term derailed an hour-long discussion.
A human victory by sheer willpower. I find the story oddly uplifting.
this is the kind of content I come to hackernews for
Made me think of constrained writing like what was done by the Oulipo group in France.
I recently started reading a book sample for "Superintelligence" on Kindle, but stopped reading because all the text was noticeably justified, often with large gaps between words in many sentences. This was very annoying, especially since the option to disable justification was unjustifiably disabled.
Strangely enough, this same book doesn't have the same problem on other platforms.
There is some bizarre stuff that gets posted on weekends. It's like reading the New Yorker.
Almost irrelevant to the story itself, but here's what it feels like to use Emacs these days.
The story talks about monospace fonts and how unappealing they could be for reading prose. It is a fascinating post on itself, but here's what happened - it caught my eye while I was busy, I clicked the link, it opened the page, I kept it hanging around and forgot about it. Then HN page got buried in my browser history. After a while, I found the tab, I read the story and it made me thinking if anyone shared any thoughts on HN. Instead of digging it up from browser history - I ran consult-hn and found the thread - it showed up in an org-mode-derived buffer of hn-reader.el. I was reading through the comments, and I was like: "yah, this probably would be easier and faster to read if I used a different font". I enabled variable-pitch-mode, but it didn't get much better - the default font I set for the face isn't great - I just needed something that existed in both Linux and Mac. I should've picked a better one.
"Let me try a different font", I thought. And how do you change the font family in Emacs? There's probably a way doing it through the UI, but thank you, no thank you - I have a programmable editor. I instinctively opened a scratch buffer and started typing: (set-face-attribute ... And at that point I realized: "Well, this would, a) Change the font everywhere b) What the heck were the parameters for this sucker?".
Of course, why not ask the LLM? I started typing the prompt, right in that buffer. I could've just finish typing and call (gptel-send). But, "what if this becomes a longer chat?". I mean, I still could continue chatting in that buffer, but there are benefits for having specialized gptel buffer, for instance, all my gptel-dedicated buffers get automatically saved. So, instead, I invoked (gptel-inline) - if the answer is short - I'd dismiss the popup and if I have follow-ups, I'll just continue.
LLM told me how to change the font in the current buffer. But I said: "I want to change it for any chosen buffer, since I'd be invoking this from the scratch buffer". At this point I was thinking: "I'm just fooling around, but let's see where it takes me..." It gave me this code snippet.
Since a gptel buffer is just an ordinary buffer, I changed `target-buffer-name` to `HNComments` and evaled it. The font in the buffer immediately changed. "Meh, I don't like this one, I want to try another...", then I changed the font name.And at that point, I felt so stupid for wasting my time, I typed: "Can you just build me a consult picker, to select a font for a given buffer with a live preview."
And it just did. ~25 LOC. It took me far longer to write about it, in reality, the transition from a fleeting thought, from a mere idea to a concrete implementation took me seconds. Seconds!
And now I have a command that I can either keep in my scratch buffer, or stick into my config. Or literally just discard until next time I need to temporarily change the font in a given buffer.
Note: this is not a post about "how awesome it is to use AI in Emacs", no. It is all about how enormously flexible Emacs is to bend around to deal with any kind of text.
Obligatory xkcd: https://xkcd.com/276/
Sometimes I think I'm too detail-oriented. Then I remember that someone once spent weeks manually rewording a game FAQ so the right margin would look pretty in a text file. And I feel better about myself...