Welcome to “Inside TypeMetal”!

I’m grateful that you’ve chosen to join me on this journey! I’ll strive to bring you useful insights and a bit of fun reading about once a week. You’re welcome to leave and rejoin anytime! You can also read this issue online if you prefer.

I invite you to reply anytime you want — to send questions, let me know what challenges you’re facing, or request TypeMetal enhancements that would be useful to you. I will read and give serious thought to each reply, and respond as much as possible.

Each issue will start with a list of topics, so you can quickly find the parts that are of interest to you. Please let me know anytime if there are other subjects you’re curious about!

In this first issue, I want most of all to give you an exciting glimpse into TypeMetal’s future, set as the next chapter in its life story. This will run a bit longer than the typical Inside TypeMetal issue, but hang in there through the foundational backstory. — I promise a cliffhanger ending! 🙂

Welcome aboard, and enjoy the ride!

With my heartfelt thanks for your support,
Troy Stephens
Founder and TypeMetal Developer
Coherence Labs, LLC

 
 
 
 

In This Issue

 
 
 
 

2.2.9: The Latest TypeMetal Update

TypeMetal’s 2.2.9 update hit the App Store on May 5th. Be sure to install it to get the latest enhancements, including:

  • Clear indication of username or password rejections in the WordPress login panel.
  • Fixes for crashes that could occur on WordPress authentication failure or after indexing a WordPress project.
  • A “Main Style Sheet” picker fix for HTML document windows.
  • Link updates in TypeMetal’s Help.

See “TypeMetal Version History” for the complete list of improvements in this update! And let me know anytime you run into a problem! I use Apple’s TestFlight program to get quick-turnaround fixes to users for pre-release testing, and users who are willing to try the latest and greatest are always appreciated!

 
 
 
 

A One-Question Survey

What do you use TypeMetal for?

 
 
 
Editing HTML
 
Writing for WordPress sites
 
Both
 
 
 
 

Thanks! Your answers help guide TypeMetal’s development!

 
 
 
 

TypeMetal’s Past and Future

Find a comfortable place to sit. I’m going to spin a little story. 🙂

TypeMetal began life in 2011, with the goal of creating a writing tool I had long yearned for that seemed mysteriously absent from our Web-enriched world. I believed it should be possible to directly compose and edit fully styled content, displayed exactly as readers will see it, without accepting anything less than lean, streamlined <html> that leverages modern standards.

I had seen various noble attempts at visual (a.k.a. “WYSIWYG”) webpage editors, that typically sacrificed a structured-document model for a freeform canvas model, and consequently tended to produce overwrought HTML+CSS to realize the user’s designs. I also noticed that serious Web developers were largely still composing HTML markup in plain-text editors and previewing their work separately in browser windows, as a result of the middling results these easy-to-use visual editors tended to produce. I wrote about this dichotomy in “TypeMetal’s Approach.

I saw a needless chasm between what existed and what was possible. There was no inherent contradiction between wanting to directly edit styled content and desiring lean, professional-grade results. The “WorldWideWeb” app with which Tim Berners-Lee gave birth to the HTML-based Web was itself a browser-editor.

 
 
  
 
 

Tim Berners-Lee’s “WorldWideWeb” Browser-Editor, Running on NeXTSTEP (1993)

 
 
 

In line with Tim’s primordial approach, I saw HTML less as a content description to be “previewed”, and more as a file format in need of a proper visual editor. With the right model, it could be done, and I felt compelled to prove that concept and bring the result to fruition. I also really wanted an editor that would help me define useful CSS “class vocabularies and produce semantically stylable HTML. Having worked with a truly extraordinary team to improve macOS’ AppKit framework for 9½ years — driven by a love of that same revolutionary developer framework Tim had used to create the first browser-editor on a NeXT machine, and its newfound home on the Mac platform — I saw myself in an excellent position to leverage my accumulated knowledge and experience to produce a best-in-class visual HTML editor for macOS. So when I set out in October 2011 to pursue my own independent projects, I soon decided on a commitment to fulfilling that vision. “TechPad” was my working title for the TypeMetal project, which I saw as having especially compelling potential for the kinds of technical note-taking and writing I myself did daily.

TypeMetal’s design and development journey explored some interesting side roads. I first experimented with a “hybrid” view model based on AppKit’s advanced text system, before resolving that a WebView-based approach would provide the most direct and reliable fidelity for CSS styling.

 
 
  
 
 

A Very Early “TechPad” Prototype Showing the “Hybrid” Text System (2011)

 
 
 

Learning how to manipulate the DOM trees that represent loaded HTML documents, and building a model for undoable edits atop that, paved the way for the unique document-structure-editing engine that powers TypeMetal to this day.

 
 
  
 
 

Designing TypeMetal’s Early Hybrid Text System (2011)

 
 
 

