Shell Games

This paragraph is basically Andrew and David emphasizing the fact we as mere mortal programmers must learn how to work with the terminal. They compare the terminal to a woodworker’s most basic tools like a good, solid, reliable workbench. Without a proper workbench, a woodworker can’t really get things done. The same goes for us programmers, without our terminal were are nowhere. Well maybe that’s a bit exaggerated. I manage myself pretty well on my windows laptops without using powershell. But on my personal laptop, I use Linux and I do really use the terminal there. Yes, yes, I know windows has the Ubuntu sub system but still I don’t really use it as much as I would like to. It’s just not one of my habits yet.

The authors say that your shell, or terminal or console must be one of the tools you are most comfortable working with. They say you can do many things with the terminal like launching applications, debuggers, browsers, editors and utilities. You can also search for files, querying that status of your system and filtering output. I’m always amazed by the power of the grep command. I always seem to forget it’s syntax though. You can even add macro’s to your terminal for tasks you perform often.

A loooong time ago a colleague of mine made simple bash scripts to streamline his git commands. We were working a lot with submodules, which are essentially nested git projects. But when you work with these submodules you also need to deal with updating them to their committed state in the main project. This can become really cumbersome so we added batch to allow us to update, reset, commit files to them quickly. Very useful.

David and Andrew say that for developers that only ever used GUI based tooling this might all sound a bit extreme. But they have a very good argument; When you are using gui’s you are missing out on the full capabilities of your environment. And well, yeah think about it. With a UI you can only ever do the things, in some predefined order, what you can see on the screen. But if you are simply firing commands to an API, you can combine them in what ever shape or form you want.

When I read this part back in 2018 it really hit me. I never really used the terminal for anything other than GIT. But that changed 😛 Don’t let yourself be constrained by the people who designed some system with a nice UI. Use their API and do what makes you happy to use it. And, yes I understand that this is also extreme but sometimes you really have to. They also mention something what I consider pretty funny and that’s the following: “A benefit of GUIs is WYSIWYG — what you see is what you get. The disadvantage is WYSIAYG – what you see is all you get.” Haha totally true!

Next up they provide some examples of tasks they would do in the terminal instead of the UI. They show the command and their equal using UI. It’s interesting for you to check out for yourself in your copy of the book 😉

They also mention the fact that the command shell on windows is inferior to it’s unix counterparts. And back then, there was only CMD, but now there is PowerShell. And well, I still think they are inferior and not necessarily because they lack functionality, but because of the difference in commands and syntax. I mean, why!? I can use the terminal on linux and macOS interchangeably but on windows I always have to use my search engine to get the right command. It just sucks. And I know I’m biased here but I think it’s just annoying. Deviating from the standard is annoying, and I’m looking at you InternetExplorer and Safari.

Luckily we have the ubuntu sub system. In the book they are talking about installing Cygwin which is a unix compatibility layer for windows. I’ve tried this before as well, but I never really used it in the end. They also mention similar software called UWIN but I’ve never used that before.

So that’s about it for the plain text paragraph. What do you think about this? Do you think plain text is the holy grail for software development and configuration thereof!? I do. I think it has taken great steps in the past decade of cloud computing. Plain text and infrastructure as code are running the show right now. And I don’t see that changing anytime soon. Additionally, Unity3D is driven by plain text configuration by it’s meta files, and other unity specific files like scenes, prefabs and asset files. There’s just so much power in plain text you can’t easily ignore it.



01010010 01110101 01100010 01100101 01101110

Hey, sorry to bother you but you can subscribe to my blog here.

Never miss a blog post!

You have Successfully Subscribed!