Allan Deutsch
@allandeutsch.com
👨💻 Software craftsman
🎟️ SeattleJS Organizer
Currently building:
🦺 typesafe-ts to help you write safer code with confidence
🐤 docduck.dev to get inline docs feedback from developers
🎟️ SeattleJS Organizer
Currently building:
🦺 typesafe-ts to help you write safer code with confidence
🐤 docduck.dev to get inline docs feedback from developers
Coding agents are helpful for annoying "papercut" type issues.
For a month I've had a noisy error in my e2e tests that doesn't cause failure, but pollutes the output. Annoying, but not worth solving myself. 3x Claude failed to get it.
Today I put codex on it. 20m investigation + 1LOC config fix.
For a month I've had a noisy error in my e2e tests that doesn't cause failure, but pollutes the output. Annoying, but not worth solving myself. 3x Claude failed to get it.
Today I put codex on it. 20m investigation + 1LOC config fix.
November 3, 2025 at 9:10 PM
Coding agents are helpful for annoying "papercut" type issues.
For a month I've had a noisy error in my e2e tests that doesn't cause failure, but pollutes the output. Annoying, but not worth solving myself. 3x Claude failed to get it.
Today I put codex on it. 20m investigation + 1LOC config fix.
For a month I've had a noisy error in my e2e tests that doesn't cause failure, but pollutes the output. Annoying, but not worth solving myself. 3x Claude failed to get it.
Today I put codex on it. 20m investigation + 1LOC config fix.
Q: What does the compiler do with dead types that are no longer being used?
A: It sends them to the TypesCrypt!
A: It sends them to the TypesCrypt!
October 31, 2025 at 9:26 PM
Q: What does the compiler do with dead types that are no longer being used?
A: It sends them to the TypesCrypt!
A: It sends them to the TypesCrypt!
Anxiety is the dizziness of freedom
Sometimes, having too many choices (i.e. “freedom”) is a bad thing.
We’re frozen, unable to pick, or “experiment” by just peering around corners and not really finding out what’s over there.
Sometimes, you have to collapse the options yourself to make progress.
We’re frozen, unable to pick, or “experiment” by just peering around corners and not really finding out what’s over there.
Sometimes, you have to collapse the options yourself to make progress.
October 30, 2025 at 3:10 PM
Anxiety is the dizziness of freedom
“AI will replace human engineers,” proclaims company as justification for laying off 30,000 employees.
I’m sure it is merely a coincidence that they are experiencing their second major outage in as many weeks.
I’m sure it is merely a coincidence that they are experiencing their second major outage in as many weeks.
October 29, 2025 at 6:01 PM
“AI will replace human engineers,” proclaims company as justification for laying off 30,000 employees.
I’m sure it is merely a coincidence that they are experiencing their second major outage in as many weeks.
I’m sure it is merely a coincidence that they are experiencing their second major outage in as many weeks.
Speaking at meetups and conference is a great way to attract the attention of those looking to hire people with the skills you talk about.
@seattlejs.com also has lots of cool and friendly people. Presenting a talk is a great way to introduce yourself! Our CFP is always open 😉
@seattlejs.com also has lots of cool and friendly people. Presenting a talk is a great way to introduce yourself! Our CFP is always open 😉
now more than ever, i believe being part of a community is greatly beneficial for career growth. some steps to do this:
- show up to meetups
- go to conferences
- join a discord server
- show up to meetups
- go to conferences
- join a discord server
October 29, 2025 at 5:50 PM
Speaking at meetups and conference is a great way to attract the attention of those looking to hire people with the skills you talk about.
@seattlejs.com also has lots of cool and friendly people. Presenting a talk is a great way to introduce yourself! Our CFP is always open 😉
@seattlejs.com also has lots of cool and friendly people. Presenting a talk is a great way to introduce yourself! Our CFP is always open 😉
Boarding a flight and had to provide name & seat to board. I joked to Maya “they must use AWS” given the recent DNS outage.
TURNS OUT AWS AND AZURE ARE BOTH DOWN! And it’s DNS again.
www.newsweek.com/microsoft-aw...
TURNS OUT AWS AND AZURE ARE BOTH DOWN! And it’s DNS again.
www.newsweek.com/microsoft-aw...
October 29, 2025 at 5:40 PM
Boarding a flight and had to provide name & seat to board. I joked to Maya “they must use AWS” given the recent DNS outage.
TURNS OUT AWS AND AZURE ARE BOTH DOWN! And it’s DNS again.
www.newsweek.com/microsoft-aw...
TURNS OUT AWS AND AZURE ARE BOTH DOWN! And it’s DNS again.
www.newsweek.com/microsoft-aw...
“All you need to do is upgrade” is my favorite way to improve performance.
When c++11 came out, the language added move semantics. Simply upgrading the compiler was a ~10% perf increase in most codebases.
Being able to make big perf improvements without breaking APIs signals good API design.
When c++11 came out, the language added move semantics. Simply upgrading the compiler was a ~10% perf increase in most codebases.
Being able to make big perf improvements without breaking APIs signals good API design.
Combine it with forking and you can defy physics: svelte.dev/playground/7...
Out-of-order rendering uses static analysis (which we'll optimise further over time) and is fully automatic — all you need to do is upgrade
Out-of-order rendering uses static analysis (which we'll optimise further over time) and is fully automatic — all you need to do is upgrade
Out-of-order rendering with forking • Playground • Svelte
Web development for the rest of us
svelte.dev
October 29, 2025 at 6:12 AM
“All you need to do is upgrade” is my favorite way to improve performance.
When c++11 came out, the language added move semantics. Simply upgrading the compiler was a ~10% perf increase in most codebases.
Being able to make big perf improvements without breaking APIs signals good API design.
When c++11 came out, the language added move semantics. Simply upgrading the compiler was a ~10% perf increase in most codebases.
Being able to make big perf improvements without breaking APIs signals good API design.
It’s heartening to see that not everyone compromises on their values in exchange for money.
as a condition of funding, we were asked to affirm that we wouldn’t undertake any diversity, equity, and inclusion work, whether or not we used the government funds to do so. The PSF simply couldn’t agree to that statement,
October 28, 2025 at 7:41 PM
It’s heartening to see that not everyone compromises on their values in exchange for money.
Another day, another reason to be thrilled with my decision to build using svelte!
today we landed a @svelte.dev feature i'm pretty stoked about — we call it 'forking', and it lets you run state changes offscreen and later choose whether to commit them (e.g. user hovers on a link, preload data in case they click)
- docs svelte.dev/docs/svelte/...
- demo svelte.dev/playground/a...
- docs svelte.dev/docs/svelte/...
- demo svelte.dev/playground/a...
forking monkeys • Playground • Svelte
Web development for the rest of us
svelte.dev
October 26, 2025 at 4:31 AM
Another day, another reason to be thrilled with my decision to build using svelte!
I found blue sky irl
October 17, 2025 at 4:30 PM
I found blue sky irl
We don't write tests
In honor of spooky month, share a 4 word horror story that only someone in your profession would understand
I'll go first: Six page commercial lease.
I'll go first: Six page commercial lease.
October 16, 2025 at 11:54 PM
We don't write tests
Advanced typescript trick: custom compiler errors!
when I’ve used types to identify an error case, instead of using never (and getting a normal boring type error) I’ll write a custom error type like:
{ error: “this type is already branded”}
It makes it way clearer what the error is!
See example 👇
when I’ve used types to identify an error case, instead of using never (and getting a normal boring type error) I’ll write a custom error type like:
{ error: “this type is already branded”}
It makes it way clearer what the error is!
See example 👇
100%! One trick I use in typesafe-ts which I hope more people will adopt in the ecosystem is custom compilation errors.
I use custom types in error cases that provide more useful hints/diagnostics via properties with literal types.
They’re way more helpful than the stock compiler type errors IMO
I use custom types in error cases that provide more useful hints/diagnostics via properties with literal types.
They’re way more helpful than the stock compiler type errors IMO
github.com
October 7, 2025 at 11:41 PM
Advanced typescript trick: custom compiler errors!
when I’ve used types to identify an error case, instead of using never (and getting a normal boring type error) I’ll write a custom error type like:
{ error: “this type is already branded”}
It makes it way clearer what the error is!
See example 👇
when I’ve used types to identify an error case, instead of using never (and getting a normal boring type error) I’ll write a custom error type like:
{ error: “this type is already branded”}
It makes it way clearer what the error is!
See example 👇
What's the most popular Halloween costume for web developers?
Spiderman! 🕸️
Spiderman! 🕸️
October 6, 2025 at 10:18 PM
What's the most popular Halloween costume for web developers?
Spiderman! 🕸️
Spiderman! 🕸️
Free dev education AND free pizza/beer? What a deal! I had to pay for all of those when I was in undergrad.
Glad I can help make it all available for free now!
Glad I can help make it all available for free now!
SeattleJS is this Wednesday night at Just The Tap!
This month we've got 2 techs and a sponsor (they're hiring!) to help you fuel up for learning.
On deck we have:
- Building and Releasing Cross-Platform Desktop Apps with Electron and React
- Lies I was told about collaborative editing
RSVP:
This month we've got 2 techs and a sponsor (they're hiring!) to help you fuel up for learning.
On deck we have:
- Building and Releasing Cross-Platform Desktop Apps with Electron and React
- Lies I was told about collaborative editing
RSVP:
SeattleJS: Web Tech Talks - October · Luma
🎉 Get ready to learn and connect at SeattleJS! 🎉
Prepare for an evening filled with fun, networking, and learning. Whether you're a seasoned developer or…
luma.com
October 6, 2025 at 10:17 PM
Free dev education AND free pizza/beer? What a deal! I had to pay for all of those when I was in undergrad.
Glad I can help make it all available for free now!
Glad I can help make it all available for free now!
Kinda crazy if there’s no better controls for orgs on GitHub
True, as one of the 6 'owners' of the sveltejs org I guess I have the power to arbitrarily add/remove other owners (and so do the other 5). If you know of a way to make certain actions require approval from multiple owners, let me know... otherwise will add to the 'to research' pile
October 4, 2025 at 12:04 AM
Kinda crazy if there’s no better controls for orgs on GitHub
I first tried opencode around its launch, but disliked it because I prefer to rein in LLMs. Claude's default of "ask for permission" was a better fit for me.
Recently tried latest and the permissions system is very configurable, faster perf, and integrates with LSP even for nvim users! worth a 👀
Recently tried latest and the permissions system is very configurable, faster perf, and integrates with LSP even for nvim users! worth a 👀
Take the reins when using LLMs for development
LLMs are an incredible evolution of the next word suggestion features of early smartphones, but just as before their predictions are only right for a little while at a time.
allandeutsch.com
October 1, 2025 at 9:52 PM
I first tried opencode around its launch, but disliked it because I prefer to rein in LLMs. Claude's default of "ask for permission" was a better fit for me.
Recently tried latest and the permissions system is very configurable, faster perf, and integrates with LSP even for nvim users! worth a 👀
Recently tried latest and the permissions system is very configurable, faster perf, and integrates with LSP even for nvim users! worth a 👀
Ego-driven development (noun)
A git workflow which avoids using squash commits to produce a clean and useful commit history because doing so reduces the quantity of contributions on the @github.com contribution graph.
A git workflow which avoids using squash commits to produce a clean and useful commit history because doing so reduces the quantity of contributions on the @github.com contribution graph.
September 29, 2025 at 11:39 PM
Ego-driven development (noun)
A git workflow which avoids using squash commits to produce a clean and useful commit history because doing so reduces the quantity of contributions on the @github.com contribution graph.
A git workflow which avoids using squash commits to produce a clean and useful commit history because doing so reduces the quantity of contributions on the @github.com contribution graph.
One unexpected benefit of using git CLI via LLMs is that I recently learned `git commit --amend` has a `--no-edit` flag.
`git commit --amend --no-edit` automatically keeps the commit message from the previous commit that's being amended. Really nice!
`git commit --amend --no-edit` automatically keeps the commit message from the previous commit that's being amended. Really nice!
September 29, 2025 at 9:21 PM
One unexpected benefit of using git CLI via LLMs is that I recently learned `git commit --amend` has a `--no-edit` flag.
`git commit --amend --no-edit` automatically keeps the commit message from the previous commit that's being amended. Really nice!
`git commit --amend --no-edit` automatically keeps the commit message from the previous commit that's being amended. Really nice!
I had my Covid and flu vaccines yesterday and I’m so wrecked today. Sore everywhere, especially my arm where I got the shots.
Excited to not catch either virus though; I’ve heard the flu is ROUGH this year.
Excited to not catch either virus though; I’ve heard the flu is ROUGH this year.
September 28, 2025 at 9:13 PM
I had my Covid and flu vaccines yesterday and I’m so wrecked today. Sore everywhere, especially my arm where I got the shots.
Excited to not catch either virus though; I’ve heard the flu is ROUGH this year.
Excited to not catch either virus though; I’ve heard the flu is ROUGH this year.
Friday: @nerdy.dev gives a talk @cascadiajs.com blitzing through tons of cool CSS things I want to go learn about.
Monday: @joshwcomeau.com has just published a blog post about one I'm super excited to dive into, `@starting-style`. It can be used to animate an element's initial render!
<3 you both
Monday: @joshwcomeau.com has just published a blog post about one I'm super excited to dive into, `@starting-style`. It can be used to animate an element's initial render!
<3 you both
The Big Gotcha With @starting-style • Josh W. Comeau
CSS has been on fire lately, with tons of great new features. @starting-style is an interesting one; it allows us to use CSS transitions for enter animations, something previously reserved for CSS key...
www.joshwcomeau.com
September 22, 2025 at 5:28 PM
Friday: @nerdy.dev gives a talk @cascadiajs.com blitzing through tons of cool CSS things I want to go learn about.
Monday: @joshwcomeau.com has just published a blog post about one I'm super excited to dive into, `@starting-style`. It can be used to animate an element's initial render!
<3 you both
Monday: @joshwcomeau.com has just published a blog post about one I'm super excited to dive into, `@starting-style`. It can be used to animate an element's initial render!
<3 you both
That’s a wrap on another @cascadiajs.com conference! The vibes were immaculate, talks were inspiring, and the people were invigorating!
I leave with new ideas, new friends, and the relief I can finally get a full night of sleep again
Can’t wait to do it all over again next year!
I leave with new ideas, new friends, and the relief I can finally get a full night of sleep again
Can’t wait to do it all over again next year!
September 20, 2025 at 5:43 AM
That’s a wrap on another @cascadiajs.com conference! The vibes were immaculate, talks were inspiring, and the people were invigorating!
I leave with new ideas, new friends, and the relief I can finally get a full night of sleep again
Can’t wait to do it all over again next year!
I leave with new ideas, new friends, and the relief I can finally get a full night of sleep again
Can’t wait to do it all over again next year!
Simon coming through with the best offer!
I have a free @cascadiajs.com ticket! 🎟️
I won this but am now volunteering, so I'd love to give it to a software engineer actively looking for their next role.
The conference is this Thursday & Friday (Sept 18-19). If you can definitely make it, reply to this post! First to message gets it.
I won this but am now volunteering, so I'd love to give it to a software engineer actively looking for their next role.
The conference is this Thursday & Friday (Sept 18-19). If you can definitely make it, reply to this post! First to message gets it.
September 15, 2025 at 7:16 PM
Simon coming through with the best offer!
Looking for a choreographer to help us figure out how to do this as the first dance at our wedding in March 👀
🔊 sound on 🔊
September 14, 2025 at 7:51 AM
Looking for a choreographer to help us figure out how to do this as the first dance at our wedding in March 👀
I’m cruising through Portland today, where should I stop for a late lunch? I know there’s a bunch of Portland foodies on here!
September 12, 2025 at 6:37 PM
I’m cruising through Portland today, where should I stop for a late lunch? I know there’s a bunch of Portland foodies on here!