podcast cover
Software Engineering

Take Up Code

Take Up Code: build your own computer games, apps, and robotics with podcasts and live classes

+1 FAN
Take Up Code is a podcast that explains computer programming topics through fun and engaging examples that you can relate to. The guided format allows you to gain valuable understanding of topics that will reinforce your studies, allow you to train n...Show More

11:10 | Sep 3rd

How do you create unique and random game worlds and maps? Unique and random game maps and worlds can be created procedurally in code using noise. The noise is good for simulating nature because it produces values that change randomly in small amounts...Show More

06:45 | Sep 3rd

This episode will explain how you can use curly braces in C++ to create a new scope. You can use this ability to control name visibility and reduce name conflicts. And you can also use curly braces to control exactly when object constructors and dest...Show More

05:27 | Sep 2nd

What’s the best way to handle frustration when learning to code? Knowing that all developers face frustration at times is a big help. You’re not alone. And it doesn’t mean that coding is not for you. Treat it as a learning opportunity and stick with ...Show More

07:37 | Sep 2nd

What happens when code has undefined behavior? There’s hundreds of ways code can have undefined behavior. What happens is completely up to the compiler. You should not depend on undefined behavior because compilers can completely change or delete sec...Show More

07:40 | Dec 10th, 2018

This design pattern will help you make sense of your game design as it gets bigger. You can listen to episodes 77, 86, 87, and 88 for more information and background. This episode will start tying things together. I didn’t originally describe this be...Show More

06:20 | Nov 25th, 2018

There’s some special floating point values that you should be aware of. Zero, infinity, and not a number are three cases that might surprise you. Let’s get started. First of all, do you know the sign of zero? Is it positive or negative? Depending on ...Show More

09:55 | Nov 19th, 2018

Looking for more advanced training to help you better understand how to actually build something in C++? Want to go beyond example snippets that don’t really teach you anything? How about being able to ask questions or get feedback on a suggestion? Y...Show More

09:07 | Nov 12th, 2018

Be careful with floating point numbers when building games. You could be in for some big surprises if you don’t understand how computers work with fractional values. You might be able to write an app to keep track of your friend’s addresses without u...Show More

08:42 | Oct 29th, 2018

Do you know the differences between points and vectors? You might be surprised. I learned a few things myself recently when I implemented points and vectors in the TUCUT library. Listen to episode 240 to learn more about TUCUT. As to which you should...Show More

11:53 | Oct 15th, 2018

You don’t need a lot of math to program. What you do need is usually simple. But you do need some. Don’t worry, it’s not that hard and I’ll explain it so you can understand. Game development probably needs a bit more math than you might guess. Let’s ...Show More

08:27 | Oct 2nd, 2018

I just got back from CppCon 2018 in Bellevue Washington. And since this is a podcast where I teach you how to program, I thought I’d share something that I learned at the conference. It was a great conference with full days that went from 8 in the mo...Show More

11:27 | Sep 17th, 2018

Installing Linux, GCC, GDB, Git, CMake, LLVM, Clang, Boost, SFML, CodeLite, Sublime Text 3, And Dropbox On a $140 Lenovo ideapad 120S makes an ultra portable C++ programming laptop. Listen to the audio podcast to hear my story about how and why I dec...Show More

05:08 | Sep 3rd, 2018

In the end, it’s you vs. you. Is this about living or dying? It seems that this is a common inspirational quote used a lot in fitness clubs and weight loss programs. But I first saw it on a t-shirt this weekend. I was at one of my favorite places to ...Show More

12:51 | Aug 20th, 2018

Some people say that raw pointers are evil and should be avoided. Raw pointers are useful when used properly. This episode explains how to use raw pointers along with smart pointers and is taken from a recent game development session. I have a text-b...Show More

09:21 | Aug 6th, 2018

You can join an actual game development session almost every Saturday. This schedule might change in the future. But until then, you can find me working on a video game almost every Saturday. I’ve brought together a lot of code that I’ve written over...Show More

06:02 | Jul 23rd, 2018

There’s a lot you can learn about programming. But do you need to know it all? I’ve been reading a lot about the Pareto principle. You’ve probably heard it as the 80/20 rule. It says that you get 80% of your results from just 20% of your effort. And ...Show More

09:53 | Jul 9th, 2018

This is a real example of how the filesystem can be used to take over a WordPress website. It’s a really bad vulnerability. And it uses the filesystem! This is why I’ve been spending the last 16 episodes on this topic. If this doesn’t get you to sit ...Show More

09:40 | Jun 25th, 2018

Avoid being predictable. This advice applies to almost everything you do as a programmer. This episode will focus on the filesystem and how being predictable can make it much easier for an attacker to gain control. We use files to store information a...Show More

08:35 | Jun 10th, 2018

Run your program with the least permissions possible. Listen to the full episode to learn how this applies to your application and what role the filesystem has. We’re not talking about imaginary mind control beams anymore. This is real and something ...Show More

09:55 | May 28th, 2018

When it comes to security, it’s better to learn from examples. This episode explains a very important and simple piece of advice. Always test for things that you want instead of things you don’t want. You’ll need to understand the differences between...Show More

08:26 | May 14th, 2018

Journaling records extra information in case there are problems. If your computer loses power or maybe you’re saving your files to a removable drive and you eject the drive without notice, then you might lose your work. In order to prevent larger pro...Show More

05:54 | Apr 30th, 2018

The Take Up Code podcast needs your support! Listen to this episode for upcoming changes or you can also read the full transcript below. Transcript There are some changes coming to the Take Up Code podcast schedule that I wanted to explain. These cha...Show More

12:58 | Apr 23rd, 2018

Filesystems allow you to refer to your content with different names. You can usually get by just fine without linking files and directories. Until a situation arises where linking would help. A simple explanation of a link for right now is that it al...Show More

10:25 | Apr 16th, 2018

Metadata provides information about your files. You might hear the prefix meta applied to other things. It really just adds a higher level to whatever it describes. So metadata is information about your data. It’s data that describes your data in the...Show More

14:54 | Apr 9th, 2018

