##### About

Beginner-friendly computer science lessons based on Vaidehi Joshi's base.cs blog series, produced by CodeNewbie.

English, Technology, 1 season, 73 episodes, 1 day, 4 hours, 14 minutes

English, Technology, 1 season, 73 episodes, 1 day, 4 hours, 14 minutes

Beginner-friendly computer science lessons based on Vaidehi Joshi's base.cs blog series, produced by CodeNewbie.

For our final episode, we answer your burning questions including the Base.cs origin story, Saron and Vaidehi's favorite niche data structure, and what are some good resources to check out next. We also take a look back at some of our favorite moments from the show's history, and find a couple of fun themes. Based on Vaidehi Joshi's blog post, "Base.cs".

3/25/2020 • 26 minutes, 17 seconds

We've been talking a lot about the differences between compilers and interpreters, and how both of them work, and the ways that allowed one — the compiler — to lead to the creation of the other — the interpreter. Now we get into the Just In Time compiler, or a JIT, which is fusion or combination of the interpreter and the compiler, which are each two types of translators in their own right. A just-in-time compiler has many of the benefits of both of these two translation techniques, all rolled up into one. Based on Vaidehi Joshi's blog post, "A Most Perfect Union: Just-In-Time Compilers".

3/18/2020 • 21 minutes, 57 seconds

We have been talking a lot about compilers, and in this episode we discuss the differences between compilation versus interpretation. An interpreter is also a translator, just like a compiler, in that it takes a high level language (our source text) and converts it into machine code. However, it does something slightly different: it actually runs and executes the code that it translates immediately (inline) as it translates. Based on Vaidehi Joshi's blog post, "A Deeper Inspection Into Compilation And Interpretation".

3/11/2020 • 19 minutes, 51 seconds

In this episode, we take our parse tree, an illustrated, pictorial version of the grammatical structure of a sentence, and we take a metaphorical broom to sweep away repetitive bits, sliming it down, and leveling it up by creating an abstract syntax tree (AST). Based on Vaidehi Joshi's blog post, "Leveling Up One’s Parsing Game With ASTs".

3/4/2020 • 18 minutes, 36 seconds

In this episode, we get into what a compiler is and does. In short, a compiler is a program that reads our code (or any code, in any programming language), and translates it into another language. You'll want to listen in to find out just how it does this! Based on Vaidehi Joshi's blog post, "Reading Code Right, With Some Help From The Lexer".

2/26/2020 • 22 minutes, 53 seconds

In this episode, we get into parse trees, an illustrated, pictorial version of the grammatical structure of a sentence, which is important to understanding how computers understand coding syntax. Based on Vaidehi Joshi's blog post, "Grammatically Rooting Oneself With Parse Trees".

2/19/2020 • 23 minutes, 14 seconds

We continue our journey with the Traveling Salesman Problem (TSP), where this we imagine a salesperson has to travel to every single city in an area, visiting each city only once. Additionally, they need to end up in the same city where they starts their journey from, and do this in the most efficient manner. However, in this episode, we are going to speed our salesperson up by using a bottom-up approach! Based on Vaidehi Joshi's blog post, "The Trials And Tribulations Of The Traveling Salesman".

2/12/2020 • 21 minutes, 38 seconds

We start our season off with something that often pops up in technical interviews: the Traveling Salesman Problem (TSP). In this problem, a salesperson has to travel to every single city in an area, visiting each city only once. Additionally, they need to end up in the same city where they starts their journey from. Find out how to make our salesperson do this in the most efficient way possible! Based on Vaidehi Joshi's blog post, "The Trials And Tribulations Of The Traveling Salesman".

2/5/2020 • 30 minutes, 4 seconds

In this last episode of the season we continue our discussion of dynamic programming, and show just how efficient it can be by using the Fibonacci sequence! Based on Vaidehi Joshi's blog post, "Less Repetition, More Dynamic Programming".

12/11/2019 • 19 minutes, 4 seconds

In this episode we talk about different paradigms and approaches to algorithmic design: the Divide and Conquer Algorithm, the Greedy Algorithm, and the Dynamic Programming Algorithm, which remembers the subproblems that it has seen and solved before so as not to repeat doing the same thing over again. Based on Vaidehi Joshi's blog post, "Less Repetition, More Dynamic Programming".

12/4/2019 • 21 minutes, 38 seconds

