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
12m:3s
Mar 22, 2025
Properties and Methods
Unlock the power of Properties and Methods in PHP OOP! In this action-packed lesson, we dive into public and private properties & methods, breaking down the magic of encapsulation 🔒. Watch as we create a class, instantiate objects, and interact with public properties & methods from the outside 🌎. But wait—what about private ones? 🤔 No worries! I’ll show you how to work with them inside the class like a pro.Get ready to level up your PHP skills one method at a time! ⚡👨💻
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
laravel,php
11m:17s
Nov 11, 2025
Question Data Model
In this episode, we shift from static components to data-driven questions by introducing a simple Question Data Model. This prepares our Survey App to dynamically render questions based on data — not hard-coded markup.💡 What You’ll Learn
- How to represent survey questions as PHP objects
- Passing structured question data into Blade components
- Using props to render reusable question types
- Handling dynamic attributes like placeholders, required flags, and default answers
- Setting up for conditional logic and future dynamic surveys
🧠 You’ll see how clean data structures unlock flexibility in your Blade components — a key step toward building a fully dynamic survey system.
📺 Up Next: Survey Data Model — where we combine question data into full survey definitions and begin organizing sections for more complex forms.
💥 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 #PHP #WebDevelopment #TekCasts #Blade #Eloquent #FullStack #SoftwareEngineering #LaravelDevelopers #CleanCode #ComponentDrivenDevelopment
javascript,node
10m:34s
Dec 30, 2025
Recap & Next Steps
Your Node.js journey comes full circle 🌎✨In this final episode of JavaScript on the Server, we recap everything you’ve learned — from your first console.log() to deploying a full-featured web app — and explore what comes next 🚀
👉 In this episode, you’ll:
🧩 Review each module and how it fits into the bigger picture
⚙️ Connect key concepts like routing, MVC, sessions, and middleware
💡 See how frameworks build on the foundation you’ve created
🧭 Discover practical next steps to deepen your skills
🔥 Leave with a clear path forward for your JavaScript and Node.js mastery
By the end, you’ll have a strong grasp of how the server-side ecosystem works — and the confidence to keep building, learning, and exploring 💪
💡 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
Key Topics from this Series:
- Node.js HTTP → https://nodejs.org/api/http.html
- Node.js fs → https://nodejs.org/api/fs.html
- Node.js path → https://nodejs.org/api/path.html
- EJS Templates → https://ejs.co/
- Express (for further learning) → https://expressjs.com/
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
Coming Soon
laravel,php
19m:14s
Feb 12, 2026
Resource Controllers
In this video, we continue building our survey application by exploring Resource Controllers, CRUD operations, and RESTful routing conventions in Laravel.You’ll learn how Laravel connects controllers, models, and routes using expressive, convention-driven patterns that dramatically simplify your codebase.
What We Cover
✔ Controllers
- Off-loading logic from route files
- Organizing application behavior into coherent action methods
- Coordinating Models and Views
✔ Eloquent Models
- Representing database tables as objects
- Simplifying database interactions
- Handling model relationships
- Working with PHP instead of SQL
✔ CRUD Fundamentals
- Create, Read, Update, Delete
- Why nearly every model needs these operations
✔ RESTful Routes
- Mapping CRUD operations to HTTP verbs
- GET, POST, PUT/PATCH, DELETE
- Using _method to simulate non-GET/POST verbs in forms
✔ Resource Controllers
- Scaffolding with: `php artisan make:controller SurveyController --resource`
- Understanding index, create, store, show, edit, update, destroy
- Conventions that keep your controllers clean and predictable
✔ Resourceful Routing
- Connecting all CRUD routes with a single line: `Route::resource('surveys', SurveyController::class);`
- Overview table of every generated route, verb, URI, and action
✔ Nested Resources & Relationships
- Handling survey sections with nested resource routes
- Using ->scoped() to ensure child models belong to parent models
- Auto-generated nested route names (e.g., surveys.sections.index)
Links & References
- Laravel Resource Controllers Documentation: https://laravel.com/docs/12.x/controllers#resource-controllers
If you're learning Laravel the pragmatic way — by building real features, with clean code, using the framework as intended — hit subscribe and follow the full series!
#Laravel #PHP #RESTful #CRUD #CleanCode #WebDev #TekCasts
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. 🚀
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
laravel,php
24m:14s
Dec 16, 2025
Routing Basics
In this episode, we dive into Laravel’s routing system — the foundation of handling incoming requests and returning the right responses.You’ll learn how to:
✅ Define routes using closures or controllers
✅ Use route parameters, dependency injection, and model binding
✅ Explore HTTP verbs like GET, POST, PUT, and more
✅ Work with different response types — views, JSON, files, and downloads
✅ Understand how routing connects to your app setup in bootstrap/app.php
We’ll also update our app to:
- Create /s/{id} and /s/{survey} routes to demo parameters and DI
- Add a hash column to the surveys table
- Update model factories and re-seed data
- Introduce route model binding with /s/{survey:hash}
Laravel Routing Docs: https://laravel.com/docs/12.x/routing
💥 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 #PHP #Routing #Eloquent #WebDevelopment #ModelBinding #LaravelTips #FullStack #TekCasts #LearnToCode
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
laravel,php
29m:23s
Mar 24, 2026
Sending Emails
Sending emails is where your application officially leaves the sandbox and enters the real world.In this video, we finish the Survey Invites feature by wiring up Laravel Mail—covering everything from configuration to creating and sending real email invitations.
Along the way, we clean up loose ends, refactor problem areas, and tighten up the user experience so the system feels intentional, not accidental.
What you’ll learn in this lesson:
✨ Refactoring and cleanup after major feature work
🔐 Managing invite-only surveys correctly
📬 Laravel mail drivers, transports, and configuration
📨 Creating a Mailable class
🚀 Sending survey invite emails (dev + prod-ready)
🧩 UI improvements and edge-case handling
No Livewire. No shortcuts. Just clear MVC design, maintainable code, and real-world Laravel patterns you can reuse with confidence.
🎯 Up Next:
Automated notifications using jobs and queues — taking survey invites to the next level.
💥 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
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
javascript,node
19m:45s
Dec 2, 2025
Sessions
Your Node.js server just got smarter 🧠⚡️HTTP is stateless — but your apps don’t have to be.
In this episode, you’ll learn how to manage sessions to persist user data between requests, handle flash messages, and clean up session files automatically — all without a framework.
👉 In this episode, you’ll learn how to:
🔐 Understand the difference between cookies and sessions
🗂️ Build a simple, file-based SessionManager from scratch
💾 Store and retrieve session data safely on the server
⚙️ Add flash messages and automatic session cleanup
🧩 Use JavaScript Proxy objects to auto-save session data
By the end, your Node.js apps will remember — even when HTTP forgets 😉
💡 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 & Docs 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
- MDN Proxy: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
Coming Soon
laravel,php
26m:12s
Feb 5, 2026
Sessions
Learn how Laravel sessions work, why they matter, and how to choose and use the right session driver for your app.📺 In this video you'll learn:
- What sessions are and how they let servers remember users across requests.
- The trade-offs between session storage drivers: file, cookie, database, redis, memcached, dynamodb, and the built-in array driver for testing.
- How to store, retrieve, and delete session data in Laravel (helpers, request-based APIs, and Blade usage).
- Flash data: how Laravel flashes temporary data (e.g., validation errors) and how to reflash/keep it.
- Session lifecycle operations: regenerate session ID, invalidate session, and best practices for production.
- Guidance on which driver to pick based on scalability, speed, persistence, and reliability.
✨ Who is this for?
Backend devs and full-stack devs building real Laravel apps who want practical guidance for session management and how session choice affects production behavior.
🔧 Useful links (mentioned in the video):
- Official Laravel Sessions docs — https://laravel.com/docs/12.x/session
📌 Key takeaways:
- Sessions store server-side data tied to a user via a cookie (session id).
- Driver choice matters — Redis is great for high-traffic apps; file or database may suffice for smaller apps.
- Use flash data for one-time messages (validation errors, success notices).
- Always regenerate/invalidate sessions appropriately on sensitive actions (login/logout) to help prevent fixation.
💥 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 #LaravelSessions #SessionManagement #PHP #WebDevelopment #BackendDevelopment #FullStackDev #TekCasts