awarm.spacenewsletter | fast | slow

Getting back to plain text

What ever happened to Fancynote?

The very first issue of this newsletter was about Fancynote, "a silly editor". It was to be my tool for thought. A general purpose space for writing and thinking in, that I could program to do whatever I want. Recently I've been thinking about it again. To those who are starting to worry reading that, I promise I'll still be getting my actual work done.

Anyways, I think my mistake with the first attempt at fancynote was trying to go all the way to building an editor. Turns out, making a nice text-editing experience (especially when you're used to one) is painful. I should've started smaller. And where better to start small than with plaintext1?

I love plaintext

It's has got a certain aesthetic to it that makes it extremely approachable. It's trustworthy and dependable. It's not going to go out of business, or disappear on you. It can live on a website but it's right at home on your computer. It's simple and universal. Most importantly plaintext works everywhere.

To illustrate, here's a little script I wrote for myself earlier this week:

tempfile=$(mktemp --suffix=.md) # Create a temporary file
emacsclient -c "$tempfile" # Open it in a new window in emacs
xclip -rmlastnl -i -selection clipboard "$tempfile" # On exit copy it to the clipboard
xdotool key ctrl+v # Press Ctrl+V to paste

I use it like this: 1. I'm in a textbox, in a web-browser, or my email client 2. I hit a shortcut (Super+Shift+i) to run this script 3. It opens emacs 4. I edit in emacs, and when I exit, it's pasted into the textbox!

It sounds trivial, but on a closer look, it's magical. Each tool in the chain, from my web-browser, to my text-editor, to this wierd thing called the clipboard2, all speak the same language!

Back to fancynote (and basics)

_Another neat thing about plaintext is it's very easy to experiment with. I can just start with a text file in some format and evolve the structure as I go along, and the tools for manipulating it too.

Instead of starting with fancynote as an editor why don't I start with it as a language? Specifically one that compiles to html, so I can share my work online. As I go along I can write other programs for more complex features, and experiment with different interactions. Eventually, they can compose together to form Fancynote!

A goal that got a little lost along the way was using this newsletter to drive my experiments. So, now that we've hit 20 weeks in, let's get back to that!

By my newsletter next week I will:

  1. Define a language that supports at minimum
    • Headings
    • Links (internal and external)
    • Italics and bold
  2. Write a compiler that takes that language and
    • Makes sure it's valid
    • Errors on internal links that don't exist
    • Converts it to HTML
  3. Set up a repository of notes written in the language and host the output html at fancynote.awarm.space

  1. Plaintext is the simplest representation of text on a computer. It's the kind of stuff that lives in .txt files, and you edit with Notepad or TextEdit. _Rich_text is the kind of stuff that lives in Google Docs or Word, with formatting and layout.
  2. The clipboard is one of those things you take for granted that's an incredible rabbit-hole once you start thinking about it. Just for a starter question, where do you think text you've just copied "lives". Is it in the application you copied it from? Somewhere in memory? Is it controlled by the operating system? What about if you've copied an image? The fact that copy and paste "just works" in so many places is intensely magical.