Categories
Weblogging

Porting WP to MT: template tips

The two environments, Movable Type and WordPress, are very different. Apart from one using Perl for core functionality, the other PHP, another significant difference is that WordPress uses PHP function calls directly in the template, while MT uses template tags, and then relies on the Smarty Template Engine (more on this in a separate post), for the dynamic page option. Still, the weblog page templates for both tools have a very similar structure regardless of type of template element. This structure is as follows:

Header: This includes in pre-HEAD tag code or HTML, which should be left alone in the new system. This also includes all the data between opening and closing HEAD tags.

Blog Body: This includes the opening and closing DIV element tags to wrap the entire weblog, and usually will include the TITLE and DESCRIPTION if one is used for the weblog.

Main Loop: A main loop has enclosing tags or other delimiters that marks the beginning and ending of the list of entries on the page.

Loop Body: This includes the post body, date, title, trackback RDF statement, comment count, any of the items included with each entry on a weblog page.

Sidebar(s): Depending on how tightly integrated you are with the product, you may not have to do anything more with sidebars then copy directly.

The Header should be left as close as possible to what you find. About the only modification you’ll make is to change the name of the stylesheet to the you’re using currently with WordPress (if porting from WP to MT). One important key to making a move easier is to leave your stylesheet alone, and change the template, rather than working with the new template, and trying to change the stylesheet. The reason is that the templates will be very similar in organization, and thus easier to migrate; but stylesheet differences can be considerable.

(Now you can just use whatever stylesheet name comes with the new tool, such as styles-site.css in MT,and copy your old sheet settings into the new file. Make a backup first of the MT one – you might like to keep bits of it.)

In Blog Body I specifically refer to DIV elements forming the body of the page, rather than HTML tables. The reason is because HTML tables can complicate the porting process because they layout will most likely differ considerably between your old template and the new default template. In fact, you might want to consider converting your HTML table to CSS before moving tools.

The use of DIV elements and CSS aid tool independence because most weblog tool templates now use DIV tags for layout, and it becomes a fairly simple matter to deduce the layout in the new tool and map to the old.

Case in point:

My WordPress blog body opening tags are as follows:

<body>
<div class=”container”>
<div class=”wholething”>

<div class=”mainblog”>

<div class=”menu”>
Burningbird
</div>

Compare this to the Movable Type default template:

<div id=”container”>

<div id=”banner”>
<h1><a href=”<$MTBlogURL$>” accesskey=”1″><$MTBlogName encode_html=”1″$></a></h1>
<h2><$MTBlogDescription$></h2>
</div>

<div id=”center”>
<div class=”content”>

Both of these blocks of template-driven HTML are the beginnings of the BODY element, just before the main loop. Though the template tags are different, the structure is the same and that’s key for making your porting job simpler.

One caveat from this example: Though I replaced the existing MT template with my own design, pulled directly from my WP weblog, I may be alter the page to return parts of it. For instance, I’m not using a header tag (H1) for my page header. By not using a header, I’m removing some of structural semantics from the document.

A better approach would be for me to redefine the ‘menu’ DIV as a header element, contained within the mainblog element, so that I can reserve the default H1 for other uses:

.mainblog H1 { ….}

In addition, I’m embedding the weblog name directly in the page, and though there’s nothing wrong with this, a better approach would be to use the weblog tool’s template tag/function call. Again, this helps map your old style to new, as most tool’s default templates use a template marker for the title.

The next section of the code is the main body, contained within the ‘main-loop’. Movable Type marks the loop with an opening and closing tag:

<MTEntries>

</MTEntries>

WordPress has:

<?php if ($posts) : foreach ($posts as $post) : start_wp(); ?>

<?php endforeach; else: ?>
<?php _e(’Sorry, no posts matched your criteria.’); ?></p>
<?php endif; ?>

Though one is a template tag and the other is PHP code, the differences aren’t critical as long as you recognize the begin and end of the loop, and know that the post processing is contained within it. As for the actual values, loop code or template tags, leave them as is unless you’re very comfortable with the tool and the code.

As for the post itself, again, the similarities are more common than not, reflecting a fairly common data model associated with weblogging posts. Typically, a weblog post will start with a title, which may or may not have a permalink wrapping it. Following may be a list of categories, or not, and then the post text. At the end is a line or two containing the author’s name, date, permalink, and probably a comment count.

