After three months of hard work, I finally finished the column that had been brewing in my heart for a long time. It was a very strange experience, and it was very confusing and scary, but also very exciting and happy. I personally believe that on the Internet today, people can find almost anything they want to know if they use search engines well. Therefore, in this age, the purpose of writing a book should not be simply to popularize knowledge, but to express the author’s own ideas and experience. Because it’s this kind of personalization that no artificial intelligence product can replace. It’s not necessarily right, but it can stimulate thinking, spark discussion, and precipitate things that the Internet lacks today. Therefore, I hope to introduce my personal views and experience on Markdown through this column, so as to attract more attention to Markdown and promote the spirit of open source software to the writing field. After all, it is the written word that we humans develop the longest and most frequently.

01 Why write this column?

The first idea for this column came from a Complaint on Facebook. As a heavy Markdown user myself, I often have to search for various Markdown writing solutions when taking notes, writing articles and translating books. At the same time, blogs, forums, and cloud-based note-taking services have been added to support Markdown, which means that there are a lot of people who use the logo language, but I was surprised to find no book on Markdown on the market. So I shared this idea on Facebook:

I think markdown writing can extend to a lot of things, such as LaTeX, Mermaid, etc., gitbook for my ebook, Hexo for my blog, and no one is writing a book! It’s a pity that…

Naturally, a friend suggested “why don’t you write it?” While I was simply expressing my need for such a column and that it would be better to hire a professional to write one, discussions with friends made me reconsider the idea I shared. This idea actually illustrates why I like to write in Markdown:

  • First, Markdown is open source software, in line with the work philosophy of being open, free, task-focused and easy to collaborate with peers.
  • Second, Markdown conforms to the “data and presentation style, user interface separation” programming thinking.
  • Third, Markdown’s text-only nature allows us to manage our own written work in the same way we manage the programmer’s source code.

To summarize, Markdown allows people to “write like a program,” which made me realize that writing a column like this is not just about introducing a lightweight markup language, but about promoting values and methodologies that emphasize freedom, openness, and collaboration. This is a value and methodology THAT I have been adhering to for many years, and now that no one has written a book about Markdown, I might as well do something to promote it myself.

02 Column introduction?

In this column, GUIDED by the writing process of an undergraduate thesis, I introduce the application of Markdown in the different task stages of thesis planning, writing, revising and publishing. The column is divided into six chapters and two appendices:

  • Chapter 1 Writing with Markdown: In this chapter, we introduce what Markdown is, its strengths and weaknesses, and the writing philosophy it promotes. It should be noted that this chapter is for friends who know nothing about Markdown. You can skip this chapter if you think you already know something about Markdown, or if you don’t want to get bogged down in technical concepts and want to get to “How to use Markdown” quickly.
  • Chapter 2 preparation for Writing: In this chapter, we first introduce some Markdown editors that are worth trying out. Then, guided by the preliminary planning of the paper, we taught the students how to use Markdown to draw up the outline of the paper, list the reference materials of the paper, and arrange the writing progress by setting the to-do list.
  • Chapter 3 Writing a paper: In this chapter, we continue to use the formal writing process of the paper as a guide for step-by-step in-depth introduction to the remaining major Markdown markers and their specific uses. This includes both the native Markdown tags used to represent basic elements such as paragraphs, emphasis, references, and code, as well as extended tags related to tables and graphs, and their basic usage.
  • Chapter 4 on math:In this chapter, we first looked at how to insertTag to render a mathematical formula. And then, we’ll talk about how to use it, rightMark to describe the basic four operations, binomial equation, matrix operations and set operations and other mathematical problems.
  • Chapter 5 Review and Maintenance of works: In this chapter, we have a series of discussions on how to maintain Markdown projects as program projects. First, we introduced a Markdown editor that allows people to focus more on text content review and modification. Then, considering the fact that Markdown is not popular enough, we introduced a special tool for converting MARKUP language format for more people to participate in the review of works. Finally, in order to manage project changes in a temporal dimension, we also gave a basic introduction to how to manage and maintain Markdown projects with git version control system.
  • Chapter 6 other Uses of Markdown: In this chapter, we show you how to use Markdown to create presentations, online e-books, and write a blog. It focuses on the wide applicability of Markdown as a way of writing.
  • Appendix A Simple Makefile Tutorial: In this appendix, we walk you through the basics of writing makefiles to batch convert Markdown documents to other formats with the format conversion tools introduced in Chapter 5.
  • Take a look at Node.js in Appendix B: Given that both Gitbook and Hexo in this column are deployed on the Node.js runtime, which has evolved into such a large software ecosystem today, I thought it was worth devoting an appendix to Node.js and its installation and configuration.

