ALTERNATE UNIVERSE DEV

Working Code

019: Makefiles

Adam Tuttle first came into contact with makefiles (pronounced "make files") back in high school when compiling code. But, at the time, he didn't really understand what they were or how they worked - he was just a consumer. And, after high school, years went by in which he never gave makefiles a second thought. That is, until, one fateful conversation with Mark Mandel.

Mark explained that he used makefiles to create aliases for complex Docker commands. This piqued Adam's curiosity; and soon, Adam went down the rabbit hole! Today, he uses makefiles extensively for complex shell commands that he shares across his entire team: building containers, deploying code, generating Pull Requests - and, he's only begun to scratch the surface!

Today, the crew listens to Adam wax poetically about what makes makefiles so great. And, we get to ask him all sort of questions like: can they be used to create git aliases? Can this be used with npx commands? Is this like npm run scripts? And, why are you still using "boring technology" that was built in the 70s?

This week's sponsored shout-out is Wonder Woman Tech, whose mission it is to highlight, celebrate, educate, and amplify Women, BIPOC, and the Underrepresented in Science, Technology, Engineering, the Arts, Math (STEAM), and Innovation.

And finally, don't forget that we are going to have our first book club episode on May 12th for Clean Code by Robert Martin (aka, "Uncle Bob"). Feel free to read-up and follow along!

Triumphs & Failures

  • Adam's Failure - In what can only be described as unbridled enthusiasm for his team's switch to GitHub Packages, Adam tried to incorporate a few too many changes into what was originally supposed to be the simple swapping of URLs in various package.json files. In the end, the migration wound-up including a bunch of test automation and QA deployments which cost his team an additional day in person-hours. But, he did get it done!
  • Ben's Failure - He feels like his muse has been on vacation for the last few weeks. Usually his brain is awash with a chaotic symphony of ideas; but, lately, it's just been quiet. These things run in cycles for him; so, he's confident that he'll be back to normal in the near future.
  • Carol's Triumph - She just finished her first 2-week rotation on Zendesk duty. Her company rotates all engineers through the Support team twice a year in an effort to build customer empathy and to help educate the engineers on the full landscape of their product-suite. Carol walks away from her rotation with a deep sense of gratitude for her team; and for her customers!
  • Tim's Triumph and Failure - After months of mothering his "skunk works" project from ideation and development through to deployment and release, he's suddenly struck with a case of "coder's empty nest syndrome". Without any fires to put-out or customers to consult with, he's not exactly sure what to do with himself. That said, Tim is thrilled to have finally gotten his first hater! And while this shade is almost certainly being thrown in jest, it definitely made Tim's week - his heart is overflowing!

Notes & Links

  • gh - GitHub's command-line interface (CLI).
  • npx - Run local and remote binaries from the command-line in your Node application context.
  • npm Run Scripts - Run arbitrary scripts from your package.json file.
  • Homebrew - A popular package manager for Mac and Linux.
  • grep - A shell command for searching files and input streams.
  • find - A shell command for searching for a file within a file tree.
  • awk - A shell command for pattern scanning and processing language.
  • sed - A shell command for stream editing and text transformation.
  • xargs - A shell command for building other command-line executions using the input stream.

Follow the show! Our website is workingcode.dev and we're @WorkingCodePod on Twitter and Instagram. Or, leave us a message at (512) 253-2633‬ (that's 512-253-CODE). New episodes drop weekly on Wednesday.

And, if you're feeling the love, support us on Patreon.

Episode source