Gutenberg is far from done

This is going to hopefully be a quick rant (famous last words). If you haven’t been following along, Gutenberg is a project to replace the editor in WordPress with something more modern. There have been 7 beta releases thus far, but in many ways, pieces are still in experimentation mode. The process has been open: Code has been on GH since the start, updates have been on make/core, ~weekly plugin repo updates. Communication could be better for sure, but when is that not the case? The biggest misconception I see is people thinking Gutenberg is anywhere near complete. It’s still alpha in many ways. Many things need to be figured out before Gutenberg is going to be ready to go into WordPress. Please, get involved and help. Gutenberg needs you. WordPress needs you.

Akin’s Laws of Spacecraft Design Modified for Websites

I have long been a believer that as creators and creatives working on websites, we can learn a lot of other fields.  One that I am constantly looking at for inspiration is spacecraft and astrophysics. Akin's Laws of Spacecraft Design are a collection of axioms collected and maintained by David Akin, a professor at the University of Maryland.  Here they are, lightly edited for websites. 

1. Engineering is done with numbers. Analysis without numbers is only an opinion.

2. To design a website right takes an infinite amount of effort. This is why it's a good idea to design them to operate when some things are wrong.

3. Design is an iterative process. The necessary number of iterations is one more than the number you have currently done. This is true at any point in time.

4. Your best design efforts will inevitably wind up being useless in the final design. Learn to live with the disappointment.

