Saturday June 22, 2019

I am both a feature writer and a programmer - so a text editor is a kind of software which in my case is definitely of high usage. For years I’ve been used to use WordPad to write articles - and various dedicated software for the programming purposes. The reason I’ve chosen WordPad was that I highly appreciate formatted text as a brilliant way for it to hold much more content (which in case of speech lays “between the lines”, in a form of nonverbal communication). Besides, it is the only text editor I have which can be completely darkened (dark-themed) under Windows 7 (using Kuro custom theme). Whereas in case of programming I’ve chosen dedicated software because it is equipped with various solutions tailored especially with programming work kept in mind.

A beautifully dark-themed WordPad.

But over the time I’ve significantly changed my preference. I don’t quite remember how it all started - probably it was related to that I’ve often heard about Notepad++ being praised here and there. For a long time it seemed for me too primitive - but it turned out to be a prejudice rather than something based on facts: when I’ve started to play with it, I’ve discovered that it has several features which... I find brilliant. Furthermore, it seemed to work unrivaled-fast and flawlessly, being much better in this respect than any other dedicated tool I’ve used before.

Quick survey on what’s coming:

  1. What I find especially enthralling in Notepad++?
  2. How to write in a distraction-free manner?
  3. Markdown - what’s so special about it?
  4. How Notepad++ and Markdown improved my workflow?
  5. What makes the Markdown better than the standard .rtf?
  6. Don’t You miss visual text formatting?
  7. Harness Your everyday text-related keyboard-shortcuts into the Markdown itself :) .
  8. What I do miss in the Markdown?

What I find especially enthralling in Notepad++?

  • it is remarkably highly customizable: from the background and text to the caret color (!),
  • it features opening multiple files in bookmarks (or tabs, if You will) - You can even position them vertically, thanks to which it resembles a real, physical notebook,

img1

  • it remembers all the files which have been opened last time You’ve worked with the app (what is remarkable is that it remembers even those files which You haven’t saved on the disc yet),
  • it doesn’t bother You with unnecessary communicates: for example, if You’ve created a new file without saving it, wrote something within it and then changed Your mind and didn’t need it anymore - You can simply delete all its content (Ctrl+A, then DELETE) and just close it (Ctrl+W), without being bothered by a question whether You want to save it or not,
  • it may do the auto-backup both of its settings and files You’re working on - thanks to which You can easily and quickly restore the whole thing soon after a brand new OS installation - or You can restore Your files in case something went wrong and the app has crashed, loosing all the data,
  • it has fantastic spelling correction mechanism: You can check Your articles much easier and faster than ever before (in comparison with Microsoft Word for example); moreover, it can do the spell checking in more than one language simultaneously,
  • it colors various programming languages’ syntax (this feature is called “syntax highlighting”);

So, soon I’ve started to use this app both as my favorite notepad and programming editor.

How to write in a distraction-free manner?

Till recently I felt convinced that rich text is a “must-have” thing for me, because it enables to see the formatted text in a WYSIWIG way, right off the bat. Besides, it also enables You to do all the formatting instantaneously, with the help of several keyboard shortcuts (Ctrl+B to bold, Ctrl+I for italic, and so on).

But the thing is that I am used to do all the formatting at the very end of working on the text. When I am in the middle of it, I rather focus on what I want to convey - than how it should look to preserve the appropriate emphasis, etc. Thinking about anything but the actual writing may be pretty disturbing - that’s the point. A similar message I’ve read at André, which reminded me on what is really important during a brainwave - and what can be put on the back burner to handle later on, once the creating process is done.

“Start filling the gaps between the headlines without worrying about typos. You can fix those later. Same with checking for understandably. Don’t care for now. You want to get the content out of your head. Things like looking, whether you write from I or you perspective can be adjusted later.”
(André Jaenisch)

So it seems that it is not necessary for You to see the text’s final appearance while writing - You could freely do all of that later (moreover, this way You would be more focused and effective because of less disturbed work).

In the meantime of what I’ve described above, I learned about Notable - the, so-called Markdown, editor - which I’ve found worth-giving a try. Unfortunately, the app isn’t available in 32-bit architecture, so I can’t use it today. But it inspired me to dive a little deeper into the 'Markdown' subject itself, since the whole thing seemed to intrigue me.

