Relational Databases Made Simple
๐ **Source:** [Relational Databases Made Simple](https://www.youtube.com/watch?v=0ZF1dPMT_rA)
> [!note]+ Document Notes
> tags: [database, php, relational-database]
> author: Scott Keckwarren
> source: PHP Architect
> reference: https://www.youtube.com/watch?v=0ZF1dPMT_rA
> date created: 2024-12-20 10:30
>
> # ๐ท๏ธ Title: Relational Databases Made Simple
>
<!-- deep-read:sections start -->
## ๐งฐ Action Inbox
- [H1] Review database schema constraints โ enforce data validation at DB level #database
- [H2] Implement proper foreign key relationships โ maintain referential integrity #schema
- [H3] Understand ACID properties for transactions โ ensure data consistency #transactions
## ๐งญ Table of Contents
- [๐ Summary](#-summary)
- [๐ Main Content](#-main-content)
- [๐๏ธ Notes](#๏ธ-notes)
- [๐ References](#-references)
- [๐ฃ๏ธ Paraphrase](#๏ธ-paraphrase)
- [๐ฐ Newsletter](#-newsletter)
- [โ
Action Items](#-action-items)
- [๐งช Hypotheses](#-hypotheses)
- [๐ Methodology](#-methodology)
- [โ Questions](#-questions)
- [๐ฎ Future Research](#-future-research)
- [๐ก Implications](#-implications)
- [๐ง Learning Styles Assessment](#-learning-styles-assessment)
- [๐ Accessibility Assessment](#-accessibility-assessment)
- [๐ DEIB Assessment](#-deib-assessment)
- [โ
Logical Validity](#-logical-validity)
- [๐ก๏ธ DARVO Analysis](#-darvo-analysis)
- [๐ฏ Conclusion](#-conclusion)
### ๐ References
- [PHP Architect YouTube Channel](https://www.youtube.com/channel/UCXR7sGkW_8XJ-jQ7GjkM8Bw)
- [PHP Score Technical Debt Tool](https://phpscore.com)
## ๐ Summary
- What happened: PHP Architect provides a practical introduction to relational databases for PHP developers
- Why it matters: Understanding databases improves developer value and reduces bugs in web applications
- Key stakeholders: PHP developers working with MySQL, PostgreSQL, and other relational databases
- Risks and tradeoffs: Database constraints can prevent invalid data but may slow development if not well understood
- Bottom line: Relational databases organize data in tables with relationships, use SQL for queries, and provide ACID guarantees for data integrity
## ๐ Main Content
Relational databases are foundational technology for PHP web applications, organizing data into named tables with rows and columns. The "relational" aspect refers to relationships between tables, not relationships between data entities. These databases use Structured Query Language (SQL) for interaction and provide ACID guarantees (Atomicity, Consistency, Isolation, Durability) for transaction integrity.
Key components include database servers containing multiple databases, which hold tables, views, and stored procedures. Tables have fixed column structures but unlimited rows, with each column having a name, type, and optional constraints. Primary keys uniquely identify rows, while foreign keys express relationships between tables and maintain referential integrity.
The ACID model ensures reliable transactions: Atomicity makes transactions all-or-nothing, Consistency maintains valid database states, Isolation prevents concurrent transaction interference, and Durability persists committed changes. Data types define column value restrictions, while constraints like NOT NULL, UNIQUE, and foreign keys enforce business rules at the database level rather than relying solely on application code.
## ๐๏ธ Notes
#### โฑ๏ธ [00:00](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=0) โ [H1] Introduction to Relational Databases
- Key idea: Relational databases are unseen workhorses of technology stacks that organize data systematically
- Evidence: "If you're building web apps with PHP, you're almost certainly using a relational database"
#### โฑ๏ธ [01:15](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=75) โ [H2] Database Structure and Vocabulary
- Key idea: Database servers contain databases which hold tables, views, and stored procedures
- Evidence: "Database servers contain one or more databases. And databases are just containers to hold various objects"
#### โฑ๏ธ [02:00](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=120) โ [H2] Tables, Columns and Rows
- Key idea: Tables are like spreadsheets but with fixed columns and unlimited rows for structured data storage
- Evidence: "You can think of a table like a spreadsheet... a table has a name, a fixed set of columns"
#### โฑ๏ธ [02:45](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=165) โ [H2] SQL Query Language
- Key idea: SQL is a powerful text-based language for database interaction from creation to complex queries
- Evidence: "Most relational databases use a textbased query language called structured query language"
#### โฑ๏ธ [03:30](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=210) โ [H1] Primary Keys and Foreign Keys
- Key idea: Primary keys uniquely identify rows while foreign keys express relationships between tables
- Evidence: "A primary key uniquely identifies a row within the table... A foreign key is a column in one table that references a column"
#### โฑ๏ธ [04:15](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=255) โ [H2] Referential Integrity
- Key idea: Foreign keys maintain data consistency by ensuring referenced records exist
- Evidence: "enforcing this foreign key maintains referential integrity, so you don't end up with posts that point to non-existent users"
#### โฑ๏ธ [05:30](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=330) โ [H1] ACID Properties Introduction
- Key idea: ACID describes important guarantees that relational databases provide for reliable transactions
- Evidence: "ACID stands for automacy, consistency, isolation, and durability"
#### โฑ๏ธ [06:00](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=360) โ [H2] Atomicity Explained
- Key idea: Transactions are all-or-nothing operations that roll back completely if any step fails
- Evidence: "Autom says that a transaction is an all oro thing. If one step fails, the whole transaction is rolled back"
#### โฑ๏ธ [06:30](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=390) โ [H2] Consistency and Isolation
- Key idea: Database maintains valid states and prevents concurrent transaction interference
- Evidence: "Consistency says that transactions make sure the database ends up in a valid state... Isolation says that concurrent transactions won't interfere"
#### โฑ๏ธ [07:00](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=420) โ [H2] Durability and Practical Examples
- Key idea: Committed changes persist even through crashes, enabling safe multi-step operations like money transfers
- Evidence: "durability says that once a transaction is committed, its changes persist even if the database crashes"
#### โฑ๏ธ [08:00](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=480) โ [H1] Data Types and Constraints
- Key idea: Data types define allowed values while constraints enforce business rules at the database level
- Evidence: "Data types define what kind of values a column can hold and constraints restrict those values"
#### โฑ๏ธ [08:45](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=525) โ [H2] Common Data Types
- Key idea: Database types include numeric, text, datetime, boolean, binary, and UUID categories
- Evidence: "Common database categories include numeric, text, datetime, boolean, binary, and even UUID"
#### โฑ๏ธ [09:15](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=555) โ [H2] Database-Level Validation
- Key idea: Database constraints provide consistent enforcement regardless of how data enters the system
- Evidence: "Constraints are powerful because the database does the enforcement for you rather than relying solely on application code"
#### โฑ๏ธ [10:00](https://www.youtube.com/watch?v=0ZF1dPMT_rA&t=600) โ [H2] Summary and Recap
- Key idea: Relational databases organize data in tables using types and constraints for consistency
- Evidence: "We use types to define the shape of our data and constraints to enforce data consistency"
## ๐ References
- [PHP Architect YouTube Channel](https://www.youtube.com/channel/UCXR7sGkW_8XJ-jQ7GjkM8Bw)
- [MySQL Documentation](https://dev.mysql.com/doc/)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
## ๐ฃ๏ธ Paraphrase
- Relational databases store information in interconnected tables with rows and columns, using relationships between tables to model complex business data in a structured way
- ACID properties guarantee that database transactions are reliable through atomicity (all-or-nothing), consistency (valid states), isolation (no interference), and durability (persistent changes)
- Database constraints like primary keys, foreign keys, and data types enforce business rules automatically, providing more reliable data validation than application-level code alone
## ๐ฐ Newsletter
Understanding relational databases is crucial for PHP developers working with modern web applications. This foundational technology organizes your data into tables with defined relationships, ensuring consistency and reliability through ACID properties.
Key benefits include automatic data validation through constraints, referential integrity through foreign keys, and transaction safety for multi-step operations. Whether you're using MySQL, PostgreSQL, or another SQL database, these core concepts remain consistent.
Practical applications include user management systems, e-commerce platforms, and content management where data relationships are critical. By leveraging database-level constraints instead of relying solely on application validation, you can prevent data inconsistencies and reduce bugs.
Resources: [Learn WordPress](https://learn.wordpress.org/), [Developer Docs](https://developer.wordpress.org/), [WP-CLI](https://wp-cli.org/)
## โ
Action Items
#### DevRel
- Developer education: Create database fundamentals workshop covering ACID properties and constraints
- Documentation: Develop SQL best practices guide for PHP developers
- Community engagement: Host database design office hours for developers
#### WordPress
- Core: Review database schema constraints for improved data integrity
- Documentation: Update database interaction guides in developer documentation
- Training: Develop database fundamentals lesson plans for WordPress developers
## ๐งช Hypotheses
- Developers who understand database constraints write more reliable applications with fewer data integrity bugs
- Applications using proper foreign key relationships have better data consistency and easier maintenance
- Teams that implement database-level validation have fewer production data issues than those relying only on application validation
- Proper understanding of ACID properties leads to better transaction design in financial and e-commerce applications
### ๐ Methodology
- Survey PHP developers on database knowledge vs bug frequency correlation
- A/B test applications with and without proper database constraints
- Performance analysis of database-level vs application-level validation approaches
### โ Questions
- How do different database engines implement ACID properties and what are the performance implications?
- What are the best practices for database schema migration in production environments?
- How can developers balance database constraints with application flexibility and rapid development?
### ๐ฎ Future Research
- Investigation into NoSQL vs relational database trade-offs for modern PHP applications
- Analysis of database performance optimization strategies for high-traffic web applications
- Exploration of distributed database systems and their ACID guarantees
### ๐ก Implications
- Practice: Developers should implement database constraints for automatic validation rather than relying solely on application code
- Policy: Database schema design should be included in code review processes
- Security: Proper foreign key relationships prevent orphaned data and potential security vulnerabilities
- Education: Database fundamentals should be emphasized in PHP developer training programs
- Performance: Understanding database internals helps developers write more efficient queries and schema designs
### ๐ง Learning Styles Assessment
Reading level estimate: Grade 10-12
#### ๐ Visual learners
- Present: Table diagrams and relationship visualizations throughout video
- Improve: Entity-relationship diagrams, database schema flowcharts
#### ๐ Aural learners
- Present: Clear verbal explanations with examples
- Improve: Audio summary of key concepts, pronunciation guide for technical terms
#### ๐ฃ๏ธ Verbal learners
- Present: Good use of analogies (spreadsheet comparison), defined terminology
- Improve: More real-world analogies, glossary of database terms
#### ๐งฉ Kinesthetic learners
- Present: SQL examples and code snippets shown
- Improve: Hands-on database creation tutorial, interactive SQL exercises
#### ๐ง Logical learners
- Present: Step-by-step progression from basic to complex concepts
- Improve: Decision trees for choosing data types, constraint flowcharts
#### ๐งโ๐คโ๐ง Social learners
- Present: YouTube comments enable discussion
- Improve: Database design collaboration exercises, peer code review examples
#### ๐งโโ๏ธ Solitary learners
- Present: Self-contained explanations, recap sections
- Improve: Self-assessment quiz, reflection questions about current database practices
#### ๐ฟ Naturalistic learners
- Present: Organizational analogies for database structure
- Improve: Ecosystem metaphors for database relationships, growth patterns
### ๐ Accessibility Assessment
#### Screen reader semantics
- Present: Video has clear verbal content structure
- Improve: Detailed alt text for code examples, chapter markers
#### Keyboard navigation
- Present: Standard YouTube controls accessible
- Improve: Timestamped navigation links
#### Contrast and readability
- Present: Clear code examples with good contrast
- Improve: High contrast mode for code snippets
#### Text resizing and reflow
- Present: YouTube player supports zoom
- Improve: Separate accessible transcript page
#### Media and captions
- Present: Auto-generated captions available
- Improve: Professional captions, downloadable transcript
#### Forms and interactions
- Present: Standard YouTube interface
- Improve: Accessible code example interactions
### ๐ DEIB Assessment
#### Cultural breadth
- Present: Universal database concepts applicable globally
- Improve: Examples from different cultural contexts, international SQL standards
#### Inclusive language
- Present: Gender-neutral technical explanations
- Improve: Plain language alternatives for jargon terms
#### Neurodiversity support
- Present: Well-structured content progression
- Improve: Content chunks with clear breaks, visual aids for concepts
#### Representation
- Present: Focuses on technical content without exclusionary examples
- Improve: Diverse use cases and application examples
#### Psychological safety
- Present: Non-judgmental tone about current knowledge levels
- Improve: Explicit encouragement for beginners, learning resource recommendations
### โ
Logical Validity
#### Strong reasoning
- Deductive strength: Clear progression from database components to relationships to constraints
- Inductive strength: Good use of specific examples (user tables, money transfers) to illustrate general principles
- Causal reasoning: Well-explained cause-and-effect relationships between constraints and data integrity
- Analogical strength: Effective spreadsheet analogy for table concepts
#### Fallacies
- Minor appeal to authority: Relying on database vendor documentation without critical evaluation
- Slight hasty generalization: "Most web apps" claim about default settings without specific data
#### Tone of voice
- Overall tone: Educational, accessible, encouraging with practical focus on PHP developer needs
### ๐ก๏ธ DARVO Analysis
- Deny: No denials or defensiveness present
- Attack: No attacks on alternative approaches or critics
- Reverse victim/offender: No victim/offender dynamics present
- Emotional cues and rhetoric: Positive, educational tone focused on empowerment rather than manipulation
## ๐ฏ Conclusion
Relational databases provide essential data organization and integrity guarantees for PHP applications through tables, relationships, and ACID properties. Understanding primary keys, foreign keys, and database constraints enables developers to build more reliable applications with automatic data validation. The key takeaway is that database-level enforcement of business rules provides more consistent data integrity than application-only validation, making developers more effective and reducing production bugs.
## ๐งฑ Refactor Appendix
### ๐ Literature Split Pad
### [H1] ACID properties ensure transaction reliability through atomicity, consistency, isolation, and durability
> [!quote] [Relational Databases Made Simple](https://www.youtube.com/watch?v=0ZF1dPMT_rA) by [[Scott Keckwar
---
## Full Transcript
[00:01] [music]<br>[00:05] If you're building web apps with PHP,<br>[00:06] you're almost certainly using a<br>[00:08] relational database. Even if you call it<br>[00:09] MySQL or Postgress or rarely even think<br>[00:12] about it, relational databases can one<br>[00:14] being one of the unseen workh horses of<br>[00:16] our technology stack. But understanding<br>[00:19] them to a greater degree will improve<br>[00:20] your value as a developer and help<br>[00:22] reduce bugs and unexpected behavior.<br>[00:25] This video gives a practical<br>[00:26] introduction to what relational<br>[00:27] databases are, how they store data, and<br>[00:30] some of the building blocks you will<br>[00:31] encounter every day and the guarantees<br>[00:33] that they try to provide. Hello<br>[00:35] developers and welcome to the PHP<br>[00:36] Architect YouTube channel. If this is<br>[00:38] your first time here, my name is Scott<br>[00:39] Kekwar. On this channel, we discuss a<br>[00:40] wide variety of topics related to the<br>[00:42] PHP ecosystem. Make sure you subscribe<br>[00:44] so you can get our latest videos as<br>[00:46] they're published. A relational database<br>[00:47] organizes data into named tables made of<br>[00:50] rows and columns and uses relationships<br>[00:52] between those tables to model complex<br>[00:55] domain specific information in a<br>[00:57] structured consistent way. The<br>[00:59] relational part just means that data is<br>[01:01] represented in relations which we<br>[01:03] visualize as tables. Now, as with most<br>[01:05] technology related topics, there's a lot<br>[01:07] of vocabulary that we have to keep track<br>[01:09] of. Database servers contain one or more<br>[01:11] databases. And databases are just<br>[01:13] containers to hold various objects like<br>[01:15] tables, views, and stored procedures.<br>[01:18] Don't worry if those terms are new.<br>[01:19] We'll we'll go over them. You can think<br>[01:21] of a table like a spreadsheet and that<br>[01:23] it contains columns and rows that can be<br>[01:25] used to store data. However, a table has<br>[01:27] a name, a fixed set of columns, but<br>[01:29] still allows any number of rows as long<br>[01:30] as we have enough storage for them.<br>[01:33] Tables group related data. So you might<br>[01:35] have a users or a posts or a comments<br>[01:37] table which all contain specific<br>[01:39] information about the entity that<br>[01:41] they're built to track. Columns will<br>[01:43] then define the shape of the data with<br>[01:45] each column having a name, a type, and<br>[01:47] an optional constraint. For example, our<br>[01:49] users table has the columns ID, email<br>[01:52] name, and created at rows then are<br>[01:55] individual records within the table. So<br>[01:57] each row in the users table represents<br>[01:59] one user and is referenced using<br>[02:01] something called a primary key. Most<br>[02:03] relational databases use a textbased<br>[02:05] query language called structured query<br>[02:07] language to interact with them. It's an<br>[02:09] extremely powerful query language and<br>[02:11] can do anything from creating databases<br>[02:13] and tables to performing complex<br>[02:14] retrieval operations. The SQL statement<br>[02:17] on the screen is what we can use to<br>[02:19] create our initial users table. Here<br>[02:21] users is the table with ID, email name<br>[02:24] and created at as the columns and each<br>[02:26] inserted record becomes a row. Primary<br>[02:29] keys and foreign keys are how relational<br>[02:31] databases express relationships between<br>[02:33] tables. A primary key uniquely<br>[02:35] identifies a row within the table. And<br>[02:37] specific choices are an auto<br>[02:38] incrementing integer or a universally<br>[02:41] unique ID. The database will use the<br>[02:43] primary key internally for indexing and<br>[02:45] lookups. And we'll use it for<br>[02:47] referencing specific rows inside of our<br>[02:49] application. For example, on a lot of<br>[02:51] sites, you might see a URL that says<br>[02:52] user one. The one in the URL is most<br>[02:56] likely the primary key of the user that<br>[02:58] you're trying to access. A foreign key<br>[03:01] is a column in one table that references<br>[03:03] a column, usually the primary key, of<br>[03:05] another table, and is used to express<br>[03:07] relationships. Because we have this<br>[03:09] defined, the database is going to make<br>[03:11] sure that the values in user ID match an<br>[03:15] existing ID value in our user's table.<br>[03:18] And if we delete a user, all of their<br>[03:20] associated posts will be deleted. And<br>[03:22] enforcing this foreign key maintains<br>[03:25] referential integrity, so you don't end<br>[03:26] up with posts that point to non-existent<br>[03:28] users. For our PHP application, when you<br>[03:31] join users and posts, the primary key<br>[03:33] and the foreign key will provide a fast<br>[03:35] and consistent way to match rows. Also,<br>[03:38] knowing where relationships exist help<br>[03:40] when writing migrations, seeding data,<br>[03:42] or implementing cascading deletes.<br>[03:45] Every app builds up technical debt over<br>[03:47] time. It's the unfortunate price that we<br>[03:48] pay for shipping new features and moving<br>[03:50] fast. When we build up too much of it<br>[03:52] though, it can start to impact how we<br>[03:54] work. Team velocity suffers. Bugs become<br>[03:56] more frequent and take longer to fix and<br>[03:58] everyone starts to get a little bit<br>[03:59] frustrated. The key to managing debt is<br>[04:01] to measure it. A credit score can help<br>[04:03] you understand how well you're managing<br>[04:05] your debt. And now there's a credit<br>[04:06] score for technical debt. Go to<br>[04:08] phpscore.com to get a free technical<br>[04:10] debt score and monitoring for all of<br>[04:12] your PHP applications today. Head over<br>[04:14] to phpsscore.com and get control over<br>[04:16] your technical debt.<br>[04:18] One of the acronyms that you're going to<br>[04:20] hear a lot about is ACID. It's an<br>[04:22] acronym that describes important<br>[04:23] guarantees that relational databases<br>[04:26] provide for transactions. Transactions<br>[04:29] are just a sequence of operations that<br>[04:30] should be treated as a single unit and<br>[04:32] are an extremely powerful part of<br>[04:34] relational databases. ACID stands for<br>[04:37] automacy, consistency, isolation, and<br>[04:39] durability. And each part breaks down as<br>[04:41] followed. Autom says that a transaction<br>[04:44] is an all oro thing. If one step fails,<br>[04:47] the whole transaction is rolled back. So<br>[04:49] your data is in a consistent state.<br>[04:51] Consistency says that transactions make<br>[04:52] sure the database ends up in a valid<br>[04:54] state at every point during the<br>[04:56] transaction, respecting all constraints,<br>[04:58] triggers, and rules as defined by your<br>[05:00] schema. Isolation says that concurrent<br>[05:02] transactions won't interfere in other<br>[05:04] ways that break their correctness. And<br>[05:06] durability says that once a transaction<br>[05:08] is committed, its changes persist even<br>[05:10] if the database crashes. In practice,<br>[05:12] these guarantees mean that you can<br>[05:13] perform multi-step changes safely. The<br>[05:16] most common example is always<br>[05:17] transferring money between accounts,<br>[05:19] which requires subtracting from one<br>[05:20] account and adding it to another. Both<br>[05:22] steps must succeed or neither should be<br>[05:24] applied. Now, keep in mind the asset is<br>[05:26] a model and the exact behavior depends<br>[05:28] upon the database engine, its<br>[05:30] configuration, and isolation levels. For<br>[05:32] most web apps, the default settings<br>[05:34] provided guarantees that you need. If<br>[05:36] you started doing distributed<br>[05:37] transactions or high concurrency<br>[05:39] financial processing, you will need to<br>[05:41] dig a little deeper. Data types define<br>[05:43] what kind of values a column can hold<br>[05:45] and constraints restrict those values so<br>[05:47] the database can enforce rules for you.<br>[05:49] Common database categories include<br>[05:51] numeric, text, datetime, boolean,<br>[05:53] binary, and even UUID. Annoyingly, these<br>[05:56] types aren't always consistent across<br>[05:58] SQL database variants. So depending on<br>[06:00] what you're using, you should refer to<br>[06:02] the database vendor's documentation.<br>[06:04] Constraints that you might commonly use<br>[06:06] are not null, which makes sure that a<br>[06:08] column has a value, unique, which<br>[06:10] enforces uniqueness across rows, a<br>[06:12] primary or a foreign key, which defines<br>[06:15] uniqueness or referential integrity<br>[06:18] between tables, and then a default value<br>[06:20] if none is provided. On the screen is an<br>[06:22] example of a products table that<br>[06:24] contains some of these constraints and<br>[06:25] types. Constraints are powerful because<br>[06:28] the database does the enforcement for<br>[06:30] you rather than relying solely on<br>[06:31] application code for validation which<br>[06:34] often has inconsistent and distributed<br>[06:36] checks. This leads to inconsistencies<br>[06:38] where different parts of the system<br>[06:39] access data. We can define the<br>[06:41] constraints in the database and it will<br>[06:43] always enforce them regardless of how<br>[06:44] the data gets entered. As a brief recap,<br>[06:46] a relational database organizes data<br>[06:48] into named tables made of rows and<br>[06:50] columns. They come by many names<br>[06:52] including MySQL, Postgress, MSSQL, but<br>[06:55] they all have the same underlying<br>[06:56] technology and use. We use types to<br>[06:59] define the shape of our data and<br>[07:00] constraints to enforce data consistency.<br>[07:03] I hope you enjoyed our video. If so,<br>[07:05] make sure you subscribe, comment, share,<br>[07:06] and like as it does help others find us.<br>[07:09] Other topics that you'd like to see us<br>[07:10] cover, let us know in the comments<br>[07:11] section below or send me a message on<br>[07:13] any of the social media platforms listed<br>[07:15] on my website. We would love to hear how<br>[07:17] we can help you, and it always brightens<br>[07:19] my day when I hear from a fan. This is<br>[07:21] Scott Kekworn for the PHP Architect<br>[07:23] channel signing off and reminding you to<br>[07:24] keep watching, keep coding, and keep<br>[07:26] reading.
<!-- deep-read:sections end -->