[Accessible Markdown Pad]

Accessible Markdown Pad (a.k.a. YodaPad, a.k.a. Tagnarok)

I’ll just throw this out there: I hate Microsoft Word. Not just because of Clippy, that universally loathed faux-magnon precursor of Cortana, but because Word’s primary functionality is so compromised by commercial choices that the enterprise isn’t worth its parts. Ever tried to adjust initial pagination on a document with running headers? Delete a blank page that inexplicably pops below a table? Write multiple-choice tests that use indented or irregularly-spaced elements? Bolded a word, deleted it, then cursed for the millionth time to find the replacement word emerging in bold? Wondered why you need to spend your precious mortal life deleting extra vertical space that Word inserts between paragraphs by default? Or correcting Word’s tree-hating gigantic default margins? Yeah, that Microsoft Word.

And then there’s the ribbon, Billy, the ribbon! Like fondu and comb-overs, Word’s ribbon works in theory but not practice. I would even generalize that Word’s ribbon is in some sense a combination of a fondu party and a comb-over: a complex mess whose eagerness to please conceals a haunted emptiness.

And yet it all started with this:

Well, pretty close, anyway. This is MS Word 6 for DOS, circa 1993. A more elegant word processor for a more civilized age? No, not at all; I’m not nostalgic for old technology except tube amps and clicky keyboards. But it demonstrates an interesting feature of old MS Word that helps explain why new MS Word is so awful: this version is not WYSIWYG. In fact, Microsoft’s commitment to binary file formats and WYSIWYG interfaces, leaving behind markup-based alternatives like RTF, with their texty, non-WYSIWYG interfaces, would not become “permanent” until 1997. Before we go on, let’s just glance at the side that lost the fight between markup and WYSIWYG:

This is WordPerfect 5.1, circa 1989. See where the words “Quiet, you” are in bold? That formatting is achieved by a tag, obviously. WordPerfect was both loved and hated for its open use of tags and reveal codes. WordPerfect went WYSIWYG, though, in version 6, and by 1996 had been shredded in the marketplace by MS Word. The original WP creators, by the way, went on to write an almost forgotten program with a tiny cult following called Yeah Write. By comparison, the italic tag in HTML looks like this:

<i>I am italicized</i>

This is not very accessible, of course, because “italic” is typographic, not semantic. So now we use this:

<em>I am emphatic</em>

An emphasis tag can be parsed by any machine-readable system to add…emphasis, however that is construed by the interpreting system. It reflects the writer’s intention. Italics, in contrast, are an effect. More on this seemingly subtle distinction a little later. Anyway, Microsoft Word left markup entirely behind around 1997 and committed fully to a word-processing environment in which markup code is hidden from the user. That’s good, though, right? What kind of monster doesn’t like this:

What They Saw is What You Got

Let’s dwell on that paradigm shift for a moment. Before the emergence of Microsoft Word as the alpha document-mangler it is today, the world ran on plain text that was marked up to indicate formatting, section divisions, columns, pagination, lists, footnotes, and so on. The writer was a necessary agent in the organization and presentation of information at the most basic level. The writer was artist, architect, librarian, and to an extent compositor. Starting with General Markup Language in the late 1960s and moving into Standardized General Markup Language in the 70s, information exchange was mediated by commercially and typographically open formats. Later, when XML, the descendant of SGML, came into direct conflict with HTML in the competition for web standards, XML’s potential to organize the web into discrete structures — or what Tim Berners-Lee hailed as “the semantic web” — fell to the whiz-bang of an increasingly WYSIWYG world. Thank you, Bill Clinton!

It was a huge loss. Imagine if the entire web, not to mention Word documents, ran on a unified standard in which the intention of the writer was primary. If you were selling a car, for example, you would present your car as a virtual object with unified attributes based on open, but common, standards. In code, your car advertisement might look something like:

[document type = "advertisement"]
     [item type = "car"]
         [notes]Hey, buy my car![/notes]
         [image][Base64 encoded image][/image]

Imagine if all types of web-facing machines were able to parse data for an almost infinite variety of virtual objects with extensible attributes — not just cars and every saleable object imaginable, but anything with classifiable properties, including scholarly articles, newspaper articles, web pages, medical records, academic records, research data, sports statistics, calendars, contact lists, schedules, course outlines, and so on. Imagine searching for a car to buy: you could query the Internet instead of Googling the Internet. In that distinction lies the difference between the surface-friction/deep efficiency of open standards and the surface-slickness/deep compromise of a WYSIWYG commercial standard. Ironically, the semantic web might have done a better job of preserving human intention precisely because it prioritizes machine reading.

It is a fact, however, that technology both produces and reproduces culture. One need only look at Ford’s invention of the assembly line, and the automobile’s subsequent invention of the modern North American landscape (and North American concepts of distance, leisure, and community), to see that recursive process in action. Who can even talk about communication anymore without implicitly referencing technology? And yet how many of us actually stand back and ask how (and why) one company’s technological commitments locked in a standard that no one voted for, that no one agreed to except the parties that stood to make a profit by the choice? And that has fundamentally shaped the way we read and write?

