Home

Getting Work Done Using Only TTY: A Journey Back to the Basics

Picture this: It's a sunny Sunday morning in 1990. You rise, brew a fresh cup of coffee, and settle in front of the family computer. With a flick of the power switch, the CRT monitor hums to life, degaussing into a shaky boot sequence. Lines of text scroll down the screen, and finally, the familiar prompt C:\ awaits your command.

Do you launch into a game of Doom, or dive into a favorite bulletin board? The choice is yours, and that nostalgia is palpable.

This feeling of simplicity and raw interaction is what I aim to recapture—not in DOS, but with modern hardware.

My Linux Journey

I've been using Linux since the fateful day I burned a live CD of Ubuntu 7.04 and accidentally wiped out our family PC's Windows partition. My distro preferences have evolved over the years: starting from Ubuntu, moving to Debian, and subsequently experimenting with Arch, Slackware, Gentoo, and finally settling on Alpine.

In my journey, I've gravitated towards the teletype console, drawn to its rawness and simplicity. As a child, long before I could read, I was already navigating the family computer running DOS. By memorizing the key sequences, I could launch DOOM.EXE at the tender age of four.

Fast forward to my teenage years, when I engaged in what I called "TTY weekends" on a modest mid-2000s HP laptop running Debian. It was a challenge, often requiring me to momentarily switch to a desktop environment for quick web lookups. Yet I thrived during those weekends, learning the ins and outs of Linux while my friends thought I'd gone off the deep end.

Now, nearing my 30s and with different priorities, I find myself free to work in ways that suit me best.

My Setup

Currently, I use a MacBook as my primary laptop, but I've also acquired a ThinkPad X230 for about £30, slightly modified with a USB-C charging port, upgraded RAM (from 4GB to 8GB), and a couple of SSDs.

Running Alpine Linux—renowned for its lightweight design—I've automated my setup with a dotfiles installation script that configures my fish shell, Neovim, and essential programs. It's a streamlined setup; if I need additional packages down the line, they can easily be installed as needed.

Why TTY?

When using my "normie" laptop, I often find myself ensnared by two beasts: the web browser and the terminal. A staggering 90% of my work falls into these categories. Given this gravitational pull towards the terminal, I've grown accustomed to working within it. With Neovim as my editor and tmux for session management, I often question why I would waste precious CPU resources on rendering a modern UI.

This setup allows my Alpine installation to occupy a mere 4GB, while my MacBook consumes over 300GB—enough space to fit my TTY configuration in 75 times! Working in this minimalistic environment brings a sense of zen; distractions evaporate, and simplicity reigns.

If I want to check the time, I simply type date. To view my battery status, I run batt. My ThinkPad even includes an antenna toggle, which I often leave switched off, using Wi-Fi only when absolutely necessary.

I feel a profound sense of control over my machine—no auto-updates, no distractions. When I'm finished working, I'm unlikely to succumb to YouTube rabbit holes; instead, I might tackle household chores.

The TTY Experience

Typically, I have 3-4 TTY sessions active simultaneously. I initiate cmus in the first to start some music, adjust sound levels via alsamixer in the second, and devote the remaining consoles to coding with Neovim and running commands as needed.

cmus music player interface
cmus - Terminal-based music player
alsamixer audio control interface
alsamixer - Audio control in TTY
neovim editing session
Neovim - Text editing in TTY

A Caveat: Limitations

It's true that not everything translates smoothly to TTY. The browser can be a significant limitation. Think of it this way: complaining about lack of browsing capabilities in TTY is like going to the beach and lamenting the absence of museums. They serve different purposes.

Fortunately, with today's capabilities for LLMs, many common programming queries can be answered without a traditional web browser.

Creating Custom Tools

Accessing my machine in this way is fulfilling, yet certain tasks have required me to create utilities to streamline my workflow. This harkens back to earlier computing days—if a tool didn't exist, you made it yourself.

Custom Tools Overview

Conclusion

I love this setup and challenge anyone reading to give it a go for just 24 hours. You might discover new facets of Linux, rethink your work habits, and cultivate patience. After setting everything up, take a moment to relish the peace and control.

If this minimalist approach isn't your cup of tea, and you prefer a more visual UI, that's perfectly fine too. There are no judgments here—just a personal invitation to explore.