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

composer,packagist,php
7m:4s
Mar 11, 2025
Intro to Composer & Packagist
Welcome to the PHP Package Development series! 🎉 In this first video, we introduce the problem we’re solving and explore the world of package management systems. You’ll learn what Composer and Packagist are, why they matter, and how they simplify PHP development.📌 What you’ll learn:
✅ What are package management systems?
✅ Introduction to Composer & Packagist
✅ Why use Composer for PHP projects?
🔔 Subscribe for more PHP content!
🔗 Resources:
• Composer Documentation
• Packagist

linux
13m:10s
Feb 3, 2025
Introduction - History, Quick Setup
This video is part of the Linux Crash Course series. This video will discuss the history of Linux and help prepare a sandbox where you can practice as you follow along.Github Repo: https://github.com/rcravens/linux-crash-course

oop,php
3m:54s
Apr 8, 2025
Introduction & Overview
Welcome to PHP: The Pragmatic Way! In this video, we set the stage for an exciting journey into dynamic web development. 🌐We’ll start by touring the project’s goals, showing you where we’re landing and what’s ahead. The rule is simple: all the PHP code is ours! We begin with static HTML pages and gradually convert them into dynamic applications. 💻
Along the way, we’ll cover:
• Extracting a layout to avoid repetition 🔄
• Refactoring into an MVC architecture 🏗️
• Building a “mini-framework” to streamline development ⚙️
You’ll also learn how this framework introduces powerful features like routing, sessions, databases, models, views, and controllers. 🛠️
We’ll stick to best practices throughout—focusing on clean, secure, and maintainable code that’s easy to use. By the end of this series, you’ll be ready to implement these principles in your own projects!
Prerequisites: Basic PHP and OOP knowledge are recommended to get the most out of this series. Ready to dive in? Let’s go! 🚀
Coming Soon

oop,php
18m:5s
Jun 12, 2025
Invalid Form Submissions
In this video, we tackle the next critical part of the form experience—handling invalid submissions with grace. When a user submits a form with missing or incorrect data, we want to redirect them back, repopulate the form, and show helpful error messages. 💡Here’s what we build in version v19-redirect-with-errors:
- Define the ideal usage:
- session()->invalid($errors)->redirect_back();
- Then… we make it real! 💥
- Introduce invalid() and redirect_back() methods in the Session class
- Store transient $old and $errors values to survive the redirect and improve UX ✨
- Refactor Session::old() into a more flexible Session::flash() and flash_message() pattern 🔁
- Improve the old($key, $default) helper to escape HTML using htmlspecialchars() for security 🛡️
- Add a validation_message() helper to display specific errors next to form fields
- Update the review form:
- Loosen validation so comment is optional
- Add hidden rating input with default of 0
- Test with extreme values (e.g., rating=10, long name) to confirm validation is triggered
- Clean up temporary debug outputs (like var_dump()) and finalize the flow ✅
This update makes your app smarter, friendlier, and much more user-friendly when things go wrong. A polished user experience, even on failure? Now that’s pragmatic. 🚀

