New Year’s Resolutions: 2017 Edition

John Oliver Says "Fuck You" to 2016

First a quick 2016 year in review: It sucked. Never mind that my childhood hero died. Closer to home, our remaining two household cats died, I lost a job I loved and had devoted myself to for the last four years, and America elected a misogynistic, pathological liar and serial antagonist as its next president, sending me into utter, absolute fear for the future of our nation. And people wonder why I didn’t bother to send out holiday cards this year.

So let’s move onto 2017, shall we?

I actually hate new year’s resolutions. But they seem to be a thing to do, and unlike most other years, the new year does actually likely mean a new beginning that I hope to share more information about soon.

Professionally, I have one goal that is long overdue:

Seriously, not enough developers are doing this, and we all should be. So wherever I end up in 2017, expect this to become the law of the land.  😉

And of course, I have a personal resolution as well. Being laid off from RP3 hit me hard, particularly because so much of my personal identity was wrapped up in my job. After four years of being absolutely dedicated to “the cause,” being let go ripped me to my core in a way that I haven’t quite gotten over, nearly two months later.

So in 2017, I’m not going to let that happen again. Wherever I end up, I’m going to take more care to separate my identity from my job and do a better job remembering that it’s not where we work that defines us, but how we live our lives, raise our families, and contribute to society that does.

A couple of other things: I need to learn JavaScript. Like really learn it, not just muddle my way through it. And maybe I’ll watch less Simpsons on FXX. Don’t hold me to that one, though.

Whatever you resolve (or don’t! that’s good too), may 2017 bring a better year than 2016 was for many people.

Oh, and…

My WordCamp US Wishlist

Inspired by Liam Dempsey’s post, I thought I, too, should write about what I’m looking forward to most about WordCamp US, now that it’s less than one week away.

Friends, Friends, Friends

WordCamp US is the largest annual gathering of WordPress professionals and practitioners in the world. I’m so fortunate that I’ve become involved in such an inclusive, welcoming, and helpful community. This is likely the only time this year I’ll get to see some of my best WordPress friends like Tracy Levesque, Mika Epstein, Brad Williams, and so many, many more. Expect a big freaking hug from me, folks!

Opportunities

This year, especially, as I’m trying to find my next career move, WordCamp US couldn’t come at a better time. It would be a fallacy to deny that WordCamp US is an enormous networking opportunity, with the best of the best in the WordPress community available to chat, share a drink, share a meal, or just get to know better. Again, the helpfulness and inclusiveness I mentioned above can be almost overwhelming.

Deep Knowledge

Oh yeah, there’s the sessions, too! While I was extremely fortunate to speak at last year’s inaugural WordCamp US, this year I get to sit back, relax, and absorb the knowledge that others are sharing. Lately, I’ve been trying to “go outside my comfort zone” when attending WordCamp talks, and I expect the trend to continue here. Instead of focusing on just developer-centric talks (okay, yes, I still intend to go to Nacin’s; that’s required viewing despite the lack of description), I want to attend more talks based on contentdesign, and other topics of which I know very little.

What are you looking forward to about this year’s WordCamp US? Let me know in the comments.

And if you don’t have your tickets yet, hurry! Time is running out.

So Long, and Thanks for All the Fish

Thursday was my last day at RP3 Agency. While it didn’t necessarily end the way I would’ve liked (do these things ever?), I feel deeply appreciative of my years there, and I wish them nothing but the best of success for the years to come. In my tenure there, I learned so much and had opportunities I had never  before dreamed of, many of which involved  increasing my participation in the WordPress community. I will always be grateful for the friends I made, and the work we did as a team.

While it’s tempting to sit back, take a break, and do nothing for a little while, I’m not that kind of person. I’ve always been someone that needs to be busy: always working, always producing. (Now, if we were in the throes of ski season, my attitude might be a little different. 😉 )

I’m already pursuing some opportunities thanks to the incredible friends I’ve made at RP3 and the WordPress community over the years. And if you have a need—freelance, permanent, or somewhere in between—drop me a line. I’d love to hear from you.

Musings from Someone Discovering PostCSS

I originally wrote this piece about PostCSS as an internal post for my team at RP3 Agency, but I believe it might have relevance for front-end developers everywhere.

The new hotness in the CSS world is something called “PostCSS”, which I haven’t completely figured out yet but am getting there. Basically, things that happen after your Sass (or whatever) is done and has created a true CSS file go into this ecosystem. Think autoprefixer (for automatically entering browser vendor prefixes) and minification. (There’s even a school of thought that says this kind of thing can completely replace Sass, but I am so not there yet…)

