Category Archives: Writing

A Tale of Two Blogs

I have a blog here (the one you are reading) and another at App-o-Mat. This one is on WordPress, and App-o-Mat used to be a Django site, but is now a static site generated by that Django app, which I run locally. I had to do this because my hosting company sunset their support for Django, and I didn’t want to pay for better hosting.

So, for this blog, all I have to do to write a post is login, tap the “Add a Post” button and type type type until I am happy with the post. For App-o-Mat, I have to do a bunch of steps I forgot to write down. I think I could figure it out—it was something like:

  1. Run the Django app locally following the steps in the README (this will have a side-quest of getting Python environments figured out again)
  2. Go to the Admin and add a post entity to my DB
  3. Use curl (I think) or maybe wget to crawl the whole site and dump HTML
  4. I should probably diff this against the site to make sure it worked
  5. SCP the changed files over to my server

Now that I have written this down, I actually feel like I should write a new post soon because this is the most momentum I have had on this site since I had to migrate it last April. The change before that was to migrate from Bootstrap to Tailwind. I do more futzing with App-o-Mat than writing. But, whenever I change the site, I write about it here, so I am using my waste.

I’m not always prolific on my main blog, but that’s not the fault of the software. I was thinking about this earlier today, and now there’s a post. Whenever I have ideas for App-o-Mat, I forget them before they had a chance to exist.

Applying My Book Selling Content Strategy to Social Media

This is the final part of a series on how I am marketing my book via content generation.

In this final part, I will talk about Social Media, which I treat as a mix of Part 2 and Part 3. I have a feed that I control, but it’s mixed into a communities with norms. Posts are conversation starters, and the comments replying to them should be on-topic. I treat each social media site differently, but a common thread is that I try not to link to my work, and I make each post or comment self-sufficient and useful in the reader’s feed.

Mastodon: I used to post to Mastodon rarely, but I have recently begun to understand it better. I only follow software developers and people I know in real life (who, on Mastodon, seem to skew towards being software devs). If I post something personal, I don’t use hashtags. But, for anything that I think would be interesting to software developers, I use hashtags to cast a wider net. Doing this has made Mastodon much more interactive to me. I also follow all of those hashtags and engage as I would like to be engaged (mostly by replying when replying is asked for and “yes, anding” anything else I can in a positive way). Posting on Mastodon is mostly a way for me to get ideas and practice writing.

LinkedIn: I have written about how I use LinkedIn before. Basically, it’s to keep in touch with people I know and like. So, in a way, it’s more like what I do in communities, but since my posts are in my feed (and people can follow, unfollow, mute or block me), I feel more free to talk about my work unprompted. I still follow nearly a 0-link policy. Most posts are a trial draft of something I intend to write, so there’s nothing to link to yet anyway.

Reddit: And on Reddit, in the software developer subreddits that I participate in, I just try to answer the questions as asked. These questions are often great writing prompts. I try a draft in Reddit, and then expand on it in this blog later. I do this a little on Hacker News as well. It’s not often thought of as social media, but my StackOverflow contributions are similar.

In all of these places, I am not anonymous, and my bio links to this site. If someone were interested in what I had to say, they could easily find this place, add it to their RSS reader, podcast player, or subscribe to my email list.

I don’t know if this is the most effective way to market my book. I suspect it’s not if the goal is the number of subscribers or sales. But, it’s what I would appreciate in others.

Applying My Book Selling Content Strategy in My Communities

This is a follow-up to My Content Strategy for Selling a Book and Applying My Book Selling Content Strategy on Sites I Control. In this post, I will tell you how I market my book in communities that I am a part of on Discord, Slack, Meetup, and IRL with friends, clients, or mentees.

I don’t.

For sites that I control, there’s an expectation that I would talk about my projects. The posts on this site are meant to be useful, but they are based on my experience—they would make no sense if I didn’t explain what I was working on.

