Transitioning from client services to products

I amicably departed from a developer lead position at WebDev Studios, and joined the product team behind products like EDD, and AffiliateWP this past May.

I’m new to some of the organizational and interpersonal components of product teams, but more to the point, I was consistently surprised by the differences in how I work.

Although I’m just a few months in doing this full-time, I want to note some of the observations in transitioning into full-time product development from full-time client services, because wow. Different.

Here are some of those observations in no particular order.

Commit behavior

Commit good stuff, not an arbitrary timestamp of progress. With client services, common project management expectations mean that a supervisor/lead needs to code-review regularly. It was something I did multiple times per day, every day.

It may also mean that frequent updates need to be sent to the client. If you’re leading a team with several active projects, you can’t look through everything in detail, or have a call with every person on your team. So, you make it easy. At the end of every day, everyone pushes what they have – even if it’s not working (just don’t take down the dev site). Occasionally, a short scrum is adequate instead. For any very particular or abstracted things, you need some code perusin’.

This is a dynamic I’ve found my co-workers, today, don’t care about in a daily context. What they do care about is the stability of the software, and not having to potentially bisect a heap of commits beause of some janky commit.

Regular communication and progress notes are certainly just as important, I just (try to) do it without committing until the thing works1.


If you’re in the business of creating websites or apps for clients, consider this:

How do you sell unit testing?

Unless your client is another engineer/developer/ etc, it’s tough to communicate why a considerable portion of the budget should be set aside for testing.

What gets tested on sites? The appearance, and the apparent functionality. We’re all familiar with this round of issues on a project:

– This doesn’t work if the .csv file is larger than 2mb.
– “The numbers are wrong” -> Replicate issue -> Yay, a floating-point corruption is modifying integer values.
– A memory leak in your sort method gradually coaxes the operating system into a kernel panic.
– This looks weird || broken || bad in IE.
– Unicode.
– “We changed our minds, so”.
– Unicode.

Many agencies try to work in actual unit testing when possible, but the budget and time constraints frequently make this impossible.

If you’re thinking: “Just don’t tell the client! Bill them whatever it’ll cost with unit testing. Make it your requirement!”

Then you’re either one of the few people that are in such high demand that you can make these demands, turning a project with a budget of $x into one with a budget of $x + $x, or you’ve likely not spent much time doing client work. Either way, you’re a fan of writing tests, so good for you.

Prior to this position, my only experience with unit testing was with Mocha, qUnit, and Jasmine – and for concerns testing bare logic chains – essentially basic mathematical proofs. Those I could do, as the necessary deconstruction is all there for you.

The abstractions used in software development so far are very different, and requires similarly different thinking about the reduction of components when creating tests.

I suck at unit tests. But their value is abundantly clear. Thankfully, I have some coworkers that hate me have been willing to share their experience and help me when needed.

Too much ghost mode == bad

In short, don’t arbitrarily isolate yourself when building something, madly toiling away in a corner, only to emerge weeks later with whatever machination you’ve created.

At agencies, especially in supervisory positions, it’s sometimes a requirement to completely unplug and be unavailable (unless a server is on fire). I say requirement because it can be the only way you’re able to get something done that isn’t tied directly to project management or code reviews. It’s a necessary evil, and something you learn to balance.

In contrast, software development thus far is very hands-off. You’re given the flexibility to create, at your own pace, during the time you know you’re most productive. This is a freedom I wish every coder could know.

But it also introduces a risk of working on something without feedback for way too long. This is bad for any team, of course. For remote teams especially, communication is crucial.

Do you feel you’re way too experienced for this to happen to you?

I’ve talked about this at meetings with teammates, notified developers one-on-one that they need to communicate more, and even was forced to let someone go because of zero regular communication for weeks at a time. So you can imagine my surprise when I realized that was the very first thing I did when building my first product feature. It can slip in quite easily.

If you don’t check yourself, you may or may not find that you’ve wrecked one or more things, including, but not limited to, yourself.

I end with something that has been identical in both career directions: support.

Support is the same: super, super important.

No team gets my praise as much as one that has extreme dedication to their customer/client support efforts.

Both the prior and present companies are the embodiment of this. Documentation, response times, and overall commitment and quality make an unbelievably significant difference with how customers/clients view you, share your stuff with others, and stay with you.

As long as I’m still writing code, I’ll always want to have some connection with the people making use of it.

  1. Or, at least until I think it works.

Tech Conferences for Dummies

This post is aimed at providing a usable summary of conduct to which one should adhere when attending a conference. This applies to most industries, but as I am a programmer, I presume to speak only from my experience attending various technology-related conferences.


The first portion of this post is a guide, in the format of a FAQ or how-to section. It aims to provide a reference to those that may be experiencing problems at conferences and like events (such as meetups), due to one or more factors of their personality or behavior. Common problems include inappropriate or predatory sexual behavior, violence, or belligerence.

There are also references provided for less-commonly severe problems, such as egotism, rudeness, and other conversational semantics, including tips on detecting if you may be perceived in such a manner, as well as how to manage those that might be practicing these behaviors on you.


