Job Search

Turning the Resumé on its Face

Resumés suck. They suck bad. Somehow, you need to convince a prospective employer that you are, in fact, the right candidate for a job. Or you might be and they should take a second look at you and maybe give you the time of day to put up a phone interview.

You have to convince someone that you are entirely worth the time and effort without ever speaking to them. It’s all got to be conveyed on this little 1-2 page document that gives a snapshot of everything you are and can do professionally.

And you have to do it in a bad economy when people with Masters degrees are also looking for work. Maybe you too have a Master’s degree. That’s okay, you’re still competing against all the rest of them.

The traditional way of building a resumé is to provide a chronological context of every school and degree you’ve received along with every professional role over the last 7-10 years, give or take.

What do you do when you’re in the tech space and the requisite skills are constantly changing? What do you do when your role at the last 3 companies were essentially the same with little deviance in the job description?

Do as I do… flip your resumé on it’s face.

Let’s face it. If a company is going to hire you into a role, they want to know that you’re going to be innovative in your approach to the job and that you’re willing to think outside the box to do the best job you can. If they don’t, you probably don’t want to work for them anyway as they are plainly hiring you to just follow marching orders and that, let’s face it, sucks ass. There’s no place to achieve and rise to the top because you’re just doing things the way you’re told, by the book, all day every day. Sounds like a reason to drive off a cliff, if you ask me.

Let’s provide some context as to how this concept has worked for me for years.

In 1994, I graduated from a private high school in Annapolis, Md. I hated school but I went to a community college and decided not to do any general education coursework, as is typical. At the time, this school was piloting a program that shifted all the coursework from the police academy to the school with only firearms training being done at the academy. This was the county’s idea of slimming the budget. So I decided being a cop sounded like fun and I pursued a bunch of criminal justice work in my first year of college.

I dropped out after a year and pursued other interests.

Years later, I was given the opportunity with little experience to work in a federal data center for a government contracting company. I spent three years in that windowless data center watching my life slip away from me. It gave me a shot though.

As I started looking to move up inside the company, I realized that to do so meant punching some certification cards. I put a few small ones under my belt – enough to get a promotion to work desktop IT support as a contractor for the U.S. Navy. I did well in that role, consistently rating among the highest, knowledgeable techs on that contract.

When that contract expired and I was RIFfed (Reduction in Force), the company scooped me up into a similar role on the corporate side. Again, I was able to perform at a high level and by the time I left in 2006, I was single-handedly responsible for the IT support of 7 offices around the Baltimore/Washington area.

I still had no formal education, so during this time, I went back to another community college and worked toward getting coursework under my belt that would allow me a 4-year degree at some point in the future.

That was until I said, “Fuck it”, and went into the startup world. For the past 6 years, I have worked at or started 3 startups and ran my own consulting business in between (as I still do today). I did some advisory consulting with the Air Force, wrote a book, and even taught some classes at the post-graduate level at major universities including American University. Not bad for no degree.

Today, I still have no formal education. I’m a few credit away from a 2-year degree which wouldn’t be worth the paper it was printed on. When I went back to school, my experience was such that I was teaching the teachers.

I can go into a diatribe about how higher education is broke in this country, but I feel like I would be preaching to the choir. While some of my experience can be translated as college credit, most is ignored despite the fact that, in my field, I am 5-7 years ahead of what they are teaching in colleges today. And while a 4 year degree would be fairly useless to me as the industry is ahead of academia, a Master’s could be quite handy. Sadly I can’t get a Master’s without a 4-year, but I digress.

Coming back to the point about the resumé. I have tremendous chronological gaps if I were to formulate my resumé in traditional fashion. Am I ashamed of having no degree? No. Do I want to highlight that fact? Hell no. It’s unfortunate that America’s HR departments have been trained by buffoons who play to the checkboxes instead of actual skill, but those are the rules we play by.

Instead, I present to you an achievement/skills-based resumé. Instead of discussing formal education or companies that have been worked at ad nauseum, try laying it out to highlight the things you’ve accomplished along the way. I begin my resume with several one-sentence paragraphs that describe achievements I’ve made professionally – not for a company, for me.

I then mention companies I’ve worked at, purely for the sake of context. I also use LinkedIn recommendations I’ve received over the years to highlight what others say about me.

