I’m Writing a WordPress Book

I am writing a book about WordPress development. I hope it will inform beginner, intermediate, and advanced developers to all take more joy in their craft.

WordPress Patterns

Here’s the concept: It will be a book of patterns for WordPress development, with how-tos and essays organized in a non-linear, linked, self-reinforcing system — a coherent pattern language.

The book will describe masterful practices on a spectrum from philosophy, to information architecture, down to sound coding approaches for specific technical problems. It will guide developers to anchor their work in “the WordPress way”, identify the right tools for a given job, build in forward-thinking ways, and connect their work to related situations and patterns.

Something Different

To my knowledge, this is unique in the WordPress world. Code references serve a different purpose entirely: They’re more like a dictionary, useful to expand fluency but not a way to learn the language. One-off tutorials found through searches are how most of us learn the basics, but they are often of low quality and aren’t often helpful or available for advanced skills.

The brilliant Plugin Handbook comes closest to what I have in mind: it provides a comprehensive jumping-off point for how-to information, presented with context. In fact, I expect my book to often point back to the Plugin Handbook. But the pattern language format is distinct from the handbook format, and lends itself to different reading behaviors and learning styles.

The difference is all about how you approach the material as a reader. Handbooks are great for “get me up-and-running quickly”. Collections of pattern are  good for “given my need, give me a solid approach”, and for “given my problem, help me to understand the tradeoffs, the history, and and the why of the recommended solution.” Handbooks equip you with breadth; pattern languages go deeper, which is why they are potentially of use even to people with intermediate and advanced skill.

For Most Everyone

I think this concept could be useful for developers with intermediate and perhaps even advanced skill, as well as for beginners.

I wish I’d had patterns available to read when I started 3 years ago. I wish I had them to guide me still today, so I’m cautiously optimistic that others will find it useful, too.

To be sure that it is, I will ask a handful of other developers to review early drafts of my first few chapters. Their input will help me to course-correct and, I hope, confirm the value.

Open Source, Baby

In the spirit of open source, I am committed to making the book’s content freely available to everyone on the web. As I write, I will publish drafts (when I’m no longer embarrassed by them), and incorporate feedback while I edit. Eventually, when there is a coherent body of work, I expect to publish commercial e-books. Perhaps they’ll be GPL licensed (if that’s appropriate for the medium — I’ve yet to look into this at all).

I am writing at a slow pace, mostly due to spending a lot of time just researching and editing as I learn more. I have identified over a hundred potential chapters and expect that to double or triple. After four months I have a couple dozen chapters outlined and about half a dozen solid drafts — none of which are quite ready for review yet. I expect to accelerate a bit, but it will still be a good long while before anything is considered final.

All the more reason to publish drafts in the open: This way, I won’t have to wait for people to get some value out of the work.

Feedback is Love

Researching open source licenses for book content is on my todo list. I’d appreciate any pointers.

More generally, I would love to hear your reaction to this. Does the pattern language approach make sense as I’ve described it? Given your skills, do  you imagine this would be useful for you? Are there specific topics or patterns you hope this will cover? Are you interested in reviewing early chapters? Perhaps interested in contributing?

2 Problems with Blogging About Your Annual Goals

Wherein I write “goal post” several times, but never refer to sports.

This being the time of year when we’re all gearing up for the year ahead, I’ve enjoyed reading several people’s Goals for 2015 posts. It may be arbitrary to do this once a year, around the turn of the year, but I’m glad for the tradition. It gives me an excuse to learn about other people’s hopes and dreams for the year ahead. I find it particularly inspiring when the goals come along with down-to-earth plans for achievement.

There’s something I really don’t like about the writing form, though: Blogs, despite being one of the best publishing tools we’ve got, don’t lend themselves well for this use.

Let me walk you through the problems, and then the solutions — including a really fantastic plugin that will make a surprisingly big difference.

Problemo Numero Uno: Time Relevance

Blog posts capture attention for a little while after publishing — some for a very long time, although not many. Most are ephemeral.

This isn’t a problem usually. Posts shouldn’t continue grabbing attention forever. They become inaccurate in time as facts change, or they lose authority to newer web resources that do a better job of providing information.

