Four short things – January 18, 2019

Aaron has a better name for it, so I’m stealing that and replacing the poorly named “Scratch pad thoughts“. This will help enforce short posts!

How to make sure your recycling gets recycled

FiveThirtyEight has a good piece on making sure your recycling gets recycled that includes a handful of actionable steps you can take to make a difference. I made the adjustment to more sustainable beer purchasing last year after our local recycling stopped processing glass and I’m looking forward to implementing a few more changes.

It does seem like there’s an opportunity to work at the local level to help communicate some of the specifics to the community. So many things are different from place to place with how recycling is handled. First steps—reduce, reuse!

Posture tracking wish list

I tweaked something under a shoulder blade last week and have been dealing with the annoyance ever since. The subtle burning in my neck and shoulders has made it even easier to tell this week when my posture is bad.

This made me wonder if I could get a posture tracking app that used my webcam to spy on me and send a notification when I started slouching for too long or craning my neck in a weird way.

Posture Monitor seems like the most relevant, though it requires Windows and a 3D camera, so that’s a no go. I found another app from 2013 that seems to be right, but then I realized there’s no way I’m trusting a random, non-open source app with my webcam all day! 😂

It’d be fun to run across something though. I’m sure there’s a random GitHub repo out there that somebody has working but never publicized it.

Stopping the firehouse

I finally unsubscribed from the WordPress core trac firehose and am instead relying on component / focus / ticket specific notifications.

I definitely should have done this earlier—it’s probably been a good 3 years since I was reliably reading most things that went by. Now I just mark several hundred as read every few weeks. Already I’ve paid more attention to a few relevant tickets that would have skipped my radar before and I feel more in tune with what’s going on.

A leprechaun riding a T-rex barfing a rainbow into a brew kettle

A wall of art at Tailgate Brewery in Nashville, TN.

When we were at TailGate Brewery in Nashville during WordCamp US last year, I noticed this painting of a leprechaun (and a bull/devil) riding a t-rex barfing a rainbow into a brew kettle on the wall and took a picture because it made me laugh.

I started trying to find it or the artist the other day when I ran into this photo again, but all I could find is this 8-bit work on Behance by Cody King that is also a t-shirt.

Still hunting for the origin story.

Things I’m learning while playing with Gutenberg (part I)

I’ve been having fun working heavily with Gutenberg over the last several weeks. As I ran into a couple things, I started tracking them in a draft post so I could work through and publish them later.

Here’s the first set. 🙂

How to access className from a block’s save() function

The classname attribute is available to a block’s edit() function by default, but it is not available to the block’s save() function. I learned from this GitHub issue that registering className as one of the block’s attributes will provide it to the save() function.

registerBlockType( 'my/block', {

	attributes: {
		className: {
			type: 'string',
			default: '',

	edit( props ) {
		// className via props
		const { attributes, className } = props;
		const { customData } = attributes;

		return ( // ... );

	save( { attributes } ) {
		// className via attributes 
		const { className, customData } = attributes;

		return ( // ... );
} );

Be careful importing Lodash modules

If you want to use something from Lodash, like find():

// Import the module like this
import find from 'lodash/find';

// Not like this...
import { find } from 'lodash';

The latter brings in the global _ from Lodash, which overrides the global _ provided by Underscore and causes trouble.

A this.activateMode is not a function error that prevented media blocks from being used led me to this issue, which helped me.

Beware of non-changing arrays

I ran into this a couple different ways recently and I’m still working on understanding it completely, but things like Array().push and Array().pop modify the reference value of an existing array and may not trigger the state change you’re expecting.

let apples = [];
let oranges = apples;

oranges; // []

apples.push( 1 );
oranges; // [ 1 ]

oranges === apples; // true
oranges === apples.concat( 1 ); //false

I picked up on better approaches for this via this issue when a block’s attributes weren’t saving as expected.

Scratch pad thoughts for January 12, 2019

Costa first novel award winner recalls ‘awful’ time writing his book:

He was working as a travel writer in Dubai when the idea that would become Evelyn Hardcastle struck him. “It was the body-hopping and the Groundhog Day loop. I didn’t have anything else, the characters or murder, I just had that concept. The moment I got it, I thought: ‘Oh crap, now I’ve got to go and do that, and I’ve got to be in England, I need that atmosphere, those stately homes. I need to be lost in drizzly forests, I cannot do that in the desert,’” he says. “I was terrified the entire time, from the moment the idea came and I knew I had to follow through on it.”

I love that description of an idea.

Nadia Eghbal thinks through seed stage philanthropy and includes an interesting though on patronage:

“I also keep thinking about the need for something like Patreon, but “Patron”. Basically, a platform that inverts the ask, so it’s not just grantees soliciting money, but patrons who advertise their giving interests, like angel investors on AngelList.”

If Your Privacy Is in the Hands of Others Alone, You Don’t Have Any

It is only by owning [root authority over our lives] that we can crank up agency on the individual’s side. We have a perfect base for that in the standards and protocols that gave us the Internet, the Web, email and too little else. And we need it here too. Soon.

Doc Searls with a super interesting post contrasting privacy regulations with attempts to actually assert privacy rights. I like the idea of Customer Commons, which I hadn’t heard about until now.

‘It’s tough sleeping at night’: ranchers seek to protect herds as wolves move in

I asked Sumner how seeing the wolf made him feel, and it took him some time to elaborate. Earlier in the day, he had lamented how some wolf advocates glorified the species. But when describing his emotions when he saw the wolf three years ago, reverence crept into his tone.

I had no idea how much of an impact wolves had on politics, policy, feelings, and everything else until moving to Eastern Washington. This article on wolves moving into California for the first time since the 1920s was great.

My other appreciation for this article is that it was done in partnership with Pacific Standard, an independent news magazine, which in turn had support from the Society of Environmental Journalists.

I made it years with NPM and just learned that npm ci performs a clean install of a project’s NPM dependencies from the package-lock.json file rather than package.json. This helped me through a confusing situation where npm install was updating the repo’s package-lock.json file for reasons.