It needs to stop. As more people enter the technology industry every year, this is seemingly impossible in any short-order. But it’s not. It can stop. In the conclusion of this post, ideas are offered on this topic.

Most immediately, maybe someone new to conferences will be sent this post by their colleague. Maybe it will convince this person to modify their behavior.


In the context of this post, I am an average programmer. I work at a distributed company, where we provide development services for a wide variety of clients. I attend or speak at twenty or so conferences per year, and am an organizer of a regional technology conference.

While I’ve never been the recipient of criticism for my conduct at any conference, I have nonetheless attempted a pragmatic approach to addressing persons that engage in negative behavior when at technology conferences and related events.

More importantly, however, I am a person that has zero tolerance for negative behavior. While I embrace and enforce the below recommendations in my own life, it is my hope that one or more people will use this brief, snarky guide to adjust their behavior, or share with others until it reaches someone that could benefit.

Let’s get started! There’s no table of contents. There’s a question, followed by an answer.

Tech Conferences for Dummies

So, you’ve been getting into trouble at conferences. Perhaps you got fired for something; you made a sexual advance at someone, or became violent with another attendee. Maybe you just want to know why, despite your programming/design talents, no one will engage with you in person.

Before the Q & A, let’s take a look at the bigger picture.

The bigger picture

Have a look at this checklist below. If you’re comfortably assured that none of these issues are relevant to you, then please read on! If you’re not sure about any of these, make sure to investigate it first, as it may be contibuting to your conduct.

  1. Am I reasonably sure that I’m free from mental illness?
    If not, see a medical professional.
  2. Have I recently experienced a tragedy or other significant trauma?
    It’s likely best if you attend to the emotional pain you’re experiencing from this. Let the conference go, there will be others. Give yourself time to heal.
  3. Do I potentially have a physiological issue, such as a chemical imbalance?
    Much like the mental-health checklist item above, it’s best to address this before anything else. Handle your health.

The questions are divided into the following sections:

  • Sex and gender*
  • Violence and belligerence*
  • Conversation
  • Miscellaneous

*I have specifically avoided noting situations which would result in a person receiving a felony from law enforcement, such as sexual assault. It’s my hope that anyone who’d bother reading this is either seeking help, or is already like-minded.

If you’re engaging in any sexual assault – that is, subjecting another person to sexual behavior and advances against their will, I have no words for you. It is one of the very few instances in which I will immediately become violent in defence of the victim – and there are many like me. I implore you to seek help if possible

Sex and gender

I’m single. is it ok to hit on people?

Here’s the thing: if any of your primary reasons for attending a conference are to find a mate or sexual partner, you’re in for a very long wait – if you find any willing partners at all. And for good reason; a technology conference is entirely irrelevant to mating, reproduction, or casual sex.

Look, we’re all people here. It’s not about denying our humanity. Everyone loves fucking. It’s about self-control.

A conference is a place of learning; a place to make new contacts, new friends.

The core issue – provided you’re not suffering from the “bigger picture” checklist above, and are not a sexual predator unable to control their behavior, is lack of self-control.

You attend a session given by someone you deeply admire for their technical chops. You’ve been using their code for a long time, and as you attend the session, you notice they’re also physically strikingly beautiful.

Perhaps you even inquire with a colleague of theirs, about their relationship status, to which they reply with an uncomfortable “uhhhh – I think he/she is single”. You think to yourself “I’m single, they’re single. I should ask them out”.

What’s wrong with that?

So far, nothing too bad. It’s extremely bad form to engage in any sexual behavior during a conference unless it’s quite clearly mutual, from the very first moment.

This is where self-control comes in. If you don’t get an affirmative reply from the person which clearly indicates their mutual interest, what do you do?

Stop. Do not engage the person again. Give them their own space.

They didn’t say no – but they didn’t say yes, either. They’re just playing hard-to-get!

Have you considered that you may be making them uncomfortable? It can be difficult to determine facial and behavioral cues from others, especially if you’re intoxicated.

You’re not in a fucking romance novel. You’re not in a soap-opera. Consider the most likely reason this person is attending a technology conference. In most cases, it’s something to do with the conference itself, and not pursuits of mating or intercourse.

The safest bet is a rule I’d like you to try the next time you attend a conference.

Safe bet: Leave your libido at home. Never engage someone in sexual behavior or conversation unless they explicitly do so first.

When I see someone that’s pretty/handsome/hot, I tell them. That’s just me! I love beauty, and love letting people know I appreciate theirs.

A technology conference is an entirely inappropriate place in which to call attention to ones’ physical appearance, be it pleasant or otherwise. People attend for concerns of the mind, not the body.

By calling attention to their appearance, you’ve taken that away from them.

With permission, here’s an example which happened to a friend of mine a few months ago:

Let’s call her Beyoncé (althugh she indicated it was ok, I’ve chosen not to disclose her actual name). She is, by all accounts, beautiful. A degree to which others in the room are made uncomfortable, regardless of gender or sexual orientation.

She’s also a talented software engineer.