03 Introduction to open Source movement

Before you start reading this column, I also want to make a brief introduction to the open source movement. In essence, open source software is a solution to a software engineering problem. Speaking of software engineering, I believe that computer and software engineering students should be familiar with, we have memorized some assembly line project development process in the early years.

The first is in the project definition stage to do feasibility analysis, demand analysis of these things, and then into the development stage to do outline design, detailed design, design implementation and other steps, the last is the maintenance stage of operation and maintenance. It seems that software development is like the factory assembly line in Modern Times, where the division of labor is clear and orderly. The goal is to make programmers become assembly-line workers, so that they become a screw in the production machine, no need for creativity, no need for personality, as long as they are skilled. Many large enterprise development projects do follow this path, and many programmers are nicknamed “code farmers” for this reason.

However, when I looked at the project management model after working for a few years, it seemed that it was basically a “planned economy”. First, most software doesn’t have that many people at all in the early stages of development, usually two or three people doing everything. It doesn’t make sense to have so many stages, so many processes. And again, even if you have a certain size of company, they will have a lot of people working on a project, often to maintain existing software, and the main task of the programmer is to maintain a version of the software, and develop new versions based on that, in this case, they actually have an existing development framework, They just need to populate the framework with specific, proprietary software based on specific needs.

This is more like adding a feature branch to the original framework. For example, the JetBrain team developed a generic IDE called IntelliJ IDEA, and Android Studio is an IDE specifically for Android development based on IntelliJ IDEA. We can think of it as an offshoot of the IntelliJ IDEA project. This is more of a maintenance job in the sense that its feasibility and requirements are obvious, and there is no need for a general design, just the implementation of its original plug-in architecture. However, bug fixes are the main work of this project. Therefore, how to let so many people together effectively, orderly find bug, report bug, solve bug has become the main problem.

In the 1970s and 1980s, there were two so-called software crises [1], when many software projects suffered from budget overruns, serious delays in release, and poor quality management. A number of projects have failed, and the problem is so serious that organizations like NATO are meeting to discuss it. But what these people at the top are talking about is what we call software engineering theory. According to Frederick P. Brooks, author of “The Myth of the Man-Month,” it takes a lot of silver bullets, a lot of people, and only big companies and research institutions can do that. For these institutions, of course, the theory does solve some problems. Especially before the advent of the Internet, it seemed our only option.

But big institutions are bureaucratic, cumbersome, costly to communicate and inefficient to develop, and over time they tend to get further and further removed from people’s actual needs, like those medieval cathedrals, with their lofty, out-of-touch periodic releases of information that are too complex and too late. For its peripheral, downstream developers and small software development is no help. So Linus Torvalds, the father of Linux, took a new path in developing the Linux kernel on his own: open source, community collaboration.

In simple terms, the creator of a software project creates a rudimentary initial version and then throws it out into a community of developers, where it grows naturally as developers modify and share it at their own will. Finally, the project founder will incorporate what they approve into the main branch of the project based on its growth. This organized form in chaos makes Linux project a great success and provides a new practical experience for software development project management.

