How to Train Your Scrappy Programmer (plus free guide on data modelling) (self-published) (interactive guide)

If you don’t make it past the first sentence of this post, here’s what you need to know: I’ve published a free Livebook guide about data modeling in Elixir.

For the completionists, that guide is actually one part of a series of five interactive guides about honing your scrappy programming skills in Elixir using Advent of Code problems for practice. I’ve pulled together five of my favorite problems from 2023 and distilled them down to the essential programming lessons that they have helped me hone. The full series includes discussions about code driven exploration, taming inputs, my undying love for sets, middle school math (but fun), and five of my closest algorithms.

Those who are interested can grab the full series, How to Train Your Scrappy Programmer, with an Elixir Forum discount based on alliteration. You’re welcome, nerds.

Almost every challenge that a programmer faces is in some way unique. You may have done similar things before, but each application seems to require a new twist. How can we prepare ourselves for constantly facing unknowns?

Effective programmers train to use whatever is at hand and push forward with determination in spite of obstacles. In short, they’ve gotta stay scrappy.

This bundle is a collection of five interactive guides, each exploring a different problem from the popular internet challenge site Advent of Code. In these problem solving guides, we will dive into:

  • How to use Livebook, the interactive code exploration framework
  • Gain insights with charts, animations, data tables, and more
  • Uncover four different parsing strategies
  • Leverage higher level data structures including sets and graphs
  • Employ various optimization techniques, such as working backwards, pre-calculation, and even a little math (binary and middle school)
  • Deploy multiple algorithms: binary search, point in polygon, flood fill, and more

By the end of these lessons you will have a full array of tools to confidently face all the unknowns ahead. You might even need to upgrade the old tool belt to a tool box.

If you don’t want five shiny new Livebooks, you can choose to pick up the individual chapters that interest you:

Thanks in advance for the support and don’t hesitate to ask me any questions!

26 Likes

Congrats @JEG2 - this one looks fun (and thanks for another great resource!) :023:

2 Likes

Thanks so much for the kind words.

1 Like

I just wanted to post a quick reminder that I wrote up detailed solutions to five days from 2023 — ten problems — highlighting parsing, data modeling, analysis, and optimization techniques that you can use in your own attempts.

Here’s a link that includes a HALF OFF coupon for the full set visible once it’s added to your cart: How to Train Your Scrappy Programmer – Voyages in Code

4 Likes

I am so ready! Although this year I don’t intend to do Elixir - first time since 2017. Will be lurking here to other people’s code though.

1 Like

Oh and thank you so much for the coupon. I downloaded the free lesson few days back and I must say it’s awesome. Looking forward to reading through the rest.

2 Likes

Thanks for the kind words. I would love to hear specifics about what you enjoyed. It helps me make more useful stuff down the line.

1 Like

You have a guide on algorithms. I need to check it out.

P.S. Ah, I see that those courses are put together in one.

1 Like

They are also available separately. Here’s a link to just the algorithms guide: Borrowing a Cup of Algorithms – Voyages in Code

I was invited on BeamRadio to talk about my How To Train Your Scrappy Programmer Livebook series and educating developers in general. It was a fascinating discussion. Here’s the episode:

5 Likes

Heard you on Beam Radio last night. I use Livebooks as a playground for experimenting with ideas, but it sounds like you’ve honed that to a new level. The Scrappy Programmer series sounds like the way I want to use Livebooks.

Just purchased the series and look forward to learning more techniques.

Take care.

1 Like

What might that next level be? :thinking:

I enjoyed the conversation too. Some of the tips I got out of this discussion are:

  • the code in each cell should be very small (think in terms of what you’d execute as one expression in IEx)
  • rethink how you use modules in Livebook: anonymous functions assigned to variables work just fine (this basically another take on keeping your codecells small)
  • mix prose and code liberally
  • Livebook allows “dual learning” where you get explained a concept in one way (prose) and then yet another way (code), which facilitates learning a lot
  • the process dictionary is not(?) forwarded from cell to cell, which might impact random number generation (in favor of reproducibility)
  • Livebook takes away a lot of the expert knowledge needed to get started with a live environment (in contrast with: step 1, install a compiler, etc.)

I especially liked the first part where James explains a model of problem solving that explicitly calls out three stages: (1) exploration, (2) modelling and (3) delivery. Where there sometimes is too much emphasis on the delivery part, and not enough on the first two parts that don’t involve coding. I totally share the thrill of throwing away code, or not using code after all even though you’ve just spend a day writing it :smiley: Go listen to the episode to get more details and inspiration, it’s explained very well :slight_smile:

And thank you @JEG2 for the reference to the book you mentioned: Stuck? Diagrams Help about that three-step process.

2 Likes

On minor correction here: It probably wasn’t very clear, but I was discussing a historical change to Livebook. Today, it does forward the process dictionary and it special cases random number seeds so everything will likely just work as you expect.

2 Likes