Because of her appearance, she’s never spoken in person at a conference other than once several years ago. Most people assumed she was an intern, or a marketing person reading a development session prepared for her by someone else.

But she tried again this year. Now she was assertive, older. She was able to articulately defend herself on matters no person every should.

Everything went well at first. Sufficiently-technical questions were asked by a few people. Then, after the talk, in the hall, a guy said “That talk was great. You’re a unicorn – smart AND gorgeous. Let me take you out to dinner?“.

What did the guy do wrong? Am I attacking men here? Imagine yourself in place of her:

You’ve spent a month of your life preparing a talk at a conference. You’re passionate about it.
You give the talk, and during Q & A, one person raises their hand to say “You’re adorable“.

You’re deflated, saddened.

He stole her moment.

Safe bet: Leave your libido at home. Never engage someone in sexual behavior or conversation unless they explicitly do so first.

Once, I said “You’re the most talented woman developer I know!” and some people got upset. What did I do? I just meant to compliment the woman.

Because of the history of subjugation, torture, and discrimination against women in many countries, most technical industries have suffered from having far less women than men.

While many countries have certainly made great progress in correcting this, there are numerable contemporary issues which still happen every day.

One such issue – which is one more subtle than overt harrassment or behavioral discrimination – is the mere inclusion of ones’ gender in an irrelevant context.

Consider this: A person’s gender is completely irrelevant in pursuits of the mind. Technology conferences are completely concerned only with pursuits of the mind. Well, the good ones at least. I’m sure there’s a sketchy conference somewhere with a wet t-shirt contest.

There is only one context in which it’s alright to make note of gender: awareness and corrective measures. At a conference I’m attending this weekend for which I’m the WP Foundation mentor, there’s a panel called “Women of WordPress“.

That’s hypocritical! If equality is what we’re all after, a “Women of WordPress” panel is wrong, as it promotes one gender over another. What gives?

Just because a law is passed, it doesn’t mean an issue magically goes away in a society. That’s why many laws are passed; the majority determines the course of action, and demands that other must comply, or be punished.

Murder: illegal. You kill someone, you get punished.

When women were given the right to vote in the United States (1920), every man in the country didn’t magically become ok with it.

If a husband prevented his wife from voting, however, she could go to a police station and tell them. Provided the entire police station wasn’t filled with sexist people whom looked the other way, they’d have to enforce this law, and charge the husband, thus protecting the rights of the female citizen.

Many such rights movements occurred since then – and still occur today. Our society contains a great number of persons that, for any number of reasons, do not treat women equally.

As noted in the above question: because of the history of subjugation, torture, and discrimination against women in many countries, most technical industries have suffered from having far less women than men.

Events such as the above-noted panel are ways society can encourage women to pursue their goals, and let them know they’re not alone.

I asked this person to dance, and they said no. Why go to the party if they don’t want to dance?

See first question of this section.

Violence and belligerence

If someone bumps into me and knocks over my drink, that dude is getting knocked out – that’s just how I was raised!

While this behavior is rare (in a conference setting), it’s worth noting first. If your response to someone accidentally touching you is anything like this, you need serious help. I encourage you to seek professional help with anger management, and any other disorders you may be experiencing.

Well, I’m not physically violent like that, but I do get very opinionated. Once, when someone told me they love .NET, I called them a “dumb fuck“. It’s just that I care a lot about my profession, and can’t stand someone else being wrong.

There are many like you in the technology industry. Some have very serious anger problems, which can be addressed with the recommendations from the above questions.

Others feel that anger and a strong contrarian demeanor lends weight to their reputation; this is a topic discussed in the proceeding section, but it’s something I’ve seen in far too many colleagues.

I get really loud when I drink, but I’m a nice person. It seems to annoy people. What should I do?

Drink less, or shut the fuck up for once in your life. I digress.

Look, I know how it can be. When sufficiently intoxicated, I’ll write Objective-C, or play Beethoven. Others may hit on people, get loud, get physical, and so on.

They key is knowing your limit, and stopping before any of that happens.

Safe bet: Make a friend early on in the conference. Someone visible, whom you feel is responsible and honest. Ask them the favor of telling you if they see you do anything in appropriate.


No one talks to me. I get five or ten minutes into a conversation, and they leave. What the hell is going on?

If it’s a high number of people that have behaved this way toward you, it is very possible that you’re what many refer to as an “asshole“.

If it’s a pretty low number, or only the same people treating you this way, it’s entirely possible that they’re the assholes.

Asshole is a highly-subjective term, however, which posits a problem in using it as a behavioral descriptor, so let’s break it down into its’ common components:

Read official definitions of each primary term if you’re unfamiliar with the behavior it encompasses.

  • Egotism
    • Is someone writing bad or inefficient code? If you know a better way, that’s not a license to be an asshole. Get over yourself, especially if you want to go anywhere. There’s one caveat to this – if you’re a genius. If you’re a genius, go for it, be a shitty person if you’d like. You’ll still get paid.
    • Proud of a project, and want to tell others about it? Talk about the facts, not about how brilliant you are. Try your best to have some measure some humility.
    • Don’t self-describe as an expert. That’s not a title you get to give yourself. Others give it to you. After others refer to you as an expert, then put it on your business card. For fucks sake, never verbally say “I’m an expert so and so.”
    • Elitism and snobbery is ineffectual if you want anything from a person/community. Perhaps you use an IDE, and think those that use syntax editors are idiots? Nothing gets you on a shit-list faster than telling a colleague their workflow is stupid. We get that you’re passionate about it; write an article instead of making everyone dislike you. It’ll be easier to get what you want, as well. This is a tough behavior to correct if you’re much older, but it’s not impossible.
  • Rudeness
    • Don’t interrupt people. Ever.
    • Don’t dismiss ideas from others too readily if you think it’s a stupid idea. Acknowldege it, and offer a conjecture or rebuttal.
    • One-uppers: We get it. Everything you do is at least 50% cooler than what everyone else is doing. You’re likely lonely, or have an undeveloped sense of self-worth. Conversation is as much about listening and selectively contributing, as it is about blindly talking.
  • Ignorance
    • There are times where you’ll find yourself in a conversation over your head. Don’t bullshit. Tell the person(s).
    • Similarly, there are times where you’ll find yourself in conversation with someone that’s just nodding in a blind compliance, or saying things which are incorrect – even lying to impress you. Resist the urge to destroy them immediately. What’s your goal? Embarrassing, or educating them? Leave yourself a note, and send them an email later, eg “Hey, recalled you mentioned using the PerformanceTiming API in Safari. Can you tell me how? I noticed the spec is unsupported in Safari entirely, so wondering if you used a library?”. See? Super simple stuff.
    • Safe bet: Resist the urge to let someone know how stupid they are. Let it go. If you’re talking with someone that you’ve realized is more experienced than you, try to hold your own if they’re not an asshole. But remember the first item from this list.
  • Meanness
    • Don’t be mean, unless you know the person(s) to a degree you know it’s alright to take jabs at one another, either verbally, or physically.
    • Safe bet: Don’t be mean. Ever.

      I have a hard time talking with people. At conferences, I just keep to myself.

      I empathize with you – it took several years for me to be ok with engaging with others at conferences, and even longer to speak. What helped me was going with a friend. You’ll be more confident. Eventually, you’ll make new friends, and you’ll find one another. Then you’ll meet more. One day, you’ll be a snarky, pleasant, and obnoxious attendee, like me.

      The purpose of conferences is to meet people.

      Is it ok to ask someone if they have a partner (husband/wife/bf/gf/etc)?

      At a conference? What does that have to do with anything? Is it contextual to the conversation? Here are a couple examples.


      A: I work at home, too. It can be tough to stay focused with the kids running around.

      B: Yeah it can. Are you married? Does you partner work from home, or stay home at all during the day?

      A: I am, but it’s just me from 10-6 during the week.


      A: This venue is great! Such a nice selection of wine.

      B: Yeah. Hey, do you have a boyfriend?

      I have a hard time following the flows of conversation, and conversational cues are lost on me. Sometimes I monologue for a long time, and people get annoyed. How do I learn to talk to people?

      So, the short answer is: there may be something going on. Check out the “bigger picture” checklist above before anything. It’s worth noting that I have a friend with Asperger’s Syndrome who says this social-skills improvement site helped him a great deal.


      Can I hit on people? Make a pass at someone? Grab a butt? Lick a face? Sit on someone’s lap?

      Right, so I’m including a paraphrased version of an earlier section down here, just so we’re clear.
      Do not hit on people. Assume everyone is married, in a relationship, or is uninterested in having sexual intercourse with you.

      Do something about your self-control. It’s something that will be interpreted as creepy above anything else.

      Can I drink alcohol during the day?

      In my opinion – totally, but know your limits. Go with other people. Nice brewery around the corner, and no conference talks that interest you? Do it. But keep it light. There are many that find the consumption of alcohol – especially to the degree it’s done at conferences – to be a negative. Both sides contain merit; they key is being a reasonable human being, and not over-doing it.

      I don’t bathe; are conferences holistic-lifestyle friendly?

      Grow up.

      I want to take my children to a conference. Is that typically ok?

      This varies per conference. Some have specific activity areas for children. Others ask that children do not attend, to reduce liability, or to reduce the risk of interruption during sessions. Ask the conference directly; there’s no general rule.

      Why should I listen to you? I have way different opinions on this stuff.

      How has that worked out for you? I find the conclusions noted here to be implicit, so am really curious where and how I’m off the mark.

      This is weird. I find everything here very implicit. Are people really like this, to the degree that a post like this is even relevant?



      I have a snarky and vaguely-arrogant manner of writing, I realize. But all of the information contained in the guide above is entirely factual, and based on experience from myself, and peers. Do message me if you’re unclear about anything at all, or feel I should clarify any points.

      For many years, I was ignorant of how these issues are at an epidemic scale. As they occurred more in my own life, I began asking others. Then I read about it at-large. For women in particular, their lives are a daily struggle for many, and a life of fear and worry for others.

      I have some thoughts on where to go from here, but they’ll take work. This depends on severity of course, but generally the idea is to send the message that people if you’re found to be doing this, you’re professionally fucked.

      1. Anything criminal that’s done is immediately deferred to law enforcement. Immediately. Every item below thus assumes a non-criminal action, or an action that would not be pursued by law enforcement, such as some degrees of sexual harrassment.
      2. Problems must be met with immediate consequences for an offender.
      3. The first offense, depending on severity, is met with a one-year ban of that person from that event (and any related events which may occur on a regional basis), provided they agree not to approach, in any manner, the victim.
      4. The second offense, depending on severity, is met with a permanent ban from the event, as well as notifying all industry-related events the person may attend in the future.
      5. A registry similar to that of the national sex-offender registry should be maintained for repeat offenders and those committing criminal offenses.

      As conference organizers, we have the chance to send a very strong, very real message – but my list of ideas above has some fundamental issues:

      Does not prevent against the possibility of using this procedure as a means of “professional assassination”. It’s entirely possible one or more people could lie, to harm the public image of another. Conference organizers are not police officers. We have no authority beyond the event concerns themselves, and no resources to confirm whether or not something did occur.

      A more middle-of-the-road approach – perhaps just education, and more open communication between disparate conference organizers – may be sufficient.

      This procedure – if implemented as noted above – would also be cited by many as controlling, and too-harsh.

      I believe education really is the key here.

