A journal   About

My slow move to TUIs for day to day computing.

What are "TUI" applications ?

TUI (Text based User interface) applications are those that make use of a text based interface - interfaces rendered in text mode rather than full graphical mode.

Anything that runs in a console (terminal, like xterm) falls in this category.

The following is a screenshot of a file manager application called "mc".

Context

I recently found myself drifting towards applications with TUIs, without making a conscious effort. I got thinking about that, and I thought I should write it down.

I have been using computers for about 18 years now. I write code to make a living, and recently took responsibility of running a team with a bunch of people for my company. Computers are a huge part of my life, and I interact with them way more than I interact with people. As such, I am always looking out for making these interactions as fluid and friction less as possible. If an application or a particular way of getting things done appeal to me, I would try it out and stick with it till I find an easier way (or fallback to whatever was working for me before).

I have made conscious efforts to move to using more TUI applications before, but never succeeded. My reasoning then was the since these were not GUIs, they are less resource intensive and hence more efficient (than GUIs). But it never stuck, and I fell back to GUIs almost all the time.

In this particular context, my recent drift to using TUIs and sticking with them was surprising even to myself. I'm just trying to figure out why it happened.

Some history

I think a change in my work-flow and habits effected this change.

I have always preferred being a programmer and not someone who is in charge of the "meta-affairs", i.e. shipping code.

When I started working for my current company, I found myself running the whole show, all by myself, with a bunch of really smart people ready to do my bidding. It was great. I had a team that finally got what I was thinking, and came up with better solutions all the time. It still is great, and I am very inspired by what my colleagues do and how they do it.

With that great situation though, I found myself in a role trying to ship code rather than write code. It is a different ball game altogether, and I suddenly lost my productivity entirely. I took a weekend to think about what was going on, and realised that in the process of delivering something I love, I was managing the delivery rather than making it. I was no longer the chef. I was the MaƮtre d'. That was a significant change in role that I was totally unprepared for.

On closer inspection, a lot of my work suddenly had became reading and writing textual information and keeping track of things rather than writing code or pseudo code. I had not realised it, got overwhelmed, and my head shutdown, refusing to do either job. It was a mini disaster - workplace desperately needed an additional programmer, but I was failing at it.

It dawned on me that I should be focusing a different set of things, so that I can adjust to this pattern of being a product delivery person. I took a few decisions and stuck to them.

  1. Do not write release critical code.
  2. Manage the information that comes at me from various channels in one place, and have it at my fingertips.
  3. Every day before I go to work/start work, write down precisely what is it that I intend to accomplish on that day.
  4. Make sure I focus on reading and thinking.

All this while, the part of me that hated the general direction of most Linux based distros were heading to, that part had given up and switched to using a saner operating system called TrueOS. The reasons for the switch is another rant altogether, some other day.

Moving to TrueOS put several "limitations" on me immediately. Limitations in quotes because it later turned out to be one of the most important things I did with my computer around this meltdown time.

Are limitations really limitations ?

TrueOS is an operating system built off FreeBSD-12-Current. This means it is bleeding edge. It is put together in an easy to install manner, with open-rc for managing system init and services. It works neatly on my Thinkpad T470.

It lacks a few things though. It can't run Netflix. No DRM content that requires Widevine can be played on it at the moment. None of the regular chat clients are made for it. Slack (or any electron app), Skype, Google Hangouts, none of their native versions work.

On the other hand, it is an excellent development system. It is a proper UNIX in that it inherits FreeBSD and the excellent documentation that comes with BSD. It has OpenJDK, a nodejs version that works well, Firefox and Emacs. Intellij IDEA runs fine, Postgres 10 server works, rabbitmq works, and it replaced my Linux distro completely.

Sometime Less is more. More worth it.

All this meant that my distractions stopped leaking from device to device.

All the interactions via voice and video got limited to the device built for it - my phone.

Nowadays I watch movies on the TV and not on my computer. There are exceptions, but I find myself watching things on TV more.

The only thing that requires a computer in my day to day usage has boiled down to reading and writing text content, and actual work. If this were 60 years ago, it would have been a proper office desk, with all the tools I needed on it.

Why TUIs then ?

Three things happened thus.

I became convinced about my role at work, and I was ready to adopt any strategy

to make sure that I can tame the information flow.

I had a clean separation between my distractions and things that actually made

me happy.

I developed a passionate hatred for web based applications that are watching me constantly, fiddling with my data, pretending to be smarter than me, tracking EVERY SINGLE move. This was a side effect of being involved with and reading more about Sales and Marketing strategies.

A hard look at the web applications I was using convinced me that they were more spying distractions than actual productivity tools. All of them leaked data about myself, without my informed consent, enabled by web browsers. If I cut off the middleman, then these data leakages would stop.

I have gotten off the web for GMail, Slack and JIRA (although JIRA/bitbucket is in my "good" list) I still open them up once in a while in a browser, but only for very specific cases.

The affinity for keyboard driven work-flows led me to look for terminal based alternatives instead of GUI applications, and I now have a collection of TUIs that get the job done for me.

Clarity that TUIs brought.

GUIs are all about presenting available options in a nice manner. If I don't want all the frills, a text based UI works fine. When I drop into a terminal from a TUI, it is not as jarring as it is from a GUI.

I am not advocating that everyone ditch GUIs immediately. It works for me because I am a programmer, constantly fiddling with all the knobs the operating system exposes to me. My needs are not limited to a particular domain like document layout or image editing. I like writing code to customise the behaviour of my text editor rather than fiddle with the two or three options provided by a configuration dialogue. To me, issuing a bunch of commands to a computer program seems more natural than being guided through what the program thinks it can do. This is a very subjective preferance, and there is nothing more to it.

So.. do I not use GUIs at all ?

I do use them. I use GIMP and Shotwell. I use Intellij. I use a web-browser. Some tasks are better done with a mouse, some tasks are better done with a set of widgets appropriate to the context. But what occupies my mind the most are not those tasks.

What next ?

My work-flow modifications in the last few months came organically, not for the express purpose of moving to TUIs, but for other reasons.

I will write about some of the applications I use and how it fits into my whole "text is good" philosophy.

Written on Feb 11, 2018.