Programming Uncategorized WordPress

Profiling WordPress made easy with Varying Vagrant Vagrants

Varying Vagrant Vagrants provides a setup of WordPress that is ripe for you to start profiling the PHP WordPress and your themes and plugins runs. The combination of xdebug, Webgrind, and a simple chrome extension will have you looking at the PHP performance. Let’s take a look at what you’ll need to get going.

To start, you’ll want to clone the Varying Vagrant Vagrants (VVV) git repository if you don’t have it already. VVV comes with xdebug ready for you to turn on and Webgrind for you to view the xdebug output.

Once you have VVV installed, the next step is to enable the profiler. You have a couple of options for this. You can turn it on for all page views (which slows page views down considerably), or you can just enable it in “trigger” mode, when you pass a get/post parameter or have a specific cookie set. I like this option since it enables me to easily switch between profiling and not profiling. I also make use of the Xdebug Helper chrome plugin to turn the cookie on and off. It’s also enabled by default in VVV, so you don’t need to do any work. You do need to turn xdebug on, but that is as easy as connecting to your vagrant box and running [bash]xdebug_on[/bash].

Now that we are setup, we can turn on profiling in our browser.

In the browser bar, you’ll find a nice bug. If you click that, you’ll see a simple menu.

By default, disabled is selected. We want to select Profile.

Now that profile is selected, we will see a clock.

That’s all it takes to start generating the profiling information. You’ll need to do this for each site you want to be generating profiling data. You can also select disable at any time to turn off profiling. Once it’s on for one of our VVV sites, head over to webgrind at and you’ll be able to start seeing your data.

When you first load webgrind, it’s going to look kind of empty.

After you select a profile file (from the dropdown with “Auto (newest)” pre selected) and click “update”, you will see your profiling information.

And that is all it takes to get started with profiling on Varying Vagrant Vagrants with xdebug and webgrind. Happy Profiling.

About Aaron Programming Uncategorized

A Crazy Idea…

I just submitted a proposal to a WordCamp for a talk I’m calling “Aaron Struck by Lightning”. It is an experiment in challenging myself and in giving real time choice to the audience as to what they learn next. Here is the basic summary I submitted:

6 talks, all five minutes long. The first one is chosen by me ahead of time, but the next five are picked by the audience voting from a list. The topic options will include build tools, design philosophy, Accessibility, WordPress APIs, Open Source, International Politics, and more!

Will it get accepted? Time will tell. Will it work? I have no idea.

About Aaron Programming Uncategorized

Aaron’s Rules for Better Meetings

Meetings are Toxic.

One of the most shared links among tech teams. In general, developers realize that meetings are not the place to get work done. In order to make meeting suck less, I’ve come up with a few simple rules. I generally define a meeting as something on my schedule for me and at least two others. I don’t include one on ones or impromptu discussions in my meeting rules.

  1. Meetings have agendas. There should be a specific list of things that need to be talked about and that should be sent out ahead of time. People should have the opportunity to gather information before the meeting so they can be productive participants.
  2. Does this meeting even need to take place. This questions isn’t asked often enough. Is the meeting only serving one person and not bettering the team/organization? Maybe it needs to be retooled. Maybe you should be sending out email updates or posting more in a chat room
  3. Meeting start on time, no matter if everyone is there. I’ve started meetings where I am the only one in attendance. When people came in late, they jump in where the room is at, no matter if the item they most wanted to discuss has passed.
  4. Anyone can all the Tangent Police. Sometimes you get off topic. When that happens, someone in the room needs to recognize it and just say something. It’s better for everyone.
  5. GRIPI Check. If conflict is arising, I try to work through and find the root of the conflict. Is there a goal that everyone agrees upon already? Does everyone understand there role? Does everyone have all the information they need? Is there other information that could help solve the problem? Are we doing the right process? Is there a way we could be going for an answer that would be better than what we are doing? Is the problem actually Interpersonal (hint: it probably isn’t)?

Those are my go to rules for meetings. How do you run effective meetings?

EDIT: I’ve since added a sixth rule

Programming Uncategorized WordPress

Speaking at AccessU on Open Source and Accessibility

Next month I’ll be speaking at AccessU on Open Source Tools for Building Accessible Websites. I’m excited to share my love of two things: Open Source Software and Accessibility. Accessibility to me is a core subject area that all front end developers and designers need to be thinking about. Open Source Software powers the internet. On a daily basis, you are more likely to use an open tool then not and you might not even realize it. This seminar will be in two parts. The first will be looking at Open Source Software, what that term means and some of the tools you’ve most likely used that are open source. We’ll also look at how decisions (focused on accessibility) get made when building open source software and how and why you should be a part of them. The second half will look at how you can build an accessible website using open source software. The focus will be on WordPress and some of the specific challenges with it.

Many of the speakers are leaders in the Accessibility Community that I respect and learn from whenever I see them tweet, speak, or write. It’s an honor to be able to join them for this conference. Y’all should join us in Austin!

A bit more about the conference:

As Austin begins to warm toward summer, there’s no cooler place to be than with the knowledgeable, passionate speakers and instructors for Knowbility’s annual AccessU! Now in its second decade, John Slatin AccessU provides courses and workshops from the world’s best instructors in inclusive Web, document, and media design and development. Whether are a beginner or are looking to hone your existing accessibility skills, Austin is the place to be in May.