laravel,pulse
18m:6s
Mar 11, 2025
Laravel Pulse: Install & Deploy to Production (Step-by-Step Tutorial)
🚀 Learn how to install and deploy Laravel Pulse in a production environment using Laravel Forge and Envoyer!In this tutorial, I’ll walk you through:
✅ Installing Laravel Pulse in your Laravel project
✅ Configuring it for real-time performance monitoring
✅ Deploying Laravel Pulse to production with Forge & Envoyer
✅ Best practices to keep Pulse running smoothly in production
🔧 Tools Used: Laravel Forge, Laravel Envoyer, Laravel Pulse
If you found this video helpful, don’t forget to like, comment, and subscribe for more Laravel content! 🔥
📌 Links & Resources:
👉 Laravel Pulse Docs: [https://pulse.laravel.com/]
👉 Laravel Forge: [https://forge.laravel.com/]
👉 Laravel Envoyer: [https://envoyer.io/]
#tekfoundry #tekcasts

php
17m:3s
Mar 18, 2025
Logic, Conditionals & Branching
In this video from the PHP for Beginners series, we explore logic, conditionals, and branching—key concepts that control the flow of your PHP programs. You’ll learn how to use if, else, and switch statements to make decisions in your code, allowing your programs to respond dynamically to different conditions.By the end of this lesson, you’ll have a strong understanding of conditional statements and how to apply them effectively in real-world scenarios.
🔹 Beginner-friendly explanations
🔹 Hands-on coding examples
🚀 Master PHP conditionals and take control of your code today!
Coming Soon

javascript
6m:35s
May 22, 2025
Looping Through Arrays
Ready to do something with all those array items? In this episode, you’ll learn how to loop through arrays and apply logic to each value — one of the most common tasks in JavaScript!🎯 What you’ll learn:
• The classic for loop — great for full control
• The cleaner, modern for…of loop
• The elegant and expressive .forEach() method
• A fun mini-challenge: Loop through numbers and log which are even 🔍
🎥 What you’ll see:
• Step-by-step demos of each loop type
• Code that transforms and filters array data
• A clear comparison so you know when and why to use each loop
By the end, you’ll be confidently cycling through arrays and writing logic that reacts to each item. 🧠✨

php
18m
Mar 19, 2025
Loops
Loops are a fundamental part of programming, allowing you to execute code multiple times efficiently. In this video, part of the “PHP for Beginners” series, we break down the four main types of loops in PHP:✅ foreach – Perfect for looping through arrays effortlessly.
✅ for – Ideal when you know exactly how many times you need to iterate.
✅ while – Runs as long as a condition is true, great for dynamic scenarios.
✅ do…while – Similar to while, but always runs at least once.
By the end of this tutorial, you’ll understand when and how to use each loop, with clear explanations and examples. Whether you’re new to PHP or need a refresher, this video will help you master loops in no time!

php
22m:8s
Mar 19, 2025
Mixing Markup & Code
It’s time to take our PHP calculator from hardcoded values to real user input! In this video we introduce an HTML frontend to drive our calculator, making it interactive.Here’s what we cover:
✅ Creating an HTML form – Allow users to input expressions dynamically.
✅ PHP Superglobals – Understanding $_POST and how to handle form data.
✅ Mixing PHP & HTML – Embedding PHP inside markup to render values and conditionally show elements.
By the end of this tutorial, you’ll know how to build dynamic web pages that process user input using PHP—an essential skill for web development!

autoloading,namespaces,oop,php,psr-4
10m:36s
Mar 22, 2025
Namespaces, PSR-4, and Autoloading
Say goodbye to messy, single-file chaos! 😵💫 In this video, we organize and supercharge our PHP projects by breaking them into multiple files. First, we manually load classes using the trusty require keyword 📜—but that’s just the beginning!Next, we introduce the PSR-4 standard, the industry gold standard for structuring PHP code 🏆. And to make life even sweeter, we harness the power of Composer’s autoloading ⚡—letting PHP automatically find and load classes like magic! ✨
By the end, you’ll be writing scalable, maintainable PHP code like a true OOP architect! 🏗️💻
Coming Soon

javascript
13m:57s
May 29, 2025
Nested Structures & Loops w/Objects
As your programs grow more complex, you’ll often need to work with data inside of data. In this episode, we explore how to combine arrays and objects to model richer, more realistic structures.🎯 What you’ll learn:
• How to create and work with arrays inside arrays (like a game board)
• How to structure objects inside objects (like a user and their account)
• How to manage arrays of objects (like a list of students)
• How to handle arrays inside objects (like student grades)
🎥 What you’ll see:
• Code examples of each structure
• How to access nested values
• How to loop through nested data using for loops or for...of
By the end of this episode, you’ll understand how to organize complex data and access it confidently — a big step toward working with real-world applications! 🗃️🔁
Coming Soon

javascript
8m:40s
May 27, 2025
Objects - Key / Value Pairs
Objects are one of the most powerful and flexible tools in JavaScript. In this episode, we’ll explore how to represent real-world things — like people, places, or ideas — using key/value pairs.🎯 What you’ll learn:
• What objects are and why they matter
• How to define and access object properties
• The difference between dot notation and bracket notation
• How to add, update, and delete properties dynamically
🎥 What you’ll see:
• A walkthrough of building a simple person object
• Real-time code edits and console logging
• Examples that mirror how data is structured in real apps
After this episode, you’ll see how objects give your data shape and make your code more expressive and organized. 🗂️📦

javascript
12m:42s
Apr 29, 2025
Operators & Expressions
Now that you know how to store data, it’s time to work with it! In this episode, we’ll explore how JavaScript uses operators and expressions to perform calculations, compare values, and make decisions. 🚀🎯 Here’s what we’ll cover:
• Master arithmetic operators like addition, subtraction, multiplication, division, remainder, and exponentiation.
• Use assignment operators to update variable values quickly and efficiently.
• Compare values with comparison operators like ==, ===, !=, <, >, <=, and >=.
• Combine logic with logical operators: and (&&), or (||), and not (!).
🎥 Visual Walkthroughs:
• See real-world examples of manipulating numbers and booleans.
• Watch how combining different operators creates dynamic expressions.
• Practice thinking like a computer: true, false, and everything in between!
By the end of this episode, you’ll be writing powerful expressions and making JavaScript do some real thinking for you! 🧠⚡️

javascript
7m:38s
May 13, 2025
Parameters, Return Values, and Scope
In this episode, we go deeper into how functions communicate — by receiving input, producing output, and knowing where variables “live.” 🧩🎯 Here’s what we’ll cover:
• How to pass data into functions using parameters and arguments.
• Use return values to get results back from functions.
• Understand scope — where your variables exist and who can see them:
• Local (block), function, and global scope.
• Get a taste of lexical scope with a simple nested function.
🎥 Visual Walkthroughs:
• Watch functions take in inputs and return meaningful results.
• See clear, visual examples of variable scope in action.
• Spot common mistakes like trying to access variables outside their scope.
After this episode, you’ll be writing smarter functions that take input, give output, and stay in their own lane! 🧠➡️🧪➡️📦
Coming Soon

oop,php
22m:11s
Jul 8, 2025
Photo Deletion
🖼️ Improved Photo Show PageIn photo.show, hide the summary and reviews if none exist
🔗 Delete Route & Form
Add a new route using the DELETE method
In photo.show, display a delete form only if the logged-in user owns the photo
Include a hidden input field: _METHOD = DELETE
Update the Router class to detect the method via:
$_POST['_METHOD'] ?? $_SERVER['REQUEST_METHOD']
🔧 Controller Refactor
Split responsibilities:
ReviewController: keep only the store method, and fix redirect_back() usage
PhotoController: remove the store method
🧨 Destroy Method in PhotoController
Ensure the user is authenticated
Validate the photo exists
Validate ownership of the photo
Delete the photo file:
Add directory() method to the Photo model
Add convert_to_path() method to the Photo model
Delete the corresponding database record:
Add a delete() method to the base Model class
📌 That wraps up the deletion flow and lands us at v26-delete-photos — now users can clean up after themselves!

linux
38m:26s
Feb 3, 2025
Processes and Jobs - Monitor, Kill, Background Jobs, Crontab, SystemD
This video is part of the Linux Crash Course series. This video will cover how to manager processes and jobs. We will cover the following:1. How to monitor running processes
2. How to kill or stop existing processes
3. Run a script in the background as a job
4. Run a script at a scheduled interval (e.g., once per minute...) using crontab
5. Run a script as a service using systemd
Github Repo: https://github.com/rcravens/linux-crash-course