In the course of developing TypeMetal 1, I used TypeMetal itself to write its own in-app “Help” pages — a natural fit, since Apple’s Help system is based on interlinked HTML files. This helped validate, and catalyze improvements to, TypeMetal’s editing engine, and gave me results that I could easily mirror to Coherence Labs’ website for anyone to read anytime. TypeMetal’s online “User Guide” is a continually updated copy of its in-app Help, that’s available to everyone from current TypeMetal users to people who are just starting to look into TypeMetal, find out what it’s about, and try it out via the free Demo version.

 
 
  
 
 

Writing TechPad TypeMetal’s Help, Using TypeMetal (2012)

 
 
 

I also had the great good fortune of working with the astonishingly talented artists at Ramotion to design TypeMetal’s app and snippet set icons. They iterated patiently and with unbelievable skill and speed in pursuit of the design goals I set for us — seeking to convey the essence of a Mac-native writing app specialized to HTML's world of angle-bracket-delimited markup.

 
 
  
 
 

Some of Ramotion’s Many Inventive Design Sketches for TypeMetal’s App Icon (2013)

 
 
  
 
 

TypeMetal’s App Icon

 
 
  
 
 

TypeMetal’s Snippet Set Icon

 
 
 

 
 
 

TypeMetal 1 premiered on the Mac App Store on June 28, 2013 as an extraordinary visual editor for HTML files. The 60-second intro video I composed for it looks quaint now (I cringe at having created it in 360p, but hadn’t yet figured out a better way to present zoomed-in screen recordings 😬), yet it captured the essence of what TypeMetal was about: being able to just write for the Web, while producing streamlined, professional-grade HTML.

 
 
  
 
 

TypeMetal Finds its Home in the Dock, At Last (2013)

 
 
 

To my grateful delight, the Mac App Store staff featured TypeMetal 1 as “New and Noteworthy, which was a tremendous help in promoting awareness and driving initial sales. After nearly 2 years of relentless development, it felt really good to get TypeMetal out into the world, into the hands of users it could benefit, and staring to generate the revenue it would need to become a sustainable project. Post-launch, I focused on helping TypeMetal’s first users get started with it, landing fixes in timely updates, and writing more about its philosophy and various features on the CoherenceLabs blog.

 
 
  
 
 

Four Weeks in “New and Noteworthy” — Thank You, Mac App Store! (2013)

 
 
 

TypeMetal’s honeymoon on the front page of the Mac App Store was, unfortunately, short-lived, and I soon learned that I needed to find new ways to produce project-sustaining sales. I explored other venues for promoting TypeMetal, and also set to work on ways I could expand TypeMetal’s usefulness and reach by adding valuable new features.

TypeMetal 1 was necessarily a temporary compromise on a much grander original vision. I knew that a full-fledged Web content development tool ought to have great project-level features, such as built-in publishing support and the ability to work adeptly and holistically with entire trees of HTML files and the resource files they reference. Those goals were still keenly on my mind and on my planned roadmap, but I also needed to get a first viable product to market to help fund continued work. For version 1, my focus had necessarily been on building the unique editing engine that TypeMetal needed, and the mechanics of that complex task had demanded my unrelenting efforts for the better part of 2 years.

With TypeMetal 2, I wanted to grow TypeMetal into a more widely useful writing and publishing tool. I decided that the ability to publish to a popular content management system would be just the audience-expanding feature TypeMetal needed, and supporting WordPress publishing seemed to fit the bill. In addition to being able to easily compose and publish new content, styled with and editable in the sites’ own themes, TypeMetal would enable writers to sync a complete local copy of their WordPress posts, pages, and referenced images to their Macs, and read, search, copy/paste, and edit at will, even when offline.

In the 10 months following TypeMetal 1’s release, I worked to add deep WordPress integration. The completion and release of TypeMetal 2 on March 2, 2014 turned TypeMetal into something akin to “Mail.app” for a user’s WordPress sites, while retaining TypeMetal’s roots as a general HTML editor. WordPress content was still ordinary HTML in those days, so the synergy with TypeMetal’s core mission was natural and low-maintenance. As part of the development, testing, and refinement of TypeMetal 2, I moved coherencelabs.com from being a collection of static .html files to a self-hosted WordPress site that I published to using TypeMetal.

 
 
  
 
 

Editing a Fully Styled WordPress Post in TypeMetal 2.0 (2014)

 
 
 

TypeMetal 2 added major new capabilities that I enjoy using daily, but — as Steve Jobs once famously said of a struggling product (the first-generation AppleTV, if I recall correctly) — it wasn’t a “barn burner.” Three years into development, TypeMetal did less than $3,000 US in sales in a year, leaving me still searching for a way to make the project sustainable. There was nothing I wanted more than to continue improving TypeMetal full-time, but it was effectively a hobby with a high opportunity cost for the time being. After looking around for contract work that could help generate needed income, I rejoined Apple in 2014, returning to the AppKit team for some short-term helping out that turned into seven more very good years building great technology I continue to care deeply about, with some of the most amazing people I’ve had the good fortune to work with.

