Category: TypeMetal

  • TypeMetal Participating in Apple’s Volume Purchase Programs

    TypeMetal — our revolutionary HTML editor for OS X — is now available at a substantial discount to qualifying business customers and educational institutions who purchase 20 or more copies at a time. We’re delighted to be able to offer this special pricing to customers who deploy TypeMetal within their organizations.

    To place a volume order that takes advantage of this special pricing, you’ll need to be enrolled in one of Apple’s Volume Purchase Programs (VPP), which you can learn more about at these links:

    These programs offer the exact same version of TypeMetal you’ll find on the regular Mac App Store, backed by rapid-turnaround support via our public Support Forum, Twitter, and email.

    Institutional eligibility requirements for the Volume Purchase Programs are set by Apple, but we’re more than happy to help with any technical issues you might encounter. — Please contact us if you have any difficulty at all obtaining and deploying TypeMetal via Apple’s VPP stores.

    Many thanks to all our customers, for your invaluable support!

  • Crafting an Editor for HTML Craftsmen

    I’m a bit obsessive, when it comes to my work. I like to craft things with attention to detail that goes beyond the strictly necessary, to produce results that are aesthetically pleasing to me. Whether it’s Objective-C source code, HTML, CSS, or anything else of the sort, I strive for elegant simplicity, clarity of structure, expression and presentation, and pleasing formatting down to the last character. All of this has made me a difficult customer to please, and set a very high bar for the app I ventured to create.

    It seemed to me there had to be a better way to write content for the Web — especially in an era when CSS-styled HTML offers nearly unlimited possibilities for beautiful, flexible layout and styling. Tinkering with raw HTML markup might always be the way to go for building page templates, but producing a site’s content — articles such as this one — accounts for a great deal of what we do, and sometimes even an HTML expert and inveterate angle bracket nudger can be forgiven for wanting to escape markup mechanics for a bit and just write.

    I’ve been especially interested in supporting the ways that authors can semantically extend HTML to annotate documents with useful, stylable meaning. This potential — expressed as the freedom to qualify any standard <element> with “class” and “id” attributes — was quite deliberately designed into HTML, and we routinely take advantage of it to style our work using CSS. But developing, maintaining, and consistently applying a CSS-triggering semantic vocabulary without a little help from our writing tools is challenging. I’ve used Markdown to great benefit for years — it’s an elegant shorthand that produces pleasingly streamlined HTML — but Markdown starts to lose its elegant simplicity when saddled with semantic markup extensions.1

    It seemed possible to create a dedicated HTML editor that lets authors work with fully styled content — much as one would in a word processor — without having to sacrifice the kind of control over markup quality that someone like me insists on. There was no fundamental technical reason why it couldn’t be done (though there would be many technical challenges to tackle along the way). The main hurdle, it seemed, would be overcoming the precedent and expectation that most “WYSIWYG” HTML editors had established to date: seemingly unavoidable loss of control over markup structure, and inelegant results that were unsuited to professional use.

    This led to some bedrock principles that would guide TypeMetal’s design and development:

    • Produce exactly the markup the author requests — yielding minimal, modern, streamlined, standards-compliant HTML that isn’t burdened by formatting annoyances or needless extra baggage.2
    • Adapt to the author’s formatting preferences, without making the temptation to obsess over markup formatting a constant distraction.
    • Make the user’s semantic extensions (“class” and “id” vocabulary) first-class peers to the standard HTML element set.
    • Provide guidance as the user writes, to ensure valid, standards-compliant results.
    • Help in ways that are actually helpful, when there is little doubt about the author’s intent (automatically creating and splitting <p>aragraph elements, for example) — but for the most part, don’t meddle or make inflexible assumptions.

    It also led to the design of TypeMetal’s “Source Loupe”, which is as much a means for earning trust as it is a useful tool. I knew there needed to be a convenient way for someone like me to peek at the HTML that their writing in TypeMetal’s visual UI was producing, without overly shifting the focus away from content and back to the HTML markup syntax that we’re striving in some way to escape.

    Easily summoned and dismissed with a familiar ⌥⌘U, TypeMetal’s Source Loupe does exactly that, while also providing a handy way to inspect HTML that you may have inherited. Tracking the insertion point or mouse pointer over your fully rendered page, the Source Loupe highlights the corresponding HTML markup fragment with character-level precision, leaving no doubt as to what will be written to the saved HTML file. (The Source Loupe’s content is generated by exactly the same code path as the file’s final HTML, and thus produces the same result — taking your HTML formatting preferences and all other relevant factors into account.)

    If what you see in the Source Loupe differs in any way from what you intend, TypeMetal’s Path Bar and Block Mode stand ready to help you grasp and manipulate the individual HTML elements and subtrees that need editing. TypeMetal’s insertion point positioning has been carefully crafted to understand the important distinction between a position at the edge of an element’s interior and the equivalent-looking position just outside the element. And TypeMetal gives special attention to whitespace — cleanly condensing it when appropriate, while offering the means to insert explicit non-breaking spaces, and to easily convert spaces between breaking and non-breaking, where desired. When it comes to the formatting of your HTML markup — something many of us have very particular preferences about — TypeMetal’s HTML formatting preferences model combines flexibility with “set it and forget it” convenience, making it easy to produce markup you can take pride in without having to constantly obsess over markup typesetting.

    All this is designed to produce a writing instrument of exacting precision — a trustworthy tool that’s right at home on a meticulous HTML craftsman’s workbench, while offering the same ease of use, convenience, and content-focused experience to casual content authors. That’s a wide range of users to design for, but there turned out to be no inherent contradiction in striving to please most everyone. TypeMetal’s unifying principle — that we’re crafting clean, streamlined HTML whose styling and layout are to be determined by CSS stylesheet rules, instead of attempting an auto-code-generating drag-objects-around-arbitrarily-on-a-canvas experience — is what makes that possible. TypeMetal is a WYSIWYG HTML editor that breaks free of the conventional limitations of its genre, yielding professional-grade results and the degree of control and precision that those of us who love well-written markup insist on.

    TypeMetal is available now on the Mac App Store. It was praised by this month’s MacFormat magazine as “a great value” and “an excellent addition to the toolkit of any web designer or writer for online publications”. There’s a free demo build you can try to get a firsthand feel for what they mean, and you can learn even more about TypeMetal by browsing its product page and online User Guide.

    1. For example: The “Discount” parser extends Markdown with a “pseudo-protocol” syntax, to allow writing [some text](class:thing) to get <span class="thing">some text</span> in the HTML result. It’s a workable partial solution, but is limited to generating <span> elements, and a Markdown document laden with many such annotations quickly starts to lose its elegant, near-plain-text readability. An author who wants to be able to focus on content at this point is better served by a writing tool that gets markup mechanics out of the way.
    2. TypeMetal adds only two custom metadata elements to an HTML files’s <head>, to enable association of a snippet set and per-file HTML formatting preferences (if any). Beyond that, TypeMetal tries to help out by auto-creating <p>aragraphs, but otherwise leaves you in the driver’s seat and strives to stay out of your way.
  • Learning About TypeMetal

    Just a quick reminder that there are many ways you can learn more about TypeMetal, Coherence Labs’ breakthrough HTML editor for OS X:

    TypeMetal was designed to make crafting modern, streamlined, professional-grade HTML a breeze, by combining a fully-styled, content-focused view with a fingers-on-the-keyboard HTML editing engine not seen anywhere else. We’re confident it provides a great productivity boost and a great value. When you’re ready to purchase, you can find TypeMetal on the App Store. (Our sincere thanks to the many users who’ve already supported TypeMetal’s ongoing development!)

  • Treating Preview as “the” View, and HTML as a File Format

    An interesting theme has recurred in a couple of recent reviews of TypeMetal: thinking of TypeMetal’s content editing area as a “preview”, and the corresponding HTML markup syntax displayed by its Source Loupe as the implicitly the more real, authentic, or authoritative representation. This should be unsurprising, given the primary way we’ve become accustomed to producing HTML: writing HTML markup by hand in one view, while being shown a “preview” of the rendered page in another. The HTML markup view is conventionally where all edits must be performed. The preview is understood to be a browser-like, output-only display of the rendered page, whose content can only be changed by editing the corresponding HTML markup in the other view.

    TypeMetal’s approach can take a little getting used to, precisely because it inverts this conventional relationship between editing and preview areas. In TypeMetal, the fully rendered page is the editable representation. You drop your insertion point into it and simply start writing. User interface features such as the Path Bar, Block Mode, and Attribute Editor help you to see, grasp, and manipulate the semi-invisible HTML elements that you apply to annotate your text, making this “WYSIWYG” (“What You See Is What You Get”) editing interface feasible.

    Editing an HTML Page Using TypeMetal

    If you think of writing with TypeMetal as akin to using a word processing app or similar document editor, this approach feels completely straightforward and intuitive. It’s only in contrast to the ways we’re accustomed to producing HTML that it seems at all surprising. In the respects that matter for most content production, a rendered page is in truth no less authoritative or complete a representation than the corresponding HTML markup — it can even be viewed as more so, given that the rendered page, not its raw markup, is what you intend your site visitors to see.

    Considering other apps and document types clarifies this stark contrast in ways of working: When using Pages or Word to do some writing, you probably don’t give any thought to the effect your writing will produce in the bits and bytes of the document file that results. What you see in the app window and on the printed page are what matters to you. They’re the end objective. Similarly, if you draw something in OmniGraffle, which representation of that document do you think of as more relevant: the dumped contents of the document file?

    ...
    <dict>
      <key>Bounds</key>
      <string>{{40.999997456867277, 216.37498982747411}, {247, 284.58334350585938}}</string>
      <key>Class</key>
      <string>ShapedGraphic</string>
      <key>ID</key>
      <integer>145</integer>
      <key>Layer</key>
      <integer>4</integer>
      <key>Shape</key>
      <string>Rectangle</string>
      <key>Style</key>
      <dict>
        ...
      </dict>
    </dict>...

    or the rendered shapes?

    a drawing

    The point is unavoidably obvious in this case. So why do we think of HTML any differently?

    Partly because we can: HTML is essentially just a syntax for annotating plain-text content, that can be produced by anyone using a plain-text editor. By design, this fact helped catalyze the explosive growth of the Web: no specialized tools are needed to build a website. When the basis of your document format is plain text, it’s easier to think of file content as simply “the document”, rather than as a format for storing something more naturally or usefully thought of in more symbolic ways.

    The other aspect of this is that we simply haven’t invested much in creating tools to make the job of writing content for the Web easier. We’ve put up with a tedious but straightforward approach of largely hand-coding our HTML, and just accept it as an intrinsic part of the process. (Or, we forego direct writing of HTML and instead use a shorthand syntax such as Markdown to produce a desired HTML result.) Since HTML boils down to plain text, this is an entirely workable approach, but it leaves us with working environments that don’t do everything they could to make the process easier and more productive.

    TypeMetal’s development has been driven by a desire to find out what we can achieve when we invest seriously in developing tools for HTML content production. TypeMetal shifts the conversation back to thinking of the rendered page as the primary representation of our work product. Authoring of and interaction with what site visitors will see is more direct, in ways that are more than just skin-deep: the “DOM” tree of elements and text is TypeMetal’s primary representation of your document, and is the complete, authoritative model that every TypeMetal editing action operates on. TypeMetal applies your chosen HTML formatting preferences to produce HTML syntax from this tree — effectively relegating that HTML syntax to the role of a mere file format in which your documents are stored. Consequently, as with so many other kinds of documents for which first-class editing apps exist, the conceptual object model takes center stage, and the syntax becomes in some ways a mere detail of the way the objects are stored persistently — a serialization format for “sleeping” objects to be held in, until we’re ready to load and use them again.

    This emphasis on a symbolic content model yields substantial workflow benefits: no more need to mentally map between a presented “preview” and a separately presented document you’re editing, no more temptation to fiddle with the minutiae of markup formatting or need to ignore visually distracting markup syntax when you’re trying to focus on the text you’re writing and the ideas it conveys. Moreover, you gain the power of a writing tool that understands and can manipulate your content as an association of first-class objects, rather than as a continuous stream of character-level syntax. This foundation facilitates symbolic validation as you edit, agile operations on tables, lists, and headings, and the ability to drag-and-drop entire subtrees of content, and will underpin still more powerful editing capabilities as TypeMetal’s development continues to advance.

    The best way to see how easy and productive direct editing of rendered pages can be is to try TypeMetal, and we invite you to do just that using the free downloadable demo version. When you’re ready to make this adept new way of working part of your content production process, you can find the full version of TypeMetal exclusively on the Mac App Store.

    Take TypeMetal for a spin — we think you’ll wonder how you lived without it!

  • TypeMetal 1.1.3

    XHTML: Is it a kind of HTML, or a kind of XML?

    TypeMetal 1.1.3 recognizes this for the trick question that it is — respecting XHTML as both a floor wax and a delicious dessert topping!

    With this update, TypeMetal allows for any XHTML file to have .xhtml, .xhtm, .xht, or even .xml as its filename extension, in addition to the extensions already supported for ordinary HTML files: .html, .htm, .shtml, and .shtm. (An .xml file must contain XHTML for TypeMetal to be able to open and edit it.) This should help users working with other tools and workflows that insist on particular extensions for XHTML files.

    As usual, the TypeMetal Demo build has been updated to match, and there’s a minor update to the online User Guide that mentions the newly supported filename extensions.

    This fix comes in response to a user request, so please keep the bug reports and suggestions coming! Your feedback is always welcome and appreciated — on Twitter, on the TypeMetal Support Forum, or emailed directly if you prefer, to “support” at coherencelabs.com.

    We’ve been working nonstop on TypeMetal improvements, many of which will be part of a major free update due coming months. Stay tuned to our News and Twitter feeds for the latest — and thank you for your support!