We continue our talk about Dijkstra's algorithm, which can be used to determine the shortest path from one node in a graph to every other node within the same graph data structure, provided that the nodes are reachable from the starting node. Based on Vaidehi Joshi's blog post, "Finding The Shortest Path, With A Little Help From Dijkstra".

11/20/2019 • 29 minutes, 23 seconds

In this episode, we talk about Dijkstra's algorithm, which can be used to determine the shortest path from one node in a graph to every other node within the same graph data structure, provided that the nodes are reachable from the starting node. It's super important, and you'll see why when you learn about the weighted graph! Based on Vaidehi Joshi's blog post, "Finding The Shortest Path, With A Little Help From Dijkstra".

11/13/2019 • 26 minutes, 7 seconds

We end our section of the DFS algorithm with a discussion on DAGs (directed acyclic graphs), because most implementations of depth-first search will check to see if any cycles exist, and a large part of that is based on the DFS algorithm checking to see whether or not a graph is a directed acyclic graph. DAGs are also somewhat infamous in computer science because they’re pretty much everywhere in sofware. For example, a directed acyclic graph is the backbone of applications that handle scheduling for systems of tasks or handling jobs — especially those that need to be processed in a particular order. So let's dig into DAGs! Based on Vaidehi Joshi's blog post, "Spinning Around In Cycles With Directed Acyclic Graphs".

11/6/2019 • 13 minutes, 25 seconds

Throughout our exploration of graphs, we’ve focused mostly on representing graphs, and how to search through them. We also learned about edges, the elements that connect the nodes in a graph. In this episode, we look at the different classifications of edges and how, in the context of a graph, edges can be more than just “directed” or “undirected”. Based on Vaidehi Joshi's blog post, "Spinning Around In Cycles With Directed Acyclic Graphs".

10/29/2019 • 20 minutes, 54 seconds

Last episode, we talked about traversing through a graph with the depth-first search (DFS) algorithm, which helps us determine one (of sometimes many) paths between two nodes in the graph by traversing down one single path until we can't go any further, checking one child node at a time. Now we talk about how you code BFS and what tools might you use. Based on Vaidehi Joshi's blog post, "Deep Dive Through A Graph: DFS Traversal".

10/23/2019 • 24 minutes, 51 seconds

We ended last season by starting our discussion of searching, or traversing, through a graph with breadth-first search (BFS). The breadth-first search algorithm traverses broadly into a structure, by visiting neighboring sibling nodes before visiting children nodes. Now we begin our new season with depth-first search (DFS), which also helps us determine one (of sometimes many) paths between two nodes in the graph, but this time by traversing down one single path in a graph, until we can't go any further, checking one child node at a time. Based on Vaidehi Joshi's blog post, "Deep Dive Through A Graph: DFS Traversal".

10/16/2019 • 25 minutes, 34 seconds

In this episode, we start our discussion of searching, or traversing, through a graph with breadth-first search (BFS). The breadth-first search algorithm traverses broadly into a structure, by visiting neighboring sibling nodes before visiting children nodes. The power of using breadth-first search to traverse through a graph is that it can easily tell us the shortest way to get from one node to another, which you'll experience first hand by brining muffins to your neighbors! Based on Vaidehi Joshi's blog post, "Going Broad In A Graph: BFS Traversal".

9/11/2019 • 23 minutes, 1 second

In this episode, we continue our discussion of representing graphs with adjacency lists -- a hybrid between an edge list and an adjacency matrix, which we learned about last episode! They are also the most popular and commonly-used representation of a graph. Based on Vaidehi Joshi's blog post, "From Theory To Practice: Representing Graphs".

9/4/2019 • 24 minutes, 37 seconds

Graphs come from mathematics, and are nothing more than a way to formally represent a network, which is a collection of objects that are all interconnected (this is all stuff you should already know if you have been religiously listening to this podcast, which you should be). Now we're going from theory to practice and talking about how to represent graphs. Based on Vaidehi Joshi's blog post, "From Theory To Practice: Representing Graphs".

8/28/2019 • 21 minutes, 4 seconds

In last episode, we talked about 2-3 trees, where the nodes of every tree contain data in the form of keys, as well as potential child nodes, and can contain more than one key. This takes us to b-trees, which is a generalized version of the 2-3 tree, and are super efficient for storing data in an indexed database, like MySQL. Based on Vaidehi Joshi's blog post, "Busying Oneself With B-Trees".