The very design of blogs encourages this. Eventually, posts are simply pushed off the home page to make way for newer posts. WordPress defaults to 10 posts on the home page. Publish a new post, and you push the eleventh most-recent one off the home page, where it’s less likely to be seen.

This does become a problem when the topic of a post justifies more than a few weeks’ or months’ attention.

Annual goal posts, for instance. Your goals for 2015 will be current and relevant for the whole year. How will people discover your goals post in July, when it’s far from the first page?

Why post your goals at all? Your goals are probably an important part of how we, your readers, will learn who you are and what you’re about. A few months from now, we might forget your goals. How will we know to help keep you accountable, pipe up with some coaching when needed, or celebrate your successes?

Thus, your goal posts deserve more prominent attention than they’ll get buried several pages deep.

Keep them on the home page

Your goal posts are worth a link from your home page, throughout the year.

You might add a link to the post from your sidebar. I don’t have a sidebar on my blog currently, so I’m opting to link to my goals from my main navigation menu. That’s some precious real-estate, but it’s worth it.

You might also consider making the post “sticky” to keep it pinned to the top of the front page. The check box for this is hidden behind an “Edit” button next to the “Visibility” setting in the post editor’s “Publish” box.

Click that unassuming 'Edit" button to the right of Visibility...
Click that unassuming ‘Edit” button to the right of Visibility…
... now you can stick it to 'em.
… now you can stick it to ’em.

But, this isn’t a great fit for Goals posts. While they’re important to keep prominent, they probably aren’t worth every reader’s attention, all of the time.

Problemo Numero Dos: Keeping Current

Your goals post, like blog posts generally, are snapshots in time. A goal post you publish in January reflects your sense at that time of what you want to accomplish, and reflect that you’ve made no progress yet — you’re just beginning.

But in real life, your goals are likely to shift, and you make progress towards achievement.

In other words, posts are great for sharing your goals when you form them, but they suck at keeping your readers up to date over time.

If I tell you my goals here, and you read this within a few days, you might think “Neat! Go Matthew!” But if you happen to be reading this in July, well that’s a much less satisfying experience for you, isn’t it?

Say July rolls around and you decide you really can’t or won’t complete one of your goals. Or, more happily, you achieve one. You could manually update your post, to keep its information current. But then you lose the snapshot of what your goals were at the time.

And, the revised post won’t pop back up into view at the top of your blog again, so people aren’t likely to get the message. If I’m following you through email, RSS, or social media, I get automatic updates when you publish something new, but nothing when you update something old.

“Easy,” you may be thinking, “I’ll write another post with the update.” Okay. But what if I stumble first on the original post, and never see the update? Okay, so just add a link in your original post to the update, and vice versa, to keep that from happening.

Well, (a) that’s one more thing you have to remember to do, (b) it’s tedious, and (c) now if I stumble on your update first, I have to go back and re-read the original to appreciate the entire context, which doesn’t make for an ideal reading experience.

You could do what a lot of people have done (including your’s truly), and write just an annual review. No updates at all between these arbitrary year-long intervals. But I know from experience doing this that my goals become easy to fall out of my mind. Not to mention fall out of my readers’ minds, which prevents them from keeping me accountable, and enjoying my successes with me. (See above.)

A Better Way to Blog about Goals

Here’s what I’m doing.

One: Publish a page with my 2015 goals

Why a page? Becuase this isn’t intended to be a snapshot in time, but a page I keep current with manual edits, and with automatically updating live data when available. This will continually show what I’m working towards, and how I’m doing on the path.

You may’ve noticed the page is linked to from my main menu: Goals

Two: Publish a post with my 2015 goals

This will sound redundant at first, but it won’t be. The post will be my snapshot in time, with a bit of added commentary as to how I’m thinking about my goals at this point in time.

Three: Post occasional updates

Perhaps I’ll do this monthly, but at least quarterly. As my goals page changes, these update posts will provide a record of running commentary and context. If I abandon a goal, finish one, or add something new, I’ll call attention to it in these updates.

Four: Use Threads to tie the update posts together

Threads is a WordPress plugin. Quoting from its description:

If you have ongoing themes you write about on your site, you can use Threads to show those posts in a timeline, with a link to the timeline from each of the posts. This helps you avoid feeling like you have to rehash too much history about the topic in each post.

