Why Markdown is over hyped?

Ensel Software
6 min readFeb 4, 2021

--

On internet, there are 3 types of writers

  1. Who love markdown.
  2. Who hate markdown
  3. Who don’t know what is markdown (the lucky ones)

Ensel Software is among those who dislike Markdown. Let us explain why.

Markdown became popular when word processors were in their infancy. Markdown uses special syntax like # at start of a line to indicate heading, and other rich text formatting like **bold**, *italic*, ~~strikethru~~ etc.

This is no different from HTML where to make bold you type <b>bold</b> and so on.

Even RTF (Rich Text Format) files use similar syntax like \b bold \b0 and similar for italics, underline etc.

So you see, Markdown is no magic bullet. The proponents of markdown argue that you can still keep your notes in plain text format so you are protected from vagaries of file format changes of word processors.

Really?

The RTF or HTML formats are there since last 20 years and they did not change much (although HTML introduced some new things but still backward compatible). If you write with very limited formatting, which most markdown users do anyway, then your file created 20 years back still readable today. Both of these formats are plain text too. Besides this, you can write very complex documents using these formats.

Even Microsoft’s DOCX format is now open and universally available. You will be hard pressed to find someone who has a computer but does not have access to Microsoft Word. Most corporate world and schools now have Microsoft Office licenses which users are allowed to use in their personal devices too. If someone does not have that, can always use free online version of Microsoft Office. The Office 2007, which does not require any license activation, can be downloaded from internet with 10 minutes search, if you don’t mind using pirated software. BTW I am not condoning use of unlicensed software but you get my point. If you hate Microsoft, then Libre Office ODT format is just as open and free as air.

Even if Microsoft goes bust, the DOCX format will float for years. Many third party apps can read and write to DOCX.

Some may argue if you write equations frequently, then markdown is faster to write. Well, I think if you need to use equations frequently, LaTex is better bet or you can use a tablet where you can enter hand drawn equations.

I have observed that Windows users are not in love with markdown compared to Mac users. It could be because Windows users always had easy access to Microsoft Office compared to Mac users. It is not so long back when Apple slowed down development of Pages and Microsoft released Office for Mac with Word and Excel being very popular with Mac users, giving up their love affairs with Pages and Numbers. The other reason is that Mac’s .pages format was not that popular leading to not many 3rd party apps supporting modifying .pages files.

Markdown is no panacea for cross platform compatibility either. The use of ** or __ look ugly inside text documents. This is no longer 1980s — WYSIWYG was invented in 1990s. Doing bold italics underline does not have to be an acrobatics exercise.

Do you know that you can insert actual bold italics in texts? It is achieved by placing Unicode versions of letters. The content will remain as plain text. You can consider it as if writing Asian languages. The English letters, say 𝐅 look like F but it is a different letter altogether. This posses a problem with searching though because searching F will not match with 𝐅 as those are 2 different Unicode characters. But apps can solve that by converting your search to match all versions of the character.

There is no uniform standard with Markdown. Some use ** to make bold where as some others use __ or something else. Tables in Markdown are horrible. Some apps can render tables better than others though — which kind of defeats the aim of having a standardized format.The URL insert looks more cryptic than HTML.

Some will say Markdown makes exchanging documents easier between cross platform devices, namely computer and phones.

Seriously? Word is available for free in mobiles! And if you are willing to write in plain text, just write in plain text, no need for formatting like Markdown. This is because as soon as you use some markup for formatting, you need special apps to render that formatting.

Having said all these, Perpetual Notes supports Markdown rendering but using a 3rd party tool. After all, if our users want this, we are obliged to provide it.

We had lot of brainstorms to debate whether to include Markdown support. Then we overwhelmingly decided that whole promise of Perpetual Notes is to offer rich text note taking easily. We don’t want to dilute that experience by encouraging users to take notes in Markdown, in fact we encourage our users to take notes in RTF because it is WYSIWYG and you can embed images inside the document itself.

In Markdown you can’t have images embedded so keeping track of your images will be another hassle. At least in HTML you can decide to embed images using base64 image conversion.

Our aim is not to slate the Markdown, but just to make people aware that there is world outside of Markdown and still keeping your documents portable and accessible across platforms without using any proprietary file format.

Before we end, here is the plot twist. If you like to take note in plain text format but don’t like Markdown syntax, you can create your own Markup syntax! You can use any character define your markup syntax. Following is a VB.NET code snippet which demonstrates how to implement this feature. This code uses [[bold]], <<italic>> type of syntax.