There are much worse fates than to get to return to such a rare opportunity and incredible team, but TypeMetal’s development necessarily languished while I put my full focus on the work Apple hired me to do. I was able to release bug fixes when needed, but further significant development was on hold. It pained me to have a project I care deeply about stuck in that limbo, but there didn’t seem to be a good short-term solution. From Apple, I moved on to seize the extraordinary opportunity to develop flight software for SpaceX’s SuperHeavy booster that flew on April 20th. My role in that thrilling project ended in December 2021, leaving me free to pursue other endeavors for the first time in a long while.

TypeMetal, in hand with the enduring vision of what it can become, was the project — the dream — that just wouldn’t leave me alone. I was determined to revive it and make it the success it was meant to be, and started working on it again in earnest in January 2022. Years of relative neglect had left me with a bunch of catching up to do, in two areas in particular:

  • WordPress had ditched its notoriously security-vulnerable XML-RPC API (the way apps send and receive WordPress posts) with a new REST API that required substantial revisions to TypeMetal’s WordPress sync and authentication code.
  • WordPress had also introduced a new “block mode” for content, that diverged from using ordinary, general HTML in favor of specially annotated “blocks” that must be carefully maintained for WordPress’ editor to recognize them as valid. It’s not the way I’d have chosen to implement block mode’s worthy features, but there it was. TypeMetal needed to adapt.

New Apple platform features had also been introduced during that time, including “Dark Mode” and the move to Apple Silicon (M1) chips in new Macs, and as a result of all of this, getting TypeMetal suitable for sale again was going to take some significant updates.

It took three and a half months of focused full-time work to adapt to these major changes and bring TypeMetal up-to-date. TypeMetal 2.1.2 shipped on April 13, 2022 — the first release to support WordPress block mode, REST API sync, and Dark Mode, and run on both Apple Silicon and Intel-based Macs.

 
 
  
 
 

TypeMetal 2.1.2 Added REST API WordPress Sync (2022)

 
 
  
 
 

maOS’ Premier WordPress+HTML App Returns! (2022)

 
 
 

With TypeMetal back up and active on the App Store, my next short-term goal was to continue making needed enhancements and expanding support for WordPress block mode’s continually evolving, moving-target feature set. While the more modern REST API improved sync quite a bit, WordPress configurations continue to vary widely in hard-to-predict ways, and the frequent need to troubleshoot users’ various setups and sync issues remained a challenge. Authentication configurations, in particular, are myriad due to security concerns and countermeasures. Many TypeMetal updates over the past year have been largely devoted to solving WordPress connection and authentication issues to get new customers up and running. This has taken more of the focus than I would have liked away from TypeMetal’s original and still-important mission as a general HTML editor.

Tracking sales, I could tell that making a TypeMetal viable as a product was going to take more than just engineering work to bring its WordPress features up-to-date. I knew part of the problem was that I needed more effective practices for building product awareness, which led me to deploy a full-featured Demo version and to start making and posting short YouTube videos that highlight key TypeMetal features. (It’s also led to the Inside TypeMetal email you’re reading now. 🙂) For TypeMetal to be broadly useful, though, and really succeed as a result, will I think also require it to grow substantially and take its capabilities to the next level. 

In Summer of 2022, I started work on TypeMetal 3 — a major new version of TypeMetal, that I’m striving to have ready for release this summer.

Among the many compelling features I’ve long had in mind for the next major version, two in particular stood out as essential:

Projects

A serious web content development tool needs to have a concept of general projects. It needs to be an integrated development environment that can deal with trees of files holistically and help navigate and manage the relationships among them.

Markdown

The rise of Markdown as a widely used markup language has also changed the landscape. Despite my humble best efforts at making HTML an easy-to-work-with format for writing and publishing 😁, much of the world has moved on  😕. Markdown’s elegant simplicity has taken the world by storm — including, in particular, the world of technical writing for software development — and for good reason. Its Spartan, intuitive, unobtrusive form of markup puts the focus back on content, and makes everyday basic writing for the Web much easier and simpler in contrast to the verbosity of HTML. Something more akin to Markdown should arguably have been what Tim Berners-Lee started with all those years ago at CERN. Granted, Markdown doesn’t handle the full spectrum of page building capabilities that HTML is now saddled with, but for the vast majority of simple content, Markdown offers an appropriately simpler and more elegantly concise solution. For these reasons and more, Markdown now dominates a large swath of Web publishing and technical writing, and the Web is probably a better place for it.