I first discovered Threads on plugin author Alex King’s site. I’m not sure why a lot more people aren’t using it. It’s a brilliant idea with brilliant execution.

Alex has a Year in Review thread, among others. You’ll see at the bottom of this post that I’ve started doing the same thing here. I’ll also start another new thread for posts related to my 2015 Goals. It will provide a timeline for context and a running record of my goals at a glance.

Out of snapshots will emerge a story.

I want you to do this

Why not give this a try? Setup a page as the main home for your goals, install the Threads plugin, post updates naturally as there’s news about your goals, and add thread metadata to your posts as you go, just like you do with tags and categories.

It’s just a few simple steps for you, and a much better experience for your readers like me.

Here’s to your success in 2015! I look forward to reading all about it.

This post is part of the thread: Annual Goals and Review – an ongoing story on this site. View the thread timeline for more context on this post.

So 2014 Happened

Although I published Goals for 2013, I didn’t bother reflecting on them at the end of the year, nor writing a Goals for 2014 post. What might I have said?

I would have reflected that setting goals is easy, and meeting them is hard. I missed achieving most of the ones I set, and was too embarrassed to call attention to it with a review — I figured it was clear enough to anyone paying attention. I wanted to get better at doing more, and figured I could stand to say less.

In retrospect, I’m glad I had that perspective. It didn’t hurt to be humbled, a bit. I worked harder to prove — to myself — that my word mattered for something. And I lived well in the following year, like I hadn’t in a very long time.


This time last year, I was excited that Catherine and I had just moved out of our parents’ places and in together in Southeast Portland. It was three days after Christmas! We were insane! But we were tremendously excited.

Here’s what I remember fondly from our time at the place on SE Tibbetts:

Hosting the Rocket Lift team for our annual meeting with Scott and Teresa mere days after moving in. Our office with its poor view of the parking lot, standing desk, reclining chair, and cat tower. The day I was distracted by a three story high geyser in the street that went for fifteen minutes before a Portland Water crew made it worse before making it better. Many productive conversations with colleagues Mike, Amanda, Shenoa, and Bridget, and our clients Jed and Ronda. Cigars, whiskey, and my self for company on our scrap of a back porch to decompress after long weeks.

Snowpocalypse 2014 in early February, when we were all shut in, comfortable, and content. Walks in the snow to coffee. Walks in the snow at night. The glowing gray dark, the silence, the love.

My hilariously small bedroom “man closet” and Catherine’s generously large one. Our queen bed. (God, we miss it.) Candles and books. Being woken nightly by the asshole Harley neighbor on his way to the graveyard shift. The night we were woken by running and clattering out our window, followed by screaming sirens way too close, at which we jumped up on the bed to look out from our second story to see two fugitives dive with their clattering backpacks into our bushes right below to evade another patrol car screaming by, and I called 911, heart pounding, only to learn moments later from one of the many cops now on foot with flashlights that they were wanted for graffiti tagging. It was their rattle cans we heard clattering. We went to bed laughing and silently cheering the fugitives, wishing we’d kept out of it, still amazed at the excitement.

Our couldn’t-be-unhappier out-of-work neighbor on one one side, with the “Warning! Scary Atheists Inside!” sign on the door, who was fun to talk with in spite of himself. Our couldn’t-be-friendlier stoner tribe on the other side, with their dogs Apollo and Fox (small, red, cat-like), who occasionally knocked on the door to borrow cooking supplies and always thanked us in baked goods. Our manager Diane with her blessedly lackadaisical approach and awkward sense of humor, who made us feel we’d be missed when we left.

Catherine’s massage work at three different places, and her evolving relationship to the work. Her back pain. Our happiness working together at Rocket Lift and on our side projects.

Many happy meals we cooked together. Trips to Winco and TJ’s. Wanting every spice from Penzey’s. Gluten free cup cakes and the bulk section at People’s Food Co-op, one block over. Brining a turkey that was too salty, then procrastinating on wrapping up the second brining attempt so I had to throw the whole bird out. Learning to make game hens and steaks the Mark Bittman way, coconut creme cups, buffalo wings, my own Pok Pok wings (sadly lacking, I’m afraid). Crock pot meals. Homemade sushi for Valentine’s.

