Two seasoned salty programming veterans talk best practices based on years of working with Laravel SaaS teams.
…
continue reading
Joel and Aaron tackle the common objection, “We don’t have time,” and show why it usually hides a priority problem. They discuss how to convey the true payoff of process improvements by sharing honest before‑and‑after stories instead of vague promises. You’ll leave with practical ideas for getting buy‑in—whether you’re pitching tests, planning habi…
…
continue reading

1
When validation can protect your app's performance
12:12
12:12
Play later
Play later
Lists
Like
Liked
12:12Joel and Aaron show how ignoring GET request validation can cause performance issues and open your application to abuse. They highlight the importance of bounding pagination and share tips for using form requests to handle unexpected user input. Now go check out the best/only Laravel validation book (00:00) - Quiz on Laravel’s default pagination li…
…
continue reading

1
Stick with conventions and avoid overengineering your Laravel app
8:41
8:41
Play later
Play later
Lists
Like
Liked
8:41Joel and Aaron explore why pushing too many layers of abstraction can backfire in a Laravel application. They highlight the benefits of sticking to the framework’s conventions for long-term maintainability and simpler handoff to future developers. (00:00) - Why framework paradigms really matter (01:00) - When extra abstractions become burdens (03:0…
…
continue reading
Joel and Aaron explore the decision-making process behind hiring or consulting an expert for technical challenges. They discuss examples like adding tests to a large codebase and understanding what questions you need to ask. They also reveal how coaching can help teams avoid common pitfalls and reach solutions faster. (00:00) - Determining why you …
…
continue reading
Joel and Aaron discuss the benefits of having distinct databases for testing and local development. They share how this approach ensures a reliable test suite and avoids conflicts with day-to-day dev work. In the process, they reveal a simpler workflow for setting up new environments and keeping projects stable. (00:00) - Why separate dev and test …
…
continue reading
In this episode, Joel and Aaron discuss the struggles of learning new technology on a late-night side project. They share tips for handling frustration and managing expectations. (00:00) - Late-night MicroPython struggles and revelations (02:15) - Overcoming complex hardware and language hurdles (05:15) - Balancing side projects with realistic expe…
…
continue reading
Joel and Aaron explore the value of using concise video demos instead of long emails or scattered screenshots. They discuss which clients benefit from quick visuals and when text is still best. Want to see us on camera? Join the Mastering Laravel community for our live dev calls. (00:00) - Recording brief Loom demos for updates (02:15) - Considerin…
…
continue reading

1
Examining test layering in multi-tenant requests
13:32
13:32
Play later
Play later
Lists
Like
Liked
13:32Joel and Aaron debate how to structure multi-tenant API requests and tests. They explore the interplay between authentication, tenant headers, and different levels of validation. In the end, they reminisce about old infomercial freebies and wonder if they still exist. (00:00) - Debating authentication vs. tenant header priority (02:15) - Handling u…
…
continue reading

1
When to step outside of Eloquent's comfort zone
12:28
12:28
Play later
Play later
Lists
Like
Liked
12:28Joel and Aaron explore the nuances of when to venture beyond Eloquent in Laravel applications. They discuss specific scenarios where using lower-level database tools might be necessary, while emphasizing the importance of not abandoning Eloquent entirely. The conversation provides practical insights into balancing framework features with performanc…
…
continue reading

1
Feature flags: Temporary tool or permanent solution?
10:13
10:13
Play later
Play later
Lists
Like
Liked
10:13Joel and Aaron dive into a friendly debate about the true nature of feature flags in software development. Drawing from their varied experiences across different programming languages and environments, they explore whether feature flags should always be temporary or can serve permanent purposes. The discussion evolves from a simple disagreement int…
…
continue reading

1
Deciding when to use a new piece of technology
14:26
14:26
Play later
Play later
Lists
Like
Liked
14:26Ooh, something new was just announced. And I have this project coming up. It could be perfect! But should I use it? On today's episode of No Compromises, Aaron and Joel share a conversation they had along these lines on a recent client project and considering the new Flux library from the creator of Livewire. (00:00) - Discussing potential Flux ado…
…
continue reading
Programmers love geeking out and creating specialized terms and vocabulary. Well I can do that too. In today's episode, we talk about "value objects", put our own special definition on it, and discuss when we might use these in a Laravel project. (00:00) - What I mean by "value object" (03:00) - Nicer to do in newer PHP versions (04:00) - Main use …
…
continue reading

1
How to deal with things outside your control on a dev project
10:26
10:26
Play later
Play later
Lists
Like
Liked
10:26Have you ever struggled working with a third party on one of your developer projects? How do you handle that, keeping it professional and also still able to meet your commitments? In today's episode of No Compromises, Aaron and Joel discuss what happened on a recent project and how they think about handling those kinds of difficulties while still h…
…
continue reading
JSON fields can be very useful, but when is a good time to include them in your database design? In today's episode of No Compromises, Aaron and Joel use a couple examples from recent projects to talk through reasons they would and would not use a JSON field. (00:00) - Debating JSON fields in database design (03:06) - Configuration options: JSON vs…
…
continue reading

1
A balanced approach to static analysis in Laravel apps
11:59
11:59
Play later
Play later
Lists
Like
Liked
11:59Static types and tooling have increased the quality of our apps, but sometimes certain features in your Laravel app don't play nicely with static analysis. In today's episode, we talk about how we approach the tradeoffs around making a tool happy without changing how you write code. (00:00) - Our approach to static analysis in a Laravel app (01:30)…
…
continue reading
I write a lot about testing in the Mastering Laravel newsletter. Ever wonder why it's a topic I care so much about? In today's episode, we discuss that question and come up with a few different reasons. (00:00) - Why do we like testing so much? (01:20) - Looking back at how we learned (02:30) - Making it easier to join a project (05:45) - Tests mak…
…
continue reading
What does it really mean when you say you know a particular technology? On today's episode, we discuss this using TypeScript as a specific example. (00:00) - What does it mean to "know" something? (03:15) - Thinking about TypeScript vs strict types in PHP (05:30) - Are you fluent? (06:50) - Silly bit Want help with your Laravel or PHP project? We r…
…
continue reading
Programmers are not shy about telling other programmers when they're wrong. But what can we learn in a situation like his? How can we be wrong with style? In this episode, Aaron and Joel talk about times they've been wrong throughout their career and what they've learned. (00:00) - Aaron admits he was wrong (02:00) - What can I learn from this? (05…
…
continue reading
We can't know everything, so throughout each day we inevitably have questions. On today's episode, we discuss different approaches we have used when we need a little help. (00:00) - Where do you go when you need help? (01:30) - Option 1 - search engines (03:30) - Getting the most out of search results (05:00) - Option 2 - talk to AI (07:00) - Using…
…
continue reading

1
What does it mean if someone says your app is slow?
13:42
13:42
Play later
Play later
Lists
Like
Liked
13:42The dreaded bug report: this app is slow. Ok, but what is slow? I have so many questions! In today's episode, we discuss our approach to getting more information out of that initial bug report, and a methodical approach to locate and quantify the slowness. If you'd like help setting up tools like Xdebug profiling, send us a message.…
…
continue reading

1
Why we have a separate test suite for external services
18:03
18:03
Play later
Play later
Lists
Like
Liked
18:03Writing tests that communicate with a third party can be a little tricky, but we've found an approach that balances speed and confidence. In today's episode, we share that approach and talk through a strategy of how frequently to run tests that talk to the outside world. (00:00) - Why would your tests ever talk to an external service? (02:30) - Wha…
…
continue reading
I don't have time to write an API spec. We're not a giant team. We don't have external users of our API. I've said all these things in the past, but in today's episode, we discuss why you should still consider writing a specification for your Laravel API. (00:00) - Should you write a spec for your API? (01:37) - Thinking through the requirements (0…
…
continue reading

1
Slowly introducing static analysis without changing everything
15:13
15:13
Play later
Play later
Lists
Like
Liked
15:13Maybe you've tried to add static analysis to your Laravel app and got scared away by all the errors. In this episode we discuss how we like to introduce PHPStan to large, long-lived projects in a way that doesn't introduce a lot of risk or change. Would you like help introducing Larastan to your project? That's one of many things we can help you wi…
…
continue reading
Why isn't this working? It can be frustrating when something doesn't work as expected! In this episode, we talk through a recent issue Joel had with sessions and oauth flows. There are a couple principles that apply more broadly. Next time you're stuck on something, let us help! This episode is sponsored by Mailtrap, an Email Delivery Platform that…
…
continue reading

1
Magic methods are okay in the right context
12:06
12:06
Play later
Play later
Lists
Like
Liked
12:06"Magic" methods and properties show up several places in Laravel, as well as third-party packages. They can make certain things easier and less verbose, but there is a trade off. In this episode, we discuss a few different contexts where we like and avoid magic accessors. We'd really appreciate it if you share the show with other Laravel devs. This…
…
continue reading
Admins can do everything in the app, right? Today we discuss a couple reasons why you may want to consider not letting an admin have access to every single feature in your app. 🎉️ Episode 100 is a huge milestone for us. Thank you for listening! This episode is sponsored by Mailtrap, an Email Delivery Platform that developers love. Try for Free at M…
…
continue reading

1
Don't get overwhelmed by errors in your application
11:55
11:55
Play later
Play later
Lists
Like
Liked
11:55Have you ever turned on error tracking in a long-lived app and then got overwhelmed by all the errors happening? We talk through some strategies to not get overwhelmed and make a case that you really should be monitoring this in production. Would you like help with your legacy app? We have a ton of experience making legacy apps a joy to work within…
…
continue reading
We've talked about coding standards before, but this time we approach it from a slightly different angle. Does the way you're code is formatted affect your ability to understand it? Brains are interesting things. Is your code slower than you'd like? We specialize in Laravel performance optimization and we can help! Contact us to discuss.…
…
continue reading
You launched a hobby project and then it starts to get some traction. What next? How do you get a more solid foundation under your app when it comes to database hosting? In this episode, we discuss the common phases we see a database go through during an app's life. And if you'd love some help moving your database or tackling performance issues, gi…
…
continue reading

1
Are you really going to need that abstraction?
11:59
11:59
Play later
Play later
Lists
Like
Liked
11:59Interfaces are a great tool for writing maintainable applications, but it is possible to go "too far" with abstraction. Or maybe, it's a bad use of time to write an abstraction up front before you really know you need it. We discuss some trade-offs and examples. (00:00) - Life before interfaces in PHP (02:30) - Going too far with interfaces (04:45)…
…
continue reading

1
Should you change application code to support a test?
11:32
11:32
Play later
Play later
Lists
Like
Liked
11:32When you're writing a test it can be so tempting to just "tweak" some app code to make it easier to write that test, but we discuss why that might not be a good idea. We also talk about some app changes while writing tests that are beneficial to the overall project. (00:00) - Sometimes changing code makes testing easier (01:30) - Different types of…
…
continue reading
Do your eyes glaze over when someone mentions singletons or factories? We'll try to not to be boring as we explain the benefits of design patterns. Sign up for our free Laravel newsletter and learn something new in 2 minutes or less.By Joel Clermont and Aaron Saray
…
continue reading
Ever feel like your Blade views are getting too logic-heavy? What logic belongs in the view, and what logic would be better somewhere else? We use a recent PR discussion to talk through these points. (00:00) - Trying to keep logic out of the Blade view (02:00) - Using the simplest form of logic (03:45) - Business logic doesn't belong in the view la…
…
continue reading
When new tools and packages come out, there is usually some buzz around the launch, and how it solves all the problems of the old tool. Should you switch? How do you know when it's worth it? What are the potential downsides of switching? We talk through a couple examples and share how we approach these decisions Want to see what our coding standard…
…
continue reading
Seeders seem pretty straightforward. It's a way to generate data. But how should you use them in your app and what different purposes do they serve? We talk through our approach to seeders and how we use them in a few different contexts. (00:00) - Diving into how we use seeders in our applications (01:40) - Should a seeder create users? (04:30) - U…
…
continue reading

1
Don't just get mad at some tech, dig in and learn!
15:27
15:27
Play later
Play later
Lists
Like
Liked
15:27Is there some particular tool or technology that just makes you mad? Maybe it's the way CSS behaves or how some browsers work. Don't just get mad, dig in and learn it thoroughly. We talk about how we've done that and how it helped. (00:00) - Once again, Aaron reads the docs (02:30) - Recognizing when you don't know something (03:30) - Approaches fo…
…
continue reading
We see a lot of different projects, but it's pretty rare to find one that's well-documented and internally consistent. Why does that matter? And how can you make things more consistent without spending a lot of time on it? (00:00) - We like keeping things tidy in our projects (01:20) - Have a README, please (03:30) - Is there a business case for co…
…
continue reading

1
Different approaches to upgrading to a new major Laravel version
16:01
16:01
Play later
Play later
Lists
Like
Liked
16:01How do you like to upgrade your app when the next new major version of Laravel comes out? Aaron and Joel share two different approaches they've used, and what added benefits you get from doing a version upgrade. Need help getting tests on your Laravel app before upgrading?By Joel Clermont and Aaron Saray
…
continue reading

1
Maybe you don't need to write code this time
15:25
15:25
Play later
Play later
Lists
Like
Liked
15:25We're developers, we write code! But sometimes it's worth thinking if we really need to fire up our editor, or if a better solution exists. We talk through some "behind the scenes" podcast workflow, and how we decided we didn't need to write code this time. (00:00) - Considering better ways to track topics (01:00) - The developer brain kicks in (03…
…
continue reading

1
Should you manage roles and permissions with a UI?
12:52
12:52
Play later
Play later
Lists
Like
Liked
12:52Just about every application needs the concept of roles and permissions. Often, there's a desire to allow non-developers to manage roles and permissions in the application interface, but is that a good idea? (00:00) - Roles and permissions landscape (01:45) - A UI for managing permissions? (04:14) - Rolling out new permissions via migrations (06:45…
…
continue reading

1
The changing value of books throughout your career
12:13
12:13
Play later
Play later
Lists
Like
Liked
12:13You might have a book that really shaped how you write code today. Some books make more sense if you read them later in your career. We discuss the changing value of books as a learning resource as you gain experience. 00:00 Using books as a resource 01:59 Changing perspectives as you gain experience 03:05 Recognizing real-world applications of wha…
…
continue reading

1
Some reasons to write a down method in your migrations
14:19
14:19
Play later
Play later
Lists
Like
Liked
14:19This is a surprisingly controversial topic. In this episode, we share why we write down migration methods, and it's probably not the reason you're thinking of. (00:00) - Is writing down migration methods just a weird habit? (02:30) - A deploy that goes horribly wrong immediately (03:45) - Rolling forward due to database engine limitations (05:00) -…
…
continue reading
It's frustrating to have a client, boss, or even co-worker attempt to micro-manage you. We share some tips on how to make the working relationship better. (00:00) - Uncomfortable projects and clients (02:45) - Ask them directly "what's up" (05:00) - Understand what they want from you (07:00) - Let's role play (10:30) - The extra work is worth it (1…
…
continue reading
Developers spend a large part of their day inside an editor. For a full-featured editor like PHPStorm, there may be some useful features you've never noticed. We discuss a few of those.By Joel Clermont and Aaron Saray
…
continue reading

1
Tools should work for you, not boss you around
15:49
15:49
Play later
Play later
Lists
Like
Liked
15:49PHPStan is a great tool, but if you're not careful it might push you to write code in a way you wouldn't normally write it. How can you balance a tool's strengths with your team's style of writing code? (00:00) - We really like PHPStan (01:30) - Can you go too far with a tool, though? (03:40) - Things to consider if you're newer to Laravel or PHP (…
…
continue reading

1
Harnessing that post-conference excitement
13:09
13:09
Play later
Play later
Lists
Like
Liked
13:09It is so exciting to watch a conference talk announcing some new tool or feature. Now you're back at work and your fingers are itching to type `composer install` - What do you do? (00:00) - Post-conference excitement is a real thing (01:11) - The reality of how conferences are structured (03:50) - Talks share things you could do not things you shou…
…
continue reading

1
How do you tell a teammate they might be wrong?
9:19
9:19
Play later
Play later
Lists
Like
Liked
9:19Programmers have opinions on things. Shocking, I know! How can we tell someone we think there's a better way to do something, without being counterproductive and causing needless confrontation? (00:00) - Programmers have opinions on a lot of topics (02:25) - Start by asking questions (03:45) - Get smart with leading questions (05:25) - Do you alway…
…
continue reading

1
Lots of different ways to test record creation
10:15
10:15
Play later
Play later
Lists
Like
Liked
10:15We get a bit nerdy here and dive deep on a few different ways to test record creation. (00:00) - We like testing (01:20) - One way to test creating a record (03:00) - Limitations of fetch the record with first() (05:30) - Considerations when using latest() in tests (07:00) - An approach for using auto-increment IDs (08:05) - Silly bit Read more of …
…
continue reading
Do you maintain laser focus when you work, or are you a normal human being? How do you balance use of email and social media for legitimate work reasons without going down the rabbit hole of distraction? Stop your work and listen to this episode for answers. It's not a distraction, it's an investment. (00:00) - Feeling the pull of distraction when …
…
continue reading

1
When should you use final classes or private properties?
13:48
13:48
Play later
Play later
Lists
Like
Liked
13:48The discussion of final classes was a hot topic recently. We had planned on discussing this even before it came up on Twitter, but here is our unsolicited opinion. Is there some use case we missed? Aaron wants to hear about it. Show notes (00:00) - Final classes, the hot topic on Twitter (01:00) - Aaron's opinion has evolved over the years (03:15) …
…
continue reading