
JS and Lance talk about how DNS works and how different improvements have been designed and implemented to overcome a variety of flaws that have arisen over time.

Lance and JS talk about the Two Generals' Problem and try to understand its real impacts on networked systems.

Lance and JS try to make things smaller! In this episode, we explore how to compress information efficiently in a variety of different ways with different tradeoffs.

JS and Lance discover the inner working of the SS7 protocol used in networks by phone carriers, how it’s being abused, and why it’s something we should probably be more concerned about.

JS and Lance chat about a couple of interesting and very public incidents of a regular expression unexpectedly causing major outages at wellknown software companies. We walk through exactly how these incidents happened and discover how easy it is to write a regex with no time complexity guarantees.

Lance and JS discuss censoring attacks from China targeting Github.

We’re back! JS and Lance are ready to talk about software versioning schemes. Who would have that boiling down complex software systems into a series of numbers would be so hard?

Max and JS talk about dialup modems and try to understand how they work while sharing their nostalgia.

Type systems can be intimidating. Listen in as JS and Lance struggle to understand type variance! Contravariance, covariance, invariance, bivariance... What do they mean?!

CRUD isn’t the only way! Lance and JS talk about how separating reads from writes in your domain models can open up a world of possibilities.

On this episode, Lance and JS discuss the evolution of wireless car unlocking technologies. We talk about some different type of attacks and how they were countered.

Most data structure are only useful if you can modify them. Today, JS and Lance talk about immutable data structure which don't allow for direct modification but instead encourage extension. We consider the situations in which these could be useful and how to build one from scratch.

JS and Lance discuss the technical and legal implications of digital rights management systems of the past, leading up to the complex and secretive implementations of today

JS and Lance continue their conversation about voting systems and ultimately discover how the outcome of an election could possibly be dictated by a single person.

Lance and JS examine the social sciences to see what it means to have a fair voting system, and how every system we’ve come up with so far has some fatal flaws.

Some of the toughest problems in mathematics went unsolved for long periods of time, only for them to be proven hundreds of years later. Can anything and everything eventually be proven with the right level of ingenuity? Gödel's shocking proofs tells us that there are some statements which just aren't provable, even if they appear to be true.

We travel back in time to the 1930s to discuss the mathematical landscape which lead to The Halting problem and how a machine constructed as a mental model for a proof defined modern computers.

JS and Lance discuss the realworld applications and implications of cryptography with topics like key sharing, password keeping and endtoend encryption.

JS and Lance continue their cryptography explorations by working through an example of RSA, an asymmetric cryptosystem, while discovering its surprising relationship to the concept of digital signatures.

JS and Lance are reunited! We go back in time to discover how the earliest cryptosystems worked and cover some ground on the basics of cryptography.

JS and special guest Max discuss the slow web phenomenon and discuss what makes some technological experiences more meaningful than others.

We discover why the unsolved P == NP millennium problem is so difficult, and how the ramifications affect our everyday programming.

We talk about Bloom filters, a probabilistic data structure for set membership queries, how they work, and what all the fuss is about.

We explore Facebook's new cryptocurrency and discuss it's potential ramifications on our society and global economy.

We look at the prefix scan algorithm for the sum operation, and discover how it can be parallelized in a relatively simple but unintuitive way.

We discuss the origins of accessibility and how things changed as society moved into the digital age.

We go over the fundamentals of distributed systems and get to the bottom of buzzwords like scalability, availability and transparency.

We explore the topic of software quality and discover what technical debt actually means.

We discuss the projects we have been working on in our spare time and what we've learned in the process.

In this episode, we discuss the different kinds of database transactions, how they are implemented, and what guarantees they provide.

Can I take your code and sell it? We discuss the variety of available licenses and whether they make sense in our current technological landscape.

In this episode, we discuss divide and conquer algorithms like merge sort, and see why it's more challenging to analyze their complexity.

Are cryptocurrencies just hype? Probably, but let's still talk about how they were created, their merits and their problems.

An overview of computational complexity theory.