Title

(categories)

Body

Signature permalink date comments

All tools use mnemonics for naming, so it’s not hard to tell what function or template tag does what, especially when you see the element within the context of the page. So, best approach to port your design is to open your old template in one browser window, and edit the new template in a second. Or use browser tabs to hold each.

As an example, if your post footer has a permalink wrapping around the post’s title in WordPress:

<a href=”<?php echo get_permalink() ?>” rel=”bookmark” title=”Permanent Link: <?php the_title(); ?>”><?php the_title(); ?></a>

It’s a matter of mapping this to the appropriate MT template tags:

<a href=”<$MTEntryPermalink valid_html=”1″$>”><$MTEntryTitle$></a>

As you can see, WordPress’ function get_permalink maps to MT’s MTEntryPermalink, and the the_title to MTEntryTitle. Any other differences between the two are syntactic sugar: PHP function call compared to MT’s angle brackets and dollar signs.

My hopes are to do a one-to-one mapping between MT and WordPress elements in table format when 1.3 comes out.

After the main-loop is the sidebar in most tool templates. A main body as first block followed by a sidebar layout is the cleanest design you can provide–default templates shouldn’t be pretty as much as they should be simple, clean, and uncomplicated; easy for the user to modify. Ease of use beats out pretty any day.

Sidebars can vary considerably, depending on what you include. Most include a reference to recent posts, categories, and comments, and probably a blogroll. Most tools provide a simple template tag or function call to provide the listing of each of these.

In my WordPress template, the function call to return the ten most recent entries is:

<?php get_archives(’postbypost’, 10,’other’, ‘<div class=”sidecomments”>’, ‘</div>’, 0) ?>

The same functionality in MT is an opening and closing loop block, and a tag for each entry:

<MTEntries lastn=”10″>
<div class=”sidecomments”><a href=”<$MTEntryPermalink$>”><$MTEntryTitle$></a></div>
</MTEntries>

Again, intuitively similar. But this example leads to another adaption I may make to my original WordPress weblog design, based on my work with the MT converstion.

The original MT template actually uses an unordered list UL and list items LI for each entry, while I’ve been using a separate DIV element for each. Again, the MT approach is better because it preserves the structural semantics of the list. In addition, it’s also the approach that WordPress and most other weblogging tools use. And anything that makes mapping between the tools in the template easier, is goodness.

I used UL/LI with categories in the new Movable Type template, using CSS to remove the list bullet graphic and modify the appearance so that it resembles my existing ’sidecomments’ style.

The only sidebar item in the new MT weblog that doesn’t use existing tags is my Recent Comments. This is a custom plugin in WordPress, and I’ll need a custom plugin in Movable Type. I’ll cover this in the next WeblogTweaks post, as well as provide an introduction to the spiffy new Movable Type PHP dynamic plugin environment.

Categories
Weblogging

Noggin Blogging and WP to MT permalinks

I don’t remember hitting my head at any time, but I have painful and biggish swelling a couple of inches behind my left ear, about the size of a lime; the scalp in front of it is numb, and my ear and jaw hurt a bit. I’d like to say that I went out on the town last night, indulging in all forms of vice, waking up in strange surroundings with a lump behind my ear, a rose in my hand, and no memory of how I got there – but I spent last night watching the movie, “Love Actually”. It actually wasn’t bad (interesting insight into what the Brits would like their PM to say to the US President), but it sounds so mundane. I also watched “Hellboy”, too. Double matinee.

I may have picked up another tick, and since I’m allergic to their bites, this reaction wouldn’t be unusual. Or perhaps I’ve been thinking so hard about tool independence in weblogging that I’ve sprained my brain.

Speaking of which, I managed to convert the main page template, in addition to porting one of my WP plugins to the new MT/PHP plugin environment. I’ll detail these in two separate posts, following.

I won’t get into installation issues, as these are documented at the Movable Type site. About the only problem I have with the new PHP dynamic pages is that accessing the directory of the weblog without giving an ‘index.php’ or ‘index.html’ fails within the current installation, as you can see clicking here. You have to access the page specifically. Since Six Apart has come out with a 3.11 release, and I haven’t installed it, perhaps this is fixed in that.

Turning to the move, now:

