Thursday November 18, 2021; 11:24 PM EST
- (11 min read)#
- Yesterday's post reminded me of another case where I might want returns inside a node in a Drummer outline: Twitter rants. Drummer has a sweet feature for posting threads, you just put the individual posts in an outline, and then Drummer can post the entire thing. #
- I cannot tell you how hard it is for me to use Twitter's threading feature. I am not an idiot, and have been working with virtualities and user interfaces for a very long time. But there is something about posting a rant on Twitter which defeats me. I should just plan them ahead of time, and then post them using Drummer.#
- What I actually do is, I post something. Then I think, I should post about that again, so I will reply. Then, it is time to post again. Within moments, things inevitably go strange. I do not know how it is possible but Twitter lets me create some sort of horrific Klein bottle of an ortolan of a thread, where I believe it may be literally impossible to read every post in, say, chronological order. #
- What I have discovered is, I can reply to exactly one post, creating a thread of exactly two posts in length. This is reliable, and works great. So I have decided any long-form Twitter ranting has to be done in advance. #
- #
- This is not how I have used Twitter for the past decade or so. Until quite recently, I have used it for one thing: an app where I can hit the "new post" button and instantly have a little problem to solve. The key is instantly, these things have to be done as fast as possible. If it looks like I put no time into it, that's because I am using Twitter to force me to get an idea out there somehow, instead of just keeping them all in my head.#
- I have had a lot of fun within the restrictions that Twitter imposes. For years, I never used pictures, just the text part, and I would go off and do things like post dozens of political jokes in a very short time. Being forced to watch every single character, especially at the old limit, while trying to present an entire multi-panel cartoon, and simply implying the drawings, is amazing amounts of fun. I keep telling myself I should hire an artist to illustrate them, but I will probably just turn them into a book as is.#
- #
- Ten years of doing this has gotten me pretty good at tricks to save space. I used to have to fit stories for column inches back in the old-timey newspaper design portion of my career, so I know lots of things typesetters have been doing for centuries to manipulate how much space something takes. #
- You adjust the spacing between letters, between words, you use hyphenation, you condense or expand the shapes of the letters themselves, you hand-kern to get one more point to pull that word up and avoid the river, you can adjust the font size itself up or down, you can make the initial indents for paragraphs larger or smaller, you can manipulate the space surrounding em dashes and en dashes, you can make your inset caps larger or smaller, you can increase or decrease the leading, which is the space between the lines, you can manipulate the spacing between paragraphs, you can add or remove or edit pull quotes, you can adjust the space between, or presence of, design elements which call out the pull quotes, you can spread it across two columns, or three, you can even go off the grid and shave a few points off your column width but retain the overall spacing so the advertising columns stay the right size. #
- If all that fails, you can go back to the editor responsible for the story, and see if maybe we can work something out. Usually they're not complete fucking assholes, and will agree that yes, we could possibly cut an entire word from the story to keep it to three pages. #
- Sometimes, not. I once worked with an asshole who refused, because the story was literally perfect. This is not actually possible, and I get the whole "I am making a point about how you should never, ever, ask me to do something as fucking basic as make your job one tiny fucking bit easier, ever again" thing, but, come on.#
- #
- This is the same genius who once called me into his office to complain that his computer wouldn't turn on. Because I was an asshole myself at that time, I asked him, "Is it plugged in?" Because that's a dick thing to ask. #
- Obviously, it was not plugged in. #
- His office mate, who was not in fact a complete fucking asshole, as I recall, had unplugged something and plugged in a fan. Apologies were had. Ha! No fucking way.#
- After lunch, I was again called in there by Mr. My Prose Literally Cannot Be Edited for Brevity. Apparently his computer was not working, again. He was not amused, I guess because had perfect words to type up or something, and this was going to fuck with his deadline or some shit. It's always something with some people.#
- Obviously, I again asked him if it was plugged in.#
- Obviously, it was, in fact, unplugged again. #
- You can guess just how profuse the apologies were not, and the gratitude that was not expressed. I am not actually sure if I'd ever seen a face that color, it was a really cool purple effect. I forget if he was one of those guys that's angry all the time, or if his face was just like that. I am pretty sure he wasn't like that sales rep that always smelled of vodka because apparently people can't smell that shit? We are really good at constructing stories about reality that help us avoid dealing with our actual effect on the world. #
- I like to think now, had I been that guy, in that situation, I would have not stopped laughing for several minutes, and people probably would wonder about the giggles for the rest of the day.#
- #
- Anyway, you can't use most of those typographical tricks on Twitter. What I usually do is type it up with proper spelling, punctuation, everything, including "p.m." instead of "pm". This gives me stuff I can go back and cut without changing the meaning. #
- When you're constructing a multi-panel joke, you use white space instead of illustrations or a grid to break up, present, and punctuate the story. You can't just jam it all into a single paragraph, not usually, you need air to let the joke breathe and hit its beats. So an individual post will consist of multiple lines, separated by returns. #
- Which brings us back to Drummer and its nifty rant feature. The problem is, each node is treated as a separate tweet. Since, in Drummer, a return is a node, that means each tweet is one node. Which means, I can't actually use Drummer to post a multipart rant if I want to use the extremely limited set of tools I have available—basically, text and vertical white space—to maximize what I can get out of a single tweet.#
- There are a few ways to get around this. Instead of a tweet corresponding to a single node, I could have a tweet correspond to a sub-array of nodes, which get stitched together. Basically, a multi-level outline, where the top level nodes are the tweets. This is probably the way to go.#
- #
- Because one of my goals for the blog part is to post ideas that I haven't gotten around to doing yet, and thinking about things like this is my happy place, and things elsewhere are as crazy as you'd expect with stupidy on the rise like that, here's one I've been thinking about. #
- (As with most of my ideas, I like it and I also think it's probably stupid. Which is more fun than thinking I am an idiot and should just shut the fuck up. Where's the fun in that, abusive voice in my head? You know, if anybody else talked to me the way I talk to myself, I'd tell that asshole to fuck right off. Nobody has time for that shit.)#
- #
- The other way we generally solve the problem of "how do I put something into some place where it doesn't fit" is, we map that something somewhere else, temporarily. We transform the symbols somehow, so we don't treat them the way we usually would. In this case, we'd want Drummer to occasionally treat a return as something other than a node.#
- And to do that, we can slip through an escape hatch into a separate, bubble universe. Inside there, we can do whatever we want, and it won't affect the outside world. #
- The escape hatch is an escape character, and it's usually a backslash. To indicate the next character is to be treated as something other than normal, you put a backslash in front of it. This works great. If you use quotation marks to delimit the beginning and end of a string, and you need to put a quotation mark within the string, you just put a backslash in front of that quotation mark. This ends up looking something like "\"This is\", they say, \"really easy \(if \"easy\" is the right word\"\), to read." (You'll note, that sentence isn't even properly punctuated in the first place. It is really, really hard to see this type of thing.)#
- Of course, the instant you start using the backslash to denote "this is weird", you will need to include a sentence that uses a backslash, and then you are deep into the \"weeds\", as they say. Because you start getting fun things like, well, that backslash is special, so it can end up looking more like \"\\\\ oh fuck, I have no fucking idea how many backslashes I need to include here to get just one properly escaped backslash\", and because the backslash you want to encode is actually intended for a regular expression embedded inside some other representation inside some other encoding, you need to include two backslashes for each backslash, and one before that one, and then one before that, and then you go do something else for awhile until your brain uncurls enough to deal again.#
- Eventually, you will get it right, but this sort of thing is really, really hard to maintain, because by the next day, your brain will no longer be able to see it properly, and you will have to work your way through all the escape sequences again, just to get back to where you were. If someone else wrote it, or it's been more than a week, depending on the change you need to make, it may even be faster to just start over from scratch.#
- #
- You may be able to detect that I dislike these escape things. If I were laying out computer code like a typographer, there is no fucking way I would use escape characters. We have them already, for quotation marks, and we have conventions for nesting them. These can get confusing, if you nest too deeply, but most writers won't go more than one or two levels. #
- If I were going to solve this problem visually, I would use a different typeface. I probably wouldn't use color by default, that's harder to reproduce under all circumstances (what if all I have is black and white, what if all I have is one spot color, what if my reader is colorblind). I'd look at things like bold, and italic, which, if you think about, are already typographical ways of indicating that we are operating at a different level. #
- I dunno for sure how this would work in practice, perhaps separate Unicode ranges, perhaps a character that says "shift to a new range". But the goal would be, the characters that I'm seeing and working with don't need to have a slash in front of them, because there is some other way of distinguishing which level I want to treat them as, both visually, and as encoded in the file itself.#
- Programming languages are the way they are, basically because you need to be able to use them with punch cards. No, really. You can't get fancy with programming languages, because they have to be representable as plain old text. This notion gets updated, it used to be ASCII, now it is UTF, but the idea is the same. #
- #
- Maybe the language should be serialized as something more complicated. This is stupid, you should use BNF and lexx and whatever, I know. Even Smalltalk is representable in text. Though it was basically always distributed as a compiled virtual machine image that you could go exploring in, you could also serialize it to a text file, run it through a compiler, and get an image back.#
- Python has always annoyed me with the whole "we use white space to denote block structure", but I've gotten used to the idea that editors can have enough smarts to assist with that sort of thing and make it work.#
- One really interesting thing about Drumkit, is that while it looks like JavaScript, and you work with it as text characters you can edit, it is stored as an outline. The outline contains a bunch of metadata that's not required for the code to operate, like indent level. #
- It's a little weird to see curly braces in there, denoting things like blocks, because part of Drumkit's heritage comes from UserTalk. That's another language, presented in an outliner, which is so defined by the nature of an outliner that it completely does away with things like those block-defining braces in the first place. Instead, it uses the node structure of the outline.#
- While we're at it, I don't think I like storing my code in text files anymore, anyway. Maybe the versionable unit should be something smaller, like a function. Or even smaller, like a block. How about a constant? Or even "thing we use to hold this value which represents the velocity"? How small could that individual, versionable, unit actually be, and still be useful? #
- #