Sign in

Scott Keck-Warren

@scott.keck-warren.com
235 followers 42 following 460 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 · 14h
#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 · 16h
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
If someone says "Claude said so" to another one of my questions, I'm moving to the woods and living off the land. #ai #aihate
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
@dseguy has a fun project to use all the new #php86 features in a script. This is my part. It was based on one of my favorite subjects (state machines), and I had to force a bunch of the new features. :-) github.com/dseguy/phpen... #phpc #programming #coding #techtok
github.com
Added state-machine-checker script by warren5236 · Pull Request #3 · dseguy/phpenomenal
This is an example script I had for an unpublished article, and I upgraded it to use PHP 8.6 features (some were a real stretch), but it has been used to visualize interactions in state machines. I...
010
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
@longhornphp is one of my favorite #phpc #conferences (I'm paying out of pocket for my ticket, hotel, and airfare to go), and they need your help. Get the word out, please!!! longhornphp.com/2026-future-... #php #coding #austintx
longhornphp.com
Longhorn PHP
Ricky
001
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
My video/article on what's new in #php86 is ready for you to watch/read. www.phparch.com/2026/09/stop... #phpc #php #coding #webdev
phparch.com
Stop Writing PHP Like This (8.6 Fixes It) | PHP Architect
This is how PHP 8.6 lets you write a string transformation, with no closures and no temp variables. $name = 'Scott Keck-Warren'; $fixed = $name |> str_replace('Scott', 'Alice', ?) |> strtolower(...);…
000
Scott Keck-Warren @scott.keck-warren.com · 23/09/2026
Tagging four reviewers on a PR is how it sits for three days. Everybody assumes somebody else has it. Code review is now the task I pick up whenever I finish something, and our PRs stopped aging. scott.keck-warren.com/blog/2026/mak… #PHP #CodeReview
scott.keck-warren.com
Make Code Review Your Default Next Task | Scott Keck-Warren
A review-first team gets every PR seen by automation and a human. Here's how I made human review the default action, tracked by a PR count right in my status line.
010
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
Has a stakeholder ever turned your estimate into a hard deadline? You say "about 8 points," and somewhere between your desk and the client that turns into "done Thursday." How do you keep an estimate from becoming a promise on your team? #Agile #SoftwareDevelopment #DeveloperLife
100
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
You gave someone an estimate, and they wrote it on the calendar as a commitment. The date slipped, and you felt like you'd lied. You didn't. An estimate is your best guess, and it's still a guess after someone turns it into a promise. #CareerDev #Agile #SoftwareDevelopment
001
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
Myth: "1 story point is about 4 hours, so an 8-point sprint is a 32-hour week." That little multiplication turn estimates into broken promises. Points measure effort, which is a property of the task. Hours belong to the person, and they swing with experience. #PHP #Agile #Scrum
010
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
Question: Have you shipped something real (not a toy script) in a language you don't actually know? I built a Python CLI with an LLM writing most of the code, and it works. The code generated without much trouble. #PHP #AI #DeveloperProductivity
100
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
For years I measured myself by how much syntax I'd memorized. Then a model wrote me a working tool in a language I've never touched, and that scorecard stopped meaning anything. What's left is knowing whether the output is right. #CareerDev #AI #PHP
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
Myth: "With AI, the language you pick no longer matters." I found out it's half true. I built a working CLI in Python, a language I don't know, and generating the code was a non-issue. Then packaging, project layout, and ecosystem stalled me. #PHP #AI #DeveloperProductivity
010
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