My Workflow Tips and Tricks

Alfred Workflow: Boot up

I recently returned from a team meetup in Hawaii (you can read about the fun stuff here). The meetup had a strong focus on discussing and improving our efficiency as a team. Part of that involved sharing our individual workflows so we could learn from each other. While some of the tips that I shared are specific to the work that we do as a team, other parts might be helpful in general.


I rely heavily on an app called Alfred. If you haven’t used it before, I recommend giving it a look. On the surface, it looks like a simple Spotlight replacement. But when you get under the hood and start using Alfred’s features you’ll see that it blows Spotlight out of the water.

Shameless self promotion: I was recently interviewed on the Alfred Blog, which you can check out here.

Starting my day

I have a custom Alfred Workflow that I use to get my day started. I hit Opt + Space, and enter the work keyword into the prompt. This opens up all of the apps that I use for work, as well as the tabs that I use in Chrome to start my day.

For reference, the apps and sites that I open are:

I have a few variations for this one. For example, if I’m doing a theme review, I have an Alfred workflow for that. It will fire up my theme review Vagrant, open Sublime Text, and open up the front-end and back-end of the site in Chrome.


Color coded Gmail Labels

Once I’m booted up, I head over to the Gmail tab. At Automattic, we use P2s extensively for internal communication (well, actually, o2). I subscribe to the most important of these by email. I use Gmail filters and labels to keep my inbox organized. The filters break things down by category (i.e., Jetpack, Support Forums, GitHub) and then I use labels to color code them. That way I can get a good sense of what requires my attention with just a quick glance at my inbox.

I also have my inbox set to show unread messages at the top. This allows me to mark the non-important messages as read, and they will disappear from the top. If one of the emails requires a quick action, I try to do it right away. If I don’t need to complete the action right away, I use a hotkey to quickly enter it into Todoist.


Todoist Workflow

When I enter a task into Todoist using the quick add, I just send it to my inbox. Then, after getting caught up on my emails, I open up the Todoist app itself and organize my tasks using Projects and Labels. I keep projects top level (Personal, Work, Read, Write, etc.). I then use labels to break things down into specifics (Forums, P2, GitHub, etc).


After email, I head over to Slack, which we use for synchronous communication. I do not read scroll back in Slack when I logon for the day. I also mute most of the channels that I am in. The exceptions are my team channels, and other important company-wide channels. This allows me to avoid unnecessary distractions, but still receive notifications when someone mentions a keyword in a muted channel.

Alfred Workflows

Now that I’m all caught up on communication, I’m ready to start my day. Depending upon what I’m working on this work can vary quite a bit. But there are a few Alfred workflows that I use on a regular basis:

  • Alfred Gist: Easily create a Gist from the contents of your clipboard. This is handy when I’m writing a quick code snippet in Sublime Text for a user, and want to share it with them.
  • Caffeinate Control: This allows you to enable/disable your Mac’s sleep function. This comes in handy when I am regen’ing thumbs, or doing something that requires my monitor to remain awake.
  • WordPress developer reference: Search the .org documentation for functions, hooks, classes, etc. It also autocompletes, which is nice for when I can’t remember the exact name of a hook or function.

There are a handful of commands that I run on a regular basis to troubleshoot Jetpack connection issues. Instead of manually typing these commands in each time, I have workflows that allow me to automate the process.

For example, I often try to cURL a site’s xmlrpc.php file to see if it is accessible. Instead of typing the command each time, I just copy the URL to my clipboard, hit Opt + Space to bring up Alfred, and enter the curl keyword and Ctrl + V to paste the URL. Doing so will run the following command in Terminal (where {query} is the URL):

Command Line

iTerm2 and Oh my ZSH

Speaking of the command line, I use iTerm2 as a replacement for the native Terminal. And I use zsh instead of bash, with oh my zsh to manage my zsh config. (h/t @jeherve). Both are customizable and provide many helpful shortcuts right out of the box.


When I complete a task, I try to make a note of it into iDoneThis. I have an Alfred workflow that allows me to type idid followed by a description. I don’t use this as much as I should, but it is helpful to reflect upon what I’ve accomplished in a day/week.


Hemingway Editor App

When I am writing a post or replying to a non-native English speaking user I often run it through Hemingway. The editor looks for wordy sentences, adverbs, passive voice, and complicated words. It isn’t bullet proof, but it does catch quite a few common errors.

Screenshots / Sharing

I use Cloudup to share files. It lives in my menubar, and I can easily share files by dragging them onto the icon. When the upload completes, Cloudup copies the URL to my clipboard and it is ready to send. If I need to annotate screenshots before sending, I use Glui. Using Glui I can quickly mark up diagrams, add arrows, text, and more before sharing the image on Cloudup.


I’m constantly iterating on my workflow, so none of these techniques are written in stone. Do you have any workflow tips or tricks? If so, I’d love to hear!

Web Developers and the Impostor Syndrome

Last September, I had lunch with another WordPress Developer while at WCLA. During our discussion, we touched on an interesting subject. The Impostor Syndrome. I wasn’t aware of the actual term at the time, but the definition seems to fit our discussion.