This is another reason we believe standard Markdown syntax is neither intuitive nor productive. In common Markdown you press * or _ to make bold/italic etc. To press * or _, you need to press Shift key which slows down typing. Whereas, to press [ ] or `` you don’t need to press any other key. So using [ ] is faster. Even typing < > is faster than typing * even though you need to press Shift for <>. This is because your fingers need to travel less distance for <> compared to *. We don’t know why Markdown founders did not consider this when standardizing the syntax. Even in most mobiles your standard keyboard screen only shows letters and numbers and you need to navigate to a separate screen to enter characters like * etc. So typing in Markdown no faster in mobile either.

Of course, if you just an end user, you are out of luck!

Note: The code is for illustration purpose only and not intended for production ready status.

Tips: Press Ctrl + Alt + 6 to create a code block in Medium.

Private Sub MarkUpRender(rtb as RichTextBox, RemoveSyntaxMarking as boolean) 

Dim BoldBegin As String = "\[\["
Dim BoldEnd As String = "\]\]"

Dim ItalicBegin As String = "<<"
Dim ItalicEnd As String = ">>"

Dim StrikeBegin As String = "~~"
Dim StrikeEnd As String = "~~"

Dim MonospaceBegin As String = "``"
Dim MonospaceEnd As String = "``"

Dim Numbers As String = "[0-9*/+-]+"

With rtb
For i As Integer = 0 To .Lines.Length - 1
If .Lines(i).StartsWith("#") Then 'heading
.Select(.GetFirstCharIndexFromLine(i), .Lines(i).Length)
.SelectionFont = New Font(.SelectionFont, FontStyle.Bold)
End If
Next
.SelectionLength = 0
End With

Dim str = rtb.Text
Dim pattern As String = ""
Dim matches = System.Text.RegularExpressions.Regex.Matches(str, pattern)

pattern = "(?<=" & BoldBegin & ")(\w|\s)*(?=" & BoldEnd & ")" 'bold
matches = System.Text.RegularExpressions.Regex.Matches(str, pattern)
For Each m In matches
If Trim(m.ToString) <> "" Then
Dim startIndex As Integer = m.Index
Dim StopIndex As Integer = m.Length
rtb.[Select](startIndex, StopIndex)
rtb.SelectionFont = New Font(rtb.Font, FontStyle.Bold)
End If
Next

pattern = "(?<=" & ItalicBegin & ")(\w|\s)*(?=" & ItalicEnd & ")" 'italic
matches = System.Text.RegularExpressions.Regex.Matches(str, pattern)
For Each m In matches
If Trim(m.ToString) <> "" Then
Dim startIndex As Integer = m.Index
Dim StopIndex As Integer = m.Length
rtb.[Select](startIndex, StopIndex)
rtb.SelectionFont = New Font(rtb.Font, FontStyle.Italic)
End If
Next

pattern = "(?<=" & StrikeBegin & ")(\w|\s)*(?=" & StrikeEnd & ")" 'strikethru
matches = System.Text.RegularExpressions.Regex.Matches(str, pattern)
For Each m In matches
If Trim(m.ToString) <> "" Then
Dim startIndex As Integer = m.Index
Dim StopIndex As Integer = m.Length
rtb.[Select](startIndex, StopIndex)
rtb.SelectionFont = New Font(rtb.Font, FontStyle.Strikeout)
End If
Next

pattern = "(?<=" & MonospaceBegin & ")(\w|\s)*(?=" & MonospaceEnd & ")" 'monospace
matches = System.Text.RegularExpressions.Regex.Matches(str, pattern)
For Each m In matches
If Trim(m.ToString) <> "" Then
Dim startIndex As Integer = m.Index
Dim StopIndex As Integer = m.Length
rtb.[Select](startIndex, StopIndex)
rtb.SelectionFont = New Font("Courier New", 12)
rtb.SelectionColor = Color.Blue
End If
Next

pattern = Numbers 'numbers
matches = System.Text.RegularExpressions.Regex.Matches(str, pattern)
For Each m In matches
If Trim(m.ToString) <> "" Then
Dim startIndex As Integer = m.Index
Dim StopIndex As Integer = m.Length
rtb.[Select](startIndex, StopIndex)
rtb.SelectionColor = Color.Orange
End If
Next

rtb.SelectionLength = 0 'select nothing
'remove Markdown symbols
If RemoveSyntaxMarking = True Then
rtb.Rtf = rtb.Rtf.Replace("[[", "").Replace("]]", "").Replace(ItalicBegin, "").Replace(ItalicEnd, "").Replace(StrikeBegin, "").Replace(StrikeEnd, "")
rtb.Rtf = rtb.Rtf.Replace(MonospaceBegin, "").Replace(MonospaceEnd, "").Replace("### ", "").Replace("## ", "").Replace("# ", "")
End If

End Sub

--

--