WordPress Plugin: Easy Graphs

Everyone likes data visualizations so I wrote a plugin that will make the quick and secure creation of Pie Charts, Bar Charts and Line Charts easy. The answer is: Easy Graphs.

Easy graphs is very simple to use. It’s a shortcode – [easy_graphs]

Not just like that. The shortcode also requires one parameter “data”. This parameter is a comma separated list of number values “1,2,3,4,5,6,7”.

You can also add a “type” parameter. The “type” can be “line”, “bar” or “pie”. “bar” is the default.

For a Bar graph, you can optionally pass additional parameters: width, height, and color.

Example: [easy_graphs height="200" type="bar" data="30,70,65"]
[easy_graphs height=”200″ type=”bar” data=”30,70,65″]

By default, width and height are populated from your media embed sizes that are set in your Settings > Media menu inside WordPress. Color should be a hex color code.

For a line graph, the options are similar: color1, color2, height and width.

If you will: [easy_graphs height="200" type="line" data="200,150,175,260"]
[easy_graphs height=”200″ type=”line” data=”200,150,175,260″]

In this case, color1 is the “fill” color and color2 is the line color. Both should be hex.

For Pie charts, there are some additional limitations but fewer parameters: color1, color2 and diameter.

Try this: [easy_graphs diameter="150" data="40,60" type="pie"]
[easy_graphs diameter=”350″ data=”40,60″ type=”pie”]

Diameter should be an integer represented in pixels. Color1 and color2 are the fill colors of the pie slices. The limitation is the pie chart, at this time, can only take 2 values. I’ll work on that.

On the roadmap are other things. Make the pie chart take more values than just 2. Maybe include other graph types. Labels so the data can be more easily understood.

What would you add to this?

Download Easy Graphs

Eliminate Unused WordPress Plugins

Consider this post a public service announcement.

It’s a common misconception that if a plugin is deactivated in WordPress, that you are immune from performance or security issues.

On it’s face, this is not true, and you are risking the internet with this mentality!

Take last year’s Timthumb debacle, for instance. Many themes include Timthumb for dynamic resizing of images. Sometimes plugins do. When those themes or plugins are not activated, you are correct in assuming WordPress is not loading them. What you are failing to see is that their existence on the filesystem provides a vector of attack for someone wanting to exploit a system-level exploit.

Not to say Timthumb is insecure. Old versions are. I still don’t like it for other reasons, like performance. Simply using it as an example.

But if you decide to not use a plugin or a theme, delete the damn thing so it’s presence doesn’t even exist. In the case of Timthumb, the security flaw wasn’t a WordPress exploit. It was a “PHP directly interacting with the system” exploit and it would be there anywhere else regardless of CMS. It could exist on a static site.

And it’s not just your site at risk. Fuck your site. What if that flaw in whatever flawed code existed woke up a botnet? Then everyone is at risk. I’m at risk. You and your silly site are at risk. Joe the plumber’s site is at risk. Thoretically.

So be responsible. Delete unused code from your site. Remove themes you don’t use. Delete plugins you don’t use.

And when I say delete, I mean, permanently delete. Don’t just deactivate.

The Internet thanks you.

Update: This is not a verdict on any plugin or theme. To my knowledge, most are perfectly fine. Just clarifying that this is a “just in case” precaution.

10 Things You Need to Know About WordPress 3.4

WordPress 3.4 is around the corner. It’s currently beta4 which means a Release Candidate or three will be needed before it drops officially. If you want to test what’s out there now, the way to do that is through SVN. As usual, however, pre-release WordPress is not supported. As usual, however, I have been running trunk throughout the entire development cycle without any problems.

Before I get into the guts of WordPress 3.4, I want to point you to a resource which highlights some of the thinking that is going into the development, now and in the future, of how WordPress is built. Andrew Nacin sent an email to the “hackers” mailing list discussing object-oriented development that informs the thinking of the core developers now that WordPress supports PHP 5.2 and true object-oriented programming.