The impostor syndrome, sometimes called impostor phenomenon or fraud syndrome, is a psychological phenomenon in which people are unable to internalize their accomplishments. Despite external evidence of their competence, those with the syndrome remain convinced that they are frauds and do not deserve the success they have achieved. Proof of success is dismissed as luck, timing, or as a result of deceiving others into thinking they are more intelligent and competent than they believe themselves to be.

How does this apply to web developers? What the hell am I talking about?

Let me explain…

During our talk we both acknowledged that when we first started working with other developers, we were apprehensive about it. Not because we were against collaboration. Not because we were against working with other people. But simply because it was very intimidating.

I know for myself, it wasn’t necessarily a lack of confidence. I have always taken pride in my work, and I am confident in my craft. I know that I know my stuff! Yet, at the same time, there is a feeling of vulnerability when you expose the code behind your work to other people.

The “I Can Do It Myself” Stage

Prior to working with other developers, I tried to do everything myself. I worked at small agencies and was usually the only full-time developer on staff. This forced me to learn a lot, and to learn it quickly. But the projects continued to get more and more complex. And the workload kept increasing. I had to work with other people. I was terrified. What if they find errors in my code? What if I’ve been doing something incorrectly? What if I’m a fraud?!

At this point in time, I had plenty of accomplishments under my belt. I had an extensive portfolio, a long list of happy clients, and plenty of my own personal projects. But for some reason, that fear was still there.

Getting over the fear

Eventually, I had a project come up in my freelance world that I knew I couldn’t handle myself. The agency I was working with at the time had another developer that I was going to work with. Logically, I knew it would be okay. But, panic still set in. And I had to face it straight on. And guess what. The project went great.

Come to find out, this developer was far more advanced with JavaScript than myself. But I wasn’t exposed as a fraud or banished from the web development community. Instead, he offered some advice about parts of my code – which lead me to become a better developer. And on top of that, I was able to give him some advice about working WordPress.

Who would have thought… I was able to teach him something. To this day we still exchange emails and offer each other advice. When I have a JavaScript question he’s usually the first guy I ask. And when he has a WordPress question, he doesn’t hesitate to ask me for help.

Looking Back

Now, a couple of years later, I look at that first project as a significant turning point in my career. That’s when I started to collaborate. It wasn’t until I started working with other developers that I really began to pinpoint my strengths and weaknesses. And I have found out that it’s extremely valuable to know both of those.

I will admit that I still get jitters every once in a while when I publicly share my code. But it’s usually followed by positive feedback. On top of the thank you’s, I’ve also received valuable feedback that has helped me learn new things.

So… What’s my point?

I am a firm believer that everyone can learn something from everyone. And everyone can teach something to everyone. I’ve heard other people talk about the Impostor Syndrome (or similar feelings), so it doesn’t only apply to developers. And I don’t think that it is uncommon.

I wanted to share my story, and urge other people to take a step out of their comfort zone. Whether you are a seasoned developer, or you’re just getting the hang of HTML and CSS, you can learn by sharing and collaborating. So put yourself out there!

Search the WordPress Codex from Alfred

Search WordPress Codex from Alfred

Awhile back, Brian Krogsgard mentioned the productivity app for OS X called Alfred. Since then, I’ve found myself using it on a daily basis. A quick Google search will return a lot of great articles about Alfred, so I won’t go into depth here. But I did want to share one custom search that I find myself using fairly regularly.

Create a Custom Search in Alfred for the WordPress Codex

Throughout my day-to-day work I often reference the WordPress Codex. No matter how much I learn, I still find myself looking up function references. One of the great things about Alfred is that it allows you to create custom searches. That means that you can create a custom search to look up functions in the WordPress Codex. Just enter the following:

Alternatively, you can create it manually by following these steps:

  1. Open Preferences > Features > Web Search in Alfred.
  2. Click Add Custom Search in the bottom right.
  3. For Search URL enter:{query}
  4. For Title enter: WordPress Functions (or whatever name you’d like).
  5. For Keyword enter: wp (or whatever shortcut you would like).
  6. You can drag an icon to display with the search. I used the official WordPress logo.
  7. Click Save
  8. Call Alfred and try a search using your Keyword followed by a WordPress function name.

Again, this is only one of many things that you can do with Alfred. It’s a great app, and I highly recommend it. What do you think?

How to include hashtags with Facebook’s share function

A little while back I ran into a problem when trying to allow users to share a page on Facebook. I wanted to include hashtags with Facebook’s share feature in the URL. The page loaded content via AJAX, and appended a fragment identifier (#) and a short string to the URL. When user’s tried to share this page, the hashtag and the rest of the string was being stripped. A quick Google search pointed me to a post on StackOverflow that revealed that I wasn’t the only one who couldn’t figure this out.

After pulling out my hair, the answer came to me. Encode the hashtag – replace # with %23 in the URL. For example, replace:


This may seem simple – and it is – but hopefully it can save you from some unnecessary frustration.