Ava’s first day skiing

She did great! She started out skiing between my legs, then we took the lift (her first time), and she finished the day doing some "turns" on her own.

Analysis of distributed host testing failures

Since August, several WordPress hosts have been running the WordPress PHPUnit test suite on their infrastructure. Read this post for more background.

In total, six failures have been observed:

  1. r42421 – REST API: Return the proper status code for failed permission callbacks in WP_REST_Server->dispatch()
  2. r42037 – Customize: Support instantiation of partials with flat/unwrapped params for parity with controls, sections, and panels in [41726]
  3. r41764 – Widgets: Fix jshint error in media widget
  4. r41717 – Multisite: Replace calls to refresh_blog_details() with clean_blog_cache()
    • 1 of 1 hosts reported failures.
    • Travis CI reported a success. Root cause of host failure is unknown.
  5. r41614 – Users: There is not, in fact, 12345 users on every WordPress installation
  6. r41574 – I18N: Merge two similar “Cannot set parent term” error strings

Interesting! But also not very interesting because there's not much to see.

First impressions developing blocks for Gutenberg

Zac Gordon, Andrew Taylor and I are hosting a "first impressions developing blocks for Gutenberg" livestream/hangout/thing this Friday (1/19) at 2 pm Pacific. We've each tried our hand at writing a block — some things went well and others were disasters.

Curious what it's like to build a custom Gutenberg block? Have experiences of your own to share? Register here for the cage match and help us debate the merits of ES5 over ES6 on Friday at 2 pm Pacific. Leave a comment if there are any questions you'd like to submit in advance.

Massive list of links: January 10, 2018

In honor of Nat Torkington’s Four Short Links, I present you: a massive list of links.

  1. Saving the Free Press From Private Equity (Robert Kuttner & Hildy Zenger) — Scathing critique; never did I realize how significant of a role financiers played. Makes me bullish on the opportunity for local media businesses.
  2. When is a Dollar not a Dollar? (Leo Polovets) — Excellent set of evaluation criteria for determining where your service/product fits within your customer's wallet (or whether it does at all).
  3. Romanticizing the Hunter-Gatherer (William Buckner) — Not actually the original affluent society, as we’re led to think.
  4. These 6 Cities Are Smarter Than Portland About Housing (Willamette Week) — Useful set of reference points.
  5. CSforALL Consortium — Computer literacy/CS education initiative. "8% of STEM graduates are in CS, yet 71% of all new STEM jobs are in computing."
  6. How to tell if a CEO is worth working for (Claire Lew) — Great questions to ask (e.g. “What would an employee who’s left the company say it’s like to work for you?”).
  7. Mr. Money Mustache, UBER Driver (Mr. Money Mustache) — No surprise: a highly competitive market means race to the bottom for compensation.
  8. How Shopify Grew From a Snowboard Shop to a $10B Commerce Ecosystem (Hiten Shah) — Answer: clear alignment between business model and customer success.
  9. The World’s Foremost Expert Explains How To Value Stock (Bloomberg Odd Lots) — Such a clear, understandable explanation.
  10. Recession-Resistant Investing & the Benefits of Buying Shopping Centers with David Puchi (BiggerPockets) — Growth trend: buying out individual owners at the end of their careers, and then doing the rehab work they didn't want to do.

Brief WordPress.org plugin directory data analysis

While working on wordpress/gutenberg#4072 today, I was inspired to do some data analysis on the WordPress.org plugin directory.

To prepare, I populated a plugins table with data from the WordPress.org REST API via this plugin-stats.php script. Download the SQL file to avoid needing to re-fetch the API data.

Based on the initial API request, there are 49,749 total WordPress.org plugins.

Of the entire data set, only 18,002 plugins have 200 or greater active installs. The remaining 31,747 plugins represent an inconsequential number of active installs compared to the total.

The 18,002 plugins represent 182,296,500 total active installs. A WordPress install can have multiple active plugins, so this total isn't unique WordPress installs. Also, we can ignore the remaining ~32k plugins because they would only represent 3,174,700 additional active installs if each plugin had 100 active installs.

Of the total active installs, 168,623,000 (92.5%) are represented by 3,440 plugins with >=5000 active installs. For that matter, 159,720,000 (87.6%) are represented by 2101 plugins with >=10000 active installs.

It'd be interesting to know what percentage of WordPress installs have a plugin not tracked in the WordPress.org plugin directory (e.g. premium or custom).

Forward email newsletters into Feedbin

Email newsletters are some of the best free content produced by news organizations these days — concise, timely, and devoid of their website's megabytes of advertising JavaScript. However, it's distracting to receive them at random points during the day. I much prefer to manage my news consumption at my own pace.

Fortunately, Feedbin is two steps ahead of me! You too can use Feedbin's "Subscribe to Email Newsletters" feature to move your email newsletter subscriptions into RSS. Simply:

  1. Copy your secret newsletter email address from feedbin.com/settings.
  2. Add your secret newsletter email address as a forwarding email in Gmail.
  3. Configure a Gmail filter for each newsletter to auto-forward to Feedbin (and mark as read / archive).

Pretty awesome.

Why we work

Business owners do not normally work for money either. They work for the enjoyment of their competitive skill, in the context of a life where competing skillfully makes sense. The money they earn supports this way of life. The same is true of their businesses. One might think that they view their businesses as nothing more than machines to produce profits, since they do closely monitor their accounts to keep tabs on those profits.

But this way of thinking replaces the point of the machine’s activity with a diagnostic test of how well it is performing. Normally, one senses whether one is performing skillfully. A basketball player does not need to count baskets to know whether the team as a whole is in flow. Saying that the point of business is to produce profit is like saying that the whole point of playing basketball is to make as many baskets as possible. One could make many more baskets by having no opponent.

The game and styles of playing the game are what matter because they produce identities people care about. Likewise, a business develops an identity by providing a product or a service to people. To do that it needs capital, and it needs to make a profit, but no more than it needs to have competent employees or customers or any other thing that enables production to take place. None of this is the goal of the activity.

Charles Spinosa, Fernando Flores & Hubert Dreyfus – Disclosing New Worlds: Entrepreneurship, Democratic Action, and the Cultivation of Solidarity (via Kottke)

Humanist software development

Three principles to live by:

Humans come first. Software exists to serve humans, not the other way around. Design software for your end user, because they are holy and nothing else is sacred.

Pragmatism over purism. Consider for whom you’re optimizing, not for what ideal. Software ideals are false gods when they don’t serve the humans they’re meant to reflect. Choose the most pragmatic implementation over the most correct one.

Simplicity over complexity. The elegance of complex systems is a dangerous mirage. Complex systems are more difficult to maintain over time, more difficult for new people to understand, and more likely to succumb to entropy. Only choose complexity when it yields significant, durable advantages.