#wpmom is a hashtag

If you’re reading this, you’ve probably already heard that Kim Parsell died over the holidays. Her loss is almost incalculable for the WordPress community — she was a longtime contributor with a tremendous impact on the parts of the project she touched, a speaker, a leader of teams, a no-bullshit speaker of truth and at the same time a deeply kind person.

She was truly loved by many people in our community. She was the kind of person we all have in mind when we fiercely defend online relationships to the few people who think they’re somehow not as good as “real life”. She was also the kind of person who was at the top of your list to meet any time you could possibly make it happen. (I never did. We planned to meet up on one of my trips out there to see my husband’s extended family, and then I had to leave early due to a blizzard. It’s high on my list of reasons to hate winter.)

Kim was often known as #wpmom — especially when she was gently nudging overcaffeinated and hyperfocused devs to remember to eat lunch or get at least a few hours of sleep in a day.

But here’s the thing: #wpmom was always a hashtag, never a username. It would’ve been the easiest thing in the world to set up a second twitter account to dish out life advice, anonymous but not really anonymous to anyone who knew her; instead, it was all about the act of reaching out to care for each other in little ways. And that isn’t one person’s job. We can all — we must all — take on some part of that role.

RIP, my friend. And all y’all: take care of yourselves and each other. And eat some lunch.

Pulling the plug on Sassy_s

After I type up this post, and before I hit publish, I’m going to shut down my Sass fork of underscores1 — and for the happiest of all possible reasons: _s now includes Sass out of the box. If you’re starting a new theme based on _s and you also want to use Sass (which you definitely should), you can now go to underscores.me and with the power of a single ticky-box2, you can customize your own starter package to include the Sass files.

When I started Sassy_s, it was the only Sass + _s project I could find. Within a few weeks, I heard of 3 or 4 others starting up, all of which took slightly different approaches to workflows, add-on libraries, degrees of automation, and so on. The Underscores team has taken a great deal of care to adopt the best parts of all of those early projects and others that came since, and to handle — probably more kindly than I could — a number of suggestions that just don’t fit with the model that they decided on. Congrats to you all. I can’t wait to start building stuff on this version.

And with that, goodbye, Sassy_s. It was fun. I learned a lot from you, never kept you updated as often as I should have, and definitely put you on my resume anyway. Along the way, I hear you also gave some other people a handy place to start their projects.

  2. It’s in the Advanced Options

Standing desk 0.1

20140113-105324.jpgI asked twitter yesterday for DIY standing desk advice, and I got some great stuff — a lot of you have some pretty cool setups!

Sadly, I also remembered that a trip to Ikea from here is an all-day experience, and I won’t have a free weekend again until, umm, March maybe? So this is standing desk 0.1 pre-alpha, designed to get started today using crap I already had around the house.

I did end up spending $13 on the white shelf; it’s a shoe shelf from the closet organizer aisle at Home Depot. I was looking for something that was (a) close enough to the right height to work on it for at least the next few weeks and (b) wide enough to handle either the laptop or the desktop keyboard. (I use two machines rather than a docked laptop. Because reasons.) It’s about a half-inch too high, but once I get a decent floor mat, that will just about even out.

The second shelf was basically a bonus — I was looking for the right height, and this is what I found. But it turned out to be the best part of the design, and when I upgrade to a properly built standing desk, I’m definitely going to incorporate storage shelves in some way. It houses the Mac Mini, charging space for devices, a drawing tablet (not used often but now always at hand), the desktop keyboard while I’m using the laptop, and VERY importantly, the pile of paper clutter that used to be on the desktop, now much more neatly contained. So much better than having all of it out and competing for space.

Monitors are behind the desk on some cheap wire shelving we had in the shed, on top of a tv table. It’s way more rickety than I’d like, and I definitely wouldn’t recommend it in an earthquake zone. To get the right height, I’m also tossed in the two thickest totally out of date computer books in my library — to give you an idea, one of them is on HTML4. This whole piece of the setup definitely needs revising, but it’s workable at least for now. One advantage: using the shelving gives me even more storage space, albeit not as easily accessible as the shelves on the desk — my next step will be to use some of that space to clean up the crazy mess of wires you can see under the desk.

