Sign in

Scott Keck-Warren

@scott.keck-warren.com
236 followers 42 following 470 posts

Director of Technology at WeCare Connect, published author, podcast host, conference speaker, consultant, and producer of education content for web application developers. He's been a professional PHP developer, DevOps engineer, and team lead.

PostsRepliesMedia
Scott Keck-Warren @scott.keck-warren.com · 15h
Have you ever hit this fatal error? In PHP 8.6, that line works. What did you do to get around it? Video: youtu.be/U9Jrcg1Ns1k #PHP #PHP86 #phparch
000
Scott Keck-Warren @scott.keck-warren.com · 17h
My PHP 8.6 video covers the features I think will make my personal life better. Which one should I have covered instead? #PHP #PHP86 #phpc www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 04/10/2026
What does the `1` mean in the first call? PHP 8.6 adds a `SortDirection` enum to the core. The pull requests I approve fastest are the ones where I never have to open another file to understand an argument. Video: youtu.be/U9Jrcg1Ns1k #CareerDev #PHP #PHP86
021
Scott Keck-Warren @scott.keck-warren.com · 04/10/2026
Partial function application is a fancy computer science term for setting up a function with some of its parameters now and passing the rest later. PHP 8.6 makes it native syntax. #PHP #PHP86 #FunctionalProgramming www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 03/10/2026
#PHPC tip: PHP 8.6 adds `clamp()`, so the two-`if` range check goes away. Swap min and max, and PHP throws a `ValueError`. Video: youtu.be/U9Jrcg1Ns1k #PHP #PHP86 #CleanCode
000
Scott Keck-Warren @scott.keck-warren.com · 03/10/2026
Two new symbols to learn in PHP 8.6: ? is the argument placeholder, and ... means zero or more parameters. Define the function up front and fill in the rest later. #PHP #PHP86 #FunctionalProgramming www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 02/10/2026
#PHP8.6 deprecates `is_integer()`, `is_long()`, `is_double()`, and `doubleval()`. I ran this grep against my app directory and found 150 "problems". Every call will fill your logs with deprecation notices the day you upgrade. Video: youtu.be/U9Jrcg1Ns1k #PHP #PHP86 #phparch
000
Scott Keck-Warren @scott.keck-warren.com · 02/10/2026
Pair the PHP 8.5 pipe operator with PHP 8.6 partial function application and you get some VERY concise code (and I expect Rector to help convert the old stuff). #PHP #PHP86 #CleanCode www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 01/10/2026
Myth: PHP isn't secure by default. #PHP8.6 flips three session settings on for you: Check them before you upgrade. SameSite=Lax drops the session cookie on cross-site POSTs, so SSO and payment callbacks that POST back to you lose the session. Video: youtu.be/U9Jrcg1Ns1k #PHP #AppSec
000
Scott Keck-Warren @scott.keck-warren.com · 01/10/2026
I've handwritten min/max range checks for the current page number more times than I can count. PHP 8.6 adds clamp(), and I might polyfill it in older projects. #PHP #PHP86 #CleanCode www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 30/09/2026
#PHP86: Partial Function Applications, which allow us to write the following. The `?` is an argument placeholder, so `str_replace('Scott', 'Alice', ?)` builds a function with the first two arguments, and the pipe puts the value in '?' Video: youtu.be/U9Jrcg1Ns1k #PHP #PHPC #PHP86 #phparch
001
Scott Keck-Warren @scott.keck-warren.com · 30/09/2026
PHP 8.6's clamp() has a built-in range check, so you can't mix up the min and max values. I've done that more than once, so I'm VERY happy about this one. #PHP #PHP86 #CodeQuality www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 29/09/2026
#PHPC tip: PHP 8.3 added `json_validate()`, so you can stop decoding a payload just to find out whether it parses. It skips building the object graph, so a large webhook body costs you a parse instead of a parse plus the memory. #PHP #PHP83 #CleanCode
000
Scott Keck-Warren @scott.keck-warren.com · 29/09/2026
The PHP ecosystem keeps taking PHP and stuffing it inside something else. bun-php is the latest one. What's your favorite embedded PHP project? www.phparch.com/podcast/community-c… #PHP #Bun #WebAssembly
000
Scott Keck-Warren @scott.keck-warren.com · 29/09/2026
array_multisort() takes SORT_ASC/SORT_DESC as ints, so 42 gets right through. PHP 8.6 adds a SortDirection enum in the global namespace, and the RFC hints at wider adoption. #PHP #PHP86 #TypeSafety www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 28/09/2026
Go look at your team's oldest open pull request. How many days? Mine used to be embarrassing. It sat because four of us were tagged, and all four of us assumed somebody else had it. scott.keck-warren.com/blog/2026/mak… #CodeReview #DeveloperLife #PHP
000
Scott Keck-Warren @scott.keck-warren.com · 28/09/2026
@StanislavKhromov wanted PHPStan from a TypeScript project without shipping a separate PHP runtime next to it. So he embedded all of PHP in Bun. www.phparch.com/podcast/community-c… #PHP #PHPStan #Bun
100
Scott Keck-Warren @scott.keck-warren.com · 28/09/2026
In PHP 8.4, fulfilling an interface property meant redefining the whole property hook. PHP 8.6 lets a readonly property do it and keeps the class much tighter. Big win for value objects. #PHP #PHP86 #OOP www.phparch.com/2026/09/stop-writin…
020
Scott Keck-Warren @scott.keck-warren.com · 27/09/2026
Bun is a JavaScript runtime. bun-php runs PHP on top of it through WebAssembly: the whole PHP engine is compiled into a portable blob. #PHP #WebAssembly #Bun
210
Scott Keck-Warren @scott.keck-warren.com · 27/09/2026
When people say PHP isn't secure, I point them to how every release improves security a little bit. PHP 8.6 makes sessions secure by default (check your SSO and payment callbacks before upgrading). #PHP #PHP86 #AppSec www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 26/09/2026
#Laravel tip most people skip: `sole()`. `sole()` throws `MultipleRecordsFoundException` for more than one match and `RecordsNotFoundException` for none. Collections have it too, so `$collection->sole(fn ($item) => $item->active)` behaves the same way in memory. #PHP #CleanCode
010
Scott Keck-Warren @scott.keck-warren.com · 26/09/2026
When Laravel started, there was no path to a pile of money, so the work happened for other reasons. JavaScript arrived after VC was established, and the incentives followed. www.phparch.com/podcast/community-c… #PHP #Laravel
000
Scott Keck-Warren @scott.keck-warren.com · 26/09/2026
PHP 8.6 adds a time duration class with helpers for math. It got a quick mention in my video, and I think it'll make a lot of our code easier to read. #PHP #PHP86 #CleanCode www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 25/09/2026
Taylor Otwell worked on Laravel for years before earning much from it. The ecosystem and the hosting platforms came after. www.phparch.com/podcast/community-c… #PHP #Laravel #OpenSource
020
Scott Keck-Warren @scott.keck-warren.com · 25/09/2026
#[\Override] landed for methods in PHP 8.3, and PHP 8.6 extends it to class constants. Rename the parent's constant, and PHP throws an error. #PHP #PHP86 #Refactoring www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 24/09/2026
PHP has been a server language for three decades. JavaScript is hitting the same problems now, and everyone is solving them their own way, with no standards landing. www.phparch.com/podcast/community-c… #PHP #JavaScript #Bun
020
Scott Keck-Warren @scott.keck-warren.com · 24/09/2026
PHP 8.6 deprecates is_integer(), is_long(), is_double(), and doubleval(). I grepped my app and found about 150 of them, which was a fun surprise. What's your count? #PHP #PHP86 #TechnicalDebt www.phparch.com/2026/09/stop-writin…
000
Scott Keck-Warren @scott.keck-warren.com · 23/09/2026
PHP hands you Laravel and a clear way to do everything. JavaScript sends you to a different vendor for every piece. @StanislavKhromov sees Bun trying to fix that. www.phparch.com/podcast/community-c… #PHP #Bun #Laravel
000
Scott Keck-Warren @scott.keck-warren.com · 22/09/2026
#PHPC tip: I keep reaching for match(true) when an if/elseif ladder exists only to pick a value. Every arm is a boolean condition, and the first true wins. It uses strict comparison, and it throws an error when nothing matches unless you give it a default. #CleanCode
000
Scott Keck-Warren @scott.keck-warren.com · 22/09/2026
bun-php supports Composer out of the box, and @StanislavKhromov has a WordPress install running server-side on top of it with MySQL working. www.phparch.com/podcast/community-c… #PHP #WordPress #Bun
000
Scott Keck-Warren @scott.keck-warren.com · 21/09/2026
Someone compiled the entirety of PHP into WebAssembly. That blob drops into any JavaScript runtime and still does what PHP does anywhere else. www.phparch.com/podcast/community-c… #PHP #WebAssembly #Bun
000
Scott Keck-Warren @scott.keck-warren.com · 20/09/2026
bun-php is mod_php with Bun standing where Apache used to. The runtime owns the request lifecycle; PHP hooks in as an embed. www.phparch.com/podcast/community-c… #PHP #Bun #WebAssembly
100
Scott Keck-Warren @scott.keck-warren.com · 19/09/2026
#Laravel tip: firstOrCreate() and updateOrCreate() both save you from the "check if it exists, then insert" dance. firstOrCreate() finds the first row and creates it. updateOrCreate() runs the same lookup, then writes the second array over the match or creates it.
000
Scott Keck-Warren @scott.keck-warren.com · 19/09/2026
Someone joked that the next version of Bun would run PHP. @StanislavKhromov built it anyway, and bun-php exists now. www.phparch.com/podcast/community-c… #PHP #SoftwareEngineering #WebDevelopment #PHPDeveloper #Bun #WebAssembly #JavaScript
010
Scott Keck-Warren @scott.keck-warren.com · 18/09/2026
"Sometimes that silence is your sounding alert." Nia Luckey on why a quiet top performer is a signal, not a non-event. #Leadership #TeamDynamics www.phparch.com/podcast/community-c…
000
Scott Keck-Warren @scott.keck-warren.com · 17/09/2026
"You can only innovate so much without guardrails." Nia Luckey on innovation paralysis, and why Trust Hacked isn't about pointing fingers at leadership. #Leadership #Innovation www.phparch.com/podcast/community-c…
000
Scott Keck-Warren @scott.keck-warren.com · 16/09/2026
A PM took our 8-point sprint, multiplied it by 4, and promised the client Thursday! Effort belongs to the task, time belongs to the person. A pagination feature has the same complexity no matter who builds it, but the hours swing with experience. #Agile #DeveloperProductivity
000
Scott Keck-Warren @scott.keck-warren.com · 16/09/2026
You can't fix the persona; you can only build trust with it. That's Nia Luckey's reframe for the coworker dynamic you can't control. #Leadership #TeamDynamics www.phparch.com/podcast/community-c…
000
Scott Keck-Warren @scott.keck-warren.com · 15/09/2026
PHPUnit tip: quit copy-pasting a test to cover more inputs. A data provider runs one test against every case you feed it. Add an edge case? Add a row. #PHP #PHPUnit #Testing
010
Scott Keck-Warren @scott.keck-warren.com · 15/09/2026
"My whole message is it really starts with you." Nia Luckey on why trust repair is individual work before it's an org chart problem. #Leadership #TechLeadership www.phparch.com/podcast/community-c…
120
Scott Keck-Warren @scott.keck-warren.com · 14/09/2026
Nia Luckey's book Trust Hacked sits in the security, leadership, and audit sections at once, and it comes with calibration tools to measure where trust is breaking down on your team. #Leadership #CyberSecurity www.phparch.com/podcast/community-c…
000
Scott Keck-Warren @scott.keck-warren.com · 13/09/2026
"You're not going to rise to the level of your credentials. You're going to default to the level of your training." Nia Luckey on what actually happens in a crisis. #Leadership #IncidentResponse www.phparch.com/podcast/community-c…
010
Scott Keck-Warren @scott.keck-warren.com · 12/09/2026
PHPUnit tip: default to `assertSame()` over `assertEquals()`. `assertEquals` uses loose comparison, so '1', 1, 1.0, and true all pass against 1. `assertSame` checks the type too (like ===), so a function that returns a string instead of an int fails. #PHP #PHPUnit #Testing
010
Scott Keck-Warren @scott.keck-warren.com · 12/09/2026
Cassandra syndrome: you see the risk coming, and nobody listens. Nia Luckey put a name on a pattern most tech teams already live with. #Leadership #TechLeadership www.phparch.com/podcast/community-c…
000
Scott Keck-Warren @scott.keck-warren.com · 11/09/2026
"We tend to get lost in the technical components and forget the human component." Nia Luckey on why security leadership needs a trust protocol, not just more tooling. #CyberSecurity #Leadership www.phparch.com/podcast/community-c…
001
Scott Keck-Warren @scott.keck-warren.com · 10/09/2026
Daniel Scherzer is PHP 8.6's release manager and is teaching a Rust extension-building workshop at Longhorn PHP. Dave Stokes covers JSON data types on the DB side. #PHP #LonghornPHP www.phparch.com/podcast/community-c…
010
Scott Keck-Warren @scott.keck-warren.com · 09/09/2026
Everyone says #AI makes the language you pick irrelevant. So I built a real CLI tool in Python to find out. Generating the code was a non-issue. What tripped me up was everything around it: packaging, project layout, and the #PHP ecosystem conventions. #DeveloperProductivity
020
Scott Keck-Warren @scott.keck-warren.com · 09/09/2026
Longhorn PHP 2026 keynotes: PHP Foundation's Elizabeth Barron's "PHP is People: The Foundation, the Community, and You"; Eric Mann closes on "The Commit You Can't Take Back". #PHP #LonghornPHP www.phparch.com/podcast/community-c…
010
Scott Keck-Warren @scott.keck-warren.com · 08/09/2026
PHP 8.4 tip: stop writing foreach-and-break to find one element. `array_find()` returns the first item matching a callback; `array_any()` and `array_all()` answer the yes/no questions. Clearer intent, less boilerplate. New in 8.4. #PHP #PHPDev #PHP84
000
Scott Keck-Warren @scott.keck-warren.com · 08/09/2026
Longhorn PHP streams its main day for accessibility, not as a paywall workaround. It also means sick attendees can stay home guilt-free. Ian Littman explains the tradeoff. #PHP #LonghornPHP www.phparch.com/podcast/community-c…
000