A tiny argument against merging the REST API plugin into WordPress core

Normally I’d start with a history lesson, but for this I’ll cut to the chase since most of you reading this already know what I’m talking about…

Projects like Django function & thrive without their REST API in every core installation. Not being in core means the component maintainers are able to develop independently of any core release cycle – both faster & slower if need be.

Externally facing API’s are a mouse on a wheel. Just as XML-RPC is ready, REST is here to take its place. Once we are all comfortable with REST 10 years from now, something else will replace it to, and so on.

WordPress is of the size and popularity now where building wp-admin into a hybrid of REST & AJAX calls will be confusing to future contributors.

Going back and rebuilding wp-admin to be fully REST is a thankless job, and would take ten years to complete at the current pace. It’s more likely wp-admin would be replaced, which would break backwards compatibility with existing plugins. It’s akin to hiding Windows 3.1 under the 95 skin, and abandoning all previous applications. No way.

Many contributors see a core-merge as a natural graduation path to their efforts, for lots of things – even small things like ideas and recommendations. We get attached to them, and define success & ultimate acceptance as the end result being gifted to the world via WordPress core.

That path is unrealistic for most, and unhealthy for WordPress in the long run. This is why plugins exist, and why plugins are awesome. The REST plugin is one of the most awesome ones, and it should stay that way so that the team of passionate people who love it, can continue to love it by totally avoiding core conflict.

Maybe it gets bundled with WordPress like Akismet does, but it needs to be activated to work. Maybe it comes active by default, and can be disabled or deleted for those who will never need it.

A merge into core, right now, I think is still not the right call.

For years I wanted, pleaded, planned, and architects the concept of user profiles and activity streams on WordPress.com. I still think it would have been enormously popular (and still can be) but looking back, I understand now how my ideas didn’t match Matt’s overall vision and needs for a product that he designed originally.

I think the REST API is a similar thing.

This project is so huge and the media attention so great, it is now bigger than itself. It’s almost less about the code/team/effort, and more about the spiritual support and endorsement of those efforts. Maybe that’s what I’m turned off by right now – that it’s been so long, it’s impolite to suggest a core-merge of this code isn’t the right thing to do.

FWIW, even if it had 100% API coverage, I still don’t think I’d want it on in core WordPress by default, because spiritually I’m really vibing on features like this being optional plugins right now, and I’m afraid that a core-merge will complicate the momentum and progress of the REST API core code once it’s in.

My $0.02. Don’t mean to offend. And I’m down to help anyone no matter what the end results ever are. 💜
P.S. I wrote this totally from the iOS app, which was a pretty pleasant experience. Great work, from a team of developers outside of WordPress core.

Berenstein/stain Bears

Do you remember The Berenstain Bears?

Do you, like millions of others, misremember them as the Berenstein Bears? I remember reading about this years ago, and now the web has caught up – people are freaking out about glitches in the Matrix, alternate realities, and other malarkey.

Brace for impact…

It’s always been “Berenstain”.

I very vividly remember my 2nd grade teacher “correcting” my saying “stain” in front of the entire class. I used to read books to the class, repeatedly, every week. The Pokey Little Puppy, The Monster at the End of This Book, and a bunch of other favorites that my mom used to read to me.

The Berenstain Bears was one of them.

This phenomena was created by adults without appreciation for detail, who propagated one mispronunciation to impressionable young minds. It’s the same as everyone playing Monopoly incorrectly for decades.

Human minds naturally trust ubiquity & do not reprocess solved problems.

The lesson? People all around you accidentally influence your perceptions, in ways that have seemingly invisible yet long-lasting effects.

Concepts like discrimination, racism, classism, ageism, and so on, are ideas handed down to us by the people that came before us.

You can continue believing what your memories have convinced you over-time as real, or you can accept reality as it presents itself today, tomorrow, and everyday thereafter.

There are no super heroes or villains. No aliens. No ghosts. No time travel. And definitely, without question, no Berenstein Bears. 🐻

Meta Icon v1.0.0

In my job, I work with a lot of meta-data. (If you’re not sure what meta-data is, go search the web & come back; I’ll wait here…)

I’m frequently annoyed at a lack of an icon for it. Unlike technologies like RSS, HTML5, and so on, meta-data is harder to visualize and define because it means many different things in many different applications.

In WordPress, meta-data traditionally refers to our arbitrary key-value storage system for primary objects like posts, comments, users, taxonomy terms, and so on. It also refers to the team of mostly-volunteer staff that help build & maintain wordpress.org and the surrounding galaxy of sites connected to it.

Right now, WordPress’s Meta team uses the networking icon as it’s mark, which isn’t bad, but I don’ really think it’s right. It looks like this:

Screen Shot 2016-09-04 at 12.20.48.png