AffiliateWP: One Year of Quantitative Data, and Related Inferences

Just over a year ago, I sat with Pippin Williamson in the dining room of a large Victorian home on the campus of a college in Omaha – the venue for the first WordCamp Omaha. He was showing me his most recent symphony – AffiliateWP – a product he launched that April, with a mysterious New Zealand gentleman I’d soon become friends with, named Andrew Munro. After we discussed the project for some time, I was offered the opportunity to be a part of the AffiliateWP team.

Excited to be involved, I asked for two weeks’ lead time to thoroughly grok the codebase prior to my start. What followed was an exceptional year of development support for AffiliateWP; I’d like to share some of the data on what we’ve been up to, specifically on the topic of product support. Akin to what attracted me to employment at Maintainn, products owned by Pippin receive an extremely high standard of quality.

Given these two hats I wear, I know with certainty that support services for AffiliateWP are provided on-par with Maintainn – which is itself designed from the ground-up as a dedicated, full-service support company. That’s no small feat – I wish I could take credit here, but it’s largely due to the high standards of both business owners. Enough mushy stuff, let’s get down to…


brass tacks
brass tacks

Since AffiliateWP began, there have been 4,807 tickets created.

4,807 AffiliateWP tickets!

  Of those tickets, each customer creates about 1.61 tickets.

submitted We get about 6 per day – but that average is a bit off lately. Activity typically is in spurts, such as when a highly-requested add-on is released, or when one of the many integrations available have an update that adjusts one or more functional behaviors in AffiliateWP.

The busiest times are Monday and Tuesday mornings, between 10am and 1pm EST.


Our busiest day was a Monday several months ago, on which we recieved 156 tickets.

I don’t want to talk about it.

The busiest month was June of 2015, with 460 tickets created.

Although there are more tickets created per day this year than last year, this is due largely to greater market visibility, and users migrating from their old affiliate management platforms: compare-aug-annual


Helpscout, the web-app in use for AffiliateWP support, has a metric called “Happiness”. The question How happy are AffiliateWP customers? is asked; answered with customer-supplied ratings data.

As of September 24, 2015, we seem to be doing well – but there’s certainly room for improvement: affwp-happy

I’m not even sure I’m 87% happy on any given day, so this seems like a good place to be. The reasons for “okay” and “not good” range quite a bit:

  • Customers purchasing AffiliateWP without researching the product features, or creating a pre-sale ticket inquiry. For example, some may purchase the plugin thinking it provides outbound link-tracking functionality, despite AffiliateWP being an inbound tracking platform.
  • Asking for one or more customizations to the functionality of AffiliateWP (which, for time and resource constraints, we must decline). Thankfully, we maintain a list of experienced AffiliateWP consultants.
  • The rare occasion in which we’re not able to respond within our target window of 12 hours would sometimes result in an understandably less-enthusiastic rating. This is less common as we grow the team, but like any company, it does happen.

Support ticket topics

When a ticket is submitted, we tag the ticket with a wide variety of information to help us get a better understanding of several variables:

  • With what topics do customers need the most help?
  • Where should we target our documentation efforts?
  • Highlight possible areas that may need feature development

From the tickets tagged thus far, we’ve learned a great deal. Here are two major take-aways for me:

  • About one-fifth of tickets are pre-sale questions, many of which are concerning topics documented on Although we have extensive documentation, increasing visibility of the docs section of the site seems worth exploring.
  • Most inquiries are from customers with either the Professional or Plus AffiliateWP license – a good sign that most customers are initially reading the documentation available, and are able to easily get things configured. The topics for these support requests are usually highly-specific questions, such as “How can I add extra fields to the registration form?

