Show cover of No Compromises

No Compromises

Two seasoned salty programming veterans talk best practices based on years of working with Laravel SaaS teams.

Tracks

Joel 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 unusual requirements in request tests (05:00) - Navigating multi-layer middleware concerns (08:30) - Balancing thoroughness and test coverage (12:00) - Silly bit Want some advice on writing better tests for your app? Contact us.

1/18/25 • 13:32

Joel 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 performance needs.(00:00) - Exploring when to step outside framework defaults (02:30) - Handling complex sorting with related tables (05:25) - Balancing Eloquent features with DB builder tools (07:15) - Important considerations when dropping to lower level DB access (10:00) - Silly Bit Check out the Mastering Laravel community.

1/4/25 • 12:28

Joel 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 into deeper insights about different architectural approaches.(00:00) - Newsletter tips undergo careful peer review process (02:15) - Debating if feature flags should be temporary (05:25) - Different uses of feature flags across languages (07:20) - Feature flags in modern Laravel applications (08:35) - Silly Bit Sign up for free to get those amazing Laravel tips delivered each day 

12/21/24 • 10:13

Ooh, 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 adoption in Bootstrap project (01:00) - Flux explained: Livewire-based UI component library (04:45) - Risk assessment of adding new technologies (06:00) - Extra risk for a 1.0 (08:45) - When new tech might be worth the risk (11:50) - Silly Bit Want calm, reasonable developers like us to help with your project?

12/7/24 • 14:26

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 case for value objects (05:30) - Use them for everything then? (09:00) - A second reason to use a value object (10:45) - Silly bit Sign up for our newsletter and get short, practical Laravel tips delivered fresh to your inbox.

11/23/24 • 12:23

Have 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 having boundaries.And if you're looking for help on your Laravel project, get in touch!

11/9/24 • 10:26

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. relational tables (07:05) - Real-world example: label customization dilemma (11:30) - Silly bit Want a place to ask any question related to Laravel development? Check out the Mastering Laravel community.

10/29/24 • 14:20

Static 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) - Using PHPDoc inline (03:00) - When Laravel doesn't quite give you the type you want (05:00) - A different approach than inline types (06:30) - Are you just making the tool happy? (07:45) - An example of going too far (10:10) - Silly bit Check out the newly published volumes of Laravel tips. Collect them all!

10/15/24 • 11:59

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 make you more productive (07:45) - Shifting your thinking (10:10) - Silly bit Let us help you add tests to your project.

10/1/24 • 12:09

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 really know that!

9/17/24 • 09:37

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:30) - Being wrong in public with style (07:00) - Being wrong throughout your career (08:45) - Two people can both be right for their context (10:10) - Silly bit Sign up for the free Mastering Laravel newsletter and learn a little something about Laravel each day.

9/3/24 • 12:16

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 AI in the right context (09:10) - Option 3 - talk to a person (11:30) - What if you work alone? (12:55) - Silly bit Looking for a community of smart Laravel developers that you can ask for help?

8/20/24 • 14:14

The 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.

8/6/24 • 13:42

Writing 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) - What does it mean to have a separate test suite? (06:00) - Keeping them separate allows different triggers for running (07:00) - When should you run external tests? (08:30) - You can't always know when you'll break an external integration (11:00) - Check on a schedule? (13:00) - Silly bit Would you like to take 2 - 3 minutes each day to learn a little bit about Laravel? Join for free, unsubscribe any time.

7/23/24 • 18:03

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 (04:07) - What's in a spec? (06:20) - Balancing detail with moving forward (08:15) - Who is consuming the spec? (09:30) - The spec keeps you honest Would you like to see what over 4,000 Laravel developers like about the Mastering Laravel newsletter? It's free to sign up.

7/9/24 • 14:41

Maybe 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 with!This episode is sponsored by Mailtrap, an Email Delivery Platform that developers love. Try for Free at MAILTRAP.IO

6/25/24 • 15:13

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 developers love. Try for Free at MAILTRAP.IO

6/11/24 • 12:29

"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 episode is sponsored by Mailtrap, an Email Delivery Platform that developers love. Try for Free at MAILTRAP.IO

5/28/24 • 12:06

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 MAILTRAP.IO

5/14/24 • 10:49

Have 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.(00:00) - Your app should be tracking errors (02:30) - Better than just parsing logs (05:15) - Don't get overwhelmed when you first turn it on (06:00) - How to triage and prioritize (07:30) - Know about performance issues (10:30) - Silly bit

4/30/24 • 11:55

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.

4/16/24 • 11:49

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, give us a call!

4/2/24 • 16:21

Interfaces 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) - A discussion with payment gateways (07:30) - Abstracting the database as another trap (09:15) - Laravel makes good use of interfaces (10:05) - Silly bit Need some perspective on your Laravel project? We offer a code review service. Get in touch to learn more.

3/19/24 • 11:59

When 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 code changes (02:45) - An example with Laravel jobs (04:30) - A time when it's okay to change code while testing (08:50) - Avoid problems by writing tests earlier (09:30) - Silly bit Don't "compromise" on testing. See how we can help level up your Laravel project.

3/5/24 • 11:32

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.

2/20/24 • 11:38

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 layer (04:15) - Condition moved into the controller (05:20) - Secondary benefit of testing Check out the Mastering Laravel YouTube channel

2/6/24 • 10:16

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 decisionsWant to see what our coding standard looks like?Toss a coin in the jar if you enjoyed this episode. We really appreciate it!

1/23/24 • 19:59

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) - Using seeders in multiple contexts (09:50) - The one time we might use seeders with tests (11:50) - Silly bit Would you like some expert help on your Laravel application?Toss a coin in the jar if you enjoyed this episode. We really appreciate it!

1/9/24 • 15:15

Is 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 for learning Javascript and CSS (04:20) - What is the manual for Javascript/CSS? (07:13) - Joel learning CSS hands-on (09:55) - Learning through repetition (12:00) - Keep an eye on tech that makes you annoyed (13:23) - Silly bit Wow, 90 episodes in a row. Never missed one! Want to hire some super reliable Laravel developers?Toss a coin in the jar if you enjoyed this episode. We really appreciate it!

12/26/23 • 15:27

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 consistency across projects? (05:30) - An example with Docker build speeds in CI (06:50) - Consistency in naming business concepts (09:45) - Silly bit Short, practical Laravel tips delivered fresh to your inbox. Sign up today!

12/12/23 • 13:25