Clem Blanco

8.4K posts

Clem Blanco banner
Clem Blanco

Clem Blanco

@clemblanco

Software engineer @infomaniak • Open source and Laravel enthusiast

Annecy, France Katılım Şubat 2009
70 Takip Edilen429 Takipçiler
Clem Blanco retweetledi
Luke Kuzmish
Luke Kuzmish@cosmastech·
Pao now belongs to the @laravelphp Github org. Nice work @enunomaduro 🥳 I just added it to my work's monorepo. Now to get rector support added 😅
Luke Kuzmish tweet media
English
3
4
57
5.9K
Clem Blanco retweetledi
Sadique Ali
Sadique Ali@apnahive·
Most PHP developers don't hate writing code. They hate writing tests for it. Pest PHP 3 is quietly changing that — and it's the most developer-friendly testing framework the PHP ecosystem has ever had. Here's what's new in version 3 👇 🧬 Mutation Testing (built-in) Not just "did this line run?" — but "if I introduced a bug here, would your tests catch it?" Run --mutate and find out. 👥 Team Annotations Tag tests with ->team('payments') and filter CI runs by team. Finally, large codebases have a way to own coverage. 🏗️ Architecture Testing arch()->preset()->laravel() enforces your structural conventions automatically. No more README rules that nobody follows. ⚡ Parallel Testing (improved) Smart isolation across processes. 60-80% faster CI on large suites. ✅ Richer Expectations toHaveStatus(), toBeIn(), toContainOnlyInstancesOf() — assertions that read like documentation. And the core syntax is still the best part: it('calculates tax correctly', function () { expect(calculateTax(100, 0.2))->toBe(20.0); }); That's it. No class. No boilerplate. No noise. Pest runs on top of PHPUnit — so your existing tests keep working. Migration is incremental and low-risk. If testing in PHP ever felt like a chore, Pest 3 is worth a serious look. 📖 Full breakdown on the article. #PHP #Testing #PestPHP #Laravel #SoftwareDevelopment #DevExperience #CleanCode medium.com/p/pest-php-3-t…
English
3
2
28
1.9K
Clem Blanco retweetledi
Wendell Adriel
Wendell Adriel@wendell_adriel·
Just released a new package: 🛡️ Laravel Idempotency It provides an HTTP middleware for Laravel (with an attribute for those who prefer it) for making routes Idempotent. It also ships with two commands for listing and clearing Idempotency caches, and of course, a Boost AI skill! Check the package and the docs in the link below, and leave a star to support the project! 👇
English
3
18
88
12K
Clem Blanco retweetledi
Joe Tannenbaum
Joe Tannenbaum@joetannenbaum·
We gave the Laravel installer a bit of a glow up 🧑‍🎨 The output is now far more concise by using the new 𝚝𝚊𝚜𝚔() helper from Laravel Prompts Still want the full output? Just add -𝚟 It's a good day to 𝚕𝚊𝚛𝚊𝚟𝚎𝚕 𝚗𝚎𝚠 🤘
English
17
33
296
30.9K
Clem Blanco
Clem Blanco@clemblanco·
@enunomaduro If you were doing something wrong, Nunonation wouldn't be a thing. Of course you can't please everyone and that's okay. We're used to this with open source anyway. Haters gonna hate. Keep up the good work man. 💪
English
0
0
1
24
nunomaduro
nunomaduro@enunomaduro·
“he went from being a developer to wanting to become an influencer, and it’s disgusting.” i wanted to address this, and give a few words for those you got “disappointed” when find my online personality on livestreams not everything i make is going to be for everyone, especially video content that is fast-paced and a little chaotic and i can understand how you might expect that behind the code and tools i wrote there’s some super serious, polished person (and you may get disappointed) truth is, i’ve always had a bit of that “kid” energy in me; the people close to me know that’s just who i am; i’ve kind of always been that way i also genuinely love this style of content. it’s the kind of stuff i enjoy watching, and it’s the kind of stuff i enjoy making. i totally get that it won’t be everybody’s cup of tea, and that’s okay one thing i’ve learned these past few months is that making things i actually enjoy and have fun matters more than making things that only performs better and i do hear you; i definitely don’t have it all figured out yet. i’m learning as i go, getting some things right, getting some things wrong, and trying to be a little better each time ❤️
nunomaduro@enunomaduro