What’s next?

AffiliateWP has great documentation – and we’re seeing some good usage from visitors:


– but we can do so much more. A significant challenge is keeping up with the consistently growing amount of features and changes in each update. To date, there are a total of 84 separate docs – some are short snippets, some are long, extensive feature implementation and general configuration guides.

My goal is to get this to 100 docs by years-end, focusing primarily on implementing developer documentation. One topic that I’ve frequently been contacted about by colleagues is how to create an AffiliateWP integration.

Although for many developers I need no more than to say “Extend this class”, a formal guide on doing so may result in a swell of new integrations for less-common use-cases.


It’s been a whirlwind year – Pippin, Andrew, and the generous AffiliateWP contributors have iterated and improved a staggering amount of features. Within the past year, I’ve completed more than 20 client projects developing custom AffiliateWP integrations and add-ons, and I’m pretty excited to populate the AffiliateWP documentation site with in-depth guides and developer walk-throughs. A comprehensive list of filter and action hooks? On the way :). On a longer timeline, we’ve got everything from more integrations and feature additions to the affiliate dashboard, to webhooks planned. Cheers to another year :beers:.

A Comprehensive Guide to Visual Composer Usage in WordPress

Hi! Today, I have some concise notes on how to best make use of the Visual Composer plugin for WordPress. The focus in this short tutorial is to maximize basic compatibility with other WordPress plugins and the active theme(s) on a site, as well as some general performance gains you’ll notice after following this tutorial.

Let’s get started!

1. Check to make sure Visual Composer is installed and active on the site:


2. Click on “Deactivate” to deactivate the Visual Composer plugin.


3. At this point, you may notice one or ten notices on your site, similar to this:


4. Deactivate and delete all plugins and themes that are generating this notice. Replace their functionality with alternatives.


5. Delete the Visual Composer plugin.


6. That’s it! You’ll now notice many performance increases on the site, as well as far less (or none at all!) errors being generated.


You did it!


LCARS is an operating system from Star Trek, designed by Michael Okuda.

LCAR_S (now featured on this site)*, is a WordPress theme containing the following attributes:

*Update: As I interacted with the site as it had the LCAR_S theme active, I realized that the LCARS design is a terrible UI for a site. I’m presently re-working the theme with a more relaxed approach to conforming to UI guidelines for LCARS. Essentially, building the skeleton using general site UI fundamentals – THEN adding in minimal LCARS stuff on top. The first iteration strictly adhered to the designs by Michael Okuda, and it made this site almost unusable.

WordCamp Baltimore 2014: Uncommon Javascript Libraries

Here are the slides for my talk given at WordCamp Baltimore 2014.

Also here’s a great article a factual article an informative article an article about Baltimore I wrote. You should read it if you’ll be staying in town a while.

WCNYC 2014: Avoiding Dangerous and Low-Quality Plugins and Themes

Choosing a theme or plugin can be as daunting a task buying a new car. We’ll discuss several points that will hopefully provide attendees with a list of indicators and features to look for when making these choices. The goal is to get a high quality product, provided by a company that offers support, should you need it.

Here are the slides for the talk Avoiding Dangerous and Low-Quality Plugins and Themes, given at WCNYC 2014. As always, please contact me if you’d like to discuss anything covered in the talk. Thanks!

WordCamp Philly 2014: Maintaining Sites with Preventive Development

Here’s the presentation and further resources for the talk “Maintaining Sites With Preventive Development” at WordCamp Philly 2014.

Links and Resources I Mentioned:

12: Dashboard Customizations

Basic WordPress Admin Customizations

11: Using Staging

Here are some great staging resources:

WP Engine – WordPress staging comes with all of their plans.



Can’t get staging setup? Go local. One of the best ways to do that these days is with ServerPress, or Vagrant.

Bonus: VVV by 10up is wonderful.

Bonus Bonus: VVV Site Wizard by alisothegeek <- Super cool love it big time Bonus Bonus Bonus: This excellent talk by Mark Jaquith at WCSF 2013.

10: Snippets

Github gists

A list of github gist alternatives

Coda clips roundup

nice collection of Coda clips

Design Shack snippets tutorial

Bonus: GistBox: a great helper app for github gists. Pretty neat.

9: Theme Frameworks

The use-case for theme frameworks and starter themes varies greatly. Here are some I’ve used that I find great to work with (when it’s relevant):


Bones by Eddie Machado and co.

Underscores by Automattic. The starter theme for me these days.

8: Project Management Services

Depends on what works for you. I’m hesitant to recommend anything here. But I do love Asana as a sort of ‘homebase’. For WordPress-based solutions, CollabPress is great, and you can extend it as much as you like. I use Basecamp constantly as well.

7: File Sharing

Same here. Hesitant to recommend specific. Why not try Dropbox? Any relevant deliverables should be available to both parties 24/7; that’s the only point being made.

6: Backup Options

There are several, of course, but here are the few I mentioned:

Backup Buddy by iThemes

UpDraft Plus – Great free plugin with a premium option. I use it on a number of personal sites.