Similarly, in the late 1990s, Netscape [2] was facing an existential crisis after losing the browser war to Microsoft. They decided to try the open source approach. Eric Raymond was netscape’s strategy consultant at the time, and in the process he wrote his most famous book, The Cathedral and the Fair, based on his new book. This column laid the theoretical foundation for the open source movement. It systematically elaborated on the mode of collaboration under the Condition of the Internet, the advantages of peer review, answered the silver bullet question raised in the Myth of the Man-month, and the cost of managing people. Today, former cathedrals like Microsoft and Apple are jumping into the open source space. Open source as another organizational form of software engineering is no longer in doubt.

Finally, the open source movement is not the same thing as the Free software movement [3] led by Richard Stallman. The open source movement is more a way of managing software engineering, and while it emphasizes the free spirit of open source and free sharing, it doesn’t have a strong moral imperative. While the free software movement is more like a religious ideology, to “ensure that users use free software” has an almost harsh moral requirement, for example, they will require all the products are based on free software development is not only to open source, also must allow the user to modify the product software source code, or change the use of the hardware. It’s hard not to feel utopian and idealistic to allow users to truly be “free.” In my opinion, such a fierce argument objectively brings a lot of resistance to the sharing of source code.

04 Write using Markdown

In this chapter the feed

In this chapter, we will give a brief conceptual introduction to Markdown. Specifically, we’ll talk about what Markdown is, what its strengths and weaknesses are, and the writing philosophy it promotes. It should be noted that this chapter is for friends who know nothing about Markdown. If you think you already know something about Markdown, or if you don’t want to get bogged down in technical concepts and want to get to “How to Use Markdown” quickly, you can skip this chapter and move on to the next one. However, if you want a more complete understanding of my views on this technology, please take a moment to read this chapter. After all, just as there are a thousand Hammorets in a thousand people, each person has a slightly different understanding of the same technology.

05 What is a Markdown?

Markdown is a Lightweight Markup Language (LML) developed by John Gruber and Aaron Swartz in 2004. That is: First, Markdown is a markup language that can be entered and modified with any text editor and stored on a computer as plain text.

Second, it is a “lightweight” language, which means that Markdown’s format is easier to use and closer to natural language than richer markup languages such as RTF, HTML and TeX. This makes it more suitable for writing and sharing. The gruber team developed the language to encourage people to edit and store documents in a plain text format that is easy to read and use, and then convert them to (X)HTML, DOCX, and PDF as needed. Markdown takes readability seriously in its design. In other words, one of the goals of Markdown’s design is that it can be read literally, without requiring much effort to learn formatting instructions such as RTF and HTML.

John Gruber is a Pennsylvania-based writer, blogger, user interface designer and inventor of the Markdown publishing format. Aaron Hillel Swartz is a noted American computer programmer, entrepreneur, author, political activist, and Internet hacktivist. He was involved in the development of the RSS web feed publishing format, the Markdown text publishing format, creative Commons, the web. Py web development framework, and is a co-founder of social media site Reddit.




In fact, the initial implementation of Markdown was little more than Gruber’s reference to existing email markup formats and some early markup languages (Setext, Texile, etc.), Markdown.pl, a Perl script that converts documents written in Markdown syntax into a valid, well-formed (X)HTML format. The script can be used on its own, as a plug-in for blogging systems like Blosxom, or as a text filter for editors like BBEdit. Over time, however, Markdown has been re-implemented by many people in Perl or other programming languages, and there are many different versions of Markdown implementations on the market.

Additional features such as tables, footnotes, lists, and code blocks have also been developed based on Markdown’s basic syntax. Some of these features deviated from the original implementation of the language, leading to ambiguities in syntax specifications that pushed Markdown’s standardization onto the agenda. Of course, it’s worth noting that Gruber, the founder of Markdown, is not in favor of complete standardization. “Different sites [and people] have different needs,” he says. There is no single grammar that will please everyone.”

