Latest blog posts

Today is my last day at 10up

Just over two years ago, I joined 10up as a Senior Web Engineer. I was looking for an opportunity to stretch my skills on bigger clients with a larger team, and I’m extremely proud of what I’ve accomplished over the last 24 months. I’ve moved around a few different positions in the company, and been afforded the chance to travel to places like Boulder, San Diego, Atlanta, and Manhattan, all while working with a tremendously-talented team of engineers.

For all these reasons and more, it saddens me to announce that today is my last day with 10up. Beginning Monday, I’ll be joining the team at a young company, Growella, as the Director of Technology. While it’s a big change for me, Growella also represents a tremendous opportunity for me to build a company from the ground up, developing not only software but a team of talented engineers.

Working with profiles for new sites in WordPress Multisite

I wanted to take a quick moment to share a pattern I stumbled upon last week while building something for a client: this particular client runs a large, multisite WordPress network and often needs to be able to provision new sites quickly. In this case, we recently built an new theme designed to handle press sites for live events (photos, transcripts, live streams, etc.), and while I could automate a lot of the setup process (there's literally a one-click “set all of the defaults for me” button on the dashboard), provisioning the new site still means creating the site as a Network Admin, assigning the theme, and clicking that button.

It's good, but we can do better.

Steal this Idea: “Be Your Own Barista” Bars

Last week, I went to New York City for my very first time. The city was amazing: iconic landmarks, outstanding food, and a mix of people from all walks of life. I don’t think I could see myself living in New York, but I’d happily go for a vacation at the drop of a hat.

One thing that struck me, however, was the lack of great coffee. Perhaps it was just my neighborhood (Tribeca), but even great shops like La Colombe Coffee offered an espresso bar or drip coffee. No pour-overs, no French Press, nor Chemex; my choices were coffee-plus-something or black coffee that’s been sitting in an airpot. It wasn’t until a colleague and I wandered into Everyman Espresso that I was actually able to get a Chemex, and it blew every other coffee I had that week out of the water.

Share an Internet Connection with a Raspberry Pi Zero over USB

A few weeks ago, my friend and I were wandering through Micro Center when we found a stock of Raspberry Pi Zeros, the $5 computer that’s been difficult to acquire but has sparked a “no, seriously, how can I justify not buying a $5 computer?!” chorus of geeks across the globe.

Since picking up the Pi, it’s…well, sat on my desk. I’ve been looking for a fun project (and the time in which to do it), and finally decided to try the Raspberry Pi Zero out as an  OpenVPN server, as it turns out my NETGEAR router doesn’t support the necessary protocols for connecting from my iPhone. I even found this handy post detailing how to go about getting OpenVPN working, which is great.

Automatically Set WordPress Thumbnail Sizes When Switching Themes

Right now, one of my main projects at work is a totally new theme for the official news outlet for a major corporation. Along with a million other changes, one thing that needs to happen ASAP after switching to the new theme is that the image thumbnail sizes – controlled through Settings › Media in wp-admin – need to be changed.

Of course, being the lazy, automation-obsessed developer that I am, I wanted to find a way to automatically set these thumbnail sizes the instant we changed themes. Fortunately, where there’s a hook, there’s a way to make this happen automatically.

Cropping and Resizing Animated Gifs with Gifsicle

I recently had an interesting request on a client project: how can we resize animated gifs without losing the animation in the thumbnails? WordPress lets you upload animated gifs, but as soon as it resizes them the thumbnails are decidedly less animated. As a purveyor of fine, animated gifs, I can tell you that an animated gif with no animation is no gif worth having!

Fortunately, there’s a free, open-source library called Gifsicle designed to manipulate animated gifs. The fun part is using Gifsicle to resize your gifs for you, automatically.

How did I not know about get_post_types_by_support()?

Every once in a while (well, more often then I’d care to admit, actually), WordPress core surprises me with a function that I had no idea existed. They often come in the form of utility functions, things written when developers decide “oh no, I have to write this piece of logic again?!”. Heck, there have even been talks on these hidden little bits of code that make the world a brighter place.

Today, that function is get_post_types_by_support().

Preparing for your Annual Review

The annual review can be a sink-or-swim moment for many employees, but I’ve seen far too many people – myself included – let a good opportunity to talk about growth and trajectory pass them by when review time finally comes. The review can and should be a time to reflect on your successes, reinforce learning from mistakes, and set goals for your future at the company.

Review: Building Exceptional Sites with WordPress & Thesis

While I was in St. Louis for php[tek], php[architect] announced the release of their latest book, Building Exceptional Sites with WordPress and Thesis by Peter MacIntyre. php[architect]’s Editor-in-Chief, Oscar Merida, asked if I’d be willing to read through the new book and offer my thoughts, and I quickly accepted; not only have I been looking forward to meeting Peter in-person (he’s one of the organizers of Northeast PHP, where I’ll be speaking in early August), but the book’s forward was written by my close friend and mentor, Eric Mann.