Deepening our community with Jayne and Dave, learning a great deal from them and relying on them for all kinds of support. Many lovely evenings with Molly and Zach. Really meaning to spend time with Trisha, Aaron, and Aurora, but missing out. Reunions with Ben, Jennifer and Jacob, Andy and Jess. Enjoying cable for the World Cup with Erik, Peter, and Mont Chris. Soaking up business and travel stories from neighbors Kenn and Sarai while enjoying a few of their damn fine cocktails, and taking turns cat sitting. Reconnecting with Mike, who remains as soulful as he is witty, and is one lucky bastard tricking Susan into marrying him. Their wedding at the Crystal.

Outings to favorite places: ¿Por Qué No?, The Matador, Le Bistro Montage, Fire on the Mountain, Ahi Sushi (which I’m quite sorry to learn is closed), Sok Sab Bai, Jade Tea House, Circa 33, Ford Food and Drink, and Clinton Street Coffee. Haircuts with whiskey at Modern Man. Discovering the wonder of Guardian Games too late to enjoy much, which was good for my pocket.

Watching Timbers games at 4-4-2, which was too crowded, before finding Blitz Sports Bar, with their lovely couches, waitresses, and table-sized nachos. Their tachos — which are tater tot nachos and yes that’s as delicious and regretful later as you imagine.

Flea-bombing our place while working in a tent on the back porch with the cats.

Carrie and Fred on location at People’s for a Portlandia shoot. Watching from across the street, noticing how young, skinny, and hip was their crew.

My brother helping us move in (along with Ben, parents, Russ, David, and others — thank you!) and my brother helping us move out again (along with Jayne and parents) — even painting. Downsizing when we moved in, and more when we moved out. Acquiring a piano and then finding a new home for it.

We were as happy in that place as we could’ve been, given the weather. There’s plenty to miss, most especially our friends.


I would’ve declared a goal of becoming a traveler at the beginning of the year, but we didn’t have much of a plan for it. That was the exact situation as the year before, and my travel goals didn’t pan out. I’d learned to wait to declare goals publicly until having at least some idea of how it could happen.

But it happened! We’d been gathering digital nomadism knowhow for a year and a half. Suddenly we also had the means, thanks to a generous family gift. Our lease was month to month. We could take our jobs with us. “Why not now!” we said, and took our modest first step in Denver. This was the Great Success of 2014.

I need to write more reflections on Denver, and I will. For now, a few highlights must suffice, which included: Lots of time with Brother Dan, and his domestic partner Matt, and Matt’s “girlfriend Vera”, who turned out to be nonfictional in the end. Reconnecting with Haley and Joe, meeting the most beautiful, delightful child (their Oliver), and befriending their wonderful community. A double date in Boulder with Keith and Alisha that came much too late — we would’ve spent a lot more time if we’d realized how much fun we’d have together. Our wonderful Airbnb place with our wonderful landlady Molly. Camping in Poudre Canyon and at Railroad Bridge. Salsa dancing, with our sizzling instructors Mercy and Julie, the regulars and our waitress Erika at ¿Qué Bueno?, and new friends Emily and Aaron. The Central Denver Public Library with its amazing 5th floor reading room. Friendsgiving. Lunch with philosopher-author Peter, and WordPress business veteran Alex — two people I greatly respect. The blessed sunshine, which was everything we Portlanders needed it to be.

Those two and a half months in Denver were I think the happiest I’ve had in my whole life. Catherine feels the same. We will be back in Denver, and for a longer time. It’s just a question of when.

Portland (and Southern California) for the Holidays

Since Thanksgiving, we’ve been back in Portland (well, Oregon City), staying with Catherine’s dad and stepmother Art and Elaine. This is still too current to look back on, so I’ll keep this brief. Four things stand out: First, the difficulty of Portland’s winter gloom is a very present and poignant fact of life for us here. Second, we escaped for a wonderful 10 days to Southern California for Catherine’s family Christmas, a cousin’s beautiful wedding, and visits with good friends. Third, we really love Christmas. Finally, of course it’s been really great to see our many friends and family.

Four Fictions