8/21/2019 • 16 minutes, 50 seconds

We continue our discussion of tree data structures with 2-3 trees, where the nodes of every tree contain data in the form of keys, as well as potential child nodes. Not only that, but it can contain MORE THAN ONE KEY. They are also the -key- to what we'll be talking about next episode, B-trees, and you won't tree-lieve how cool those are. Based on Vaidehi Joshi's blog post, "Busying Oneself With B-Trees".

8/14/2019 • 20 minutes, 2 seconds

In this episode, we are looking at a different type of self-balancing tree: red-black trees. By following four very important rules while we paint our tree red and black, we can make it not only self-balancing, but also make it run super efficiently in logarithmic time. Based on Vaidehi Joshi's blog post, "Painting Nodes Black With Red-Black Trees".

8/7/2019 • 23 minutes, 26 seconds

Last episode, we learned about AVL trees, a type of self-balancing binary search tree that follows a golden rule: no single leaf in the tree should have a significantly longer path from the root node than any other leaf on the tree. In this episode, we learn about a pattern that we can use to programmatically figure out the minimum number of nodes we’ll need to create any given height-balanced AVL tree, which leads us to the Fibonacci sequence, and relates to the "golden ratio" you might know about from fine art! Trust us, this is really neat stuff.
Based on Vaidehi Joshi's blog post, "Finding Fibonacci In Golden Trees".

7/31/2019 • 18 minutes, 11 seconds

When you're dealing with data structures like trees, the balance of its "leaves" (data/nodes) matters. The moment a tree becomes unbalanced, it loses its efficiency, much like a real life tree bending to the weight of one side, unable to efficiently stand tall and grab the light of the sun. Don't let your garden grow full of lopsided saplings, and make sure to plant some AVL trees--your efficient runtime hangs in the balance. Based on Vaidehi Joshi's blog post, "The Little AVL Tree That Could".

7/24/2019 • 23 minutes, 23 seconds

In this episode, we continue our talk on Radix Trees and introduce the Practical Algorithm To Retrieve Information Coded In Alphanumeric trees, also known as PATRICIA trees. Yeah, I think we'll just stick with calling them PATRICIA trees. Based on Vaidehi Joshi's blog post, "Compressing Radix Trees Without (Too Many) Tears".

6/19/2019 • 27 minutes, 10 seconds

In this episode, join us as we adventure into the safari that is radix trees, where parent nodes eat their offspring nodes as they chomp them down and compress. Don't worry, with all of this new added space in the trie(b), they'll more efficiently keep their children's memory alive. Based on Vaidehi Joshi's blog post, "Compressing Radix Trees Without (Too Many) Tears".

6/12/2019 • 22 minutes, 37 seconds

In this episode we continue our talk on pies and tries, and how this data structure is used to power such things as auto-complete! Based on Vaidehi Joshi's blog post, "Trying to Understand Tries".

6/5/2019 • 22 minutes, 55 seconds

In this episode we go through some trie-als and tribulations to retrieve and build words using tries! Based on Vaidehi Joshi's blog post, "Trying to Understand Tries".

5/29/2019 • 19 minutes, 14 seconds

This episode we're diving into radix sort! The word has no relation to Raid, so it is definitely non-toxic and you don't have to bug out. It IS, however, a great integer sorting algorithm, and the first one at that! Based on Vaidehi Joshi's blog post, "Getting To The Root Of Sorting With Radix Sort".

5/22/2019 • 27 minutes, 29 seconds

You may have noticed that it's really hard to sort things efficiently. Well, that's where counting sort comes in! Based on Vaidehi Joshi's blog post, "Counting Linearly With Counting Sort".

5/15/2019 • 29 minutes, 39 seconds

We've gotten acquainted with heaps as arrays, now we're diving into heap sort with some help from a few condiments! Based on Vaidehi Joshi's blog post, "Heapify All The Things With Heap Sort".

5/8/2019 • 24 minutes, 34 seconds

So we've talked about heaps, but how do you represent heaps as arrays? And why would you want to? We break it down step by step! Based on Vaidehi Joshi's blog post, "Learning to Love Heaps".

5/1/2019 • 17 minutes, 26 seconds