update:
A good news is that since there are users who still use 32-bit architecture, the Notable developer has decided to publish 32-bit release of the app.

Markdown - what’s so special about it?

My initial understanding of the Markdown was that it is a way for plain text to be formatted, without a need to give up its plain character. Or in other words, this is something like “plain rich text” ;) . The idea may be somewhat familiar to You, given You’ve stumbled upon the ‘BB code’ while posting on internet message boards.

The main intriguing thing for me was: what is so special about it? I’ve done a better research on the matter and found the answer:

First of all, Markdown seems to be not just another way to format plain text - but the one which puts the maximum readability as the main guideline:

“A Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.”
( source » )

Another thing is that it tries to be intuitive - for example, if You want to write a bulleted list, You could do it simply by preceding each text line with an asterisk symbol (*). I couldn’t imagine the more intuitive way for this :) . Or the numbered lists, just do it as usually: write the number before the text :) . Quotes? It could be done with standard quotation signs, but it has been done differently (I guess for the technical reason): in a way familiar to the e-mail etiquette, in which when You quote someone, You put a > before their sentence. This way it will work in Markdown, converting the text into <blockquote> HTML tag.

A charming way has been chosen for creating headers :) - just “underline” the text with several (to Your heart’s content) equal signs (=) or dashes (-). Although there is another way to do it with Markdown (# preceding the main title, ## subtitles...), this one is definitely the intuitive one.

What strikes me most is the way how hyperlinks are handled. There are several ways of signifying a hyperlink in Markdown - but only one of those fits to the idea of true readability. If You are familiar with HTML, You know that whenever You want to put a hyperlink, it will significantly disrupt the source text’s readability (which denies the idea behind the Markdown). So in order to maintain it, hyperlinks can be managed in a way resembling books’ footnotes (which I find pretty amazing): put all the hyperlinks' addresses somewhere on the very end of a text document - while within the text itself include just a small indicator that “here should be a particular link”. It may look like that:

within the actual text:

...some text... and [a linked phrase][1] within it...

at the end of a document:

[1]: www.websiteaddress.com
	"link description here"

And voilà, You’re completely good to go: the text remains readable and clear, while after converting it to the output (HTML) format all things will be properly put together (all the hyperlinks inserted in the appropriate places, equipped with title attributes, like magic :) ).

This turned out to be particularly helpful given that earlier on, whenever I need to hyperlink something, I’ve put the URL address just next to a word or a phrase to which it referred (to use it while publishing to create a hyperlink). As a result my source text was disturbed here and there by hyperlinks addresses, which significantly decreased its readability.

Fortunately, thanks to Markdown reference-style links mentioned above, I can now put all the www..... addresses at the very end of my document (so they won’t disrupt the actual content), and - since I write in Markdown - all those addresses will be automatically and properly assigned to the words or phrases to which they refer (so I don’t need to do the additional work of hyperlinking by hand).

“By allowing you to move the markup-related metadata out of the paragraph, you can add links without interrupting the narrative flow of your prose.”
( source » )

How Notepad++ and Markdown improved my workflow?

Another advantage has to do with my writing-publishing workflow: some time ago it looked as follows:

My initial writing-publishing workflow.

Later on I switched to the DSpellCheck - a fantastic Notepad++ spell-checking plugin which works incredibly fast and is way easier to use than the Microsoft Word similar solution (for example, You can ascribe keyboard shortcuts to go to the next misspelled word, auto-correct it or display spelling proposals). It was, however, still necessary to incorporate Microsoft Word in order for the text to preserve its formatting after being pasted into Open Live Writer.

Fortunately I could skip this step once I’ve switched to the Markdown - because now what I paste into the Open Live Writer is pure HTML code (which is also a plain text). No need to worry about anything being lost “on the way”. Moreover, the code itself will be significantly cleaner than in case of the one which is natively generated by OLW from its WYSIWIG editor. So now my workflow could look like this:

Finally I don't need Microsoft Word anymore.

In-browser Markdown editor.

Or, in case I prefer MarkdownViewer++ instead of StackEdit, it could be even simpler, because the writing and converting into .html can be managed within a single app:

My current writing-publishing workflow.

So now I have:

  • live spell-checking,
  • Markdown syntax highlighting,
  • Markdown live preview,
  • Markdown » HTML conversion;