But, in communities, we’re having conversations. We’re building relationships. Having fun. It’s just not the place. This doesn’t mean I never talk about my work—sometimes that’s what we’re talking about (our work). And when the book is finally launched, I will ask my software developer friends to read it (because I think it would help them). But, even though I don’t have a strategy to market to them, the conversations we have drive my marketing strategy.

Fairly often, our conversations lead to me writing something. In fact the past three posts (including this one and the next one) are based on a conversation I had in my writing group about my plans for marketing my book. The post, Network with Alums Just Ahead of You, was based on a conversation I had with a mentee. PM-led vs. Engineering-led Time and If code reviews take too long, do this first are based on conversations I have had with clients. Those are just the recent ones.

A lot of my posts over the past 20 years started out as conversations. It’s more of a product development (content generation) strategy than a marketing one, but I believe that these conversations are evidence that the market has these problems too, so it’s marketing in the research sense.

Applying My Book Selling Content Strategy on Sites I Control

As I wrote yesterday, the core belief that drives my marketing strategy for Swimming in Tech Debt is that I truly think the book will help software developers get things done in codebases with tech debt. Given that conviction, and the fact that I care about software developers, I don’t feel shy in asking you to read my book.

On sites that I own, I just overtly write about the book and the processes that I used to develop it. This content goes out to my email list, this blog, and my podcast. Each place is slightly different.

The subscribers to my email list are expecting updates about the book. That’s the specific reason I give for signing up, so sending those updates is not only expected, but I would be not meeting my obligation if I didn’t send that update. That being said, I usually try to send something along with the update that would be interesting to people who signed up.

Similarly, readers of this blog are ostensibly expecting me to write about what I am working on because all of the advice I give on this site is based on my experience. If you are subscribed to this blog (and read it and like it), then I am sure that you’ll like the book—about 1/3 of the content is based on posts here. So, I don’t think you’ll mind me mentioning it.

The podcast is a little different because it’s only about writing and not software development. In season 4 of my podcast, I am going through the steps that I took to write the book. If you are a software developer with a blog, I think I have tips for you to turn your posts into a book. If you don’t have a blog (or even private writing) yet, then the first three seasons are about developing a writing habit that results in a corpus of work to draw from. I talk about my own book in order to explain the process of writing it, but content from the book isn’t appropriate for the podcast.

So, for places I own and that are tied to my identity, I feel free to just write and talk about the book. For all other places, I just want to be a good citizen. The way I do that is to try to use a 0-click strategy. I don’t know if this is the most effective, but it’s what I personally value.

I’ll write about that tomorrow.

My Content Strategy for Selling a Book

I am hoping to be done with Swimming in Tech Debt in a few months. Most of the work between now and then will be getting the book through three editing passes, which gives me a lot of down time. I’m using that time to market the book via content creation. This blog post is part of that.

I don’t mind just saying that overtly because I am following the advice of Zig Ziglar in Selling 101 [affiliate link]. If you don’t know him, Ziglar was one of the selling gurus and motivational speakers of a half-century ago. I would say that it’s the exact kind of person I wouldn’t read, but he’s often mentioned by Seth Godin, so I bought the book and read it years ago. He’s not at all what I imagined—a core part of his philosophy is integrity.

This line has always stuck with me:

If what you are selling is not good enough for your friends and family, then why are you selling it? If it is good, then why would you want to keep it from those you care about most? […] The key is your conviction that you really are offering something that will strengthen the friendship.

Here’s another:

Here is the most important step [to] take when it comes to helping others. If you truly have a desire to help other people; if you truly believe in your product or service; if you truly want the prospect to benefit […] always ask for the order.

It is with this conviction that I am writing these posts to tell you about my book. I think that most of the people that read this site got here because they are software developers, and if you have come back after reading, then my way of thinking at least resonates with your way of thinking. But, I don’t just want to post an advertisement (or even an addvertisement). I want each thing I write to be useful on its own, not a pitch for the book.

So, that’s my strategy—I am telling people something I think will benefit them. To do this, I am posting on Mastodon, LinkedIn, Reddit, here on this blog and in my podcast, to my email list, and other places. I have different criteria for what I post where, which I’ll go into soon.

