34 - DNS design iterations
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. Show notes: https://www.randomlytyped.com/34
January 10, 2021
33 - Two Generals' Problem
Lance and JS talk about the Two Generals' Problem and try to understand its real impacts on networked systems. Show notes: https://www.randomlytyped.com/33
December 7, 2020
32 - Lossless compression algorithms
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. Show notes: https://www.randomlytyped.com/32
November 23, 2020
31 - Signalling System Number 7 (SS7) and phone networks
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. Show notes: https://www.randomlytyped.com/31
November 2, 2020
30 - How to Bring Down the Internet with Regex
JS and Lance chat about a couple of interesting and very public incidents of a regular expression unexpectedly causing major outages at well-known 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.
October 19, 2020
29 - Great Cannon of China
Lance and JS discuss censoring attacks from China targeting Github. Show notes: https://www.randomlytyped.com/29
October 7, 2020
28 - Software Versioning Schemes
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?
September 12, 2020
27 - Dial-up Modems
Max and JS talk about dial-up modems and try to understand how they work while sharing their nostalgia. Show notes: https://www.randomlytyped.com/27
March 21, 2020
26 - Variance in Type Systems
Type systems can be intimidating. Listen in as JS and Lance struggle to understand type variance! Contravariance, covariance, invariance, bivariance... What do they mean?! Show notes: https://www.randomlytyped.com/26.html
February 29, 2020
25 - CQRS: Command-Query Responsibility Segregation
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. Show notes: https://www.randomlytyped.com/25.html
February 15, 2020
24 - Protocols Over The Air, Used And Abused
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.
February 1, 2020
23 - Immutable Data Structures
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.
January 18, 2020
22 - Digital Rights Management (DRM)
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.
January 4, 2020
21 - Voting Systems & Arrow's Theorem
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.
December 21, 2019
20 - Voting Systems & The Condorcet Paradox
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.
December 7, 2019
19 - Gödel's incompleteness theorems
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.
November 23, 2019
18 - The Halting Problem
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.
November 9, 2019
17 - Applied Cryptography and Security
JS and Lance discuss the real-world applications and implications of cryptography with topics like key sharing, password keeping and end-to-end encryption.
October 26, 2019
16 - Asymmetric cryptosystems and digital signing
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.
October 12, 2019
15 - History of Symmetric Cryptosystems
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.
September 28, 2019
14 - The Slow Web
JS and special guest Max discuss the slow web phenomenon and discuss what makes some technological experiences more meaningful than others.
September 14, 2019
13 - P vs. NP, why not both?
We discover why the unsolved P == NP millennium problem is so difficult, and how the ramifications affect our every-day programming.
September 1, 2019
12 - Bloom filters
We talk about Bloom filters, a probabilistic data structure for set membership queries, how they work, and what all the fuss is about.
August 18, 2019
11 - Libra
We explore Facebook's new cryptocurrency and discuss it's potential ramifications on our society and global economy.
August 3, 2019
10 - Prefix Scans
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.
July 24, 2019
9 - Accessibility
We discuss the origins of accessibility and how things changed as society moved into the digital age.
July 6, 2019
8 - Distributed Systems Introduction
We go over the fundamentals of distributed systems and get to the bottom of buzzwords like scalability, availability and transparency.
June 22, 2019
7: Technical Debt
We explore the topic of software quality and discover what technical debt actually means.
June 8, 2019
6: Side Projects
We discuss the projects we have been working on in our spare time and what we've learned in the process.
May 18, 2019
5: Transactions, ACID or Just Basic?
In this episode, we discuss the different kinds of database transactions, how they are implemented, and what guarantees they provide.
May 4, 2019
4: Software Licenses
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.
April 20, 2019
3: Divide and Conquer
In this episode, we discuss divide and conquer algorithms like merge sort, and see why it's more challenging to analyze their complexity.
April 6, 2019
2: To the Hype Train!
Are cryptocurrencies just hype? Probably, but let's still talk about how they were created, their merits and their problems.
March 24, 2019
1: The Simple Complexity Episode
An overview of computational complexity theory.
March 14, 2019