So, tl;dr : 13 bucks and some junk cleaned out of the shed. Tons of storage. All of it beaten with an ugly stick. Revisions to come!

WordCamp Raleigh 2013

WordCamp Raleigh v. 4.0 was this weekend, and it was a delight. This was the first year the camp has been held on NCSU’s Centennial Campus, and for the most part the venue change was a huge improvement — as an unashamed urban snob, I really missed being downtown with all the restaurants/bars/coffeeshops right at hand. But on the other hand, every other thing about the location was a big improvement. When I’m queen of the universe, every tech conference gets power outlets at every desk.

(As for Centennial itself, my husband went to State back in the architecturally benighted days, and he keeps walking around going “wait a minute, I don’t remember any engineering buildings actually looking good…“)

I posted the other day about a single point that I wanted to address on its own, but I don’t want to walk away from the weekend without a more general overview of the highlights:

  • At the opening session, the organizers asked for a show of hands, and I’d estimate that 70 or 80% of the people in the room were at their first WordCamp. There are people in the community who go to lots and lots of camps, do a ton of networking, speak, make friends around the country (and the world), but there’s nothing like an audience of brand-new attendees to bring home the point that these events really are about their own local communities. To any first-timers who make their way to this post, I hope it’s your first WordPress event of many more to come! 
  • I had a series of great, energizing conversations over the course of the weekend with some Joomla! community folks who were there, including one of the organizers of the recent Joomla! World Conference where Matt keynoted. There’s so much that the open-source CMS world can learn across project lines, and so many common projects and interests we all work on in our own spaces — whether it’s organizing events like these (much praise for the amazing planning process and resources we have at WordCamp central), getting the right balance of supporting users who just want a solid product and supporting the developers who make it all go, general education and promotion of open source… If anyone still has any doubts on this point, Joomla! and Drupal and Typo3 and all the rest of ’em are not the enemy.
  • I love tech talks that are well-targeted at something specific. It’s not that “here’s an overview of framework X” isn’t sometimes fun, but they tend to be either too much or too little for me. David Herrera’s session on Unit Testing for the Almost-Intermediate Developer was just enough to hit that sweet spot: I went in desperately needing a good kickstart for my own testing practices, and that’s what I found — just the right bits to get me started writing and running unit tests for my own work, without stopping at “hey, you should test!” on the one hand, or getting into all the details of the whole PHPUnit library and its entire history in WordPress on the other.
  • Finally, at the risk of humblebragging, a conversation I had when I was practically on the way out the door on day 2, with a speaker who saw my talk on getting involved with the community at last year’s camp and took to heart the message of giving back what you can, whatever level you think you’re at… and this year he applied to speak. I’m incredibly humbled and grateful when I hear back from people who got something from any of my talks or classes, and all the more so when there’s such a tangible outcome. Ray, the credit’s all yours. Congratulations!

As always, many thanks and congratulations to the Semper Fi crew and the Raleigh WordPress Meetup (which meets in Durham. Go figure.)

WordCamp Professionalism

NOTE: I posted this before I talked to the speaker in question, and I’ve done so since — I want to apologize here for posting in the heat of the moment when I should have raised my concerns in person first. The points still stand, not only for WordCamps but for conference presentations in general, and I’d love to turn this in a more productive direction in future posts with speaker tips, resources, organizer tips, and things I’ve learned the hard way myself. Finally, speaker, thanks for taking this as decently as you did. I hope I’ll see you at the next camp.

