The making of a friendly robot

Learnt more about the “origin story” of Roomba from an article in the WSJ this weekend.

  • First sold as a product 20 years ago
  • Joe Jones joined the AI pan 20 years before that
  • Various hiccups: lab lost funding, he was fired from the next gig
  • Rescued from irrelevance by a serendipitous Pepsi ad
  • First prototype was made with Lego (!)

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.