Basics
If we’re going to be technologically literate, we should know a little bit about what’s going on inside our machines.
The central processing unit, or CPU, is the brain of the computer. It carries out the instructions of a computer program by performing basic arithmetic, logic, and input/output operations.
Gordon Moore, the co-founder of Intel, made the observation in 1965 that the number of transistors on a microchip doubles about every two years, though the cost of computers is halved.
This is called Moore’s Law. It’s still true today, although Moore himself believes that the law won’t be true by 2025.
When the CPU processes commands, it temporarily loads them into the memory, or Random Access Memory (RAM). In the days of punch cards, the instructions on that piece of paper would be loaded into the computer’s memory to run a program.
Today, the hard drive stores both compiled programs that get loaded into the memory, as well as the files you create while using the computer.
The first commercially available hard drive was made in 1956. It held 5 megabytes of data and cost about $10,000 per megabyte. That’s $50,000 to store the equivalent of your favorite pop song in a digital format.
A punch card holds 80 bytes of data. One megabyte is equivalent to a bit over a million bytes.
That 16 GB microSD card you got for $10? It holds the equivalent of almost 200 million punch cards.
It would seem that a hard drive is a much better way to store information than a piece of paper, right? If you think of information storage through all of human history, the hard drive is a pretty new concept. First we chiseled rocks, then we pounded papyrus, now we use magnets to read and write information on aluminum or glass. We’ve been moving towards more and more fragile mediums to store information, although the amount of information we can store has grown exponentially.
All of these components: the CPU, the hard drive, and memory are attached to the motherboard. The motherboard is a printed circuit board that allows communication between all the electronic components of a system. Some people call a motherboard a logic board, I think it is a matter of when you started tinkering with the insides of your computer that dictates what terminology you use.
On the motherboard, there are a series of ports that allow you to attach other devices to your computer. The one you probably rely on most is probably a USB port. The device that you attach through the USB port sends information back and forth from the connected device to the computer.
Speaking of ports, we also use that term with computer networks. When software that connects to the network is started on a server, it binds to a designated port number. Sometimes the number is hard coded, sometimes it’s set in a configuration file. For common services, like the web and email, we have standardized port numbers. For example, HTTP is the protocol used to access the World Wide Web. It uses port 80.
But what if a service is running on a non-standard port? You might have run across this using your web browser. If you are required to add a colon and some numbers to the end of a domain name, you’re specifying the port you want to connect to. Why wouldn’t you run your software service on a standard port? Maybe you don’t want people to stumble across it accidentally. Maybe you just don’t want to follow standards.
All of these components provide the building blocks for the software you use on your computer. If every program had to talk directly to the CPU though, it would take a really long time to develop the software that you use everyday like Adobe Creative Suite or Microsoft Office.
Instead, software developers rely on operating systems to provide core functionality. There are a ton of operating systems, but the 3 dominant ones are Windows, MacOS, and Linux.
Windows and MacOS are graphical operating systems. When you start a computer running these operating systems, you can immediately use a mouse and keyboard or just touch the screen to use it.
Linux is not. When you start a computer that uses Linux as its operating system, you will see a bunch of text output as programs start to run followed by a login prompt. It makes my inner nerd get the feels.
Linux is based on Unix, a family of multitasking, multi user computer operating systems that derive from the original AT&T Unix from the 1970s.
Windows and MacOS came out in the early 1980s and targeted business users. Without a graphical user interface, most people wouldn’t be able to use a computer.
In 1991, Linus Torvalds released Linux as free software under the GNU General Public License. As of 2017, all of the world’s 500 most powerful supercomputers run Linux. The vast majority of servers on the Internet run Linux.
You too can run Linux. You don’t have to be confined to a command line interface either. There’s a software package called X Windows that allows you to use a graphical user interface.
For a long time, the main thing that stopped people from using a free operating system was that the software they needed required Windows or MacOS. For example, Adobe Creative Suite does not have a version made for Linux. Today though, many people see the future of applications as web based.
Google’s Chromebook runs on a Linux variant. It has enough power to browse the web, which can be used to access applications like Google Docs.
Do you know where your files are? I mean, they’re on your computer’s hard drive. But where on that drive are they?
Every operating system has a hierarchical file structure that uses directories. The root directory is the start of a tree structure that contains levels of subfolders. Operating systems try to make sense of this by separating files made by the user and those used by programs in different directories.
Do you store files on your desktop? You should be ashamed of your clutter.
But where are those files actually located on your computer’s hard drive?
On a Mac, there is a root folder called Users, each account has a subfolder that uses the account name. Within that subfolder is a series of folders that are meant to help you organize your files. Downloads, Documents, Desktop.
Even though you probably use Windows or MacOS, you can still get away from the graphical user interface and access a command line. Apple calls this Terminal, Microsoft calls it the Command Prompt. If you run this program, you’ll see a black and white window with text and a blinking cursor. In front of where the cursor is, is a reference to where you are in the file structure. Unless you change the default, it should drop you into your User folder.
The command line can be very daunting the first time you use it, but it allows you to change and configure your computer much more than you could from a graphical user interface. That’s primarily due to the limits of early computers, yet from an interaction design perspective, it’s much easier to include everything if it’s just a series of commands to type in rather than an exponential amount of buttons, menus and data entry fields.
So when you see a person hacking a computer in the movies, you’re seeing a more accurate portrayal when it looks like they’re typing a bunch of gibberish. I wish hacking was more like the movie Hackers where Johnny Lee Miller plays a video game taunted by Steven Fisher looking like Leonardo Da Vinci, but sadly, it’s not.
Today we often reach for our phones as we are having an in person conversation to fact check or look something up. We do this on the World Wide Web. Sometimes you know exactly what website you want to go to. The address you type in is called a URL, or Uniform Resource Locator. On the web, the URL starts with http in reference to the protocol being used.
At some point in your browsing history, you may have clicked on a link with another protocol being referenced. For example, FTP (File Transfer Protocol) allows you to send and receive files to and from other computers. Many software applications exist for FTP, but your web browser has a very minimal implementation as well so if you click on a link that starts with FTP, you might end up seeing a file directory on the server that the link points to.
At the end of the URL, you can specify a query string. The next time you’re using your web browser, look at the address bar and you might see a question mark followed by what might look like some gibberish. These are sets of parameters with an assigned value. The parameters that a web page might accept are set by the person that programmed the website.
Remember that expensive 500 megabyte hard drive I mentioned saving up for? At the time, I was running a BBS. People liked to share files on BBSes. The more storage space I had, the more files people could upload. For my younger self, each uploaded file to me was like a gift. What if I filled up my hard drive? Where could I store the files?
For most people, backing up files meant using a floppy disk that could hold just over a megabyte. You probably only had one floppy drive in your computer, so storing files on hundreds of floppy disks wasn’t that practical. Instead, I invested in a tape drive. Tape drives allowed much more storage, but you couldn’t access the files directly. Instead, you had to use the vendor’s software to restore files to your hard drive. It took a long time.
Having files stored locally wasn’t just convenient, it was necessary. The idea of using cloud storage as a means of accessing and using files was inconceivable. The bandwidth of modems was too slow to do anything meaningful. As bandwidth speeds increased and a large number of people could access the internet using a cable modem or DSL line, this started to change.
For me, the first wave of using cloud storage was a way to share large files. For example, if I was collaborating with someone else on a website, I could use a software application like Dropbox to share files. Sometimes, I might download the file from Dropbox and then save it back and delete the local copy. The first versions of consumer cloud storage were web based and this method of retrieving files made sense.
As bandwidth speeds increased more, Dropbox and other cloud providers focused on creating synchronization software where the files on your account would be mirrored on a folder on your local computer. This changed everything.
It was now possible to use multiple computers as a method of productivity. It wasn’t necessarily about giving other people access to your files, just every device that you owned.
With cloud storage, your personal computer is much more replaceable. If you come up with a good organizational method, you can save everything to the cloud and backing up your computer is much more about software preferences than saving memories or homework.
Once you move in this direction of disposable computers, your personal files are physically located on some company’s server. You are at your cloud storage’s mercy when it comes to accessing your files. If they hike up their monthly fees, that’s on you. If they go out of business, your files could disappear along with their servers. And even though they can tell you they won’t access your files, there really isn’t anything stopping them from doing so.
While you might think your files are important, they aren’t as important to a company like Google as much as your other data. Your search history, the clicks, your response time, your name, your gender, your socioeconomic status, your political views and so on. Where is all that data held?
A database is an organized collection of data that is stored and accessed electronically from a computer system. Relational databases became dominant in the 1980s. These model data as rows and columns in a series of tables. They usually use SQL for writing and querying data. If you’ve used Excel, think of a spreadsheet as a table. I’m saying “SEQUEL” but this is an acronym: S.Q.L. Structured Query Language.
Corporate databases have vast amounts of tables and each table can be linked to other tables in each database through reference fields known as ids. The data stored in each field is usually small. As the data collection increases, the database can get very large. For example, Facebook probably has a user table that has over a billion rows in it. Each of those rows can be linked to other tables, perhaps articles that you’ve liked. You can also reference other data in the same table. For example, the user table might have my first name, last name, and date of birth and user id. Through another table of friendships, my user id would be linked to another user id. Combining these together would allow me to see the names and birthdays of everyone that I’m connected to.
Let’s be honest though, my name and date of birth is probably the least exciting thing they have on me and you.