Tidy Cloud AWS issue #16 - Podcasts, YouTube and Nix

Hello all!

I hope you have had a great week so far!

This issue of the bulletin has a few tips around podcasts and YouTube channels, as well as useful tools for handling ad hoc environment installations

Enjoy!

Podcasts and YouTube channels

I listen regularly to various podcasts, often when I am walking our dog, or perhaps need to go to a client/customer to do some work. Occasionally, that also includes watching or just listening to YouTube videos as well.

Ship It!

For the area of infrastructure-as-code, automation, DevOps and cloud infrastructure, one of my favourite podcasts is Ship It!. The tagline is A podcast about getting your best ideas into the world and seeing what happens. It is an excellent podcast with many interesting discussions and interviews. The host Gerhard Lazu does a great job of covering many areas around shipping software solutions, being productive and, above all, the people behind it. As he says a the start of every episode - the focus is on the people, everything else is an implementation detail. The podcast has published 40 episodes so far. I have listened to most of them, and I highly recommend checking it out.

Screaming in the Cloud

The Screaming in the Cloud podcast covers topics around cloud platforms, mostly, primarily interviews and discussions with people that do interesting things mostly in the cloud, but not always.

The host Corey Quinn is an engaging and fun person, at the same time being respectful and nice. It makes listening to the podcasts enjoyable. I recommend this podcast for general cloud topics.

AWS Morning Brief

The podcast AWS Morning Brief is another podcast with Corey Quinn. This podcast focuses on news around Amazon Web Services (AWS) and has a fun spin on different news and updates from AWS. Each episode is typically 5-10 minutes long.

Continuous Delivery

The Continuous Delivery YouTube channel with David Farley is a great source of information around software delivery, testing, development, etc. David Farley is one people that coined the term delivery pipeline and has weekly releases, many times opinionated, about topics in the space of software engineering. The videos are simple and to the point, usually around 15-20 minutes long. It is well worth it to check it out; I think.

Ad-hoc environments

Have you been in the situation where you want to try out something briefly, or just occasionally need to run a tool with various runtime dependencies, for example specific versions of Python, or Node.js and similar things?

If you do not use these environments, regularly, it may be a bit of a hassle to set up different runtime environments, or even tools to manage specific environments in Python, Node.js, Ruby. They all have their own tools to manage setting up versions.

An episode of the Ship It! podcast introduced me to Nix. Nix is actually several tools and configuration language, which, perhaps somewhat confusingly, are referred to as Nix. The general idea is a universal way to describe and manage reproducible deployments and builds.

The website https://nixos.org has a lot of information on various use cases and how to get started. My tip here is focusing on a use case which they call ad hoc developer environments.

If you install Nix, one tool you will get is nix-shell. As the name implies, running it will start a new shell. What you can do with nix-shell is to get it to install various packages and dependencies which are only available as long as that shell is running.

I usually work on MacBook laptops, and I actually have two different ones I work on. I do not have the same software installed on both of them. Also, macOS still has Python version 2 installed by default, but a lot of software may require version 3, since version 2 is no longer supported.

Nix-shell can help solve these types of problems. Here is a short example where I use nix-shell to install other versions of Python, Node.js and Ruby in the same shell and they are active just in that shell.

❯ python --version && node --version && ruby --version

Python 2.7.12
v16.13.0
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]

❯ nix-shell -p python38 nodejs ruby                   

[nix-shell:~/Documents/Dev/repos]$ python --version && node --version && ruby --version
Python 3.8.12
v16.13.2
ruby 2.7.5p203 (2021-11-24) [x86_64-darwin17]

[nix-shell:~/Documents/Dev/repos]$ exit
exit

❯ python --version && node --version && ruby --version

Python 2.7.12
v16.13.0
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]

❯ 

This is not restricted to just language runtimes, but includes many tools and package installations. You do not need to specify what to install on the command line, but can also use Nix configuration language in configuration files to describe what to install. These descriptions can be very precise, so you get exactly the versions you want for each Nix package you choose to install.

Nix is a quite interesting set of tools, which I intend to explore more. This tip is an initial taste of it, which I find to be quite useful.


You can find the contents of this bulletin and older ones, and more at Tidy Cloud AWS. You will also find other useful articles around AWS automation and infrastructure-as-software.

Until next time,

/Erik