Page-o-Mat Updates for Electronic Journals

I wrote Page-o-Mat because I had an idea for a paper journal that I wanted to make. I could have just made a PDF, but making each page was a repetitive task that was easier to do with code. I could have just made a python script to make just that journal, but I was still designing the journal, so I put some configuration in a YAML file. Once I did that, the config grew to the point that it became a language for making journals. I made my 2023 journal with it and got it printed by LuLu.

In mid 2023, I wanted to make a different kind of journal (one for writing Morning Pages), and so I added some features to draw shapes on pages, which I also used to make covers. Later that year, I made my 2024 journal with it without needing more features. I hadn’t touched it since then.

I like my custom paper journals, but they are thick and heavy, so I am trying something different for 2025. I finally found an E-Ink tablet that I can use to replace my Kindle and get a more portable writing/journaling solution too.

I’ve been looking at E-Ink writable tablets. After considering the Kindle Scribe, Daylight, and Remarkable, I decided that I cared about a few things:

  1. It had to be hard to use the machine for anything but reading and writing because I want it to be more like factory equipment.
  2. It had to have a long battery life (like the Kindle).
  3. It had to be easy to get files to and from the device (unlike the Kindle).
  4. It had to be able to read Kindle books.
  5. It had to be readable in sunlight (I live in Florida and read at the beach).
  6. It had to be A5-sized.

The only device I found that met all of these criteria was something that Supernote used to make and said they would make again. I signed up for updates and waited. Then, I forgot it existed. I almost got a Daylight in the meantime, which is a nice device, but it’s too nice—it can easily run any Android software, so it’s too general purpose. I want a “worse is better” machine.

But a few weeks ago, I got an email from Supernote that the A5 is available, so I bought one—it arrives later today. In the meantime, I’ve been reading more about its capabilities, and I see that I can make my own planner for it by just bringing over a PDF, which is what Page-o-Mat produces.

I could make one just like my 2023/2024 planners right now with Page-o-Mat, but one of the advantages of an electronic journal is internal linking. So, I could be looking at a page of all months, tap and jump to a month overview, then tap and jump to a day overview (and back). All you need to do is add tappable zones to the PDF that link to a page.

So, yesterday, I added simple support for that to Page-o-Mat and pushed up the change along with a simple example.

This won’t be enough for my 2025 journal, but helped me get back into the codebase again. I have a week to get the features in so I can make a journal and use it on January 1st.

Mastodon via Hashtags

I have been on Mastodon for a little over two years, and until a week or so ago, I didn’t really get it. Most of my social media usage and posting has been on LinkedIn, which I use because I know the people there in real life and care about what is happening to them. I post there because I also think they care about what’s going on with me. So, I have groomed my feed down to mostly those people. I thought I could replicate this on Mastodon, but that didn’t work.

The problem is that I know very few people on Mastodon in real life. I followed those that I could find, but I don’t keep looking for them, and Mastodon doesn’t suggest people I might know. I tried to augment this with hashtags, but I didn’t choose many and they happen to have very low traffic. So, my feed is dominated by a few people that I don’t know mostly posting about their lives and not on topics I care about.

But I recently decided to follow more higher traffic hashtags and that has made a big difference. It makes me think that Mastodon is somewhere between LinkedIn and Reddit. Reddit is about the topics. LinkedIn is about the people. Mastodon is something in-between.

Here’s how I use it now:

  1. I post to trial blog posts. This blog post was a toot a few days ago.
  2. I don’t link back here much. It might not be the best way to use social media, but I like the idea of content that’s fit for the media. My favorite toots are self-contained, so that’s what I mostly try to do. You can find this blog in my profile.
  3. I follow people that I see a few times. I figure they will mostly post on the topic.
  4. I follow people that star or boost me because I feel like they are probably also using Mastodon similar to how I use it.
  5. I mute accounts that post too much to hashtags. Mostly, these are businesses, not people.
  6. I have a few mute words to keep political news out of my feed.