These three steps provide the context needed for employers to decide if they want to talk to me. If I can humblebrag, I usually get phone interviews for the companies I want to talk to and they usually go deep into multiple rounds. I’m still working for myself because timing, pay or perks are off in the end, but I rarely fail to get the attention of someone who I want to work for.

Try this concept. Maybe A/B test between a resumé of the format I’m describing and a more traditional one and see which one gets more traction. It can’t hurt, right?

Oh and here’s my resumé.


Competing Interests: WordCamp SF and the WordPress Foundation

WordCamp SF

Photo used under Creative Commons and taken by Niall Kennedy.

Six years ago, the first WordCamp ever was held in SF and it became the launching point for many local regions and cities to continue the conversation, learning and educating around WordPress. It was always meant to be a hyper-local thing. Actually, as a correction, it was never meant to be a thing at all. It was meant to be a get-together of SF WordPress people.

But surprise, it caught the attention of WP developers, users and designers worldwide (including myself), and we came in by storm!

The following year, the decision was made that, due to such high demand in SF, and to try to encourage WordPress user groups in other cities, WordCamps should be distributed and locally organized. That kicked off a slew of WordCamps that (seemingly) doubles every year. I organized WordCamp Mid-Atlantic (the roots for WordCamp Baltimore and WordCamp DC today) back in 2009 and 2010.

Personally, I’ve been at or spoken at dozens of WordCamps (Mark your calendars… if you’re in Las Vegas on October 6, I’ll be speaking there too). To name a few, I’ve been to WordCamps in SF, San Diego, Las Vegas, Raleigh, Baltimore, Miami, Atlanta, Dallas, Houston, and New York to name a few. I’ve been to San Francisco every year except one, and that was due to another travel conflict.

I’ve been an organizer, speaker, sponsor and attendee.

In other words, I am no rookie and I am in good standing in the community!

The WordPress Foundation

A few years ago, after some financial mis-management for a large WordCamp, the WordPress Foundation was setup. The Foundation was designed to promote the use of WordPress, protect trademarks of WordPress and related WordPress trademarks, including WordCamp. As part of this responsibility, the Foundation has issued rules around WordCamps via WordCamp Central. Today, I could not run WordCamp Mid-Atlantic the way I did before as the rules are quite rigid. On the other hand, I would also not have taken a nearly $3k personal loss on Mid-Atlantic in 2010, so the rules, in my opinion, aren’t all bad.

A sampling of these rules include that any WordPress-based commercial sponsors who distribute code must distribute 100% GPLv2 compliant software and having organizers approved. Also, all sponsorship money goes through the Foundation at this point.

WordCamp SF

Which leads me to a problem I feel the need to weigh in on. WordCamp San Francisco is no WordCamp. It is a conference in every rightful way of the word, as it should be. And it should be renamed as the WordPress Conference or something other that WordCamp. WordCamp SF is commanding massive sponsorship levels, of which one sponsor is gladly paying a whopping $30,000 for “California Street” level sponsorship.

Other sponsorship levels are at $10k, $7500, $5k and $2k.

This is against an unstated, yet enforced, Foundation policy surrounding limits for sponsorships. These rules were put in effect to encourage big companies, like Dreamhost who is in for $30k at WCSF, to spread the wealth among a variety of WordCamps instead of just one. The idea is that if, say Microsoft, was well-connected to an organizer of one WordCamp, the Foundation has mechanisms in place to move funds around to other less-connected, but still necessary, WordCamps. It also ensures that WordCamps don’t put their eggs in one basket and then have a major sponsor flake and leave them holding the bag. Fine, I can get behind that rule.

WordCamps also have rules about content. It used to be that every WordCamp had some session on using social media. While that is perhaps important to WordPress users, it’s not WordPress! So sessions need to be WordPress related. I totally get that and have no gripe with that provision. For the first WordCamp Mid-Atlantic, I invited Anil Dash to keynote, knowing that at the time, Anil was an SVP and Founder of a WordPress competitor. But it was open source and I felt that the competition only made us as a WordPress community stronger. I expected push-back from inviting Anil, and if the rules were in place then… he may not have been able to Keynote.

We know WordCamp SF is Matt’s baby and he chooses content, not based on whether if it’s WordPress-related, but whether it’s inspired him. At least that was true until last year when Jane Wells organized.

We also know food, photography and Jay Z inspire Matt, but I don’t think Rachael Ray would be a speaker at WordCamp SF… though perhaps I wouldn’t be surprised if she did end up speaking there. I digress.

