Published Sep 3, 2019

Episode 148: Software Archaeology with Dave Thomas

Dive into the realm of Software Archaeology with expert Dave Thomas as he unravels the mysteries of code exploration, dependency management, and the art of reading source code, offering invaluable techniques for navigating and understanding uncharted codebases.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Dependencies

    Managing software dependencies can be a daunting task, especially when dealing with older code. explains that dependencies often require detective work to identify and resolve, as older projects may rely on outdated libraries without clear documentation 1. This process can be frustrating, as developers might find themselves in "dependency hell," where each library needed has its own set of dependencies, leading to a cycle of downloads and installations.

    You'll find yourself in dependency hell for the first day or two as you try and get this thing just to compile and then finally to load.

    ---

    Despite these challenges, understanding the dependencies can provide valuable insights into the software's functionality and purpose 1.

       

    Virtual Machines

    Using virtual machines (VMs) offers a strategic advantage in managing complex software dependencies. suggests setting up a VM to create a sandboxed environment, allowing developers to experiment with different libraries without affecting the main system 2. This approach is particularly useful for C-style libraries that integrate deeply into the system, as it allows for easy resets if something goes wrong.

    I'll use something like VirtualBox and load up an operating system inside my own operating system. And that means that I can download libraries. And then if I get it wrong, I just blow the whole thing away and start again.

    ---

    Additionally, creating scripts to automate the setup process can save time and effort, benefiting both current and future developers working on the project 2.

Related Episodes