Happy Monday, everyone!

We made it to the 26th issue! Thank you to everyone who read last week’s issue ❤️


📆 Today I’m featuring Greg Pierce.

Greg is the creator of Drafts. Drafts is the app where text starts. You can quickly capture text and send it anywhere! Drafts has been key in my daily workflow for years. There is literally no easier way to quickly write, organize and process text. For a while I was using Drafts as a quick place to just write down random notes and thoughts that I had. It was my replacement for untitled VS Code tabs 😛 But it's so much more for me now! Drafts is part of my procesing workflow for Indie Dev Monday. I have templates that allow me to quickly import new indie dev information. Everything is organized in my Indie Dev Monday tags and workspaces. I then use Drafts actions to process the information and move it over into my Jekyll repository when its ready to publish. (One of these days I'll have to make a blog post on this). But Drafts is so easy to use but also complex and customizable. I can't recommend Drafts enough if you just need to write some quick thoughts down or need to do some fun scripting and automation 💪 Download Drafts today!

👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.


Indie Devs

Greg Pierce

Fort Worth, TX, USA

Full-time indie developer of Drafts


Greg Pierce

Q&A

1) What is your name? Where do you live?

I’m Greg Pierce. I live closer to the Fort Worth side of the Dallas-Fort Worth metroplex in Texas.

2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?

I’m a generally introverted, happily married (25 years!) father of three boys (19yo twins and a 13yo), a not bad guitar player, a board gamer, and, yes, I’m an indie software developer.

3) What got you started/interested in creating your own applications outside of your “normal” job?

I’ve always been a creator or sorts. I did not intentionally pursue becoming a software developer and have no formal education in computers, but rather taught myself to do it to help build things. First it was desktop publishing to create an indie arts/music magazine with a friend in the early 90s. Later bringing the magazine to the web in the mid-90s. Creating and marketing a shareware game in the late 90s, and so forth and so on.

As I got better and better at automation and programming, that started to become central to my work as well, as there was always plenty of demand for someone “good with computers” around the workplace.

I had already gone indie in 2006, doing mostly consulting on business and web software projects - so when the App Store came along, it was a natural opportunity to get into and start making apps. It took more than a decade, but I eventually had enough success to make my own products my full-time gig.

4) How do you balance your time between friends/family, work, hobbies, and indie dev?

Working from home has always been great for me. Are their distractions? Sure, but the best kind. The main reason I worked toward being an indie was to have flexibility and be there to watch my kids grow up. That said, I do follow pretty traditional work regiments. I try to stick to 9-5-ish schedules. I don’t general work on the weekend or in the evening (beyond keeping up with the support queue and the like).

I think having been primarily a consultant in my early indie years helped me transition to keeping a predictable schedule and setting deadlines for myself.

5) Drafts - I cannot live without Drafts! I’ve been a Drafts user for a long time now and it’s one of those tools I use daily. When diving deeper into Drafts for this interview I realized I’m only using like 5% of what Drafts actually can do 🤦‍♂️ What inspired you to create Drafts? What were your initial goals?

The first version of Drafts came out in 2012 and was a lot simpler, but it still has essentially the same, at least primary, goals. It’s “where text starts”. The original idea for Drafts was to streamline anything you had to do with text on your iPhone.

The idea came out of moment. I had pulled out my iPhone, opened the mail app, created a message and started typing something to send to my wife. About half way through, I realized it really needed to be a text message, not an email. That doesn’t sound like a big deal, but it kind of was. I had already found the mail app, opened it, found the compose button, started a message. Now I had to select the text, copy it, go find the Message app, find the right conversation, paste. Lots of steps.

I realized I had a lot of other things like that, where I had an idea to jot down, but had a lot of friction deciding what to do with it. Did it go in Notes? Or should it be in my task manager? If so, what project/list? By the time you figure out what to do with it, the idea was gone.

Thus, the idea for Drafts. Just make a simple textbox that always opens ready to type, and gives you lots of ways to do stuff with that text after you captured it.

6) Drafts - Drafts has to have one of the best text editors I’ve ever seen 🤯 It’s so snappy and handles input better than iOS’s Notes app 🤫 I have to assume you are using some custom CoreText rendering or something. Is my assumption correct? 🙂 Are there a lot of things you needed to do to get the performance and functionality you wanted?

Drafts uses TextKit. I really wanted to build a great editing experience, because in addition to being the place text starts, it’s really nice to have a text editor that customized to your preferences - be that fonts, line heights, auto-correct settings - that you can go to type up some text, even if, ultimately, you are just going to copy and paste that text into another app.

TextKit is powerful enough to handle what I needed for Drafts. I built my own cross-platform EditorKit on top of it, with support for syntax highlighting. I’m excited to see that aspect of Drafts take off this year, because I’m going to be launching support for custom syntax highlighting definitions later this year. The syntax highlighting engine is not going to compete with pure code editors, but is designed to be simpler in scope to let people support custom syntaxes for the types of things that make sense in a notes app - like different ways of defining tappable tasks in the text, or calling out types of status/priority tags.