One of the areas of most concern when it comes to moving between weblogging tools is permalink breaks, as the tools handle permalinks so differently. When I get into moving the Movable Type weblogs into other environments, I’ll detail what you need to do to ensure a clean port in these environments, and it is a challenge, as is moving between other environments; but for once, the direction of the move today, from WordPress to Movable Type, is absolutely problem free.

The script I used to export WP entries also exported what is known as the ’slug’ – the filename given for the specific entry. This can be the title of the entry with dashes between words, or some abbreviation that an individual provides. The slug is exported as a MT keyword, and imported accordingly. Since the slug is exported with dashes, complete and ready to use as a filename, then it’s only a matter of providing a Archive File Template entry for the Individual archive:

<$MTArchiveDate format=”%Y/%m/%d”$>/<$MTEntryKeywords$>/

The above matches exactly with the recommended WordPress permalink structure of YYYY/mm/dd/slug/. No filename extension – none needed since the .htaccess entries handle file serving. An absolutely painless port as regards permalinks.

In fact, if we were pushing for standardization across weblogs, I think that WordPress set the direction on this one – providing a field with the entry where the person could put whatever they want for the entry filename. With this, no worries about dashes as compared to underscore, or titles too long, or anything of that nature. This is a simple addition to the databases, too.

Once the file structure is working, then it’s a matter of porting the template, covered in the next post.

I also spent time today reading the reactions of the guys out at the Yahoo Groups, MT Plugin Development mailing list as they basically beat the shit out of the new PHP-dynamic environment within MT. Personally, I rather like the new environment. And this gave me an idea: I figured since all these gentlemen aren’t interested in porting their Perl-based plugins to PHP, I would do it for them. For a fee of course. After all, they’re now part of the new Six Apart Professional Network; they’ll be rich as Croesus.

Categories
Weblogging

You know

..you’ve been writing about weblogging technology too much, when you start to compare it to a washing machine. However, it’s a good subject for the Labor Day holiday because no one is going to read what you write during the weekend, anyway.

Speaking of disconnected, I received an email at my gmail account asking to me to verify my membership request in The Queensland chapter of the Australian Society for Limnology (ASL) mailing group. That was exciting–I learned a new word. Limnology: The scientific study of the life and phenomena of fresh water, especially lakes and ponds.

There’s also an entire page on limnology at Wikipedia. But then, Wikipedia isn’t authoritative, so I can’t believe any of it.

Still, since I was in the area, I looked up ‘washing machine’ and found the following:

Connectivity

Some modern washing machines include USB or Wifi ports to connect to a domotic network or to the Internet.

So maybe my association between weblogging and the washing machine wasn’t too far off, after all.

Blog your laundry today.

Categories
Technology Weblogging

When is a weblogging tool like a washing machine

In comments to my post,WeblogTweaks: Tool Independence Jacques Distler wrote:

There are things that one can do in WordPress that one cannot (easily) do in MovableType. And there are things one can do in MT that one cannot (easily) do in WP.

The day that our tools become interchangeable is the day that one can truly say that innovation has died.

If the developers of weblogging software (and, in the case of MT and WP, the legion of plugin authors that surround them) are not producing cool new features that no one else has, then they are not doing their jobs.

It is deeply wrongheaded to hope for (let alone celebrate) the homogenization of this technology.

Leaving aside Jacques’ equating of tool independence with homogenization, I want to focus for a moment on his underlying assumption about the importance of innovation to most webloggers.

Two or three years ago, innovation was the heart and soul of weblog tool development primarily because most of the functionality to support weblog writing in early times was fairly primitive. In addition, a significant proportion of the people who weblogged then were just as interested in the nature of the medium, as they were in publishing their thoughts online. New innovations almost invariably broke new ground, and generated excitement that caused ripples felt throughout most of weblogging environment. This excitement, in turn, fed the innovation. as those who developed the gadgets and whatnots received plentiful feedback, encouraging them to yet more feats of development magic. It was bewildering and exciting and like flemings to the sea, we flocked from tool to tool based almost solely on innovation.

But then the innovations became to develop costs, such as over-aggresive aggregators that queried RSS feeds by the minute; or spammers blitzing our comments. Seeing our names at the top of a Google search begin to lose it’s novelty, and we stopped paying much attention to articles that talked about weblogging. The demographics of weblogging has changed and today’s average weblogger is less interested in wizbang technology or the coolness of what we’re doing then in having a tool that upgrades without breaking; allows us to reliably write to the weblog and to do so easily and quickly with a mimimum of problems; have the resulting page look good; and not have to wake up every morning and spend time cleaning out spam.

