ALTERNATE UNIVERSE DEV

CodingBlocks

The Pragmatic Programmer – Know Thy Tools

We dig into the details of the basic tools while continuing our journey into The Pragmatic Programmer while Joe programs by coincidence, Michael can’t pronounce numbers, and Allen makes a point.

Hey, are you reading these show notes via your podcast player? When you get back to your desk, you can find this episode’s full show notes at https://www.codingblocks.net/episode110 and be a part of the conversation.

Sponsors

  • Clubhouse – The first project management platform for software development that brings everyone on every team together to build better products. Sign up for two free months of Clubhouse by visiting clubhouse.io/codingblocks.
  • Datadog.com/codingblocks – Sign up today for a free 14 day trial and get a free Datadog t-shirt after creating your first dashboard.

Survey Says …

Anonymous Vote
Sign in with Wordpress
What's your structured text format of choice?
  • XML
  • JSON
  • YAML
  • CSV

News

  • Thank you to everyone that left us a review:
    • iTunes: BreakpointWontBeHit, SymphonicPictures
    • Stitcher: arnon
  • Allen created a Spotify playlist based on the responses to our last contest.
  • Joe will be giving his Intro to the JAMstack talk at the Daytona Devs meetup later this month. (Meetup)

Back to Basics

  • Tools can amplify your talent.
    • can because you need to know how to use them to their full capabilities to the best of your abilities.
  • Expect to add new tools to your toolbox regularly.
    • And be on the lookout for better ways of accomplishing tasks.
  • Like a craftsman, you should mold your tools to work best for you over time.
  • Don’t fall victim to adopting only one power tool, such as an IDE.
    • Be capable and comfortable beyond the limits of your IDE. For example, use Visual Studio? Know how to use msbuild.exe and/or dotnet.exe to accomplish similar build tasks that you can do in Visual Studio.
      • This will be a huge benefit when you want to script those builds for your build server.

The Power of Plain Text

  • The best way to store knowledge is plain text.
  • What is plain text? Printable characters that can be read and understood directly by a person.
    • Consider Input245 = 46ab. While is this human readable, it is not understandable by a person.
    • This doesn’t mean that it can’t be unstructured though.
      • The authors cite XML, SGML, and HTML as valid examples, but today we’d include JSON.
Tip

Keep Knowledge in Plain Text

  • Drawbacks to storing data as plain text:
    • Can take more storage.
    • Can be more CPU intensive to process.
  • Don’t worry that by putting metadata in plain text you’re exposing it to the system’s users.
    • Even if you were, that might not be the worst thing.
    • But, just because binary formats might obscure the data, don’t mistake obscurity for security.
  • Benefits of using plain text:
    • Insurance against obsolescence.
      • Data that is human readable and self-describing will outlive all other forms and the applications that created it.
        • The key here is the self-describing though.
        • Keeping a binary file rather than text file also means you’d have to understand all the intimate details of the format to parse the file, whereas with text, chances of parsing it are much higher.
        • A string like AMZN8882804331 doesn’t really help make those numbers jump out as a phone number.
        • But a string like <phone>888-280-4331</phone> is much easier for the human eye to scan and understand.
        • That’s the difference between human readable and human understandable.
    • Leverage – just about every tool out there can operate on plain text.
      • Most Linux tools are built around shell scripts that are mostly human readable as an example.
  • If you use plain text to drive your tests, adding/updating/modifying tests becomes trivial.
  • The advantages of using plain text as your standard across heterogeneous environments can outweigh all of the drawbacks.
    • Look at how popular JSON is for exactly that.
    • Communicating with a common standard is a must, and for the most part, plain text is the standard.

Shell Games

  • If you do all of your work using UIs, you’re not taking full advantage of the capabilities of your system.
  • The advantage of UIs is that they are WYSIWYG.
    • But the drawback is that what you see is all that you get.
  • Even if the GUI is amazing, there are still some things you just can’t do in them such as creating pipelines by chaining commands together.
  • Pragmatic programmers don’t just write code, write documentation, or automate the build. We do all of it.
    • Any one tool’s scope is usually limited to how it was expected to be used.
      • For example, notepad.exe isn’t expected to be used to write code. You can. But it isn’t expected.
  • Learn the shell.
    • The commands may seem obscure or terse in the beginning.
    • But they are powerful and concise.
    • And knowing them can make you far more efficient.
      • Imagine if you only knew how to use Git via a UI available only on Windows. What happens when you need to work on Linux?
    • Understanding shell commands allows you to create powerful scripts to automate common tasks
Tip

Use the Power of Command Shells

  • If you learn the shell, you’ll be more productive.
    • Using the shell is all about keeping your ten fingers actively executing the commands you’re thinking, rather than one hand clicking on a button.
    • As a side benefit, you’ll feel like some sort of wizard

Resources We Like

Tip of the Week

  • Discover your favorite programming font. (app.programmingfonts.org)
  • Find the CliffsNotes, err, cheat sheet for your favorite editor. (Cheatography)
  • If the Udemy course you want to take isn’t on sale, search for a discount.
  • Never have to remember how to type your favorite emojis again. (˼●̙̂ ̟ ̟̎ ̟ ̘●̂˻) (Emojicons)
  • Breach – A new podcast investigating history’s most notorious data breaches.

Episode source