Category Archives: Personal

My Current (2024) Blog Stack

This blog is 20 years old. I started with static files generated from CityDesk and hosted on a simple server. Then, I went to static files generated from RapidWeaver on Mac. In 2012, I realized that I needed it to be easier to post, so I migrated to WordPress.

I very rarely updated this site in 2012. I finally decided to bite the bullet and get everything into WordPress so that I could update from any machine, not just the one I had RapidWeaver installed on. I immediately got a bunch of benefits (1) the site has a mobile theme (2) I can update from my phone or iPad using WordPress apps (3) dealing with images and other media is a lot easier and (4) publishing is automatic and fast. Since the migration, I have maintained about a weekly update schedule.

I have been on WordPress since then and can’t see any reason to change. A few years ago, I migrated to DreamHost, which I recommend for WordPress hosting. They can do more than WordPress—I also host App-o-Mat there (which is a custom Django site).

My theme is WordPress’s Twenty Twelve. Each year they make a new theme (named for the year). It was the default when I migrated, and I didn’t look for anything else because I wanted something plain, which it is.

I really try to limit my plugins. There are three that I recommend if you need the features they implement.

I use the Blubrry plugin to help me self-host my podcast. It generates the podcast feed automatically from blog posts.

I use the Contextual Related Posts plugin to put related links at the bottom of each post and the Exclude Pages from Navigation plugin to let me control which pages show up in the navigation.

Aside from those, I just picked the most popular ones for generating a sitemap and to make it easier to embed videos hosted on YouTube and Vimeo.

I use Hover as my domain name registrar.

I have no plans to change anything. I do keep an eye on the CMS sites that offer some distribution (Medium, Substack, etc), but I care too much about owning my URLs and keeping content in something I could easily migrate away from.

The Last 13 Weeks

This is the fourth post in the series that covered my journalling in 2023. Here are the other three: The First 13 Weeks, The Second 13 Weeks, The Third 13 Weeks.

Based on my experience this year, here’s what worked:

  • Journalling in a book with a place for each day: I rarely missed more than a day in a row of journalling, so nearly every day was filled. In the past, I could go weeks without journaling, usually in the late summer. Having a space to fill was an incentive to do it.
  • Journalling in color: I wrote in Black and Red and it did what it was supposed to do in drawing my attention to the more important stuff when I was reviewing it.
  • Journalling my theme: My theme lasted the whole year. In 2023, I concentrated on Making Art with Friends. I did that by joining groups of likeminded people and starting a tech meetup. In my journal, whenever I did something on-theme, I made sure it was in red and circled.
  • Journalling my meals: I kept a log of what I ate each day in the right margin. I keep it simple so it’s as easy as Taking a Picture of What You Eat, which is enough to keep me mindful of what I’m eating.
  • Journalling on paper even if I also use software: In these last 13 weeks I’ve also started working on personal task management software. I have been using it in addition to my journal. It’s redundant, but so far I’ve used both as they give me different benefits.

It was 20 years ago today…

I started this blog on December 23, 2003 with this post about automating software processes. I had just decided to leave my job in the new year and start consulting, so I thought it would be a good idea to have a website with a blog, so I made a simple one. I don’t even remember what software I used. Soon after, I ported it to Fogcreek’s CityDesk.

At some point I decided to use a Mac full-time, so I ported the site to RapidWeaver. And then like many others, I ended up on WordPress, which I still use. I have a giant redirect file that keeps the URLs from CityDesk and RapidWeaver working.

I’ve written about the impact that this blog has had on my life and career before, so I’ll just leave some links and not repeat myself

Running Through the New Year

One lesson I learned from Ramit Sethi was to just start your New Years resolutions in December. That way you get a jump start. You get to start the new year with having already made some progress.

I do themes, not resolutions, but the same concept applies. My theme last year was to Make Art with Friends and that went pretty well. I set out to collaborate with others and try to meet more likeminded people who liked to make things. As 2023 is coming to a close, I think I can maintain my gains here without it being my main focus.

This year, I am going to refocus on my fitness, specifically strength training. As I age, I am more concerned with muscle and bone health and I’m convinced that lifting heavy things is the way to go. I’m not waiting until January 1st—I started yesterday.

With that goal and my other plans, I decided to make 2024 The Year of Heavy Lifting. It’s a year where I plan to do some hard things that I’ve been putting off.

If you usually do something for the new year (a resolution, a theme, whatever) don’t wait—start now.

2024 Page-o-Mat Journal

Last year, I released Page-o-Mat, a YAML-based language for defining journal PDFs so that I could make my own Recurring Journal. I used this journal all throughout 2023 and gave some updates along the way: The First 13 Weeks, The Second 13 Weeks, and The Third 13 Weeks. I split the year into 13 week quarters because I do all of my planning by weeks and months and quarters aren’t regular enough.