This change in priorities regarding our tools is reflected in recent discussions. A few years back, most discussions about web technology were on this new gadget, and that new functionality–it was all very positive and exciting and even the most technology shy webloggers would be moved to participate from time to time. For the last year and a half, though, most of the buzz about weblogging technology has focused on comment spam and elimination thereof. The ragged echo of voices you hear are tired, and frazzled, and sound more like beseiged castle dwellers holding back a foe, than brave adventurers into new territory.

As for excitement – the last major excitement related to weblogging technology was when Six Apart introduced it’s licensing scheme with 3.0, and Dave Winer closed down weblogs.com. Neither of these events had anything to do with ‘innovation’.

Webloggers are just not as interested in shiny and new as they were at one time. Shiny and new attracts attention most of us aren’t sure we want.

Now, I’m not saying this to discourage innovation, and couldn’t even if I wanted to–the nature of the human beast is such as to always see what is done, and how it can be made better. But most of the innovation in weblogging lately has been directed more at the geeks than based on any real and expressed need of weblogging tool users. This is well and good, too, as most advances in technology are based on putting new and geeky technology out on the market and then showing the people how this is something they wanted all along and just didn’t know it.

But at some point, there must be a connect between the technology and the users, or the innovation is bound to fail. History is littered with the desiccated remains of brilliant ideas that no one wanted.

But I digress. Returning to Jacques equating weblogging tool independence with tool homogenization, and from there, to the death of weblogging innovation. It’s funny, but his statement is an echo of something that I wrote once, a long time ago, about web standards. and Mozilla.

Challenge your assumption that all Internet services are provided by a Web server and consumed by a browser. Challenge your assumption that chaos within a development environment is a bad thing. And challenge your assumption that standards must take precedent over innovation.

Somewhere along the way…standards became less of a means for providing stability and more a means of containment. In some cases, standards have become a weapon used to bludgeon organizations for practicing the very thing that started the growth of Web applications in the first place: innovation.

This old article I wrote for O’Reilly was inspired by the the WSP’s criticism of the Mozilla team’s focus on creating an infrastucture rather than just providing a standards-compliant browser. Stop wasting time, they said. Give us standards compliance and then you can go play.

Thanks to the Mozilla group’s resistence to the outcries of the time, we now have Filezilla for FTP, and Thunderbird for email, not to mention Firefox and all it’s wonderful, marvelous extensibility to which I have become addicted. That time spent on geeky stuff back then has born fruit now and we’re all giddy with the possibilities.

This would seem to support Jacques statement of the importance of innovation not being suppressed, but but not how tool independence leads to homogenization, which in turn suppresses innovation.

Because of it’s focus on infrastructure, Mozilla did lose users, people who switched to other more standards compliant browsers; however, this didn’t stop it from continuing to innovate. And Mozilla eventually did develop that standards-compliant browser the WSP wanted. Now, many of those people who switched earlier are returning to Mozilla, or more specifically Firefox, leading other browser vendors to look more closely at their own products.

If anything, innovation is more closely associated with vendor independence than dependence. After all, you don’t have to work as hard with a captive audience (beer vendors at ballgames have long understood this association).

Making it difficult for webloggers to change tools does not encourage innovation. If anything, more of Six Apart’s recent innovative work–such as dynamic PHP-based pages–came from people switching or threatening to switch, to other tools, than from happy customers politely putting in enhancement or bug fix requests.

No, all that tool dependence does is make people frustrated because they feel trapped into using one tool. Eventually, even if the tool they’re using does improve, they won’t see it, or even acknowledge it because that feeling of being ‘captive’ to the tool becomes a mighty powerful filter that influences their preception of the tool from that point on. Microsoft’s experiences with Windows is a good example of this.

But can tool independence limit innovation, as Jacques implies? No more so than with any other use of technology. Take the washing machine industry for example.

A washing machine’s basic functionality is very simple: provide a waterproof tub; fill it with water; agitate the contents of the tub a bit; empty the water and spin the tub to get some of the excess water from the clothes. All washing machines share this same functionality.

