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
6m:9s
Mar 28, 2025
Calculator - Developer Experience
Great code isn’t just about functionality—it’s about how easy and intuitive it is to use! 💡 In this video, we refine our OOP Calculator to enhance the developer experience, making it cleaner, simpler, and more powerful.🔹 Reimagining how we’d ideally like to use this calculator in real-world code ✨
🔹 Refactoring for better readability & usability 🏗️
🔹 Making integration effortless for developers 💻
By the end, our calculator will feel natural to use—setting the stage for clean and elegant PHP development! 🔥 Let’s dive in! 🎬
oop,php
13m:53s
Mar 28, 2025
Calculator - Dynamic Operators
What if our calculator could easily support new operations beyond just addition, subtraction, multiplication, and division? 🤔 In this video, we take extensibility to the next level by refactoring our operator logic into a flexible, modular design! 🎯🔹 Transforming operators into dedicated classes 🏗️
🔹 Creating an Operator Interface for consistency ✅
🔹 Implementing a registration system for dynamic operators 🔄
🔹 Demo: Adding a 🔥 Power Operator for exponentiation! ⚡
By the end, our calculator will be fully extensible—ready to support any operation with ease! 💡 Let’s build it! 🎬
oop,php
9m:29s
Mar 28, 2025
Calculator - Namespaces & Autoloading
n the final episode of our Object-Oriented PHP series, we take our calculator to professional-grade by introducing Namespaces & Autoloading! 🎯🔹 Understanding the PSR-4 standard for structured code 🏗️
🔹 Adding namespaces to each class with the namespace keyword 📌
🔹 Using use statements to simplify class dependencies 🔄
🔹 Leveraging Composer’s autoload feature for seamless class loading ⚙️
With these best practices, our project is now well-structured, scalable, and ready for the real world! 🌍 Let’s finish strong! 🎬🔥
oop,php
15m:50s
Mar 28, 2025
Calculator - Returning Objects
Returning native PHP types can be tricky—often requiring extra knowledge about the return structure. 🤔 But what if we could make our code cleaner, clearer, and more intuitive? 💡In this video, we take our OOP Calculator to the next level by:
✅ Identifying the challenges of returning native types 🎭
✅ Creating dedicated return type classes 🏗️
✅ Refactoring our calculator to use object returns for a better developer experience 🛠️
By the end, your code will be easier to understand, maintain, and extend! 🔥 Let’s do this! 🎬
browser,javascript
8m:17s
Sep 9, 2025
Class & Style Manipulation
Ready to take your DOM game up a notch? In this video, we’ll unlock the secrets of making your pages look alive with style changes and class toggles.✨ You’ll learn how to:
🔹 Add, remove, and toggle classes with ease
🔹 Directly style elements using .style 🎯
🔹 Know when to use CSS classes vs inline styles 🧩
🌙 Build a slick dark mode toggle demo
By the end, you’ll be styling like a pro—your elements won’t just sit there…they’ll respond, adapt, and shine ✨🔥
oop,php
5m:27s
Mar 22, 2025
Classes and Objects
Welcome to the foundation of Object-Oriented Programming (OOP) in PHP! In this episode, we break down one of the most important concepts in OOP—classes and objects.We’ll start by creating an empty class using the class keyword and explore how a class acts as a blueprint for building objects. Then, we’ll bring it to life by instantiating objects with the new keyword, transforming our blueprint into real, usable instances. You’ll learn how every object is an independent version of a class, ready to hold data and perform actions.
By the end of this video, you’ll have a solid grasp of classes and objects, setting the stage for writing cleaner, modular, and scalable PHP code! 💡🔥
javascript
8m:31s
Sep 2, 2025
Closures and Lexical Scope
In this episode, we unlock one of JavaScript’s most powerful (and sometimes mysterious) features: closures. You’ll see how functions can “remember” the variables around them, even after the outer function has finished running.🎯 What you’ll learn:
- Lexical scope — how JavaScript decides which variables a function can access.
- Closures — functions carrying their environment with them.
- Practical use cases:
* A simple counter that remembers its value.
* Using closures to create private data in JavaScript.
💡 Why it matters:
Closures are everywhere in modern JavaScript — from event listeners to libraries and frameworks. Understanding them gives you the power to write smarter, safer, and more reusable code.
By the end, closures won’t feel like “magic” — they’ll be a tool you can confidently use to structure your programs. 🔑
laravel,php
20m:47s
Nov 27, 2025
Component Slots & Attributes
In this episode, we take another major step toward a fully dynamic survey system by building out the Survey Data Model. With a clean structure for surveys, sections, and questions, we can now render entire surveys dynamically — no more hard-coded components!💡 What You’ll Learn
- Creating a Survey Data Model with sections and questions
- Enhancing the Question Model with a type property
- Leveraging Laravel’s to render components dynamically
- Refactoring your survey.blade.php for flexibility and maintainability
- Preparing the foundation for storing data in the database
🧠 This is where the Survey App becomes truly data-driven — paving the way for dynamic survey creation and admin-level editing in future episodes.
📺 Up Next: Databases — we’ll introduce migrations, Eloquent models, and link our survey data to persistent storage.
#Laravel #PHP #TekCasts #WebDevelopment #CleanCode #Blade #FullStack #SoftwareEngineering
php
1m:5s
Mar 19, 2025
Congrats & Recap
🎉 You did it! 🎉 You’ve completed the “PHP for Beginners” series, and you now have a solid foundation in PHP! In this short recap, we’ll:✅ Review what we’ve learned—from loops and functions to forms and reusable code.
✅ Celebrate your progress and encourage you to keep coding!
✅ Hint at exciting next steps, like database queries and object-oriented programming.
This is just the beginning of your PHP journey! Keep practicing, keep building, and get ready for more advanced topics. 🚀
javascript
10m:2s
Sep 16, 2025
Constructor Functions & Prototypes
Before ES6 classes came along, JavaScript had its own way of doing object-oriented programming—using constructor functions and prototypes. In this episode, we’ll take a step back in time and uncover how developers structured code for reusability and efficiency. 🏗️Here’s what we’ll explore:
🏭 Object factories vs constructor functions—and why constructors gave us more power.
🆕 The magic of the new keyword and how it creates object instances.
🛠 Adding methods through prototypes to keep memory usage efficient.
💡 Why this pattern still matters today (hint: classes are built on top of it!).
By the end, you’ll see how prototypes formed the backbone of JavaScript’s object system—and why understanding them gives you a deeper grasp of how modern classes really work. 🚀
oop,php
9m:31s
Mar 22, 2025
Constructors and Destructors
Time to build it up and tear it down—PHP style! 🚀 In this video, we dive into constructors and destructors, the dynamic duo that controls how objects come to life 🏗️ and gracefully clean up after themselves 🧹.You’ll learn how constructors automatically set up an object when it’s created, making your code more efficient ⚡. Then, we’ll explore destructors, the unsung heroes that handle cleanup duties when an object is no longer needed.
By the end, you’ll be crafting smarter, more efficient PHP classes like a true OOP wizard! 🧙♂️💻
javascript
13m:21s
May 1, 2025
Control Flow – Conditionals
Programming gets powerful when your code can make decisions — and that’s exactly what this episode is all about! Learn how to use conditionals to respond to different situations and write smarter, more dynamic scripts. 🚦🎯 Here’s what we’ll cover:
• Master the classic if / else if / else structure to control the flow of your program.
• Use boolean conditions to trigger different outcomes based on logic.
• Learn the sleek and compact ternary operator for quick, inline decisions.
🎥 Visual Walkthroughs:
• Build real-time examples that react to changing values like temperature and age.
• Watch how branching logic helps your programs behave differently in different scenarios.
• Break down the syntax so you not only write it — you understand it!
By the end of this episode, you’ll have the tools to write JavaScript that responds to the world around it! 🌍💡
javascript
12m:27s
May 6, 2025
Control Flow – Loops
Ever wish your code could repeat itself without repeating yourself? That’s the magic of loops — and in this episode, you’ll learn how to write them like a pro. 🌀🎯 Here’s what we’ll cover:
• Why loops matter: run code multiple times without copying and pasting.
• Use the classic for loop to count or iterate through values.
• Learn the while loop for flexible repetition when the end condition isn’t known in advance.
• Try out the do…while loop, which guarantees at least one execution.
• Understand break and continue for more control inside your loops.
🎥 Visual Walkthroughs:
• See real-time examples of different loop types in action.
• Learn when to use each loop and how they differ in behavior.
• Practice repetition with simple, visual examples to build confidence.
By the end of this episode, you’ll be looping like a champ — and writing code that works smarter, not harder! ♻️⚙️
Coming Soon
laravel,php
23m
Dec 18, 2025
Controller Basics
In this episode, we tie together Routes, Models, and Views by introducing the Controller — the final piece of Laravel’s MVC architecture.You’ll learn how to:
✅ Create controllers using php artisan make:controller
✅ Organize request-handling logic into clean, reusable classes
✅ Connect routes to controller methods (actions)
✅ Implement GET and POST routes for taking a survey
✅ Apply route model binding and request/response patterns
We’ll also clean up a few loose ends before diving into survey submissions:
- Add default error pages
- Rename SurveyStatusType → SurveyStatus
- Guard routes against non-active surveys
- Add an index to hash in migrations
- Demonstrate booted() and enum casting in the Survey model
- Simplify the factory by removing hash logic
Copy these commands to follow along:
php artisan make:controller TakeSurveyController
Example routes:
- Route::get('/s/{survey:hash}', [TakeSurveyController::class, 'show'])->name('survey.show');
- Route::post('/s/{survey:hash}', [TakeSurveyController::class, 'store'])->name('survey.store');
📘 Resources
- Laravel Controllers Docs: https://laravel.com/docs/12.x/controllers
- Laravel Routing Docs: https://laravel.com/docs/12.x/routing
- Laravel Model Events Docs: https://laravel.com/docs/12.x/eloquent#events
- Laravel Error Pages Docs: https://laravel.com/docs/12.x/errors#http-exceptions
- Migration Modifications Docs: https://laravel.com/docs/12.x/migrations#modifying-columns
#Laravel #PHP #WebDevelopment #MVC #Controllers #Routing #Eloquent #TekCasts #LearnToCode
javascript,node
9m:29s
Nov 27, 2025
Cookies
HTTP is stateless — every request is brand new.So… how do we remember users, personalize experiences, or keep them logged in?
That’s where cookies come in 🍪✨
👉 In this episode, you’ll learn how to:
🚀 Read and parse cookie data from incoming requests
⚙️ Set and clear cookies from your server responses
🔐 Understand cookie flags like HttpOnly, Max-Age, and Path
🧠 Explore real-world uses like sessions, personalization, and analytics
By the end, you’ll have a working mental model of how state travels between client and server — and how cookies form the foundation of sessions and authentication in modern web apps.
💡 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: HTTP Cookies — https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
- Node.js HTTP Module — https://nodejs.org/api/http.html
- MDN: HTTP Headers — https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
oop,php
8m:23s
May 6, 2025
Creating A Master Layout
Let’s streamline our app’s structure even further! In this video, we tackle layout repetition by introducing a master layout—making our pages cleaner and more consistent. 🧼Here’s what we’ll cover:
• Refactor repetitive layout code into layout/app.view.php using a $page_content placeholder for dynamic content 🧩
• Enhance our view() helper function to accept a third $layout parameter 🧠
• Update controllers to support a page_layout variable for flexibility in rendering 🛠️
• Clean up our individual page views for clarity and focus ✂️
• Bonus: Improve our dd() helper to accept any number of arguments using ...$var 🧪
By the end of this refactor, we’ll be rocking version v8-create-layout—a polished, DRY, and maintainable foundation for future growth. 🚀