While it may be over the head of non-developer types, the gist is that now that we (used loosely) can write code smarter, we’re working our way in that direction. Some of the code in WordPress has existed for “generations” of versions and is bulky and inefficient. With new tools at our fingertips, we can begin to approach the idea of refactoring some of this code in better ways. Backwards compatibility is always retained, however, in 99 out of 100 times. WE ARE NOT DRUPAL!

Without further adieu, however, let’s get into what you can expect in the new version of WordPress.

Embed Tweets with oEmbed

Since version 2.9, WordPress has supported a technology called oEmbed that, simply put, has allowed the inclusion of rich media in content in a very simple way. Simply paste a YouTube link on a new line, and WordPress turns it into a properly sized video. No embed code needed. Same for Vimeo, Flickr, Scribd and more. The entire list can be found on the Codex. Now, however, Twitter is supported. Simply place the URL of a tweet on it’s own line and… bam, you have this:

Query Efficiency Improvements

The common bottleneck for all WordPress users are database queries and data “munging”… that is, what WordPress does with data when it’s returned from the database. The query that brings in all the necessary content necessary to render a page used to look like this:

SELECT * FROM wp_posts WHERE...

This has been how the query has worked for years. Really since the beginning of WordPress. And while, in theory that works (and it does, again it has for years), the core reality of this approach is that all the data in the posts table matching the criteria in the WHERE clause is more data than is needed, thus causing potential performance problems.

The new approach is simple and elegant. The first database query simply fetches a list of post IDs that fit the criteria provided in the WHERE clause.


This approach means the amount of data in memory and floating around WordPress is concise and compact. PHP doesn’t have to work harder to traverse arrays or objects… it is simply a smaller list of data.

But what about the other data? We need the other data! Yes, in fact we do. But since WordPress has an object cache, much of this data is in the object cache. We don’t need to retrieve it from the database.

The second step is to look to the object cache for posts with IDs matching any of the IDs in the first dataset. Anything we can’t find is followed with a second query to get all the information matching the non-matched IDs using MySQL’s IN() function:

SELECT * FROM wp_posts WHERE ID IN(10, 34, 78);

By changing how SQL and object caching is used, WordPress 3.4 finds new efficiencies. In the original ticket, developers were observing 2-3x speed performance improvements. I’ll drink to that.

Theme Customizer

Non-technical WordPress users will love the new Theme Customizer. Otto has a great write-up on this new feature. His video is above. The key takeaway from this new feature is that is possible now to customize a great number of things in a theme  from right within WordPress. On the fly. with a live preview.

Change your title, tagline, background color, image and more with a click of a mouse. I can see this being used to create child themes in the future, but for now, it manages settings that are already in WordPress (and accessible in other areas of the WordPress Admin) on the fly. The best way to really appreciate this feature is via Otto’s video above. Related: The best way to leverage this as theme developers is outlined in great detail in his post…

Bundled ‘Touch’ Support

We live in a touchy-feeley world. And by that, I mean mobile. Specifically iOS and Android. In WordPress 3.3, we saw adaptive design come to portions of WordPress. Adaptive design, for the uninitiated, is a technology that elegantly resizes a website to adapt to the the screen it is rendered on. It is a way for developers to create a single experience that works on desktop/laptop browsers as well as mobile interfaces with arbitrary resolutions.

As mobile continues to lead the charge in today’s web, WordPress 3.4 has bundled the jQuery UI Touch Punch library that will give front-end developers more tools to work with in making a website mobile-friendly. Simply include the library via wp_enqueue_script() and now your element has the .draggable() method available. This method enables “drag and drop” support that was previously unavailable and the one major caveat is that it does not support Windows 7/7.5 phones due to limitations in the IE9 browser.

class My_Awesome_Plugin {
    public function __construct()
    public function hooks()
        add_action( 'wp_head', array( $this, 'js' ) );
    public function js()
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'jquery-ui' );
        wp_enqueue_script( 'jquery-touch-punch' );
$my_awesome_plugin = new My_Awesome_Plugin;

HTML in Captions