All in one place. The last missing thing is the ability to publish articles to Google Blogger directly from Notepad++.

BTW, all the flow charts You saw above can also be rendered directly through - Mermaid-aided - Markdown - with the help of StackEdit which supports this “simple markdown-like script language for generating charts from text via javascript”.

At first glance this idea sounded very attractive: have the ability to render flow charts via simple and intuitive, Markdown-like code. But after taking a closer look I’ve realized that the code generated by this solution is definitely inconvenient to use: it definitely is not readable, and on top of that You will probably need to make several CSS adjustments in order for it to look right and well.

So for the reason described above, I find much easier just to create flow charts within Photoshop or any other graphic editor. In case You wonder how it looks in Mermaid, here You are the code standing for the first flow chart in this article:

mermaid

graph LR

A((a WordPad .rtf draft article)) -- copy&paste into --> B((Microsoft Word))

B((Microsoft Word)) -- spell-checking, then copy&paste into --> C((Open Live Writer))

C((Open Live Writer)) -- ascribe hyperlinks and publish --> C((Open Live Writer))

And here how this and other flow charts from this article could look like, if made by Mermaid/StackEdit:

Raw flow charts generated by Mermaid.


In the end of the day all of this sounds interesting: something which could be usable enough either in its plain (source) - or final (HTML) form. If You wonder how does it work, it is pretty simple: first You write the (plain) text, keeping the Markdown “tags” in mind (add them whenever it’s all right to You - while writing or after You finish it). Second, if Your publishing platform doesn’t support Markdown, You need to convert Your article text into the final output format (usually HTML). To do so, You can use a tools like StackEdit or MarkdownViewer++ - which have an ability to save the output file in a .html form. Moreover, they even let You to paste the source Markdown text and see (on-the-fly) how it will be looking like after converting into .html.

The publishing process becomes even simpler when it comes to write message board posts or messages on various platforms (e.g., GitHub, Reddit, Diaspora, * SourceForge*): there You can also paste Your text in Markdown and it will be automatically formatted into the appropriate visual form.

I wondered

What makes the Markdown better than the standard .rtf?

I think the answer may be that Markdown aspires to be universal (although there is no such think like the one and only standardized Markdown syntax - which as such is another interesting thing).

“(...) different sites (and people) have different needs. No one syntax would make all happy.”
(John Gruber)

With this one “language” You can write and publish articles, blog posts, message board posts, various on-line platform messages (You can even write an e-book and convert it directly to the .pdf/.epub format!) - and it should work everywhere well-enough (at least in theory). On top of that, You don’t need any special text-editor to open or edit Your source files (like in case of the .rtf format) - any plain text editor will handle it. And Your text files remain light as never before :) .

Don’t You miss visual text formatting?

The only thing which You might miss is the visual appearance of Your text while writing. The whole idea for the text to be available (and readable) also in its plain (source) form excludes the possibility of any WYSIWIG right off the bat, visible on Your screen while writing. You can, however, solve this by choosing some dedicated Markdown editor - but in such a case You miss the point of being able to edit Your text wherever You want (i.e., without a need of any additional app). It’s not a problem if You like the new app and would gladly switch to it - You may, however, already have Your favorite and unrivaled choice when it comes to text editors - like Notepad++ in my case. This program is such a great and brilliant invention that I definitely don’t want to give it up in order to use anything else just to have the full WYSIWIG experience. I could rather do with things like StackEdit mentioned before.

At this point I’ve great news: Notepad++ and Markdown lovers can also find a pretty neat experience without a need to leave the app: there is Markdown syntax highlighting within Notepad++ :) . Since Notepad++ is mainly a plain text editor, the highlighting won’t compensate the full WYSIWYG experience, but this is something - and better than nothing.

Here You’ll find the instruction how to enable Markdown syntax highlighting in Notepad++.

If You, however, would like to move things a little further, You can use MarkdownViewer++ - a Notepad++ plugin which allows You to preview Your Markdown text “live” - i.e., in a StackEdit-similar fashion. More importantly, it can also convert Your text into .html format - so finally it is possible to manage all Markdown-related things within a single app.

Here You’ll find out how You can install and use this plugin in Notepad++.