7) Drafts - There is such a seamless experience between Draft’s iPhone, iPad, and macOS experience! The iCloud sync is so perfect and the UI/UX feels so natural between all platforms. What are your secrets to making such an amazing multi-platform app? 😜 Do you share a lot of code between the codebases or is it easier to keep everything separate for each platform?

Drafts was originally iPhone only, then later iPad…and in 2016 I started a ground up rewrite of the app, with one of the main goals being to bring it the Mac. Obviously this was before Catalyst was something to even consider as an option for accomplishing that goal, so I dove into AppKit.

I try to share as much code as possible. The data layers use Core Data. The sync engine is written on CloudKit. The editor uses TextKit. All frameworks that are pretty close to the same across platforms (maybe less so for TextKit, don’t get me started), so the app is able to share a lot. I build both versions out of the same Xcode workspace.

I look forward to being able to build more in SwiftUI in the coming years to ease some of the cross-platform issues, at least of auxiliary UI elements like settings screens. It will definitely be a time saver as it matures.

8) Drafts - The action add-ons are sooo cool! I need to better as using actions. I could really improve some of my existing workflows. What expectations did you have for custom actions when you first started working on this feature? What are some of the coolest actions you’ve seen users make?

The first version of Drafts had a pre-defined action list for a small set things you might want to use to export your text - Messages, Mail, Print, Copy, etc. It quickly became clear that if this app was going to be central to people’s workflows, it was going to need to be able to integrate with more apps and services, as well as allow you to have utility actions that manipulated text…so really started working to expand those options.

The first focus was on URL schemes. I had written the x-callback-url spec around this time and was doing a lot to encourage other iOS devs to support a broader range or URLs in their apps, selfishly so Drafts could take advantage of them for integration. That in and of itself opened a lot of possibilities, but things really took off when the Drafts actions got Javascript support.

Since then I’ve seen some truly amazing and creative things built on the tools. Stephan Millard’s TADPole library (https://www.thoughtasylum.com/tadpole/) of over 500 actions for Drafts is truly amazing.
Since then I’ve seen some truly amazing and creative things built on the tools. Stephan Millard’s TADPole library (https://www.thoughtasylum.com/tadpole/) of over 500 actions for Drafts is truly amazing.

Another one from the community that is stunning is the Fantatiscally Good Event Parser (https://forums.getdrafts.com/t/fantastically-good-event-parser/1745), and single Drafts action that adds Fantastical-style natural language parsing of calendar event to Drafts.

9) Drafts - After forcing myself to learn more about Drafts, I realized I can use templates and action add-ons to automate a lot of the things I’ve been doing with Indie Dev Monday 😅 I’ve been manually copying and editing templates and migrating them to other services. This isn’t a question but more of a thank you! Have this 🏆 for having an easy to use and highly customizable app that can do everything I need it to do and more!

That’s awesome. Seeing creative ways people use the app to improve their workflows is my favorite thing about working on Drafts. A lot of iOS apps are very limited in scope. That’s not a bad thing, but having a more open-ended platform like Drafts that people can build on and expand means there’s a lot of opportunity for surprise and delight for me as it’s creator.

10) Drafts - I’m kind of jealous that I don’t get to work/develop on Drafts 🤣 Drafts seems like a perfect app for integrating all the possible iOS features like widgets, shortcuts, Siri, and other things I don’t know about. What has been your favorite iOS integration to implement over the years? Are there any iOS integrations you want Apple to announce in future iOS versions that could take Drafts to the next level?

Summers are always interesting. I try to keep Drafts on the cutting edge of new OS capabilities, when they make sense for the app. And it’s fun to integrate new things, but often not fun from b1 to b4 or b5, when you spend half your time wondering if you are doing it wrong or it’s still just broken in the beta.

I have largely stopped trying to speculate about what will come next. It works better for me to show up for WWDC sessions each year with a clear head, listen to what Apple has to offer, and starting thinking about how it applies to Drafts. After too many years of tossing around “if only Apple did this” thoughts for months, I discovered it was mostly wasted energy.

11) Drafts - What’s next for Drafts?! Do you have any cool future features you can share with us? 😎

I’m a little behind on shipping these, but the big planned features for 2021 are custom syntax highlighting definitions and themes for the editor. They are not something everyone will be creating for themselves, but they will open up new possibilities for the app moving forward as the community creates and shares new formats and color themes.

12) What’s been the hardest part of being an indie dev? What the most fun part of being an indie dev?

The hardest part has been the roller coaster aspects, particularly the financial ones. Since moving to a subscription model for Drafts, I’ve been able to get a level of stability, but for many years there were ups and downs. Trying to make it between new app launches, going in and out of consulting projects to make it through the lean times, can be nerve-wracking.

The most fun part has been being able to be self-directed, and being able to make a decision without cutting through levels of management to do it. Whether that decision was to move forward with a new app or feature, or take the day off to go to the zoo.


Thank you to everybody who made it to this footer! You either spent the time to read or took the effort to scroll 😊

Make sure to visit https://indiedevmonday.com/subscribe to get an email of future issues!

And go to Twitter and give @IndieDevMonday a follow… or multiple follows if you manage more than one Twitter account 😜