Hi, I'm Marcus. I'm a technologist and write about various topics here. I work at Hatch in California, previously Automattic/WordPress.

Conditionally Load Block Assets, Part 2

Another look at conditionally loading block assets for WordPress blocks, assets being JavaScript and CSS files loaded by the browser. In the previous post, I solved using heavy-handed testing of each post in the loop checking to see if it contains our block to load the assets. The company I work for runs a few […]

Course Review: Writing in the Sciences

A review of the Writing in the Sciences online course that I recently finished. The course is taught by Dr. Kristin Sainania a Professor of Health Research and Policy at Stanford University. It is a free 8-week series of canned videos, online quizzes, and homework assignments designed to improve your writing. Course Structure Each week […]

Deploy WordPress Plugins Using Github Actions

Using automation makes your current life easier by taking tasks off your hands; plus makes your future life easier by documenting a repeatable process. I recently automated the publishing of my code-syntax-block plugin to the WordPress repository using the Github Action created by 10up. What are Github Actions First, Github Actions allow you to hook […]

Async is the Key to Distributed Work

I wrote A Year Working Remotely after my first year at Automattic — a company now at 1,000 fully distributed employees across 76 countries. This is a 6-year follow on sharing additional learning on work and productivity. A colleague Alister wrote a great post, Three Years of Working from Home, that covers personal care tips, […]

Conditionally Load Block Assets

Updated: see Part 2 post that explains a better way, as pointed out in the comments. Or see the newer Part 3 post with an even easier way with WP 5.8. One of the great features of the WordPress Block Editor is all the specialty blocks that can be created. This can also be the […]

Lessons from Walt Disney

On a sunny day, my family and I went up to San Francisco to visit the Walt Disney Museum. The museum is located in the beautiful Presidio near the Golden Gate Bridge. I simply hoped to enjoy a nice day out of the house, maybe something the kids would like–I didn’t expect to be inspired […]

Linting Markdown Syntax

Linting is the process to check code for potential errors and enforce a style guide, but linting is not just for code; you can lint markdown documents for the same reasons. Markdownlint is a Node package to lint markdown syntax, use markdownlint-cli for use on the command-line, or use the Visual Studio Code plugin for […]

Using the Pomodoro Technique

I recently started using the Pomodoro Technique to help me focus. I find it a useful productivity tool to fight distractions. The technique is a rather simple process: Set a timer for 25 minutes, Work focused on your task, When the timer goes off, take a short break (5min) Repeat After completing a few sets, […]

Build a Block Series – Part 7: Placeholder

In this seventh part, I do away with screencasting and work on improving the editor interaction with the QRCode block. Specifically, showing in the editor how the QRCode will look when published. Previous screencasts: Development Environment WordPress Plugin Anatomy of a Block Block Attributes ES6+ Syntax QRCode Intro One of the primary tenets of Gutenberg […]

Unix Crontab

Introduction cron is a utility that you can use to schedule and automate tasks. By defining items in the cron table, called crontab, you can schedule any script or program to run on almost any sort of schedule. A few examples: Download RSS feeds daily at 6:30am, Run a program 5 minutes after midnight on […]

Notes on Technical Writing

Over the past year, I’ve worked off and on documentation for WordPress. I started contributing during a launch freeze to help developers transition to the new block editor. I found I enjoy writing documentation, it is rewarding to craft quality documentation that helps people. Over time, I’ve read numerous resources on technical writing and documentation. […]

Bauhaus Centenary Block

To celebrate the 100-year anniversary of the Bauhaus design house, our team created a celebratory block for the WordPress editor, see our announcement post on Automattic.design. The Bauhaus Centenary block is available as a plugin with three styles – basic forms, year, and ribbon – that embraces the character, variety, and edge of the Bauhaus […]

Build a Block Series – Part 6: QRCode