Before You decide what tool You’d like to use for Your Markdown to be saved as .html - take a closer look on how exactly the one You prefer renders the text. Since there are multiple Markdown syntaxes out there, there are differences between one another, however small, they are worth being aware of (for example, when You press the enter key to move to the next line, MarkdownViewer++ won’t convert this move into <br />, while StackEdit will; the latter doesn’t render superscripts made of more than a single word inside a <blockquote>- whereas the first does so).

Although Markdown syntax is pretty simple and concise, it still requires You to memorize several things and insert additional sings in order, say, to bold a word. If You’d like to switch to the Markdown seamlessly - You can make the life easier by harnessing several keyboard shortcuts which You are already familiar with, using on a daily basis: but this time You can make them work for You within Markdown itself.

For example, if You want to bold the text, You can use Ctrl+B. But when You work with a plain text editor, this shortcut is useless: in order to bold the text Markdown-style, You need to wrap it with double asterisks - **like this**. What if, however, if You could achieve it using the same Ctrl+B shortcut? It is possible thanks to the AutoHotkey app, which enables You to ascribe Your Own actions to particular Windows keyboard shortcuts (this is a very powerful tool which You can use for many various purposes in the sky’s-the-limit manner). With this app You can easily make all the standard shortcuts to work “Markdown-style” - not only to bold, underline or italicize the typeface - but also to insert hyperlinks, superscripts, both bold and italic type at once, and so on.

This is an example of such a script for a single keyboard shortcut: to bold the text:

;- Control+b = <!-- {**bold** the font} -->
^b::
ClipSaved := ClipboardAll
clipboard =
send ^c
clipboard = **%clipboard%**
send ^v
Clipboard := ClipSaved
ClipSaved = 
return

And here You are my whole script file with a bunch of keyboard shortcuts (see its readme.md).

In order to make it work:

  1. Install AutoHotkey.
  2. The easiest way is to download the file mentioned above, run it, skip the third step and go to the fourth. If You, however, want to play with it a little bit, replace this step with the third one.
  3. Create a new text file with the .ahk extension and paste the code displayed above. Save and double-click the file.
  4. You can now use the Ctrl+B (or other - if You’ve downloaded my file) shortcut the same way as usually. Note that if You haven’t selected anything before performing the shortcut, it will insert sole asterisks to indicate a space for the bold text.

A nice thing is that You can place several code snippets, each for the particular keyboard shortcut, within a single .ahk file - and it will work just fine :) (again, see my .ahk file).

I recommend to use keyboard shortcuts which You’re already used to use: in my case, besides generally well-known Ctrl+B, Ctrl+I and Ctrl+U, I’ve defined Ctrl+K to insert hyperlinks, and Ctrl+SHIFT+= to insert superscripts (both inherited from Open Live Writer).

What I do miss in the Markdown?

Although I understand the basic idea behind it (an essential tool focused on readability, providing easy .html output), in my opinion it still lacks some important features. One of them is that - for a reason unknown to me - it doesn’t support text underlining. Fortunately, to quote one user, there is a simple CSS hack for it:

You can wrote **_bold and italic_** and re-style it to underlined text, like this:

strong>em,
em>strong,
b>i,
i>b
{
	font-style:normal;
	font-weight:normal;
	text-decoration:underline;
}

The appealing thing in it is that the Markdown-style **_underlined text_** looks better and more intuitive than classic HTML-powered <u>underlined text</u>. Unfortunately things get complicated if You’d like the text to be bold or italicized in the same time - which finally made me to resign from using the CSS trick and switch to classic <u></u> :( .

Another missing thing is the ability to insert multiple blank lines - which also is not supported. And the last piece which I miss are hyperlinks opened in a new window (or tab) via target="_blank" attribute. Exactly for this reason I can’t just paste the output .html code into Open Live Writer and publish it - I need to do one more step: to edit all the links which I want to be opened in a new window/tab. If You, however, are familiar with HTML/jQuery, You can workaround this issue, harnessing a simple jQuery code into Your .html template. The code makes all the links leading outside of Your website to be opened in new window/tab:

$('a').attr('target', '_blank');
$('a[href*="YourWebsiteAddress"]').attr('target', '_top');
Filed in: /3/ | /37/ | /37/ | /60/ | /37/ | /9/ | /7/

Your (nick)name:

Your e-mail:

Have a website?

Your message:

remember data for further comments?