There was one goal I set for 2014, privately: to re-read four of my life-long favorite fictions. We had these four series’ displayed on a special shelf of honor in our Southeast Portland living room. I figured if they deserved that, they deserved my attention again. I would re-evaluate them with a 30-something’s perspective. I split this project into quarters of the year:

January through March was Harry Potter, which Lina and I had (can I say adorably?) read aloud to each other seven years ago, and I had loved. I totaled the sum of all seven books’ pages, divided by 90 days, and kept track with a bookmark each day of where I needed to be to stay on track — a habit I continued for the other series throughout the year. This worked: I finished a bit early. And I loved the books all over again. I don’t need to re-read HP for a while, but I expect to enjoy them again when I do, perhaps in another seven years.

April through June was for The Chronicles of Narnia, which I proudly read as a second grader (“above my reading level!”). I could barely recall them, and was curious to see how I would find the overt Christian allegory. I found it, well, beautiful. The culmination is unexpectedly artistic and mystical (far from dogmatic), and is now my favorite depiction of heaven and the Kingdom of God. C.S. Lewis is my kind of Christian. I highly recommend Narnia to anyone with an interest in Christianity.

July through September was for His Dark Materials, by Phillip Pullman. I devoured this trilogy in a fever in my twenties, and credited it with blowing open my notion of the possible conceptions of our relationship to God. I thought this would be an hilarious follow-up to C.S. Lewis (I still think it was). I knew I’d love re-reading them, but I was beginning to forget the details of the story, and was ready to remember. The biggest detail I forgot: How heartbreaking the ending for Will and for Lyra! This series is understandably controversial in some religious communities, but I can’t recommend it more highly, most especially to people who enjoy entertaining dangerous, empowering thoughts.

I saved The Lord of the Rings for last, because thanks to Peter Jackson’s film release schedule, I now associate them with the holidays. I was scheduled to begin The Fellowship of the Ring in October, and see Frodo off to the Grey Havens before January first. But I got ahead of my schedule with Narnia and Dark Materials, so I began this series in September, and finished before November. And, wow! These are so great. When I read them in high school, I was impressed, but often found them tedious. I credit the films for instilling in me a deep love for this story, and for preparing me to love the books. This time, I was blown away by the detail and intricacy. These may be my new favorite books, period.

I finished this goal two plus months ahead of schedule, demonstrating perhaps that the fun goals are the easy ones to hit. Left with extra time, I challenged myself to sneak in Kim Stanley Robinson’s Mars Trilogy by the end of the year. Not a favorite per se, but I had started in high school, enjoyed them, and never finished. On January 1st I had finished all but 200 of their two thousand and some odd pages.

Other Highlights

The bad:

  • Robin Williams’ suicide.
  • 2014 felt like a particularly difficult year for my culture at large, with #NotAllMen, #YesAllWomen, #GamerGate (hashtags and their sudden cultural relevance are annoying), trolling as sport, the tech industry’s struggle with sexism, Trayvon Martin, and Ferguson. This was a year of becoming aware of things being worse than they had seemed.


  • I wrapped up my involvement at church with The Saturday Service Service after we didn’t get much traction. It was good to put all the time and effort in over the previous year, and good to step away again after being so involved. It was a spiritual growth experience, all in all.
  • While we were in Denver, my grandmother transitioned into an adult foster home. I wish I could’ve around available to help, and support her and the family more. I’m glad Grandma seems so happy where she is now.

The good:

  • Rocket Lift, now going on 4 years old, broke even this year.
  • I became a WordPress core contributor, with credit for the 4.0 release cycle.
  • BeachPress 2.0 was awesome.
  • WordCamp Seattle
  • I started learning Spanish with DuoLingo.
  • I started writing (almost) daily.
  • Sharing DMB at the Gorge with not just brother, but with my parents and Catherine as well.

Looking Ahead

Most of what happened for me personally was good, and most of it didn’t seem possible a year ago. So, I’ve learned to set fewer goals, but to dream just as big and put more effort into making actual plans. One foot in front of the other. I’m thinking of my goals for 2015, which I’ll post in a few days, as seeds to plant rather than achievements to check off.

This post is part of the thread: Annual Goals and Review – an ongoing story on this site. View the thread timeline for more context on this post.