I recently read a funny blog post on things learned way too late in life. While there are certainly no shortage of such things to share, I have experienced some of my most "woah" moments in the last few years in the world of computers. Being pretty new to the field and largely self-taught, I consistently have the bittersweet experience of noticing a glaring blindspot and the lightbulb moment once the gap is filled in.
1. Clients, servers, hosts, oh my... Understanding the whole client-server thing was one of these experiences. These concepts are thrown around in almost any slightly technical computing context but for most of my life I just slowly nodded my head along without really getting it. It wasn't until I heard someone describe a server as "someone else's computer" that it clicked for me. While that is a bit reductive, I think it's a helpful reminder as we think of the original analogy.
Imagine that you're hungry suburbanite and you're walking down a strip mall of restaurants, deciding whether you really want to hit Subway after that "Subway man" scandal or if you'd rather deal with the screaming children at Appleby's. As you, the client, are browsing you decide that Subway was in part responsible for Jared Fogle's actions and decide on Appleby's as your host of choice. You, the client, are met by the server who takes your order, and after some time, serves up your request.
In computing this is why your web browser is often referred to as the client. As you browse a website, there is a host computer, or server, which brings you the files displayed on your computer. The internet is conceptually just the mode of communication between these computers. Cool, right?
This post was definitively not sponsored by Subway.
## File extensions are just hints to other programs Have you ever had the experience of renaming a file when you get the scary prompt about changing the file extension? I always had the sense that I was breaking something and that to click yes meant to irrevocably corrupt my poor file. Turns out that all the file extension does is just give other programs a clue as to what's in the file, it doesn't actually contain any data itself! Try writing a simple hello.txt file and changing it to hello.jpeg. Unfortunately that does not have the magic effect of turning your text file into a snapshot of text, it just confuses Paint when you try to open it. Good thing is, you can always go back. ## Buttons and windows on your OS can always go back to CLI ## Domains are read backwards Whenever I visit something like www.google.com, as an English speaker, I read it and interpret it as www dot google dot com, which seems reasonable to interpret as "Go to the worldwide web, then go to Google, and then the .com version". This pattern is reinforced by thinking of www.google.ca which follows the same pattern but instead says "actually, go to the Canadian version instead". Confusingly this is totally backwards, domains are actually read backwards. The .com or .ca that we think of as the patriotic appendage is in fact the Top Level Domain. google is merely one subdomain within the space of .com or .ca. And every . thereafter denotes deeper levels of subdomains. Weird right!? Well where does that leave our www? Is www merely a subdomain of com dot google? Yes! It is in fact just a cosmetic thing that is a vestige of historical convention. In practice this explains why you can always drop the cosmetic www. appendage in any domain but you can never drop the .com. Reading my domain makes a lot more sense when viewed this way. The Organization called Neocities is hosting a small slice pointing to Mash's Musings. org dot neocities dot mashsmusings! As for the stuff that comes after the /? You can think of those as folders except now we're going in the opposite direction. If you think of just the domain as pointing to the highest up, root, parent folder on a computer, you can think of each / as clicking into a folder within that computer. So clicking on a single post takes you to the blogs folder under my mashsmusings subdomain and gives you the specific post stored in that folder. The beginning part of the URL tells the client how the stuff will be served. This is kind of complicated.