This post was written using Gutenberg, the code name for the WordPress core team’s effort to overhaul the WordPress post editor.

One of the things that we strive to do at LexBlog is help data drive decision making processes. The fetishization of data in business is somewhat akin to the fetishization for new specs and frameworks in development, but data is still a helpful tool (just like arrow functions in ES6) and should not be ignored. And so we track actions in the admin – clicks, navigating to a certain page, performing an action – all the data that a product manager like myself craves. One thing I’ve noticed in watching how our customers use the LexBlog platform is that people post. A lot.

That simple fact shouldn’t be surprising. We run a network of digital legal publications. Lawyers are trained writers, so they write constantly. Basically, if you give a lawyer a blog, be prepared to see them log in, go to Posts -> Add New, and begin writing away. So when I heard that Matt Mullenweg included the editor in the list of primary focuses for the core team, my interest was piqued. When I saw Aaron Jorbin’s post on using Gutenberg last night, I had to try it out for myself.

My first impression is that it’s pretty and unobtrusive, two things that the current post editor is not. If you take a look at the post editor page that I’m used to seeing:

LexBlog's Post Editor
LexBlog’s Post Editor

and compare it to Gutenberg’s post editor:


it’s pretty easy to see the difference.

Gone are the countless meta boxes (although, as Jorbin points out, if developers have to find a new way to hook in meta boxes it’s gonna be interesting) and WYSIWYG buttons on a monolithic TinyMCE instance. Replacing them is a clean white screen with just a few buttons.

It’s when you start interacting with Gutenberg that it comes to life. Each click or hit of the return key triggers the UI to give you options for adding content blocks (Gutenberg is built on the notion of content blocks – an image is a content block, a blockquote is a content block, an embed is a content block) and you can add them to your post by clicking “Insert” or a small “+” icon that appears on the left hand side of the post, under each block. Doing so, gives you a plethora of blocks to add.

Available content blocks
Available content blocks

The fun thing about this notion of content blocks, is that it’s easier to make things look pretty! To the left, you’ll see a screenshot of all the options for adding a new content block, and each block comes with it’s own set of options.

An unexpected part of using Gutenberg was finding just how much I had to relearn. I found myself struggling to add an image and unordered list as my cursor couldn’t help itself but to go to the top of the editor in search of an “Add Media” or bulleted list button.

And not surprisingly, there are a fair number of UI quirks and bugs that have to be ironed out. Gutenberg is definitely a work in progress, and while it’s work that web developers have been doing for years (Medium has a similarly slick editor UI), it’s all new to WordPress.

It’s difficult to distill my thoughts about Gutenberg in a single post, so I won’t even try. What I will do, however, is write every post in Gutenberg from here on out. That’s going to mean a lot of local drafting and CMD + C & CMD + V’ing, but if this is the future of the post editor, then I want to see it on a regular basis.

At LexBlog, my team is responsible for keeping a lot of sites up and running. We help manage the reputation of lawyers and law firms, where each pixel matters. As a result, our product team performs a host of functional tests before launching updates, and we lean on test driven development practices to catch things that functional tests cannot.

An unfortunate blind spot is that humans aren’t machines. We’re prone to miss simple things, and after staring at a screen for hours on end, our brains and eyes get tired. To help catch things that we may gloss over, we use an internal application built using Node.js, React, and Selenium that integrates with the WordPress REST API and an external service, Applitools.

Continue Reading Building a Visual Regression Testing Application Using React, Selenium, Node.js, and the WordPress REST API

Every Product Manager that I’ve had the opportunity to speak with, listen to, or read about makes one thing abundantly clear: Knowing your users is your job. Unfortunately, that’s easier said than done. If you take a moment to peruse career pages or job boards with Product Management positions, you’ll notice that each listing notes an ability to simultaneously be an Excel/SQL/database master and product expert. The nature of product management requires you to live, breathe, and eat the customer’s experience while understanding why their experience is the way it is.

Continue Reading Getting To Know You, Getting to Know All About You

I’ve spent a lot of time over the past year wrapping my mind around what it means to build a content management platform for lawyers. For nearly a year and a half, LexBlog has completely turned our model of delivery on its head, and shifted our focus from a project-to-project business, to one that focuses on developing new products. As you may guess, the cost of this shift has not been small.

Continue Reading Building a Legal Blogging Platform

Here at LexBlog, we build, launch, and support a lot of WordPress websites and blogs. In many ways, that’s almost all we do! There are certainly other day-to-day tasks that the technical team takes on, but without a doubt, our most pressing responsibility to our clients is ensuring the stability and availability of their digital properties. This is especially true given that our clients, with the unique position that they have, are often suited to write in-depth analyses faster and more proficiently than a journalist or general content producer, but all that is for naught if their blog is inaccessible.

This is why I take the maintenance of our many sites incredibly seriously. When we perform plugin updates, the update is reviewed by a member of our development team (often a product manager like myself or a developer), a fully replicated staging environment is utilized for smoke testing, and each site is backed up before the update takes place. Unfortunately, when you’re talking about hundreds of sites that make use of various (and endlessly shifting) plugin components and themes, that’s just not enough. Fortunately, we’ve developed a few tricks up our sleeves that greatly simplify matters.

Continue Reading Selenium, Python, and Managing Hundreds of Blogs

The order of questions in the title is important. From general to specific. Why blog? Why am I blogging?

First off, I like to hear myself talk. It’s a failing, vanity at its worst, I know, but the sound of my own voice and thoughts is something that’s soothing. A child of Montana, being alone and in my head is a comfort. Blogging, in many ways, affords that same comfort. My internal voice gets a chance to stretch its legs while writing – a meditative exercise.

This is also a natural progression. After working at LexBlog full-time for going on three years, going from Account Manager to Technical Product Manager, my lack of a blog has always struck me as hypocritical – especially since I truly do believe in the power of blogging. For me, this blog is purely about love and knowledge – love of knowledge? Either/or, really. As my understanding of various technologies has grown, so has my desire to keep track of all these bits of information that come my way. Beyond being a place to record my thoughts, this blog is a way for me to grow professionally through writing about the subjects that are near and dear to my hear. Hopefully, if you’re reading this, you feel the same way about these things that I do.

Continue Reading Why Blog? Why WordPress? Why LexBlog?