I was also working on a WordPress plugin for multisite blog-meta, and couldn’t find a suitable icon, so I decided to take a stab at one myself.

Of course, it’s likely a similar design exists somewhere for something else (and any similarities are accidental & coincidental) and I have a bad habit of thinking I’ve invented something only to learn someone on the web beat me to it.

I figure, it’s better to put something out into the world for scrutiny sooner, so here’s what I came up with in a pinch, and you can see it in action here:



All of the assets are up on Github, pull-requests encouraged. ❤️

P.S. Please don’t sue me if this icon is already a thing. I promise, I had no idea, and Google’s reverse image search came up empty, so maybe you should look into that instead of bothering lil’ol me.



Tone is more important than the words you use, until all you have is words. On the web, we’ve skirted tone for a long while with emoticons. :) Thankfully, the wide adoption of Emoji is rescuing us from writing obscure combinations of syntactically invalid punctuation, and I think that’s a good thing.

If you read as much as I do, then you already know words like “just” & “that” unintentionally discredit your ideas and pitches; you know body language & confidence will win people over more than a lexicon of jargon; you know how hard it is to put biases aside and trust the data.

The data about written communication, is that we all suck at it.

Everyone, across the board, at both reading & writing, sucks at it, including me. I spend a lot of time, most of my professional career, not just thinking about social software, but how to improve both the value and the return-on-investment of the ways people socialize online. I think the answer, for me, is etiquette.

Different groups of people, teams, factions, etc… have an established rapport. They found communication styles & mechanisms that work well enough for them to have considered that problem solved-enough, so they can move onto solving bigger problems. When these patterns deviate outside of traditional or societal norms, is when it becomes increasingly difficult to break into those groups.

On a large scale, I can’t break into the Japanese WordPress User Group because I don’t speak a lick of Japanese. On a smaller scale, I can’t help my village planning commission make decisions because I don’t know any of the ordinances. At home, I can’t tell what Paul the dog is really thinking because he only understands a few dozen words and I don’t speak dog very well.

For teams of humans, working together to address intersecting needs, we’ve worked for thousands of years to lower the barrier of entry into these groups. Grunts turned into syllables, words, phrases, and sentences. We introduced syntactical structure to convey pauses, stops, and rests. But when the web exploded, we froze almost all written language because it’s now the web’s biggest dependency. We can’t delete “Q” from the English language entirely because wp_enqueue_script wouldn’t work anymore.

All of this is to say, that we need to learn how to do better with what we have today, because there won’t be much new for the rest of our lives when it comes to written communication. To do that, means a few different things…

  • Lurk. We all need to read, listen, & absorb. This includes understanding the general vibe of who is all involved, and deciding if it’s compatible with you.
  • Respect. Groups of people have established processes. No one can change these easily, especially someone new & full of enthusiasm to rock everyone’s worlds.
  • Decide. You need to choose where you think you fall in the pecking order, and make no mistake, there is a pecking order. Even flat organizations have a hidden social hierarchy. Understanding Social Dominance Theory will help you, here.
  • Introduce. Once you have enough data from lurking, you can slowly start to apply what you’ve learned. Sometimes this means humor, sometimes strictly business, or other times it means only lurking and not getting involved at all.
  • Pace. Now that you understand the social dynamic, and have decided where you think you belong in the group, it’s time to try to keep the pace. Traditionally, this is called “fitting in” but it’s important to earning the trust of your new acquaintances.
  • Pass/fail. You’ll know pretty quickly whether any of your above efforts have resonated positively or negatively, and each interaction will echo through-out the group. Someone will mention you, one way or the other.
  • Stay/bail. The level of joy you receive from any group of people should be the underlying motivator for driving your decision to stay or leave. If it’s rewarding, healthy, and fun, then stay. If it’s causing harm to yourself or others, my advice would be to consider anything else.

“Us vs. Them” is a real feeling, because we are – all of us – are constantly at odds with each other. In our base programming, we are animals, sizing each other up, and fighting for scraps. Sure; we are mostly domesticated animals, but during times of distress or high-anxiety, you can watch people become animals & treat other people that way too, and triggers could literally be anything from allergies to relationship issues to PTSD and on…

When it comes to WordPress’s leadership, or BuddyPress/bbPress, or really anything else, these same rules apply, but increasingly so because almost all of our communication is non-verbal. This means a million people may read your words and hear kindness in your written voice, but the one person you want to hear kindness may only hear rage, for reasons that may or may not have anything to do with anything you did or did not do. Phew!

My proposed solution, is etiquette. More pleases, more thank-you’s, more awareness of who is involved in what, who is in charge of what, who has earned what, and who the who’s are and what they want to be when they grow up. This means a base-level respect for everyone, regardless of your history or lack-there-of. It means reading your words back to yourself and trying to convey a smile without using :) or 😀.