5. (Miller's Law) Three points determine a curve.

6. (Mar's Law) Everything is linear if plotted log-log with a fat magic marker.

7. At the start of any design effort, the person who most wants to be team leader is least likely to be capable of it.

8. In adtech, the optimum is almost always in the middle somewhere. Distrust assertions that the optimum is at an extreme point.

9. Not having all the information you need is never a satisfactory excuse for not starting the analysis.

10. When in doubt, estimate. In an emergency, guess. But be sure to go back and clean up the mess when the real numbers come along.

11. Sometimes, the fastest way to get to the end is to throw everything out and start over.

12. There is never a single right solution. There are always multiple wrong ones, though.

13. Design is based on requirements. There's no justification for designing something one bit "better" than the requirements dictate.

14. (Edison's Law) "Better" is the enemy of "good".

15. (Shea's Law) The ability to improve a design occurs primarily at the interfaces. This is also the prime location for screwing it up.

16. The previous people who did a similar analysis did not have a direct pipeline to the wisdom of the ages. There is therefore no reason to believe their analysis over yours. There is especially no reason to present their analysis as yours.

17. The fact that an analysis appears in print has no relationship to the likelihood of its being correct.

18. Past experience is excellent for providing a reality check. Too much reality can doom an otherwise worthwhile design, though.

19. The odds are greatly against you being immensely smarter than everyone else in the field. If your analysis says your page speed is one nanosecond, you may have invented HTTP/3, but the chances are a lot better that you've screwed up.

20. A bad design with a good presentation is doomed eventually. A good design with a bad presentation is doomed immediately.

21. (Larrabee's Law) Half of everything you hear at meetups and conferences is crap. Education is figuring out which half is which.

22. When in doubt, document. (Documentation requirements will reach a maximum shortly after the termination of a program.)

23. The schedule you develop will seem like a complete work of fiction up until the time your customer fires you for not meeting it.

24. It's called a "Work Breakdown Structure" because the Work remaining will grow until you have a Breakdown, unless you enforce some Structure on it.

25. (Bowden's Law) Following a testing failure, it's always possible to refine the analysis to show that you really had negative margins all along.

26. (Montemerlo's Law) Don't do nuthin' dumb.

27. (Varsi's Law) Schedules only move in one direction.

28. (Ranger's Law) There ain't no such thing as a free launch.

29. (von Tiesenhausen's Law of Program Management) To get an accurate estimate of final program requirements, multiply the initial time estimates by pi, and slide the decimal point on the cost estimates one place to the right.

30. (von Tiesenhausen's Law of Engineering Design) If you want to have a maximum effect on the design of a new website, learn to draw. Engineers always wind up building the website to look like the initial artist's concept.

31. (Mo's Law of Evolutionary Development) You can't get to the moon by climbing successively taller trees.

32. (Atkin's Law of Demonstrations) When the website is working perfectly, the really important visitors don't show up.

33. (Patton's Law of Program Planning) A good plan violently executed now is better than a perfect plan next week.

34. (Roosevelt's Law of Task Planning) Do what you can, where you are, with what you have.

35. (de Saint-Exupery's Law of Design) A designer knows that he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.

36. Any run-of-the-mill engineer can build a website which is elegant. A good engineer builds systems to be efficient. A great engineer designs them to be effective.

37. (Henshaw's Law) One key to success in a mission is establishing clear lines of blame.

38. Capabilities drive requirements, regardless of what the systems engineering textbooks say.

39. Any feature launch which "just happens" to include a new design is, de facto, a redesign.

39. (alternate formulation) The three keys to keeping a new feature launch affordable and on schedule:
       1)  No new designs.
       2)  No new designs.
       3)  Whatever you do, don't redesign the website.

40. (McBryan's Law) You can't make it better until you make it work.

41. The Internet is a completely unforgiving environment. If you screw up the engineering, somebody loses money (and there's no partial credit because most of the analysis was right…)

Mini Tracks for Technical Conferences

Conference organizing comes with many challenges. Attendees are going to complain about the food. Someone is going to think "There aren't enough SEO/Security/Regular Expression/". Overall, you are not going to be able to make everyone happy. But one way to increase attendee hapiness and make sure people walk away with solid lessons is by curating mini tracks.

Your job as an organizer is to curate the experience and lessons you want your attendees to have. You shouldn't pick a talk because it's popular, you should pick talks that tell the story you are aiming to tell. The story you are telling is one that takes its characters and lessons from the speakers and talks you choose.

What will the attendees be talking about tomorrow? 

The attendees of a conference are going to go back to work, are going to rejoin their professional circles, and bring things with them. Unless you are doing longer workshops, these are going to often be the themes and lessons that are weaved throughout the day. I like to create "mini tracks" of a couple of talks that build upon a theme.  

For example at a WordCamp, a mini track on "Fundamentals of WordPress Development" could include talks on custom post types, child themes, the user and role APIs and post meta. These talks may be at multiple levels, but that's ok.  They all build upon a thesis of "WordPress has multiple ways to be extended". A new to development person may gain an understanding of how a plugin they use works and may come up with a new idea. A new to WordPress developer may gain an understanding of how to structure a custom plugin. An experienced WordPress developer may gain a new way of thinking about when to use one API over an other. 

Some themes come in different styles than others. I've seen a number of different types of mini tracks including ones focused on a vertical ( Real Estate, Education, Enterprise, etc ), those focused on a type of worker ( Freelancer, Manager of People, Remote Worker, etc ), or on more generalized theme (Advancing as a Developer, Redesigning Websites, Social Media). 

Mini Tracks in Action

Mini tracks were something I first observed for a conference at WordCamp Boston 2011. This conference went so far as to print the names of these tracks on the schedule. (Sidenote: The greatest technical talk I've ever seen at a WordCamp was at this WordCamp. )

By grouping three "Enterprise" talks together, an attendee who wanted to gain an understanding about enterprise could make sure they were setup in one location to do so. And while there, they could learn about growing teams, growing code bases, and growing sites. With Boston having so many world class universities, the education track was a natural choice.  This track included engineering talks, strategy talks, and more. It was about a common interest, rather than common skill that united these talks.

Another example can be found at WordCamp DC 2017 were three talks in a row looked at questions concerning equality, inclusion, and intersectionality in three very different ways. Attendees could see these three talks and walk away inspired and with a better understanding of how they could use WordPress in an entirely different way.

If you start working on a conference schedule, consider what the lessons are that you want the attendees to walk away with. Think about the themes in the talks. Schedule something "Hard" or "Complex" or "Technical" where it might not be obvious. Allow people to learn something they weren't ready to learn. Give them something to walk away with that may not be useful for years, but might stick with them. 

A Few Use Cases I Would Like To See Solved In Gutenberg

While I've used WordPress in many ways over the last nearly ten years, I primarily spend my time working on two publications: Scary Mommy and Cafe. "Big Media" publications have challenges and use cases that are different than standard WordPress sites. As Gutenberg continues to evolve, there are a number of use cases that I see as needing to be accommodated. Most of these are things that don't need to be solved "out of the box", but that the extensibility of Gutenberg should accommodate.

It's possible that some of these use cases are already accounted for, but that that the documentation on them is lacking. 

Publication Requirements

Before "Publish" can be pressed, a number of steps need to happen. This could be selecting a featured image, making sure some taxonomies are properly filled out, or that there is 2nd sign off. This takes the form from the super basic such as what make.wordpress.org sites use ( an "Are You Sure" checkbox that must be checked before the publish button is enabled) to the complex custom plugins that are prevalent.

The important part is that there needs to be a documented and extensible way of only allowing posts to be published when other criteria have been met. 

Block Removal

Out of the box, Gutenberg has alot of blocks.  Not every site needs a "Verse" block, and there needs to be a way to remove it. As the classic saying goes, "Design is done not when there is nothing left to add, but instead when there is nothing left to take away".  The ability to remove blocks is necessary for the success of Gutenberg.

Block Modification

Currently, the headings block in Gutenberg allows for selecting H2, H3, and H4. What about sites that also support H5? What about sites that only use H2?  There is a need to make minor modifications to many of the default blocks. While some sites and some users benefit from allowing the content producer to select the alignment of blocks, other sites have strict rules and want to lock it down.

Block Rules

There is a need for blocks such as subheads that only exist after the title. Similarly, there may be editorial rules such as never using more than 3 twitter embeds, or always having at least two paragraphs between headings. These should be a way to enforce these rules.

As Gutenberg continues to evolve, more modification requirements are sure to come up. It's going to take years before all sites can use Gutenberg due to the millions of dollars invested in custom editorial processes, but these are my initial modification use cases.  What are yours?

BRAD: Better Responsibility Around Discoverability

Last week, I saw a tweet that identified a challenge for the WordPress UI:
https://twitter.com/williamsba/status/885520668154089472
I wasn’t alone in seeing this as an issue that was worth solving:
https://twitter.com/norcross/status/885582016456130560
Knowing that plugins are best when they are built and supported by teams rather than individuals, Norcross and I started collaborating (though in the end, the majority of the code was written by him). What we came up with a plugin to improve the experience for site creators. As the responses to Mr. Williams tweet shows, It’s very common to mark a site as inaccessible to search engines and then forget to uncheck that setting when it comes time to launch. BRAD aims to solve this by moving the notice about search engine discouragement to the top of the dashboard.  It also becomes a recurring dismissable notification.
  • Every week, there is a check to see if the site is still hidden from search engines, and if it is the notice comes back
  • If you change the siteurl or home options, then the notice comes back (note, you need to change these via the UI or via wp-cli, directly changing the DB)
[the_ad id=”562793″]

BRAD is already loved by many

I was lost before BRAD Before this plugin, I never knew if my site was excluded from search engines or not. And if it was, where the heck did they move the “Discourage search engines from indexing this site” checkbox to? Thank you, BRAD
Heavy praise from the leader of a great WordPress Agency!
Life changer! BRAD literally changed my life – now BRAD tells me where to go every day!
It feels amazing to help change the life of someone who wrote the book on WordPress (over and over again) If you would like to contribute to BRAD, join us on Github. If you are building sites, add BRAD to your WordPress site today!

Birth of a Community

Seven years ago today, the First WordPress D.C. Meetup that was focused on a continuity of community took place. Tomorrow the first WordCampDC kicks off. It's been a heck of a journey. 

I've been gone from the community for a few years.  I know the community has continued to evolve and grow, but for the first 3 years of its existence, I was honored to serve it as one of the organizers. Looking back, there are a number of things that stand out to me about those early days of WordPress DC. 

The DC community has helped many people grow. Many people took on larger roles in the WordPress community in part due to the involvement in the meetup. Committers, Lead Developers, Training Team Leads, Speakers, Meetup Organizers, Meetup Organizer Organizers, Code Contributors, Testers, Theme Reviewers, Accessibility Team Leads and Support team members. You would be hard pressed to find a community that has done more for WordPress.

I know of countless people who got jobs because they started networking at the WordPress DC meetup. Early on, we stole from the PHP meetup the idea of asking "Who's hiring, Who's looking" at the end of the meetup and giving people a moment to introduce themselves.

Early on, the decision was made to focus the main monthly meetup on users of WordPress, with the idea that designers and developers can always learn more about users and for many of them, networking after the meetup could be even more valuable than hearing yet another talk about custom walkers. We did hold a number of special events especially aimed at developers and designers though. We tried "Brown Bag Lunches", Saturday afternoon pre-release testing sessions, Friday Night's with Mitcho (sadly, only one since he was only in town one night), and "Happiness Socials" focused on helping each other with issues. 

The collaboration the meetup had with the broader DC community helped WordPressDC standout.  The Open Source BBQ become the summer event that everyone looked forward to.

This isn't to say the meetup group was perfect.  It took us a too long to realize that our speaker roster was heavily male, and leaned young.  Thankfully, we realized it before it poisoned the community.  In many ways, it reminds me of one of my favorite tweets. We fucked up, but then we tried not to make the same mistake again. 

Finally, the friendships that grew and developed can't be understated. For many of us, The second Tuesday of the month became a highlight that we didn't want to miss. Many people I met or got to know better through the WordPressDC community are people I still consider friends today.

Happy Birthday WordPressDC.  Tomorrow, we celebrate with the first WordCamp DC!

WordPress Serves Many Masters

I have used WordPress in a number of different ways over the last (just shy of )10 years.  I got my start building a blog that my friends I and I wrote satire on. We got a bit of a following (I remember the first time we hit 1000 views in a day on one article, it was exciting). I then moved on to building a site for a movie my friends and I wanted to make, before starting freelancing and being exposed to many sites.

Freelancing Days

Over the course of about two and a half years of freelancing, I worked with dozens of clients. They most commonly were:

  • Comedians
  • Small non-profits.
  • Small Businesses and Restaurants
  • An SEO consultant on products that he offered (my first foray into product development rather than developing primarily for marketing) 

A site I worked onwhile freelancing

The first three groups of sites make up a large percentage of WordPress sites. There are freelancers and agencies in just about every town/city in the world helping Individuals, smaller non-profits, small businesses, and restaurants get online every day. In general, the organization has little knowledge about what tools they should use, and doesn't care what WordPress is. These are the passive users of WordPress.

The Enterprise

I then moved to a couple of large organizations( ranging from 50 to 500,000 employees). Here, WordPress was chosen by the organization, but it was never the main technology of the site.  It was a supplement

WordPress supplemented the technology, rather than being its base.

Each of these organizations had at least 5 engineers, but it was rarely more than one or two people who worked on WordPress, and outside of security updates, months would go by without any work being done to WordPress from a coding standpoint.  At one organization during a major redesign, the only reason WordPress was updated to match the site design was due to other tasks taking less time than anticipated.  

Big Media

Some of the biggest WordPress sites (at the time) were at Condé Nast. The New Yorker switching to WordPress received praise from Matt Mullenweg (twice!), while WIRED, Vogue, Bon Appetit, and others were receiving large amounts of page views and allowing editorial teams to seamlessly publish a lot of content. Working with the teams on each of these sites showed me that when you have multiple people all working on WordPress at once, you can make it do whatever you need it to.

Let's Try Something Different

The next step was a short stop building an analytics product with WordPress as the main piece of the backend technology. Essentially, it was using WordPress as a framework. WordPress provided much of what we needed, but we could have just as easily used something that advertises itself as a framework. WordPress gave us a lot of things out of the box though. We didn't need to build a user system, we could use WordPress. We didn't need to build a command line interface, we could use WP-CLI. By using WordPress, we got a lot out of the box for free.

Where I am now

I primarily work on five sites now: two personal, one volunteer non-profit, two for work. My personal sites are "boring" sites. The non-profit site is rather complicated, in that it is a marketing site, a conference registration system, a blog, and an intranet all in one. But it's also not 100% WordPress. Many pieces have been carried forward

And my two work sites? Those are content-heavy media sites. They feature a lot of videos and regularly go viral. 

What WordPress Excels At

The problem for WordPress is that for all of these sites, it works pretty well.  It's far from perfect, but it works. One of the biggest challenges for WordPress, especially when it comes to core features that are used on almost all sites, is that it needs to work for many many use cases. Working on sites of all shapes and sizes has taught me there is rarely one solution that solves every site's problems. 

Serving many masters means people look at WordPress and think "It's just a blog", and it is, it powers this blog.  They look at it and think "It's for small business brochure sites" and it is, it powers many of them.  They look at it and think "It's for big media sites with large staff" and it is, it powers ScaryMommy.

Scale is often thought of as the ability to receive a lot of traffic or handle a lot of users, but scale also means working for many use cases.  This is the type of scale that is the biggest challenge for WordPress. It doesn't have a narrow focus of serving one use case, it has a broad focus of serving all users use cases. Scaling WordPress from a core perspective means providing features that first, work for all, and second can be modified to be better for them as well.  Out of the box, WordPress is never going to solve every use case, but when features make it harder for a use case, we really need to ask ourselves if they should go into core.

Patty Melts

One of the greatest food items is the patty melt. It's a burger, it's a sandwich, it's delicious.

As great dinner sandwiches go, it is hard to beat the patty melt

The patty melts deliciousness comes from the fact that's it's only four components. Rye bread, hamburger, Cheese, and grilled onions. The simplicity doesn't mean you can't customize it though. Dark, light, and marbled rye each add a different flavor, but the biggest way to customize it though is the choice of cheese. Swiss and American are the two classics, but I think cheddar and muenster also deserve consideration.

BONUS: If you want to make the patty melt even better, make sure to include a pickle on the side for dessert.

A patty melt with a side of fries and pickles in a bag

Random Thoughts on Gutenberg

Gutenberg is being developed as the next generation WordPress editor. I made my first contribution earlier today. Nothing big, but something that will hopefully help people test it.  The contribution process was 💯, but for end users, that’s not the important thing. What is important is the actual editor. I’ve seen talk that Gutenberg is in “Open Beta” now, but I think calling this beta software is still premature. I think there is plenty that will change between now and any possible inclusion in WordPress core for Gutenberg. Here are my random thoughts and my first reactions to using Gutenberg.
  • It’s pretty.  And Fast. I never thought of the post editor as being slow, but there is something about Gutenberg that makes it feel fast.
  • There are a lot of rough edges. It’s hard to know what is a bug, what is intentional,  what just hasn’t been done yet, and what hasn’t been thought of.
  • There is an option for “Drop Cap” that doesn’t seem to do anything on the front end yet.
  • I’ve also never intentionally been able to highlight multiple blocks at once, but I’ve sure done it on accident a lot.
  • I can’t seem to delete some blocks without going into the text format.
  • I really like how the plugin is implemented. Being able to test Gutenberg without completely giving up the current editor is awesome and will hopefully help encourage people to test it out.
  • The tab key doesn’t let me actually add a tab, even inside a code block.
  • Existing content can’t really be imported. I hope this is something that is on the roadmap since it sure would be odd to Gutenberg sometimes not work like Gutenberg.
  • I miss a lot of the meta boxes I’m used to seeing on the screen.  Things like Yoast SEO (on some sites) and custom taxonomies are just not shown. If every metabox ever made for WordPress needs to be remade, it sure is going to make developers lives a living hell.
  • Adding images and the image block in general are confusing. For example, despite having “All da” ( which I think is “All Dates” but is cut off) selected, only my 10 most recent images are shown initially.  There are no names/text associated with the
  • I can’t figure out how to add an image to this list.
  • Autoembeds seem to work, but don’t display anything in the UI.
  • The Embed URL block tells me that I can’t embed that content, but the front end of my site tells me differently.
  • The sidebar being empty 3/4 of the time feels really odd.
  • The default state is likely my favorite “Distraction Free Writing” implementation in WordPress yet.  I’m simultaneously able to focus on my content, and yet I have all the tools I need for writing. I don’t have all the tools I need for content creation.
  • I need to take my hands off my keyboard more than usual. Adding a paragraph after a list isn’t easy to do with just a keyboard.
Lots of things are constantly changing with Gutenberg ( my small change was merged within hours of proposing it). I’m going to keep my eye on it. The content for this post was drafted in Gutenberg and I’m going to try to continue to do that going forward.  Go install Gutenberg, so you can generate your own opinons on it.