If you’re getting started, I highly recommend this tutorial series.

Git Tower is pretty great to start with, as are the native github apps, if the command line is a bit daunting at first. Sourcetree is nice as well. If you’re submitting to for anything, make sure to take a primer on subversion if you’re new to that old-school fella.

4: Scoping the Destination

Here’s a great helper plugin by the mighty Andrew Norcross: System Snapshot Report

3: Training and Documentation

Here’s that great plugin I mentioned by Mark Jaquith: WP Help

Remember to check out and WPBeginner as well – great content on there, regardless of skill level, and of course, BobWP. You can’t go wrong with any of these.

2: Two Important Dev Practices

Using unique function names, namespaces when possible, and classes is an important general development concept. There are countless articles and resources on the subject, but here are two notes to help get things started in a way that is likely much more eloquent than my talk was:

Ryan Sechrest on namespaces and constants

Yoast on namespaces

1: Maintenance Contracts

Your support/maintenance contract should be hand-written. Sure, you’ll need to include some clarification and boring lawyer jargon in some cases, but it should be clear and easy to understand.

Here are some links to help get things started:

A website maintenance contract template by

Those should give an idea of what you’re after. Although I find the above template to be deeply long-winded, contracts are specific to your use-case and the use-case of your client agreements.

As always, just contact me via twitter or contact form if you’d like any clarification/direction.

WordCamp Miami 2014: a Touchy-Feely Retrospective

Just a heads up here - this post shows a strong display of emotion. I likely wrote it in the immediate post-conference glow, yet before ones' body collapses into a sleep-deprived shell devoid of serotonin and water. Please excuse my displays of affection, and know that, deep down, I am as misanthropic as ever.

I was lucky to attend WordCamp Miami again this year. I enjoyed an unbelievable variety of conversations, and the talks I managed to attend were excellent.

I tried an approach that I’ve been embracing the past year or so – and recommended by several-year veterans: more hallways, less talks.

One of the elements that are most notable to me in the WordPress community in particular is the large amount of like-minded people. It goes far beyond the software, and I find that ethics and disposition are refreshingly healthy with most people I get to talk with. There are conversations and situations I experience at every WordCamp that rival (actual) camping trips taken with my oldest friends.

I’ll miss many people here, but I’d like to touch on some of the interactions with the people I’ve been lucky to get to know a little better this weekend. Just off the cuff – no particular order.

David Bisset

David and the other organizers and volunteers did a wonderful job – the attention to detail, and affinity for embellishment showed them to be meticulously organized, thoughtful people. Some of the cool things that stand out are liquid nitrogen ice cream, massive giveaways – even BuddyCamp whisky glasses:


Shayne Sanderson

I started working for Maintainn – a WordPress support and maintenance company of which Shayne is the founder – this January. Almost immediately, I felt not only welcome, but productive, appreciated, and was surrounded by brilliant co-workers. Although I’ve only been with Maintainn for 149 days, I already consider the people there friends, especially Shayne. Also: 1. He wears super cool shirts, and 2. That guy can drink some Fireball.

Andrew Norcross

I’ve been very fortunate to correspond with Norcross as well as Brianna on several occasions online over the past year, and was really looking forward to meeting Norcross in person. I know it sounds corny, but he’s truly as insightful and generous in person as he is on the Interweb.

Josh Eaton

Josh has a baby on the way, and still made it to Miami, as an attendee and speaker. Moreover, with his hectic schedule the past few months, he’s still taken considerable time out of his day once per week to mentor me on general development as part of the WPMentor site. I was really happy to meet him in Miami and talk a bit (although it did prove tough to connect at length, as we were in different places more than expected). Josh – thank you for everything.

Daniel Griffiths

The multi multi-hour conversations I’ve had with Dan this weekend may be the most cathartic experiences of recent times for me. As the saying goes, we ran the gamut – speaking on everything from OSS ethics to firearms and space travel. However, it wasn’t until the networking party that, while we were both conversing with Pippin Williamson, that we realized we’d already connected online some time ago.

Around 6 months ago, Norcross tweeted a small service I like to do once per year:

Dan liked the idea, and wrote an excellent follow-up post, which is supremely humbling.

We spoke at length on the realization that tasks that seem trivial or compulsive to developers and designers, even basic WordPress installation and configuration of plugins, when executed well for a person or interest that needs a site, can be immediately life-changing for them. Some don’t have the money, and the reward of helping worthy causes without the financial ability to hire someone on their own is profound.

Tracy Rotton

Tracy is the lead dev at an agency in Maryland called RP3, and a friend I originally met at the Baltimore WordPress meetup. We quickly became friends, having attended a few of the same WordCamps this year and last. Although we live only about an hour away from one another, we incidentally hang out the most at out-of-state WordCamps. When at WordCamp San Fransisco in 2013, Tracy was generous enough to take me around her old neighborhood in the Mission district. Tracy is also the person that finally got me using SASS, in September of last year.

Michelle Schulp