I just finished making the 2024 version and got a nice surprise. Because January 1st is a Monday, and 2024 is a leap year, the first three quarters line up on 13-week boundaries. Jan 1, April 1, and July 1 are all 13-weeks apart and on Mondays. It’s unnecessary for the way I like to journal, but I do appreciate this. It won’t happen again until 2052.

I pushed the new yaml to the Page-o-Mat repo. There are instructions for building the PDF in the README. I will also be putting a book based on this PDF on LuLu.

September 2023 Blog Roundup

This month I published four episodes of my Podcast. We are in the middle of season three, which has been about the basic building blocks of writing: words, sentences and paragraphs.

I rediscovered PlantUML. I had dismissed it because I thought the setup was too complex. Then I realized that I mostly want diagrams in Confluence and that there was a plugin that let me do that easily. There are also lots of online editors, so there’s no reason to run it locally.

I made journals with prompts for guiding morning pages. To do that, I added a lot more features to Page-o-Mat (a tool for creating journals). Then, I used it to create the cover and inner-page PDFs that I used to make the book on Amazon KDP.

I wrote some more posts on software job hunting

Speaking of how little it takes to stand out, I celebrated Post #500 by sharing some of the ways this blog has impacted my career even though it’s not widely read. The more you put out there, the more chance you have of being found, but anything is better than nothing.

Stopping at a Good Part

When I’m reading non-fiction, I usually progress chapter by chapter, purposefully stopping at the end of each one so that I can have time to process what I have just read. It’s a good time to write a note with my reaction to it. Today, I ended up in a very long and dense chapter and found a different kind of stopping point.

I am reading The Sense of Style [amazon affiliate link] by Steven Pinker. After a while, I got to a new section in this long chapter that would have been a good place to stop, but I just kept going. About a page into it, he made a great point that I want to remember. I was excited to keep reading. But I put the book down.

I purposefully turned back a page so I have to read that part again. I know that the passage I just read is very propulsive and will make me want to read whatever follows, so I want it to be at the very beginning of the next session. It’s also keeping an open loop (in a good way) that makes me think about what I just read.

It reminds me about the way I purposefully leave a unit test broken so that I know what to do when I return to the code.

When Someone is Wrong on the Internet

I have a policy never to write a negative reply to an opinion on the Internet. But I still sometimes have negative reactions. At first, I try to let it go. That works a lot, but not always.

If I find myself thinking about it the next day, then I need to do something just to get it out of my head. In Reframing Anxiety, I wrote about how I’ve come to see anxiety as as asset. I see my anxiety as the flip-side to conscientiousness, which I need to be successful. There’s another way anxiety is working for me now.

Part of what’s happening when you read social media and see an opinion you disagree with is that you imagine that you are in a live debate with that person and that you are losing. You imagine that everyone can see this, so (if you are prone to anxiety) your brain will keep it in your head. You think you can solve it with the perfect remark. The problem is that both sides of the argument think this, so it quickly escalates.

What I am doing instead is using that energy to write my own post here that expresses my opinion on the subject. I write it in a positive tone. I don’t refer to the original post. I don’t post it on social media. It’s just here on my site outside of the conversation.

My inability to let it go helps me fulfill my personal commitment to write every day and I’m grateful for that.

Post #500

I started this blog in 2003. This is a milestone post—Post #500. I have been writing more frequently since 2021. Before 2020, I had less than 200 posts. Well before that, this blog was useful to me.

  • My posts about developing for iOS in 2008 were found by an editor at Manning and I wrote a book for them. This helped me make the transition to full time iOS development.
  • My posts about extending Fogbugz and Citydesk were part of my application to Fogcreek/Trello — I can’t say it “got” me the job, but I’m sure helped me get an interview.
  • I’ve been invited to speak at conferences, be a guest on podcasts, and write for Smashing based on people finding my site. It’s not a lot, but raises my profile just a bit.
  • I don’t monetize this site directly, but it’s pretty much the only way I market myself.

I didn’t set out to do any of that. I write on this blog because it’s fun and I want to be a better writer. But, even this blog—a relatively obscure one in a space crowded by very similar voices—has made a significant impact on my career.

Weekends are for Infinite Games

Sometimes I sit here on a Saturday and don’t feel like posting. Right now, though, I’m committed to trying to post something every day (even weekends) because I am doing this for fun. You’re supposed to do fun things on the weekend. To me, nothing is more fun than infinite games—games, like catch, that you play to play, not to win.

I am juggling a bunch of infinite games on the weekend. Saturday is also when I do my longest runs. I do more ambitious cooking on the weekend. I publish a new episode of my podcast every Sunday.

But, I have to admit, that being in a work mode on weekdays does make it easier to write. I mostly write what I notice while working. Today, I decided to write what I noticed while not working.