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
8m:41s
Mar 11, 2025
Publishing Your Package on Packagist
Now it’s time to publish our package and make it available to the world! 🌍 We’ll walk through submitting our package to Packagist and using Composer to install it in a project.📌 What you’ll learn:
✅ Registering a package on Packagist
✅ Using Composer to install your package
✅ Replacing old code with the new package
By the end of this video, your PHP package will be live and ready for developers to use! 🚀
🔔 Subscribe for more PHP tutorials!
🔗 Resources:
• Packagist Guide

linux
32m:13s
Feb 3, 2025
Redirection and Pipes - Output & Input, Chaining Commands
This video is part of the Linux Crash Course series. This video will continue exploring the Linux File System. In this video I will discuss redirecting stdin, stdout, and stderr. In addition, we will look a chaining commands together using pipes.Github Repo: https://github.com/rcravens/linux-crash-course

php
8m:32s
Mar 19, 2025
Reusable Code
Writing clean, maintainable code is a key skill for any developer! In this video we take our calculator project to the next level by refactoring it for better structure and reusability.Here’s what you’ll learn:
✅ Refactoring code – Moving related logic into separate files.
✅ require & include – How to properly import and reuse PHP files.
✅ Why structured code matters – Better organization, easier maintenance, and reusability.
By the end of this tutorial, you’ll have a more structured, modular, and reusable PHP application—just like professional developers do!

oop,php
10m:34s
May 13, 2025
Router Infrastructure
Let’s bring structure and scalability to our routing system! In this video, we encapsulate all routing logic into a dedicated Router infrastructure class, giving us a clean and centralized way to manage routes. 🧭Here’s what we’ll accomplish:
• Move and rename load_route() into the new Router class as a static view() method 🔁
• Add static get() and post() methods to define routes declaratively 🚪
• Simplify how our application connects URLs to controllers using a centralized approach 🧠
By the end, we’ll have version v10-router-infra—a solid foundation for routing that’s clean, powerful, and easy to scale. 🚀
Coming Soon

javascript,node
11m:33s
Oct 23, 2025
Routing Basics
👉 Every time you type a URL, click a link, or submit a form, your server has to decide: what happens next? That’s where routing comes in.💥 In this video, we’ll break down Routing Basics in Node.js and learn how servers handle requests:
- How URLs, HTTP methods (GET, POST), and headers guide server responses.
- Writing simple routes to serve different pages (Home, About, Contact).
- Handling form submissions with POST requests.
- Returning JSON vs. HTML based on client preferences ⚡️.
🤖 By the end, you’ll understand how to map requests to responses — the foundation for building APIs, web apps, and more.
💡 Relevant Links
Previous TekCasts series:
- JavaScript for Beginners: https://tekcasts.com/play/javascript-for-beginners-what-is-javascript
- JavaScript in the Browser: https://tekcasts.com/play/javascript-in-the-browser-browser-runtime-environment
Official Docs:
- Node.js Documentation: https://nodejs.org/en/docs/
- MDN JavaScript Guide: https://developer.mozilla.org/en-US/docs/Web/JavaScript

oop,php
19m:31s
Jul 10, 2025
Second Refactor & Review
🧠 Model Hydration Fixes- Solved the issue where results weren’t instances of the child model class
- Introduced hydrate() and hydrate_rows() to handle model instantiation
- Added PHPDoc annotations with generics to assist with static analysis and better typing
- Updated type hints across Policies and Controllers for clarity and consistency
📦 Model Enhancements
- Added an update() method
- Introduced pagination support with skip() and take()
- Added sorting via order_by() and order_by_desc()
- Modified / route to use pagination
🛡️ New Policy Classes
- PhotoController: created Http/Policies/PhotoPolicy
- AuthController: created and used AuthPolicy
- RegisterController: created UserPolicy
- ReviewController: created ReviewPolicy
- UploadController: updated to use PhotoPolicy
- Fixed return $data in UploadController to include a proper URL
📌 All of that polish and organization lands us at v26-review-refactor — making the codebase smoother, smarter, and more maintainable.

