Extension Languages

Found this old post by Jon Skinner on why SublimeText went with Python.

If you’re building an application, then your users will get much more out of it if you given them a plugin API. For Sublime Text, I settled on Python as the extension language. In fact, I think you’d be mad to choose anything else.

It’s well-reasoned, and considers all the alternatives at that time.

What about JavaScript? It’s an underrated, elegant language, with a huge number of people acquainted with its syntax. Its weakness is that it’s not used as a general purpose language, so there’s no selection of libraries your users will be able to build on. No libraries and no built-in standard APIs (file system access, I’m looking at you) rule JavaScript out.

However, it’s also clear how, 14 years later, the landscape favors JS/TS as the scripting language for an editor/IDE like VSCode.

Lua is another candidate, which has a lot of uptake in games. It has a very small code footprint, and excellent runtime speed. However, its paucity of libraries, weak Unicode support, and small-medium user base make it hard to justify as an extension language for desktop applications.

Ditto for Lua in Neovim today.

Use an outliner

  • I’d say pick one of Workflowy or Roam
  • I’m biased towards Roam because
    • I already use it
    • It works for me
    • It has a lot of “power features” that go beyond jotting down thoughts
  • But … Workflowy is “good enough”, especially to get started somewhere with something, which is a whole lot better than what I did for a decade before, which is … nothing
  • Some nit-picking reasons I prefer Roam
    • Each “bullet” has its own timestamp and version: I use this to figure out things like “time taken”
    • Text can be formatted to have headers or separators: I find this useful
  • Pick one of them and start using them. If you’re totally new to this, I’d recommend Workflow to start with.
  • (Yes, I wrote this in outline form and am sharing it as such …)

Wherever I may Roam

Poetic license on the title aside, I’m doubling down on Roam.

“Sometimes you have to let things go…” and so on, but that’s what I did earlier.

I spent a year trying out all kinds of alternatives, and figuring out their pros and cons.

In the end, I concluded, empirically-but-subjectively — this being for me and my use cases, yours may be different — that Roam is uniquely well-suited to my way of thinking.

Since then, things have gotten better, with two big changes:

  1. no limit on new graphs, and
  2. the availability of encrypted graphs.

Previously, I was reluctant to use Roam for “work stuff” — now I know I don’t have to worry

Previously, I was reluctant to adopt separate graphs for separate mental silos, because “hey, I don’t want to waste my last remaining graph on that!”. Now, that isn’t a concern.

There will always be other products around, and people will continue to make decisions based on a variety of factors, and they should.

I would like to see a couple of features (again, this is from my personal experience, and I have no expectations of seeing them fulfilled anytime soon).

It would be good to have the ability to have different graphs open in different tabs. Not a very big deal because I don’t switch that often, and if I did I could use different browsers, but … it would be nice to do this easily.

Next up: more spaces in the document — or at the ability to carve out at least one additional space to split nodes on to. I understand this is hard and must be introduced carefully, if at all. If a general solution is too hard, three is a better number than two (before anyone points it out — yes, in a way, the sidebar is a third space, but c’mon).

I will say that for a product that affords a dizzying amount of creative flexibility as Roam does, you need a spare aesthetic and I commend the development team for having the discipline to stick to it.

On to-do apps

History

I have been using OmniFocus for over five years now.

I started with version 2, moved on to version 3 and have even beta-tested the new version 4 on my phone for a while.

A lot of cruft has accumulated over the years, and this year I decided to “clean house”.

While doing this, I was open-minded about trying new apps — after all, a lot has changed in the last five years.

Different apps

I liked a lot of different apps.

Things was clean, simple, minimal.

Todoist was full-featured, flexible, integrated with everything.

Sorted had a novel hybrid task + event approach.

No app

Over the last two weeks, I spent a couple of days playing around with each of these.

There are advantages and disadvantages to each, and it’s easy to get lost in the “but, but, but, which is the best?!” trap here.

Instead, I decided to pick nothing for now.

Maybe a calendar app, and a notes app are all I need?

And if I do experience a need, then I can think about how to meet it, instead of deciding

“Getting the right things done in right time” should matter more than “using the right app”!

P.S. if pressed, my ideal app here would be some mix of Things and Sorted.

Roam stays

Much as I tried to quit Roam previously, I’ve been back to using it the last quarter.

It’s good enough, and “doesn’t suck“.

It is more fluid and immediate than the alternatives for what I need, when I need.

So, it stays in my toolkit.

(in the context of an end-of-year “app house-cleaning“, where I try to rationalize what I need, what I’m using, and what I can get rid of)

