Short Bio:
Bob Cravens is a seasoned technology leader, software architect, and educator with a passion for empowering others through practical, real-world knowledge. As the founder of TekFoundry, Bob has dedicated his career to designing and delivering innovative software solutions that combine cutting-edge technology with elegant simplicity.
At TekCasts, Bob leverages over two decades of experience in software engineering, application architecture, and team leadership to create engaging, high-impact courses for developers and technology professionals. His instructional style is rooted in practical application, offering insights drawn from his extensive background in industries like medical devices and global technology consulting.
Bob’s expertise spans a variety of technologies and methodologies, including PHP/Laravel, FastAPI, and DevOps, as well as architecture best practices and team dynamics. Whether teaching foundational concepts or advanced strategies, he’s passionate about helping others turn complex challenges into streamlined solutions.
When not crafting elegant code or inspiring the next generation of tech innovators, Bob enjoys exploring the intersection of technology, business strategy, and creative problem-solving.
At TekCasts, Bob leverages over two decades of experience in software engineering, application architecture, and team leadership to create engaging, high-impact courses for developers and technology professionals. His instructional style is rooted in practical application, offering insights drawn from his extensive background in industries like medical devices and global technology consulting.
Bob’s expertise spans a variety of technologies and methodologies, including PHP/Laravel, FastAPI, and DevOps, as well as architecture best practices and team dynamics. Whether teaching foundational concepts or advanced strategies, he’s passionate about helping others turn complex challenges into streamlined solutions.
When not crafting elegant code or inspiring the next generation of tech innovators, Bob enjoys exploring the intersection of technology, business strategy, and creative problem-solving.
Videos
Checkout Videos By This Instructor

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. 💪

oop,php
13m:52s
Mar 21, 2025
Why OOP?
Ever felt like your PHP code is a tangled mess of functions, impossible to scale, and a nightmare to maintain? You’re not alone! In this kickoff episode, we dive into why Object-Oriented Programming (OOP) is a game-changer and how it solves common problems found in procedural PHP.We’ll break down the downsides of functional programming—spaghetti code 🍝, duplicated logic 🔁, and function name collisions 💥—and compare it to the structured, reusable, and scalable world of OOP. Through a tabletop comparison, we’ll introduce key OOP concepts like encapsulation, inheritance, and modular design, setting the foundation for everything to come.
By the end of this video, you’ll understand why OOP isn’t just a fancy buzzword—it’s a smarter way to write PHP! 💡🔥

php
8m:11s
Mar 17, 2025
Why PHP?
Kicking off our PHP for Beginners series, this video takes you on a deep dive into the world of PHP. From its origins to its modern-day relevance, we’ll explore how PHP has shaped the web—powering everything from WordPress to robust frameworks and libraries. But why do some developers swear by it while others steer clear? We’ll break down the pros, the cons, and why PHP continues to be a powerhouse in web development today. Whether you’re a complete beginner or just curious about PHP’s place in the tech world, this video is the perfect starting point!
esp32
7m:28s
Apr 4, 2025
WiFi Configuration & Pairing
In the final episode of the series, we bring the Smart Garage Door into the real world! 🌎🚪I start by sharing photos from my personal installation — giving you a behind-the-scenes look at how the hardware fits into a real garage setup 🧰📸.
Then we dive into a smart and secure feature:
🔄 Using the Device Control Button, we toggle the ESP32 into WiFi Access Point mode — allowing you to configure your network’s SSID and password directly from your phone or laptop. No code changes. No hardcoded passwords. No re-flashing. 🔥
This makes the device portable, secure, and easy to set up on any WiFi network.
Finally, I walk through the Apple Home pairing process using HomeSpan and HomeKit. Once paired, your Smart Garage Door shows up in the Home app — fully functional, remotely accessible, and notification-ready 🏠🍏📱.
This is the last piece that turns a DIY project into a polished smart home device. Let’s connect it all! 🔗🚀

package,pest,php
7m:5s
Mar 11, 2025
Writing Tests with PEST
Time to make sure our package works as expected! ✅ In this video, we introduce PEST, a powerful and elegant testing framework for PHP. We’ll write automated tests to ensure our package behaves correctly.📌 What you’ll learn:
✅ Installing and setting up PEST
✅ Writing unit tests for our package
✅ Running and analyzing test results
🚀 Why test? Because a well-tested package is a reliable package!
🔔 Subscribe for more PHP content!
🔗 Resources:
• PEST Documentation

javascript
7m:43s
Apr 22, 2025
Your First Script
It’s time to write your very first lines of JavaScript! In this episode, we’ll break the ice with coding by creating simple scripts and seeing instant results in the browser console. 🚀🎯 Here’s what we’ll cover:
• Learn what a script really is: a list of instructions that JavaScript will execute.
• Use console.log to display messages and values — one of the most important tools for developers!
• Write basic expressions like strings, numbers, and simple math operations.
• Complete a mini-challenge: log your name and age, and add two numbers together.
🎥 Visual Walkthroughs:
• Code everything live, step-by-step, and encourage you to code along.
• Show how each line appears instantly in the browser console.
• Build confidence by running simple, clear examples.
By the end of this episode, you’ll have officially written and executed your first real JavaScript code! 🎉