Now that you've got your heap, what do you do with it? Shrink and grow it of course! We talk about how to add and remove values from a heap with the help of a few cats. Based on Vaidehi Joshi's blog post, "Learning to Love Heaps".

4/3/2019 • 17 minutes, 13 seconds

What are heaps? How are they related to binary trees? We use losers, winners, and some cards to help us get to the bottom of heaps! Based on Vaidehi Joshi's blog post, "Learning to Love Heaps".

3/27/2019 • 22 minutes, 2 seconds

How does quicksort perform? And how do variables, like the pivot number, affect it? We walk through three examples to find out! Based on Vaidehi Joshi's blog post, "Pivoting To Understand Quicksort [Part 2]".

3/20/2019 • 28 minutes, 57 seconds

We learn all about our second "divide and conquer" algorithm, quick sort! We walk through how it works with help from a queendom, a few pointers, and a very helpful pivot number. Based on Vaidehi Joshi's blog post, "Pivoting To Understand Quicksort [Part 1]".

3/13/2019 • 28 minutes, 59 seconds

Finally, a sorting algorithm that doesn't suck! We explore how merge sort works and why it performs better than insertion, bubble, and selection sort. Based on Vaidehi Joshi's blog post, "Making Sense of Merge Sort ".

3/5/2019 • 26 minutes

We dig into how insertion sort works, how we know where to do our inserting, and how this sorting algorithm performs, all with the help of our new boos. Based on Vaidehi Joshi's blog post, "Inching Towards Insertion Sort".

2/27/2019 • 19 minutes, 7 seconds

We are super bubbly about bubble sort! We dig into our second sorting algorithm and break down how it works and why it's actually not a great way of sorting things. Based on Vaidehi Joshi's blog post, "Bubbling Up With Bubble Sorts".

2/20/2019 • 24 minutes, 24 seconds

What is selection sort? How does this algorithm work? And just as importantly, how does it perform? We use broken books and cookies to tell you all about it! Based on Vaidehi Joshi's blog post, "Exponentially Easy Selection Sort".

2/13/2019 • 23 minutes, 16 seconds

We're at the end of the season! And to wrap things up, we're breaking down the last two ways to classify sorting algorithms: recursive vs. non-recursive and comparison vs. non-comparison. We bring it all together to talk about what we can do with all these classifications, and, in true basecs podcast fashion, we bring in seemingly unrelated topics like tomatoes! Based on Vaidehi Joshi's blog post, "Sorting Out The Basics Behind Sorting Algorithms".

12/19/2018 • 26 minutes, 24 seconds

Last week, we talked about two ways of classifying sorting algorithms: time complexity and space usage. This episode, we dig into two more! We explore how algorithms can be internal or external, and what "stability" means for a sorting algorithm. And we do it all with the help of cards, clovers, and a pair of Michaels. Based on Vaidehi Joshi's blog post, "Sorting Out The Basics Behind Sorting Algorithms".

12/12/2018 • 23 minutes, 52 seconds

You probably sort things all the time -- files, clothes, dishes. But have you thought about how to categorize your sorting? How do your sorting algorithms hold up in terms of, say, time complexity? We give you an introduction to sorting algorithms, what they are and what they're used for, and dig into the six ways we can classify them. Based on Vaidehi Joshi's blog post, "Sorting Out The Basics Behind Sorting Algorithms".

12/5/2018 • 24 minutes, 34 seconds

Sets are everywhere! If you've worked with relational databases, made a venn diagram, maybe touched some relational algebra, then you've already worked with sets. We talk about why they're so common, how well they perform (time for some Big O Notation!), and how they're actually implemented. Based on Vaidehi Joshi's blog post, "Set Theory: the Method To Database Madness".

11/28/2018 • 25 minutes, 12 seconds

Set theory might sound like a scary, super-math thing, but it's not! Well, it is a math thing, but it doesn't have to be super scary. In fact, if you already know how venn diagrams work, then you basically already know set theory. We'll walk you through it all and show you how it connects back to computer science with the help of our favorite foods. Based on Vaidehi Joshi's blog post, "Set Theory: the Method To Database Madness".

11/21/2018 • 18 minutes, 27 seconds

We're back in our hash table classroom with our multiple Brians that need their own tables! But don't you worry, we've got a brand new collision resolution called chaining to help us out. We talk about how it works and how it compares to linear probing. Based on Vaidehi Joshi's blog post, "Taking Hash Tables Off The Shelf".

