Search looks for provided text the Title, Description, Classification, and Keywords for the video.

oop,php
3m:15s
Apr 15, 2025
Static HTML to PHP
It’s time to bring our static site to life! In this video, we take the first step toward dynamic content by converting our plain HTML files into PHP. 🧩Here’s what we’ll cover:
• Renaming .html files to .php ✅
• Updating the navigation links in two key places on each page for consistency 🔗
By the end of this video, our project will be PHP-ready and set up for future enhancements. This version is tagged in the repo as v2-php-files for easy reference. 🏷️
It’s a small change with big impact—let’s keep the momentum going! 🚀

oop,php
17m:24s
Mar 26, 2025
Static Methods and Properties
Ever wondered when to use static properties and methods? 🤔 In this video, we break it all down! 🔍We’ll start with a quick refresher on normal properties and methods, then dive into their static counterparts. 🏗️ What’s the difference? Static members belong to the class—shared across all instances—while normal members are instance-specific. 🌎➡️📦
But wait—static properties aren’t constants! ⚠️ We’ll explore constant properties using const and discuss real-world use cases where static methods shine. ✨
By the end, you’ll know exactly when and why to use static members in your PHP projects! 💡💻 Let’s go! 🎬
Coming Soon

oop,php
29m:47s
Jun 5, 2025
Submitting Reviews
It’s time to let users have their say! In this video, we implement the “Leave a Review” feature, allowing users to submit feedback on photos directly from the app. 💬Here’s what’s packed into version v17-leave-review:
Add a POST route to handle form submissions 🛤️
Stub out the PhotoController::store method as our entry point for review handling
Wire up the review form and hook it into the controller 🧵
Introduce basic validation to catch missing fields or bad data 🧼
Add temporary dd('TODO') calls as placeholders for future redirects
Build the SQL insert logic using the photo_id from the query string 🔗
Validate that the photo exists before inserting a review to maintain data integrity 🔒
Refactor the Database class:
Rename exec() to raw() for clarity
Add a new execute() method to handle parameterized inserts and return the number of affected rows ⚙️
By the end of this video, users can leave their thoughts—and our app takes one more step toward being fully interactive. 🌟

linux
12m:34s
Feb 3, 2025
Terminal - Shells, Basics, Help
This video is part of the Linux Crash Course series. This video will introduce the Linux Terminal and how to efficiently navigate command history, cursor position, and how to obtain help on any command.Github Repo: https://github.com/rcravens/linux-crash-course

linux
15m:3s
Feb 3, 2025
Text Editors - Nano, Vim, Emacs
This video is part of the Linux Crash Course series. This video will continue exploring the Linux File System. In this video I will introduce three common text editors found on Linux systems.Github Repo: https://github.com/rcravens/linux-crash-course

oop,php
5m:17s
Mar 25, 2025
Traits
Ever struggled with duplicate code across multiple classes? What if you can’t put it in a base class? 🤔 PHP doesn’t support multiple inheritance, but fear not—Traits come to the rescue! 🦸♂️In this video, we’ll identify duplicate logic, discuss why it doesn’t belong in the base class, and then refactor using a Trait to keep our code clean, reusable, and DRY! 💡✨
By the end, you’ll be wielding Traits like a pro! 🏆 Let’s dive in! 🎥
Coming Soon

oop,php
19m:17s
Jul 3, 2025
Uploading Photos
🔒 UI Adjustments Based on Auth State• Hide the notification bell in the top nav if the user isn’t logged in
🧭 Routing & Form Setup
• Create an /upload route
• Set the form’s action and stub in the store() method with a dd($_POST) to start
• Remove the unused “title” field from the upload form
🧪 Validation Process
• Define validation for the uploaded photo:
$file = validate('photo')->file($allowed_mimes)->max(4016053)->required();
• Add $allowed_mimes and $max_file_size constants to the Photo model
• Implement file() and update the max() method in the Validation class
• Fix Validation::clean_value() to properly handle file inputs
⚠️ Missing Validation Messages
• Ensure validation errors are displayed in these views:
• registration.index
• auth.index
• upload.index
💾 File Storage & DB Entry
• Save the uploaded file to the appropriate location
• Create a new photo record in the database
🚫 .gitignore Update
• Add public/photos to the .gitignore file to prevent uploaded files from being committed
⸻
📌 And that completes the upload feature, bringing us to v25-upload-photos. Ready to show off some pictures!
Coming Soon

oop,php
9m:3s
Jun 26, 2025
User Authentication
📁 Controller Setup- Create a new AuthenticationController inside Http/ with three methods:
- login() – shows the login form
- authenticate() – handles login logic
- logout() – clears user session
📄 View
- Add views/login/index.view.php to render the login form
🔀 Routing
- Register the necessary routes:
- GET /login → shows the login form
- POST /login → processes authentication
- POST /logout (or GET) → logs the user out
🧠 Authentication Logic
- Inside authenticate():
- Validate email and password inputs
- Lookup user by email from the database
- Use password_verify() to check if password matches
- On success → Session::login($user_id)
- On failure → redirect back with error message
🔐 Session Enhancements
- Add login($user_id) to store user ID in session
- Add logout() to destroy the session cleanly
📌 And that lands us at v23-authentication.