Matt Mullenweg, who is both the President of Automattic, the commercial arm of WordPress, and the President of the WordPress Foundation responded to my request for comment by admitting that some content in the past has drifted from WordPress but that he still stands by them. “None of those speakers normally speak at WordCamps, but we’re able to attract them and orient them to contributing something interesting to the WordPress community because of WCSF’s location and prominence.”

I suppose, again, Rachael Ray could speak and discuss the merits of using WordPress for a food blog.

Related, ticket prices are kept artificially low, but sponsorship levels are extremely high. It feels wrong.

The Foundation does suggest lower ticket prices (around $20 is typical), but one wonders why WordCamp San Francisco could not charge a reasonably low rate of $200 for an attendee ticket, given that people would still come from all over the world to attend. This would also lower sponsor levels and cause less controversy. DrupalCon is charging $400-$450. RailsConf is approximately $800. Why does the official WordPress conference have to sell at $20 when sponsorship levels feel inappropriate?


The Foundation Risks Major Implications from Non-Enforcement

When the Foundation was established, it’s stated goals were inspired by the Mozilla Foundation, as much of the philosophy of open-source development and products in the WordPress world are. It’s important to point out that, from a governance standpoint, the Mozilla Foundation and Mozilla Corporation, though closely tied, are governed by different people with similar but differently stated goals.

If Mozilla Corp goes outside the bounds of protected auspices, you better believe that is going to have something to say about it. The reason is simple… if you don’t enforce your own policies with your closest ally, friend and organization made from the same DNA, you leave yourself open to risk later on. Otherwise, you have a conflict of interest which is both legally and publicly difficult to reconcile.

Trey Roberts, a well-decorated Intellectual Property attorney of Roberts & Roberts in Austin, TX, commented to me that, “Though there is no ‘discrimination’ in a legal sense, since an organization has the right to choose what aspects of their licensing contract to enforce, if a pattern of suspended enforcement occurs, there is a risk of legal repercussions.”

Of course, some organizers see a level of subjectiveness in Foundation rules. Tony Perez, one of the organizers of WordCamp San Diego, lamented, “Often case when a request would be made, the response would be,’we would prefer not.’ When the question was asked, ‘well why not?’ the response was not very clear or decisive, so the decision felt as if it was in limbo. At the same time, you almost felt bad going against the recommendation, so it starts to become easier not to ask, than to ask.”

Opportunity exists though. “I can say though that it’s a necessary evil, but perhaps its time to think outside the box on the approach,” says Perez.

I love WordPress

I write this post not to bash WordCamp, the WordPress Foundation or any individual involved. In fact, I love WordPress. My professional career is Proudly Powered by WordPress. I want the Foundation to succeed as an organization charged with the governance of the software and events around it – and it is making strides to become a respected, independent governing organization. But conflicts of interest (or perceived COIs) do not provide a healthy community atmosphere and it causes bad blood among other WordCamp organizers. It, in fact, keeps potential organizers from wanting to jump in the mix. Or former organizers (like myself) from wanting to participate.

One former organizer, Amanda Blum, who has been a frequent critic of the Foundation tells me she won’t organize another WordCamp but she “still actively advises other camps [sic]” and “all I hear is complaints”. She goes on to express a concern about “the vast chasm between what the Foundation thinks Camps [sic] purpose is, and what the attendee interprets.”

Policies of the WordCamp Foundation around WordCamps are heavy-handed, in my opinion. There should be education (and there is some) around how WordCamps should be organized. Perhaps the rules that require WC money to be funnelled through the Foundation are merited (I actually do agree with this for non-profit reasons). However, where possible, it strikes me as necessary (and in fact, opportune) for local organizers to be able to blaze their own path and put their own local stamp on their own local WordCamp in almost every case. When it comes to sponsorship level, a WordCamp in NYC is likely going to cost more on orders of magnitude than a WordCamp in Omaha. One size shouldn’t fit all and the discretion should be left, with guidance from the Foundation, at the local level.

Mullenweg states, “The guidelines on Central encourage lower per-company sponsorship levels to encourage more sponsors per WC, decrease reliance on a single sponsor (we’ve had them flake out before), and have a level where even smaller firms can participate. It also hasn’t appeared to be a hindrance to larger city WordCamps, with NYC and Boston both raising 20k and putting on great events.”