In this sixth screencast I get down to implementing the QRCode part of the block: loading the qrcode.js library and trigger it using the saved URL to create a QRCode. Previous screencasts: Development Environment WordPress Plugin Anatomy of a Block Block Attributes ES6+ Syntax QRCode Implementation In the cast, I alter the block’s save function […]

Build a Block Series – Part 5: ES6+ Syntax

The fifth part of my series walking through building a Gutenberg block for the WordPress editor. This part takes a break from new block development to explain some features of ES6+ syntax used, specifically Destructuring assignments, Arrow functions, and Imports. Previous screencasts: Part 1: Development Environment Part 2: WordPress Plugin Part 3: Anatomy of a […]

Build a Block Series – Part 4: Block Attributes

The third part in my series walking through building a Gutenberg block for the WordPress editor. This lesson continues the anatomy of a block, specifically a block attributes. Previous casts: Development Environment WordPress Plugin Anatomy of a Block Block Attributes Attributes are the way a block stores data, they define how a block is parsed […]

Build a Block Series – Part 3: Anatomy of a Block

The third part in my series walking through building a Gutenberg block for the WordPress editor. This lesson covers the anatomy of a block. Previous casts: Development Environment WordPress Plugin Anatomy of a Gutenberg Block At its simplest, a block in Gutenberg is a JavaScript object with a specific set of properties. Here is the […]

Build a Block Series – Part 2: WordPress Plugin

The second part of my series walking through building a Gutenberg block for the WordPress editor. See Part 1: Development Environment. Part two covers creating a WordPress plugin and setting up the JavaScript build for block development. After this part, all the pieces are in place to start creating a block. WordPress Plugin A WordPress […]

Build a Block Series – Part 1: Development Environment

I’m kicking off a new series of screencasts for building a Gutenberg Block for the WordPress Editor. The intended audience is a developer who may not have experience with WordPress and/or JavaScript, so introductory level. The series will focus on building a QRCode block, that I have an idea for but have not yet built. […]

Good first issue on Gutenberg

This post and screencast walks through the process for how you can make your first contribution to Gutenberg. I walk through all my steps to submit this Gutenberg PR#18175 This follows up on my previous screencast for creating a Storybook story for Gutenberg components. Steps 1. Find issue to work on. Search using the good […]

Coding a Storybook Story

Being inspired by my colleague Jon Q videos for building a Gutenberg Component. I wanted to try my own, just focused on building the story part for Storybook. Q’s videos are great, they go deep into the thinking and details for designing components and a large component design system. My screencast is just short and […]

On Fruit Trees and Code Bases

A fruit tree planted in a nice sunny spot, given water and time will grow. It may not grow how you want or expect it to, but grow it will. Each branch of the tree does it’s job and sprouts new branches. All of them competing for sun, getting in each others way, and shooting […]

Switch from Ubuntu to Manjaro

I switched from Ubuntu to Manjaro for my primary Linux system, a Dell XPS laptop. I’ll cover briefly why, but the change is not nearly that big because I still use GNOME desktop which is more or less the same for both. I also use a Windows 10 desktop 😲 for games and other things […]

Allowing SVG in WordPress Content

I ran into an issue when trying to save SVG as part of a block. If you are having the same issue, or similar with non-typical tags being used; then here’s how you can fix it. In creating a Gutenberg block, adding an SVG element as part of the save() function it was being stripped […]

wpsync – Markdown to WP

wpsync is a command-line tool to sync a local directory of markdown files to your WordPress. I really like markdown and vim. My publishing process was: Create a draft in markdown, When ready to publish v1.0 copy-paste to WordPress; the editor converts markdown nicely, and then publish However, when a revision is needed, it must […]

Sports Books

In the March 14, 2019 episode of the Bill Simmons Podcast, Bill and the Sports Repodders go over their list of their favorite sports books, ones they recommend to read for up-and-coming writers and those interested in the craft. I’ve been looking for a good list of sports books to read, so I compiled their […]