Recently I started work on redoing all my dotfiles in preparation for setting up my new desktop computer. I wanted everything to be slick, streamlined, automated, and simple. Things are so far looking much better than they were before. I have documentation on how to get things setup and I have Ansible playbooks for setting things up in a repeatable way. One of the frustrating things though is that setting up Ansible requires having some kind of Python installation on the host.
Containerized applications are becoming more and more common in production applications of all sorts. They are significantly easier to deploy, provide better repeatability, and can offer some security benefits over other deployment options. One thing I’ve noticed from working with other developers, is that many people don’t know how to create good container images. The biggest problem here is that you have to have a basic understanding of what happens when creating images and understand what the goals are with containerizing.
From time to time I like to go back to the fundamentals and play around with basic concepts. This serves to keep myself sharp as well as provide an opportunity to explore some concepts in greater detail than what I was able to do previously. I was doing that recently with an implementation of an immutable list in JavaScript (similar to what you would find in immutablejs). Things were going well enough with my super basic implementation when I started thinking about how you would hide implementation details and how you could implement an iterator for my list data structure.
The Continuation… In a previous episode we looked at a way to solve the problem of running multiple services that might need to talk to each other in a sane way. The solution was to run each service in a Docker container and to put any container from the service that you want exposed on a common network that is accessible via a proxy service. We also came up with a list of three possible proxy services to use and tested them out (as well as we could at the time anyway) and decided on two options to continue experimenting with.
The Problem Have you ever been working on a web application and had to switch to another application. Possibly you need to fix a bug in another application or maybe the first application needs to talk to the second application, it doesn’t really matter but you know that you need to run a second application now. You start to launch the application and you get a nice error message saying that the port is already taken because your organization has standardized on all applications launching on port 8080 and the first application is still running on that port.