11/14/2018 • 27 minutes, 8 seconds

School is in session, and the teacher is directing students to their assigned seat. Each unique name gets its own unique table. But there's an unexpected student in the class. There's another Brian! What do we do?! In this episode, we dig into how to manage these collisions in a hashtable, and how to use our collision resolution strategy to find new Brian his own desk. Based on Vaidehi Joshi's blog post, "Taking Hash Tables Off The Shelf".

11/7/2018 • 21 minutes, 8 seconds

We're kicking off a new season with a brand new topic: hash tables! This episode is full of bookshelves, pizza toppings, and helpful fridge operators who are teaming up to give you the most gentle (and the most fun) introduction to the world of hash tables. Based on Vaidehi Joshi's blog post, "Taking Hash Tables Off The Shelf".

10/31/2018 • 25 minutes, 28 seconds

Let's break down how breadth-first search (BFS) actually works! We'll walk through a real example, explain the Big O notation of this algorithm, and explore how you might decide whether to use breadth-first search or depth-first search. Based on Vaidehi Joshi's blog post, "Breaking Down Breadth-First Search".

10/10/2018 • 25 minutes, 16 seconds

We're going broad with breadth-first search! Well, actually, we're getting in line, or enqueuing ;) We walk through the steps of how breadth-first search (BFS) works, complete with holiday themed analogies and reindeers that need a GPS. We also compare and contrast the steps of BFS to those in DFS (depth-first search). Based on Vaidehi Joshi's blog post, "Breaking Down Breadth-First Search".

10/3/2018 • 26 minutes, 35 seconds

In our final look at depth-first search (DFS), we explore how to implement this lovely algorithm in coding terms. We also dig into Big O notation, breaking down how to determine the time and space complexity of DFS. Based on Vaidehi Joshi's blog post, "Demystifying Depth-First Search".

9/25/2018 • 28 minutes, 1 second

Let's dig into another depth-first search strategy: in-order! This time, we walk through a numerical example, traversing the tree with fresh, animated voices and a broken washing machine. And when you're done learning all about inorder, take our postorder challenge! Tweet us the output of a postorder strategy applied to this binary search tree. Make sure to use the #basecs hashtag, and no cheating! :D Based on Vaidehi Joshi's blog post, "Demystifying Depth-First Search".

9/19/2018 • 24 minutes, 18 seconds

We dive into depth-first-search by exploring our first of three strategies: preorder! Let's walk through an example step-by-step and get to know members of Saron's fictitious tree family along the way. Based on Vaidehi Joshi's blog post, "Demystifying Depth-First Search".

9/12/2018 • 17 minutes, 40 seconds

How are algorithms related to brownies? And how do we navigate through the nodes of a tree when implementing depth-first search? Vaidehi and Saron break it all down one chocolatey step at a time. Based on Vaidehi Joshi's blog post, "Demystifying Depth-First Search".

9/5/2018 • 28 minutes, 15 seconds

We’re back in Königsberg, crossing bridges and taking names! We use a triangle to trace simple paths and finally get to the bottom of the seven bridges problem that helped launch graph theory. Based on Vaidehi Joshi's blog post, "Königsberg: Seven Small Bridges, One Giant Graph Problem".

8/29/2018 • 22 minutes, 56 seconds

We kick off season 3 with time travel! We go all the way back to 1735 to a lovely place called Königsberg. It had seven bridges and a tricky math problem that led to the creation of graph theory. Can you solve the problem? Based on Vaidehi Joshi's blog post, "Königsberg: Seven Small Bridges, One Giant Graph Problem".

8/22/2018 • 22 minutes, 21 seconds

Vaidehi loves graphs, and you will too! We end the season with an exploration of what they are, how to define them, and how they're related to discrete mathematics. Based on Vaidehi Joshi's blog post, "A Gentle Introduction to Graph Theory".

4/4/2018 • 31 minutes, 28 seconds

What does it mean for an algorithm to be logarithmic? We revisit Big O notation, this time in the context of binary search. Based on Vaidehi Joshi's blog post, "Looking For The Logic Behind Logarithms".

3/28/2018 • 26 minutes, 6 seconds

If you've heard of binary trees, you've probably heard of binary search. But how does a binary search algorithm actually work? And do you have to have binary trees, or can you use it on other things? Based on Vaidehi Joshi's blog post, "Looking For The Logic Behind Logarithms".