browser,javascript
18m:11s
Sep 4, 2025
Selecting & Modifying Elements
Now that you know what the DOM is 🌳, it’s time to grab it, shape it, and make it dance 💃! In this video, you’ll learn how to find elements on the page and update them dynamically with JavaScript.We’ll cover:
🔎 Powerful ways to query the DOM (getElementById, querySelector, querySelectorAll)
📂 The difference between NodeLists vs HTMLCollections (and why it matters)
📝 How to read & update text/HTML with innerText, textContent, and innerHTML
🏷️ Working with attributes (getAttribute, setAttribute)
✅ Best practices to keep your DOM manipulation clean & safe (hint: don’t abuse innerHTML!)
💡 With live demos, we’ll query by IDs, classes, attributes, even complex CSS selectors — and then we’ll modify elements on the fly, from text and attributes to inline styles.
⚡ By the end of this video, you’ll have the skills to take control of your webpage’s content and structure like a true DOM wizard 🧙♂️!
Coming Soon

javascript,node
9m:50s
Oct 28, 2025
Serving HTML & Static Files
Your Node.js server is about to level up 💥So far, it’s been plain text — now it’s time to serve real web pages with HTML, CSS, JavaScript, and images like a true web server 🌐🔥
👉 In this episode, you’ll learn how to:
🚀 Use the fs module to load and serve full pages
⚙️ Set proper Content-Type headers so browsers render perfectly
🛡️ Protect your app from path traversal attacks
💻 Build a lightweight static file server from scratch — the core of every modern web app
By the end, your Node server won’t just respond… it’ll serve experiences ⚡️
💡 Relevant Links
Previous TekCasts series:
- JavaScript for Beginners: https://tekcasts.com/play/javascript-for-beginners-what-is-javascript
- JavaScript in the Browser: https://tekcasts.com/play/javascript-in-the-browser-browser-runtime-environment
Libraries mentioned:
- Node.js fs: https://nodejs.org/api/fs.html
- Node.js path: https://nodejs.org/api/path.html
- Node.js http: https://nodejs.org/api/http.html

oop,php
25m:6s
Jun 10, 2025
Sessions / Redirects / Flash Messages
Now that users can submit reviews, let’s give them feedback! In this video, we bring in sessions, redirects, and flash messaging to guide the user experience after form submissions. ✨Here’s what gets built in version v18-redirects-with-flash:
- Create a Session class as a singleton, with a handy global session() helper 🔐
- Initialize the session at app start and build a clean API like:
- session()->error('Missing required parameters.')->redirect('/');
- Implement error() and redirect() methods for smooth flow and messaging
- Fix the issue of persistent flash messages by introducing delete_transient_data() to clear session data after one request cycle
- Use Alpine.js to display flash messages dynamically with a snappy user experience ⚡
- Create a reusable _flash.view.php layout file for flash UI 💡
- Hook flash messages into the review flow by updating all dd('TODO') redirects in the PhotoController
- Bonus: Add current_route support in the Router to improve context-awareness in views 🧭
With sessions and flash messages in place, your app now speaks back to the user—clear, friendly, and fast. 🚀

javascript,node
4m:28s
Oct 9, 2025
Setting up Node & First Script
👉 Ready to start your journey with Node.js? In this video, we’ll get your environment set up and run your first server-side JavaScript script ⚡️. Say goodbye to browser-only JS and hello to full-stack possibilities!💥 You’ll learn:
- How to install Node.js using nvm and verify your Node & npm versions.
- How to use the REPL (Read-Evaluate-Print Loop) to experiment interactively in Node.
- How to create and run your very first Node script (hello.js) that prints “Hello World!”.
- Why starting small with Node sets the stage for building servers, APIs, and dynamic apps in future videos.
⚡️ By the end, you’ll be able to confidently open your terminal, fire up Node, and see JavaScript running outside the browser!
👉 Perfect if you’re new to Node or want to finally get hands-on with server-side JavaScript.
💡 Relevant Links
Previous TekCasts series:
- JavaScript for Beginners: https://tekcasts.com/play/javascript-for-beginners-what-is-javascript
- JavaScript in the Browser: https://tekcasts.com/play/javascript-in-the-browser-browser-runtime-environment
Official Docs & Resources:
- Node.js Download & Docs: https://nodejs.org/en/download
- MDN JavaScript Guide: https://developer.mozilla.org/en-US/docs/Web/JavaScript

