Home  Credo  Pics  Diary  MAAS 

credo


tl;dr: I've been using UNIX since 1974, and emacs since 1994, and much of how I live and work is governed by things I've learned by using them. Seriously.


life is 90% of my use cases for org-mode

The story's gone around MIT forever. ICYMI, the computer revolution began with the Tech Model Railroad Club in the late 50's. Some people built scenery, and other sought fancier trains; but the hackers worked on the switchgear.

They were dedicated to programming the analog computers that controlled the track. When the "hulking giant" came to town -- a mainframe that took paper-tape programs -- they absorbed the overnight slots in the computer room, competing to code solutions in the smallest number of instructions. It became an obsession.

groceries and a volkswagen

In fact, it was such an obsession that one of the guys adapted his daily life to sequential logic. Didn't serve him well, the story goes: For three Saturdays, his wife went to the Safeway for groceries. Arriving home, she'd ask, "You wanna help me bring in the groceries?" He would simply reply, "No." And then he'd go on working on whatever he was fooling with at the moment.

The fourth Saturday (again, it's a legend), she came home, after packing out their Volkswagen, and asked again. Again he declined; this time, she blew up.

"What's wrong with you? Why won't you help me with the groceries?"

"You asked me if I wanted to help you bring in the groceries. You didn't ask me if I would."

You can see where this probably went, though legends get hazy after the punch line. But it illustrates a point: coders have their logic and language very much influenced by the machines they address. It's the old proverb: you become like your friends, even if they're made of silicon and plastic.

i only toured MIT

I only toured MIT, in the seventh grade, part of a science-fair prize. Wanted to go, but since our family was middle-class, my dad asked me to go to the local college, UAH. As incentive, he pulled strings and got me into computer classes at the local community college (when I was 14). He also arranged for me to take college classes at UAH during high-school.

Looking back, it was gold. I learned engineering from NASA scientists: basic engineering from Prasthofer, electronics from Stulinger, dynamics from Schutzenhofer ... the list goes on. I couldn't have gotten a better education anywhere else.

So it was that I logged into UNIX for the first time during the summer of 1974. An avid reader since the age of 6, text and text-processing were my thing. When I encountered a system where plain text is the raw material flowing through the pipes, I was hooked.

The story about the groceries and the Volkswagen gave me a bigger clue: Computers and humans both depend on language, but unlike computers, human speech conveys an exact meaning even using apparently imprecise language. Could the informal programming rules that I learned from UNIX, be adapted to life?

UNIX rules for life

After about 30 years as a tech writer and frequent programmer, I finally settled on a set that works for me. Little did I know that these very principles would lead me to org-mode, which would later lead me to find my people:

  • Keep it simple. It's cheaper and easier to carry around.
  • Do one thing well (at a time), because multitasking is a lie.
  • Network: You were born to connect.
  • Say what you mean; nothing is truer than the truth.
  • Hack, because someone's trial and error is the only way to learn anything but keep a voltmeter handy, so you don't become a memorable lesson in failure.
  • Be who you are: Even a bent wire can carry a great light.
  • Use leverage -- a bigger hammer isn't always the best answer.
  • Use what you have. Never for dig diamonds with a brick of gold.
  • Have faith; all things are possible, except maybe skiing through a revolving door.
  • Don't choke on the enlightenment pill: distrust all claims for the one true way.
  • Patch it now: the Next Big Thing is never next or big, and often it never becomes a thing.
  • Think ahead, but don't worship your plans. Remember, today is the first day of the rest of your learning experience.

ed >> vi >> emacs

I didn't start with org-mode, actually. I remember my first foo, created with the ed line editor. It was September, 1974, on a PDP-11/40, in the second-floor lab at the local community college. Bill Joy hadn't even written vi yet -- that watershed weekend was still three years in the future. It was an amazing experience for a fourteen-year-old, admitted at 12 to audit night classes because his dad was a part-time instructor and full-time polymath.

I should warn you, I’m not the genius in the room. I maintained a B average in math and electrical engineering, but A+ averages in English, languages, programming, and organic chemistry (yeah, about that….). The genius was my Dad, the math wizard, the US Navy CIC Officer. I’m more of a language (and logic) guy. But isn’t code where math meets language and logic?

research unix

Fifth edition UNIX had recently been licensed to educational institutions at no cost, and since this college was situated squarely in the middle of the military-industrial complex, scoring a Hulking Giant was easy. Finding good code to run it? That was another issue, until Bell Labs offered up a freebie.

It was amazing! Getting the computer to do things on its own — via ASM and FORTRAN — was not new to me. What was new was the simplicity of the whole thing. Mathematically, UNIX and C were incredibly complex, incorporating all kinds of network theory and topology and numerical methods that (frankly) haven’t always been my favorite cup of tea. I’m not even sure if Computer Science was a thing yet.

But the amazing part? Here was an OS which took all that complexity and translated it to simple logic: everything is a file; small is beautiful; do one thing well. Didn’t matter that it was cranky and buggy and sometimes dumped your perfectly-okay program in the bit bucket. It was a thrill to be able to do something without having to obsess over the math underneath.

abstraction

In short, what made UNIX and C usable and beautiful to mid-brainers like me was abstraction. You didn’t have to worry (much) about the low-level details if you didn’t feel like it. You could focus on pure logic and abstract entities without having to “break the fourth wall,” as actors say. You could take little pieces — like “ls” and “cat” and “awk” and “sed” — and you could assemble a script or a C program that would grant your wish. And that was exhilarating and exciting and fabulous for me.

At some point, I caught onto the idea of abstracting my day, with plain journal files labeled YYYYMMDD, in a special directory in /var/log. I still have those going back to sometime in the 90's. The format was simple, but using the files soon became complex:

***personal journal of stormrider
tue, aug 04, 1992 / 712904400
sweetmorn, confusion 70, 3158 YOLD

***fortune -s
Cold hands, no gloves.

***appts
09:00  staff meeting, conf rm
18:30  dinner with amit & bonnie

***to do
finish revisions on x-windows book
do syllabus for advanced C class
read some in Stevens & Rago
shower
shave
dress
take out the trash otw to work
.
.
.

***daily journal
06:43 - man, didn't sleep well
last night; i think i'm overdoing
it on the coffee at work; maybe i
should cut back some?
.
.
.

The unwieldy part came with all the repeated tasks, and tasks that got carried over from one day to the next (or didn't get finished). I had to copy yesterday's file, change all the key info, sort out the todo list, erase yesterday's journal, and generally do far too much work to keep my journal up.

I did it, but intermittently, supplanting it with post-it notes, pads, planners galore, palm pilots, palmtop computers, etc. It seemed like every day I was badly copying tasks from one day to the next. Meanwhile, my unwillingness to use Windows didn't give the the luxury of Outlook, when it came along.

I got turned onto emacs in 1994, when I moved to Atlanta to work for SecureWare. A fellow writer there used it, and suggested it might help me write and code up examples more effectively. He was right, and it stuck as my editing platform of choice. But I hadn't discovered org-mode yet. Either nobody I knew used it, or it hadn't been invented yet. And to be honest, I kinda went back and forth between vi and emacs, depending on my "mood of the month."

a modem in the woods

Eventually, my HP job became a telecommuting-type arrangment, and I moved home to the farm, about an hour outside New Orleans, in the woods. At that time, Internet was still modem-driven out here, so having command-line Linux with emacs on my laptop was a real lifesaver.

Sometime not long before Katrina hit, I stumbled across org-mode. I'd already used outline mode for some period of time (can't remember how long), and org-mode seemed like a logical follow-on from there.

From there, org-mode just grew, and I grew with it. All the features made it easy for me to both do what seemed natural for me, and do things in a way that felt like they supported my principles. Gradually, my other methods of keeping track of things faded away, except for my alarm clock.

Even when smart-phones took off, I was always trying to find some way to send org files over to my phone and use them there. I think I even wrote some lua code in an iPhone wiki app to emulate org-mode with my files, though it was not fully satisfactory.

an org-mode resume

Fast-forward to last May. I'd been wanting to get on with Canonical for a long time, but hadn't found the right position, one that really matched my skills. Then one Saturday, while I was waiting for my wife to meet me for some community event we were hosting, I saw a position that virtually described me. I started to write a resume, but then decided that I would just take the job description elements, one-by-one, put them in an org file, and send them to the hiring manager.

Long-story short, almost everyone on this team used emacs, and org-mode, and lots of other .el packages that I also used every day. I got the job, and so far, I'm very happy and feel like I fit in very well. I no longer mark my workday tasks as "work" -- I mark them as "foss" (free and open-source software), and I'd like to keep that designation for my paying work from now on.


org-mode and my principles

Here's how I feel about using org-mode for everything: email, git, irc, web-browsing, organization, time-keeping, and so on. And yes, I do use org-mode to connect with my email and the web, even though I use other packages (rmail, eww, magit, erc) to do the heavy lifing. Let me walk it down, principle by principle:

  • Keep it simple: Granted, emacs isn't the simplest user interface, that is, until it becomes second nature. After that, you'll find yourself accidentally erasing cells in your Google spreadsheet when you hit "C-x C-s" to try to save (good thing there's an undo). But the fact that you can use the same text for multiple functions: appointments, task states, task notes, clocking time, building an agenda, sending email, project planning, percentage completion, .... The list is too long to quote, but just a simple statement, like "Get the discourse publishing tool working," can become the nucleus for a whole cycle's work and all the actions that go with it.
  • Do one thing well at a time: The window-driven nature of emacs makes it easy to switch tasks when you have to (just open another buffer) and then switch back later, and more quickly link back to where you were; not to mention that, if you become adept at using the agenda, you can keep yourself on track and move other things around with ease, and without any fear that they'll get lost.
  • Network: Since I'm set up to send email, IRC, Mattermost, etc., directly from my org-mode tasks, it's easy to track where I am. But even if I used another app, it's still really easy to just cut and paste a note next to a task and then set a follow-up time to prod, all without breaking your train of thought. You're literally still looking at the work you're doing while you're messaging about it, so there's that.
  • Say what you mean: You have the entire outline in front of you for whatever you're working on, so presentations, show-and-tell sessions, and status reports are really simple to give, whether verbally or in writing. It's easy to (a) tell the truth, because you can see it at a glance, and (b) not stumble around trying to remember, which often leads us to embellish, just to keep the conversation moving.
  • Hack: If it doesn't do what you want, you've got customizable variables, a huge library of packages, strong macro capability, and push-come-to-shove, emacs lisp, though I rarely have to go there, TBH. Just be sure to make a backup before you change anything, so you don't have to try to backtrack fifty different changes to figure out which one broke (the voltmeter warning above).
  • Be who you are: Org-mode matches my thinking style. Not true for everyone, but I tend to outline or mindmap (which you can do with org-mode, with the right .el package).
  • Use leverage: Org-mode seriously leverages the power of plain text, in that you can either use the shortcuts to add an appointment, add tags, search tags -- or you can just do it by hand, because all of the special notation is plain text. Leveraging human language in this way is helpful to me.
  • Use what you have: Org-mode and emacs give me a stable platform that works everywhere, even on a printout. I don't need license fees, special extensions, subscriptions, add-on tools, or constant updates to keep my life humming.
  • Have faith: Org-mode has justified my faith, as has emacs. Lots of tools I've used break, crash, or get killed by absorption (I once liked Astrid, e.g., but it suddenly got sold and went away). And no other tools do everything I want without switching apps. Org-mode and emacs are pretty much here to stay, especially since there is no license fee, and I can keep a self-contained version backed up at home, should it ever stop being distributed./>
  • Don't be a fanatic (distrust all claims for the "one true way"): This one is particularly important. There's a disturbing trend of people who meditate becoming psychotic, because dedicated mindfulness leads to physical self-obsession. Org-mode is particularly useful in this regard, because it isn't a way, it's only a set of tools. Try as you might, you won't find any particular advice on how to use the various pieces of org-mode. The manual is nothing but a collection of explanations, mostly which variables control what. That suits me much better than other tools, which try to overlay their way of managing time.
  • Think ahead: This is where org-mode, and especially the agenda, shine. If I'm busy, I don't have to worry about keeping my outline clean. I can stop in the middle of notes for another project, hit return, enter a to do for later (and tag it and schedule it to pop up later), and then move that to someplace more suitable later. The agenda will clean it up and put it in perspective for me. Or I can search for it, or pull up all open to-do items (even by tags), or.... There are just too many ways to throw things ahead without losing my train of thought.

a weird kind of heaven

Okay, those are my reasons, and why life is 90% of my use cases for org-mode, but what's the other 10%?

Well, it's only wishful thinking, but if we get to pick our environment in heaven, I would choose one of those large, paneled offices off of a raised floor mainframe room. You know the ones: the stained carpet squares, the laminated pressboard desks, the sqeaky swivel chairs, and the half-working flourescents. And a terminal on the desk that runs nothing but emacs and org-mode. And a Volkswagen full of groceries every week.

Here's hoping. ;-)


Updated 2021-09-04 Sat 17:17 by Bill Wear (stormrider)


Copyright (C) 2020 by Bill Wear. All rights reserved, but asking to use is permitted and welcome.