Many years ago (October 2015, to be exact) I wrote a small plugin that allows you to add a note when updating a post, intended as a way to describe what was changed in that revision. For the developer set, it’s kind of like commit messages for your WordPress post/content updates. It was created to fill a need on various WordPress.org sites, such as the handbooks, but it seemed generally useful so I released it as a public plugin. After one more update in August 2016, it just sat there, usable and useful but without any attention. Until this week.
I stream my open source work semi-regularly, and decided that working through how to adapt an old plugin to the block editor (2 years late) would make for a useful exercise. So I did that, for almost 4 hours! But that’s not how long it takes to do this – the base work of this really took about 45 minutes, with the rest of the time spent chatting and chasing a bug related to revisions. So, for this post I’m going to explain the process of achieving the final code, first demonstrating what most people will need, then what I actually did because of some specific UX needs, and then dissect the revision bug and things I tried that didn’t work out.
Like many people, between general interest and needing a pandemic-friendly hobby, I have gotten into mechanical keyboards. In browsing through endless photos of interesting builds, I discovered a really cool keycap set called GMK Dots by a really cool designer known as biip. Originally a joke, people loved them so much that they really got made. And I loved them! But as an idea, not the colors. Even now, with a round 2 coming including a light version, it’s just not for me. I also do not like Cherry profile keycaps, which is what GMK produces. The KAT Milkshake set, also by biip, had a Dots kit with amazing colors, but is no longer available and between commanding extremely high resale prices and not quite including the colors in the rows that I would prefer, it was not a reasonable option.
So, with copious credit to biip as the originator of the idea, I decided to make my own set using KAT Blanks, my current favorite profile, with pastel/vaporwave-ish colors to match my general aesthetic. KAT Blanks are made of PBT, which is compatible with dye sublimation (dye sub), a process in which things are heated up to the point where ink and surface fuse, creating a permanent print. With a number of retail dye sub products available, I decided this would be a fun DIY project.
Here’s the general concept:
Print dots using dye sub ink or cut them out of ink-saturated paper
Center them on clean PBT keycaps (not ABS!)
Tape them down securely
Heat them up to 400ºF for a length of time related to pressure
Let cool before peeling off tape/paper
Mount and enjoy
I personally have a Cricut cutter machine, and they make both dye sub markers and dye sub sheets, so in the interest of having clean circles, I decided to use the dye sub sheets. I am also currently on a full grid ortholinear keyboard so I only need to worry about 1U keycaps for the moment. Here’s the specific process I used, and then below I will get into a bunch of details / a build log.
Cut 6mm dots inside of 12mm squares on Infusible Ink paper
Cut the squares out and peel off excess material
Center the squares on the keycaps, add a little bit of heat conductive material to the center of the tops to level them out a bit, and then tape the whole thing down to maintain contact
Bake for 400ºF in a pre-heated, precise oven (Breville Smart Oven, no convection) for 4 minutes
Let cool before peeling everything off and mounting
Just kidding I’m not going to wax poetic on virality. But, I posted this timelapse to Twitter once upon a time and later set it to a truly annoying sound on TikTok because I was curious about the video editor and have almost 3 million views there, which just goes to show it’s all meaningless. Anyway, people seem to like it, and of course I like it, and I’ve gotten a few questions about specifics like how many eggs, so I finally took some pictures as I made one this morning (sans bacon and cheese) so I could post about it.
Oh, and one other thing, I want to give credit to my two inspirations. The first is my dad, who doesn’t really like sweet breakfasts, so we grew up eating savory egg bread as a special breakfast item instead of French toast. The other is this video of an Indian street food called a bread omelette (among other things, I think?) that also got a lot of attention. It seemed like a smart way to not make a mess with fully dipping the bread and being a born New Yorker, egg sandwiches are always a good thing to me. My “egg bread” gets its name from my childhood and does not involve anything particularly special, but of course you can adapt as you like. If I have flowering garlic chives around, I will use them. The only thing I will say is that I am not open to commentary on the cheese from the original video – a proper New Yorker bacon egg and cheese is made with cheese that is engineered to melt, end of story. 🙂
Gather your ingredients
This process goes pretty fast, so gather your necessary materials:
Two slices of bread
A nonstick or cast iron pan that closely fits them side by side
Neutral oil or butter (I personally do not like the taste of cooked butter with eggs, which is why I use oil)
A mixing bowl
Two eggs, or three if you’re hungry or your bread is large
Milk (also optional, for a little extra fluff)
Heat up the pan while you beat the eggs
Heat your pan up over medium to medium-high-ish heat. If you like your eggs creamier, use lower heat. I like mine fluffier and slightly browned, so I use higher heat. It’s all preference. Beat the eggs with about the same amount of salt you’d use for scrambled eggs and some pepper if you like until foamy across the top, then beat in some milk (or water, or chicken stock, or leave that out, whatever).
Add oil to your hot pan
Drizzle a bit of oil in the bottom of your pan and swirl it around. You are welcome to try making it with less oil, but here’s a tip from Chinese cooking: we use at least enough oil to coat the bottom of whatever pan we’re using to scramble eggs in and heat it up hot because it makes them fluffier. If you like creamy eggs, don’t do that. Again, it’s up to you to figure out how you like things. Anyway, let the oil heat up until it shimmers a bit.
Pour in the eggs and dip+flip the bread
This is the part that most frequently seems to be missed upon recreation, so here’s a regular speed GIF. Since I’m using a regular sandwich loaf that has defined sides and is wider than it is tall, I want the the bottom sides to be facing each other post-flip, so I start with the top side facing the middle for the dip. Hope that makes sense. If you use square bread, that’s much easier.
After I’ve dipped and flipped, I scrape any remaining egg out of the bowl to cover any remaining dry spots on the bread. You don’t have to, but you have to let the eggs cook for a moment anyway so you might as well not have any waste. Cook the eggs until they’re mostly set – you can move the edges in and swirl the egg around if you want.
Flip the whole thing
Next you want to get your spatula under the bread and flip the entire thing over. It might make a small mess if the egg is still super runny. Let the remaining egg set for a few seconds over the heat and then fold the edges of the egg in like so.
Fold and flip
Now you’ll want to fold it so that the slices are stacked like a sandwich. Remember in the beginning where I said I wanted the bottom sides to face each other? That’s why. They’re flat so the fold is easier to manage. Anyway, toast each side until it’s lightly golden brown. I also like to prop it up with the help of another utensil and toast each edge a bit, that’s up to you.
The most important part!! It doesn’t need to look pretty if it tastes good! I use a knife and fork but I guess you could pick it up with your hands if you really want.
Masterclasses are not unique to classical music, but they do form a central and critical component of music study. A masterclass is a format in which musicians perform a work for an established artist and the artist then gives them feedback rather like a lesson, except that all of this happens in front of an audience. You might also hear about “studio class” in music school settings, which are similar except that it is not an open audience but instead one made up of your peers who share the same primary professor. For big artists coming to a school or a region, you might have to audition (compete) for a spot to be criticized publicly on your performance. Put that way, it might not sound very appealing, but it is foundational in how to function and succeed as a musician and really in any profession, including as a part of a software team, which is what I do today.
Managing feedback in group settings
The first experience in managing professional feedback is typically how you receive it. Sometimes you might not immediately agree with what you’re being asked to do, and that’s okay. What’s important is to respect the time and effort of the person giving you the feedback and show them that you understand it, even if after synthesizing that information you decide it’s not the direction you want to go. In music, that means acknowledging what you’ve heard by demonstrating the requested change on the spot. This might be a specific request, like “play this section softer”, or something that requires more interpretation, like “don’t lose momentum by getting stuck before the high point of this phrase”. This kind of flexibility is itself a skill, and one that is of high value.
In software, your feedback sessions might not involve direct and immediate action in the same way, but it can be very helpful to show that you understand a concept. For instance, you might say “I hear you, and I need to think about it some more; I’ll start by trying out a different way of structuring this file”. Do be careful not to just repeat back verbatim all the time or come across as explaining back in a condescending way.
As you progress through your career, you will likely find yourself in the position of also giving feedback in a group setting. For many people who are just beginning this part of the journey, this can be quite intimidating because you have not previously had experience in doing this. You also may have had bad experiences in the past with feedback that was not delivered in a constructive way. This is where an early culture of group feedback comes in so handy, notably in the studio class setting: professors are asking your peers to also learn how to process, structure, and deliver feedback in real time. You hear from your professor every week; this is an opportunity for students to deliver a polished performance, receive feedback, and give feedback all at once.
That said, peer groups can also be intimidating. This is not unlike having to give a talk or demo some code in front of your coworkers – it can feel like more pressure than a large room of strangers because these are people whose opinions you are exposed to on a near-daily basis and hopefully care about. Remember that we are all learning all the time, and your peers may also need to work on their delivery! Some strategies you may have encountered are to use “yes, and” instead of “but”, or to begin feedback with related praise.
I highly recommend that teams actively solicit peer feedback at various stages throughout a project and also workshop methods of requesting and giving feedback, something that can be facilitated by an engineering manager. An EM might even want to structure some team meetings much like a studio class, where people present on something they’re working on so that not only do they have a chance to share about something they might not otherwise get to talk about, but the team also has a mechanism built-in for giving and receiving feedback. Soliciting feedback is also a skill in its own right – a culture of regular and expected feedback goes a long way toward building that in all levels of team members.
Another major difference between masterclasses and lessons is that you are expected to present a polished product at a masterclass, whereas lessons are to workshop that polish. In a masterclass setting, you and any collaborators enter the stage, bow, and perform to applause before proceeding with the feedback from the masterclass artist. Some professors, especially at the conservatory level, also require performance attire when performing in studio class (though perhaps not black tie).
Working on a software team typically does not involve building something in a vacuum until you’re ready to release it to the world – you hopefully have team checkpoints that are more equivalent to music lessons. But there is a lot to be said for knowing that even though you’re ready to share your work publicly and have met your deadline, there’s still more that can be done, rather like a software beta. And even for something you’ve been performing for a long time, a fresh perspective can change not only how you’re approaching that piece, but how you think about your craft in general. Always be prepared to show your best and recognize that true mastery is in knowing that there’s always another level to reach for.
While masterclasses are typically with an individual artist who specializes in an instrument, many works involve other musicians, such as a string quartet or a piano trio. These are things that are worth bringing to masterclasses too! Related, it’s also valuable to have lessons from people who might normally be considered outside of your discipline – one of the best lessons I’ve ever had was with a jazz professor who spent 2 hours pushing me to express myself more and more.
Not only do your collaborators need to be equally prepared, you need to work together to really achieve artistry. All too often you will see lower-level instrumental masterclasses where the pianist is an afterthought, plunking their way dutifully through concerto reductions, and it shows. Sometimes the masterclass artist will also dutifully ignore them, but more often they have to involve all collaborators in their feedback. No amount of telling a vocalist to evoke the dreamy sparkling of Debussy’s Nuit d’Etoiles is going to work if the pianist is heavy-handed on those rolled chords, or vice versa. (This is also why collaborative pianists have to study lyric diction and multiple languages and can specialize in vocal coaching, but I digress.)
Not only does feedback need to be inclusive of a group while also targeted to each individual, it needs to be clearly contextualized. In music, that means including music history and theory as well – the performance practices of the era, specific notational quirks of the composer, what harmonies are and how do they drive the piece, and limitations of instruments and how they interact together. So when giving feedback to a software team, be sure to continually frame things within broader feature or product goals, and tie the various disciplines together to create that cohesive whole.
In both giving and receiving that style of feedback, you will find that you need to have some amount of understanding of disciplines outside of your own. That doesn’t mean that you need to be an expert; in fact, you will probably be received poorly if you try to instruct somebody on how specifically to accomplish something you don’t normally work on. Instead, much like framing within broader goals, think about how you might inspire somebody to look at something a different way, or contextualize within your own discipline so that they can understand you better as well.
Bonus: watch a masterclass!
Here’s a 45 minute masterclass session with Benjamin Zander, the music director/conductor of the Boston Philharmonic Orchestra and the Boston Philharmonic Youth Orchestra, and Amanda Chi, the cello section lead of the youth orchestra. I promise you don’t need to be a musician to get something out of this – at one point, Maestro Zander acknowledges non-musicians in the audience and gives them a brief explanation of what he means by the direction and pull of harmonies. But even outside of that, you’ll see some real mastery of not only the musical material from both parties, but also how to address both audience and performer, contextualize the feedback, and deliver that feedback in a constructive and suggestive way rather than making it into a personal demand. I also really enjoy what he talks about at the end, differentiating between what you need to do as a performer of this solo piece versus what you need to do as the leader of your group.
I have tried probably every todo app under the sun and they all suffer from the same fatal flaw for me: the window/tab/app gets buried and I stop referring to it. Now, if I was rich with unlimited space, maybe I’d get a monitor just for a todo app. But, I’m not! And I also embrace the small child in me who still loooooooves stickers and an endless supply of gel pens.
My basic planner method is the same no matter what the actual paper product is:
A weekly overview of things I need to accomplish or focus on that week along with a summary of how I felt about last week and things I’m grateful for (I think this is corny and I am here to admit that it is a nice thing to do for mindfulness).
A section for each day where I write down the top 3 things I have to get done that day (or more realistically, really should get done) and any other todos that come up.
Somewhere to take notes.
Some additional nice things to have are: tracking various kids’ activities, food management, and keeping memories.
In the layout above, I’ve repurposed some sections to fit whatever I needed, and ended up using the 3-part box that typically would be last week summary/this week summary/gratitude for some notes on my sister’s wedding instead, but it’s a good overview of how I use things. On the left there are things that really about the week or some specific item of planning (trips, in this case) that isn’t really tied to a given day. I also like to use a quote/phrase sticker down at the bottom, and eventually added a photo of an actual spontaneous girls’ night in an empty area.
On the right there’s one box where you have a line per day, and I split that in half to put my workout schedule – currently following P90X 3 – and the main meal I need to plan each day. After that there’s one box for each day of the week, where I was pretty good about writing down my top 3, if not actually getting through them. It was my first week back at work after sabbatical, I’ll forgive myself. The Saturday box is covered by another photo I printed out of a special memory I wanted to keep of that day, which perfectly fits inside the box. I use an HP Sprocket I picked up for super cheap for little photo stickers and I’m pleased with it, full price is perhaps a little steep but it’s really fun to have, especially because I only have a black and white laser printer at home.
Each Monday morning I sit down and get things mostly set up – drawing 3 circles for each day, reviewing the fridge, reflecting on the past week, transferring any continuing projects or todos, picking out some stickers, etc. I don’t really go for color schemes or any particular theme with stickers, but it’s a fun way to repurpose or define sections and emphasize things.
So how did I end up going from a dot grid notebook to this fancy thing? And what is the deal with the stickers? Well… last fall, I went to Target, as one does, and randomly picked up a pad of planner stickers that jumped out at me because they were really well-designed, nice paper, and the bulk of the stickers were for writing down your top 3-5 things to do in a cute little box. Perfect for how I set up my days!
I really enjoyed the stickers so I went online to try to find more of them and… couldn’t. Turns out they were a limited Target-specific release that I lucked upon. But it did lead me to the company and their core product – the Happy Planner. I’ll be honest – I got completely sucked in to browsing stickers because again, I LOVE STICKERS, but didn’t really find the planners all that appealing because most of them focused on more of a sticker-centric artsy layout, rather than writing on lines. I ended up ordering some sticker books to pick up from a craft store on my next trip to the US, and when I went, I browsed their planners in person and found this one with a layout and relatively understated design that actually appealed to me.
Here’s the thing: this ecosystem of products can really suck you in. There’s an entire world of YouTubers dedicated to showing how they sit down each week to do “spreads” and explaining the pros and cons of the different layouts (mine is called a dashboard layout, apparently) and flipping through sticker books and buying dedicated planner totes. I am perhaps not at that level (though turns out of my beloved friends is at the cutting-custom-stickers level so I mostly just text her about this), but I did get a couple other things that are worth mentioning.
I also picked up a pack of project planning paper in a bigger size and figured I’d try them out before committing to the whole disc-bound system. I ended up enjoying it so much I bought one of their notebooks in that size with a cover I like a lot to hold that paper. I really like being able to customize the contents of that particular notebook without it being a hardcover binder, so it currently has a combination of project sheets and regular lined paper.
And finally, besides the ever-growing pile of sticker books, I have one of their recipe organizers. I have a pretty sizeable collection of cookbooks that I use a lot, and the internet is a treasure trove, but I find myself continuing to write down favorites we make constantly and I’m tired of digging out a giant book for, recipes from friends and family, and modified versions of things that I’ve figured out over several iterations. There’s this funny orange journal I’ve had for almost 20 years that’s become the place I write recipes down (after cutting out several pages of teenage angst at the front), but I figured a structured recipe keeper that still lets me just write stuff down would marry the desire to have something polished with my preference to not futz with my computer any more than I already do. To be fair, I do end up printing the recipe names and foiling them (another post someday, maybe!), but that’s it for the computer involvement 🙂 The disc-bound system also comes in handy again there, because I’ve added a page for common weights and conversions that I use frequently and are spread out between several different books.
Anything else you want to know? Just ask! And I’m sure I’ll change my mind again 6 months from now, because I’m always trying to manage myself better.