Different programming languages employ different memory management techniques. The most common are manual memory management, tracing garbage collectors, and reference counting. For the programmer, each of these techniques requires different levels of bookkeeping and causes a different trade-off between safety and performance. In this episode, we explain each of these memory management techniques and why a programmer may pick one over another. Show Notes Episode 35: The C Programming Language Epi...
Jan 09, 2023•13 min•Ep. 109
Mozilla is the entity that makes the Firefox web browser. It has an interesting corporate structure. The non-profit Mozilla Foundation has a for-profit subsidiary that does Firefox development. Much of Mozilla's revenue comes from an agreement with Google to be the default search engine within Firefox. In this episode we explore this arrangement and the scale of Google's payment with regards to the rest of Mozilla's finances. Show Notes Episode 24: The Browser Wars Mozilla Foundation and Subsidi...
Dec 26, 2022•10 min•Ep. 108
In the late 1990s, the open source software movement split from the free software movement. A rebranding, the open source movement has a less philosophical, or some may say moral, focus than the free software movement. Despite this, 99.9% of open source software is also free software according to their respective official definitions. In this episode we discuss the differences between the free software movement and the open source software movement. Show Notes Episode 12: Open Source Software Wh...
Dec 12, 2022•14 min•Ep. 107
Cross-platform mobile frameworks enable developers to write an app once and recompile it for both iOS and Android. This can reduce development costs, but there are some downsides. In this episode we discuss the differences between major cross-platform mobile frameworks and weigh their pros and cons. Show Notes Episode 104: Web Apps vs. Native Apps Episode 99: Android App Development Episode 9: What Does it Take to Make an App? Follow us on Twitter @KopecExplains . Theme “Place on Fire” Copyright...
Nov 28, 2022•17 min•Ep. 106
On January 19, 2038, certain non-updated legacy systems that use Unix time will roll their dates around to December 13, 1901. In Unix, time is recorded as the number of seconds since January 1, 1970. Because a signed 32-bit integer is used to record this value on many legacy systems, they will run out of seconds in 2038 (a signed 32-bit integer can record numbers up to 2,147,483,647, and that's the number of seconds between January 1 1970 at 12:00:00 AM and January 19, 2038 at 3:14:07 AM). Many ...
Nov 14, 2022•9 min•Ep. 105
When planning the development of a new app, one of the most basic questions to answer is whether to develop it as a Web app or as a native app. In this episode we delineate some of the pros and cons of each approach, including cost, accessibility, performance, capabilities, and more. We also discuss some alternatives like hybrid apps and cross-platform frameworks. Show Notes Episode 4: iOS vs. Android Episode 6: How does the Web work? Episode 59: What is HTML and CSS? Episode 60: What is JavaScr...
Oct 31, 2022•22 min•Ep. 104
Expert systems are a sub-discipline within artificial intelligence concerned with creating problem solving programs based on machine-encoded human domain expertise. An expert system typically consists of a knowledge base, consisting of human-defined rules, and an inference engine that can run a problem through the rules. Expert systems were a very popular and successful area of AI research in the 1970s and 1980s, but fell out of favor in the 1990s during the so-called "AI winter." Today, most of...
Oct 17, 2022•18 min•Ep. 103
The PDF (Portable Document Format) file format has become ubiquitous in the computing world. PDF is a super format that can embed vector graphics, advanced typography, bitmap graphics, multiple compression technologies, fonts, encryption, interactive elements, and more. It is primarily used for creating documents that display exactly as they looked at creation on any machine. They are great for producing perfectly formatted documents for sharing, or for sending to a professional printer. Print s...
Oct 03, 2022•13 min•Ep. 102
It is important to make software that is usable by all people, and that includes users with physical or mental challenges. Accessibility is about removing barriers, so that software can be used by everyone. In this episode we give a brief overview of accessibility in software. We emphasize the role that common sense good design plays, and explain how accessibility-aware developers can tap into operating system frameworks to make their software compatible with built-in device accessibility featur...
Sep 19, 2022•13 min•Ep. 101
When it was released, the World Wide Web revolutionized communications and commerce. It was created by Tim Berners-Lee, who outlined its key technical achievements, philosophy, and insights in his 2000 book Weaving the Web . In this episode, we go over three of the key innovations explained in the book: networked hypertext, the URI, and decentralization. We also discuss one innovation that did not quite make it—a browser that was also an editor. For this episode, we assume listeners already hear...
Sep 05, 2022•13 min•Ep. 100
Android is the most popular operating system in the world, but developing apps for it can feel intimidating. In this episode we breakdown the Android development ecosystem—including the programming languages, frameworks, testing environments, and more. We approach the episode from the perspective of someone new to learning Android app development, but we also compare and contrast Android development with iOS development. Show Notes Episode 44: Google v. Oracle Android Programming: The Big Nerd R...
Aug 22, 2022•22 min•Ep. 99
It has long been debated whether Apple is more of a hardware company or more of a software company. In its quarterly reports it does not delineate between the two. Instead, it breaks its revenue into four big product categories and services. It cannot be pigeon-holed—it is a fusion of hardware, software, and services. Growth in services, in particular, has been a major focus of the company for the past decade and now accounts for almost a quarter of its revenue. In this episode we get into the d...
Aug 08, 2022•13 min•Ep. 98
An Application Programming Interface (API) is a specification for how a piece of software provides functionality to other pieces of software. APIs can broadly be categorized into two categories: local and remote. Local APIs are provided by libraries from the operating system vendor or third parties. Remote APIs are specifications for how software on one computer can provide functionality to software on another computer, typically across the Internet. Today, remote APIs are almost all web service...
Jul 25, 2022•17 min•Ep. 97
A BIOS (Basic Input/Output System) is a piece of firmware on a PC that sits between the hardware and the operating system. It takes care of some essential functions like hardware startup tests, power management, boot device order, and control of microprocessor support chips. The original firmware on IBM PCs and PC compatibles was called the "BIOS", but most PCs manufactured in the last decade use a newer standard known as UEFI for their firmware. However, the term BIOS is still used generically ...
Jul 11, 2022•14 min•Ep. 96
The world of data stores has become complex and fragmented. Companies find their data spread across a variety of sources with no obvious way to integrate it. Estuary is a startup that is taming that complexity by making it easier to create real-time data pipelines. In this episode we speak with Johnny Graettinger, the co-founder of Estuary, about data fragmentation, DataOps, data pipelines, and their product, Flow. Show Notes Estuary Estuary on Twitter Estuary on GitHub Follow us on Twitter @Kop...
Jun 27, 2022•33 min•Ep. 95
There is a constant battle between software publishers and pirates who find ways to redistribute proprietary software in violation of its license. In this episode we explain how copyright law protects proprietary software, the mechanisms publishers employ to reduce piracy including forms of DRM, and the means pirates use to distribute software. We also have a philosophical discussion about whether software piracy is wrong. Show Notes Hot Property: The Stealing of Ideas in an Age of Globalization...
Jun 13, 2022•17 min•Ep. 94
Your phone includes multiple technologies for tracking your location. Your location can be triangulated via signals to cell towers, precisely pinpointed using its GPS chip and a connection to a satellite, and approximated using WiFi signals and a big database of WiFi base station locations. In addition, an Indoor Positioning System like iBeacon can be used to track your phone inside a building. In this episode we explain the tradeoffs between these various methods and how they're typically used....
May 30, 2022•13 min•Ep. 93
By several measures, including a 2021 survey by IEEE, Python is the most popular programming language in the world. But why? What's special about it? In this episode we'll go over Python's history, key technical aspects of the language, and the niches within software development that it dominates. We also discuss some problems in the Python world. Show Notes Episode 11: What is a Programming Language? Episode 87: Compilers and Interpreters Episode 35: The C Programming Language Top Programming L...
May 16, 2022•15 min•Ep. 92
Today we know PayPal as a financial powerhouse. But when it was a young company, it had to innovate to survive. PayPal was the result of the merger of two startups—Confinity and X.com . Confinity was trying to be a digital payments solution for Palm Pilots, while X.com was an early online bank. PayPal first found success as a conduit for eBay payments. But perhaps PayPal's greatest innovations were in the area of fraud prevention. PayPal was a pioneer of bank account verification, CAPTCHAs, and ...
May 02, 2022•10 min•Ep. 91
Binary search is an algorithm for finding an item in a sorted data set. It requires that all of the items in the data set be of the same data type and comparable to one another. In other words, the data type needs to have a defined "order." Binary search is orders of magnitude more efficient than its chief alternative, linear search, which is just an in-order search of every item in a data set. Binary search works by continuously reducing the search space by half. A binary search can find an ite...
Apr 18, 2022•17 min•Ep. 90
Every modern smartphone and tablet uses a multi-touch user interface. Multi-touch is a relatively recent phenomenon. While the earliest research into multi-touch took place in the 1960s and 1970s, it wasn't until Wayne Westerman and Fingerworks in the early '00s that the first modern multi-touch device was created. And it took the iPhone in 2007 to make it mainstream. In this episode we explain where the technology for multi-touch came from and how it has changed the design of software. Show Not...
Apr 04, 2022•13 min•Ep. 89
Human-Computer Interaction is a discipline at the intersection of computer science, psychology, and design. It's about making ergonomic interfaces that sit at the border between the human and the machine. In this episode we explain the field's history, what research in it entails, and its place alongside other disciplines. By the end of the episode you'll gain a general understanding of what HCI is. Show Notes Episode 21: How Have UIs Evolved? Human-Computer Interaction: An Empirical Research Pe...
Mar 21, 2022•20 min•Ep. 88
A compiler is a program that takes source code written in a programming language and converts it into machine code that a microprocessor can understand. Compilers are sophisticated programs composed of several different phases including (but not limited to) tokenization, parsing, and machine code generation. In this episode we breakdown why compilers are important, how they work, and how they differ from interpreters. We also explain tangential topics like just-in-time compilers and transpilers....
Mar 07, 2022•25 min•Ep. 87
Tim Howes is a software executive, entrepreneur, investor, and computer scientist who has been at the forefront of many of the most important waves in the technology industry since the 1990s. During his PhD work in computer science, Howes co-created the Lightweight Directory Access Protocol (LDAP), which has become the industry standard means of managing directory information services. In the late 1990s he worked at Netscape on the server side of their business. After Netscape was acquired by AO...
Feb 21, 2022•43 min•Ep. 86
Are your messages secure? End-to-end encryption protects messages and data from being viewed by anyone but their intended recipients. However, systems that implement end-to-end encryption also prevent law enforcement from intercepting the messages of criminals. In this episode we explain end-to-end encryption and the debate surrounding it as the UK government works to prevent its implementation on Facebook. We suggest first listening to our previous episode on encryption (linked below) if you ar...
Feb 07, 2022•21 min•Ep. 85
Blockchain may be one of the biggest tech buzzwords of the decade. But it's not as complicated as you may fear. Pieces of data, blocks, that follow one another chronologically are connected (the chain part) via cryptographic hashes. Each block has a cryptographic hash of the previous block, providing the ability to verify the validity of the chain. We explain the only tricky part of that description, the cryptographic hash function, and also explain why blockchain is only part of the underlying ...
Jan 24, 2022•Ep. 84
When the iPhone came out in 2007, it totally transformed the mobile industry. But what was so revolutionary about the software in even its first version? For the 15th anniversary of the announcement of the iPhone we talk about the three aspects of the original iPhone's software that set it apart from the smartphones that came before it: its robust operating system, its multi-touch user interface, and the App Store, which arrived 1 year later. We note that it wasn't necessarily the first in all o...
Jan 10, 2022•10 min•Ep. 83
Cookies are primarily used on the Web for two things: authentication and tracking. Although alternatives exist, cookies are the most popular way to provide some state for the stateless HTTP protocol. In this episode we explain what cookies are, how they work, the origin of cookies, applications of cookies, which browsers block "bad" cookies to protect your privacy, first-party versus third-party cookies, and why you need to click those popups about cookies on almost every website you visit. Show...
Jan 03, 2022•18 min•Ep. 82
Software runs on hardware. And of course, hardware has gotten faster over the past few decades by orders of magnitude. So, clearly our software is getting faster. But what do we mean by faster? And why doesn't it always "feel" like it's getting faster? In this episode we explore the underlying factors that sometimes make modern software feel slower, despite actually being faster. Show Notes Computer latency: 1977-2017 via Dan Luu Follow us on Twitter @KopecExplains . Theme “Place on Fire” Copyri...
Dec 27, 2021•14 min•Ep. 81
Almost every large piece of software creates log files. Log files record events that happen during the execution of a program. These could be significant routine events or errors. Logs help software developers fix issues. Last week a significant vulnerability was discovered in Log4J, one of the most popular logging libraries. In this episode we explain logging and why the vulnerability was such a big deal. Show Notes Episode 12: Open Source Software Follow us on Twitter @KopecExplains . Theme “P...
Dec 20, 2021•14 min•Ep. 80