Containerization vs. Virtualization

I have come to the realization that containerization offers numerous benefits compared to traditional virtualization and will likely continue shaping future trends of web and software deployment.


Although containerization has been around in some form for over a decade, the release of Docker in 2013 caused rapid growth and really revolutionized the way developers could quickly build and release applications within a container.

One of the largest benefits of using a containerization approach is that you no longer need an entire operating system for your independent app to work properly. The container which you are deploying to is significantly smaller than an entire VM and also has the benefit of not being tied to a specific OS.

Another benefit to using containers is that they can be sandboxed and the app running would not have access to any of the other files or information. From a security standpoint, containers can provide this secure environment very efficiently although it might be possible for someone to exploit the intended sandbox and gain unintended access.

I think utilizing containers also lets you focus more on the actual software instead of worrying about installing and tweaking all the right programs on the OS. In the past I have used some virtual machines such as VirtualBox to run and quickly test out other OS’s such as Mac OS and Ubuntu. While these VM’s were overall quite capable, I definitely did run into some performance issues and can imagine how these limitations would be intensified in a live production environment where high performance is needed.

I think the real challenge also comes from migrating an existing virtualized program with thousands of dependencies to a container image. In this case where you need specific features of the OS, I could understand why you might choose not to use a containerization approach. There is also a good chance that long-term serverless computing will end up becoming the dominant form of deployment thanks to technologies such as AWS Lambda.

Related Articles

Life before docker and beyond – a brief history of container security

The future is containerized.

Serverless (FaaS) vs. Containers

Advertisement

Rollback, Melee, and the future of online multiplayer.

Some games just refuse to die, nearly 18 years later and three sequels later Super Smash Bros Melee continues to be played and loved by people all around the world. The dedicated Melee community has not only preserved their game but have breathed new life into it by adding a state of the art online multiplayer matchmaking system, something which even the newest entries in the series Super Smash Bros Ultimate lacks. The new online multiplayer utilizes a rollback netcode which significantly reduces lag and results in a nearly local multiplayer experience even with players in different regions. The project was created by Slippi, which had been used in Melee to record replays and provide useful statistics about players in real time. The rollback netcode that Melee uses was even more surprisingly developed in less than six months by Fizzi. The brilliance of rollback is that it avoids the common problems associated with most fighting games that use delayed base netcode which causes stuttering and freezing unless both players have a near perfect connection. With rollback netcode, it never waits for input of the opponent and basically predicts what will happen and the adjusts the frames once they are received. With careful optimization a player will not even notice this change and will only see the successful corrections from both players. The reason predications work so well is that we can assume most of the time when a player has already pressed an input, we just have to figure out how often they change their inputs which turns out can be quite easy to predict. Rollback has essentially solved the plague many online fighting games face and drastically improves the quality of multiplayer in games like Melee. The future of Melee has never been brighter and hopefully this multiplayer will also cause newer players to experience the beauty of Super Smash Bros Melee for the Nintendo Gamecube.

Evo 2018 champion William “Leffen” Hjelte demonstrating rollback in Super Smash Bros Melee.

Thoughts on different programming languages

Every programming language has its own set of advantages and disadvantages that you have to consider when you start working on a project. Python is a very popular programming language because the syntax is easy to understand and it can be a great language to quickly start working on an idea and instantly see results. I think Python also works extremely well for smaller programs and apps that use some form of machine learning because of all the unique libraries like TensorFlow and Pytorch. Java on the other hand is better suited for more large-scale projects that need to be capable of scaling to thousands of lines of code without becoming an unreadable mess. One considerable advantage of Java is its slogan “write once, run anywhere”, meaning that you can develop a Java program on your own computer and not worry about it running on a different computer. Using C++, you might have to compile separate versions of your program to make sure it’s compatible and works on Windows, Mac and Linux which could be time-consuming. A significant disadvantage of Java is that sometimes the language can be overly verbose compared to other languages like Python which feels much closer to writing out ideas as pseudocode.

Overall C++ is considerably faster and delivers better performance compared to Java if you require a program to make use of lower level hardware and memory. For instance, most popular game engines are written in C++ like Unreal Engine and Cry Engine. Developers use C++ for these game engines because they need to squeeze out every last bit of performance for a game to run fast enough to be playable. There are many reasons you might want to integrate multiple languages together like C++ and Java. For example, let’s say you are designing a Java program but aren’t really satisfied with how slow it takes for your program to load and open. You could then use C++ to optimize the parts of code that deal with loading and opening while keeping the user interface Java code. Security wise, I think Java would generally be safer on larger applications where you have multiple teams of people working together on separate parts of code like many large companies do and you also don’t have to worry as much about memory management. Security problems like memory leaks might be more common and harder to find with C++ compared to Java.

Some thoughts on the current state of the Video Game Industry

2020 has been a rather reflective year for me during these past couple of months as the entire world remains in a standstill from the ongoing pandemic. The video game industry in particular has seen changes as well with most developers and employees now working from home. Nevertheless, the start of this year brought massive releases in March such as Doom Eternal, Animal Crossing New Horizons, and of course Half Life Alyx. The Long awaited remake of Final Fantasy VII also launched in April to much excitement.