There is a special type of filesystem used to swap memory. This is not something you’ll need to use directly. But since we’re talking about filesystems, now’s a good time to explain paging and swapping. Listen to the full episode to learn more detail...Show More

13:06 | Apr 2nd, 2018

Access control lists provide more security options. The previous episode described the traditional security model used by Unix computers. This includes Linux and Mac computers as well. It’s a simple model that works really well. Make sure to listen t...Show More

09:42 | Mar 26th, 2018

Security is a big part of filesystems. This episode will explain how traditional file system security works for Unix, or Linux, or Mac computers. They all follow a similar design. These operating systems could have another security system depending o...Show More

14:06 | Mar 19th, 2018

There are many different types of filesystems with different capabilities. Once you understand these capabilities, you’ll not only be able to select the proper filesystem for your needs but will understand, for example, how your computer knows when y...Show More

12:25 | Mar 12th, 2018

Cylinder, Head, Sector or CHS vs. Logical Block Addressing or LBA give you two ways to find data on a disk. You’ll learn about these two methods in this episode because the terms come up now and then when talking about filesystems. They don’t really ...Show More

08:55 | Mar 5th, 2018

Dividing your disks into partitions allows you to use each partition for separate tasks. Listen to the full episode or read the full transcript below for more details including a description of the Master Boot Record (MBR) and GUID Partition Table (G...Show More

09:28 | Feb 26th, 2018

How are filesystem organized with multiple drives? Whenever you insert a floppy disk, or a CD or DVD, or even a USB drive, the operating system will detect this event and make that drive letter available for use. So it’s not really the drive itself t...Show More

10:45 | Feb 19th, 2018

How are filesystem organized with multiple drives? Now that you know why you should learn how to use a filesystem in your programming, what do you need to know? Programming with a filesystem is different than just using your computer to open and clos...Show More

10:47 | Feb 12th, 2018

Understanding how to use the filesystem will allow you to add common and expected features to your apps. Listen to the full episode for more insight into filesystems. And make sure to subscribe to the podcast from within your podcast app to get new e...Show More

06:11 | Feb 5th, 2018

The code you write should follow a similar level of detail. I mentioned level of detail in an earlier episode about how to start building a video game. And there I was talking about how to get your game idea or any project idea to a level of detail w...Show More

06:19 | Jan 29th, 2018

Finding differences will help you make sense of your code. We’re fairly good at spotting things that are different. But how good are you at thinking of different ways that something can be similar or different? That’s an important skill you need to d...Show More

08:22 | Jan 22nd, 2018

Resource allocation is initialization or RAII for short may be hard to pronounce but will help you write better and simpler code. Listen to this episode for an example that should help explain why RAII is an important technique to help us simplify ou...Show More

08:40 | Jan 15th, 2018

Why is C++ such a good choice for writing games? The C++ language is used for many types of projects requiring speed, scale, and responsiveness. It’s also a great choice for video games. Why? The C++ language is more towards the low level of language...Show More

07:33 | Jan 8th, 2018

Work on the toughest problems first. And if you can’t solve them, then find a way around. Remember to always keep sight of what’s important. And right now, that’s to finish your game. Don’t get sidetracked with problems. But don’t ignore them either....Show More

10:46 | Jan 1st, 2018

How is a video game different than any other application? Building a video game will help you understand how to build any type of application. It’s a fun way to learn how to program. But how are video games different? And will understanding these dif...Show More

06:33 | Dec 25th, 2017

We all want to think big. But to get there, we need to think small. I’ve talked about this a few times, most recently in a 4 part series called, “Your Guide To Computer Programming.” Listen to episodes 166 through 169 for more information. I’ll go in...Show More

08:26 | Dec 18th, 2017

You can take advantage of libraries and frameworks. Listen to the full episode to learn how libraries are different from frameworks and where game engines fit into all this. You can also read the full transcript below. Transcript Don’t try to do ever...Show More

09:31 | Dec 11th, 2017

What role will data play in your game? It doesn’t matter what type of application you’re building. Data will be important. You need to decide what parts will be driven by data and what will be driven by code. Now, it would be possible to specify in c...Show More

10:21 | Dec 4th, 2017

How do you make your idea more specific? It’s hard to make progress on a vague idea. This reminds me of a popular book called Getting Things Done that says we don’t work on projects, we work on tasks. If you have a lot of unfinished tasks on your do-...Show More

11:36 | Nov 27th, 2017

You have a vague idea for a new video game. Where do you begin? I’m not a painter but I have to imagine that this is similar to any creative work of art. Where do you begin? A lot of people get stuck here and never make progress. You have to start so...Show More

10:12 | Nov 20th, 2017

When is it okay to switch to a different project? This is something that I struggle with all the time. I have so many ideas and so little time. There’s no way that I can get to everything. But it gets worse. Because new ideas keep arriving all the ti...Show More

11:19 | Nov 13th, 2017

Cascading Style Sheets let you manage how your HTML looks so you can keep your HTML focused on the content. To get the most benefit from cascading style sheets, you need to start with the HTML. Make sure that you’ve done four things: Create meaningf...Show More

08:29 | Nov 6th, 2017

Cascading Style Sheets let you manage how your HTML looks so you can keep your HTML focused on the content. I’ll explain how to use cascading style sheets, or CSS, to handle the presentation while your HTML can then focus on the content. How does all...Show More

16:43 | Oct 30th, 2017

An abstract syntax tree can help your code make sense of what a user provides. Listen to the full episode as I describe how to build an abstract syntax tree starting with a simple idea and then how that idea needs to change. You can also read the ful...Show More

06:07 | Oct 23rd, 2017

You can use a stack when you need to remember something and only ever need the last thing. If you need to access any item in a collection at any time, then a stack is not going to work. I didn’t explain stacks before because in a way, it’s like a res...Show More

14:25 | Oct 16th, 2017

What other things can trees help you to solve? When thinking about trees, I usually put them in two groups. The first are trees with arbitrary structure. The second group of trees have a well defined structure. Listen to the full episode or read the ...Show More

10:15 | Oct 9th, 2017

Have you ever created something and then thought about how bad it was? What did you do? Most of us would hide it or even destroy it. Or maybe just keep working on it trying to make it perfect. I struggle with this all the time. It’s really hard to re...Show More

08:00 | Oct 2nd, 2017

Why should you consider using trees? You can find more information about trees in some of the earlier episodes. I’ll try to not repeat the same things here. Episodes 41 and 42 discuss binary trees and left-child right-sibling trees. Episode 54 explai...Show More

12:29 | Sep 25th, 2017

Before exploring HTML and CSS further, you’re going to need to understand graphs, trees, and hierarchies. These concepts apply throughout programming and are not limited to just HTML and CSS. But as I was trying to figure out what topic to explain ne...Show More

10:10 | Sep 18th, 2017

Now that you can generate HTML, why would you ever want to go back to the old way of unchanging HTML? It takes some amount of work to generate HTML. I’m not talking about the work to program this. Make sure to listen to the previous episode for more ...Show More

07:45 | Sep 11th, 2017

A modern website is more than just a collection of some HTML pages. If all you have is some basic information that you want to make available for the world to see, then you can create HTML files and put them in your website directory. You might have ...Show More

09:08 | Sep 4th, 2017

You’ll learn how to use HTML to format your text into headings, paragraphs, and lists in this episode. Why do you need HTML to format your documents? Why not just use a text editor to write whatever you want to appear on a web page and save it in a p...Show More

06:51 | Aug 28th, 2017

Does markup have any specific meaning that can be understood? You already know about the html tag which identifies an html document. And the head and body tags that also define well understood areas. But how does the rest of an HTML document specify ...Show More

08:02 | Aug 21st, 2017

You need to know more than how HTML tags work. There’s a structure that HTML documents should follow. Now that you know how HTML tags work from the previous episode, you can use that to create your own HTML pages. This episode will describe what make...Show More

12:10 | Aug 14th, 2017

How does HTML markup enable you to create web pages? You’ll understand how HTML works after listening to this episode but styling and scripting will be explained in other episodes. Let’s start at the beginning. HTML stands for the Hypertext Markup La...Show More

08:22 | Aug 7th, 2017

You can use HTML to present information or build web pages. HTML stands for Hypertext Markup Language which is a bit unfortunate because it gives the impression that this is a programming language. It’s not. The most important part of the name is mar...Show More

07:45 | Jul 31st, 2017

What criteria do you use to determine if somebody is faking their skills as a teacher? You can’t rely on awards or certifications. Sure, these things can help. But they’re not completely accurate. When you ask a question, how do you know that you’re ...Show More

06:51 | Jul 24th, 2017

My dad recently said that he noticed a lot more police activity recently. He lives in a small rural town and told me that kids now days either leave or go to jail. There’s lots of small towns that used to have a factory in a nearby town where people ...Show More

13:51 | Jul 17th, 2017

Where is the best place for you to get the skills you need to get a high-tech job, to advance your career, or to just satisfy your desire to improve? You’re not going to find a specific answer in this episode to the question of what’s best for you. T...Show More

08:37 | Jul 10th, 2017

Programming involves change and managing that change is the only way to make sense of it. You’ll learn about the staging area in this episode and how that affects your commits. Git actually has three areas where it keeps your files. The most visible ...Show More

11:37 | Jul 3rd, 2017

Programming involves change and managing that change is the only way to make sense of it. You’ll learn about submodules in this episode and how that enables you to reference code from other repositories. There’s a concept in programming called refact...Show More

08:45 | Jun 26th, 2017

Programming involves change and managing that change is the only way to make sense of it. You will learn about distributed repositories in this episode and how that enables you to work differently. The file renaming and copying techniques that I desc...Show More

16:27 | Jun 19th, 2017

Programming involves change and managing that change is the only way to make sense of it. You’ll learn about branching and what it means to commit your changes in this episode. Git is more than a system that allows you to checkout a file, make some c...Show More

09:09 | Jun 12th, 2017

Programming involves change and managing that change is the only way to make sense of it. You’ll learn about merging in this episode. With this knowledge, you can take your source code control system to a new level by going beyond just managing old v...Show More

11:15 | Jun 5th, 2017

Programming involves change and managing that change is the only way to make sense of it. It’s more than history. As your projects get bigger and especially when you have a team of software developers all working on the same project files, a version ...Show More

10:05 | May 29th, 2017

Hey, I need to wait around for a package to be delivered next Friday. Can you cover for me if I take your shift on Saturday? We all have things that need to get done and sometimes that means we have to be someplace other than at work. And it’s amazin...Show More

10:09 | May 22nd, 2017

We normally think of something as either a conductor of electricity or an insulator. Transistors are semi-conductors which means that their ability to conduct electricity can be controlled. There’s an older video I made that explains DC analysis of t...Show More

07:37 | May 15th, 2017

Unlike microprocessors, microcontrollers can be used all by themselves. If you’re building a computer, then go ahead and use a microprocessor. But almost anything else that’s not entirely mechanical will probably need a microcontroller. Maybe even se...Show More

07:33 | May 8th, 2017

What are microprocessors and how have they changed? The first thing to understand is that a microprocessor by itself is useless. It can’t do anything without other components such as memory, communications, port controllers, display drivers, etc. All...Show More

04:15 | May 1st, 2017

You can use resistors to divide voltage. A circuit with just some resistors may not seem very interesting but you can learn something. If you put two resistors in-line with each other, then the total resistance will be the sum of each resistor. This ...Show More

07:50 | Apr 24th, 2017

Have you ever wondered why batteries sometimes need to be inserted in alternating directions? A typical electronic circuit has lots of components connected together with wires. How these connections are made is important and can lead to very differen...Show More

08:32 | Apr 17th, 2017

Do you know how your touch screen works? In this episode, you’ll learn about an important electrical effect called capacitance that can be used like batteries, to control timing, and even to detect touches. Listen to the full episode for more explana...Show More

07:45 | Apr 10th, 2017

Moving charge produces a magnetic field and a moving magnetic field produces current. First of all, if you have charge moving through a wire, then there’ll be a magnetic field that develops around the wire. You’ve probably seen experiments with iron ...Show More

06:51 | Apr 3rd, 2017

Do you know where the nearest power plant is? Direct current is easy to understand because there’s a constant voltage that wants to push charge through a circuit in a single direction. But if DC is so simple, why does the world use AC to power our ho...Show More

11:24 | Mar 27th, 2017

Knowing some basic electronics helps you become a better programmer. You might have seen warning signs that say “Danger: High Voltage” But do you know what voltage really is? You’ve probably used batteries until they’re dead. But do you know what tha...Show More

06:17 | Mar 20th, 2017

How do you send multiple messages across a single channel? Multiplexing is a topic that applies most to communications but it also applies to computer networks. It’s an advanced topic that I won’t be able to fully explain in this podcast. But you wil...Show More

08:55 | Mar 13th, 2017

How do you correct errors once you identify them? I’ve explained a lot already about error detection. Make sure to listen to the last several episodes for more information. Detecting errors is the first step and the most important. I mean, if you don...Show More

09:13 | Mar 6th, 2017

How do you stop an attacker from just changing a hash? In the previous episode, I explained how hashes give you the best error detection even when under a direct attack. But the best hash function by itself is not enough. This episode will explain st...Show More

09:20 | Feb 27th, 2017

If you receive some information, how do you know if it’s intact or has been changed? You use a hash in a similar way to a checksum by including it along with the data. If you want to verify that the data is correct, recalculate the hash and compare. ...Show More

12:11 | Feb 20th, 2017

If you receive some information, how do you know if it’s intact or has been changed? I’m going to continue explaining how you can detect errors in this episode. Make sure to listen to the previous episode also. And the best option is to subscribe to ...Show More

09:00 | Feb 13th, 2017

If you receive some information, how do you know if it’s intact or has been changed? Let me make this point clear from the beginning. Error detection only lets you detect errors. It doesn’t correct them. You have to provide other means to fix any err...Show More

08:24 | Feb 6th, 2017

Why should you learn how to program? What is programming? What specific steps can you take? How can you apply programming? While there’s many ways to apply programming outside of getting computers to do what you want, it’s even more important if you’...Show More

09:21 | Jan 30th, 2017

Why should you learn how to program? What is programming? What specific steps can you take? How can you apply programming? This episode shares the following major aspects you can consider and it allows you to think about these from two different view...Show More

10:25 | Jan 23rd, 2017

Why should you learn how to program? What is programming? What specific steps can you take? How can you apply programming? To be a good programmer, it doesn’t take a lot of math. Instead, you need to be able to break larger ideas and processes like h...Show More

09:01 | Jan 16th, 2017

Why should you learn how to program? What is programming? What specific steps can you take? How can you apply programming? Even if you already know how to program, maybe you can introduce your friends to this mini series of episodes and get them star...Show More

11:26 | Jan 9th, 2017

How does one application communicate with another application? So far, in the last several episodes, I’ve explained how to identify and find computers on a network, how to establish connections, how to think about communication in terms of seven laye...Show More

08:19 | Jan 2nd, 2017

You’ll learn more about the strengths of the SCTP, TCP, and UDP protocols by comparing them. The audio recording has much more detail about the following five questions. Is the protocol connection oriented? Both SCTP and TCP are but UDP does not est...Show More

08:16 | Dec 26th, 2016

SCTP is another protocol like TCP and UDP with aspects of both. Your computer may not support SCTP yet and there’s always the chance this protocol will fail to gain enough support. I’m explaining it in this episode mainly so you’ll understand that th...Show More

05:39 | Dec 19th, 2016

The OSI model will help you understand how computers communicate. This is just a model that helps us understand how things work. Not everything has to fit exactly into one of these layers and maybe you might design something that doesn’t fit perfectl...Show More

09:05 | Dec 12th, 2016

A MAC address is a physical address unique to your computer. Think of it like this: you want to send a letter to your friend so you put your friend’s mailing address on the envelope. This is good enough at first. But right before the post office puts...Show More

06:24 | Dec 5th, 2016

Sometimes speed and simplicity are more important than reliability. This episode expands on the concepts introduced in the previous episode. If you haven’t already, make sure to listen to episode 159 about TCP. Both TCP and UDP are based on the inter...Show More

08:49 | Nov 28th, 2016

Knowing where to send information through IP is not enough. You have to know how to reliably send information too. What is TCP and why is it needed? Imagine for a moment that you need to send a very large package by postal mail. The package is just a...Show More

09:43 | Nov 21st, 2016

Any computer or device that wants to communicate with the Internet Protocol needs an IP address to uniquely identify the device. And some devices could have multiple IP addresses. There needs to be at least one IP address for each network card or int...Show More

09:37 | Nov 14th, 2016

Why do we need a system for managing domain names? Imagine for a moment what the Internet would be like without a domain name system. It would be just like a phone number. If I had to create an audio commercial for Take Up Code and couldn’t use takeu...Show More

12:24 | Nov 7th, 2016

It’s almost a tongue twister to say them all. Do you know what they all mean? Let’s take URI one step at a time and at the end, you’ll understand how best to describe where information such as web pages can be found. The whole point though about this...Show More

07:56 | Oct 31st, 2016

There’s more than just two letters difference. In fact, you can’t really compare them at all. But you can use them together. HTML stands for Hypertext Markup Language. A well formatted HTML document though is really nothing more than a special XML do...Show More

05:45 | Oct 24th, 2016

If you haven’t already, make sure to listen to the previous episode 153 about XML. Many of the concepts that I described there apply to JSON as well. JSON stands for JavaScript Object Notation and comes from the JavaScript language. But even so, it’s...Show More

08:26 | Oct 17th, 2016

XML was designed to solve two main purposes. To allow information to be stored and transported and to allow both humans and computers to read and modify the information. Listen to the episode or read the full transcript below to learn more about how ...Show More

09:17 | Oct 10th, 2016

You might be more familiar with APIs than SOA but they had another meaning not very long ago. The full episode tells how I used to program for DOS and how that is different from using APIs. Make sure to listen and subscribe in iTunes to get future ep...Show More

07:42 | Oct 3rd, 2016

As you learn more about something, a strange thing happens. It becomes obvious how much more there is to still be learned. This is not a new idea. It’s been around and quoted in many different forms for thousands of years. And it just keeps going. It...Show More

06:53 | Sep 26th, 2016

Service Oriented Architecture or SOA for short can mean different things. At the core, is the ability to send a message over a network to an isolated destination for a specific business purpose. The first thing is communication and sending messages. ...Show More

10:10 | Sep 19th, 2016

Knowing where to spend your time and focus will help you finish projects without getting stuck in details. I’m building a 2D side-scroller game and just got the project to the point where the main character can move left, right, and jump on tiles. A ...Show More

08:44 | Sep 12th, 2016

Consistency, Availability, and Partition Tolerance are three aspects of distributed computing. And a fourth not included in the theorem is Latency. The original CAP theorem said that you could only be guaranteed to get two aspects between the three o...Show More

08:02 | Sep 5th, 2016

Two-phase and three-phase commits will help you design solutions that need to work across multiple computers. Let’s say that you’re working on an event reservation application. You need to transfer some money to several vendors for a large event. May...Show More

10:58 | Aug 29th, 2016

Computers rely on clocks. They coordinate everything. But the clocks on different computers can be slightly off from each other. This is normally not a problem. Until you need to merge rapid events from multiple computers and put them in order. You h...Show More

07:33 | Aug 26th, 2016

What can you do to improve your concentration? Last week, I explained how you need to increase your attention span by having a goal, trusting your timer, removing unnecessary distractions, making progress, taking a break, and repeating. Make sure to ...Show More

11:00 | Aug 22nd, 2016

Dividing work between multiple computers is sometimes the best way to solve a problem. We do this all the time in real life and so much that we don’t even think about it. When you get a job or when you need to hire somebody, you’re distributing the w...Show More

06:34 | Aug 19th, 2016

How do you concentrate? For most people, this question probably means, “Do you listen to music while working?” or “Do you go somewhere to get away from it all?” But there’s more to learning how to concentrate than just this. I remember reading that t...Show More

08:05 | Aug 15th, 2016

nullptr represents a null pointer and while it has a value of zero, the type is not the same. For a long time in C++ there was a common rule that said you shouldn’t overload methods with integral types and pointer types. You could and the compiler wo...Show More

07:38 | Aug 12th, 2016

When should I create a new class? There’s no single answer I can give you for this because every situation is different and even then, there’s usually no design that’s right or wrong. It’s all a tradeoff. You give up one thing and get something else....Show More

09:38 | Aug 8th, 2016

Making code more readable sometimes means knowing where to put nothing. Programming has strict rules about the meaning of the code. And compilers don’t care how easy the code is to understand. It either follows the rules or not. But as humans, we do ...Show More

08:54 | Aug 5th, 2016

Regulations say that you can only have one floor mat. I overheard that comment at a grocery store recently. It seems that a young man working as a cashier requested extra floor mats. You know, the spongy kind that are supposed to make it easier to st...Show More

09:46 | Aug 1st, 2016

Comments are important but don’t forget that your code should also be self-commenting. If I had to sum this episode into a single sentence, I’d have to say that comments should explain why some code is not obvious. And this is after you’ve done every...Show More

09:29 | Jul 29th, 2016

Where are your certifications? Do you have a degree? First of all, let me be clear, a certification, or a degree, or any other piece of paper, or even a bunch of letters after your name doesn’t prove anything. And it doesn’t matter who gave you those...Show More

13:00 | Jul 25th, 2016

Can this object be thrown away yet? Keeping track of how many places are still using an object is one way to answer this question. The way it works is like this. When you first create an object it starts out with a reference count of zero. That just ...Show More

09:47 | Jul 22nd, 2016

What’s your biggest weakness? Things around us change and we each grow and change too. Skills are things we can learn and practice. Getting good at a skill requires a lot of time. Maybe you know someone who seems naturally gifted with basketball, or ...Show More

09:28 | Jul 18th, 2016

You normally don’t have to worry about name mangling. But you should know what it is. This sounds a lot worse than it is. Name mangling is a technique that compiler vendors use to give overloaded methods unique names. It’s also sometimes called name ...Show More

07:14 | Jul 15th, 2016

What’s your biggest weakness? In real life, problems often require more than one person. Nobody can be an expert in everything. We have to each focus on what we do best and that means we need weaknesses. This episode continues last week’s episode abo...Show More

09:06 | Jul 11th, 2016

Sometimes you need to declare a type to be the same as something else. You can use decltype just like auto. When you want to declare a local variable and initialize it right away, then auto really is the better choice. But maybe you want to declare a...Show More

06:16 | Jul 8th, 2016

How our education system ignores problem solving. I don’t really have a question this week so this is a great opportunity for me to talk about education. And in particular, about how we’re expected to apply what was just taught. Let’s start with a ga...Show More

10:18 | Jul 7th, 2016

You’ll sometimes come across lvalues and rvalues maybe when trying to understand compiler error messages or when reading docs. A basic understanding will go a long way to making sense of them. The names look strange, lvalue and rvalue. They started o...Show More

09:02 | Jul 6th, 2016

Auto and var types do have a type. The compiler will figure out what that is. You might think this is just a shortcut and it sometimes helps cut down on the typing. But there are other benefits. Let’s say you have a method that’s declared to return a...Show More

07:51 | Jul 5th, 2016

The variant type can take on one of many different types and can even change it’s type. It’s still a variant so it’s more accurate to say that it can hold another type. Think of a collection that can hold many values all of the same type. Now switch ...Show More

09:27 | Jul 4th, 2016

When you want to identify class instances or data records, you can’t use things like passports. Yet it’s just as important to keep track of object identities as it is for people. One simple way to keep track of things is to just use a number. Even a ...Show More

09:28 | Jul 1st, 2016

I always feel pressure and embarrassment when doing code reviews. What should I do? One of the best things you can do is discuss how you feel with your manager. A good manager will help you overcome your problems. That’s what they’re supposed to do. ...Show More

08:23 | Jun 30th, 2016

Binders make up part of functional composition that allows you to adapt functions and combine them into new functions. Let’s say you have a method that multiplies two numbers. Actually, you already have one. It comes with the standard C++ library and...Show More

10:11 | Jun 29th, 2016

A regular expression or regex lets you perform the advanced text operations matching, searching, tokenizing, and replacing. To begin, why would you ever want to use regexes? This is definitely something you’ll want to be careful about. The syntax of ...Show More

11:39 | Jun 28th, 2016

Lambdas are a recent addition to C++ and are also included in other languages. Think of them like unnamed methods but with some extra concepts that you need to know. Or if not, you’ll be even more lost than with function pointers. The C++ language ha...Show More

13:48 | Jun 27th, 2016

You may not always need to work with this data type but that doesn’t mean you can ignore it. If you don’t at least know the basics, then you’ll get lost in code that uses function pointers. You can listen to the episode for the full description. I’ll...Show More

09:29 | Jun 24th, 2016

What is data binding? A good example of this is a list box that shows several items. If you’re writing a list box that can only show an alphabetical list of country names, it won’t be very useful in other applications. It would be really bad if anyti...Show More

08:52 | Jun 23rd, 2016

You may not always need to work with this data type but that doesn’t mean you can ignore it. If you don’t at least know the basics, then you’ll get lost in code that uses function pointers. You can listen to the episode for the full description. I’ll...Show More

10:02 | Jun 22nd, 2016

Function objects are simple but don’t let that fool you. You can use them in clever solutions. How do you actually use functors? A really great example is in the C++ standard library collection classes. Some of the collection classes support sorting....Show More

08:52 | Jun 21st, 2016

Function objects are simple but don’t let that fool you. You can use them in clever solutions. It’s more difficult to explain why you might want to use a function object if you don’t yet know what a function object is. So that’s mostly what this epis...Show More

12:49 | Jun 20th, 2016

The C++ language guarantees that destructors run at specific times even if an exception is thrown. You can use this to make sure that other cleanup work gets done. That’s what smart pointers do. A pointer can allow you to create new objects in some s...Show More

06:37 | Jun 17th, 2016

What is runtime binding? Runtime binding is a concept that allows your application to change or extend its behavior at runtime in ways that the compiler cannot fully determine. This doesn’t mean that the compiler is no longer involved. Just that your...Show More

08:45 | Jun 16th, 2016

The C++ language guarantees that destructors run at specific times even if an exception is thrown. You can use this to make sure that other cleanup work gets done. That’s what smart pointers do. Let’s say you create a new object by calling new. You’r...Show More

09:24 | Jun 15th, 2016

Streams provide a way to read and write potentially unlimited information and working with them is very different than data types representing a single variable. This episode continues the explanation of streams. There’s more than just reading and wr...Show More

09:30 | Jun 14th, 2016

Streams provide a way to read and write potentially unlimited information and working with them is very different than data types representing a single variable. I’ve described streams so far with an example of a stream of water flowing by and it’s t...Show More

09:27 | Jun 13th, 2016

Sometimes you need to bundle things together so you can treat them as a single unit. That’s what the tuple provides. You might wonder why not just use a container to put things in? Containers are good at storing as many instances of some type as you ...Show More

07:21 | Jun 10th, 2016

When should I use a reference and when should I use a pointer? Both references and pointers allow you to create a variable that refers to something else but there are differences. You can’t just prefer one over the other. That would be like a carpent...Show More

11:51 | Jun 9th, 2016

DateTimes in C++ require quite a bit of a learning curve. They’re still evolving and nowhere near to being full-featured or friendly to use. Up until C++11, the best you could do with the builtin date and time types came from the C libraries. C++11 d...Show More

11:18 | Jun 8th, 2016

Dates and times are a lot more complicated than we normally realize. This episodes explains durations. You can specify a duration directly and it’s very simple now that you know how the date and time portion works. Just like how a capital letter T is...Show More

10:49 | Jun 7th, 2016

So you think you know how to use the DateTime struct in C#? You might be surprised. C# provides a struct which is a value type called DateTime that implements various interfaces including IComparable, IConvertible, IFormattable, and ISerializable. In...Show More

17:04 | Jun 6th, 2016

Dates and times are a lot more complicated than we normally realize. Having a specific data type to manage all the details is crucial. This episode explains the following topics related to time: What is UTC and the difference between coordinated uni...Show More

11:49 | Jun 3rd, 2016

Do I really have to follow software licenses? This is a follow-up to last week’s question about the need to learn how to code when so much is available online. The simple answer is, yes, software licenses are important and do need to be respected. I ...Show More

14:05 | Jun 2nd, 2016

Dates and times are a lot more complicated than we normally realize. Having a specific data type to manage all the details is crucial. 02-04-10. What does that mean? If you’re from the US, then it probably means February 4th, 2010. But it might also ...Show More

11:42 | Jun 1st, 2016

If you need floating point values but find the accuracy of floats and even doubles to cause problems, then consider using the decimal type. But first, what’s the difference between accuracy and precision? Are they interchangeable? It’s easy to get th...Show More

17:17 | May 31st, 2016

You need more than a bunch of numbers and logic to write an application. You need text and working with individual characters isn’t enough either. This episode continues explaining concepts important to the string data type with the following seven p...Show More

15:28 | May 30th, 2016

You need more than a bunch of numbers and logic to write an application. You need text and working with individual characters isn’t enough either. This episode continues the discussion about the string data type and covers the following points: Can ...Show More

07:16 | May 27th, 2016

Is there any point in learning how to code when I can just use the source code from another app? The simple answer is, yes, it is very worthwhile to learn how to code. And for many reasons. But my reasons might surprise you. We live in a more open wo...Show More

16:40 | May 26th, 2016

You need more than a bunch of numbers and logic to write an application. You need text and working with individual characters isn’t enough either. In some languages, a string is nothing more than an array of chars that ends with a special null value....Show More

13:07 | May 25th, 2016

You’ll often need multiple variables of the same type and while you can sometimes just create separate variables with their own names, what if you don’t know ahead of time how many will be needed? Even if you do know how many variables are needed, so...Show More

10:29 | May 24th, 2016

If you want to work with fractional values instead of just whole numbers, then floating point types are usually a good choice. They’re different enough from ints that you need to understand how to use them. Working with ints gives you the ability to ...Show More

10:23 | May 23rd, 2016

What would you rather see? 1, 2, 3, or red, green, blue? Enums allow you to give meaningful names to values. Seems simple, right? It is, except for a few things you should be aware of. This episode explains the following six aspects of enums that you...Show More

08:27 | May 20th, 2016

I met a person recently who has a college degree in computer science. He works at a local pizza shop. The question this week is not really a question but my thoughts on the situation. What went wrong? Or did anything go wrong? Programming can be rewa...Show More

12:02 | May 19th, 2016

Void and bool are simple types that you can use with very little explanation. There are a few details that you should be aware of though. Think of void as an absence of a type and not really a type itself. There are specific places where void can be ...Show More

16:40 | May 18th, 2016

You’ll probably have one or more ints in almost every method and class you write. They’re everywhere so you really should know how to use them. Knowing how to use the int data type means you need to understand the limits and consequences of using a f...Show More

12:15 | May 17th, 2016

You’ll probably have one or more ints in almost every method and class you write. They’re everywhere so you really should know how to use them. This episode explains the data lengths of various ints and pointers along with words. Do you know what a w...Show More

10:41 | May 16th, 2016

Chars and bytes form some of the most basic data types available. But what are they really? And what can you do with them? This will depend on what language you are using and maybe even what platform you’re building your application to run on. Some l...Show More

05:56 | May 13th, 2016

How do I use my foundational skills in programming to start making useful software? Let me just get right to the point. Foundational skills alone will not lead to useful software. And in fact, I think that trying to focus on the technical aspects fir...Show More

11:33 | May 12th, 2016

Callback methods can also be either synchronous or asynchronous and add a whole new dimension to how you can approach problems. The way I think about callbacks is like this. There’s two sides to a callback. One side defines what the callback should l...Show More

09:43 | May 11th, 2016

What are synchronous and asynchronous methods and how do you use them? Sometimes we expect an answer or a result right away. And sometimes, it might take a while. And sometimes, what we thought would be quick turns out to take longer. If I ask you wh...Show More

11:45 | May 10th, 2016

There’s a big problem with Singletons especially in the C++ language. It’s not obvious how to get them to work with multiple threads. You want one instance in your entire application and how do you handle the race condition when multiple threads ask ...Show More

10:12 | May 9th, 2016

Volatile is a keyword that allows you to turn off certain optimizations. Unfortunately, it’s also used incorrectly many times as a way to synchronize threads. If you have code that checks a variable for a specific value and you know that the value ca...Show More

09:05 | May 6th, 2016

Do it in place. What does that mean? This is a common expression for programmers and I’ll explain what it means and what the alternatives are. If the size of the data you’re working with is large compared to the memory available, then you just may no...Show More

09:06 | May 5th, 2016

What if you just want to limit how many things you can have or can be done? This episode will explain another side of the semaphore sometimes called a counting semaphore. When you’re using semaphores, you have a way to wait on the availability of som...Show More

13:26 | May 4th, 2016

Semaphores are often confused and characterized as just a more general form of a mutex. There’s actually some big differences though. I’m also going to explain some differences between the simple lock of the last episode and a mutex. Because you can ...Show More

13:29 | May 3rd, 2016

This episode dives deep into locks. How do they work? And then explains how you can use this to implement a reader-writer lock. A basic lock can be created with the “set and test” instruction. This works by reading a current memory value, setting it ...Show More

09:52 | May 2nd, 2016

If you’re not careful, you can cause a processor to come to an immediate and full stop while it waits for data to move around in memory. That’s probably not the performance boost you were looking for. In order to avoid these delays, you need to be aw...Show More

06:41 | Apr 29th, 2016

Do you get more value out of articles, videos, or podcasts? The question of value comes down to three aspects: What are you doing and what’s your immediate surroundings? Certain tasks are just better suited for different formats. What’s the topic? A...Show More

08:33 | Apr 28th, 2016

How do you assign work to threads? This episode explains several ways you can think about this and when to use them. You’ll learn about the following four ways to divide work to be done by your threads: When you have small work items arriving at dif...Show More

08:32 | Apr 27th, 2016

There’s more to working with multithreading than locking code and avoiding deadlocks. You also need to know how to synchronize activities. It’s not so hard once you understand. Events are objects that you can create and wait on from one thread while ...Show More

10:22 | Apr 26th, 2016

The design decisions you make affect not only how well you can maintain your code but also how well others can use your code. Multithreading adds a new dimension to your designs and I’ll give you some of my thoughts in this episode. The example class...Show More

11:03 | Apr 25th, 2016

Deadlocks are another common problem with multithreading. I’ll explain how you can get into this situation and how to change your code to avoid the problem. This is a case where diagnosis is a lot harder than the cure. You have two options. Change h...Show More

08:39 | Apr 22nd, 2016

What makes a good personal programming side project? I love side projects. Just listen to my sponsor message where I’ve been saying many times now that you need to start programming. You absolutely need to form a simple plan, start working on it, and...Show More

13:06 | Apr 21st, 2016

Anytime a thread tries to access some memory or resource that another thread can change, you have a race condition. There is no winner for this kind of race. The whole application will lose. This episode describes first explains what a race condition...Show More

09:49 | Apr 20th, 2016

Do you know when to use multithreading? What are the advantages and disadvantages? This episode continues what will likely be several more episodes devoted to multithreading. Listen to this episode to learn about the following four reasons to use mul...Show More

10:37 | Apr 19th, 2016

There are several ways to make better use of the capabilities of your computer. Multiple threads allow your application to perform multiple things at the same time. With this power comes a lot of responsibility and you should also realize that it’s n...Show More

10:41 | Apr 18th, 2016

Whenever your application has several things to do, you need to figure out how to schedule those things. This episode explains a common technique called a round robin that gives everything a fair share. Let’s say that you have multiple tasks you want...Show More

08:32 | Apr 15th, 2016

After working 8 hours, how can I learn to program in the evening? The most important point and the one thing you should remember above all the other suggestions is the power of consistent progress. It doesn’t matter how much. You just have to be stea...Show More

11:34 | Apr 14th, 2016

The object pool behavioral pattern allows you to reuse objects instead of destroying them and creating them again. This design pattern helps solve two big problems that applications encounter with managing memory especially over a long period of time...Show More

11:29 | Apr 13th, 2016

The dirty flag behavioral pattern allows you to avoid expensive operations that would just need to be done again anyway. This is a simple pattern that really just explains how to add a bool value to your class that you can set anytime a property chan...Show More

11:50 | Apr 12th, 2016

The service locator behavioral pattern allows you to make use of an interface without knowing what class implements the interface. This design pattern shares many aspects with the factory creational pattern. Both patterns allow you to use an interfac...Show More

14:55 | Apr 11th, 2016

The event queue behavioral pattern allows you to keep track of work that needs to be done and let some other code actually perform the task. You get several benefits from this pattern: Code that has an interesting event doesn’t need to wait for any ...Show More

08:16 | Apr 8th, 2016

Can I learn programming if I’m stupid? I thought this was a really powerful question that I found online. Maybe because I’m able to relate to it so much. I share with you a couple personal stories in this episode from a time when I was firmly in the ...Show More

12:41 | Apr 7th, 2016

The component behavioral pattern allows you to add just the features to your objects that are needed and keep the features independent of each other. The episode describes an example of how best to deal with an adventure game hero class. Instead of t...Show More

10:25 | Apr 6th, 2016

The subclass method behavioral pattern allows many different subclasses to define their own behavior while reusing common functionality from the base class. This is a simple pattern with a subtle intent and usage. It’s very much the opposite of the t...Show More

11:50 | Apr 5th, 2016

The update method behavioral pattern works with the previous game loop pattern and lets you manage the behavior of multiple game characters. If you’re building a game that has a fixed number of game elements or at least a fixed number at the start of...Show More

15:46 | Apr 4th, 2016

The game loop behavioral pattern is essential in games and simulations to make the actions proceed at the proper speed regardless of what the user is doing or how fast the computer is. A game loop will repeatedly do the following three things: Check...Show More

11:09 | Apr 1st, 2016

How do you make a design easy to understand? A lot of people probably think that in order for something to be easily understandable, it needs to be simple. And sure, while simplicity is always nice, I don’t think it’s required for understanding your ...Show More

11:05 | Mar 31st, 2016

The double buffer behavioral pattern allows multiple changes to all appear to occur at the same time. This is a simple pattern that’s used anytime you need not just synchronization between readers of information and writers of that same information b...Show More

12:06 | Mar 30th, 2016

The visitor behavioral pattern allows you to perform actions on a collection of different types where the actions depend on the types. This pattern represents an operation that can be performed on a collection of objects and allows new operations to ...Show More

11:46 | Mar 29th, 2016

The template behavioral pattern allows your derived classes to change certain aspects of the base class behavior without needing to rewrite everything. This design pattern is great when you have a complicated set of steps that the base class provides...Show More

10:02 | Mar 28th, 2016

The strategy behavioral pattern allows you to define multiple ways to perform some action and then select the best approach. This pattern has some similarities to the previous state design pattern. Both patterns describe how to change behavior. But t...Show More

09:53 | Mar 25th, 2016

What is identity? This episode describes identity and authentication. Authentication is the process you go through to prove your identity and there are several ways you can do this. It’s often confused with authorization but they’re different things ...Show More

08:21 | Mar 24th, 2016

The state behavioral pattern allows you to simplify your code when you have different modes of operation. This is really just a specific application of polymorphism. You have a class that needs to performs some action in one of several different ways...Show More

11:55 | Mar 23rd, 2016

The observer behavioral pattern allows you to be notified of any changes instead of constantly checking. You’ll almost certainly have many different objects in your application that all use some common information. If this is a financial application,...Show More

08:20 | Mar 22nd, 2016

The memento behavioral pattern allows you to save and later restore the state of an object even without full access to all properties. You can use this pattern to save an object’s state so you can possibly restore the object at some later time back t...Show More

09:58 | Mar 21st, 2016

The mediator behavioral pattern allows you to define complex object interactions while still keeping each object simple and unaware of the other objects. Just open any user interface dialog box and notice how some controls become disabled when the st...Show More

06:13 | Mar 18th, 2016

How much programming do you need to know before you can call yourself a programmer? Some professions have clear guidelines and rules for entry. The most famous of these is probably the bar exam for lawyers. Software is getting there and maybe some da...Show More

09:52 | Mar 17th, 2016

The iterator behavioral pattern allows you to access objects in a collection or anything that contains multiple items without worrying about how this is done. The collection is sometimes referred to as an aggregate because it bundles multiple objects...Show More

08:30 | Mar 16th, 2016

The interpreter behavioral pattern allows you to solve common problems by expressing those problems in a simple language. You first need enough problems to make this pattern worthwhile. And this pattern is great for allowing other people to contribut...Show More

10:47 | Mar 15th, 2016

The command behavioral pattern allows you to represent an action that you want to perform as an object that can be copied from place to place and performed at a later time if you want. You start by creating an abstract class called Command with a met...Show More

08:21 | Mar 14th, 2016

The chain of responsibility behavioral pattern allows you to setup a series of possible results that you can initiate from a single location without worrying about what code will provide the result. Usually this pattern describes a single outcome but...Show More

09:25 | Mar 11th, 2016

Why are universities still teaching bubble sort? There’s always some value in learning things and maybe the bubble sort could be a historical lesson. The problem is that it’s not always presented like that. It’s often presented as a simple sorting al...Show More

09:24 | Mar 10th, 2016

The proxy structural pattern introduces another object that your code uses instead of the actual object. This might seem pointless but there are some good reasons why you might consider this. Most design pattern references list four reasons why you m...Show More