3/21/2018 • 23 minutes, 43 seconds

We dig into binary trees. What makes a tree binary, and why are they so popular in computer science? And how do you implement one? Based on Vaidehi Joshi's blog post, "Leaf It Up To Binary Trees".

3/14/2018 • 20 minutes, 2 seconds

We explore the world (forest?) of trees even further! We learn what a tree's depth and height are, why they're important, and why unbalanced trees can cause computational problems. Based on Vaidehi Joshi's blog post, "How To Not Be Stumped By Trees".

3/7/2018 • 20 minutes, 18 seconds

What's in a tree? And why do they always seem to pop up in computer science? We dig into the different parts of a tree, and how certain "tree truths" make them so special. Based on Vaidehi Joshi's blog post, "How To Not Be Stumped By Trees".

2/28/2018 • 25 minutes, 53 seconds

Where do we see queues in real life? We explore how queues are used in different parts of the tech stack, and help us do awesome things like send emails, create animations, and manage requests. Based on Vaidehi Joshi's blog post, "To Queue or Not to Queue".

2/21/2018 • 16 minutes, 10 seconds

What's in a queue? And how does it relate to stacks? We explore what they do, how they work, and how to implement them. Based on Vaidehi Joshi's blog post, "To Queue or Not to Queue".

2/14/2018 • 20 minutes, 11 seconds

Where do you see stacks in real life? We look at how browser histories, call stacks, and undo/redo functionality in blogging are implementations of a stack. We also dig into what exactly a stack is made of and how it operates. Based on Vaidehi Joshi's blog post, "Stacks and Overflows".

12/13/2017 • 27 minutes

Stack Overflow is an awesome resource, but it's also a real life technical thing! We dig into what causes a stack overflow and unpack the rules of creating and working with stacks. Based on Vaidehi Joshi's blog post, "Stacks and Overflows".

12/6/2017 • 27 minutes, 18 seconds

Big O Notation can be scary. But it doesn't have to be! We unpack this popular cs topic and show you how we can use it to evaluate different data structures (like linked lists!) and make better programming decisions. Based on Vaidehi Joshi's blog post, "What's a Linked List, Anyway? [Part 2]".

11/29/2017 • 33 minutes, 18 seconds

You may be familiar with arrays and hashes and variables, but how much do you know about linked lists? We dig into what they are, how they work, and the pros and cons of using this popular data structure. Based on Vaidehi Joshi's blog post, "What's a Linked List, Anyway? [Part 1]".

11/22/2017 • 23 minutes, 16 seconds

If you've worked with CSS, you've probably seen colors represented as hex values. But how on earth does #EC152E give us the color red? With a little help of math, we show you how to represent millions of colors in hex values and how those correlate to RGB values. We also dig into the color theory behind those values. Based on Vaidehi Joshi's blog post, "Hexes and Other Magical Numbers".

11/17/2017 • 22 minutes, 59 seconds

Let's explore a very special number together: 16. It's the core of the hexadecimal system, and, in this episode, we'll learn how to count in hexes, discuss where we might see the hexadecimal system in real life, and breakdown the math that makes the number 16 so special. Based on Vaidehi Joshi's blog post, "Hexes and Other Magical Numbers".

11/15/2017 • 22 minutes, 59 seconds

Binary is great for computers, but really tough for humans to work with. We need something that's a bit easier for us. That's where encoding comes in. Vaidehi and Saron explore how encoding works and talk through some popular encoding schemes like ASCII, unicode, and base64. Check out the ASCII table here. Based on Vaidehi Joshi's blog post, "Hexes and Other Magical Numbers".

11/9/2017 • 21 minutes, 59 seconds

Binary is the foundation of computer science. We give you a beginner-friendly breakdown of how to count in binary (with some fun counting challenges you can join in on!), how it relates to bits and bytes, and why it's important for us to know as developers. Based on Vaidehi Joshi's blog post, "Bits, Bytes, Building with Binary".

11/7/2017 • 24 minutes, 5 seconds

CodeNewbie is teaming up with the incredible Vaidehi Joshi to turn her base.cs blog series into an awesome podcast. Listen to a clip from the first episode on binary, coming out Nov 8. Make sure to subscribe!

10/29/2017 • 2 minutes, 51 seconds