5 claude code cli commands that save me hours watch here: youtu.be/rBsbmqIvfr8?si…

English
21
3
129
12.5K
Clem Blanco retweetledi
trish
trish@TrisH0x2A·
wise words from the best systems engineer I've worked with: "two things that make code actually maintainable: 1. reduce the layers a reader has to trace 2. reduce the state a reader has to hold in their head" applies to every codebase. always.
English
48
275
4.1K
114.7K
Clem Blanco retweetledi
Tim MacDonald
Tim MacDonald@timacdonald87·
Some generic off-the-cuff test suite performance tips that helped cut a suite's runtime be 60%. Maybe they'll be useful to you too.
Tim MacDonald@timacdonald87

@0x15f @enunomaduro @taylorotwell This is without knowing anything about your test suite or app, but a few thoughts off the top of my noggin. Realistically, I don't think there will be a quick solve here. My guess is item one will be the place to dig but also requires the most work.

English
0
2
24
4.9K
Clem Blanco retweetledi
JustSteveKing
JustSteveKing@JustSteveKing·
I published an Engineering Career Framework. A clear, honest guide to every level from SE1 through VP. No vague language. No moving goalposts. Just what’s expected at each level and what good looks like. A few things I was deliberate about: → SE3 is a valid long-term destination. Not everyone needs to keep climbing. → IC and management are separate tracks. Neither is more senior. → SE4 has different "shapes" - there isn’t one archetype of a senior engineer. → Timelines are concrete, not "when you’re ready." Hope it’s useful for engineers thinking about their own progression, and for managers trying to have better career conversations. juststeveking.com/career-framewo…
English
1
2
15
1.4K
Clem Blanco retweetledi
nunomaduro
nunomaduro@enunomaduro·
next, new arch expectation: toBeCasedCorrectly checks PSR-4 compliance between class names and file paths
nunomaduro tweet media
English
3
7
56
9K
Clem Blanco retweetledi
Wendell Adriel
Wendell Adriel@wendell_adriel·
Have you heard about the ADR (Action/Domain/Responder) pattern before? Have you already used it on Laravel? I just published an article about it on my blog. 🔥 Check it out in the link below! 👇
Wendell Adriel tweet media
English
4
5
23
3.6K
Clem Blanco retweetledi
James Brooks
James Brooks@jbrooksuk·
Underrated Laravel feature 🚀 URI templates in the HTTP client are criminally slept on. Stop concatenating strings like it's 2012. Clean. Readable. No bugs hiding in string spaghetti. Small feature. Big upgrade. 🔥
James Brooks tweet media
English
8
25
271
12.6K
Clem Blanco retweetledi
Kemo
Kemo@delalick·
phpsadness.com showed what was wrong with PHP. haPHPiness shows what's right. 67 features from PHP 5.4 → 8.5 that genuinely make developers happy. Code examples, version info, the works. haphpiness.com #PHP #phpc
Kemo tweet media
English
4
34
245
10.5K
Clem Blanco retweetledi
Matt Stauffer
Matt Stauffer@mattstauffer·
Guess the cat is out of the bag! I've been writing PHP since the late 90's, and its growth as a language has paralleled mine as a developer. I'm happy and honored to be able to be a part of a group of people working to continue advancing the language so many of us depend on!
The PHP Foundation@ThePHPF

We are very happy to welcome Matt Stauffer as the newest Board member for The PHP Foundation! Matt brings decades of experience and we are grateful for his insight as we move forward. Welcome, Matt! 🤩 🐘 🚀 Read more: thephp.foundation/blog/2026/03/2… #php #thephpfoundation #phpc