Red Sox
Photo by Kyle McCluer and used under Creative Commons. Some Rights Reserved.

I’m trying to rotate between developer tools and user tools in this article, so at this time, I’d like to point out a simple yet important frustration in previous versions of WordPress. When you upload an image and use the media uploader to then insert an image, you have the option of writing a caption. Sadly, it was impossible to include HTML in previous WordPress versions.

Often times, linking the source of a photo is welcome and, possibly depending on the usage restrictions on a photo, required. Before, the only way to do that was to set a link in the media uploader and then the photo would be linked. Now, in WordPress 3.4, you can include basic HTML in your captions as I have done above.

XML-RPC Improvements

XML-RPC. The thing that allows the WordPress apps for Android, BlackBerry and iOS to function. The thing that allows offline editors to function by remotely communicating with WordPress through a public-facing API.

XML-RPC is a venerable technology that is based mainly on the Metaweblog API invented a decade ago. WordPress has supported this iteration of XML-RPC as well as the Movable Type XML-RPC and Blogger XML-RPC APIs for a long, long time. However, WordPress has also extended the Metaweblog API and added it’s own methods along the way.

No more. Instead of band-aiding a solution on top of a limited set of methods intended for blogging only, WordPress 3.4 includes a brand new WordPress XML-RPC API designed to support all the rich features that have evolved since WordPress started focusing on CMS-style features. It incorporates all the methods introduced before as extensions to Metaweblog such as wp.getOptions, wp.getMediaItem, etc and introduces new ones such as wp.getPostTypes and wp.getTaxonomies to name just a few.

It’s important to note that only WordPress products are likely to ship with support for this new API at first, but old capabilities will still exist and function, as backwards compatibility is ensured. As API clients add support for WordPress’ new capabilities, we will see more common usage.

Internationalization (i18n) Improvements

For international WordPress users, WordPress 3.4 continues the tradition of enhancing your experience. As we in the community have stated many times, i18n is incredibly important to WordPress growth and development. In discussing this article with someone inside of the WordPress core community, I am told 2 out of every 3 WordPress users are non-American. Additionally, I am told that 40% of WordPress installations are non-english.

That’s Huge!

The running list of i18n changes in WordPress 3.4 is here. Some notable changes include:

  • Comma translation. While most languages use a comma as a separater (or delimiter), some do not. This enhancement is useful for languages like Chinese and Arabic that don’t use a comma.
  • Single-Double quote translation. It’s odd to think, but some languages like Hebrew, actually have distinct meanings for jots that are punctuation marks in an English world.
  • Default Timezones. It’s possible now to override the timezone WordPress uses in a translation. This, as you can imagine, is important when a language is largely spoken in one region in a single timezone.

Page Template Handling

For theme developers looking to put more organization around their theme file structure, a new change has gone in that has both an obvious, front-facing benefit as well as a background benefit. Now, you can place any page template inside a subdirectory of a theme. So you can now have a /pages/ subdirectory and segregate all of your extraneous one-off or multi-use page templates to that folder (or any folder). WordPress will identify all page templates in the theme root or in a subdirectory of a theme root and make them available for pages to use.

The background benefit of this comes in a new WP_Theme API that is lighter weight, more efficient and handles all the work for you. It’s important to note that most developers will never need to use this API and it is largely considered an “internals” thing.

In relation to the i18n improvements discussed earlier, the headers in these page templates are also now translatable. Simply include a Text Domain: and Domain Path: header in your style.css where the textdomain is the defined textdomain for translations (i.e. twentyeleven) and the Domain Path is the path relative to the stylesheet directory (i.e. the proper place the theme is regardless of if it’s a parent theme or a child theme) where the POT file is (/langs). I don’t want to get too deep into this as Andrew Nacin, the architect of this feature, plans to put out a field guide going into detail. Stay tuned to that.

Custom Header API

For a few versions now, WordPress has supported two functions add_custom_header_image() and add_custom_background(). These two functions have added new menus for designating header and background images to the Appearances menu.