This has made Mastodon more useful for me. I end up with a feed that is mostly about topics that I want to write about, and I post things I am thinking about. It’s supporting my aspirations to write more, and so I’ll keep using it this way for now.

Seven Years of Slow and Steady Progress Towards 30×500

I just looked it up—I enrolled in Amy Hoy and Alex Hillman’s 30×500 course in 2017. The course teaches their technique for starting a small subscription-based business that gets $30/month from 500 customers. 2017 was also the year that Atlassian acquired (my employer) Trello. Since I was locked into a 4-year vesting period, and I wanted to work at Atlassian for at least that long anyway, I was never going to start a business right away. But I thought it would be a good idea to lay some groundwork so I could be ready whenever I decided to leave Atlassian.

The first step in 30×500 is to pick an audience—ideally one that you are a part of or that hires you. I picked iOS developers. So I started adding educational content to App-o-Mat, a site I started a few years earlier to build on my book, Hello! iOS Development, but that I had neglected. With this newfound focus, the posts I wrote in 2017 helped me become a more frequent contributor (and editor) of the mobile section for Smashing Magazine. The money I made from Smashing paid for the 30×500 course several times over, but it was hard to keep writing and also excel at my day job, and so I let the writing wane over the next few years.

In 2021, after I resigned from Atlassian to go independent, I decided to get more serious about applying 30×500 techniques. I concentrated on WatchKit and Workout tutorials because I could repurpose what I had learned writing Sprint-o-Mat. But my consulting business became more software business coaching and less programming, and I realized I wasn’t really in the iOS developer audience any more. So, I started searching for a new one.

I got serious about writing educational content along a lot of different dimensions including software (of course, but more like what I was consulting about), but also job searching, personal finance, and writing. Over the next couple of years, I wrote hundreds of posts. Looking them over at the end of 2023, I realized that I had a lot to say about technical debt.

At the beginning of 2024, my goal was to write a small (50 page/10k words) e-book—more of a pamphlet—on technical debt. This led to a guest article on The Pragmatic Engineer (so I was continuing to get paid to write). Mostly, I treated this as signal that that the content was useful. But the article helped me build an email list and led to podcast invites and webinars, and the content grew based on what I was being asked about. Last week, I sent a document with 40k words to my editor—my hope is that it will be ready to publish by Q1 next year.

So, here I sit, seven plus years after I took the 30×500 course—I still don’t have even 1 of the 500 paying me $30/month. However, the course long ago paid for itself in direct dollars for my writing and easily 100x in terms of the consulting work the writing helped me land and service. The secret sauce of their method leads to finding an endless supply of topics to write about. Honestly, I barely do it right, but just going in the right direction has been good enough.

It helped me develop enough content for a book and the seeds for a few more. I do think there’s a subscription business here. Or maybe a YouTube channel? Or maybe just what it is so far: a blog, a podcast, a book, a source of leads, and proof to myself that I’m a writer.

Book Title as Visual Metaphor

I’m reading a book called Nonfiction Alchemy [affiliate link] by Jordan Ring that has some advice on finding a voice. A lot of it resonates with what I wrote in Writing as Yourself to Yourself. For example, in a section called Write with Heart, he advises you to “write like you speak” to find your voice, to tell stories because “they bought your book, not someone else’s”. But the part where he talked about his title and his voice was something I had not seen before:

I debated writing a more streamlined “business type” book with an unoriginal title like “Write Your Damn Book!” I thought about using straightforward chapter titles and letting less of my personality shine through. I summarily shut down this line of thinking.

He goes on to talk about how the word “Alchemy” is evocative and that he is using it to find other (more original) words to describe his ideas. He talks about spells and potions and elixirs, and it just makes the prose more enjoyable, original, and memorable.

It reminds me of an exercise from Writing Down the Bones by Natalie Goldberg [affiliate link]. I talked about it in my podcast episode, Finding Nouns and Verbs. Here’s how I described it:

Take out a piece of paper. Divide it into three columns. In the first column, write down any ten nouns. Then, fold back it over so you can’t see those nouns and look at the second column.

At the top of the second column write down an occupation. She gives examples like chef, pilot, or doctor. Then, for the occupation that you chose, list all the verbs related it. In the book, Goldberg picked chef and then wrote down cut, slice, fry, marinate, bake, boil, etc. Write down as many as you can think of. You don’t need to limit yourself to 10. In fact, try to come with a lot more than 10.

Finally, open up the paper. Now you can see both columns. A column of nouns and a column of verbs. Pick a random noun and then find a verb to go with it and complete the sentence.

This will get you thinking of and using concrete and specific nouns and verbs that exert themselves to describe your scene. You won’t need to rely on adjectives and adverbs as much, and when you do, they’ll have more impact.

Thinking along these lines, with my title now Swimming in Tech Debt and the central metaphor being a swimmer trying to go upstream and being thwarted by debt. In my book, I show how to use the existence of tech debt as a way to propel yourself. The payment of the debt gives you energy and joy that puts you in the flow and makes you go faster. Even the word “flow” serendipitously is related to swimming and probably belongs in the subtitle.

Using the Goldberg technique, I could make a list of verbs that describe what a swimmer does: stroke, push-off, flip, wade, coast, kick, etc. This is of course, a good use of ChatGPT, which is a kind of super-thesaurus. It says: Swim, wade, stroke, paddle, dive, float, glide, submerge, surface, tread, splash, flip, scull, plunge, sink, kick, sprint, roll, breathe, and relax.

The idea is to use those words in the text sometimes instead of the obvious one. Enough that it brings some life to the text, but not so much that it seems like a gimmick.

Titling a book

The working title of my book has been Pay Tech Debt to Go Fast Now. I chose this because it’s the short answer about what I think you should do if you have a lot of tech debt, which is to concentrate your payment efforts on short-term developer productivity. The book is the long answer with lots of recommendations of how to do it.

But, I haven’t been satisfied with it as a title. There’s a passage in my book that seems to have resonated with a early readers, and I’m using that as a signal that it would be a source of a good title:

It’s been hard for me to talk about technical debt outside of engineering. The problems we tackle only exist inside the codebase, which is invisible to stakeholders, but it’s the water we swim in.

I don’t know how to explain that to others that don’t live in water. To us, working in a codebase with a lot of debt is like swimming upstream. It resists us moving in the direction we want to go. We eventually get there, but everyone else just sees the result and doesn’t feel the resistance. If we are slowed down, it just looks like we’re slow swimmers.

In the Write Useful Books, Rob Fitzpatrick recommends making a promise to the reader and putting it on the cover of the book. He says that it could be the title or subtitle. I overindexed on how good “Write Useful Books” is as a title, which is how I ended up with mine. But, I think it breaks down when the promise can’t be short. I think you need something easy for someone to remember and recommend. Pithiness is important.

I am also reading Nonfiction Alchemy [affiliate link], and in it Jordan Ring talks about having a central metaphor to use as a source of vocabulary in the book. “Alchemy” is his example, and the chapter titles are drawn from the same metaphor. I’ve been thinking about that idea too.

Yesterday, I was in Barnes & Noble and just staring at the non-fiction bookshelves with my wife and was telling her about this problem. We kept throwing out terms and while we were there, she came up with “Escaping the Tech Debt Trap”. I like “trap” and one of my favorite books is The Pleasure Trap [affiliate link], so I was drawn to it. I tried to think visually about the idea of a trap.

Then, I remembered that “swimming” passage in my book and thought about swimming in a river and going upstream because I needed to get somewhere, and how I could use the obstacles as a handhold, and push off them to propel myself. The visual helped me realize the physicality of my recommendations. Then, I thought of the title Swimming in Tech Debt, and I liked that it had a double meaning. There’s a play on words that sounds like it could mean something similar to “drowning in tech debt” (being overwhelmed), but what I mean is how to get through it, how to swim through it.

So, anyway, that’s the new title.