Jane Wells, who helped to draft the original rules, tells me that the Foundation does try to not take a one size fits all approach to WordCamp’s and that they try to assist local WordCamps with financial assistance for venues, etc when needed. It does seem there is a perception among many organizers like Perez that this is not the case. One area where better communication between the Foundation and organizers may occur is at a new community blog that just went up.

With the spirit that this article is written with, I hope the Foundation, Automattic and the community take this as constructively confrontational. I do not wish to throw anyone under the bus, but change needs to happen for the integrity of the community. I cannot and will not be attending WordCamp SF this year or in the future, as long as these grievances continue year after year. I, however, will be at WordCamp Las Vegas and possibly Baltimore in the months to come, and I hope to see you there.

Corrections: Inserted a reference to WordCamp Central that serves as a central organization point for WordCamps. Also, updated the date for WordCamp Las Vegas to Oct 6, 2012. Corrected some content flow (paragraphs inserted in the wrong place) and noted that Matt did not choose content in 2011.



I have a tattoo. I have more than one, but I have one in particular. The tattoo depicts scales that are balanced between an olive tree and a foreboding cityscape. Leading up to the scales, and disappearing into a vanishing point, a road winds its way into the horizon.

People commonly ask me if I’m a Libra. When I tell them no, they inevitably then ask about the tattoo which (clearly) was the reason they asked. I tell them what it really means, what really inspired the tattoo. It’s a principle at the core of my being.

A never-ending struggle for justice.

Justice can be many things to many people. Justice is often considered a validation for what one holds dear. To achieve what a person holds dear is proclaimed, “Justice!” Rarely does anyone consider that justice may result in an outcome that is not comfortable or desired bu that, by definition, is justice.

jus·tice noun \ˈjəs-təs\

the maintenance or administration of what is just especially by the impartial adjustment of conflicting claims or the assignment of merited rewards or punishments

The tattoo to me represents an eternal and ongoing struggle for justice. Justice, to me, is both legal and social. Equality in marriage. Employment and hiring rights. Civil rights.

As I sit here in the cradle of American democracy – Boston – I’ve had time to think about the Founding Fathers. I walked the Freedom Trail, beginning at Paul Revere’s home, and leading to the Old North Church where a pair of lanterns were hoisted into the church steeple to alert rebels in Charlestown across the river of the British arrival by sea. We know the story of that historic ride to Concord.

As I sit here in Boston and ponder the struggle for freedom that the patriots of that day engaged in, I am aware of the potentially fatal nature of that struggle as epitomized in the closing lines of the Declaration of Independence.

And for the support of this Declaration, with a firm reliance on the protection of divine Providence, we mutually pledge to each other our Lives, our Fortunes and our sacred Honor.

This has already been a long-winded post, but there is a point – and it has nothing to do with the normal topic of this blog. Civil rights has not made any significant advances in decades. While one can argue that the Civil War was a distant memory – a blight on American history (and it was), there are still those in the south who call it the War of Northern Aggression.

Abraham Lincoln, though considerably heroic in his legacy, was only able to accomplish what he did through the Emancipation Proclamation by getting creative. He could say, “All slaves are free” and he would not have a mandate with authority in the Union, much less the Confederacy. The only way he managed to use that as a tool and a rallying cry with any success is that there were many in the Union who could care less about slaves and were only interested in the preservation of the Union while others were abolitionists who cared about freeing slaves.

In order to achieve the goals necessary to both sides, the timing and essence of the Emancipation had to serve to unite both factions. That was, in fact, the genius of Lincoln.

Besides Civil Rights, we still have work to do on the Women in the Workforce side of things. Sure, President Obama signed the Lily Ledbetter Fair Pay Act which enhances the ability of women to file lawsuits challenging unfair compensation. But that’s only a fraction of what needs to happen. Certainly, in the tech space, we need to eliminate Brogrammers and all their evil spawn. And that’s just in tech. Fortunately, Twitter is spearheading a project to get women into engineering. We need more of that.

And of course, equality in marriage is another topic that needs to be addressed.

But the point is, the struggle will always be there. With every achievement, there’s more to fight for. We need to fight and we need to push the issues. Be the change you want to see.

— Aaron Brazell

Aaron Brazell

My Three Tiered System to Job Searching

Photo used under Creative Commons and taken by photologue_np

Over the past months, since I parted with WP Engine, I have entertained many inquiries about my availability for other full-time roles. And I literally mean many. It’s been a great problem to have, frankly, and I consider myself blessed to have these inquiries while so many others continue to struggle to find work.

