Alex Vanderbist

Alex Vanderbist

@alexvanderbist.com

Web, tech, and code enthousiast. PHP & Laravel developer at Spatie. Blogging at alexvanderbist.com

117 followers53 following36 posts

Just added calendar support to Spool. If it's a call, it turns into a waveform for the duration the mic was on. Felt it was cute, might delete later.

I work on multiple projects at the same time, jumping from agent to agent. Normal time tracking can't keep up with that. So I'm building my perfect time tracking tool. It uses JEV to turn all that switching between apps and agents into trackable chunks of work.

An hour spent switching between 3 agent chats is one hour of my focus, but three hours of project activity. I wanted to track both. So in Spool, solid blocks are focus time and lighter bands are active time per thread.

Works with any app and tracks any activity you can describe. Spool reads the focused window via the macOS Accessibility API and TypeSafe's JEV assigns each bit of work to a thread. No screenshots, no keystrokes, and sensitive apps like 1Password are never recorded.

Added a swinging sign to the spatie.be homepage. Swing it all the way around and you get confetti. Before AI, stuff like this was never worth the time. Anyone with an agent can generate a slick UI now but the silly extras are what makes it feel a little more human.

Been going back and forth on this for Flare for a couple of days now... Two logs in the current filter. Pin them to the bottom (because that's where new logs land) or to the top (because that's how every table works)? Neither feels obviously right. Both feel slightly wrong 🙃

We just released a new package: spatie/sourcemaps-lookup It resolves JS stack frames against source maps. Flare uses it in its frame resolver. It's 99% faster and uses 91% less memory on a 6 MB map. Took me a couple of steps to get there... 🧵

View full thread

The biggest win: PHP's lesser-known (un)pack function lets you store data as raw bytes instead of PHP objects. Each mapping is 5 ints. As an object that's ±200 bytes, but as 5 int32s in a packed string it's only 20 bytes. That's 10x less memory used!

We just released a new package: spatie/sourcemaps-lookup It resolves JS stack frames against source maps. Flare uses it in its frame resolver. It's 99% faster and uses 91% less memory on a 6 MB map. Took me a couple of steps to get there... 🧵

First win: lazy parsing + binary search. A source map is a list of lines, each with mappings sorted by column. The old approach decoded every line upfront, all 110K of them. By only decoding the line you ask for and halving the search space, it's only ~17 steps instead of 3000.

Then there's the decoding state. Each line stored its state as an associative array and those string keys aren't free. PHP keeps them in a hashtable at ±250 bytes per entry. Swapping to just values [0,0,0,0] is only ±150 bytes per entry. A 10MB improvement on 110K lines.

I'm giving Codex a go this week. Loving the UI so far but it seems like it's pretty good at planning too. Claude Code often thinks Codex' plans are "slightly more comprehensive" or in-depth

Any tips for handling large #Laravel Horizon jobs more effectively? Getting [job] attempted too many times usually points to OOM/timeouts, but debugging is tough - especially with 30min+ execution times and retries. What's your approach?

Now that an official VS Code extension for Laravel is available, I'm ready to give it another try. Is there a definitive guide on how to configure VS Code for PHP development? I know there's a Laracasts course, but I feel like a lot has changed since 2021

this post but for global scopes

nunomaduro@nunomaduro.com

we’ve used laravel’s soft deletes in a few production apps, and honestly, they just make the codebase more complicated and lead to a bunch of unexpected edge cases. i try to avoid them as much as possible.

Every year, we create a fun video and promo for Black Friday, and this one might be my favorite yet! Next week we'll be giving away 100 t-shirts and a bunch of other prizes, if you know where to find them 🕵️

spatie.be@spatie.be

S.P.A.T.I.E. invites its would-be agents to their first briefing. Find your objective on Monday 25th at 9:00 CET at topsecret.spatie.be. Don't be late.

You are up to date.