Ex-General Education Coordinator’s Rant: Just imagine the transfer credit process if all Ontario colleges used XML for course outlines instead of some random proprietary mishmash that doesn’t even list whether a course is elective or mandatory? I’m looking at you, Durham College! Sorry. Pet peeve.

Back to the Story

Right. So, Microsoft Word recently moved back to XML in the Office Open XML standard (“.docx”). That’s a good thing. The old binary format, .doc, was proprietary, fragile, and inefficient. It would have been better to go with the Open Document Format (.odf) used by the Open Office Suite, but it’s a step in the right direction.

Still, the damage has been done: the WYSIWYG word processor is ubiquitous, and the new XML-based format still doesn’t expose formatting code to the user. Microsoft Word still glowers like Sauron over the pitted plain of professional communication. And yet, hobbit-like, flitting from crater to crater, there exists a little hope in the world of markup-based word processing. There’s LyX, for example, LaTeX, and TeX (pronounced “teck”). My preferred flavour is Markdown, invented by John Gruber and implemented in C# by the Markdig library written by Alexandre Mutel.

Markdown is a free, open source, minimalist markup “language” for creating rich-formatted documents in plain text. Remember the italics example? In Markdown it would be *two asterisks*. Markdown is especially good for creating blogs and other documents with fairly straightforward formatting. This page is written in Markdown, for instance. For the kind of writing that most people do most of the time, Markdown will do it easier, faster, and more reliably than MS Word. You can write anywhere, in Notepad if you want, and formatting is under your control and not digitally locked to some company’s marketing decisions. Did I mention it’s free and open source?

Accessible Markdown Pad (AMP)

Accessible Markdown Pad is a freeware program I wrote to simplify composing in Markdown and HTML simultaneously. Basically, it’s a tool for writing Markdown text and then generating and displaying/exporting standards-compliant equivalent HTML. It can convert all Markdown tags available through the Markdig extended libraries and provides customizable CSS for HTML output. There are a few excellent markdown writers out there already, like Markdown Pad 2 or Typora, but neither of these is both free and able to produce concurrent, editable, standards-compliant HTML code.

Accessibility for Ontarions with Disabilities Act (AODA)

AMP was written in the spirit of the Accessibility for Ontarians with Disabilities Act (AODA). The goal of this Act is to address discrimination and barriers affecting Ontario citizens with disabilities. AMP was originally called AODA Pad … hence “YodaPad” … because it was designed to offer enhanced features for disabled users. Like what?

It does not require a mouse. There are no toolbars. The interface font is large and customizable. Colours and fonts in the composition window default to high-visibility values and are easily changed. Accessibility descriptors in C# have been completed. My assumption is that the user is operating the program entirely with keyboard shortcuts and tab-order keystroke navigation. The intended user is a person with a disability who knows Markdown and would like to write blogs or other structured documents using a barrier-reduced interface with disability-friendly features. Of course, anyone else can use it, too.

I would call it “YodaPad,” by the way (for the sound of “AODA” pronounced as a word), but it might anger the lawyers of a certain short, green Jedi master. So it will have to be Accessible Markdown Pad.

How Do I Use It?

Compose in the “Markdown” tab, then hit “Render” to convert Markdown into HTML and display in the “Preview” tab. Both Markdown and HTML can be exported to an external browser, or saved to disk etc. You can also tinker with the HTML after the initial conversion and export separately or print to paper. An editable default stylesheet is provided, and exports internally with the HTML.

Why Not Just Use Word?

Word is one way to produce text that can be parsed by a document reader or text-to-speech engine. But it’s not the only way. In my view HTML, as a simple, universal markup language, is a more sensible choice. With Notepad and an hour’s training, anyone can create perfectly-formatted, standards-compliant, platform-independent, machine-readable documents. Or you can just use Markdown and let AMP spit out HTML for you. Either way, no one needs to be tethered to an expensive Rube Goldbergian flying nightmare of a word processor just to write a blog or a letter or an assignment sheet.

Any Limitations?

AMP is good for anything that can be written in Markdown, which is rather a lot. But Markdown does not prioritize layout, so it’s not the best choice for formatting-intensive documents. If you’re writing something that requires headers, multiple columns, aligned images, or anything exotic, you’re better off with Word. On the other hand, if you know CSS, AMP enables you to roll your own stylesheets, in which case virtually anything is possible.

Technical Requirements?

AMP is built in C# with .net. Right now (April 2018), the Mono framework for Mac and Linux, which implements the .net API, does not support an integrated browser, so AMP is temporarily Windows-only. I’ll update when/if this is fixed in Mono.


If you’ve read this far, you have more than earned your free copy! Click here to download. There is no installation routine. Just unzip and click.

I’ve also compiled versions for Mac and Linux that run natively (i.e. without the Mono framework). If you’re interested, add a comment and I’ll upload them. If you’d like to try out that version in a Windows environment, download Tagnarok. It is a completely separate program written in a different language, but it has parallel functions (and doesn’t use a DLL). One semi-significant difference is that it uses Commonmark rather than Markdown to process HTML. Commonmark handles tables a little better, I find.