Like jynx[1], I'm now using a completely console-based environment, although I've already been working primarily on the command line for a good few years. I started writing a list of my 'favourite' programs, but I realise that I don't actually have that many. This isn't because I don't like UNIX or don't like my computer setup, though. It's more or less the 'big' programs I use that are salient enough to qualify as favourites--things that stick out enough to seem like 'programs' rather than just 'using the computer'. These are things like vim, my text editor. Most of my computing work is done with smaller programs. This is where the power of UNIX really comes from: Composing single-purpose tools to solve bigger problems. For instance, I had to import some raw data into a database last night. What program did I use? I used awk, bash, cat, cd, chgrp, chmod, cp, curl, grep, head, info, irb, less, ls, lynx, mv, postgres, rm, ruby, scp, screen, sed, ssh, sudo, vim, and wc. What program did I use to make that list of programs? I used awk, bash, cat, echo, grep, less, rm, scp, screen, sed, sort, tail, tr, uniq, and vim. You get the idea. This way of working might seem a bit strange to people who aren't familiar with UNIX. It's like playing with Lego instead of, I dunno, Fisher-Price. Rather than having one big program that does what it wants, and that's hopefully also what you want, you have lots of little programs, and you do what you want by picking the ones you need and putting them together. This makes a lot of sense, because I don't always want exactly the same thing when I'm using a computer. How do you "put programs together"? UNIX provides the architecture and functionality to do this. Just about every UNIX program will either take some kind of input, or generate some kind of output, or both. The output from one program can flow seamlessly into another, into another, and so on. The data that these programs operate on is, basically, text. This text can have some special meaning, whether it be scientific data, program source code, commands to format a document, or words for people to read. Using UNIX might, a lot of the time, look like programming. In the sense that programming means "telling the computer what to do", then yes, it is. But it's also a lot like having a conversation with the computer. You ask it to do something, and if it's got anything to tell you about that, it will. What is the upshot of all this? It means you can pick the way you want the computer to work and what you want it to do. Programs that do one thing tend to do them well. You can tell pretty easily what each tool does. Building something is more fun than playing with something someone else made. [1] gopher://sdf.org:70/0/users/jynx/dat/20171209.post