Garik
banner
garik.codes
Garik
@garik.codes
Independent SWE + IT guy in the rural inland PNW

stats • sports • econ • maps • space • skiing
When two separate non-profits reached out within the next couple weeks it was easy to identify where the issues were!

In both cases they had switched nameservers or hosting services without properly copying over their MX records, thus breaking email for everyone.
November 19, 2025 at 4:01 AM
After I double checked that all the right records were in the right places, I noticed that still something was missing.

The newsletters were sent via Klaviyo. All I had to do was add another record with a sending subdomain to make it nice and tidy, as if it were sent from the actual org itself.
November 19, 2025 at 4:01 AM
Ok, emails don't need sunscreen, but they do need protection because security, encryption , authentication, and validation were all afterthoughts. That's what each of those services provide.

And what of IMAP vs. POP3? Basically it's whether or not your emails live in the cloud or on your device.
November 19, 2025 at 4:01 AM
With that win, and a slowdown in my schedule, I was able to look into the reasons why some emails, especially newsletters, from an org were going to spam folders.

In the spring I saw it had something to do with SPF, DKIM, and DMARC and got scared by all the letters. Why did my email need sunscreen?
November 19, 2025 at 4:01 AM
So, I did the plumbing to link Resend with my domain and Gmail.

Essentially I use Resend's free SMTP and verify it in my DNS records. Now I can use Gmail as a client and also send emails on my website programmatically.
November 19, 2025 at 4:01 AM
What'd you go with and why?
November 18, 2025 at 3:02 AM
The discount code has a typo in it! Only one 't'

See photos:
November 18, 2025 at 1:51 AM
Uh...27x slowdown!? Are you doing any tracing?

I did a quick side-by-side comparison and it looks like micro-tasks and/or flushing are messed up pretty bad in newer versions 🤔
November 17, 2025 at 9:49 PM
Oh no, I went back to add shadcn-svelte for better a11y in a navbar of mine I made last year and got this. Is this the same problem?
November 17, 2025 at 3:50 PM
Agreed! Such a fun + fast read. His points are not very complicated, but their power lies in showing something to readers they already kinda know.

Hard to escape the engineer vs. lawyer lens after it!

I really liked this passage which is scarily similar to Germany turning coal into oil in WWII:
November 17, 2025 at 3:12 PM
Thanks for the reminder to get back writing medium-length pieces again!

garik.codes/blog
November 16, 2025 at 11:51 PM
Thanks for the share/gift! And sorry about the Fahrenheit thing 🥴

I love all the smart experimental features SvelteKit has added in the last year that continue to improve DX/UX. Kudos for also gracefully dishing out criticisms and compliments alike to other frameworks.
November 15, 2025 at 7:33 PM
Here's the schematic I drew up for her to share with her dev team.

It replaces client-side JS redirects with server-side validation using Redis' TTL with timestamped sessions.

It allows for a client-side timer and redirects but, importantly, does not rely on it.
November 14, 2025 at 11:03 PM
Given the problem and implementation, it was pretty easy to understand what was happening and how to fix it.

Mobile + mobile-like systems don't run JS in the background, so a 'setTimeout' call won't work unless that tab is open the entire time!

Relying solely on client-side JS is not good enough.
November 14, 2025 at 11:03 PM