Ultimately, it means being patient, and taking the time to craft your words so they will sound like a well-intentioned contribution to your audience.

For slowing down, I’ll recommend you try switching your keyboard layout. In 2010, I switched to Dvorak – when my 100wpm plummeted to 20, those 20 words needed to matter most. Twitter’s 140 character limit maybe helps with being succinct, but I don’t know that length is as important as word-choice and knowing your audience.

Lastly, it helps to know yourself, and have a relatively clear idea of who the people around you think that you are, and how similar that is to who you think you are. If people think you’re always goofy, and you think you have something serious to offer, changing that perception is not going to be easy, and it may take a number of years to swing people around to accepting your style & approach for what it is.

I think if everyone has a bit more patience with each other, and we all take the time to consider the ripples we leave in people’s lives, we can communicate with written words in ways that don’t sink ships or hurt feelings.❤

Dear Automattic,

I know it’s been 3 years since we split up, but I wanted to reach out to say that I’m sorry for all of the pain I caused you.

You see, back in 2010, I was on top of the WordPress world. I had great clients, was making OK money, and was making a move away from a city that hated me (Miami) to a city that might hate me less (Providence.)

I gave up my clients and my money to pursue you. I switched from Qwerty to Dvorak for you. I even tried new things I knew I would hate to try and make things work between us. I gave you my best ideas about Jetpack, Reblogs, Followers & Likes, but once I had you, you weren’t what I expected you to be…

That was my fault, for putting you on a pedestal. I set expectations you weren’t setup to meet for me.

When you asked me to join you as part of your distributed workforce, I asked if I would have to wear pants. That quip echoed through the company culture enough where The Year Without Pants was the popular vote for a book where I’d only be mentioned a few small times amongst a team of top-tier Automatticians.

When you asked me to work on Jetpack, I wanted to work on WordPress.com Profiles. I still think user profiles are a live cavity that desperately needs filling to make WordPress.com more enjoyable, but you didn’t agree. I know now that that’s okay, but back then I was pretty deflated… lost… really just aimless for a while.

When you asked me to try out VIP, I was excited to try out anything new (because back then changing teams wasn’t really a thing) but we both knew I’d be miserable in ZenDesk all day, so it was really just a kind way to force a mutual decision, and that’s okay too.

Looking back at our time together, there are some things I’d do differently, and some things I wish I had the opportunity to see through. I joined you with an agenda, which wasn’t fair. I wanted a very specific role that I felt entitled to; that I had earned; that I proved my worth a hundred props over. I wanted a role where I could experiment and set trends and feel like I was trusted to make decisions and change you for the better.

I guess I was pretty terrible to you. I mean… I never talked bad about you, or put you down, or made you feel less-than. But I wasn’t giving you my full effort or attention, because I felt like the open-source WordPress.org community work was more rewarding than the WordPress.com for-profit work. I felt entitled to work on BuddyPress & bbPress the way Andy & Sam had before me. I felt like there were things I wanted to accomplish that I expected you to support me in, and when I didn’t get my way, I wasn’t happy about it.

I like to think that in 3 years time, I’ve learned a bit, changed a bit, maybe grown a bit, and spent a few minutes here & there deep-in-thought about our time together, trying to unwind it and learn everything I could from it. There’s good memories & bad, ups & downs, but my personal takeaway is that I wasn’t a very good employee, as far as employees go.

You gave me all of the things that, on paper, make a great career and environment. You gave me freedom and liberty to work at my own pace and learn — I mean really learn — how to work within a complex environment of systems, people, interests, wants & needs. I could have probably been happy with you for a very long time, and I think you would have been happy with me too, but I let my pride & vision of what I wanted for myself prevent that kind of relationship from ever really maturing.

So, Automattic, I’m sorry. I’m really proud of what you’ve become since I left. It’s exciting for me to watch you grow, knowing that deep in the commit logs & company lore are a few of my fingerprints. I’m really happy that you’re branching out with WooCommerce, Calypso, and all the other neat little secret stuff that no one is supposed to know about but everyone kinda sorta knows about. It’s great that you continue to employ hundreds of people, give great benefits, and try to treat everyone fairly.

I’m not sure if you’re the one that got away, but I hope that no matter what happens with this whole WordPress thing, we can always be excellent to each other going forward.

Thanks for the memories,

-JJJ ❤️

Today’s Software is Terrible

Are you a software developer? I am, and everyday I’m embarrassed by my profession.

Every single day, I run across some website, app, video-game, program or plugin that is egregiously broken; embarrassingly broken; 5000-developers-with-six-figure-salaries-and-free-catered-lunches-and-still-can’t-get-it-right, broken.