I’m sitting here in the break between sessions at WordCamp Raleigh, and I had to dash of a quick post about the session I just saw. Not because it was so awesome, sadly.

  • First problem: the presenter did a live coding demo. Now, it’s possible to do a good live demo, and if you can pull it off, they’re amazing. But that requires a very well-rehearsed and very carefully controlled demo, where you’re building toward some specific effect that can only play live. Good examples: Lea Verou’s CSS demos, where she’ll build a single very cutting-edge element (and, let’s note, using a visually simplified environment she built just for live demos!). The amazing JavaScript WAT talk (which gets huge points for building to a punchline while also digging into some thorny points of the language). Don’t just switch to an editor to say “and here’s how to use this plugin in your theme files”. A few well-chosen one-liners will do much better.
  • Much more of an issue, for me: “This is one of the sites I built. It looks terrible because the client didn’t want to pay up for responsive.” Do I even need to mention what horrible client relations this is? We’ve all built sites that look dated a few years later; the web is a fast-moving medium as we all know. But if you really think it looks “awful”, pick another site to show off. If it’s passable, don’t mention it. WHATEVER you do, you don’t blame your client for being cheap.
  • “I don’t know” is a perfectly valid answer. There was an audience question about the GPL and its relationship to paid plugins, and the speaker just plain got it wrong by telling the questioner that GPL is incompatible with charging money — now, I get that it’s a tricky question even for people with a lot of experience in the field. And it wasn’t what he came prepared to talk about. Honestly, if it wasn’t for the earlier issues, I’d correct the facts and give the guy a pass. But that’s where the magic “I don’t know” comes in. Nobody speaking at any WordCamp (yes, even Matt!) knows absolutely everything. And if “how does the legal issue work” isn’t in your wheelhouse, nobody will ever fault you for saying “hey, I don’t have the expertise for that, is there anyone else in the room who can help out with that?”

WordCamps are informal, fun, community events, but they’re also the first introduction many people have to the community, and even to going beyond their first steps with the software. When we took a raise-your-hands poll at the opening session this morning, something like 3/4 of the attendees were at their first WordCamp. And WordCamps are the first conference speaking gigs for a lot of people too (including me!) — so it’s understandable that they may not be the most polished presentations out there. But any speaking gig, and any audience, deserves preparation, attention, thoughtfulness, and a dose of Wheaton’s law.

(I didn’t put this on the official hashtag because I didn’t want to call the guy out in short form. But there are some points that seemed worth saying at more length because they might help future speakers.)

Totally, Utterly Petty Reasons to Contribute to Open Source

Yeah, I know you have big highfalutin’ ideals about Open Source being better software made with better development practices to better serve truth, justice, and yummy ice cream for everybody. I have those too. But let’s be honest — there are plenty of completely shallow, selfish, and totally un-idealistic reasons to do it too. How about:

  • You want to whip out your phone at the bar and say to your friends, “see that link? I made that one.” (Note: you might want to look into some better bar tricks.)
  • You really, really, really hated that typo, even if it was in inline docs and the general public never knew it existed.
  • You contributed to the last two releases, and three of anything makes a streak.
  • You contributed to the last three releases, and if you break your streak now, you’ll feel totally OCD about the gap in your record for ever and ever.
  • You feel an unhealthy attraction to those big buttons on http://scotchisforshippers.com/

The thing is? Who cares what your motivation was! The patch is still another tiny step to making the whole project better. The fact that your motivations weren’t quite on the level of world peace and ending famine is between you and your text editor.

WordCamp San Francisco recap

I went to WordCamp SF last weekend and it was pretty cool.

This was my first WCSF, and the first day featured a whole lot of meeting people in person for the first time after working with them online for (in some cases) years. Who knew all those avatars had actual bodies and voices attached?

I spoke about contributing to WordPress, talking in particular to new contributors and non-developers, who often find it especially hard or intimidating to get started in open source work. Slides are here: WordPress: It’s Made of People, and videos of all the talks will be posted at wordpress.tv. I got great responses from the audience, and even better, saw a bunch of the people who talked to me about the talk at the absolutely massive contributor day on Sunday.

Some highlights among the other talks:

  • Mark Jaquith on “Confident Commits, Delightful Deploys”, Eric Mann on automated development with Grunt, Alison Barrett on unit testing, and Mike “Shredder” Shroder on the WP-CLI library collectively gave me a great to-do list for building up my dev game.
  • Ian Stewart, Konstantin Kovshenin, and Shannon Smith had great talks on themes and theme development. And I heard amazing things about Josh Broton’s front-end dev magic, but I was in the other room!

I’m incredibly annoyed that I still haven’t figured out that whole space-time continuum, can’t be two places at once problem, because just about every session I went to had something I wanted to see almost as much going on in other room. I’m pretty sure I would’ve been just as excited about the conference if I’d gone to a whole list of things on collaboration, content strategy, communication… 

