Sign in

Len Woodward

@projektgopher.com
1.1K followers 174 following 352 posts

Full-stack senior Laravel and JS developer based in Vancouver, BC, Canada LenWoodward.com CoFounder @ artisan.build Currently building hallway.fm Watch it happen @ artisan.community

PostsRepliesMedia
Len Woodward @projektgopher.com · 25/09/2026
In order to get some traction, we want to solicit help from our immediate network in what we're calling our 'Scalpels Street Team'. If you want to partner up on this with us, even if that just means leveraging your own audience, we'd love the support. scalpels.app/street-team
scalpels.app
Join the Scalpels Street Team
We could use your help launching Scalpels.
000
Len Woodward @projektgopher.com · 25/09/2026
Scalpels is our solution. We build it, completely open source. You can fork each service, host it yourself, but then to get updates you can just pull from our upstream. You can PR fixes back.
100
Len Woodward @projektgopher.com · 25/09/2026
We'd rather own the product internally, and others feel the same. But putting the time into building them correctly and then supporting it alone internally forever outweighs the cost of the subscription, and we don't want to have to market another ten paid products individually to make them viable.
100
Len Woodward @projektgopher.com · 25/09/2026
We (and our clients) seem to have this ever-growing portfolio of monthly subscriptions for tiny apps that do just one little thing each. And it's getting a bit old.
100
Len Woodward @projektgopher.com · 25/09/2026
One of the many things we've been working on lately at Artisan Build is finally ready to start being talked about publicly! But it's still early, and we only want to include people in our immediate networks for now. So if you're seeing this, that means you. scalpels.app/street-team
scalpels.app
Join the Scalpels Street Team
We could use your help launching Scalpels.
100
Len Woodward @projektgopher.com · 25/09/2026
Sixth week running with nothing in the voting phase. The commits keep landing regardless — and the PHP Foundation funds more than half of the ongoing ones. If you use the language, consider donating. Or guilt your employer into it. opencollective.com/phpfoundation
000
Len Woodward @projektgopher.com · 25/09/2026
This week's episode is supported by Scalpels. Paying every month for small tools you could own? Scalpels apps are professionally built, expertly maintained, MIT-licensed, and run on your own Laravel Cloud account. $500 once (early access) for every app. scalpels.app
111
Len Woodward @projektgopher.com · 25/09/2026
Quick hits 2/2: Pratik Bhujel's php-terminal adds raw mode and single-key reads, so Laravel Prompts can work properly on Windows. Larry: 8.7 material now; @timwolla.bsky.social's review reshaped it. David Maye Kitenge asked about threads in an extension; Rowan Tommins: that needs ZTS.
100
Len Woodward @projektgopher.com · 25/09/2026
Quick hits 1/2: PHP 8.6 is forked. Matteo Beccati cut the branch Tuesday, feature freeze is on, master targets 8.7, RC1 is due today. Weilin Du's IntlRelativeDateTimeFormatter RFC now uses Tim's enums; voting should start Oct 8. @nicksdot.dev plans to open the PEAR vote Sep 28.
101
Len Woodward @projektgopher.com · 25/09/2026
Two new-function threads raised AI-written contributions; the objection, with or without AI, was quality and readers' time. Pratik Bhujel: "demonstrate the use-case, settle the contract, then benchmark the implementation." Juris Evertovskis expects people to judge the work itself.
100
Len Woodward @projektgopher.com · 25/09/2026
Sepehr Mahmoudi's str_mask met the array_str_contains question: does it belong in core? Pratik Bhujel found it failed open. Jordi Kroon's #[SensitiveParameter] went in, then out after Morgan asked "anyone for a game of Hangman?" Casper Langemeijer and Weilin Du: userland already does it.
100
Len Woodward @projektgopher.com · 25/09/2026
bcrypt, PHP's default password hash, silently truncates at 72 bytes, so Andrey Andreev asked about moving PASSWORD_DEFAULT to Argon2id. Casper Langemeijer, Anton Smirnov and @timwolla.bsky.social weighed in; Jakub Zelenka: OpenSSL can't be always enabled. Andrey: "it's just not happening."
100
Len Woodward @projektgopher.com · 25/09/2026
Running PHP files like Python modules lasted a day. @timwolla.bsky.social, at Gina's request, proposed the CLI run a closure the main script returns. Seifeddine Gmati floated #[EntryPoint]; Rowan Tommins agreed; Levi Morrison and Larry Garfield had doubts. Next, Tim looks at a __MAIN__ constant.
100
Len Woodward @projektgopher.com · 25/09/2026
Gina P. Banyard posted a pre-RFC with a prototype: Regex\CompiledRegex takes a bare pattern plus named boolean flags — no delimiters, no preg_quote, no modifier letters. Patterns must be UTF-8, and it brings a Regex\CompilationError. So far it plugs into preg_split and preg_grep.
100
Len Woodward @projektgopher.com · 25/09/2026
The regex exceptions RFC's callback question is settled: if a callback throws in preg_replace_callback, the exception goes through as-is. Osama Aldemeery showed Python, Java and C# do the same; Larry Garfield: the callback is an input. @timwolla.bsky.social: "I won't insist on it based on policy."
100
Len Woodward @projektgopher.com · 25/09/2026
Top story: the Time\Instant RFC from @timwolla.bsky.social and Derick Rethans has no now(). To know the time, you ask a Time\Clock. Seifeddine Gmati wants a static now() and the name SystemTime; Tim follows Java and Temporal. Juris Evertovskis: an Instant "could be the time of the big bang."
100
Len Woodward @projektgopher.com · 25/09/2026
PHP's next time class marks a moment and leaves telling the time to a clock. The regex RFC's callback question is settled, a closure-as-entry-point idea lasted a day, and 8.6 is frozen. 12 stories, about 12 minutes. New one every week. youtu.be/ygEvagzKZy8 #PHP #PHPInternals #PHP86
youtu.be
This Week In PHP Internals | Sept 24, 2026
PHP's next time class can't tell you what time it is — plus the regex callback question settled, a compiled-regex alternative, and 8.6 frozen. 12 stories, about 12 minutes.
110
Len Woodward @projektgopher.com · 21/09/2026
Come watch me try to justify one of my many fixations!
000
Len Woodward @projektgopher.com · 18/09/2026
Fifth week running with nothing in the voting phase. The commits keep landing regardless — and the PHP Foundation funds more than half of the ongoing ones. If you use the language, consider donating. Or guilt your employer into it. opencollective.com/phpfoundation
000
Len Woodward @projektgopher.com · 18/09/2026
Sponsored by Ballast. Is AI working for your team? Anyone can count the lines it produced; Ballast counts the lines that survive. It reads your git history — never your code — and puts stable velocity next to a 300–850 durability score. Free, updated monthly. ballast.now
100
Len Woodward @projektgopher.com · 18/09/2026
Quick hits 3/3: Alwyn Bester published php-grammar, a source-backed EBNF for PHP 8.5 audited against the parser, and wants review. David Maye Kitenge asked whether a static zend_string changes its refcount; Alexandru Pătrănescu: static is about the C variable — never free interned strings.
100
Len Woodward @projektgopher.com · 18/09/2026
Quick hits 2/3: for opt-in JSON comments and trailing commas, @timwolla.bsky.social suggests one JSON_ALLOW_JSONC flag referencing the existing standard, not 2. Vilius Buividavičius wants MyClass::properties::name, a ::class-style constant for property names; @nicksdot.dev found a prior thread.
100
Len Woodward @projektgopher.com · 18/09/2026
Quick hits 1/3: PHP 8.6 branch cut is Sep 22 with 8.6.0 RC1 — feature freeze; master becomes 8.7 (Matteo Beccati, Joe Ferguson, Daniel Scherzer). 8.5.11 RC1 (@edorian.bsky.social) + 8.4.26 RC1 (Saki Takamachi) out. @mnapoli.bsky.social has RFC karma for --enable-cli-fpm; Marc Henderkes: default it.
100
Len Woodward @projektgopher.com · 18/09/2026
PEAR's bug data is back: Chuck Burgess recovered the missing pages, with thanks from Juliette Reinders Folmer. @nicksdot.dev wrote an explicit timeline into the RFC with Derick Rethans: discussion open to Sep 27+, nothing lands before November. Daniel Scherzer's PR commits the installer phar.
100
Len Woodward @projektgopher.com · 18/09/2026
PREG_THROW_ON_ERROR now turns on one question: when your callback throws inside preg_replace_callback, does PHP wrap it? @timwolla.bsky.social, who wrote the throwables policy, says wrap. Casper Langemeijer and Sascha Ploss: no other language does. Osama Aldemeery says the call is Tim's.
100
Len Woodward @projektgopher.com · 18/09/2026
The benchmark meant to justify array_str_contains showed the C function slower than foreach. Yuya Hamada ran the PR's own test: 578 ms vs 14 with a match at the start. Sepehr Mahmoudi disputed the run and removed the benchmarks. Larry Garfield: nobody supports it, and that's OK.
100
Len Woodward @projektgopher.com · 18/09/2026
Top story: a vote won 4–1 and closed anyway. Weilin Du opened voting on IntlRelativeDateTimeFormatter Tuesday; within ~10 min @timwolla.bsky.social voted no — the RFC changed after his review, and he wants enums, not untyped int constants. Weilin reverted the vote. Tim now proposes 3 enums.
100
Len Woodward @projektgopher.com · 18/09/2026
First, 1 correction. Around the 6-minute mark last week I said "Tim Rethans". That's Derick Rethans — Derick, for the entire run of this show. Larry Garfield caught it in the YouTube comments, smiley included. In my defence, @timwolla.bsky.social is in every story every week.
100
Len Woodward @projektgopher.com · 18/09/2026
A PHP RFC went to a vote Tuesday, was winning 4 to 1, and its author closed it inside the hour — over what the one no vote said. Also: the array_str_contains benchmark came back slower than a foreach loop. 10 stories, ~10 min. youtu.be/flBkw2Rf7xE #PHP #PHPInternals #PHP86
youtu.be
This Week In PHP Internals | Sept 17, 2026
A vote won 4 to 1 and closed inside the hour, array_str_contains slower than foreach, PREG_THROW_ON_ERROR, PEAR bug data recovered. 10 stories, about 10 minutes.
111
Len Woodward @projektgopher.com · 10/09/2026
Fourth week running with nothing in the voting phase. The commits keep landing regardless — and the PHP Foundation funds more than half of the ongoing ones. If you use the language, consider donating. Or guilt your employer into it. opencollective.com/phpfoundation
000
Len Woodward @projektgopher.com · 10/09/2026
Sponsored by Ballast. Is AI working for your team? Lines produced is easy to count; lines that survive is what matters. Ballast reads your git history — never your code — and gives you stable velocity plus a 300–850 durability score. Free, updated monthly. ballast.now
100
Len Woodward @projektgopher.com · 10/09/2026
Quick hits 2/2: Dmytro Kulyk answered @nicolasgrekas.bsky.social's NoSerialize review 10 months on — Symfony has no __sleep to replace; Magento 2 has 31. Florent Morselli (base64url, 46M downloads) wants data-encoding's strict mode actually strict: one WebAuthn credential has 16 spellings.
100
Len Woodward @projektgopher.com · 10/09/2026
Quick hits 1/2: Weilin Du aims to open voting on IntlRelativeDateTimeFormatter Sep 15; @timwolla.bsky.social's one catch (a cloned ICU formatter) gets a lazy refresh. Timo Poppinga wants ext/openssl to expose OpenSSL providers generically for ML-KEM/ML-DSA; Ayesh Karunaratne: Sebastian asked first.
100
Len Woodward @projektgopher.com · 10/09/2026
The scan meant to prove array_str_contains is common found 32 uses in 200 packages, then lost nearly half on review: Rowan Tommins found 15+ doing logic it can't replace. Sepehr Mahmoudi now says up to 17. David Carlier wants the cast claim tested. @timwolla.bsky.social: not on the wiki index.
100
Len Woodward @projektgopher.com · 10/09/2026
Is speed a reason to put something in the stdlib? Larry Garfield: one data point — 50% faster in C is a different conclusion than 0.5%. @timwolla.bsky.social: "Performance is a property of the implementation, not a property of the feature." Fix: the Optimizer rewrites array_filter as a foreach.
100
Len Woodward @projektgopher.com · 10/09/2026
Friday's number-base vote didn't open. Sjoerd Langkemper is weighing an Exception over a ValueError for octdec/hexdec/bindec/base_convert — but which? Rowan Tommins: never SPL, maybe BaseConversionException. @timwolla.bsky.social: plain Exception, promise nothing. Morgan: what about intval?
100
Len Woodward @projektgopher.com · 10/09/2026
Last week's top story closed itself. Luca Rodenhäuser ended the strict-identifiers thread without an RFC, crediting Claude Pache, Rowan Tommins and Larry Garfield with changing his mind. "I am not going to write an RFC on a guess." Instead: a docs PR describing what PHP does today.
100
Len Woodward @projektgopher.com · 10/09/2026
Rowan Tommins pushed on "formality": Chuck is one of 8 PEAR Group members, so his agreement is one vote, not final authority. Derick Rethans wants the readonly site up for a year, then a tarball on museum.php.net. Rowan sent Nick's mirror a PR with a locked-PEAR logo.
100
Len Woodward @projektgopher.com · 10/09/2026
The PEAR maintainer nobody could reach for months has answered: @nicksdot.dev reports Chuck Burgess is good with sunsetting the site. Larry Garfield and @timwolla.bsky.social call the RFC edit minor, so the vote can open after a 1-week cooldown. The user accounts are gone, though.
100
Len Woodward @projektgopher.com · 10/09/2026
Gina P. Banyard wants PHP to stop fixing a class of engine crashes only fuzzers and LLMs have hit: an error handler freeing the variable that raised the warning. Call it undefined behaviour. Ilia Alshanetsky: fix case by case. Ilija Tovilo: tried that; he and Arnaud Le Blanc planned an RFC.
100
Len Woodward @projektgopher.com · 10/09/2026
Why not wrap a callback's exception? Osama: "You can be holding a PregException while preg_last_error() and preg_last_error_msg() report no error at all." Robert Humphries: a bad pattern is a programmer error, so PregError? @timwolla.bsky.social agrees compile failures should be.
100
Len Woodward @projektgopher.com · 10/09/2026
Top story: a vote that lasted 56 hours. Osama Aldemeery opened voting on PREG_THROW_ON_ERROR Friday. Within the hour @timwolla.bsky.social, who wrote PHP's throwables policy, voted no: the flag breaks it. Sunday night Osama pulled the vote rather than change it under people who'd voted.
100
Len Woodward @projektgopher.com · 10/09/2026
First, 3 corrections. 8.4.25 was a bug-fix release, not security (thanks Daniel Scherzer). The libxml-rs contributors we didn't name were James Gilliland and David Carlier — @timwolla.bsky.social noted every From header had a real name. And Džuris caught a read slip: Tim disagreed with Sjoerd.
100
Len Woodward @projektgopher.com · 10/09/2026
A PHP RFC went to a vote Friday. By Sunday night its author had pulled it, over one no vote from the person who wrote the policy it broke. What's left: when a regex fails, is that your bug, or something you catch? 11 stories, ~13 min. youtu.be/AoMmbSOknmw #PHP #PHPInternals #PHP86
youtu.be
This Week In PHP Internals | Sept 9, 2026
A PHP RFC went to a vote on Friday. By Sunday night its author had pulled it back. 11 stories, about 13 minutes.
100
Len Woodward @projektgopher.com · 03/09/2026
And the reason there's anything to report each week: the PHP Foundation funds more than half of ongoing php-src commits. If you use the language, consider donating — or guilt your employer into it. opencollective.com/phpfoundation
000
Len Woodward @projektgopher.com · 03/09/2026
This week's episode is supported by Ballast. Is AI working for your team? Ballast reads your git history — never your code — and reports stable velocity plus a 300–850 durability score. Free, updated monthly. ballast.now
100
Len Woodward @projektgopher.com · 03/09/2026
Quick hits: PHP 8.4.25 is a SECURITY release · 8.5.10 is a bugfix · 8.6.0beta2 is up for testing · and @nicksdot.dev bumped the nameof RFC to say he'd like it in 8.7 — the message he was replying to was posted in May 2023.
100
Len Woodward @projektgopher.com · 03/09/2026
Should new-function RFCs ship a userland polyfill? @nicolasgrekas.bsky.social says no — Symfony's monorepo picks them up anyway, and the polyfill that ships usually isn't the RFC's. @timwolla.bsky.social went further: performance shouldn't decide what's in the stdlib. You maintain it 15+ years.
100
Len Woodward @projektgopher.com · 03/09/2026
Riaan de Beer has written libxml-rs, a native-Rust libxml2 that's C ABI compatible, and asked whether php-src would take a test build. Byte-identical xmllint and xmlcatalog across 1,110 tests. The list answered his opening sentence instead: libxml2 isn't unmaintained.
100
Len Woodward @projektgopher.com · 03/09/2026
A first-time contributor asked for an ISO 8601 constant with milliseconds and a Z, the way JavaScript's toISOString() gives you. Andreas Heigl said no — and he's the person who added the _EXTENDED constants. @timwolla.bsky.social pointed at 8.6's new date and time API instead.
100