Goodbye Jetpack

On moving away from Jetpack to


Last year I wanted to play around more with SSL certs and dedicated hosting. It was fun, but as I’ve become busier and invested more time into building stuff I don’t have the time to worry about the dozens of plugins I need to install to make my site go (Jetpack is one, natch) or keeping my server updated. I do enough of that in my day-to-day work that my personal site shouldn’t be another chore.

Money is another factor. I did some math and it wasn’t making sense to pay so much every year for my site. I was on a $600/year Media Temple plan + $175 DigiCert SSL + VaultPress + random other costs associated with running my own setup. With I’m now paying $299/year for everything. Hosting, a custom design upgrade, a custom domain upgrade, no site ads, a premium theme, excellent support, the works.

This doesn’t mean that I won’t be neck deep in server admin stuff. I do a lot of that for Professional Themes—I quietly have become a larger part of the company, which I’ll write about more later. It just means that instead of wasting time, I’ll actually be dogfooding again. Although I no longer work for Automattic, it’s imperative that I stay up to date with how users are using WordPress. The themes that Professional Themes launches go to .com first, and getting better insight into how people are using will only help us. I spend so much time on localhost that I forget 50% of the WordPress world is experiencing another kind of WordPress (.com) that I must stay up-to-date on.

So it’s goodbye Jetpack for now. I’ll surely have to deal with it via localhost as I’m doing dev work, but the days of me needing to manage it on my own site are gone, as well as the days of spending hours searching for and installing new plugins on my site when that time would be better spent on building things. feels interesting now. This is the first post I’ve ever written directly on and directly inside of the new post screen. It feels familiar but strange, but I feel like I should get used to it. My hunch is that /wp-admin/’s days are very numbered on

Underscores Gets Automated Testing

Just over a year ago Koop wrote about a new frontier for WordPress Core development. Since then I’ve been paying much more attention to the tools that both plugin developers and Core developers use to make sure that the code they’re writing isn’t breaking WordPress.

I began my WordPress career making themes and will always consider myself a theme developer first. Themes aren’t just about wrangling stylesheets; they are about coming up with amazing and beautiful solutions for website makers and web publishers that involve primarily PHP, JavaScript, HTML, and CSS. Themers are both designers and developers. We make good looking web templates but we’re also tasked with coming up with “plugin territory” functionality when Core lacks what we need or a plugin doesn’t exist for what we’re after.

In creating Subtitles I wanted to make sure that every single commit I made to the codebase before and after release didn’t break anything. Travis CI is a beautiful tool for doing just that, but my hunch is that among theme developers it’s mostly associated with plugin unit testing and deep Core development. Themes also need automated testing, especially those that are subject to public contributions like Underscores, and now it has it.

The V1 of automated testing for Underscores only checks for two things, PHP syntax errors and checks against WordPress Coding Standards. Even with that we needed to add in a few exclusions because the coding standards were returning poor XSS-related results. Still, having basic checks in place now ensures that all commits made to _s by its lead contributors will be tested for code regressions and all pull requests from outside contributors will be tested for errors.

Moving forward the goal is that enough automated checks will be put in place that any themer in the world will be able to build a theme using _s as a starting point and be sure that it’s been rigorously tested and will be ready for the likes of any marketplace and customer base.

Ideally, the teams from, Creative Market,, and ThemeForest could have a pow wow and talk about the errors that plague their themes most. Then we could all come up with some sensible automated rules for theme checking, add those into a scan set, and use them for our public GitHub repos and other publicly distributed themes. Buggy code isn’t unique to any one community of developers so the more we can do to help each other, the better.

If you have ideas about which kinds of automated code-level scans we should be checking for in Underscores and themes in general, add your input into the discussion. One-liner stuff like PHP syntax errors is great. So, too, are things like running the theme through VIP checks with every commit, which will come sooner than later.

Any check is a good check. Now that Underscores has basic build testing in place, look out for many more of them to be put in place in the coming months. This is exciting.

Introducing: The Subtitles Plugin

One of my greatest frustrations with WordPress is its lack of intuitive subtitle functionality. As both a WordPress theme maker and a great fan of good writing, I’ve lately been struck by how much I appreciate landing on a story and receiving better context around what I’m about to read. Where titles tell me what I’ve found, subtitles often tell me why I should care. A published post titled “Life in Hanoi” might give you a good idea about what I’ve written, but an immediately following “On why I’ll stay forever…” will pull you in, engage you, and prime you for what’s ahead.

Subtitles in Action

Professional Themes, a relatively new company that’s singularly focused on helping businesses create beautiful websites with WordPress, recently asked me to help with the building of Creative Portfolio, a new premium portfolio-styled theme for creative professionals. It has it all: a stunning home page template, featured content and Jetpack portfolio custom post type support, Post Format support, and brilliant looking post subtitles (sign up to receive a launch announcement). The subtitles were a nonnegotiable design element of the theme, and Professional Themes felt that there were no intuitive or easy ways to add them into posts out of the box. I agreed.

In an age where attention spans are low and competition for them is high, Subtitles aims to provide creative professionals with an even sharper tool for crafting online stories. Post excerpts as faux-subtitles won’t do. Those belong in search results, archived views, truncated feeds, or other locations where post summaries shine. And using them for literal subtitles is confusing from both a development standpoint and also a usability standpoint. I want my subtitles to be called subtitles, and I want them to go where I think they belong, just after a title.

This line of thinking extends to both the front end and back end. Within the WordPress Dashboard on a New Post page I want subtitles to visually go where they belong, not in an obscure meta box that feels like it’s in the wrong place. They deserve placement under the post title in a way that feels native to WordPress, with prompt text that says Enter subtitle here. Clear, simple instructions for users and nothing else to do. No theme tweaks. No custom template tags. No manually entering in meta via custom fields. No coding. Just writing.

The Subtitles Prompt

By default Subtitles is designed to show in most views: singular, post archives, search results, and the like. All of this is completely customizable for developers. Want to add subtitles into any custom post type? Done. Want to turn them off in pages or search results? Done. Want to filter the output of all subtitles on your site? No problem. Want to modify the markup output of subtitles or reposition them entirely via custom template tags? Or how about showing them everywhere on your site, like in your widgets?

You get the idea.

This is a plugin that does one thing and one thing only. It should just work for users, but it’s also completely within your control as a theme or plugin developer. It’s well-documented, follows sensible coding practices, takes security of data input and output seriously, and aims to push online publishing forward by giving writers more power over their words.

Head over to the plugin repository (download) or GitHub (download) to grab your copy of Subtitles today. If you like it, thank me with coffee. If you find it buggy, tell me on GitHub. And if you have a cool example of how you’re using Subtitles on your website, let me know on Twitter.