Skip to content
The Making of PackMule

The Making of PackMule

The Journey of Making Something that Attempts to Manufacture Time
Coda is a special tool unlike almost everything we’ve seen; this is indisputable. And at my age (), I’ve seen a lot. Still, Coda is a delightful surprise. But as cool as Coda is, its capacity to move the time needle in a positive direction is rarely contemplated by its users. We tend to hire tools that perform jobs for us faster, better, and sometimes in our absence. Coda is just such a tool, but just as we fail to recognize how fast our kids grow, the time that Coda saves us often goes without notice.

PackMule might be different. The time it saves may be apparent with each use.

What Is PackMule?
I’m not entirely sure.

PackMule is a simple idea, but its capacity to help Coda makers and users is somewhat complex because it provides many levels of productivity. By now, you’ve probably guessed that it has something to do with Coda Packs; this is true. How you will use it and for what purpose is not entirely clear to me for reasons that will become more apparent as this journey progresses.

Today it’s simply an early prototype that helps Pack developers make Coda Packs; and by “developers” I mean all makers, even those that have zero javascript experience. There’s no rocket-science or magic; it’s a code generator. But the underlying vision of PackMule also touches on requirements management, collaboration, documentation, strategic planning, forecasting, decision support, and all of the things that Coda itself helps us achieve in so many ways.

PackMule is simply a natural progression of the sprit of Coda itself applied in a way to help us innovate with Packs.

Let’s face it - all Makers () are standing on the shoulders of giants, the Codans who have invested vast energies and time in the quest to help us all make time that we can use to do good things in life — professional and otherwise.

I hate to be vague; it’s not my style. But in this case, PackMule exists as an early vision that has clear boundaries for certain elements, and vast open spaces along many of its edges. However, there are some clear aspects of PackMule that have solidified following the now-famous .
It’s a framework for innovating with Packs.
It’s a Pack writer.
It’s a Pack tester.
It’s a documentation generator.
It’s a learning tool.
If PackMule provides users with additional insights concerning Pack making, it’ll be a success; its overarching goal is to move the needle in favor of greater Pack innovation.

How Will PackMule Help Me?
It may help you in many ways, but here’s a very simple example; your intuition and imagination will carry the conversation from here.

Imagine you need a Coda feature for your team that doesn’t presently exist. It has the following requirements:

When a team member enters a value in a table cell or text field, the data for that cell needs to be sent to a Webhook - perhaps an external reservation service .

The Webhook responds with an authorization code.

The authorization code must replace the data in the cell while preserving the original value that was entered.

Pretty straightforward, right? Perhaps. But for me and likely the vast community of makers and users, this requires some thought and experience using the for formulas and column formulas. It also implies some Javascript experience.

Below are a few ways that PackMule streamlines this development process.

Capture Pack Meta-information
Capture all the details about the Pack. Coda is naturally suited for organizing the data about a new Pack including the requirements.

Essential Templates
PackMule is planned to include a collection of Pack templates representing common patterns such as a Webhook integration. PackMule templates fully extensible; they can be enhanced and new javascript templates are easily injected into the framework. PackMule also provides OTA (over the air) template updates. As the improves and new success patterns and capabilities emerge, the essential templates are kept fresh.

Build the Pack
One button; instant Pack generation.

PackMule is designed to make it easy to get 80% (or more) of the way to a new Pack solution. In some test cases, I have actually deployed the generated code without modification and it all just worked. It’s too early to say how well PackMule will accelerate Pack development, but like Coda itself, its bound to be a multi-year process. This is a marathon, no a sprint.

As I traverse the Packs SDK and code generation possibilities, there will undoubtedly be cases where code creation is perfect or near-perfect. However, like developing an AI model, this is a process that will take time to nudge the outcomes into the 90th percentile or higher.

And to be clear, I am neither an expert in Coda nor seriously proficient in modern Javascript and TypeScript. But with a little help and some painful learning, this might just work.

Is PackMule AI?
Um, no. Not yet.

Why the Mule?
Historically, have been used to cross difficult terrain, where the absence of roads prevents the use of wheeled vehicles. The journey to proficient Pack making might be considered difficult terrain despite the amazing design choices of . Even today, a pack mule is an ideal choice for trekking from the rim of the Grand Canyon to the Colorado River below.

Despite the Pack development knowledge you may acquire over the coming months and years, there are certain productivity rules that will remain constant. The metaphor seems right and it will likely be proven timeless.

What’s Next?
The answer to this question rests in Coda’s hands and the release of Pack Studio and the marketplace for distributing and deploying Packs. Ironically, PackMule itself is on a fast track - I’m working on it daily to help me explore the possibilities of streamlined processes and intelligent Pack making.

As I make progress, I’ll continue to document the journey and share thoughts about Pack development challenges, bugs, enhancements, and ideas for new Pack success patterns.

Feel free to to learn more as I know more.

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
) instead.