WordPress 3.4 introduces a new API for dealing with custom headers and backgrounds and introduces new flexibility in terms of image sizes, etc. The two functions above have been deprecated (which means they’ll work for awhile but will ultimately go away, so use the new techniques) and replaced with new theme support. If you recall from previous version, we use the add_theme_support() function to, well, add support for a feature in a theme. To integrate the new stuff, include these lines in your theme functions.php:

add_theme_support( 'custom-header' );
add_theme_support( 'custom-background' );

Both function calls can take a second argument which must be an array of presets, but it’s entirely optional. To omit the second argument renders behavior as we’ve known it for some time. To include it allows theme developers to designate designate parameters for both elements, that can then be customized by the end user.

For custom headers, you may include defaults along these lines (gregariously stolen from the Codex):

$defaults = array(
    'default-image'          => '',
    'random-default'         => false,
    'width'                  => 0,
    'height'                 => 0,
    'flex-height'            => false,
    'flex-width'             => false,
    'default-text-color'     => '',
    'header-text'            => true,
    'uploads'                => true,
    'wp-head-callback'       => '',
    'admin-head-callback'    => '',
    'admin-preview-callback' => '',
add_theme_support( 'custom-header', $defaults );

Likewise, for custom background defaults you might have this:

$defaults = array(
    'default-color'          => '',
    'default-image'          => '',
    'wp-head-callback'       => '_custom_background_cb',
    'admin-head-callback'    => '',
    'admin-preview-callback' => ''
add_theme_support( 'custom-background', $defaults );


Did you know?

  • PHP end of file closing PHP tags are now removed. Those are these – ?> Why is this important? Including the closing tag means that if there is any white space at the end of a file, PHP is likely to break. Omission means that PHP assumes a close tag at the end of the file and whitespace can’t corrupt. Personally I’ve argued for this in the past. The main opponent must have been in a coma when this was slipped through by other core developers.
  • Distraction Free Writing, first introduced in WordPress 3.2 is now supported by all custom post types.
  • The theme installer now has infinite scroll which is just kind of pretty aesthetic thing. It also defaults to keyword searches when you’re browsing for a new theme on the WordPress Theme repository.
  • Internal functions and classes now output “rtl”, “ie7”, “ie8”, etc as classes for browser targetting.

User Generated Hiring

I was not at the latest incarnation of Social Media Club Austin. I stopped going to SMC back in DC. The reason is… Marketing has usurped social media.

Today, when someone mentions a social media job, it’s almost always a marketing job. This is all wrong. Social media pertains to every industry. Not just marketing. And I’m tired of it being bastardized by coat-riders.

I was using social media in 2000 on forums. It’s how I learned my art. Or the beginnings of it. I started blogging in 2003 long before Twitter, Facebook and LinkedIn.

When panelists say, “I’d look at LinkedIn” or, “I’d look at Facebook” when asked what source they would look to if they could only choose one in the hiring process… I want to smack my face!

Why are you going to rely on user-generated content to validate an employee. Ask Yahoo! And their board how that worked out for them.

I can say anything I want. CS degree from University of Maryland (Go Terps!) and 6 years of experience using social media (true, I was a Twitter early adopter and a Facebook member in 2006 when they opened up their walled garden to non-college students). It doesn’t make it true!

But I’m not the guy they want. They want someone with digital marketing experience.

So why the fuck are they looking at FB or LI??

I mean, the bar is set low, right?

I’ve got 10kish followers on Twitter. I must be important. Maybe not as important as, say, @katyperry, but I must be an awesome communicator…

Hahah. Do you see the bullshit I tweet? And my follower count keeps going up! And people still want to hire me for their bullshit marketing jobs!

Common sense… Checked out.

Ronald Reagan said, “Trust yet verify”. Clearly Yahoo! didn’t do that.

And here’s the crux. You’re trusting marketers looking for a job to paint an accurate picture of themselves on social networks that are infested with self-aggrandizing?

“Oh I know the CEO of Startupr… The instagram of photo sharing”.

O RLY? Do tell!

Fuck that noise.

There’s a reason the FBI, CIA and NSA do extensive background checks and polygraphs. And the polys have to be re-upped. Every 5 years. Do we still trust him? Can we verify? Has he cheated on his wife and is he susceptible to blackmail? Same with credit checks. If he needs money, what will he do with our secrets?

(I’d fail)

So stop blowing smoke and hand-jobbing people. That communication intern may be cheap but he’s got 6 months experience and has no LinkedIn quality.

Look at GitHub. That’s social media. Oh but damn… It’s not marketing. Yeah but the code is public and you can bet on ACTUAL data rather that user-generated data.

By the way… I graduated from Stanford.

Crazy Christians and Bad Spam and Mailing List Management

I somehow got added to a mailing list recently unsolicited. It’s called Christian Report and I refuse to link to them. It is an arrogant, self-serving site that is plagued by guilt.

There is therefore now no condemnation for those that are in Christ Jesus. -Romans 8:1

What is seriously tragic about this site (aside from the content) is that I was added to this mailing list unknown. For God knows what reason. I mean, I’m used to getting spam and all, but at least a mailinglist has an unsubscribe, right?

I am a user of Other Inbox, which has this neat “Unsubscribe” feature. Drag mail in Gmail (Or Yahoo mail) to the Unsubscribe folder and, in theory, they will unsubscribe you safely from spam or mailing list and, if they can’t, they’ll just sequester mail in the future so you don’t have to see it. Except it wasn’t working for this particular listserv as I’ve been doing that for a few weeks.

So I finally manually unsubscribed yesterday. Typical unsubscribe process that’s normal with this particular very common listserv… it should be done, right?

Wrong. I got another one today.

This led me to find the site and manually contact the owner asking why my unsubscribe wasn’t being honored. Within an hour, I finally got the unsubscribe confirmation.

I offer, without comment, the text of that email. Sufficed to say, I’m sure I’ll end up on this list again and I can’t wait to report them to the authorities on such matters.

Wow!  We can’t believe you are leaving!  So Sad.

#1) If it because we have you on multiple emails and you need to getit down to one, we understand, if that’s the case then disregard thefollowing messages…

#2) To those who are leaving all together because they refuse to believe the REALITY that All have sinned and ALL will be judged and found GUILTY by Father God.  And then the WRATH of God will come upon them for ETERNITY:  Then they will be sentenced to God’s prison; The Lake of Fire also known as HELL for committing JUST ONE sin in their entire lives. However, God loves EVERYONE, not just some He supposedly pre-chose, so He provided a way out of this INEVITABLE consequence of our sin.  He came down to earth  in the Man Jesus Christ.  He lived a SINLESS life, teaching and preforming countless miracles.  Then He was crucified by the Jewish leaders of the time as a criminal, some of which knew in their hearts He was the Messiah.  Because the Staff of corporal punishment was taken from them years before, the Jews employed the Romans to Crucify Jesus. But then Jesus beat DEATH and rose again 3 days later after the Passover.  Over 500 Jews,Christians, Romans, and many other tongues witnessed Jesus after His death. Jesus then COMMANDS us to REPENT of our sins, realize that We need a Savior to pay the debt that is owed by us to God for our sin,and that Savior is in fact Jesus Christ.  We MUST believe in Him. WeCANNOT give lip service to such a thing.  God PROMISES us that if we Truly Believe in Him, then He will destroy the old man and create a NEW Creature CHRIST. This moment that happens is called REGENERATION. At that point we will no longer be a slave to sin.  We will hate the things of this wicked world and LOVE the Things of His Kingdom. If you merely gave Jesus lip service, then you will continue practicing sin and seeking the lusts of this world.  That will be the EVIDENCE that you are not a Christian. The MAJORITY of western Christians are hypocrites, thus you as non-beleiver are wondering whether this God is real or not. The Bible tells us that His chosen saints will depart from inequity (sin), therefore those who you see as hypocrites are indeed hypocrites and ARE NOT  Christians.  Those people will hear the words of Jesus as described in Matthew 7:20-23 upon Judgment Day. But friend, that is not of your concern.  Salvation is personal.  There won’t be a priest, lawyer, or relative with you on the moment of your death.  In a snap, you will be facing your Creator who will know EVERY secret sin you did.  And you will be found GUILTY of those CRIMES and sent to HELL. So I beg you to read the Book of John TONIGHT and repent of your sins and choose eternal life in heaven instead of eternal life in HELL.

# 3) If you are claiming to be a Christian then… Why are you going? Was it because the TRUTH was too hard to swallow?  After 12 years of street preaching, we have found that the MAJORITY of western“christians” are deceived by the god of this world!  That is a painful reality, but true.  If you are believing that your social club church is actually part of “The Church” when it resembles MORE of the world than it does of Scripture, then you are deceived. A true Christian has departed from sin, 2 Tim 2:19.  If you are practicing sin, then you are NOT a Christian, 1 John 3:8,  no matter what your church, pastor, and other unsaved christian friends tell you! You may have been deceived into believing from your social church conditioning that anyone who states what I just stated is unloving, judgmental, rude, legalistic, and a Pharisee.  But that is EXACTLY what the Deceiver has taught them
to make you believe.  The BIBLE states the EXACT opposite.  If we are spiritual, then we are to JUDGE ALL things, 1 Corinthians 2:15. Obeying God’s Commandments is NOT legalistic, Jesus says that if we LOVE Him, we will obey, John 14:15 & 23, not to earn our salvation but in fact to show EVIDENCE of it.  Ask your self what is more loving.To have knowledge of the Truth and tell you about it. Or to keep quiet and and make nicey nice with you here on earth without the least care about your eternal life?  The Bible is clear as to which is the REAL Christian, it is he who speaks the Truth to you from His WORD.  Not the false Christian who values temporal relationships here on earthwhile believing they themselves are going to heaven and their“friends” are not.  A true friend will WARN you of the dangers ahead. Remember, Jesus did not come here to bring peace, He came to bring Truth, Matthew 10:34-38.  Your New Evangelical Modern Gospel has brainwashed you into believing that we should be more concerned aboutone’s feelings or our “love” for each other than we should be concerned for our first Love, Jesus, and OBEDIENCE to Him above all. We CANNOT help you if you wish to believe those who condemn us.  We suggest you walk away from that false church and read the Word daily for at least 2 hours per day.  Please pray that God delivers you from the deception that you have been brainwashed into by the falseteachers, churches, and ministries of the western culture. Otherwise you may hear the Words of Jesus in Matthew 7:20-23.

We will be praying for you.

The Christian Report Staff

The more you know!

Tech: We Need to Start Being Feminists. Stat!

Used under Creative Commons. Photo by Jay Morrison.


That extends this I wrote about a few weeks ago.

This is pissing me the hell off! All that. It all needs to stop.

How are some of the brightest minds on the internet not seeing the harm in how we collectively perceive women, women in tech, women in our industry?

How is it funny to send nude photos of women to a prospective boss and get hired as a result?

How is it humorous to make jokes about “gangbang interviews” in a professional presentation?

How is this okay?

In the context of discussion around this article, someone said something to the effect of, “Well, you know, most resumés I get are from guys so I just hire best available.”

Bullshit. Recruitment is everything, especially when small. And not just for gender equality. You always want to find the best and sometimes the best are working for another company. Sometimes the best are working for themselves and they need to be convinced to come work for you. You have to be proactive to find who you want. If you take the passive approach, you’ll almost always get mediocre talent.

I’ve always proactively recruited as a hiring manager. We were reminiscing yesterday about the “vintage” days of b5media (which was just acquired, congrats!) when Brian Layman posted an old article describing his interview. We eventually hired him (because I personally recruited and hand-picked him) and he ended up being one of the best developers the company ever had.

If you want women in your company, don’t be a douche, go out and find them and hire them. Pay them top salaries along with all your guys.

I will eventually be a hiring manager again and I pledge that I will make every good faith effort to hire at least one woman for every man I hire. Obviously, I’m not naive. It may not always be possible. But to the best of my ability, I will do this.

Hey industry, we need to stop paying lip service to feminism. Let’s be feminists and practice what we preach.

David Simon on Debate and Journalism

It’s why I used to love a healthy newsroom, which I have described as a magical place where everyone disagrees with everything all of the time.  Arguments make the work better; when people stop arguing, or at least arguing intelligently, absent the usual half-assed, rhetorical cheating, the work invariably suffers.

(Source: davidsimon.com)

Scantily Clad Women are for the Bedroom, not the Showroom Floor.

I love women. I love scantily clad women. I think the majority of men, and of course some women, would agree with me. Sexual attraction is inherently part of the human experience and part of the instinctual core that makes up who we are. The same goes for women with men.

However, this is not okay.

*This* is a glimpse inside Ad:Tech San Francisco. Maybe not all of Ad:Tech. Maybe not even most of Ad:Tech. But it’s certainly a representation of how at least a few people decided to capture it. And this is not directed toward the photographers, at least one of whom I am personally acquainted with. And certainly not directed toward the women who are captured in the photographs or women who have embraced their own sexuality and their own representation of it.

It’s not directed toward sex in art, sex in social commentary, sex in music, sex in film, or choice of sexual exhibitionism. This is entirely about the objectifying of women for comercial gain.

Sex sells, right? It’s been used for decades to touch on an instinctual desire, particularly in men, that ties desire to a commercial action, such as buying. This is why the porn industry is so huge. This is why men will pour hundreds, if not thousands of dollars, into the sex industry and the industry thrives.

I am not naive, nor am I a curmudgeon. As a man, I readily admit to, at least occasionally, “Thinking with my penis”…

But this is an industry that is loosely defined as “tech” and tech is largely dominated by men. We have an image problem. On one hand, the industry as a whole has spoken out vocally about the representation of women in presentations, at conferences, on speaker lineups, etc. We have vilified organizations that put on events not proportionally represented by women and yet… somehow it’s okay, with a wink and a nod, to put women on display on show room floors for the purpose of selling a product. That’s, somehow, okay… even if no one will say that. After all, these “booth babes” are getting paid and this is their job. Sure, gimme a free tee-shirt or a brand-labeled rubber band ball. Cool.

I love scantly clad women as much as the next guy. I’d rather she be in my bedroom or sipping a bourbon and ginger at a bar or show, than pushing some new mobile ad network on a showroom floor so the married ad executive from Burbank can get his nards off. To me, this is a practice that really needs to end.

Note: Despite my desire to use a sexy image for this post, I’ve chosen not to for obvious reasons.

The Anatomy of a Successful April Fools Joke (Or Don’t Any of You do Fact Checking?)

Photo by Sean MacEntee
Photo by Sean MacEntee

With April Fools Day on Sunday, I started thinking about how to successfully prank everyone. There’s only been one successful prank I’ve participated in during my lifetime and it eventually ended up on Mashable – because, you know, Mashable is such a beacon of great fact-checking journalism. Zing! ;)

Realizing that I had two awesome calendar quirks upon me – that AFD was this coming Sunday, a weekend, and that the end of the government Q2 was today… I had plausible cover for a real awesome prank.

So I texted my good friend Amanda at the U.S. Department of Agriculture and floated an idea past her. I needed an alibi and some cover in the event I started to get questioned. My idea is that I was moving back to DC to take a senior level role at a federal agency. Given that she has such a role at USDA, the ruse went from there.

A made up position (but one that sounded totally reasonable to the naked eye) – Deputy Director of Online Operations – was concieved. Since it was the end of Q2, I had to make the decision by close of business today. My cover would include “budget cuts” and “workforce consolidation” as reasons for a new position.

The next step in purpotrating this lie was to ensure all the closest people in my life bought the lie. I could clue them in to a lie, but too many cooks in the kitchen could spoil the whole thing so I wanted the closest people buying it.

So I told my roommate and spun a story she believed. Then I told my friend Mike Neumann who bought in hook, line and sinker. I did let my girlfriend in on the secret since she would be likely to panic.

I reinforced the story again this morning with my roommate, referencing a conference call and a “letter of intent” from USDA. I don’t think the USDA even issues Letters of Intent and it’s the Office of Personel Management who actually does hiring on behalf of agencies and suggesting I had to make this decision today and that “it was a hard one” and “I really don’t want to leave Austin”. I knew when she started consoling my dog that she was thoroughly convinced. Good job, Aaron. Phase 1 complete.

Having suitably hooked my friends, it was time to start rumor dripping. IT started with an innocuos status update on Facebook (since, you know, that’s for family and friends and not the world): “Well, Austin… it’s been a fun 2 years. I’ll see you at SXSW, I guess”. In comments, I (intentionally) float DC as my destination but played coy on details citing “a gag order”. Enough information to be compelling, but also enough to maintain the cover of my story. Everyone buys in. Phase 2, done!

Awhile later I make my “official announcement“. This part of the prank is meant to provide even more plausible information, laced with real life fact. Every good lie has an element of truth. I describe the role in words that are believable… that it’s mostly technical, that it involves WordPress, that in Austin I’ve taken up more healthy eating habits – something that plays directly into the mission of USDA.

Since this was my “announcement”, I shared it back on Facebook as its own status update, as well as updated the original “float post” so that those who already saw my update would see the new update. I also tweeted it out to my 9500+ Twitter followers.

Everyone bites. No one questions anything. No one even thinks about AFD. Phase 3 complete.

The key to this joke was timing. To be plausible, I had to do it today. The government doesn’t work on the weekend and if I waited until Monday… my opportunity would be squandered because everyone would have their AFD defenses up. But 2 days before… no one saw it coming.

Additionally, it’s a prank. I don’t want this being on the internet forever and a day. I ensured the proper meta tags were added to my post so Google won’t index it and no one will be confused later down the road. Ha! But then, no one looks at source code. ;)

