Converting plain text to HTML
Practically every plain text markup language has a way to convert structured text into HTML. In fact, Markdown might be one of the most complex, because there are so many different versions of Markdown itself. (These versions are often called flavors. Don’t ask me why—hungry techies, perhaps.)
The original Markdown lacks an equivalent for every single element available in HTML. This is actually a strong point: it contains equivalents for the most commonly used text elements, and lets you use plain HTML when needed. In that sense, Markdown is not a language of its own; it’s a front end for HTML.
This means that if you want tables, you can enter them in HTML and that’s a totally legal Markdown document.
But this makes Markdown just that much more difficult for nontechnical people (perhaps even your clients) who’ll be preparing the documents for this step in the workflow. As I was developing this particular workflow, I toyed with the idea of using a more “complete” text markup language, but I was already so familiar with Markdown from use in email and other applications that I wasn’t too keen on switching. Luckily for me, as I mentioned, there are several different implementations of Markdown.2
I chose an implementation called Pandoc.3 Pandoc supports the original Markdown and offers extremely useful optional extensions, such as definition lists, numbered example lists, tables, and more. Pandoc can convert to and from a bunch of file formats, which is wonderful and has so many uses beyond web design workflow.
This will be the first of several instances in this workflow when you’ll be typing things into the command line. In case you’re not familiar with the command line, you’ll most likely be using the Terminal application on OS X or Cygwin on Windows. If you use Linux, there’s a good chance you’ve already used your terminal application at some point.
Using the command line
The command line interface (CLI) provides a simple means of interacting with your computer. Its design is actually quite elegant: on the screen there’s a prompt, at which you can tell the computer what you want it to do, and it will do what you ask (Figure 4.2). If it doesn’t understand your command, it will tell you so.
Figure 4.2. The command line interface is sparse; you have to tell it what to do.
People like to bring up the potential drawbacks of the CLI: yes, there are commands that will erase your entire hard disk or a portion thereof. Just don’t type those commands. In the graphical interface of your computer you wouldn’t willingly select all your folders, move them to the trash, and then empty the trash.
The argument is that it’s easier to do something stupid like that in the command line. And arguably it is. In fact, many things are easier to do in the command line, not just stupid things. Commands aren’t difficult, though some of them can be difficult to remember. But practice helps with memorization, just as it does when you need to remember which submenu item to choose in a graphical interface.
So don’t be afraid. The command line is a very useful tool, just as graphical applications can be. And as with any computer interface, you need to think about what you’re doing. Just remember that the command line does what you tell it to, nothing more, nothing less. Don’t tell it to do stupid things and it won’t.
The beauty of the command line is that you don’t need to know everything about it. It helps to know some basic commands—such as those allowing you to navigate around your system and create, copy, move, and delete files and folders—but mostly what you’ll need to know are the commands specific to the software you’re using.
If you’re skeptical, consider Adobe Photoshop (Figure 4.3). Photoshop—which this workflow deems unnecessary for creating design mockups for the web—is one of the most complex and sophisticated pieces of software available to consumers today. There are hundreds of books on how to use Photoshop, as well as whole books that cover only a specific functionality. If you’re a designer, you’ve most likely used Photoshop. So there you are, proficient in this really advanced piece of software, but worried about the command line. Believe me, you are absolutely smart enough to learn commands in the command line. And someday when you discover more command line tools and are able to do things like resize fifty images in about three seconds, you’ll feel the power that your developer friends do. If you’re a developer and reading this, yes, go ahead and gloat.
Figure 4.3. Graphical interfaces like Photoshop’s provide buttons and other inputs to let you tell it what to do. While visual, they’re not necessarily simpler than the command line.
I recommend that you consult a resource like Zed Shaw’s CLI Crash Course to become familiar with the command line. The online version is free, easy to follow, and you really will learn all the basics.4
That said, there are few commands you should know now: pwd, cd, and ls. Go on, open up your terminal application. This puts you in a shell. On OS X, the system I currently work with, the standard shell is called Bash.5
As a web worker, you’ve very likely seen a terminal before, but if you’re not familiar, that little blurb of text you see to the left of the cursor is called a prompt. It’s customizable, and it tends to look different depending on both the system and the user. It may or may not tell you information about the system or the folder you’re in. No matter. You type commands at the point where the cursor is. Type one now: pwd. You’ll see something like this:
Now press the Return key. The CLI returns a path. Just like paths on a web server, this is a path of folders on your computer. The path you see leads from the root folder of your computer to the folder you’re currently in. pwd means print working directory. The command tells the computer to print the working directory, which is the folder you’re currently working in. This is useful because, in contrast to your system’s graphical interface, you don’t always have a visual clue of where you are when you’re in the command line. This is what I get when I execute pwd:
Yours will be different, unless your name is Stephen Hay (in which case, nice name!). No problem; now you know where you are. Let’s see what’s in this folder. We can list the files in the current folder with ls:
Applications Documents Library Movies
Pictures Desktop Downloads Mail
Your results might be shown differently, depending on how many files you have and the width of your terminal window.
You’ll also want to change your directory, which you can do with cd:
$ cd Applications
This puts me in the Applications folder. You might not have the same folder; just enter the same command in one of your own folders.
My own prompt contains information about where I am (it actually contains the name of the folder I’m in), but I’ve customized it to do so. You needn’t worry about that at this point. As you become more comfortable with the command line, you can learn how to customize your environment.6
So moving down is easy: just type ls, note the directory you’d like to move to, and cd to that directory. Also note that many shells let you use the tab key for completion. This means that instead of typing the full word Applications in the previous example, I could type an A or Ap followed by the Tab key, which would complete the word for me. When the completion matches several words, these will be shown and you’ll need to add one or more letters accordingly before pressing Tab again. This is a huge time-saver:
$ cd A [press Tab key]
$ cd Applications [press Return key]
Now you know how to move down a directory. Moving up is easier. A single dot is the symbol for the current directory, and two dots is the symbol for the parent directory. Moving up a directory is done thus:
$ cd ..
followed by pressing the Return key. Moving up two directories would entail:
$ cd ../..
and so forth.
That’s enough to get you started. If you have no previous CLI experience, try these commands out for a while. You can’t do anything bad to your system, because these commands don’t alter anything.
Converting to HTML
The first step in using a command line tool—unless it comes with your system—is to install it. I’m assuming Pandoc doesn’t come with your system, so you’ll need to install it if you’re planning to follow along in the book. On Linux, you might find it and be able install it via your package manager. For OS X or Windows, there are install packages available.7 Go ahead and install Pandoc (or your preferred plain text converter) and then come back.
Once you’ve installed Pandoc, use cd to navigate to the folder that contains your Markdown document. Then type the following command:
$ pandoc index.markdown -o index.html
This says, “run Pandoc on the file index.markdown, convert it to HTML, and save the output of this command as index.html.” If you run ls, you should see that index.html has been created (Figure 4.4). Open this file in a web browser. Your structured content is now HTML. And it works on practically every device.
Figure 4.4. Using a command line tool like Pandoc, it takes only a second to turn plain-text markup into a basic HTML page. This can be a huge time-saver.
It just doesn’t look very pretty yet, so let’s do something about that. In the following chapter, we’ll start thinking about the more visual aspects of the design process, using this content as a base.