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
javascript,node
16m:43s
Nov 6, 2025
Intro to Databases
It’s time to level up from file-based storage! In this episode, we explore why databases exist, how they solve key scalability problems, and how to use SQLite to manage structured data in Node.js.💥 You’ll see how to:
👉 Compare file-based vs. database storage
👉 Understand relational vs. document databases
👉 Install and use SQLite in Node.js
👉 Implement full CRUD operations (Create, Read, Update, Delete)
👉 Explore when to choose SQLite, PostgreSQL, or MongoDB
💡 Relevant Links
- SQLite official: https://www.sqlite.org/index.html
- SQLite Node: https://www.npmjs.com/package/sqlite3
- PostgreSQL official: https://www.postgresql.org/
- MongoDB official: https://www.mongodb.com/
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
javascript,node
7m:16s
Oct 7, 2025
Intro to Node
👉 Ever wondered why JavaScript isn’t just for the browser anymore? In this kickoff video, we’ll explore the rise of server-side JavaScript — from its humble beginnings in Netscape (1995) ⚡️ to the game-changing release of Node.js in 2009.💥 You’ll learn:
- A quick history of JavaScript and how it went from a “sidekick” language to running the backend of the web.
- What makes Node.js special: the V8 engine, event-driven architecture, and non-blocking I/O.
- Why developers love using one language across the full stack (frontend, backend, and even databases!).
- Real-world use cases: APIs, real-time apps, CLI tools, microservices, and even IoT robots 🤖.
⚡️ Plus, we’ll demo how the same console.log works in the browser and in Node.js, and spin up a tiny web server that responds with "Hello from the server!".
👉 Perfect if you’re new to Node or curious about why companies everywhere are betting big on JavaScript beyond the browser.
💡 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
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! 🚀
javascript
18m:12s
Sep 11, 2025
Introduction to Async Functions
Async programming doesn’t have to feel like juggling chainsaws. In this episode, we’ll unravel the magic of async and await—two keywords that make working with asynchronous code in JavaScript cleaner, easier, and far more readable. 🚀We’ll start by exploring why async matters: JavaScript is single-threaded but non-blocking, so operations like network requests need special handling. You’ll see how we moved from callbacks ➝ Promises ➝ async/await, and why this evolution makes your code shine. ✨
Next, you’ll learn:
🔑 What makes an async function special (spoiler: it always returns a Promise).
⏸ How await pauses execution until a Promise settles—without freezing your app.
💻 Real-world examples, including a simulated network request written both with .then() and the async/await style.
🛡 How to handle errors gracefully with try/catch.
By the end, you’ll feel confident writing asynchronous JavaScript that’s elegant, predictable, and easy to read. ⚡
javascript,node
16m:27s
Dec 16, 2025
Introduction to Middleware
Your Node.js server just got superpowers 💥We’re taking your app beyond the basics by introducing one of the most powerful architectural patterns in modern web development — middleware ⚙️
👉 In this episode, you’ll learn how to:
🚀 Implement your own middleware system from scratch in Node.js
🔒 Add authentication checks with custom middleware classes
🧠 Use router groups to apply middleware cleanly and efficiently
🪄 Chain multiple middleware functions to handle complex logic
🧩 Understand how frameworks like Express build on this same concept
By the end, your Node.js app will have a clean, modular flow that scales effortlessly 💪
💡 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
Previous episodes in this series:
- Sessions: https://tekcasts.com/play/javascript-on-the-server-sessions
- Validation Improvements: https://tekcasts.com/play/javascript-on-the-server-validation-improvements
- Flash Messages: https://tekcasts.com/play/javascript-on-the-server-flash-messages
- Authentication Basics: https://tekcasts.com/play/javascript-on-the-server-authentication-basics
Libraries / Docs mentioned:
- Node.js http: https://nodejs.org/api/http.html
- Node.js URL: https://nodejs.org/api/url.html
javascript
12m:53s
Sep 9, 2025
Introduction to Recursion
In this episode, we unlock the power of recursion — functions that call themselves! 🔄 You’ll see why recursion needs a clear exit point (the base case), and how this elegant approach can simplify tricky problems. Together, we’ll walk through three hands-on examples:⏱ A countdown timer that rockets to blast off!
✖️ Factorial computation (the classic recursion demo)
🔀 A recursive bubble sort that organizes chaos step by step
By the end, recursion will go from intimidating to intuitive — a tool you’ll actually want in your problem-solving toolkit. 🚀
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. 🚀
Coming Soon
laravel,php
29m:41s
Mar 26, 2026
Jobs, Queues, and Workers
As your application grows, long-running work doesn’t belong in the request cycle.In this lesson, we take a deep, practical dive into Laravel Jobs & Queues by moving survey email notifications into background workers. You’ll learn not just how queues work — but when and why to use them, and how to operate them confidently in production.
No hand-waving. No “just install Redis and hope.”
This is queues the way real applications use them.
🎯 What We Cover:
- Refactors & cleanup from the email implementation
- Why queues exist (architecture & scalability)
- Choosing queue drivers for dev vs production
- Managing queue workers locally and in production
- Supervisor configuration for long-running workers
- Monitoring with Horizon, Pulse, and Telescope
- Handling failures, retries, delays, and backoff
- Creating and dispatching a real job
- Job chaining, batching, and advanced queue features
🧠 Hands-On Implementation - You’ll build and dispatch a real job:
- SendSurveyInviteJob
- Retry and backoff strategies
- Sync vs async dispatching
- Delayed and deferred jobs
- Error handling and manual failures
All wired directly into the survey invite workflow.
🕒 Up Next - Scheduling Tasks & Jobs:
- Laravel Scheduler
- Automated notifications
- Time-based workflows
💥 About the Series:
Pragmatic Laravel focuses on building real applications with Laravel — emphasizing clarity, maintainability, and thoughtful design decisions instead of shortcuts or magic.
#Laravel #PragmaticLaravel #PHP #CleanCode #TekCasts
browser,javascript
9m:14s
Oct 21, 2025
jQuery - History & Syntax Sugar
Before React, Vue, and modern frameworks, jQuery ruled the web. 🌐✨Back in the early days, browsers didn’t always agree on how JavaScript should work. Every developer fought with quirks between Internet Explorer, Firefox, Safari, and Chrome. 😩 Enter jQuery — a library that smoothed over the chaos by providing a standardized abstraction. With $(), developers could write code once and trust it to work everywhere.
In this video, we’ll explore why jQuery was such a big deal, from DOM selection and chained syntax to event handling and AJAX requests. You’ll see how it simplified cross-browser headaches, why it became the backbone of web dev for a decade, and where it’s still used today (👋 WordPress plugins & legacy apps).
Finally, we’ll look at its modern replacements: native JS APIs and frameworks that now handle what jQuery once did.
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
laravel,php
16m:36s
Jan 15, 2026
Laravel Starter Kits & Fortify
In this video, we take our survey app to the next level by introducing Authentication, discussing installation options, and laying the groundwork for protected views and user-based access.Along the way, we also apply several refactorizations to keep the codebase clean, flexible, and scalable.
🛠️ Refactorizations Completed
Before diving into authentication, we improved core structures:
📱 Added a mobile menu using npm install flowbite + import "flowbite"
🎨 Updated mobile menu styling
🧩 Created navigation, table, and form components for DRY code
🗂️ Moved layouts into Blade components (@extends('xxx') ➜ )
👥 Added new layout shells: empty and guest
🔐 Authentication vs. Authorization
Authentication = Who are you?
Authorization = What are you allowed to do?
📘 Laravel Docs:
👉 Authentication — https://laravel.com/docs/12.x/authentication
👉 Authorization — https://laravel.com/docs/12.x/authorization
⚙️ Installation Options
Depending on your project setup, Laravel gives you multiple ways to integrate auth:
For New Apps
🚀 Laravel Starter Kits (React, Vue, Livewire)
For Existing Apps
🌬️ Laravel Breeze
🛡️ Laravel Fortify
Useful Links:
🔗 Starter Kits — https://laravel.com/docs/12.x/starter-kits
🔗 Breeze — https://github.com/laravel/breeze
🔗 Fortify — https://laravel.com/docs/12.x/fortify
🛡️ Laravel Fortify Setup (Summary)
Installation
1️⃣ composer require laravel/fortify
2️⃣ php artisan fortify:install
3️⃣ php artisan migrate
Configuration
Review settings in config/fortify
Example: Registration View Binding
// App/Providers/FortifyServiceProvider.php (partial)
public function boot(): void
{
Fortify::registerView(function () {
return view('auth.register');
});
}
If you're enjoying the series, don't forget to Like, Comment, and Subscribe — it helps TekCasts grow! 🙌
#Laravel #PHP #LaravelFortify #LaravelBreeze #WebDevelopment #FullStack #CleanCode #BladeComponents #Authentication #Authorization #TekCasts
laravel,php
13m:32s
Nov 11, 2025
Larvel Installation
Let’s get Laravel up and running! 🚀In this video, we’ll install Laravel, set up our development environment, and bring in the static HTML mockup we created earlier. You’ll see how to quickly spin up a new Laravel app, configure your routes, and render your first Blade view — laying the foundation for everything that follows in our Laravel Survey App series.
🔍 In this video, we’ll cover:
- Installing Laravel via the command line
- Setting up the Laravel installer and Composer
- Creating a /survey route and Blade view
- Copying our static survey design into Laravel
🧠 What You’ll Learn
You’ll learn how to create a clean Laravel setup from scratch — understanding the directory structure, the power of Blade templates, and how routing connects everything together.
🛠️ Resources
📘 Laravel Install Guide → https://laravel.com/docs/12.x/installation
💻 GitHub Repo → https://github.com/rcravens/laravel_survey_app
💥 About the Series:
Pragmatic Laravel focuses on building real applications with Laravel — emphasizing clarity, maintainability, and thoughtful design decisions instead of shortcuts or magic.
📺 Up Next
Next episode: Blade Templates — we’ll refactor our HTML into reusable layouts, partials, and components to make our app cleaner and easier to maintain.
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!
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. 🧠✨