I’m sorry I’m not coming back to DC. Actually, I’m not. But y’all shouldn’t believe everything you read on the internet. :)

There is a Season, Turn, Turn, Turn: Back to DC.

Back when I moved to Austin in 2010, I was thrilled to be leaving the rat race that was DC. I was looking forward to a place when people did not watch presidential speeches to joint sessions of Congress in bars as if they were the Super Bowl and instead sat on patios with their friends eating chips and queso and drinking local craft beers while listening to live music.

I looked forward to a cheaper and easier way of living where summers were hot but not nearly as unpleasant and winters did not bring 50″ of snow in just a few days. It was a new life with new opportunities and new experiences far away from the northeast where I had lived almost all of my life.

I did not expect it would come to an end short of 2 years after I made that bold move. But it’s coming to an end, barring some unforeseen hitch.

I’m moving back to DC in the middle of July. Beginning mid-may, I will become a Fed. You heard that right… a Fed. I’m pleased to have accepted a position within Department of Agriculture to become Deputy Director of Online Operations – a far more senior position than I could have imagined since my only Federal job experience was on the corporate contracting side with Lockheed Martin, Northrop Grumman and CSC. However, I am uniquely qualified for this role.

The role is a new one that lies somewhere between an operations style role surrounding technical execution and communications where I’ll have my hand in some of the online community aspect. Mostly, it’s a technical role though. And WordPress is heavily at play here.

In a way, this is a dream job. To be able to use my WordPress experience to help direct a portion of public policy related to critical infrastructure around some of America’s greatest domestic assets, enabling analysts to develop partnerships with state and local school food programs, among other things… it’s incredibly sobering.

So while I don’t start in DC until July 16, I’ll be beginning my role on May 14 at the USDA office here in Austin.

Regrettably, I have to move, but I do so with a tremendous amount of perspective and new experiences from Austin to live with. One thing I take away from Austin is the importance of locally grown vegetables and grass-fed beef… this perspective will help make this role even more effective.

Thank you to all my friends here in Austin. I’ll be back. I love this place too much not to come back.