Markdown is a beautifully elegant tool for writing — and one that Apple colleagues and I had employed to good effect to create everything from pleasingly-formatted, version-trackable API proposals to everyday notes — but the relatively bare-bones tooling that exists for it still leaves the world in some sense where we were before: composing content in a markup language in one view, to be displayed elsewhere with styling applied. Once again, we find ourselves working with one representation of our content, to produce a derived end result that we must separately imagine or preview. The relic of split-window editing-and-previewing refuses to die.

As before, TypeMetal stands poised to change all that for the better. Its visual engine can unify editing into a single, fully styled content view, but to be truly useful it needs to be able to write Markdown back to files with lean expressiveness and minimal diffs. I’ve developed advanced editor extensions that will make that possible, and am refining them to make TypeMetal 3 a first-class tool for writing and editing Markdown content with exacting precision.

 
 
  
 
 

TypeMetal 3’s Editor (right) and Lean Markdown Written From It (shown in Tower, at left)

 
 
 

The Big Picture

Built on those major new additions, TypeMetal 3 is designed to be an open and interoperable note-taking, clipping-gathering, idea-organizing, journaling, drafting, editing, and publishing workspace for all your writing needs. It will work adeptly with Markdown, HTML, and plain-text files, with the ability to browse and work with associated images and other assets in arbitrary file trees. Its redesigned windows will help organize your WordPress sites alongside general file-tree projects, and will support some long-wished-for improvements, such as improved browser and picker UIs for image files, and the ability to edit WordPress posts directly in the site window instead of having to open a separate window for editing.

TypeMetal 3 also adds a new and more efficient indexing model that will enable global full-text search across all of your projects. Its Markdown mode will also support common, easy-to-use [[WikiLink]] syntax, enabling you to swiftly build hyperlinked collections of notes and documents.

Some of the many things you’ll be able to do with TypeMetal 3:

  • Collect clippings and notes using easy, low-friction intake provisions.
  • Draft and publish WordPress posts.
  • Keep a local log or journal.
  • Brainstorm and design.
  • Connect ideas.
  • Build a hyperlinked “second brain”.
  • Assemble a knowledge legacy.
  • Catalog and archive your past work.
  • Find anything instantly across multiple projects with global search.

It’s always been a cornerstone of TypeMetal’s design that your work is yours, and should always remain so. I’m building TypeMetal 3 accordingly, around a completely open content structure that will work with your file trees regardless of how they’re arranged, help you organize without forcing you into any particular system, and leave your content always open for use with other apps and scripts. TypeMetal will help you make immediate progress on projects, contribute to arbitrarily structured open-source efforts, and build a legacy of curated content that you can carry forward across fleeting apps and platforms, far into the future.

In hand with fulfilling these goals, I’m conducting a substantial overhaul of TypeMetal’s editing engine, including a needed move to JavaScript for core DOM tree editing functions that will enable eventual portability to iOS and elsewhere.

There are many great possible advances I want to be able to add to TypeMetal after version 3.0, such as iPad and iPhone apps, git integration, powerful tools for helping you organize your notes and content, and support for other project types and publishing destinations such as eBooks, code documentation sets, and other blogging systems such as Substack. Being able to realize any of these exciting potentials hinges on my ability to make TypeMetal a self-sustaining success, and I’m pouring everything I can into making that a reality.

 
 
  
 
 

Designing TypeMetal 3’s Indexing System (2023)

 
 
 

Next Steps

TypeMetal 3 is on track for release sometime this summer, at the rate I’m currently able to continue development. I’ll be thrilled to get it out into users’ hands, but I also realize that it must succeed substantially beyond past versions if I’m to be able to continue the project full-time. I’m hopeful that — between the intrinsically usefulness-expanding features that it adds, and more active promotion efforts I can pursue — TypeMetal 3 can and will succeed, but right now that future is anything but certain.

That’s where your goodwill comes in, and can make all the difference.

If you like TypeMetal — if you see great potential in TypeMetal and want to see its continued evolution — please do whatever you might feel moved to do to help spread the word. I greatly appreciate every App Store rating and review, every post on social media and blogs, and every word-of-mouth mention you care to give. Meanwhile, I am doing my best to learn the art of marketing, and to do the most effective promoting I can without taking too much of my focus away from the crucial engineering to be done.

These days, I’m dividing my time between TypeMetal development and the consulting work that finances keeping things going. I would love nothing more than to make TypeMetal the solid success that would enable me to work on improving it full-time, and am devoting my relentless efforts to making that happen. I’m betting on TypeMetal 3 to be a game-changer, and look forward to bringing you news of further progress on it soon!

Wrap-Up

How did you like this first issue? Are there other topics you’d be interested in? Reply anytime and let me know what you think!

Thanks so much for reading! My best wishes to all of your in your own writing endeavors!

—Troy