I have a confession to make... While I have worked in the Information Technology (IT) field for over twenty years, I am not a web developer. IT is a vast field, of course, and only a small percentage of “IT people” are actually developers, but still...
It’s like the old programmer joke: “How many programmers does it take to change a lightbulb?” The answer, of course, is: “None. That’s a hardware problem.”
People have a tendency to assume that everyone in a field is expert in every facet of that field. With IT people, pretty much everyone assumes that they will be able to help with their desktop computer issues, and are familiar with all possible issues which could occur with any form of technology. Sigh.
I actually started my IT career as a developer, but never got onto the web development bandwagon. In my first IT job, my boss took me over to the standard bookcase holding the manuals for all of the hardware and software in use, selected about a shelf-foot of Oracle manuals, handed it to me, and told me to start reading.
I was familiar with C, and had written some basic shell scripts, so I was first assigned to writing ad hoc scripts in SQL (https://en.wikipedia.org/wiki/SQL), and maintaining the scripts to manage our home-grown software change management system, which ran on AViiON (https://en.wikipedia.org/wiki/Aviion) Unix. I moved on to using Pro*C (an Oracle variant of the C programming language) and PL/SQL (Oracle’s proprietary programming language), mostly dealing with database management, ETL (https://en.wikipedia.org/wiki/Extract,_transform,_load) processes, and data warehousing.
After a few years, I shifted into data analysis and project management, and drifted away from programming, so I never really got involved in web development, though I have often worked on projects which involve web technologies.
Nowadays, of course, the web is everywhere, so I feel that there is growing value in understanding more about the technical details. Even if I never again work as a developer, I am sure I will benefit from learning about web development.
So, what is this web thing, anyhow?
I decided to start from the bottom up, and decided on the free/open-source “LAMP” stack (https://en.wikipedia.org/wiki/LAMP_%28software_bundle%29), as opposed to WAMP, WIMP, MAMP, or other terms I find vastly amusing.
LAMP generally stands for “Linux”, “Apache”, “MySQL”, and “PHP”, and represents the tools used as the server operating system, the web server software, the database software, and the application programming language. Needless to say, there are variations on each, but I decided to start with one of the most common groupings – in the worst-case, I might learn about something that I end up not using after I shift to an alternative – hardly a tragedy.
Linux (https://en.wikipedia.org/wiki/Linux), while representing a small fraction of the desktop computer market, actually represents a large share of the world’s computers. It is very popular among internet servers and embedded devices, and the Android operating system (used by a great many mobile devices) is derived from Linux. For my purposes, I selected Linux Mint (https://linuxmint.com/), partly because I thought it would be interesting to learn about a different Linux variant, and partly because it was featured in one of the sites I found for setting up a LAMP stack. (https://techviewleo.com/how-to-install-lamp-stack-on-linux-mint/) YOLO!
Apache (https://en.wikipedia.org/wiki/Apache_HTTP_Server), is a free and open-source web server, whose primary purpose is to host web pages. It generally uses “HTTP” (“Hypertext Transfer Protocol” https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol) to present data to the user, frequently using the “HTML” (“Hypertext Markup Language” https://en.wikipedia.org/wiki/HTML) markup language (https://en.wikipedia.org/wiki/Markup_language).
Er, huh?
Yah. A bit to unpack there, but it’s really not as bad as it sounds. “Markup” is a term for adding annotations to a document, which can be “syntactically distinguishable” from the text...
Sigh. Ok. Let me try again.
Markup refers to a way of adding special codes or “tags” to a document, which tell the browser how to format it. HTML is simply a markup language designed for use by web pages.
As you will see in the HTML example below (taken from the Wikipedia article), the basic tags are (to at least some degree) human-readable. In the past, programmers would often edit the actual web page, but most pages nowadays are generated by scripts, so the HTML in the final page is so complex that it’s not really practical for humans to review, except when troubleshooting issues.
<!DOCTYPE html>
<html>
<head>
<title>This is a title</title>
</head>
<body>
<div>
<p>Hello world!</p>
</div>
</body>
</html>
MySQL (https://en.wikipedia.org/wiki/MySQL) is an open-source RDBMS (“Relational DataBase Management System”), which is a tool for building and managing a relational database. I will probably go into some detail on database types and technology at some future date, but suffice it to say that MySQL is a “traditional” database which will satisfy the vast majority of requirements quite well. (See https://www.til-technology.com/post/know-the-rules-before-you-break-them for a mention of a comparison between MySQL and MongoDB)
PHP (https://en.wikipedia.org/wiki/PHP) is a scripting language which is frequently used for web development. (Amusingly, PHP originally stood for “Personal Home Page”, but now stands for “PHP: Hypertext Preprocessor”, which is a “recursive initialism” – my first exposure to that term). Among other things, PHP is used to write code which extends the basic features of HTML.
So, now what?
Well, I used VirtualBox (https://en.wikipedia.org/wiki/VirtualBox) to set up a dedicated “virtual machines” (or “VM”) for my web development work. Depending on what I decide to do, I may build out other machines, or replace them, or restore them to some earlier version, or whatever – all at minimal risk to my main computer. Now, one drawback is that I need sufficient capacity on that computer, which is now about 5+ years old, and may struggle if I want to start playing with multiple VMs. (I may write about the pros and cons of having a dedicated computer, as opposed to a shared family computer at some point – for me, having a dedicated computer was a big plus, particularly since I could take certain risks without inconveniencing the whole family. I considered setting up a dual boot with Windows and Ubuntu but, while I know they can work very well, I didn’t want the additional bother.)
So, now I’m ready to start. Next step will probably to start learning a few basics about the various tools and build a “hello, world” page.
Cheers!
Comments