As far as I can see at the time of writing this column, the most recent development in Markdown’s standardization is RFC 7763 and RFC 7764, published in March 2016. The RFC 7763 file introduces the MIME type text/markdown from the original variant. The RFC 7764 file discussed and registered different implementations of MultiMarkdown, GitHub Markdown(GFM), Pandoc, CommonMark and Markdown.

3 is March 2019.

The advantages and disadvantages of Markdown

Markdown is now used by more than just programmers who document applications. It is becoming increasingly popular with editors and writers internationally. Using Markdown to write and edit articles has incredible advantages in the Internet age. Let’s discuss these advantages in detail:

  • Syntax is simple and easy to read: Thanks to Markdown’s concise syntax and minimal use of devices other than keyboards, it allows people to focus more on the writing itself, which is a huge productivity boost. I’ll discuss this further later in the next section when I introduce Markdown’s basic writing philosophy.

  • Text access: In my opinion, the ability to process and store documents in plain text is Markdown’s biggest advantage. Most of the benefits we’ll cover later are related to this feature in one way or another. In short, Markdown’s text-only nature makes it extremely compatible. We can use any text editor to work with Markdown documents without worrying about horizontal compatibility between different editing software (such as Microsoft Word and Apple’s Pages). And the vertical compatibility problems caused by the software’s own upgrades (for example, the old version of Word can’t open the new version’s default format docX). In addition, if you are using Linux/Unix or MacOS, there are a number of text-specific system tools available (such as diff, sed, etc.) that make accessing, searching, and transferring documents much easier.

  • Easy format conversion: Because Markdown is stored as plain text on the computer, it is also very programmable and can be easily written with a variety of format conversion tools. Thanks to the concerted efforts of many people, we can easily convert it to (X)HTML, PDF, EPUB, MOBI, DOCX, etc. We will discuss this in detail in Chapter 4.

  • Online collaboration: Anyone who has worked remotely knows that one of the first things we often encounter when working online is platform dependency, such as if you’re using Word on Windows. I used Pages on MacOS, and WPS on Ubuntu Linux. Often, we could not open each other’s files, or opened each other’s files, but due to the different Chinese and English fonts supported by their respective operating systems, the typesetting was terrible, or even completely garbled. All of this is solved by the plain-text nature of Markdown mentioned above.

    Another problem with web collaboration is that members may make different changes to the same file at the same time, which requires version control. It seems that every version control system on the market, whether CVS, SVN, or Git, supports plain-text documents first, and we can versioning Markdown documents as if we were a hypervisor project. We will discuss this in more detail in Chapter 5.

    In addition, since Markdown is an open source project, anyone can modify, refactor, and extend its implementation, so some people use it to document their programming projects, build blogging platforms (Hexo, etc.), and create e-books (GitBook, etc.). All in all, with Markdown, we can take open source ideas from programming and apply them entirely to writing, enabling peer review, sharing and discussion across the Internet to improve the quality of our work and promote overall progress.

Of course, everyone, anything and everything presents some disadvantages as well as their advantages. And both advantages and disadvantages usually come from the same feature, depending on which aspect the feature plays. Here’s a look at some of Markdown’s disadvantages, or things it’s not good for:

  • Domestic use is not widespread: although the Markdown over the years has been more and more attention in China, but in some key areas, such as most of the press will ask you to provide the Word version of the manuscript, and even some computer books publishing press, too, that means that the popularity of this writing is far from ideal.
  • Not suitable for typography: Markdown’s syntax is designed to keep people focused on writing, so it is not suitable for complex typography, such as various typography Settings, complex tables, text wrap around images, etc. This requires us to learn some specialized tools for typography, such as LaTeX, and use them with Markdown.
  • Peripheral tools are expensive to learn: Markdown has a wide range of peripheral tools, such as Pandoc for format conversion, LaTeX for typography, Gitbook for publishing HTML e-books, Hexo, a framework for building blogs, and so on. Each tool can be viewed as a separate technology, and it would be very expensive to learn everything if you had to master it all. Therefore, we should study selectively according to our own needs.

