During my career I’ve authored a bunch of different WordPress plugins, and I always told myself that I’d do something special if one of them reached the 100,000 install mark. Much to my delight, Better Font Awesome (my plugin that let’s you insert all sorts of really great icons ) recently surpassed 100,000 active installs, and so I’m writing this blog post as a sort of celebratory retrospective.
Every good retrospective starts with a look-back. . .
I remember the first website I built. It sucked. I don’t even think it qualified as a full website. It was a snazzy Flash (oh yeah) header with some animated menu items and the logo for my university’s juggling club (of which I was the founder and aspiring web master). The header was as far as I ever got with that one.
I remember the first CMS I used. It was Joomla . My girlfriend at the time (now wife!) and I were living in Guatemala, volunteering at this awesome non-profit that needed a website. Somehow I determined that Joomla was the best choice. I’ve since learned that Joomla is never the right choice. Nuff said.
I remember the first WordPress site I built. This time my girlfriend/wife and I were living in England, volunteering at another awesome non-profit (we really like working for free apparently). With my demonstrated ability to build half-baked Flash headers and cobble together Joomla sites that were just fragile enough to keep me awake at night, I was given free reign to rebuild the organization’s website. The one requirement was that I had to stick with their existing platform: WordPress.
And so I learned. I Stack-Overflow-ed. I copy-pasted. I made all the most gruesome, ill-advised WordPress mistakes you can make (directly edit core files? sure, why not!). I even designed a pretty sweet logo. When all was said and done, we actually had a really nice website, plus I felt like I’d started to carve out a niche skillset and could call myself a “WordPress developer” without too much imposter syndrome. Life was good.
So began many years of happy craftsmanship on the interwebs. . .
Just! Build! Websites!
I used to listen the Shop Talk Show podcast a lot. It’s one of my favorite podcasts of all time, definitely as far as web stuff goes. The hosts, Chris Coyier and Dave Rupert, have this sound bite they often play when folks ask how they can level up their skillset or master a new framework or charge more for their work:
Just! Build! Websites! It’s such a good mantra. Just the right amount of pithy, and 100% true.
The reason I bring it up is because this is exactly what I did for the next several years after I built my first WordPress site. I freelanced. I worked at an agency. I freelanced some more. In 2015, I updated my LinkedIn profile with the following:
Served as lead developer/designer on over 100 WordPress sites.
100 sites. This wasn’t some resumé-padding B.S., I actually worked on 100+ sites between 2012 and 2015. Now I’m sure there are tons of prolific folks out there to whom this might not seem like that much, but it sure did to me. It still does.
Anyhow, a few cool things happened to me during the time I was building a crap-ton of websites for different clients:
- I got really fast
- I learned the crap out of CSS (and the horror of what it takes to support IE8 )
. . . and last but not least. . .
- I started to identify functionality/tooling gaps that needed filling
#3 is the one that’s relevant to the topic of this post. Each of my 17 published WordPress plugins started with noticing a problem that seemed to be missing a solution, or could at least use a better one. With Better Font Awesome, I remember a day when I was going through all our client sites to update their version of Font Awesome, and thinking to myself: “Gawd dang this sux! This is the epitome of not following the DRY principle. There has to be a better way.”1
And so, I decided to build a library that would automatically pull in the latest version of Font Awesome from CDN, so that we’d never again have to manually update. I was stoked that I’d solved a problem for our agency, and even more stoked that I got to share it with the world on the public plugin directory (this is one of my favorite parts of the WordPress ecosystem). That said, I had no idea just how common a problem this was.
Fast forward 4 years from that very first commit, and voilà – apparently 100,000+ websites had the same problem. It makes me smile to think that my code is out there sullying so much of the internet .
I still do my best to provide quality support for my plugins, although it’s tough these days with. . . you know. . . life. I do intend to release a new version of Better Font Awesome soon2, which will integrate the latest and greatest Font Awesome icons and finally empower WordPress users around the world to insert those primo chess icons we’ve all been yearning for.
npm install better-font-awesome-ing in the near future.
I love building stuff – especially stuff that other people like to use. They say imitation is the highest form of flattery, but I think when people use the things you build that’s pretty darn good too.
I also love finding out about cool stuff that other people are building. I gave a WordCamp talk that focused in part on the importance of continuously building out one’s personal toolkit , and one of the best things about my job is that I’m forced to discover new tools and techniques on a daily basis3.
On that note, I’d love to hear about what you’re building these days. Working on anything fun? Found a common problem that needs a better solution4? Loving some library/tool that you think the rest of the world is crazy not to know about? Drop a line – I’d love to know more.
In the meantime, thanks for following along. Here’s to many more years of making things, and many more installs.
- Oooooo, this totally should’ve been my tagline for the plugin: the better way to do Font Awesome
- Alas, Font Awesome 5 was recently released with a totally different API, and so I’m now in the process of refactoring the plugin to support it. But once that’s done, I’ll have solved the problem truly once and for all. . . right?
- Today, for example, I learned how to incorporate auto-binding arrow function methods in ES6 classes
- GO FOR IT!