In trying to bring a two-year-old project up to modern standards (the original project used things like Grunt which we don’t use anymore, having switched to Gulp), I’ve been trying to learn how to do things the “right” way.

So here’s the Gulp “styles” task I’ve come up with:

var gulp = require( 'gulp' ),
    sass = require( 'gulp-sass' ),
    rename = require( 'gulp-rename' ),
    plumber = require( 'gulp-plumber' ),
    gutil = require( 'gulp-util' ),
    sourcemaps = require( 'gulp-sourcemaps' ),
    postcss = require( 'gulp-postcss' ),
    autoprefixer = require( 'autoprefixer' ),
    csswring = require( 'csswring' ),
    del = require( 'del' ),
    concat = require( 'gulp-concat' ),
    uglify = require( 'gulp-uglify' ),
    connect = require( 'gulp-connect' );

gulp.task( 'styles', function() {

  gulp.src( __dirname + '/src/scss/*.scss' )
  .pipe( sourcemaps.init() )
  .pipe( plumber( function( err ) {
   gutil.beep();
   var errorText = err.message + '\n\n' + err.source;
   gutil.log( gutil.colors.red( errorText ) );
  } ) )
  .pipe( sass.sync() )
  .pipe( rename( function( path ) { path.extname = '.css' } ) )
  .pipe( postcss( [ autoprefixer( {
   browsers: [ 'last 2 versions', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4' ]
  } ), csswring() ] ) )
  .pipe( rename( function( path ) { path.extname = '.min.css' } ) )
  .pipe( sourcemaps.write( '.' ) )
  .pipe( gulp.dest( __dirname + '/dist/css/' ) )
  .pipe( connect.reload() );

} );

“autoprefixer” and “csswring” are plugins to PostCSS. I’m processing my Sass into CSS using “gulp-sass”, and then using PostCSS to do the autoprefixing and minification (in a sourcemap-friendly way, and that’s important as I’ll get to in a sec).

But I’ve come across a downside to this new flow. In the past I’ve written out two versions of the finished CSS file: an “expanded” one that’s more or less human readable for our development environments, and a minified version for production. In WordPress, for example, it’s easy to tell the theme which one to use and when based on whether we have debugging turned on or not.

But “csswring” was choking when trying to minify a CSS file that had a sourcemap, regardless of whether the sourcemap was inline or external. So if you’ll notice in this gulp task, the “expanded” CSS file never gets written out; the pipe goes directly from Sass file to minified CSS. But the sourcemap is written for the minified CSS, so if you’re working in Chrome, you can see where your property is being written in the Sass, like in this screenshot:

Screenshot of my project, demonstrating how sourcemaps are working on minified CSS.

It’s not a result that I’m 100% comfortable with, but I’m learning to stop worrying and love the minification. However, I’m wondering how this will fly in production. From one sense, there’s a certain amount of front-end civic responsibility in letting other developers see the source Sass you actually wrote, rather than just the processed and minified CSS that a computer crunched out. On the other hand, 99.9999% of your audience wouldn’t give one shit about that, so is the browser pulling down a sourcemap file that’s actually twice as large as the actual CSS file? Something else to figure out…

 

The Case for WordPress Certification

In the realm of digital and creative agencies that work with WordPress as their primary platform, there are a few major players whose names keep coming up time and time again. Their employees and affiliates show up at every WordCamp (often as speakers and organizers), they have notable core and lead developers on their staff, and whenever major news happens in the WordPress world—such as a high-profile launch of a major website running WordPress—the same few agency names are often behind it.

However, there are hundreds of smaller agencies and individual developers out there who are also using WordPress in their businesses, but not necessarily at the core of their business. Agencies may develop in WordPress where it makes sense for a particular project, but work with other platforms on others.

What ends up happening is that potential clients, looking for a qualified WordPress developer, either go to one of the big “names” almost out of default, or else sign with an agency or individual without a way of being certain whether that individual is truly an expert in WordPress site development.

To this point, often the only “credentials” an agency can offer to assert its expertise is having a WordPress core contributor on staff, or participating in the “Five for the Future” program (in itself, an “unofficial” endeavor which has its own issues, as noted below). Many agencies and individuals can bill themselves as “Wordpress” [sic] experts, but there’s no official way of vetting actual experience in a way that approaches an industry standard.

Articles Addressing This Topic

Organizations Offering “WordPress Certification”

Something called the “National Website Certification Council” offers a WordPress certification. This is not sanctioned by any organization closely affiliated with WordPress (Automattic, The WordPress Foundation, etc.), yet comes up high in Google searches for “WordPress professional certification”.

ExpertRating—who bill themselves as “Leaders in Online Certification Training & Employee Testing”—offer a WordPress test. Their description of such is somewhat misleading and can be confused into construing that this test follows ISO standards. The test offered is a 40 question multiple choice, and they charge $9.99 to take it.

There are others as well, offered by profit-driven companies that offer these certifications in conjunction with their own training programs.

“The WordPress Foundation”

Unlike other platform foundations and organizations (a few of which I’ll mention below), the WordPress Foundation is not open to membership. Rather, it exists primarily to defend the WordPress trademarks and to promote the goals of the GPL under which it is licensed.

Debate Points

  • Automattic is not officially aligned with the WordPress community. However, it is the de facto authority in the respect that it runs and maintains WordPress.com, the company was founded by the co-founder of WordPress, has built a multi-million U.S. dollar business with WordPress code as its foundation, and many of the employees at Automattic are core contributors, core developers, development leads, and core committers to WordPress and other WordPress-related projects (Jetpack, _s, etc.).
  • As an open source project, there is no “governing body” that oversees development. However, there are recognized core and lead developers, and the annual community summit which serves in the capacity of a steering committee.

How Other CMSes Handle This

Many commercial CMSes offer partnership programs which serve to benefit the platform (partners will tend to sell more implementations of the CMS when there is financial incentive for them to do so) and the partner agencies (the platform will direct potential customers to their preferred partners). Sitecore, Percussion, Adobe Experience Manager, and TeamSite (to name some CMS examples), all offer some sort of certification and/or partnership program.

How Other Open Source Projects Handle This

Open source projects rarely exist in a vacuum. They often have the backing of private companies that take on a “shepherding” role of the project. (In the WordPress community, Automattic is often associated with fulfilling this role, as noted above.) Zend calls itself the “PHP company” for its leadership role in that community. Part of Zend’s business is to offer training and certification in PHP software development.

jQuery has the jQuery Foundation which serves as a means of supporting the project’s various sub-projects, providing funds for documentation, and generally advancing the cause of open source and JavaScript. Foundation membership can be either individual or corporate, and corporate membership can fall into one of four tiers: silver, gold, platinum, and diamond. WordPress is a diamond-level jQuery Foundation member.

Drupal and Joomla!

Drupal and Joomla! are projects of special significance since they are the closest “cousins” to WordPress in that both are PHP/MySQL-based open source CMSes. Drupal has the Drupal Association which offers individual and organizational memberships, much like jQuery does. From the project’s perspective, its “mission is to foster and support the Drupal community by maintaining Drupal.org software and infrastructure…”. However, individuals and organizations that join the association can use that as a marketing tool to show their commitment to the platform to prospective clients. To further that end, membership badges are available for display on members’ collateral, and members are listed in the Drupal Association Annual Report.

Joomla! has a certification project with the stated purposes:

  • Establish a standard
  • Ensure competence and develop a qualified workforce
  • Provide a documented measure of knowledge
  • Offer guidance on choosing a Joomla! service provider.

It’s again important to note that marketing an agency as a Joomla! expert is part of the rationale for this certification. The project itself does not offer certifications directly, but provides a structure for how other organizations can provide recognized certifications of their own to others. This project does not appear to be fully implemented, and it’s unclear from the website how long this project has existed in its current, unfinished, state.

Unofficial Efforts Within the WordPress Community

While there is no official certification process in WordPress, nor a publicly-joinable association, there are some small steps in that direction available through the more closely-aligned WordPress community groups and individuals.

Matt Mullenweg has advocated a “Five for the Future” program, where in companies who derive a substantial portion of their earnings from WordPress should dedicate 5% of their resources to working on core projects. Unfortunately, most organizations don’t have the resources to dedicate 5% of their workforce full-time to WordPress, or any other single open source project. For RP3 Agency, for example, 5% would equate to about one and a half people, and really the only candidates for this would come from our Creative Technology team, so you’re looking at using nearly a third of our six-person CT department at something other than billable work and internal projects. It’s a commitment we simply can’t afford. Ben Metcalf posted a rebuttal that spells out this argument further.

While not offering “certification” per se, the WordPress Developers Club bills itself as an organization that “actively teaches, advocates, and promotes excellence in WordPress Software Development.” (Emphasis theirs.) Code Poet offers a quiz which, when completed, posts the scores of those who’ve taken it.

Conclusion

Without an “officially sanctioned” means of establishing WordPress developer credentials, a void exists. Into this void are other operations offering their “WordPress certification” programs, but with no watchdog controlling the quality, there is no way to assess whether developers and agencies that achieve these certifications are truly knowledgeable about building sites with WordPress.

I feel that a certification process, subject to scrutiny and standards, would benefit those that seek these credentials for their professional goals, as well as the overall WordPress community by further supporting the developers who continue to drive the platform’s adoption around the world.

Front-End Architect

At last year’s CSS Dev Conf, one of the more outstanding presentations I saw was Micah Godbolt’s “Raising a Banner for the Front-End Architect.” It was a powerful and motivational piece that aimed to bring recognition to the fact that front end development is development, and that as a discipline, front end development is every bit as nuanced and challenging as any other aspect of development. Even before the talk had ended, I changed my Twitter profile to include “Front-End Architect,” not as a job title, but more as a complete description of my role on our team at RP3 Agency.

Today, “Front-End Architect” officially became my job title. After recent and long-standing bouts of self-doubt (am I too old? am I too female? am I too front-end focused to be considered a “real” developer?), I see this redefinition of my position as something of a validation that front-end architecture is as vital to the process of bringing a website to life as the application or system architecture.

Development is not limited to Java, or PHP, or Node.js. Despite the options in a Stack Overflow survey, specializing in Sass and CSS is just as crucial to the development of a successful website as any other part of it. Even if what you code can only be executed in a browser and not on a linux server, without it websites would be nothing, would look like nothing, and the whole web would still look like this.

I’m also, by terms of skillsets, a full-stack developer. I not only code in Sass and front-end JavaScript, but in PHP building WordPress themes and plugins. But throughout my career, my heart has been in the code that has made it to the browser—HTML, CSS, and JavaScript—and while I’m stronger in some sides of that triangle than I am in the other, it’s still a complete, complex, and challenging discipline that has languished in its own imposter syndrome for far too long.

My Legacy

More than ever, I am convinced that a tweet I threw out to the wilds while waiting for my kids to get ready for bed one night will be my everlasting legacy.

Check out 0:52 of this video from Mashable:

General Assembly

Recently, I got some intriguing direct messages from Nick, a friend of mine from the D.C. Sass meetup. He told me that one of General Assembly’s WordPress instructors hadn’t worked out, and wanted to know if I’d be interested in teaching a class about once a month or so. It sounded intriguing, so I followed up with GA.

What quickly unfolded was a tremendous opportunity. Starting in April, I’ll be teaching WordPress for developers classes and bootcamps. The first will be a two-hour evening class on April 23, and will focus on creating child themes for WordPress. I think this would be a good introduction for front-end developers to get a taste of the WordPress development world.

Then in June, I’ll follow this up with a two-day weekend bootcamp on building custom WordPress themes and plugins using all the development best practices we’ve established at RP3 Agency. This will be an intensive dive into the WordPress world, and we’ll get into topics like using a starter theme (_s, of course), building with Vagrant, Sass, Gulp.js, etc.

The plan for now is to teach each of these courses (the evening course and the bootcamp) about once a quarter, #ParentingLife permitting. Of course, there’s a drawback in all of this. In preparing for these upcoming courses, I’ll likely have to take a break on speaking at WordCamps for the time being. There’s just not the time to prepare for a new WordCamp talk, while simultaneously preparing for these classes and managing my other projects and commitments.

RP3 Agency has been a long-time partner with General Assembly, and while this opportunity didn’t come directly from that relationship, I still see it as a great next step to work together to help produce more great developers in the Washington, D.C. community. I’m excited to be a part of this.

Washington Area Women’s Foundation

I’m super-excited to share the latest launch by RP3 Agency: The Washington Area Women’s Foundation website.

This website launch is the culmination of nearly a year of close collaboration with the client, extensively reimagining their outdated website and delivering a clean, modern and responsive new site.

Additionally, the new site is built on WordPress, leveraging the platform’s strengths as a full-featured content management system. My goal as the technical lead of the project was to deliver a site that not only was more pleasing and easy to use for visitors, but easier and more intuitive to manage for our clients.

In coming days and weeks I’ll be sharing more about the structure of the site: how we created a flexible content entry system yet maintained simplicity in the entry fields; our use of technologies such as Backbone.js to improve site performance, and how we architected the front end with Sass, Breakpoint and Susy grids.

My sincerest thanks to everyone on the team who made this site possible:

  • Jared Arrington
  • Suriporn Bridge
  • Bryan Cox
  • Mark Lovett
  • Kat Piscatelli
  • Allison Rinaldi
  • Kurt Roberts
  • Julie Smith
  • Deanna Steers
  • Lauren Turner

Way to go, team!