Now, Washing Machine A, in order to capture more of the market share, develops a new machine that allows different temperatures. This generates a lot of interest because we all know that red socks washed at hot temperatures dye other things in the wash, pink. However, the creators of Washing Machine A, in their enthusiasm, rushed their product to market, and it breaks down a lot. Some customers, frustrated by sopping up water on the floor, or holding up shredded nighties, move to Washing Machine B, which has less temperature options, but is more reliable. New customers, hearing that A, though nifty, breaks down a lot also decide to buy B. Other people, though, who have a lot of red socks and really need these many different temperature options, and who sleep in the buff anyway, stay with A.

Still, Vendor A loses customers. Alarmed by this, A improves the reliability of their product. It finds and closes the tiny black hole that is eating up one of the red socks with each load; they slow down the agitation of the spin cycle so that the clothes aren’t beaten until their threads begin to disintegrate.

Some of Machine A’s old customers that switched to B move back to A because of the increased reliability. New customers, hearing that the old problems have been fixed, buy A this time instead of B. While this is happening, though, Washing Machine vendor B, inspired by A’s customer’s interest in access to different water temperatures, and alarmed in turn about the loss of its own customers, adds an improved temperature control, but separates the temperature control by wash and by rinse – pretty exciting stuff.

Some of A’s loyal customers that stayed through the reliability issues, see ’shiny’ and ‘new’ with Machine B, version 2.0, and make the switch. So Vendor A adds a new innovation–a device that adds softener at the right time so you don’t have to do it yourself. Machine B counters by providing a glass front so that customers can stare at the clothes as they go through the cycles, mesmerized by the action.

About this time, vendor C, who has been focusing on televisions, sees there’s a lot of money to be made in dousing clothes with water and shaking them up a bit. So they enter the market, adding yet more incentive for innovation. Seriously alarmed now, Washing Machine vendor A, in a fit of inspiration, and encouraged by government tax rebates, introduces a new model that is very energy efficient, hoping to take advantage of ‘green’ interests. Unfortunately, the new model costs signifantly more than other models that are less energy efficient, but providing the same functionality, and A takes a real hit in the marketplace.

Vendor B also wants to have those government rebates, but when they introduce their energy efficient machine, they also load it with a bunch of new options so that people can see something new for their increased costs, above and beyond the energy savings.

Yet through all of this crazy innovation, and marketing strategies, the basic functionality of the machines is the same: water, movement, rinse, repeat. It is because of this shared common functionality that customers can switch between products, choosing the features they want, or the reliability they need, while being assured that this basic, needed functionality is provided.

Returning to weblogging tool technology: it is a shared functionality and a minimum data model between products that leads to many of the innovations we have come to take for granted. It is this that allows us to have syndication feeds that can be consumed by all aggregators regardless of tool manufacturer and innovation. It is this that allows one weblog to ping another, or to ping notification aggregators such as weblogs.com. It is this that allows desktop editors or email clients, or even cellphones to post to different weblogging products. And it is this sameness that can be exploited to make it easier for webloggers to switch to a different product.

Being able to switch relatively easily led to customer demands that led to competition among the washing machine vendors, and it can do the same with weblogging technology. It is customer demands that lead to support of multiple syndication feeds rather than just one; it is customer interest in, and demand for, comments that led to them being incorporated into most weblogging tools, including the recent addition of comments to Blogger; and it is customer demands that are now driving much of the work on comment spam prevention.

If enough tools support an innovation it becomes commonplace and hence a de facto standard; eventually it forces enhancements to the underlying commonly shared behavior and data between tools. This then ups the minimal level of necessary functionality for all products, and the innovative cycle begins again.

Rather than homogenize weblogging, by enabling webloggers to move relatively easily between weblogging tools, and encouraging them to so move when they’re unhappy with their existing products, we’re giving them a say in the the direction that technology takes–that intersection between innovation and use I mentioned earlier. This, in turn, leads to better products, leading to happier webloggers, who are encouraged to write more about things that interest them–such as washing machines, and what happens to all those socks that disappear.

Categories
Technology Weblogging

Tool independence: The export format

The first challenge to moving a weblog is getting a snapshot of your weblog data in a format that can be imported into the new tool. To create an export that works with most tools, at least for moment, you’ll want to export your existing weblog’s data using the Movable Type import/export format.

