# Gary Bernhardt

> 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)](https://chunkybacon.dev/talks/wat.md).

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")](https://chunkybacon.dev/people/tenderlove.md) is the community's proof that serious engineering and silliness live comfortably together, Gary is a close cousin.

*Related:* ["Wat" (Gary Bernhardt, 2012)](https://chunkybacon.dev/talks/wat.md) · [Aaron Patterson ("tenderlove")](https://chunkybacon.dev/people/tenderlove.md)

## 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

---

Source: https://chunkybacon.dev/people/gary-bernhardt/
License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