I also consider myself blessed to work in a specialty field. WordPress consulting, you would think, is something that is extremely saturated. To a degree you’d be right. As a consultant, I turn away a great number of projects because, frankly, they amount to building sites with WordPress. There is certainly nothing wrong with that kind of work, but I’ve found over years of consulting that it’s important to be a specialist. To not be a specialist means to compete with everyone else on the same level and that reduces the quality and quantity of projects I can work on.

Instead, I focus on high-end WordPress integrations and plugin development. Complex things. I make a reasonable living doing things that there are only a proverbial handful of people who have the ability to do.

At the same time, I continue to entertain full-time job offers. There are some great ones out there, but many just don’t interest me. I have a three-tier (God, as a beer advocate, I hate that term but in this case it fits) filtering process I go through when entertaining job offers. I think this three-tier system should apply to anyone and everyone looking to work in any field, and so I’ve decided to share it.

Is the money right?

We all need to live, and I’m not one who believes the starving artist mantra is necessary a healthy one. If you’re good at what you do, you should be compensated appropriately. Personally, I don’t think anyone would have an argument in this area. A seasoned DBA should not be making $50k, for instance.

As a consultant, I’ve come to have a lifestyle that I’ve worked very hard to achieve. I’m going to be 36 soon and I’ve been married, had a kid, worked on startups, lived in expensive areas of the country and cheaper areas of the country. I’ve built a lifestyle that no job should ever take away.

We all have our “number”. Know for yourself what that number is and stick to your guns when determining if you want to work for someone. Simply not enjoying your current job is not a valid reason to take less than what you’re worth.

Does the job make you want to jump out of your chair and SQUEEEE?

IF it doesn’t, walk away. You should love every minute of what you do and jump out of bed in the morning (after a reasonable period of off-time) eager to see what new innovations, products, ideas and relationships can be achieved.

To do less is selling yourself short. Never settle for anything less than awesome. Some inquiries, for me, have been awesome on the money side but I feel so dull and want to pull each fingernail out of it’s socket just thinking about it. Read my lips! I will never work in a cubicle again! Ever! Don’t ask!

Recently, I spoke with a company who demoed some of their products (WordPress-based) they were working on. They showed me tools that they had built in that allowed their 300some entities they managed to do amazing things (things I tried at b5media years ago [and failed]) in easy, intuitive ways. All I wanted to do was scream “OMGYESPLEASE!” through the phone.

If you don’t have that reaction, think really hard about whether you want to commit.

What’s the social impact?

I’m not a tree-hugger, but one thing I can say is that consulting is both awesome and terrible. I get a lot of benefits by working for myself. But that’s kind of it. I get lots of benefits from working for myself. No one else does. Just me. My world isn’t a better place because of my work. My wallet is happier, but the world around me still sucks.

So when I talk to companies about working for them, I want to know that my work has a positive effect on the world around me. Whether it’s education or environmental; sustainability or fitness; empowering others or enabling positive social change – it’s an important facet in what I look for.

Does the company reward employees for not wasting energy and taking the bus or riding a bike to work? Does the company offer some sort of subsidy or reward for green energy consumption? How many women are employed as engineers?

How does working for Company X positively affect the world around me?

I think these three things are co-equally important for anyone, not just me. I hope so, anyway. We shouldn’t hate what we do, ever. We choose what we do. Choose wisely.

Aaron Brazell

Science is King

I’m a scientist.

I don’t have a degree from Stanford or Carnegie Mellon… But I’m a scientist.

I hypothesize, test and prove.

If the result doesn’t meet my supposition, I accept that and move on.

Science required known, provable facts. Or in computer science, constants.

To prove, you need to test. To test, you need constants. You need to know with 100% certainty that the factors in your experiment are known and 100% objectively provable.

Obama isn’t an American, while a supposition, cannot be proven as fact. There are records showing otherwise.

That men are pigs, while an okay assumption, does not rely on provable facts. Any proof relies on subjective experience.

That WordPress is the best CMS on the planet? While it may control ~20% of the web, assumes that 20% thinks its the right choice and avoids supporting evidence toward other CMSes.

I can get more explicit about suppositions assumed as fact, but you get the idea.

Work with what you know. Make assumptions but allow yourself to be wrong. Data is the only thing that matters.

Aaron Brazell

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.
social media

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!