• Twenty Twenty-One Available for Download

    Twenty Twenty-One Available for Download

    I had the privilege of designing this year’s WordPress default theme, Twenty Twenty-One, which was released yesterday alongside WordPress 5.6. I started working on the initial concepts for the theme back in July, so seeing it finally launched is fantastic.

    Thanks to my amazing team of co-contributors: my co-lead Carolina Nymark, who spearheaded development of the theme, our theme wrangler Jessica Lyschik, and our supporting team including Beth Soderberg, Ellen Bauer, and Jonathan Desrosiers (go Sox!). Special thanks to Ari Stathopoulos, Kjell Reigstad, Allan Cole, Jeff Ong, Justin Ahinon, Rolf Siebers, Simon Resok, Guido Offermans, Kishan Jasani, Kelly Choyce-Dwan, and dozens of others for their numerous contributions to the theme, to Sarah Ricker and Enrique Sanchez for their guidance and help in making this theme WCAG 2.1 AAA-compatible, and to Josepha Haden and Chloรฉ Bringmann, who always rallied up support when we needed it.

    Keep an eye on this space for a full breakdown of the design process sometime soon.

  • Mel and Kelly’s atmospheric October wedding

    Listen. I know we got married in October… 2019. And it’s now… December 2020. I started drafting this post at the beginning of the year, but then 2020 happened. Also we bought a house and moved to Philly, so. Anyway, I’m finally wrapping it up.

    (Unlike our wedding thank you cards. Sorry.)

    So, here’s a rundown of my beautiful wedding to my partner of 10 years, Kelly.

    (more…)
  • Songwriting

    Songwriting

    It’s been a long year. Like, a long, stressful, kind of terrifying year. One thing I learned this year? I’d created all these amazing coping mechanisms to improve my mental health, like my weekly drum lessons and band practice. Guess what I couldn’t do once the pandemic hit in March? See other people in enclosed spaces. Like studios. So, there went all my beautiful coping mechanisms.

    Luckily I was able to start doing remote music lessons with my drum instructor, replacing our in-person drum lessons. We’ve been going through the basics of music theory, composition, and mixing.

    Once I started writing music, we progressed from some basic song forms:

    “AABA” song form exercise from April

    To rearranging songs:

    “Costa del Sol” but like, jazzier or something, done in June and July

    To finally, my first fully composed tune. I started working on this untitled lo-fi tune in early October, knocking out most of the chords and the melody within a day, along with a basic drum part, crackly vinyl, and vocals samples from an old radio show:

    First draft of my lo-fi tune from early October

    Then, I spent over a month going back and forth with my instructor each week, building up some additional parts, restructuring the drums and recording my own sounds to reinforce them, and lastly adding in a sampled sound effect to bring in some impact. Finally, Max mixed all the pieces together and we went over the various plugins and techniques he used to make it sound great.

    Here’s the final tune. It’s the first full song I’ve written and for now, I’m pretty dang happy with it. Enjoy!

    https://soundcloud.com/mel-choyce/one-last-vibe
  • Creating a simple block pattern plugin for the Gutenberg editor

    Creating a simple block pattern plugin for the Gutenberg editor

    Gutenberg has the potential to be an extremely powerful site building tool. Each release brings it closer and closer to full site editing. Imagine being able to rearrange your header, add a sidebar, or combine different layouts inside your footer without needing to rely on your theme to provide multiple options.

    Part of this new vision for WordPress includes block patterns, which are combinations of blocks you can create and share to help people make rich, unique site layouts. The possibilities are exciting. Many third-party plugins already provide these feature, so I’m stoked to see them being included in the core editing experience.

    Gutenberg 7.8 introduced a new (WIP, subject to change) API to register custom block patterns:

    register_pattern(
        'my-plugin/my-awesome-pattern',
        array(
            'title'   => __( 'Two buttons', 'my-plugin' ),
            'content' => "<!-- wp:buttons {\"align\":\"center\"} -->\n<div class=\"wp-block-buttons aligncenter\"><!-- wp:button {\"backgroundColor\":\"very-dark-gray\",\"borderRadius\":0} -->\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-background has-very-dark-gray-background-color no-border-radius\">" . esc_html__( 'Button One', 'my-plugin' ) . "</a></div>\n<!-- /wp:button -->\n\n<!-- wp:button {\"textColor\":\"very-dark-gray\",\"borderRadius\":0,\"className\":\"is-style-outline\"} -->\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link has-text-color has-very-dark-gray-color no-border-radius\">" . esc_html__( 'Button Two', 'my-plugin' ) . "</a></div>\n<!-- /wp:button --></div>\n<!-- /wp:buttons -->",
        )
    );

    It really only contains two things: a name for your pattern, and the raw HTML output that you can copy and paste from the Code editor view. This means you can design your patterns straight in the editor, no coding knowledge required.

    When you add a new pattern to your site, they show up in a new sidebar in your editor:

    The new (temporary) patterns sidebar. See more designs on GitHub.

    Let’s look at making a new pattern.

    I want to create a simple text pattern that contains a larger introductory paragraph, and two columns of paragraphs below.

    The first thing I do is add a new column block to the editor:

    I want the intro paragraph to be a little wider than the two paragraphs I’m going to put below it, so I choose the 70/30 option.

    I enter my first paragraph, and increase the font size to 28px. I leave the second column blank.

    Now, I add another column block, this time choosing the 50/50 option, and add my two paragraphs.

    That looks good. Let’s go over to the Code view and grab that raw HTML:

    Escape it, and then plop it inside register_pattern:

    register_pattern(
        'mels-gutenberg-block-patterns/intro-two-columns',
        array(
            'title'   => __( 'Intro paragraph with two columns', 'mels-gutenberg-block-patterns' ),
            'content' => "<!-- wp:columns -->\n<div class=\"wp-block-columns\"><!-- wp:column {\"width\":70} -->\n<div class=\"wp-block-column\" style=\"flex-basis:80%\"><!-- wp:paragraph {\"customFontSize\":28} -->\n<p style=\"font-size:28px\">Driving empathy maps and possibly surprise and delight. Target mobile-first design with the aim to build ROI.</p>\n<!-- /wp:paragraph --></div>\n<!-- /wp:column -->\n\n<!-- wp:column {\"width\":33.33} -->\n<div class=\"wp-block-column\" style=\"flex-basis:33.33%\"></div>\n<!-- /wp:column --></div>\n<!-- /wp:columns -->\n\n<!-- wp:columns -->\n<div class=\"wp-block-columns\"><!-- wp:column -->\n<div class=\"wp-block-column\"><!-- wp:paragraph -->\n<p>Informing innovation and then surprise and delight. Driving custom solutions and possibly think outside the box. Create awareness with a goal to funnel users. Lead relevant and engaging content with the possibility to infiltrate new markets.</p>\n<!-- /wp:paragraph --></div>\n<!-- /wp:column -->\n\n<!-- wp:column -->\n<div class=\"wp-block-column\"><!-- wp:paragraph -->\n<p>Amplifying innovation with the possibility to target the low hanging fruit. Consider dark social but innovate. Creating a holistic approach in order to be on brand. Leading empathy maps but be CMSable. Repurposing branding.</p>\n<!-- /wp:paragraph --></div>\n<!-- /wp:column --></div>\n<!-- /wp:columns -->",
        )
    );

    (I’ve used onlinestringtools.com to escape the raw html output, but there are also code editor tools that can do this.)

    Then, we can wrap our registered pattern in a plugin:

    <?php
    /**
     * Plugin Name: Mel's Super Rad Patterns
     * Description: A simple plugin to demonstrate how to add Block Patterns to Gutenberg.
     * Version: 1.0
     * Author: Mel Choyce
     */
    
    /**
     * Register Custom Block Styles
     */
    function mels_patterns_register_block_patterns() {
        if ( function_exists( 'register_pattern' ) ) {
        /**
        * Register block patterns
        */
            register_pattern(
                'mels-gutenberg-block-patterns/intro-two-columns',
                array(
                    'title'   => __( 'Intro paragraph with two columns', 'mels-gutenberg-block-patterns' ),
                    'content' => "<!-- wp:columns -->\n<div class=\"wp-block-columns\"><!-- wp:column {\"width\":70} -->\n<div class=\"wp-block-column\" style=\"flex-basis:80%\"><!-- wp:paragraph {\"customFontSize\":28} -->\n<p style=\"font-size:28px\">Driving empathy maps and possibly surprise and delight. Target mobile-first design with the aim to build ROI.</p>\n<!-- /wp:paragraph --></div>\n<!-- /wp:column -->\n\n<!-- wp:column {\"width\":33.33} -->\n<div class=\"wp-block-column\" style=\"flex-basis:33.33%\"></div>\n<!-- /wp:column --></div>\n<!-- /wp:columns -->\n\n<!-- wp:columns -->\n<div class=\"wp-block-columns\"><!-- wp:column -->\n<div class=\"wp-block-column\"><!-- wp:paragraph -->\n<p>Informing innovation and then surprise and delight. Driving custom solutions and possibly think outside the box. Create awareness with a goal to funnel users. Lead relevant and engaging content with the possibility to infiltrate new markets.</p>\n<!-- /wp:paragraph --></div>\n<!-- /wp:column -->\n\n<!-- wp:column -->\n<div class=\"wp-block-column\"><!-- wp:paragraph -->\n<p>Amplifying innovation with the possibility to target the low hanging fruit. Consider dark social but innovate. Creating a holistic approach in order to be on brand. Leading empathy maps but be CMSable. Repurposing branding.</p>\n<!-- /wp:paragraph --></div>\n<!-- /wp:column --></div>\n<!-- /wp:columns -->",
                )
            );
        }
    }
    add_action( 'init', 'mels_patterns_register_block_patterns' );

    …And now our new pattern shows up in the sidebar inside Gutenberg:

    Whoo! ๐ŸŽ‰ Party time ๐Ÿ•บ


    The possibilities are pretty endless. You can stick with simpler patterns, or combine even more blocks and patterns to create rich, complex layouts:

    Want to learn more about combining blocks to make unique designs in WordPress? Attend WPBlockTalk, this upcoming Thursday. It’s free and online, so you can watch from anywhere!

  • Systemic Change

    I’ve been subscribed to Dense Discovery, a weekly design newsletter, for a little over a year now. Each newsletter starts with some smart editorializing from Kai, its publisher. Recently he’s been talking a lot about climate change and personal impact.

    The idea that we, as individuals, can turn the climate crisis around by driving a little less or making our own toothpaste successfully distracts us from focussing our energy on the only thing that really moves the needle: systemic change. (This paper shows that offering a small, low-impact option actively reduces support for a large, effective one.)

    So when we promote individual action as a meaningful method to combat climate change, we donโ€™t just play right into the hands of the corporate propaganda machine, we also actively shift attention away from the real problem: the big polluters.

    Kai Brach, Dense Discovery newsletter

    This most recent newsletter really resonated with how I’ve been feeling lately about the focus on blaming individuals, rather than the systems contributing to climate change. As individuals, we should make conscious decisions around our consumption, recycling, etc. โ€” but without changing the systems that enable just 100 companies to produce 71% of global emissions, we’ll never be able to make an impact on climate change.

    We need less fighting to ban straws, and more fighting to support legislation that holds governments and companies accountable.

  • Adding block dependencies to themes

    Adding block dependencies to themes

    When I was working on the designs for the new WordPress Block Directory, I thought a bit about how it could be integrated with themes, which currently don’t allow inclusion of blocks and plugins (for good reason โ€” it would suck to lose content on theme switch!). With some careful planning, I think we could safely introduce block dependencies into themes. Here’s what I’m thinking.

    Themes can specify blocks.

    When creating a theme, you can specify specific blocks from the Block Directory to include with your theme. These could be blocks you’ve written, or other blocks you’ve accounted for in your theme styles.

    Activate blocks on theme activation.

    When someone activates (not installs) your theme, WordPress can silently download the blocks from the Block Directory.

    Delete unused blocks on theme switch

    If someone is trying out a bunch of themes, and each of those theme includes block dependencies, we don’t want to install a dozen or more blocks someone might not use. If someone switches to a new theme without using included blocks, WordPress could silently delete them from the site, just as it silently installed them.

    Keep used blocks on theme switch

    If you’ve used any of the blocks a theme provides, they remain installed and activated when you switch themes.

    Third party blocks = third party dependency management

    If the blocks you’re including aren’t in one of the Block Directory, you’ll need to rely on a third party dependency management system, similar to TGM.


    How does this sound? As a theme author, would you like to see a dependencies system like this?

  • 2019 Recap

    2019 Recap

    As the year draws to a close, I want to reflect on some of my accomplishments this year. My coach sent over a couple questions to help frame my thoughts.

    What caused me to grow?

    Of all the questions in this post, this is the one I’ve found hardest. It’s the first question, yet I’ve answered it last. I worry that I didn’t grow enough this year. My brain feels… slower. It’s frustrating.

    Overall, I’d say the two skills I grew the most this year are writing, and decision making. I’ve been doing a lot of copyediting of posts at work, and trying to write as often as I have something to say. I’ve gotten more confident about making decisions, and stepping back and see the entire picture to help move something forward, instead of having a snap reaction.

    What am I most proud of?

    I proposed last summer during my sabbatical, and spent this year planning my wedding. My (now) spouse is generally the planner, but I took on a lot of responsibilities when it came to moving items forward, and y’know what? Our wedding freaking rocked. It was super fun, our friends and family were there to celebrate, the good was great, my band played… And I got married! Probably the most important part of the wedding!

    Photos by โ€‹Tim Correira Photography

    I also painted like, 35 little watercolors for guests in the two weeks proceeding, and not only did I bust ’em out, but they looked really nice. I was really worried I’d taken on too much and I’d flake out and fail, but I pushed through and got them all done. Good job me!

    Where did I make progress?

    I spent a lot of time on music this year, continuing to learn drums, and picking up bass at the beginning of the year. I played both at this year’s Automattic Grand Meetup, which felt super badass.

    I’ve also been working with a trainer, and this year we went really hard into weightlifting, which I’ve been loving the hell out of. Picking things up and putting them back down again is very satisfying. Hoping I can get up to 200lbs+ next year.

    I also made some pretty good art this year:

    What was missing from my life?

    Time! This year went by so quickly, and with both wedding planning and work travel, I feel like I lost a couple months.

    I’d also say “focus,” but let’s be honest โ€” that’s always missing.

    Whom did I help?

    Like last year, I volunteered at GRCB this summer. I spent the morning teaching drums to kids, then did “site crew” in the afternoon, which mostly meant setting up, and being available during, the workshops we run throughout camp. Watching a bunch of kids learn how to play drums, and then perform on stage, all in one week? Priceless.

    I’ve also continued to volunteer for Ragtag and Tech for Campaigns, where I worked on several websites and ad campaigns throughout the year. Most recently, I worked on helpfloridaregister.org, which uses the new Twenty Twenty theme, Gutenberg, and WPML!

    What am I most grateful for?

    Um, obviously my fantastic spouse, Kelly. She’s my partner in all things, and is always there for me. She brings stability and structure to my life.

    Additionally, as someone who grew up poor, financial stability is always at the top of my mind. Because we started saving for the wedding a couple years ago, it didn’t put us as far back as I’d worried it would. Despite paying a lot of money for a Big Thing, we’re still in a good place. And, I have enough extra money to pay for activities that increase my mental and physical health, like drum lessons and a trainer. I’m incredibly thankful for my salary and benefits that keep me financial, and less worried about healthcare than many fellow Americans.

    I also live in a great city, where I have easy access to fresh, nutritious food. We have tons of farmers markets where I can pick up produce from local farms, and I usually have the time to cook for us as well. I ate a lot of Hamburger Helper growing up. Like, a lot. Being able to acquire and cook fresh food is a luxury I appreciate the hell out of.

    What was the most fun?

    I’d be remiss if I didn’t bring up my wedding again. The ceremony, the reception, it was all perfect. Afterwards, Kelly and I went out with a bunch of friends and continued having a blast, then got to go home together and crash for a couple days to recuperate before heading to WordCamp US the next week.

    One of the most consistent sources of fun in my life has been my band, Peachfuzz. We played three gigs this year at the Midway, Union Tavern, and Warehouse XI (for my wedding!), and practiced as often as we could, sometimes as often as every week. We had some bandmates cycle in and out, but the love remained.

    Playing in a band and practicing with people regularly has made me a much better drummer. I can’t wait for us to start recording our first album early next year.

    Thank you Georgia, Nadya, Carolyn, Jenny, Darby, Peat, and all of our Peachfriends!

    What advice would I give myself for 2020?

    I’ve gotten pretty comfortable โ€” I think I need to push myself more out of my comfort zone and try new things. We might move to Philly next year, which is going to be a very uncomfortable experience, since I’ve lived in Massachusetts for over a decade. Moving out of state is a huge change. I need to lean into that discomfort and fear of change, and let it motivate me.

    Routine and habit building must continue to be a priority for me, one step at a time. I need to hold myself accountable for this, especially if we move, because I’ll need to start building new habits based on new locations.

    Also, you know, all of this.

    Here’s to 2020!

  • Recent writing published elsewhere

    Recent writing published elsewhere

    I’ve written two articles in the last month that I’d love to share with y’all, in case you missed them:

    “Embrace the Political” on CSS Tricks

    My first every CSS-Tricks article!! This one was a huge honor โ€” I’ve wanted to write something for CSS-Tricks for years. And phew boy did I piss off some dudes with this one!!

    The tl;dr is: I’ve seen more people accept that the work we do, and the decision we make, are political โ€” whether we want them to be or not. Some of these folks have used that knowledge to make positive change through civic tech volunteerism.

    Someone dudes took this to mean “talk to your coworkers about your lefty politics!!” ๐Ÿคทโ€โ™€๏ธ IDK, maybe I could have been more clear? But I get the feeling they only did a cursory scan, if that’s the conclusion they came to?

    Hopefully if I write another CSS-Tricks article it can be less, erm, controversial.

    “Art Direction and the New WordPress Editor” for 24ways

    I got to talk about art direction & Gutenberg, so you know I had a good time with this one. I’m probably gonna turn this into a talk to apply to WordCamps with next year.

    (BTW, this is also what inspired my recent Gutenberg layouts post.)

    It sounds like this is the last year of 24ways, so I’m really happy I had the opportunity to write another piece for them.

  • Four Gutenberg column layouts for the Twenty Twenty theme

    Four Gutenberg column layouts for the Twenty Twenty theme

    I’m working on a demo site for a post I’m writing, using the new Twenty Twenty theme for WordPress. I wanted to try doing a riff on the typical three-column-callout pattern. I liked the options I came up with, and wanted to share them.

    You can add these to your WordPress site by downloading the .json files and uploading them into your Reusable Blocks page in your site admin, located at /wp-admin/edit.php?post_type=wp_block. Then, you can find them in your block library under the “Reusable” category. When you add them to your content, you can make them single-use by clicking the โ€ขโ€ขโ€ข menu in your block toolbar, and selecting “Convert to Regular Block.”

    Note: To match the designs you see below, you’ll need to be running WordPress 5.3 or later, the Twenty Twenty theme, and ideally, the CoBlocks plugin.


    Option 1

    Pretty straightforward โ€” 2/3rds primary CTA, 1/3rd secondary CTAs stacked, wide-width. I’ve used an icon here from CoBlocks to add some emphasis to the primary CTA, but you could forego if you have a lot of text, or even use an image. A circular image like a headshot would work well here.


    Option 2

    Similar to the first option, but left-aligned instead of centered, shorter, and full-width. The secondary CTAs are further de-emphasized by using links instead of buttons.


    Option 3

    This layout plays with having an offset right column, which I’ve accomplished with a spacer block. You might need to tweak the height of the space to get it to work on your site. The left column is effective because the image is transparent, so it blends in well without edges. Any transparent image, or image where the background matches the background you choose, would work here. This could also easily be a square image, middle column, and the only one row in the right column. The layout is wide-width but could easily be full-width if you wanted, depending on your site’s background color.


    Option 4

    Another full-width layout, this one black. Like the above layout, it’s effective because the image’s background is also black, so it blends in. Instead of multiple text columns, this uses a large row and two smaller columns in the row beneath.


    Any other layouts y’all would like to see explored?

  • Hobbies

    My 30s have become about embracing hobbies.

    A friend on Twitter was recently doing those “like & I’ll say something nice about you” memes and I was pretty struck by mine:

    you are 100% living your best life. your adventures and creative pursuits are so kickass tbh (THEM WATERCOLORS) and I really admire your dedication to doing awesome things with your free time!!

    Which has got me thinking about how yeah, I kind of am living my best life? I’ve made hobbies a particularly important part of the last couple years. I feel like for the first time since I started working, I’m placing equal importance on my hobbies as I am work. I think my sabbatical went a long way to help me appreciate the power of not working all the time.

    I’ve joked before that it’s good that I have a tech job, because how else am I going to afford my hobbies? Games, art supplies, and instruments/music supplies cost ๐Ÿ’ฐ๐Ÿ’ฐ๐Ÿ’ฐ. But like… it’s true. I know our late-stage capitalist hellscape has made work seem like a way of life, but… maybe work can also be a means to an end, with that end being the time and resources needed to enjoy life? Is this how our parents’ and grandparents’ generations felt? (Well, not my parents, but someone’s parents.)

    It just feels like a big internal shift to go from “must. be. working. to. be. productive. human.” to “can’t wait to take a break and practice bass later!” I mean, I still have issues shifting myself away from work โ€” I finally tore myself off my computer around 7:30 pm last night to start making dinner โ€” but while progress is slow, it’s steady. I have band practice tonight, so that’s a solid break where I’ll need to get offline.

    Anyway. Hobbies rock. Looking forward to spending more decades to come exploring them ๐Ÿค˜