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
javascript,node
24m:15s
Dec 25, 2025
Deployment Basics
Your Node.js journey is about to go live 🌐🚀You’ve built, refactored, and refined — now it’s time to deploy your application to the real world!
In this episode, we’ll walk through the key steps and best practices for running your Node.js app in production.
👉 In this episode, you’ll learn how to:
⚙️ Configure your app for different environments
📊 Manage logs and monitor performance
🧱 Handle errors gracefully in production
🌱 Use environment variables for configuration
🌀 Keep your app running with process managers like PM2
By the end, you’ll understand what it takes to make your Node.js app not just work — but thrive in production 💪
💡 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 & Tools mentioned:
- PM2 Process Manager: https://pm2.keymetrics.io/
- Node.js Documentation: https://nodejs.org/en/docs/
- dotenv: https://www.npmjs.com/package/dotenv
Coming Soon
laravel,php
16m:43s
Apr 23, 2026
Deployment Considerations
Deployment is where great code meets reality.In this episode of the Pragmatic Laravel series, we step back from writing features and look at what it actually takes to run a Laravel application in production—reliably, securely, and with confidence.
This isn’t a step-by-step hosting tutorial. It’s a big-picture, practical guide to thinking about deployment the right way.
🧠 What You’ll Learn:
🖥 Deployment Lifecycle
1. Acquire Servers
2. Networking & security
3. Provisioning Environments
4. Deploying Code & Data
5. Configuration & Secrets
6. Monitoring & Observability
🏗 Deployment Architectures
- Single-tier setups
- Multi-tier architectures
- Highly-available systems
⚙️ Automation & Repeatability
- Infrastructure as Code
- Provisioning & deployment scripts
- CI/CD pipelines
- Tools like Ansible, Laravel Forge, & Envoyer
☁️ Managed Services
- When convenience beats control
- Choosing services intentionally
- Platforms like Fly.io & Laravel Cloud
📊 Monitoring & Visibility
- Laravel Horizon & Pulse
- Nightwatch
- Sentry, Posthog, UptimeRobot
🎯 Who This Is For
- Developers ready to ship real applications
- Laravel devs moving beyond localhost
- Anyone who wants to understand deployment—not fear it
💥 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 #CICD #Deployment #Architecture #CleanCode #TekCasts
javascript
14m:35s
Aug 19, 2025
Destructuring & Spread Syntax
Tired of writing extra lines just to pull out values or merge data? In this episode, you’ll learn two super-handy JavaScript features — destructuring and spread syntax — that make your code cleaner, shorter, and easier to read.🎯 What you’ll learn:
Array destructuring — extract values directly into variables, skip items, and set default values.
Object destructuring — grab properties by name, rename them, and give them defaults.
Spread syntax — copy, merge, and expand arrays or objects with ease, plus collect the “rest” of the values.
💡 Why it matters:
These techniques are used constantly in modern JavaScript — especially in frameworks like React — so mastering them now will make your future projects smoother and more efficient.
By the end of this episode, you’ll be able to take apart and recombine data like a pro. 🚀
oop,php
9m:14s
Apr 10, 2025
Development Environment
Before diving into PHP, we need to set up a solid development environment—the pragmatic way. ⚙️In this video, we’ll walk through cloning the starter HTML version of our app, laying the groundwork for everything we’ll build together. This version is clean, organized, and perfect for transitioning into dynamic PHP. 🧱
We’ll also introduce the application starter kit that powers this series:
🔗 https://github.com/rcravens/kit
This kit streamlines development with useful tools and structure that we’ll build on throughout the project.
Our project lives here:
🔗 https://github.com/rcravens/rate_this_pic.git
Be sure to check out the v1-static-html tag to follow along with this video.
Let’s get your environment ready so you can build with confidence! 🚀
oop,php
19m:34s
May 29, 2025
Displaying Reviews
Let’s bring feedback into the spotlight! In this video, we enhance the photo detail page by fetching and displaying user reviews from the database. 💬Here’s what we’ll cover:
Query the database for all reviews associated with a given photo 📄
Loop through the reviews and display them on the photo page 🎞️
Calculate a summary (like average stars or total reviews) 📊
Display the summary alongside the photo for quick insight 🧠
By the end, version v15-show-reviews adds real voices to each photo—making the app feel more alive and interactive. 🚀
oop,php
15m:41s
Apr 22, 2025
Dynamic Navigation
Now that we’ve extracted layout components, it’s time to make them truly dynamic! In this video, we’ll wire things up so our layout reacts intelligently to the current page. ⚡Here’s what we’ll tackle:
• Use a $page_header variable in _header.view.php to set page-specific titles 🏷️
• Introduce a helpful dd() (dump and die) debugging function and place it in app/globals.php 🛠️
• Refactor _nav.view.php to highlight the active page using $_SERVER['REQUEST_URI'] 🎯
With these changes, our navigation becomes context-aware and our layout system becomes fully functional. This version is tagged as v4-functional-layout—a polished step forward! 🚀
oop,php
4m:26s
May 27, 2025
Dynamic Photo Gallery
Time to showcase our images! In this video, we build a photo gallery page that lists all uploaded photos and links each one to its detailed view. 🧱Here’s what we’ll do:
Create a new show.view.php by copying and modifying index.view.php 🧬
Add a new route and controller method to handle the gallery page 🗺️
Display all photos in a clean list or grid, each with a clickable link to its detailed photo page 🔗
With version v14-photos-list, our app now lets users browse through all uploaded images—laying the foundation for interactivity and exploration. 🚀
oop,php
7m:43s
May 22, 2025
Dynamic Photo Page
Let’s make our photo pages come alive! In this video, we turn the static photo view into a fully dynamic experience by using the $_GET superglobal to load data based on query parameters. 🔍Here’s what we tackle:
Update the PhotoController to read the id from $_GET and query the database accordingly
Show a 404 error if the id is missing or the record isn’t found 🛑
Improve our error views (404 and 500) by rendering them within the layout for a consistent look 🎨
Refactor the View class to default to the main layout (layout.app) while still allowing overrides
Fix a potential infinite render loop in the layout logic 🐛
Clean up unnecessary calls to ->layout() by relying on the new default behavior 🧼
By the end, version v13-photo-query-param will serve up the right photo with the right layout—dynamically and elegantly. 🚀
laravel,php
23m:21s
Dec 9, 2025
Eloquent ORM
In this episode, we move from raw query building into Laravel’s Eloquent ORM — an elegant way to interact with your database using PHP objects instead of SQL queries.Eloquent simplifies data access, manages relationships automatically, and helps keep your code clean, readable, and expressive.
🔍 In this video, you’ll learn how to:
- Create Eloquent models for your tables
- Define relationships between surveys, sections, and questions
- Replace complex Query Builder logic with elegant model relationships
- Use eager loading with with() for efficient database queries
- Leverage attribute casting for arrays and enums
💡 You’ll see how Eloquent turns your data model into a first-class part of your application — paving the way for true MVC architecture in upcoming episodes.
🧠 Key Commands
- php artisan make:model Survey
- php artisan make:model SurveySection
- php artisan make:model SurveyQuestion
🔗 Resources
- Eloquent ORM Documentation: https://laravel.com/docs/12.x/eloquent
- TekCasts – Database Model Abstractions: https://tekcasts.com/play/pragmatic-php-database-model-abstractions
- TekCasts – GitHub Repo (Rate This Pic): https://github.com/rcravens/rate_this_pic/blob/master/app/Framework/Model.php
💥 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 #Eloquent #PHP #WebDevelopment #LaravelTutorial #FullStack #TekCasts #CodeBetter #DevTips #LaravelForDevelopers
encapsulation,oop,php
9m:39s
Mar 22, 2025
Encapsulation: Public & Private
Ready to lock down your PHP skills? 🚀 In this video, we crack open Encapsulation—a core OOP concept that keeps your code secure, organized, and powerful! 🔐I’ll break down what encapsulation is and why it matters, then dive into real-world examples. You’ll see how getters and setters help you access private properties safely, while letting you enforce business logic behind the scenes 🕵️♂️.
By the end, you’ll be writing cleaner, safer, and smarter PHP code like a pro! ⚡💻
javascript
16m:58s
Aug 28, 2025
Error Handling
Even the best-written code can run into unexpected situations — and that’s where error handling comes in. In this episode, you’ll learn how to make your programs more reliable by anticipating problems and handling them gracefully.� What you’ll learn:
- Why handle errors? The importance of defensive programming.
- try, catch, finally — how to catch problems without crashing your program.
- Throwing custom errors when you detect something invalid.
- Practical example with input validation (like stopping someone from dividing by zero).
� Why it matters:
Professional developers don’t just write code that works — they write code that fails gracefully. Error handling is what separates quick scripts from robust applications.
By the end of this episode, you’ll know how to protect your code against the unexpected — and keep your users from seeing cryptic crashes. �
browser,javascript
15m:49s
Oct 9, 2025
Error Handling in the UI
🚨 Errors happen—but how you handle them makes all the difference!In this episode of TekCasts, we dive into Error Handling in the UI so your apps don’t just crash and burn 💥 but instead fail gracefully ✨.
Here’s what we’ll cover:
⚡ try…catch…finally – the building blocks of error handling
⏳ Async errors with async/await (and why you should never just throw inside a promise)
🛡️ Graceful degradation – fallback messages & backup UI
👩💻 Turning scary red stack traces into friendly user messages (“Could not load data, please try again.”)
🌐 Real-world demo: handling fetch failures in the browser
By the end, you’ll know how to keep users confident and your app resilient—even when things go wrong. 🚀
javascript
4m:6s
Sep 18, 2025
ES6 Classes
JavaScript leveled up with ES6, giving us a much cleaner, more intuitive way to write object-oriented code: the class keyword. ✨ In this episode, we’ll modernize our approach and see how classes make our code easier to read and maintain—while still being built on prototypes behind the scenes.Here’s what we’ll cover:
🆕 Introducing the class keyword and why it’s a game-changer.
🏗 Defining constructors, properties, and methods with sleek new syntax.
🐾 Creating instances and bringing our objects to life.
🔎 A peek under the hood—how classes are really just a friendlier way to work with prototypes.
By the end, you’ll be comfortable building your own classes and ready to wield this modern syntax like a pro. 🚀
browser,javascript
19m:20s
Sep 11, 2025
Event Listeners & Handling Events
Every modern web app comes alive through events—clicks, key presses, form submissions, and everything in between. In this video, we’ll dive deep into the event-driven magic that powers the browser.Here’s what you’ll learn:
✨ Event Listeners — how to add and remove them like a pro
� The Event Object — unlock target vs currentTarget and why it matters
� Event Flow — capturing, bubbling, and how events move through the DOM
⛔ Stopping Events — when to use stopPropagation and preventDefault
� Delegation Patterns — attach one listener to rule them all (cleaner, faster code!)
Along the way, we’ll explore real-world examples like:
� Showing the mouse position in real-time
⌨️ Restricting input fields to just letters
� Preventing forms from submitting until validation passes
❌ Making “remove” buttons work with delegated events—no messy code needed
This session takes you from basic clicks ➡️ to professional event handling patterns that scale as your app grows.
Ready to master the secret sauce of interactivity? �
javascript,node
15m:14s
Oct 16, 2025
Event Loop & Async Basics
👉 JavaScript is single-threaded… so how does Node.js handle multiple tasks at once without freezing up? ⚡️In this episode, we break down the event loop and explore the core async patterns every Node developer needs to know:
💥 You’ll learn:
- The single-threaded event loop and how Node.js handles I/O using libuv.
- Why non-blocking execution makes Node.js great for scalable servers.
- Callbacks (and why they can lead to callback hell 😱).
- Promises as a cleaner, modern alternative.
- Async/Await — syntactic sugar that makes async code look synchronous.
⚡️ With practical code examples, you’ll see how to move from nested callbacks ➡️ chained promises ➡️ clean async/await.
👉 Key takeaway: Mastering async is essential for writing reliable Node.js applications.
💡 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 & References:
- Node.js Blocking vs Non-blocking: https://nodejs.org/en/learn/asynchronous-work/overview-of-blocking-vs-non-blocking
- MDN Promise Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
- MDN Async/Await Guide: https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Async_JS/Promises
- Understanding libuv: https://zmushegh.medium.com/understanding-libuv-the-powerhouse-behind-node-js-b5349c8f0d75
Coming Soon
laravel,php
19m:26s
Apr 2, 2026
Events & Listeners
In this episode, we introduce event-based programming to the survey application and take a big step toward a decoupled, scalable architecture.Instead of tightly coupling business logic inside controllers, we model real application behavior using events and listeners — allowing the system to react naturally to state changes and user actions. This is where the workflow starts to feel alive.
What You’ll Learn:
⚡ Event-Based Programming Concepts:
• What events are (and what they are not)
• Decoupling producers from consumers
• Synchronous vs asynchronous execution
• Why events scale better than conditionals
🛠 Hands-On Laravel Events:
• Creating observable events
• Creating multiple listeners
• Dispatching events from your domain
• Queuing listeners for background execution
• Convention-based auto-discovery
📚 Official Docs: https://laravel.com/docs/12.x/events
🗺 What’s Next: Laravel Commands
💡 This episode lays the foundation for truly reactive Laravel applications.
If you’ve ever felt your controllers getting “too smart,” this is the pattern you’ve been looking for.
💥 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