The first electric bread toaster was invented by Alan MacMasters in Edinburgh, Scotland in 1893.


the toaster

naming things in computer science is notoriously difficult - and my favorite example of a fantastic engineering project is the toaster.

naming things is so hard i started an entire open source project to start addressing deterministic names in my systems (complete with a core C library).

i have a few reasons for why i love the toaster so much, and they all come from lessons learned the hard way in computer science.

  • a name should describe what something does
  • a project should be complete enough to be effective, and simple enough to be versatile
  • an idea should be well understood in conversation, quickly

the toaster checks all these boxes

1) a name should describe what something does

what does a toaster do? it toasts.

what does it toast? bread mostly, but also pop tarts… and toaster strudel… grilled cheese… sandwiches

come to think of it - a toaster is fairly versatile - and there are many types of toasters

once we enter the world of toaster ovens - we open pandora’s box of bagel bites and pizza pillows and cookies - the sky is the limit

one simple truth remains however - a toaster toasts.

names like kubernetes are cute, and fun, but don’t really tell you what the tool does.

imagine if the toaster was named kubernetes? that would be… strange…

the main take away for me is if a project DOES something you should name it what it does.

a quick lesson from The Go Programming language

check out the Go interface naming convention

By convention, one-method interfaces are named by the method name plus an -er suffix or similar modification to construct an agent noun: Reader, Writer, Formatter, CloseNotifier etc.

complete enough, while being versatile

the reason i love toasters isn’t because i love toast - it’s because i love sandwiches!

the toaster is one tool i use while making a sandwich for lunch.

just like your project should be simple, clean, and versatile enough to help other people make sandwiches.

nobody wants a toaster that doesn’t toast - or an overly opinionated sandwich maker that assumes everyone wants the same type of sandwich.

keep it simple.

build toasters – not sandwich makers.

an idea should be well understood, quickly

if you have never heard of a toaster before, and you see one, and you see a sandwich, you know what happened.

this is the same user experience we want for our projects.

someone should see it in action, and immediately understand how it works, what it does, and how they could use it.

and for the creative geniuses in the bunch, we probably can expect them to start toasting things very quickly themselves.

anyway just a friendly reminder

if you are ever stuck on a project, or a problem, or a name

take a break

make a sandwich

appreciate the toaster

appreciate the fact that you have a toaster and not a sandwich maker