English
71
32
638
25.1K
Clem Blanco retweetledi
Joe Tannenbaum
Joe Tannenbaum@joetannenbaum·
Laravel Prompts v0.3.15 is out! A ton of new primitives came out of building the Cloud CLI (+ some unreleased stuff 👀), so we decided to bake them in Prompts itself. Let's start with `task()`: Run long processes with a live-updating spinner, scrolling log output, and stable success, warning, and error messages that stick around. Update the label as the task progresses. 🧵
Joe Tannenbaum tweet media
English
8
34
225
37.1K
Clem Blanco
Clem Blanco@clemblanco·
@luisdalmolin @matthieunapoli I sometimes use DTOs with laravel-data by default and if I need the HTTP layer to have additional rules I'll use a FormRequest with a toData() which returns the DTO post-HTTP validation, which I can use with my Action. Depends on the use case.
English
0
0
0
38
Luis Dalmolin
Luis Dalmolin@luisdalmolin·
@matthieunapoli Data objects instead of Form Requests, and use the validation in the data objects directly. This way you can use it in controllers, CLI, etc
English
5
0
12
704
Matthieu Napoli
Matthieu Napoli@matthieunapoli·
I'll be honest there's something I really struggle with: validation in Laravel with the Action pattern. All recommendations point to having most of data validation in the controller (via custom request classes), and it's super practical (also works with Precognition). I want to keep that because of these advantages. But having only "business logic" validation in actions sucks when I re-use the action e.g. in CLI commands, or in imports, etc. In those cases, the data validation should still happen, but: - not HTTP, so custom request classes are harder to use and don't make sense either - it's possible to forget to validate things, and I like actions to be super safe (they validate stuff) How do you solve that cleanly? Especially CLI commands or mass imports?
English
16
1
33
7.1K
Clem Blanco retweetledi
Roman Pronskiy
Roman Pronskiy@pronskiy·
Lightweight fork of Xdebug 🧪 You can keep it always enabled as it has only ~5% overhead compared to ~300% in Xdebug
Roman Pronskiy tweet media
English
7
28
268
34.2K
Clem Blanco retweetledi
Sadique Ali
Sadique Ali@apnahive·
PHP 8.4 property hooks look like Eloquent accessors. They are not the same thing. Using one where you need the other silently breaks your app. Here's the rule that makes it all click: Eloquent uses __get() and __set() magic methods to intercept property access. Every time you read $user->name, it goes through Eloquent's attribute pipeline: __get() → $attributes['name'] → accessor → return. PHP 8.4 property hooks operate at the language level, before magic methods. When you declare: public string $name { get => ucwords($this->name); } ...on an Eloquent model, PHP creates a real class property called $name. Eloquent's __get() only fires for properties that don't exist on the class. Now that $name is declared, Eloquent never sees it. The value bypasses $attributes[] entirely. Result: $user->save() doesn't persist it. $user->toArray() doesn't include it. Nothing in Eloquent's pipeline touches it. This is not a bug. It's a boundary. The correct split: For DB-backed attributes → use Eloquent Attribute::make(): protected function name(): Attribute { return Attribute::make( get: fn($v) => ucwords($v), set: fn($v) => strtolower($v), ); } // ✅ persists, ✅ in toArray(), ✅ works with dirty tracking For non-persisted properties → use PHP property hooks: // View helper — not in toArray() public string $statusBadgeClass { get => match($this->attributes['status']) { ... }; } // Runtime flag public bool $sendEmailOnSave = false { set => $this->sendEmailOnSave = $value; } // Best of all: hooks on DTOs alongside your model class CreateInvoiceData // plain PHP class, not Model { public string $clientName { set => $this->clientName = trim($value); } } The complete decision table + working Invoice model combining all three systems (PHP Attributes for metadata, Attribute::make() for DB columns, property hooks for view helpers) — linked here. #PHP #PHP84 #Laravel #Eloquent #WebDevelopment #PropertyHooks medium.com/p/php-8-4-prop…
English
0
5
33
3.2K