Gary Bernhardt

he/him

Wat (Destroy All Software)

The person behind "Wat," and behind some of the most careful teaching in the Ruby world.

Gary Bernhardt made “Wat,” the four-minute lightning talk from CodeMash 2012 that pokes fun at the baffling corners of JavaScript and Ruby, with a deadpan “wat” at each absurd result. It is one of the most-shared programming talks ever made, and it doubles as a rite of passage: if you have ever reacted to strange code with a slow “…wat,” this is the source. The talk itself carries a gentle disclaimer that it “does not represent anyone’s actual opinion,” which is to say it is affectionate comedy, not a real complaint about either language. It has its own card here: "Wat" (Gary Bernhardt, 2012).

The joke is only half the picture. Gary also created Destroy All Software, a screencast series that is the opposite of a lightning talk: short episodes, released every couple of weeks, dense with careful thinking about advanced topics like Unix, testing, object-oriented design, Vim, Ruby, and Git. His talk “Boundaries” (from SCNA 2012) argues for using simple values, rather than complex objects, as the seams between the parts of a program, and it popularized the phrase “functional core, imperative shell”: keep the decision-making logic pure and easy to test, and push the messy input and output (the database, the network, the screen) out to a thin surrounding layer.

That pairing is why he is well-loved in the Ruby world: the same person can make a room laugh in four minutes and then spend a series teaching, patiently and rigorously, how to structure code so it stays testable. If Aaron Patterson ("tenderlove") is the community’s proof that serious engineering and silliness live comfortably together, Gary is a close cousin.

Related: "Wat" (Gary Bernhardt, 2012) · Aaron Patterson ("tenderlove")

Sources

Sources

  • Wat, Gary Bernhardt (CodeMash 2012 lightning talk on JavaScript and Ruby oddities): https://www.destroyallsoftware.com/talks/wat
  • Boundaries, Gary Bernhardt (SCNA 2012, “functional core, imperative shell”): https://www.destroyallsoftware.com/talks/boundaries
  • Destroy All Software screencasts (topics: Unix, testing, OO design, Vim, Ruby, Git): https://www.destroyallsoftware.com/screencasts

See a mistake? Edit this page on GitHub