The most fun conversations I had all weekend were with Michelle, hands down. I was introduced to Michelle last year when she created her template hierarchy design. We’ve conversed in Cyberspace since then and have seen each other at conferences as well, but I was able to get to know her here a little better. True story: Michelle is a great dancer. I wasn’t dancing, I was just at the same pre-party after-party post-party as she.

On that note, I truly feel like I should take Salsa dancing lessons before the next WordCamp Miami.

Pippin Williamson

By the time I’d found myself sitting at a table with Pippin, I was a few rounds in. I was all “Oh hey, your tutorials have profoundly helped me and I probably work with your code every day nbd”.

But seriously – very cool person. Singularly brilliant in conversation. No divergence, or non-sequiturs.

He’s really as humble and approachable in person as he is in support and comment threads.

Pippin’s talk on Saturday was largely focused on ethics and pragmatism in the development world. We spoke at the networking party at length on the topic.

Jeff Matson

Jeff co-hosts a weekly WordPress hangout with Jeffr0 – that’s where we first spoke. He works in technical support and marketing at InMotion Hosting. I had the opportunity to really get to know him better over the weekend. We both attended solo (a first for me at a conference; I’ve travelled with someone every other time), as did he, so there were many chances for “Oh, cool! Jeff isn’t up to anything for dinner. Jeff, let’s get some Cuban food!”

I love the direction that InMotion is headed in having a down-to-Earth, knowledgeable, pleasant person at the head of their WordPress involvement efforts. He’s like a Suzette Franck in the making, in that regard.

We’re both speakers at WordCamp Philly next month, so I’m looking forward to catching up then, too.

Jeff Chandler

Jeff needs no introduction, of course. I love the tavern as much as the next nerd, as well as the Weekly podcast. I enjoyed catching up and having a few with Jeffr0 – no filters, no bullshit, excellent conversation.

One of the qualities I admire most about Jeff is he’ll immediately rebut with honesty and conviction on whatever the topic is; from taaxis to food to anything WordPress-related.

Sarah Gooding

Possibly the most laid-back, pleasant person I met this weekend. As you know, Sarah is of course an editor on with Jeffr0, as well as co-host on their Weekly podcast. As anyone that reads the Tavern will know, Sarah provides a very deep contrast to Jeff’s style. The nuance, measured prose, and pragmatism present in her writing shows equally as strong in person.

Thomas J Griffin

I only spoke with Thomas for a few moments, but I tried to make the most of it. Knowing that I can install a plugin on virtually any WP site without any notable issue is a massive luxury. Soliloquy – and everything else he’s done, is that well-made. But you know that.

It was nice to be able to thank him in person.

About 8 months ago, I contacted Thomas via a mutual friend about a small javascript tweak in Soliloquy I was wondering if he’d make, or provide advice on. Fifteen minutes later, the tweak was added to Soliloquy itself. Very cool guy.

Suzette Franck

I. LOVE. HANGING. WITH. SUZETTE. Uplifting and engaging, I always take away a good perspective when we’re hanging out. We met at WordCamp Miami in 2013, and bonded via my intense love of the (mt) gridservice hosting plan. Having been a long-time, happy customer of Mediatemple, I was really looking forward to meeting some Mediatemple people. They literally hired the best possible person they could have to be their WordPress evangelist.

Brian Messenlehner

I met Brian on Friday during BuddyCamp, as he was demo-ing the Oculus Rift for people. Over and over, he’d take the time to walk them through intense 3D interactive scenes. It was really cool to see something like that at a WordCamp. Indicentally, I’d JUST finished his book, Building Web Apps with WordPress, and he was generous in letting me pick his brain for a while about it.

Although I was not his dance partner, he is also a good dancer, I’ve learned.

Brad Williams

This is techinically the third time I’ve been lucky to hang with Brad – no small feat for me. The first was brief, at WCSF 2013, and then again later that year in Baltimore.

As anyone who has spent time with him would tell you, he’s extremely approachable, down-to-Earth, and beyond knowledeable. I have since resisted asking him to sign any of his books that I’ve had for years now – but I think I’ll do that in Philly next month. Why not?

We…partied heavily. He and Dre Armeda are truly champions. I mean…I’ll need special training to keep up next time.

Brad Touesnard

The other Brad I spent some time speaking with! WP Migrate DB Pro – something Brad is entirely humble about – has significantly impacted my day-to-day support ticket turn-around time. There are countless cases in which it’s saved me endless time and headache. I really enjoyed getting to pick his brain during the networking party.

Ptah Dunbar

Patron Saint of WordCamps. I barely know Ptah, and I feel that way. Incidentally, we didn’t end up talking too much, but the times we did were filled with hugs and drinks and WordPress.

Zac Gordon

There’s a type of person that, as soon as you begin speaking with them, you find their disposition wonderfully infectious. That is Zac Gordon. ALSO: BEST DANCER AT WORDCAMP MIAMI. I got to talk with Zac at length about his work at Treehouse, as well as what’s coming up next for his WordPress series there (it’s very cool stuff). Once he ate a mango like an apple.

This duck

This was a cool duck. There were many on the UM campus, but none like this one.

Her name is Duck.
Her name is Duck.