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
linux
13m:51s
Feb 3, 2025
File System - Wildcards, Find, Search
This video is part of the Linux Crash Course series. This video will continue exploring the Linux File System. In this video you will learn how to search the file system for files or content inside those files.Github Repo: https://github.com/rcravens/linux-crash-course
linux
23m:8s
Feb 3, 2025
File System Basics - Navigation
This video is part of the Linux Crash Course series. This video will introduce the Linux File System. In this video you will learn how to navigate the file system.Github Repo: https://github.com/rcravens/linux-crash-course
javascript,node
15m:13s
Nov 4, 2025
File-Based Storage
Ever wondered how to persist data without setting up a full database? In this episode, we explore file-based storage in Node.js — a simple way to read, write, and manage data using the filesystem.Perfect for small projects, prototypes, or when you just need to get things done quickly ⚙️💾
👉 You’ll learn how to:
- Read and write JSON files asynchronously using fs/promises
- Implement full CRUD (Create, Read, Update, Delete) operations
- Handle data safely and understand file-based storage limitations
- Prepare your app for a transition to a real database later
💡 Relevant Links
Node.js Docs:
- Reading Files: https://nodejs.org/en/learn/manipulating-files/reading-files-with-nodejs
- Writing Files: https://nodejs.org/en/learn/manipulating-files/writing-files-with-nodejs
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
Coming Soon
javascript,node
19m:51s
Dec 18, 2025
Final Refactor
Your JavaScript framework is complete 🧠⚙️In this final refactor, we polish our custom Node.js MVC framework — bringing everything together into a clean, organized, and extensible foundation worthy of real-world projects 💪
👉 In this episode, you’ll learn how to:
🧩 Move core classes like BaseController and BaseModel into the app layer
🧠 Refine the Router to handle static assets and feed request body data to middleware
🔒 Strengthen encapsulation and enforce single responsibility
✍️ Apply DRY principles and consistent coding style across the codebase
🎁 Add a fun “Easter Egg” route using your new framework
By the end, you’ll have built a lightweight but powerful Node.js framework — and gained a deep understanding of how professional frameworks like Express are designed under the hood 🚀
💡 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 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
oop,php
12m:54s
Jul 17, 2025
Final Review & Refactor
This video is all about the last layer of polish — a final walkthrough to tidy up code, views, and structure across the project. Here’s what we touched:🖼️ Views
- index.view.php: added wider screen support with max-w-7xl.
- Removed a duplicate header to clean up the layout.
🧱 Framework Cleanup
- Database.php: fixed IDE issues and added helpful annotations.
- globals.php: minor tweaks to smooth dev experience.
- Model.php: highlighted PHPDoc comments, reviewed skip(), take(), and orderBy() methods.
- Session.php and View.php: both got the “FII” treatment (Fix IDE Issues).
📦 Http Layer
- Policies:
- UserPolicy: FII.
- Controllers:
- AuthenticationController, PhotoController, RegisterController, ReviewController, and UploadController: all reviewed and cleaned up.
🌐 Public Entry Point
- index.php: adjusted try/catch block for better error handling and clarity.
🎯 And that wraps things up at v28-review-refactor — setting the stage for a maintainable, scalable app with a solid foundation.
Coming Soon
laravel,php
18m:20s
Dec 30, 2025
Fingerprint Refactoring
In this video, we tighten up our survey flow by performing several important refactors across models, routes, and controllers. These changes lay the groundwork for securely capturing survey responses and preventing duplicates.Topics Covered
- Adding model relationships: Survey → responses, SurveyQuestion → answers
- Introducing a fingerprint-based protection to avoid duplicate survey submissions
- Updating database migrations to support hashed response identifiers
- Creating a clean, structured route layout for:
✔️ Viewing a survey
✔️ Submitting a fingerprint
✔️ Viewing the survey questions
✔️ Submitting survey answers
- Refactoring TakeSurveyController to support the new workflow
#Laravel #PHP #WebDevelopment #FullStack #LaravelTutorial #Programming #SurveyApp #TechEducation #LaravelDevelopers #BuildInPublic #TekCasts
oop,php
18m:18s
Jun 3, 2025
First Review & Refactor
It’s time to pause and sharpen the tools. In this video, we take a step back to review our progress and clean up our codebase, because maintainability is key to sustainable development. 🛠️Here’s what we tackle in version v16-framework-refactor:
Emphasize the value of regular review and refactor sessions 🧠
Review our entry point (public/index.php) and extract logic into a new App class 📦
Create Framework/App as a singleton with a start() method to centralize bootstrapping 🚀
Address messy relative paths like '../../' by creating a dedicated Path helper class 🧭
Build Framework/Path as a singleton and introduce helpers like app(), root(), require_app(), and require_root()
Refactor all path-related code to use these clean, expressive helpers 📁
Move globals.php into the Framework directory to keep framework-related code encapsulated
Clean up and clarify all require/import statements 🔄
This refactor sets us up for a cleaner, more organized foundation—making our mini-framework easier to navigate, extend, and love. 💡
javascript,node
11m:4s
Dec 9, 2025
Flash Messages
Your app just got a voice 💬✨It’s time to give your users clear feedback with flash messages — those friendly pop-ups that say things like “User created” or “Access denied.”
In this episode, we’ll bring interactivity and state together to create a polished, professional experience.
👉 In this episode, you’ll learn how to:
🚀 Implement flash messages using your existing session system
⚙️ Build alert helpers (req.alert.success, req.alert.error, req.alert.warn)
🧩 Pass flash data into your EJS views for dynamic display
💡 Automatically clear messages after they’re shown
🎨 Create a reusable _flash.ejs component for consistent UX
By the end, your Node.js app will communicate like a pro — giving users instant, elegant feedback ⚡️
💡 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 Documentation: https://nodejs.org/en/docs/
- EJS Docs: https://ejs.co/
- MDN Web Docs – JavaScript Guide: https://developer.mozilla.org/en-US/docs/Web/JavaScript
oop,php
17m:11s
Jun 19, 2025
Fluent Validation
In this step, we introduced a flexible and expressive validation system.🧱 Created the Framework/Validation class and added a validate() helper to globals.php.
✍️ The goal was to write intuitive validation logic like:
validate('rating')->integer()->min(0)->max(5)->required();
validate('name')->string()->max(100);
validate('comment')->string()->max(1000);
🧪 This fluent API allowed chaining validation rules for each input field, improving both readability and maintainability.
🔧 We fixed the num_stars constraint in the migration SQL to properly enforce the rating range.
🧹 Ran the migration and reseeded the database to apply the changes.
🕵️ Also refined the reviews logic to default the name to “Anonymous” when one isn’t provided.
This new validation infrastructure enhances data safety and gives us a consistent, clean way to validate user input throughout the application.
Coming Soon
laravel,php
14m:43s
Dec 23, 2025
Form Data & HTTP Post Handlers
In this episode, we begin capturing and storing survey data!We’ll design the database schema for responses and answers, build out models, and wire up the controller logic to handle incoming survey submissions.
This continues our journey of transforming a static survey page into a dynamic Laravel application — step by step, the pragmatic way.
🧠 What You’ll Learn
- Designing survey_responses and survey_response_answers tables
- Creating migrations and Eloquent models
- Defining relationships between surveys, responses, and answers
- Updating POST routes to save incoming data
- Setting up a foundation for validation and fingerprinting
🧩 Commands Used
- php artisan make:migration create_survey_responses_table
- php artisan make:model SurveyResponse
🧱 Database Schema
survey_responses
- id (PK)
- survey_id (FK: surveys)
- user_fingerprint
- completed_at (nullable)
- created_at / updated_at
survey_response_answers
- id (PK)
- survey_response_id (FK: survey_responses)
- survey_question_id (FK: survey_questions)
- answer (json)
- created_at / updated_at
🔗 Resources
- Migrations Docs: https://laravel.com/docs/12.x/migrations
- Eloquent Docs: https://laravel.com/docs/12.x/eloquent
- Routing Docs: https://laravel.com/docs/12.x/routing
#Laravel #PHP #WebDevelopment #Eloquent #DatabaseDesign #Migrations #TekCasts #LearnLaravel #FullStackDevelopment #Controllers
Coming Soon
laravel,php
9m:9s
Jan 6, 2026
Form Validation Requests
In this episode, we refactor our validation logic by introducing Form Request Validation, a powerful Laravel feature that helps keep controllers clean, reusable, and scalable.This step builds on our existing Validation Rules Engine and moves the logic into a dedicated request class—perfect for more complex validation and authorization scenarios.
✨ What You’ll Learn
- How Form Request Validation works in Laravel
- Why moving validation into request classes improves maintainability
- Creating a custom request with php artisan make:request
- Transferring validation and authorization logic from controllers
- Updating the survey flow to use the new request
🧠 Form Request Benefits:
- Cleaner and smaller controllers
- Reusable validation logic
- Built-in support for authorization
- Consistent structure across larger apps
🔗 Resources
- Laravel Form Request Validation Docs: https://laravel.com/docs/12.x/validation#form-request-validation
#Laravel #PHP #WebDevelopment #Programming #CleanCode #FullStack #Validation #LaravelTips #TekCasts
javascript,node
14m:36s
Nov 25, 2025
Forms & Validation
Your web app just got personal 💬Until now, your MVC app could display and fetch data — but it couldn’t accept new information from users. That changes today.
👉 In this episode, you’ll learn how to:
🧠 Handle HTML forms and capture user input
⚙️ Parse incoming POST data in Node.js
✅ Add server-side validation for required fields, length, and patterns
🧹 Understand the difference between validation (checking data) and sanitization (cleaning data)
📄 Build your own simple validation rules and validator utility
By the end, your app will safely handle real user input — a huge step toward full interactivity ⚡️
💡 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:
• MDN HTML Forms Guide: https://developer.mozilla.org/en-US/docs/Learn/Forms
• MDN Client-Side Form Validation: https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation
• Node.js Streams: https://nodejs.org/api/stream.html
• Node.js HTTP Module: https://nodejs.org/api/http.html
• EJS Documentation: https://ejs.co/
Coming Soon
laravel,php
16m:48s
Jan 20, 2026
Fortify Features & Breeze Views
In this video, we build out the authentication views for our Laravel survey application. We continue integrating Laravel Fortify, but now focus on the Blade side of things — customizing the registration and login screens and wiring them to Fortify’s backend actions.You’ll learn:
✨ How Fortify expects your views to be structured
✨ How to adapt the Breeze templates to your app
✨ How to customize labels, errors, and layout
✨ How to create a cohesive guest layout for all auth screens
🔗 Resources
- Laravel Starter Kits: https://laravel.com/docs/12.x/starter-kits
- Laravel Breeze: https://github.com/laravel/breeze
- Laravel Fortify: https://laravel.com/docs/12.x/fortify
#Laravel #LaravelFortify #PHP #WebDevelopment #FullStack #BackendDevelopment #Blade #Authentication #TekCasts #LaravelThePragmaticWay #CodingTutorials #LearnLaravel #CleanCode
browser,javascript
11m:8s
Oct 23, 2025
Framework & Library Overview
In this final video of the JavaScript in the Browser series, we take a step back and look at the broader ecosystem of libraries and frameworks that have shaped modern frontend development.From lightweight utilities to full-scale frameworks, these tools have enabled developers to build interactive, dynamic, and maintainable web applications.
We’ll cover:
📊 Charts & Data Visualization – Chart.js, D3.js, Highcharts, ApexCharts
🗺️ Maps & Geolocation – Google Maps, OpenStreetMap, Leaflet
⚡ DOM Reactivity & State – Alpine.js, React, Vue, Angular, Backbone, jQuery
📝 Form Validation – Parsley, Validate.js, React
🎬 Animations – Anime.js, Typed.js
🏗️ Frameworks – React, Next.js, Vue, Angular, Svelte, Ember, Backbone
This episode provides the big-picture context of where JavaScript has taken us—from direct DOM manipulation to entire ecosystems of specialized libraries and powerful frameworks.
👉 Wrap up the series with us and see how these tools fit into the modern developer’s toolkit!
php
28m:36s
Mar 19, 2025
Functions
Functions are the building blocks of reusable and efficient code in PHP! In this video we break down everything you need to know to get started with functions, including:✅ Function keyword & syntax – How to define and call functions in PHP.
✅ Naming functions – Best practices for readability and maintainability.
✅ Parameters & return values – Passing data and getting results.
✅ Type hinting – Writing safer, more predictable functions.
To make learning fun and practical, we’ll incrementally build a simple calculator that supports addition, subtraction, multiplication, and division! By the end of this tutorial, you’ll have a solid understanding of PHP functions and how to use them effectively in your projects.
javascript
6m:1s
May 15, 2025
Functions as Values & Callbacks
Time to level up! In this episode, you’ll learn that functions are more than just reusable code blocks — they’re first-class citizens in JavaScript. That means you can treat them just like any other value — assign them to variables, pass them as arguments, and return them from other functions. 🧠➡️📦🎯 Here’s what we’ll cover:
• Assigning functions to variables — because yes, functions are values!
• Passing functions into other functions (aka callbacks) to build dynamic, flexible behavior.
• A clear, simple example where you control how a message is spoken: shouted, whispered, or anything in between.
🎥 Visual Walkthroughs:
• See how callback functions work step by step.
• Build intuition around treating functions like any other data.
• Reinforce learning with a clean, beginner-friendly real-time example.
By the end, you’ll start to see the true power of JavaScript’s flexibility — and you’ll be ready for more dynamic programming patterns ahead! ⚙️🚀