On contrib day, I spent most of my time upstairs working on training materials and videos for theme developers, including a great sit-down and mind-meld with Philip Arthur Moore from the Automattic theme team on the subject of standards & best practices for theme devs. Back downstairs, ALL THE CORE DEV ON EARTH was going on, plus translation work, people learning to do support, and so on. I grabbed a seat to talk with a friend about what she was working on, and found that the new contributor at the same table is an accessibility specialist — I was able to make a few introductions online and point him toward the accessibility team blog and meeting times.

And then on my last day in SF, I didn’t do anything particularly techy at all. I saw old friends, bummed around in bookstores, dipped my toes in the very cold Pacific ocean, and sat and knitted with a very charming 6 (or maybe 7?) -year-old. Highly recommended!

New plugin: Accessible dropdown menus

A few weeks ago, I heard from The Ada Initiative that a conference attendee wasn’t able to use their conference planning site because the main menu wasn’t accessible via screen reader. Did I know of a plugin or technique that would help?

And I did find a solution, thanks to Graham Armfield, who I know from his work on improving the accessibility of WordPress core. But that plugin only worked for Twenty Ten, and it hadn’t been updated since the initial release. Still, it did exactly what we needed for the conference site, and it was an easy matter to update it for Twenty Twelve in time for the conference.

But that really isn’t enough. Fixing a problem for just one site is just a first step — in this case, it felt really important to get something out to a wider audience. So I approached Graham with an offer to collaborate on the plugin going forward, and he agreed.

The first plugin repo release is focused on updating the original code and adding support for more themes. It’s a no-configuration plugin: just install and activate it and you’re good to go. It works just as well for sighted users who navigate by keyboard only as it does for people using screen readers.

  • Tested with all default themes from Twenty Ten – Twenty Thirteen.
  • Tested with multiple themes based on Underscores.
  • Works with child themes, as long as the menu code hasn’t been changed too much. Since it’s the nature of child themes to change the parent, no guarantees on this one!

This is still far from all themes, and we’ll never get all the way there: because WordPress is designed to allow theme authors a lot of flexibility in how menus are built, there will always be a site that builds its navigation in a way we’ll never be able to anticipate. But it’s a big improvement, and I’d love to see it widely used.

You can grab Accessible Dropdown Menus at the Plugin repository.  And let me know what themes you’re using it with (or just hoping to use it with) — we’d love to be able to support more themes in future updates!

The scariest button on the internet

I’ve been thinking about anxiety and impostor syndrome (my own, naturally), and it occurred to me that this:


is sometimes the scariest damn thing on the internet.

Whether it’s a conference talk submission, a pull request, or a project bid, every time I have to deal with one of those, I go into deer-in-the-headlights mode for a while. And 90% of the time, I don’t say a word about it.

Like a lot of people who work in this intersection of women in tech and open-source community-building1, I end up thinking a lot about impostor syndrome. And while I put time and thought into helping other people with their impostor issues, either formally as a teacher or just as a friend who’s there to tell them that no, they — YOU — don’t actually suck, I’m really, really insistent on hiding my own.

The thing is, while faking confidence is useful and sometimes absolutely necessary, it doesn’t actually help when impostor syndrome is all about the inner voice that’s so busy telling you otherwise.

There’s a lot of value in saying: Hell yes, putting yourself out there is scary. And we’re all afraid that we’re going to be caught in some really public n00bish mistake. And it’s totally normal for pretty much everyone to feel that way (even if they do always try to hide it).

And then hitting the button anyway.

While I’m at it, check out an awesome set of slides from Dreamwidth co-founder Denise Paolucci:

  1. And can I just say, Oh Brave New World, how wonderful it is that there are enough people in both places to have an intersection?

+10 Shield of Democratizing


I’m not doing a formal WP10 party because it’s a previously scheduled game day and annual inauguration of the grill, and those two things are sacred.

Instead, I awarded my barbarian with a new piece of equipment, as seen above.

Democratizing Shield: This heavy steel shield bears the sigil of Mulletweg, and can only be borne by warriors dedicated to access for all to Press their Words, however profound or bullshitty they my be1. Once per encounter, as a free action, it can be used to cast GPL, whereupon all enemies will cease battle and argue in blog comments for the following three days. Caster must pass an arcana check to determine if she is entangled in her own GPL argument.

DM is gonna kill me.

  1. See current example