Posting flow

I made the previous post using my phone.

It’s annoying that I can’t use the WordPress app with self-hosted sites (which is what this is), but the “mobile web” experience for the same is not too bad.

I can’t write in that web interface, for whatever reason, but that’s okay as long as I can copy-paste in content.

I use Drafts heavily now on my phone, which works very well as a “staging point” for all text.

So, writing there and then using the mobile web to just add it in, and click “publish” works for me.

Tiling managers

Switched to Rectangle on my macbook.

It’s a “tiling window manager”, and I hadn’t used one for over six years now, ever since I stopped using a Linux laptop for personal/office use (I used i3, and xmonad before that, and … I forget what came before that)

This is what its keyboard shortcuts look like (I selected the recommended set, and then disabled a few)

Most of these are Ctrl + Option +…

Other options considered were

  • Magnet (very similar)
  • Amethyst (reminiscent of Linux tiling managers, but, I don’t need that “feel”)

There were various others with configurability that I don’t care about right now.

I just want to snap windows easily, without a lot of pointing-and-clicking.

Notebook requirements

Here’s what I want from a paper notebook:

  • Tomoe River Paper (with an exception for Midori MD)
  • Grid (i.e. not plain pages, not lined pages)
  • Page numbers (a new addition)
  • Size (A5 or A6 or B5)

P.S. I can imagine using journals as notebooks (and the year doesn’t matter, I’m using an old Hobonichi for this right now!) because they do have some sort of indirection.

P.P.S. I’ve probably mentioned this before but WordPress doesn’t make it easy to reference and update past entries, so until I switch to an Obsidian or Logseq workflow, mentioning it is sufficient.

An old television

Saw this “for pickup” on the sidewalk recently.

I can’t imagine who would use something like this, but it was pretty high-end in its time!

RCA “ColorTrak 2000” television

This is as old as me! The style then was to “embed” these into large cabinets (I’m guessing), hence the simulated woodgrain.

Here is a view of the connections at the back, which really show its vintage (“look, it’s stereo! you can even turn the left and right speakers on and off!”)

Here is a 1985 newspaper advertisement for it (link courtesy Wikipedia).

Tools for thought

A quote from “Tools for Thought” by Howard Rheingold, from the chapter titled “The loneliness of the long-distance thinker

  • Harry Truman was President and Sputnik was a word that only Russian language experts knew when Doug Engelbart first thought about displaying words and images on radar screens, storing them in computers, and manipulating them with levers and buttons and keyboards.
  • To hear him tell it today, both the computer establishment and the computer revolutionaries still fail to understand that the art and power of using a computer as a mind amplifier are not in how the amplifier works but in what the amplified minds are able to accomplish.
  • Engelbart realized, as had Vannevar Bush, that humankind was moving into an era in which the complexity and urgency of global problems were surpassing time-honored tools for dealing with problems. He also began to understand, as did Licklider a few years later, that handling the informational by-products of problem-solving had itself become the key to all the other problems.
  • The biggest difference between the citizen of preliterate culture and the industrial-world dweller who can perform long division or dial a telephone is not in the brain’s “hardware” — the nervous system of the highlander or the urbanite — but in the thinking tools given by the culture. Reading, writing, surviving in a jungle or a city, are examples of culturally transmitted human software.
  • While Engelbart was, in fact, suggesting that computers could be used to automate a low-level task like typewriting, the point he wanted to make had to do with changes in the overall system — the capabilities such an artifact would open up for thinking in a more effective, wider-ranging, more articulate, quicker, better-formatted manner. That is why he distinguished his proposed new category of computer applications by using the term augmentation rather than the more widespread word automation.
  • Even the chewing-gum-and-bailing-wire version Doug was attempting to get off the ground in 1968 had the ability to impose new structures on what you could see through its windows. The symbolic domain, from minutiae to the grandest features, could be arranged at will by the informationaut, who watched through his window while he navigated his vehicle and the audience witnessed it all on the big screen

From the beginning of “A Conceptual Framework for the Augmentation of Man’s Intellect” in 1963:

  • Increased capability in this respect is taken to mean a mixture of the following: that comprehension can be gained more quickly; that better comprehension can be gained; that a useful degree of comprehension can be gained where previously the situation was too complex; that solutions can be produced more quickly; that better solutions can be produced; that solutions can be found where previously the human could find none.
  • We refer to a way of life in an integrated domain where hunches, cut-and-try, intangibles, and the human “feel for a situation” usefully coexist with powerful concepts, streamlined technology and notation, sophisticated methods, and high-powered electronic aids.