Degeneracy, Code and Innovation May 09 2019

About six years ago, I stumbled across some papers in the field of evolutionary biology that eventually led me to question many of my most basic assumptions about software development. What started as a bit of a crazy thought, eventually began to offer explanations for everything from the Lean Startup movement and T-shaped skills to the popularity of microservices and why everyone uses Javascript even though Haskell is the objectively superior language <trollface>.

Read more

Why Software Development Requires Servant Leaders May 05 2018

The idea of “servant” leaders has been on the rise in the agile community of late. Robert K. Greenleaf coined the term in a 1970 essay, but the idea is timeless. Virtually every religion describes the concept. This one from the Tao Te Ching is particularly poignant: The highest type of ruler is one of whose existence the people are barely aware. Next comes one whom they love and praise.

Read more

Monadic Error Handling Mar 12 2018

Nemanja Mijailovic has a nice summary of a monadic error handling pattern in #golang.

If you find if err != nil { return err } littering your codebase, look here for ideas to improve your architecture.

What's My Software Worth? Jan 27 2016

A prospective client recently asked this in regards to a proposed build for their startup. I know an accountant who would say, “it depends,” although he says that in response to just about any question. Unfortunately, there’s not a formula for post-construction software value as you might have with a house. With a house, you can generally assume that $X in lumber and $Y and labor multiplied by some kind of “neighborhood value multiplier” results in a rough estimate of a home’s value.

Read more

Update Row Values in MySQL Based on Order Clause

Say you have a database table which contains an integer sort order column, but it’s incorrect. Perhaps you forgot to sort before creating the records. Let’s say you have another column which, when sorted, would produce the correct order. You can use that column to fix the sort order column in pure SQL. Here’s an example using the MODX CMS, which has a menuindex column (the sorting column), and a pagetitle column.

Read more

Which Modules Implement a Drupal Hook?

Working on a deep-dive Drupal rescue project, we encountered an enormous mess of modules, and needed to know which of those modules were related to Ubercart checkout features. drush eval 'print_r(module_implements("uc_payment_gateway_charge"));' On a related note, the full list of available Ubercart hooks is here.

Read more

What am I About to Merge (with Git)

This is one of my own personal Git FAQs. Here’s the scenario: You’ve created a topic branch of new code, and done all the work required to complete the feature. But before you can merge it back into the main tree, you get assigned to some new work, and the branch sits dormant for several days. Now the time has come to merge that feature back in, but it’s been so long, you forgot exactly what the code included.

Read more