WordPress doesn’t have a MT export built into the tool (more on this later); as I mentioned in a previous post, I used Scott Hanson’s new WordPress to MT export script to export my posts, categories, comments, and other data. Once I copied his file, I edited the parameters given in the script, providing the same username, password, and database name I added to the wp-config.php file. I also edited the file to use the default line break within Movable Type, __default__ , rather than ‘markdown’, which is the text format tool currently set as default in the import tool. These items are easily found in the script using a text editing tool.

When I load the export script page into a browser, the exported data prints out to the page, in a technique made popular by Movable Type. Once the export is finished (a message displays at the end of the page), I used the browser’s File/Save As functionality to save the page to a local file called bb.export.

(Another approach is to use the Unix wget utility on the command line as follows: wget http://somedom.com/import.php. This saves the exported data as ‘import.php’ and you can the use the data as needed. )

After the file was created, I FTP’d it to a newly created sub-directory, import within the MT cgi-bin directory. All that was needed at that point was to open up my MT installation, select import/export, and pick the import option–choosing to use myself as default author. the default post status of ‘publish’, and since all the entries had categories, I didn’t need the default category. I also have titles for all entries, so didn’t need to fill in the start and end title HTML fields, either. Clicking the link to do the import should load the data, and the data migration of the tool porting is finished.

(See the Movable Type documentation for more information about importing data into a MT weblog.)

A regular WordPress supporter, Carthik also has a version of a WP-to-MT export tool that uses WordPress global variables for the database variables. You can access it here. Carthik had his export tool finished before Scott started working on his, but had withheld publication because he’s now working on what he and Matt Mullenweg, the lead WP developer, are calling a “lossless XML export”–a import/export format that is going to be included with WordPress 1.3, and licensed as GPL for others to use if they wish.

One reason that the WordPress folks are creating this new format is that there has been problems with the existing MT format in the past. I have exported and imported data several times using this format and haven’t had issues recently, but others have had problems, specifically with fairly fragile points of breakage in the scripts such as dependence on a dashed line to separate entries. When I first used the import format to move from Blogger to MT, the import kept stopping as it would run into a sequence of dashed characters and the import functionality thought, “Well, that’s it – she’s done.” Once I edited for this problem, another would surface, making my move from Blogger to MT the most painful tool move I’ve done.

However, there is no denying that the MT export/import format is the most widely supported format in most weblogs. To have tool independence, in this case you need to depend on a specific tool import/export format…at least until enough vendors can support a replacement.

Technical issues of clean transformations aside, a challenge with a new universal format is the underlying data model each tool shares. For instance, a ‘post’, that has 0 or more ‘comments’ and at least one ‘category’ is more or less a standard model of data across all weblogging tools. However, beyond this simple core model, each tool does differ widely.

For instance, Movable Type supports keywords but not key/value pairs. Keywords are just a listing of terms associated as values to the weblog, while key/value pairs have both a term and an associated value. WordPress supports key/value pairs, and I use these in the ‘about this entry’ box in the top-left of the page. When I moved the data to the Movable Type test site, I lost this key/value pairing. Even if a new export format included these key/value pairs, there would be no place to receive it in the target weblogging tool–in this case Movable Type. The most we could do is strip the key portion of the pair and just take the value, and this would defeat the usefulness.

Now, if we use something like RSS or Atom to act as the transport medium, it might seem as if these would then ensure a common data model because most tools support one or more of these these feed syntaxes. The assumption is that if the tool supports the feed, they have to support the data that provides the feed, and therefore a minimum data model is guaranteeed. Right?

Well, not necessarily….

If a syndication feed supports complex or hierarchical categories but these are optional, and one weblog tools supports them, but another doesn’t, using the syndication feed to export the data from one tool to the other will result in loss of data; using XML won’t improve this situation, or prevent the loss of data.

That’s where the MT import/export format comes in handy at this time. The power behind it isn’t in it’s syntax, which is problematical–but in the underlying data model. The MT format has, by virture of it’s wide usage, defined a minimal shared model that most tools support. An XML-based version of this model could then provide a more robust import/export format. This is a win/win for all tools, and one that we as customers should encourage.

However, until a good majority of tools support the use of this XML format, whether it’s based on RSS or Atom or even something entirely new – the de facto standard for most tools now is the existing MT regular text-based format. This is what I will be using for the rest of these writings.