Lotus Agenda.

Tavis Ormandy

$Id: a9be4828a838a95b19d44a13846c5323a36047b5 $

Intro

I never used Lotus Agenda, but I’m told it was a popular productivity tool for MS-DOS in the late 80s. I’ve been on a retro software rediscovery kick lately, so I’ve decided to give it a whirl and write about my experiences. There is something that appeals to me about using long-abandoned software. Perhaps it’s update fatigue, there’s certainly no need to dread a major update breaking something!

Regardless, I’ve always enjoyed finding new productivity tools to try out, and I’m not afraid of steep learning curves or getting my hands dirty. I’ll usually choose powerful and flexible software over simplicity.

At the moment I mostly use taskwarrior, but I’ve lost count of all the others I’ve tried!

About Agenda

Agenda is a PIM, a Personal Information Manager. That term has fallen out of fashion, I think a quick summary might be “anything that manages those small pieces of information we all deal with”. Things like contacts, todo lists, notes, and so on.

I found a 1989 episode of the TV show Computer Chronicles that discussed how people thought about PIMs at the time.

Computer Chronicles

At the 21-minute mark there’s a demonstration of Lotus Agenda, but it’s not easy to follow, watch the clip and you’ll see what I mean. Still, you do see some interesting features:

Apparently this was an $800 software package (That’s $395 adjusted for inflation from 1989), yikes! You don’t have to pay that, Lotus made it available for free when development ceased.

In preparation for trying out Agenda, I found a copy of the original manuals on eBay for a few dollars. Just look at this monster, the user guide alone is over 700 pages, that’s not including the supplementary guides. The supplements I have are Working with Macros, Working with Definition Files, Setting up Agenda, and a few miscellaneous leaflets.

Lotus Agenda Manual

I guess that’s my bedtime reading taken care of for a while. I actually received the macro reference still in the original shrink wrap, it almost seems a shame to open it!

Getting Started

I’m using DOSEMU2 to run Agenda, which also works with WSL on Windows. The primary benefit of DOSEMU over other options is that it has a terminal mode that translates VGA text mode to terminal escape sequences. This makes old MS-DOS applications look and feel like native ncurses applications.

Terminal tools like GNU screen work, you can copy and paste between native applications, and you can use it over ssh. Naturally, it also supports filesystem and shell redirection, so you can access host directories, and execute host commands as if they were DOS commands.

Here’s how Agenda looks when it’s first installed.

Agenda Startup

You’ve probably noticed the empty screen regions, well, that’s because Agenda only supports standard VGA Text Modes. I usually use a 100x30 terminal, so that leaves some blank space. If you use GNU screen you can just put something else in there, how about ncal!

I configured DOSEMU to map a few directories so I can save my files in the usual places, you just need to add something like lredir I: \\linux\fs\home\taviso\Documents to autoexec.bat.

Learning Agenda

I started making my way through the Quick Start guide, I found a scan online if you want to take a look. The guide has you use Agenda as a task planner to enter upcoming events, like “Call Sarah this Friday to give her feedback on her proposal”, and demonstrates how Agenda can extract dates and activities from text you enter.

Agenda Quick Start

Here is a gif to demonstrate, I enter a task and it correctly populates some of the other columns. Playing around with different ways of writing tasks, I find the metadata extraction works quite well. Time specification parsing in particular is quite polished, things like “Check data retention policy every four months starting Tuesday” just work. I’m also relieved that it appears to be Y2K compliant (haha!).

The pitch in the Quick Start Guide is that if you have a call with Tom, you can quickly generate a report for all the things you wanted to discuss. If you’re going to a specific location, you can list all the things you needed to do there, and so on.

Agenda is flexible software that can be used for more than just task management, but to keep this article brief I’m sticking to using it as a planner.

Using The Planner

I’ve entered enough tasks now to get a feel for usage, and all the standard stuff works well. Things like notes, setting alarms, adding contacts, assigning priorities, searching and sorting, and so on. The sort of things that get tedious can be automated, like marking all the results of a search, then bulk assigning or marking done.

Agenda is pretty stable, I guess some of those $395 dollars went towards QA. I did find one crash, I was trying to make an assignment action for a pseudo category in the show view! I think I’m the first person to discover this, I can’t find any other references to it!

I had to change my workflow a bit, I’m used to organizing my tasks into subtasks, so for example I might have a to-do list like this:

  • Deploy Death Star
    • Choose Target
    • Verify Design
      • Check for weak points
      • Call maintenance
    • Assign Staff
  • Call Mom

That isn’t really how Agenda works, instead you would create each of these tasks and assign them to the same project. This is a shift for me, but it has benefits, such as allowing a task to be assigned to multiple projects.

Agenda Projects

You can see in this clip I’ve changed the layout, you’re free to add or remove columns and change their order, width, and so on. You can also add filters, so you might want to only see Tasks due today, for example.

You can save an unlimited number layouts (Agenda calls these Views). You can switch to the view that suits your current task, preferred level of information density, and so on.