We are also seeing an explosive growth in online streaming as more people are at home to consume content. Riot also recently released their closed beta of Valorant which has been driving viewers especially with the cleverly implemented drop system reward for watching various streamers playing the game. Other streaming platforms like Mixer from Microsoft have also continued to grow throughout this year. The future release calendar for 2020 remains uncertain to a large degree but with the launch of the next generation consoles from Microsoft and Sony this holiday season we won’t have to speculate much longer.

Till next time.

Introduce Yourself (Example Post)

This is an example post, originally published as part of Blogging University. Enroll in one of our ten programs, and start your blog right.

You’re going to publish a post today. Don’t worry about how your blog looks. Don’t worry if you haven’t given it a name yet, or you’re feeling overwhelmed. Just click the “New Post” button, and tell us why you’re here.

Why do this?

  • Because it gives new readers context. What are you about? Why should they read your blog?
  • Because it will help you focus your own ideas about your blog and what you’d like to do with it.

The post can be short or long, a personal intro to your life or a bloggy mission statement, a manifesto for the future or a simple outline of your the types of things you hope to publish.

To help you get started, here are a few questions:

  • Why are you blogging publicly, rather than keeping a personal journal?
  • What topics do you think you’ll write about?
  • Who would you love to connect with via your blog?
  • If you blog successfully throughout the next year, what would you hope to have accomplished?

You’re not locked into any of this; one of the wonderful things about blogs is how they constantly evolve as we learn, grow, and interact with one another — but it’s good to know where and why you started, and articulating your goals may just give you a few other post ideas.

Can’t think how to get started? Just write the first thing that pops into your head. Anne Lamott, author of a book on writing we love, says that you need to give yourself permission to write a “crappy first draft”. Anne makes a great point — just start writing, and worry about editing it later.

When you’re ready to publish, give your post three to five tags that describe your blog’s focus — writing, photography, fiction, parenting, food, cars, movies, sports, whatever. These tags will help others who care about your topics find you in the Reader. Make sure one of the tags is “zerotohero,” so other new bloggers can find you, too.

Introduce Yourself (Example Post)

This is an example post, originally published as part of Blogging University. Enroll in one of our ten programs, and start your blog right.

You’re going to publish a post today. Don’t worry about how your blog looks. Don’t worry if you haven’t given it a name yet, or you’re feeling overwhelmed. Just click the “New Post” button, and tell us why you’re here.

Why do this?

  • Because it gives new readers context. What are you about? Why should they read your blog?
  • Because it will help you focus your own ideas about your blog and what you’d like to do with it.

The post can be short or long, a personal intro to your life or a bloggy mission statement, a manifesto for the future or a simple outline of your the types of things you hope to publish.

To help you get started, here are a few questions:

  • Why are you blogging publicly, rather than keeping a personal journal?
  • What topics do you think you’ll write about?
  • Who would you love to connect with via your blog?
  • If you blog successfully throughout the next year, what would you hope to have accomplished?

You’re not locked into any of this; one of the wonderful things about blogs is how they constantly evolve as we learn, grow, and interact with one another — but it’s good to know where and why you started, and articulating your goals may just give you a few other post ideas.

Can’t think how to get started? Just write the first thing that pops into your head. Anne Lamott, author of a book on writing we love, says that you need to give yourself permission to write a “crappy first draft”. Anne makes a great point — just start writing, and worry about editing it later.

When you’re ready to publish, give your post three to five tags that describe your blog’s focus — writing, photography, fiction, parenting, food, cars, movies, sports, whatever. These tags will help others who care about your topics find you in the Reader. Make sure one of the tags is “zerotohero,” so other new bloggers can find you, too.

Introduce Yourself (Example Post)

This is an example post, originally published as part of Blogging University. Enroll in one of our ten programs, and start your blog right.

You’re going to publish a post today. Don’t worry about how your blog looks. Don’t worry if you haven’t given it a name yet, or you’re feeling overwhelmed. Just click the “New Post” button, and tell us why you’re here.

Why do this?

  • Because it gives new readers context. What are you about? Why should they read your blog?
  • Because it will help you focus your own ideas about your blog and what you’d like to do with it.

The post can be short or long, a personal intro to your life or a bloggy mission statement, a manifesto for the future or a simple outline of your the types of things you hope to publish.

To help you get started, here are a few questions:

  • Why are you blogging publicly, rather than keeping a personal journal?
  • What topics do you think you’ll write about?
  • Who would you love to connect with via your blog?
  • If you blog successfully throughout the next year, what would you hope to have accomplished?

You’re not locked into any of this; one of the wonderful things about blogs is how they constantly evolve as we learn, grow, and interact with one another — but it’s good to know where and why you started, and articulating your goals may just give you a few other post ideas.

Can’t think how to get started? Just write the first thing that pops into your head. Anne Lamott, author of a book on writing we love, says that you need to give yourself permission to write a “crappy first draft”. Anne makes a great point — just start writing, and worry about editing it later.

When you’re ready to publish, give your post three to five tags that describe your blog’s focus — writing, photography, fiction, parenting, food, cars, movies, sports, whatever. These tags will help others who care about your topics find you in the Reader. Make sure one of the tags is “zerotohero,” so other new bloggers can find you, too.