javascript
6m:24s
Apr 17, 2025
Setting Up The Environment
Before we dive deep into coding magic, we need a proper space to create it! In this episode, we’ll set up a clean and powerful JavaScript development environment so you can code confidently from the start. 🛠️✨🚀 Here’s what we’ll cover:
• Introduce two popular code editors: Visual Studio Code and WebStorm. You can choose either one to follow along comfortably!
• I’ll be using WebStorm throughout this series for demonstrations.
• Set up your first project folder called js-beginners, and create two important files inside: index.html and script.js.
• Learn how to open your HTML file in the browser and access the browser developer tools to run and inspect your JavaScript code.
• Connect your external JavaScript file to your HTML page so your scripts come alive right inside the browser console!
🎥 Visual Walkthroughs:
• We’ll create the project structure together, step-by-step.
• Open the browser console and verify everything’s working.
• Highlight important parts of the editor and project setup to keep things clean and organized.
By the end of this episode, you’ll have your environment ready, your first files created, and the confidence to start coding with JavaScript! 🚀

github,package,php
14m:42s
Mar 11, 2025
Setting Up the Package Structure
In this video, we start coding! 🚀 We’ll create the necessary directory structure, initialize a Git repository, and write the initial code for our PHP package.📌 What you’ll learn:
✅ Setting up the directory structure
✅ Initializing a Git repository
✅ Writing the first version of the package
💡 By the end of this video, you’ll have a solid foundation for your package!
🔔 Subscribe for more PHP tutorials!
🔗 Resources:
• GitHub: Getting Started

php
13m:4s
Mar 17, 2025
Setup a Development Environment
Before you start coding in PHP, you need the right tools! In this video, we’ll guide you through setting up a local development environment step by step. You’ll learn how to install PHP, set up a local server using XAMPP, MAMP, or the built-in PHP server, and explore containerized options like Docker. We’ll also discuss different code editors, from lightweight options like Sublime Text to powerful IDEs like PHPStorm and Visual Studio Code. By the end of this video, you’ll have everything configured and ready to start coding in PHP like a pro! 🚀
Coming Soon

browser,javascript
14m:58s
Oct 14, 2025
Simple Frontend Architecture
✨ Before you write thousands of lines of JavaScript, you need a solid foundation.In this video, we’ll explore how to structure frontend applications so your code stays organized, modular, and maintainable — even as your project grows.
You’ll learn:
⚡ Why separation of concerns prevents “spaghetti JS”
📦 The power of modularization (breaking one big file into smaller, focused ones)
🛠 Principles like YAGNI, DRY, SRP, and Decoupling to guide clean architecture
🔄 How event-driven patterns make your apps more reactive and less fragile
To wrap things up, we’ll also walk through a quick example of creating a custom browser event — showing how components can communicate without tight coupling.
👨💻 This isn’t about writing tons of code — it’s about learning the architectural principles that make every line of code easier to understand and maintain.

esp32
23m:9s
Apr 4, 2025
Software
Now that the hardware’s wired up, it’s time to breathe life into the Smart Garage Door with code! 🚀In this episode, we walk through the entire software that powers the project — written with clean, object-oriented design to keep things modular and maintainable 🧼👨💻.
We do a full code review and break down the key classes that make everything tick:
🔹 DoorSensor – encapsulates logic for detecting the door’s position
🔹 DoorButton – handles interactions with the door opener button
🔹 GarageDoor – the high-level controller that integrates with Apple Home using HomeSpan. It pulls it all together and exposes the device as a HomeKit accessory 🍏🏠
You’ll see how these components work together — and how dependency injection keeps things clean by passing DoorSensor and DoorButton instances right into the GarageDoor class constructor.
Whether you’re into embedded dev, smart home integrations, or just love clean code, this video dives into the software heart of the project. Let’s build smart! 💡💻

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! 🚀