When I first started seriously writing in early 2019, it was because I committed to a 30-day blogging challenge. My main goal of this challenge was to see if I even liked blogging and sharing my ideas so publicly. I'm still here and telling you about my process, so hopefully it's clear that I like it!
What I discovered is that publishing a post a day wasn't sustainable for me. I think it takes a special kind of person and a special kind of content to publish daily and I applaud anyone who does that. I personally can't keep up with a schedule like that because I have chronic issues that make my spoon levels unpredictable. As I write this, I'm pretty low on spoons but I've been looking forward to this post for several weeks, so that's what's motivating me. :)
Not only was I looking for a schedule so that I can get back to writing at a regular cadence, but I'm also launching a support site soon where folks can do monthly subscriptions to support my work and get some fun benefits in return. One of the membership tiers includes 2-week early access to blog posts I write for my website. That means I need to have posts written and scheduled ahead of time.
Once I figured out I needed something different, I started thinking about all the things I love doing. I love writing about accessibility. I also love sharing the little things I learn every once in a while, such as setting up a React App for testing with Jest and Enzyme or how to dynamically create many similar CSS classes with Sass. I knew for sure that I wanted to write more technical content this year than I have in the past.
Then I thought about live streaming on Twitch. I love it too! I have my Build an Accessible React Component live series that I plan to continue and knitting on stream is a nice change of pace. I knew I wanted to be able to publish posts regularly and also be able to stream on Twitch a couple of times a week.
In November 2020, I wrote a tweet asking if anyone batched blog posts. It's more common than I thought! This thread is also where I was connected with Stephanie Morillo (pronounced moh-REE-yoh) and signed up to have a 1:1 content coaching session with her. It went very well and she gave me a lot of great ideas! She also checked in with me afterwards to see how I was doing. I highly recommend following her and reading her content! She's the same person that inspired me to create a /links page and share it on social media. (My /links page is here).
I use 3 tools to stay organized: Google Calendar, Trello, and GitHub. It might sound like a lot to some, but I promise I keep the work for each to a minimum. Gotta save spoons everywhere I can! Let me tell you how I use each one. You can click on any of the screenshots to see them full-size.
I'm a very visual person. When I plan an appointment or video call, I always have to look at my calendar. My brain works in calendar weeks. So for a high-level view of what I'm streaming on Twitch and when I stream it, I use Google Calendar. I stream twice a week. On Tuesdays, I code. On Thursdays, I knit. I make sure to distinguish between those two. For Twitch streams that are planned ahead of time, such as the ones where I build an accessible React component, I make sure that goes in the title as well. Those have not been scripted in the past, but they will be for future streams to save me some time and energy. That means I have to plan them ahead of time and to do that, I have to know exactly when they're happening. I've also been numbering the streams but I'm not sure why. I guess that part is just for fun! :)
I keep track of all of my writing ideas, plans, and newsletter dates with a "Writing" board in Trello. It has 6 columns:
- Ideas: This is like a backlog of ideas for posts. They're not guaranteed to be written, but getting them out of my brain ensures I won't forget them and also makes room for other things I want to think about.
- To Do: These are planned posts and newsletters. They have due dates and titles and will definitely be written.
- Outlining: This is the first step in my writing process. Some posts almost skip this step because they can be written in one sitting. Longer posts are on a feature branch for my repository and they have a draft PR in GitHub. We'll get into that more in the next section.
- Writing: Posts in this column are ones I've started filling in the outline on. This column is also for posts that are being reviewed. I'm a pretty interactive reviewer/editor and still consider editing to be writing because I might re-word whole sections after a post is written out.
- Ready & Scheduled: This column holds cards for newsletters that have been scheduled for delivery and posts that have PRs that just need me to press "Merge".
- Live: Things in this column have been sent or published. The whole world can see them.
The columns are laid out so that a task moves through each step from left to right. And as I mentioned in the last section, I'm a very visual person. I use my one free power-up for the Calendar that lets me view all of my tasks by week or month. I use these views to ensure that I've spaced out my topics appropriately and so I can group ideas if I feel like writing a series about a broader topic.
The code for this website is stored in a GitHub repository. Each post is a markdown file and it's treated just like any other file in a pull request. When I want to create a new post, I first create a branch called
post prefix is only there to help me keep things organized. I don't do anything special for CI/CD. Second, I create a new file for the post and put it in the appropriate directory. My directory structure for posts looks like this:
posts/ 2019/ 01/ 02/ ... 2020/ 01/ 02/ ... 2021/ 01/ 02/ my-writing-and-planning-process.md ...
After I've outlined a post, I commit and push the changes and open a draft PR on GitHub. This enables me to see all the in progress posts I have at once and also allows me to work on many posts at once. When I was writing my Build a Blog Site with Next.js and Firebase series, all 5 parts of the series where in their own pull requests at the same time.
I use Next.js for this site and deploy it to Vercel. Vercel automatically builds previews for every PR and I use them when reviewing posts to make sure all links work correctly and that the post looks nice on my site. When I'm ready to publish a post, all I have to do is hit the "Merge" button on the PR and Vercel automatically builds the updated version of my site.
I love my new process. The tools I use can easily have redudant overlaps in their uses, but I feel confident that the setup I have keeps everything organized for very intentional usage. I schedule my streams in Google Calendar. I schedule my posts and newsletters in Trello. I manage reviewing, testing, and publishing in GitHub. I can write as many or as few posts as I want at the same time.
Did you know I have a newsletter? 📬
If you want to get notified when I publish new blog posts or make major project announcements, head over to https://ashleemboyer.com/newsletter.