American Equity

I think that every adult US citizen should get an annual share of the US GDP.

[…]

Countries that concentrate wealth in a small number of families do worse over the long term—if we don’t take a radical step toward a fair, inclusive system, we will not be the leading country in the world for much longer.

How to bold a button in Apple News

  1. Update News Preview to latest version.
  2. Reboot computer after News Preview crashes on launch.
  3. Open News Preview again, which crashes on launch again.
  4. Accidentally discover new XCode components that need to be installed. Reboot computer again.
  5. Open News Preview again, which crashes on launch again.
  6. Commit Apple News JSON changes and test on production.

WordPress needs automated browser/integration/end-to-end testing

One thing I love most about WP-CLI is its Behat-based test suite. In fact, if you consider WP-CLI successful at all, I'd attribute said success to the test suite.

Having a great test suite ensures exceptional build quality because:

  • It’s easy to write new tests, which means they actually get written.
  • The tests interface with a command in the same manner as users interface with a command, and they describe how the command is expected to work in human-readable terms.

WordPress should have amazing integration tests too.

Historically, PhantomJS has been the de-facto standard for headless browser testing. PhantomJS is also Yet Another Abandoned Open Source project, and generally a pain to deal with. But we're in luck! Headless Chrome shipped in Chrome 59. It's pretty amazing. For your next side project, try out the Puppeteer library.

Now that we're over the headless browser hurdle, implementing automated browser testing is simply a matter of:

  1. Picking a framework. Behat is one option (see WordHat for an example), and Codeception is another. I like Behat, but Codeception is based on PHPUnit which might be a perk.
  2. Setting up a Docker container to provide a WordPress install in an isolated environment. For ease of use, Chrome headless could be provided in another container.
  3. Writing some tests. Prior to writing tests though, it would be helpful to plan out all major UX flows we want to cover with tests.

In fact, I'd argue that integration tests will be key for managing breakage when Gutenberg lands in WordPress core.

What would be really neat is if the test suite supported importing some base "state", such that it'd be possible to easily run the same test against dozens of scenarios. This would let us perform an experiment where run the test suite against every plugin in the WordPress.org plugin directory.

Titles for blog posts I haven’t written

  • The many different correct ways to write a WordPress plugin
  • How raising kids has taught me to give zero fucks about open source
  • If you work in tech, income equality is the real problem you should hack on
  • What I’ve learned about personal finance in the last year, and how it’s completely changed my perspective
  • All of the code I regret to have written
  • Open source is debt, not an asset

Going for it

Today’s milestone: I’m ready to kill the consulting cash cow and start a product business.

The startup media is full of stories of twenty-somethings grinding out long hours for little to no pay to build their business. When you have a wife and kids dependent on you keeping food on the table, reality is much different. A speculative gamble is exactly that: a gamble.

However, I’ve finally achieved enough confidence to start pursuing my dream more aggressively. The contributing factors include:

  • Late November and December are slow in the consulting world, which makes it the perfect time to explore.
  • Our family monthly expenditure is relatively stable, so that part of the budget is manageable.
  • Good amount of cash runway for if/when I decide to go all-in on a given product idea.

I feel I’ve hit 70% degree of certainty in knowing what I need to do. The why is the motivating factor. A fulfilled life is one full of actively-sought challenges. Once you’ve de-risked the opportunity sufficiently, it’s just a matter of getting out there to do it.