You might have a “Chores” view while at home that just shows the things you need to do at home, or a “Development” view while working on code. This can let you display your tasks in the most appropriate way.

Honestly, I think Agenda does this quite well, and getting a finely tuned view with sections and filters set up precisely was quite satisfying. There are different kinds of views as well, such as datebook view (like a calendar), expense view (for tallying expenses associated with a project), and so on.

Agenda View

In my main dashboard I have three sections:

Things I have due within a week Tasks [-Done,When(<->A week from today)]
Things that dont have a due date Tasks [-Done,-When]
Things I’ve completed recently Done [Done(2 days ago<->)]

I actually wrote the filter as “day before yesterday”, and it automatically rewrote it to 2 days ago. Neat. I have a few more views with more columns and project filters that I switch to as I need them. You can either press F8 to browse the list of views, or use Alt-N (Next) and Alt-P (Prev) to cycle between them.

Entering Notes

Agenda does have a built-in editor for keeping notes. It’s okay. It supports a few basic editing options and has rebindable keys and macros. Luckily it supports importing external files, so you can just use Vim.

In fact, I wrote a macro to switch to vim whenever I type Ctrl-F5 in the editor. Here is a clip of me opening the Macro Manager, showing that I have an “Editor” macro bound to {CtlF5}, and then editing a note in Vim.

Agenda Editor

I wish I could say the macro language is pretty, but it is not. It is geared towards reading whats on the screen and simulating keystrokes. It has basic control flow, string manipulation, and so on. It’s functional.

Here is that macro you just saw in the editor clip.

{Editor}
{LET;%FILE;C:\TMP\NOTE.TXT}
{WINDOWSOFF}
{F10}E{TYPE;%FILE}
{ENTER}
{ENTER}
{SELECTION;File already exists}
{IF;(#PROMPT <> File already exists:);EDITOR}
{F3}Replace{ENTER}
{LABEL;EDITOR}
{F5}
{F10}ULVIM {TYPE;%FILE}
{ENTER}
{F5}
{F10}C
{ENTER}
{F10}I{TYPE;%FILE}
{ENTER}
{ENTER}
{WINDOWSON}

I can say a few positive things about the macro language, the manual is pretty good and it comes with lots of samples. It can automate all parts of Agenda, but I’ve mostly just used it to rebind keys.

In fact, in the 1980s third party developers wrote commercial add-ons for Agenda. Apparently there was a popular package called President’s Planner. I haven’t tried it, but I suppose I have a morbid curiousity what an application written in this language can do!

Importing and Exporting

You probably need to use other applications or services, and sync your data with your phone. Writing and reading files from outside DOSEMU is no problem, so if you just want to sync files this is no problem.

As it’s a terminal application you can also just SSH in and run it.

You probably also want to have your appointments sync with your calendar or something.

Export

There are two ways to export data from Agenda. If you have a commandline tool that you can pass arguments to, then you can write a macro that will invoke it.

Otherwise, you can export your data to a file.

Files

Agenda can export items to a format called STF, Structured Text File. The specification for that format is (mostly) documented in the manual, but it didn’t catch on.

I wrote a quick parser that can convert it to JSON, so now you can use modern tools like jq to manipulate and transform the data however you wish.

You can download it here, here are some examples.

  • Print a list of all items.
    • $ ./stfjson < transfer.stf | jq '.[].items[].text'
  • Show all items with a due date.
    • $ ./stfjson < transfer.stf | jq '.[].items[] | select(.categories[].name=="\\When")'

And so on, there are more examples in the README. If you can exchange data with other apps, you can now use stfjson to generate the correct format.

You can automate exports, Agenda has “Special Actions” in the category options. Alternatively, if it’s just a one off or for a macro, you can use the Transfer > Export command.

Commands

In DOSEMU, the UNIX command will invoke a shell command on the host.

C:\>unix uname
Linux

If there is a commandline tool that will import data, e.g. a TaskWarrior user might use task add drop off laundry at dry cleaners, then you can create a macro in Agenda that simply launches that command.

You can use something like {F10}ULUNIX task {TYPE;%TASKTEXT}.

Import

Surprisingly, Agenda supports importing arbitrary text data. One of the manuals that came with agenda was Working with Definition Files, which explains how to write a configuration file that allow Agenda to parse anything.

It even has a Regular Expression tutorial, pretty impressive for a 1980s consumer product.

Conclusion

I quite like Agenda. It does many things well, but it’s absolutely true you could replicate most of it’s functionality with modern tools. However, I do enjoy using it, and I’m a big enough nerd that I quite like the challenge of using retro software.

I think the closest modern equivalent to Agenda would be taskwiki. It’s not a perfect match, but if you liked some of what you saw here but are not interested in retro software, try it out!

I’m still using Agenda after two weeks, and about 40% of the way through the manual 😂

Resouces

Troubleshooting

Anyone trying to earnestly use 30 year old software is bound to encounter a few hiccups. Here are some of the problems I ran into.


I made Ctrl-S Save, and Ctrl-F Find. The defaults are Alt-W (??) And Alt-F6 (???!).