linux
19m:42s
Feb 3, 2025
User Permissions - Access Control Lists (ACL)
This video is part of the Linux Crash Course series. This video will cover Access Control Lists or ACLs to apply permissions at a granular level.Github Repo: https://github.com/rcravens/linux-crash-course
Coming Soon

oop,php
20m:42s
Jun 24, 2025
User Registration
🔹 Controller Setup- Create a new RegistrationController inside Http/, with index() and store() methods
- index() displays the registration form
- store() temporarily calls dd($_POST) to confirm input
🔹 View
- Add the form view at views/registration.index.view.php
🔹 Validation
- Write validation rules in fluent style:
- $email = validate('email')->email()->required()->unique('users', 'email');
- Build out the validation logic to support this pattern
🔹 User Model
- Create a Models/User class
- Move relevant DB logic from the controller into the model
🔹 Model Base Enhancements
- In the Model base class:
- Add $is_count to build_query()
- Implement a count() method that supports basic tallying
- In the Database class:
- Add a count() method to execute counting queries
- Add a unique() validation method using model and count
🔹 Data Insertion
- Assemble a $data array with validated inputs
- Call User::insert($data) to create the new user
That’ll wrap up the registration feature and land us at v22-registering-users 🏁

linux
1m:45s
Feb 3, 2025
Users and Permissions - Groups, Users, Sudo, Files
This video is part of the Linux Crash Course series. This video will cover user management features.Github Repo: https://github.com/rcravens/linux-crash-course

javascript
17m:41s
Apr 24, 2025
Variables & Data Types
In this episode, we’ll dive into the foundation of any programming language: variables and data types! Mastering these early will make everything you do in JavaScript much easier and more powerful. 🚀🎯 Here’s what we’ll cover:
• Understand what a variable is: a container for storing data.
• Learn how to declare variables using let and const — and briefly touch on var as older legacy syntax.
• Explore primitive data types in JavaScript: strings, numbers, booleans, null, and undefined.
• Use typeof to inspect and understand the type of any value.
• Follow best practices with naming conventions like camelCase and choosing clear, descriptive names.
🎥 Visual Walkthroughs:
• See real examples of variable declarations and data types in action.
• Inspect types live using the console to build intuition.
• Highlight common quirks (like why null shows up as “object”!).
By the end of this episode, you’ll have a strong grip on creating variables and recognizing the key types of data in JavaScript! 💥

oop,php
12m:15s
May 8, 2025
View Infrastructure
It’s time to level up our view system! In this video, we refactor our simple view() helper into a flexible View class, giving us cleaner, more expressive control over how pages are rendered. ✨Here’s what we’ll do:
• Create the app/Framework directory to hold core infrastructure 🗂️
• Build the View class to support a fluent, chainable syntax for setting views, layouts, data, and page titles 🔧
• Add support for setting a custom page title directly in the view pipeline 🏷️
• Update controller classes to return View instances instead of using the old helper 🔄
• Refactor the load_route function and index.php to support the new view rendering flow 🔁
By the end, we’ll arrive at version v9-view-infrastructure—a modern, powerful view layer that keeps your code clean, expressive, and easy to maintain. 🚀

esp32
4m:36s
Apr 4, 2025
What is a "Smart Garage Door"?
Ever left the house and thought… “Wait, did I close the garage door?” 😬 You’re not alone — and that’s exactly the problem we solve in this video!In this first episode, we break down what makes a garage door smart — including:
✅ Real-time door position detection
✅ Remote open/close functionality
✅ Integration with Apple’s Home app for sleek iPhone control 📱🍏
✅ Notifications and remote access via Apple Home Hub 🌐📬
You’ll also get a full demo of the final product in action — showing exactly how these features come together in a seamless smart home experience.
📂 Resources mentioned:
🔗 Project GitHub Repo: rcravens/esp32_smart_garage_door
🔗 HomeSpan (Apple Home integration): HomeSpan/HomeSpan
Whether you’re into DIY home automation or just love cool projects, this series is for you. Let’s get started! 🚀

javascript
15m:55s
Apr 15, 2025
What Is JavaScript?
Welcome to the series! 🎉 In this first episode, we kick things off by answering the big question: What even is JavaScript? 🧠You’ve probably already seen it in action today—on a shopping cart, a weather widget, maybe even a chat box. JavaScript is the secret sauce behind interactive websites, and in this video, we’ll explore:
🌐 A quick peek into its wild history
🖥️ Where it runs (spoiler: not just in your browser!)
⚙️ What it actually does for web pages and applications
📚 What to expect from the rest of this hands-on, no-fluff series
We’ll even check out a tiny bit of code that creates a button ✨ and responds to a click with an alert—just to show how easy it is to bring pages to life.
Let’s set the foundation for your JavaScript journey. 💪