What: The 13th Annual John Slatin AccessU Training Conference
When: May 14 and 15 (conference) May 16 (optional post conference sessions)
Where: St Edward’s University, Austin, TX
Cost: $435 for the conference registration until April 25th
$325 for post-conference sessions until April 25th
Full schedule of classes is available on the Knowbility website.

The conference is produced by Knowbility and sponsored by Deque Systems, St Edward’s University, and the Texas Department of Assistive and Rehabilitative Services. The event is a joyful celebration of the empowering potential of digital technology. Y’all come!

Code Programming


If you haven’t noticed, I like punchcard graphs.  I like them so much, I have a script that to generate them.  I’ve now released this script for everyone to use. is simple to use and I hope you find it useful.  It accepts a stream of unix timestamps and creates a punchcard graph. It can very useful if you’re trying to figure out days and times of activity.

How Do I Install

The easiest way to install is with pip.  Just run

pip install

If you install it manually (by cloning the git repository and running python install), you’ll also need to install the dependency pygooglechart.

What options are available

The only option that is currently available is to change the filename. To do that, use the -f option like -f tweets.png

How do I generate a stream of timestamps

For WordPress Posts, I Butchered the WordPress importer plugin. To use this, clone that repo and run

php punchcard.php export_file_name.xml |

For Twitter, I created a similar simple script. I have the script setup for retweets, original tweets and all tweets. I just change the echo line at the end depending on which I want to output. To use this script, I run

php twitter.php archive.csv |

What should I do if I find bugs

Please create a github issue with any bugs you might find. Please make sure to include steps to reproduce including a relevant data source file.


This script is largely just an abstraction of Bash History Punchcard by Matt Behrens. Without his work, this wouldn’t exist.

Final Notes

If you use to create any interesting graphs, tweet @aaronjorbin, I’d love to see that it’s being used.

Programming Uncategorized

Library’s to play with

I’ve starred a bunch of libraries on Github lately and look forward to giving them a spin when I get a chance.  Anyone played with any of these yet?


Stately is a symbol font that makes is easy to create a map of the United States using only HTML and CSS. Each state can be styled independently with CSS for making simple visualizations. And since it’s a font, it scales bigger and smaller while staying sharp as a tack.


howler.js is an audio library for the modern web. It defaults to Web Audio API and falls back to HTML5 Audio.


An animated CSS3 loading spinner with VML fallback for IE.

  • No images, no external CSS
  • No dependencies
  • Highly configurable
  • Resolution independent
  • Uses VML as fallback in old IEs
  • Uses @keyframe animations, falling back to setTimeout()
  • Works in all major browsers, including IE6
  • Small footprint (~1.9K gzipped)
  • MIT License
Programming Uncategorized

epeli/underscore.string · GitHub

Javascript lacks complete string manipulation operations. This an attempt to fill that gap.

via underscore.string · GitHub.

One of the most useful libraries for me is Underscore String. It has a lot of functions that fill in missing pieces related to string manipulation. And it uses the easy peasy underscore syntax.

Programming Uncategorized

The Post-PSD Era – A Replacement for Mockups

First, I would go read these two articles. The first one, by Brad Frost, identifies many of the problems and traps of creating mockups with Photoshop.

The Post-PSD Era.

The second, by Dan Mall, points out where the root of this problem lies.

The Post-PSD Era – A problem of expectations

I’m going to agree with both gentleman’s thesis. Through out my time as a developer, mockups done in Photoshop have created more problems than they have solved. I’ve worked with talented designers who didn’t fully understand the web and convinced clients of designs that didn’t have much of chance to be easily build able. I’ve also worked on projects where myself and a designer went from initial sketch to working v1 to polished v2 that was being used by real customers. The second was much more fun and ended with more people happy.

In my eyes, The steps from idea to launch should be as few as possible. Once the basic idea is thought of, there should be a brainstorming session and then a whiteboard or paper wire frame should be created. From this, the most basic minimal version of the product/feature should be created using an existing style guide.

The style guide the most valuable tool for a front end developer. By deciding on the standards for how things should look, by picking our fonts, text sizes, colors, and main interactive elements ahead of time, we can more easily stay consistent inside our products and move quicker to getting actual user data to inform our designs. After all, Akin’s first law of spacecraft design is “Engineering is done with numbers. Analysis without numbers is only an opinion.” The style guide moves us to Design Engineering.

Programming Uncategorized

dcjq[16] – Tools for Automatting your front end development workflow

I reprised my talk from WordCamp Boston 2012 at the 17th DC jQuery Meetup. It wasn’t recorded, but you can check out:

You can also watch my previous presentation below.

Programming Uncategorized

Failing Gracefully | UX Magazine

In the process of Error -> Recognition -> Adjustment, we must do two things:

Provide helpful error responses throughout the application

Make errors seem less like failures on the user’s end and more like cues for adjustment.

via Failing Gracefully | UX Magazine.

All the great advice I ever read about dealing with user errors was best summed up in a philosophical statement by Matt Mullenweg when he said at a WordPress DC Meetup “The software is wrong, not the people.[1]”