How to do web programming on an old computer
Tags: beginners
Published: 2023-06-28 05:37:46

Programming is a field that doesn't require much financial investment. To start learning or even working as a freelancer, you just need a computer — not even necessarily a powerful one. For many years, I was working on outdated machines, and I found a few tricks that allowed me to stay productive while doing web development.

## Operating system: Linux

When I was starting in IT in the 2000s in Poland, the default operating system (OS) was Windows. It was working OK on the new machines, but after a few years and few system updates, most PCs were becoming painfully slow. I hated all the visual bells and whistles that were appearing in the interface with each new OS version: what’s the point of things looking nice if the system is painfully slow?

My solution was switching to Linux. Luckily, all the tools I needed (Apache, PHP, MySQL, Git) were created for Linux, so they were faster and easier to configure there too.

The distribution that worked for me the best was [Lubuntu](https://en.wikipedia.org/wiki/Lubuntu)—a lightweight Ubuntu with a desktop interface optimized for older machines. It’s still regularly released, so I would check it out if you are struggling with the speed of your development machine.

## Command line as an IDE

To do web development, you need a browser and a code editor. Code editors are often installed as a part of an integrated development environment (IDE). At my first job, I had a bad time trying to use a big, Java-based IDE called Eclipse on an old PC. It was so slow that I was easily distracted while the computer was processing. It was seriously affecting my productivity, so I started searching for faster alternatives.

Part of my job was done over SSH on remote servers, so I developed a workflow based on command line tools. The best part of the command line interface (CLI) is that the tools integrate well by default—you don’t need an IDE to integrate them for you.

### Tmux

Tmux is a program that allows you to run multiple sessions of a terminal inside one window. With a bit of effort, you can easily create nested sessions, and a script to start it up for you. I found it so easy to work with that

* I kept using a CLI-based workflow even when I switched to a much faster machine,
* I don’t use a second screen: switching between application windows or CLI sessions is efficient enough with keyboard shortcuts to make another screen almost useless. 

### Vim

Vim is a great command line text editor. Because it’s developed with a keyboard only in mind, every feature is available as a keyboard shortcut. At first, it might give you a headache or two—you will probably have to search how to exit the files. When you invest time in learning it, you will find its interface very efficient. I’ve learned Vim by following about ¼ of the video course [here](http://derekwyatt.org/vim/tutorials/novice/) and by occasionally searching for a solution to some problems.

NeoVim is a modern Vim reimplementation. It has a plugin that allows you to use syntax highlighting and suggestions integration from VS Code. The configuration can be tricky at times, but you have access to all the same tools as other code editors.

### Git

Git is a key tool for development. The core program has a CLI only. There are some tools promising better user experience with a graphical user interface (GUI), but
* I was never convinced by those promises, and
* performance-wise, you will be the safest using CLI. 

### CLI tools

Most tools used in programming are developed first for the command line and later integrated into IDEs or get a dedicated GUI. This means that directly from the CLI you can access the same commands that you can from IDE — or sometimes even more commands. The only issue can be typing them in without making mistakes, but you can address this by defining aliases.

## Low-cost screen sharing

I have never done this outside of experiments, but with SSH and Tmux, you can share a CLI session over the internet. It can be especially helpful if your internet connection isn’t stable enough to carry voice and screen sharing. You can find a how-to guide [here](https://www.hamvocke.com/blog/remote-pair-programming-with-tmux/).

## Learn more

If you are working on a machine with a lower performance, the articles might also be interesting for you:

* [The Hitchhiker’s Guide to the Command Line](https://how-to.dev/the-hitchhikers-guide-to-the-command-line),
* [How to run nested tmux session](https://how-to.dev/how-to-run-nested-tmux-session),
* [How to create Tmux session with a script](https://how-to.dev/how-to-create-tmux-session-with-a-script),
* [Intro to the terminal: basic commands that will help you get started](https://how-to.dev/intro-to-the-terminal-basic-commands-that-will-help-you-get-started),
* [Why do people use the command-line interface](https://how-to.dev/why-do-people-use-the-command-line-interface-cli)