Therefore, all mechanisms, frameworks and tools must be implemented in the end, and “how to use” is basically the judgment of the user according to the application scenario. Whether a tool plays to its strengths or presents its weaknesses is up to the user to judge.

07 Based on Markdown’s basic writing ideas

After introducing the advantages and disadvantages of Markdown, let’s move on to the question of why you should write with Markdown. First of all, I’d like to ask you to take a look back at how we wrote in an era dominated by pen and paper. I believe that era is not far away. You may remember that our writing generally follows the following steps:

  • Create the overall direction and general content of the work in your mind.
  • Make an outline of your work on a piece of paper to determine the chapter titles.
  • Write the first draft of the work with the chapter headings specified in the outline.
  • Then send a copy of the draft to the person concerned for review and feedback.
  • Revise the work according to the reviewer’s feedback and write the final draft.
  • Submit the final draft to the publishing house for typesetting and design, and publish the work.

In the above process, we do not need to worry about the other steps at each step. For example, when writing an outline, we just need to think about what are the chapter titles? There is no need to think about what font, size, or color should be used for chapter headings. They don’t have to think about what computer they’re using or what system is on it when they send it to teachers and editors for review. The layout editor does not complain that our self-righteous, messy layout adds too much extra work to the layout design phase. But these are common problems when using Word processors like Word or Pages. Why? The reason is that these word processors are so powerful. Yes, too powerful software can cause problems. Because these software features can tempt us to do too many things at once, these things can interfere with the writing process. For example, these features can tempt us to think about the font, size, and color of chapter headings. Paragraph spacing, line spacing, text alignment, or table styles will be considered when writing chapters. However, writing requires continuous and focused thinking. If you are always thinking about several things at the same time, your writing thinking will be broken, which will greatly affect the quality of writing. Of course, we can use self-control to focus on the writing process at hand. But the very fact that it makes us consciously use our self-control is evidence of the interference of these functions. After all, we don’t even think about it when we’re writing with pen and paper, unless you’re writing with a set of watercolors. The simplicity of Markdown is a return to pen and paper, eliminating all tools and allowing us to focus on writing. In addition to bringing writing back to its roots and improving our ability to focus on writing, another basic idea behind using Markdown is to write like a program. Markdown’s design fully conforms to some of the principles we follow when we write programs:

  • Do one thing at a time: As mentioned earlier, Markdown only focuses on things related to writing.
  • Avoid platform dependence and ensure portability: Markdown is stored in plain text format and is independent of any operating system or editing platform.
  • Don’t reinvent the wheel: Text files written in Markdown can be used as input data for other programs, which ensures that we can use existing tools to perform further processing on Markdown files, such as typesetting in LaTeX, blogging in Hexo, etc. Avoid installing big, bloated, expensive software that 80 percent of the features will never be used.

Based on these principles, we can apply all the software design and engineering experience that can be used for program development to the creation of words, so as to make better use of the advantages given to us by computers, so that our writing process is more standardized and more in line with the working form of the Internet age.

** Article summary **

In this paper, we first introduce the concept, design concept and standardization process of Markdown. Then, we listed the advantages and disadvantages of the markup language. Finally, based on these strengths and weaknesses, we illustrate the basic writing concept based on Markdown.

In short, Markdown is a lightweight, open source markup language designed for writing. The grammar is simple, very close to human natural language, and helps us focus on the writing itself. In addition, because of its text-only nature, it has a very good openness and programmability, which allows us to use it to write like a programming language, that is, write the content first, and then use various other tools to process it. And throughout the writing process, we can apply the same software engineering ideas that have been applied to program development to manage the writing schedule, perform version control, and handle the release of the work. From the next chapter, I will take the production process of a professional paper as an example to introduce the use of Markdown in detail, and see what kind of experience the writing process like programming really is.

Get the coupon first and then buy more discount oh




– END –