Apps on my phone, tablet, computer, tv, and car, crash constantly, sometimes resulting in actual data loss. We shoved television behind a pay-wall in a cube that buffers and loads more than it presents anything. We broke copy & paste, because who would ever want to paste a password anywhere? Form fields do this shit where they want to autocomplete and autocorrect and autofill 3 different suggestions at once. We connected wrist-watches to the internet to draw doodles back and forth that don’t even send half the time. We hid mechanical engines behind electronics so complex there is noticeable lag driving performance cars. We connected entertainment systems to airplane diagnostic systems, so passengers can see how high up they are. We connect doors to the web to unlock them remotely, but firmware updates brick them and now you’re locked out of your house. We connect smoke detectors to the web and now the entire house & every connected device in it is beeping because you grilled a burger-patty, and the app on your phone to stop them isn’t responding.

Today’s software is a perpetual nightmare machine of non-stop frustrations.

Writing software is hard, mostly for reasons that don’t actually involve the software itself. I could go on about stakeholders, or how project managers are whatever. I could say that developers should be left alone to concentrate. I could say it’s nobody’s fault because it’s everybody’s fault. I could say all kinds of trite crap to poorly defend the people that populate the position I hold most dear, and currently the most fun job I think anyone could ever hope to perform.

I could say lots of things, but they’d all be lies.

The harsh truth is that many of you shouldn’t be writing software for production use, because you’re just not that good at it yet. You’re not experienced. You haven’t shipped anything. You don’t know how to recover from the damage you will inevitably cause.

You break people’s shit – constantly, anonymously, and without repercussion. You aren’t meticulous in your life, you don’t care about etiquette, so you won’t do your employer any better, and you certainly won’t care if any of your users complain on Twitter.

Sure; mistakes happen. We all overlook stuff. That’s how you learn, right? By repeating and improving and discovering what you missed the previous times. And there is more to discover everyday, because there are more & more design patterns and philosophies and dependencies and processes and teams and stakeholders and deadlines and Carl called in sick and no one understands what he even does here anymore but it’s suddenly critical to today’s problems and why is this line of code 500 characters long and who messed up all this whitespace and why can’t we all agree not to use ternaries and why does this class inherit from 5 other classes and on and on and on.

Software is eating the world, but… garbage in, garbage out. So, what can we do?

  1. Be meticulous. Someone will undoubtedly refer to you as OCD, or apply some other insulting derogatory bullshit label. Screw them; they suck at their job anyway.
  2. Pay attention, to everything. You are the Axel Foley of software development. Writing code and fixing bugs is target practice for your soul. Do it constantly, rearrange the pieces in your mind while you shower, and take everything in. This means watching, listening, learning, while writing less and solving more.
  3. Be vigilant. Everything around you is intricately balanced and ready to come crashing down at a misplaced semi-colon’s notice. I’m not joking. You can very easily cause millions of dollars in revenue losses by breaking just 1 dependency in a complex chain. Code is poetry, but it’s also contagious.
  4. Be respectful. Push your chair in. Hold the door for everyone. Smile at people, even when you’re grumpy. Someone has to maintain the terrible decisions you’ve made once you level-up & move-on, and that’s easier to do when you like the person who’s shadow you’re in.
  5. Contribute to open-source. This is where you earn your lumps; not behind closed doors, not in a sweet corporate environment, and not sitting at a desk sipping a mocha-latté. You need to jump up on stage, give your best performance, and embrace the tomatoes and boos, because you’re probably going to be terrible for your first few rounds.
  6. If it ain’t fun, it ain’t right. Once you stop feeling joy from the software you’re writing, it’s time to move onto something else. Sitting still and being complacent isn’t healthy, even if it feels pretty natural not to burn all those calories moving on to newer and more exciting endeavors.
  7. Make friends. Like, real ones. Ones that will come to your wedding from across the country. These are the people that will remind you how good you are when you need them to, and they’ll have your back when you’re not having fun anymore.
  8. Learn how to make soup. Not even kidding. Understanding how to make the best of what few ingredients you have is essential to writing good software. Embrace your constraints, and don’t be afraid of butter or salt because they’re universally delicious.
  9. Challenge authority constantly. Most people have no idea what they’re doing. They were asked or tasked with a problem, and either they follow the above methods or they pass the problem on to someone else. They’re in a holding pattern, until the next big thing happens to them, instead of making big things happen around them.
  10. Find mentors everywhere. Follow a person around that you want to be like, take bits of pieces of what works for them, and apply them to your life. Steal, plagiarize, and sample small enough traits until you’re an amalgamation of the hippest, funniest, most awesome people you’ve ever come across.

Then, after all of that, sit down and write the best ‘effing software anyone has ever used. ❤️