Tim Perry's Avatar

Tim Perry

@pimterry.fyi

Founder of https://httptoolkit.com (πŸ¦‹ @httptoolkit.com), Node.js core collaborator, tech speaker, drummer, mountain biker and dad. πŸ‡¬πŸ‡§/πŸ‡¨πŸ‡¦ living in πŸ‡ͺπŸ‡Έ

704
Followers
704
Following
169
Posts
28.10.2024
Joined
Posts Following

Latest posts by Tim Perry @pimterry.fyi

There was no hint of Tailwind suggested here before this - open Claude, say you're building a new cross-platform React app, ask for a plan to get started => use Tailwind A, Tailwind B, or Tailwind C.

04.03.2026 11:59 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Which UI styling approach do you prefer?

  1. Tailwind + shadcn/ui (Recommended)
     Tailwind for utility CSS + shadcn/ui (Radix-based) for accessible, customizable components. Best native feel
     with full control.
  2. Tailwind + Radix UI
     Tailwind for styling + raw Radix primitives. More manual work but maximum flexibility.
  3. Ionic + Tailwind
     Ionic provides native-quality components and transitions out of the box. Heavier but purpose-built for
     Capacitor apps.

Which UI styling approach do you prefer? 1. Tailwind + shadcn/ui (Recommended) Tailwind for utility CSS + shadcn/ui (Radix-based) for accessible, customizable components. Best native feel with full control. 2. Tailwind + Radix UI Tailwind for styling + raw Radix primitives. More manual work but maximum flexibility. 3. Ionic + Tailwind Ionic provides native-quality components and transitions out of the box. Heavier but purpose-built for Capacitor apps.

Wow, I sure am glad we have such diversity in the CSS world and that AIs consider all of the options fairly, instead of hypothetically being hyper focused on any specific library.

04.03.2026 11:27 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
⚠️LAST CALL TO WRITE TO CMA:  5pm TODAY ⚠️
DEMAND FAIR ACCESS on iOS
Equal API Access to All Apps
Equal Performance and Privileges
Enforceable Deadlines & Oversight
FAILURE MEANS:
Developers can’t compete with Apple’s Apps & Hardware
Apple keeps features to themselves
Browsers & the Web won’t be able to compete
Sets Global Precedent for weak digital legislation
Less Competition = More Expensive + Worse Quality for consumers
πŸ‘‡ Read more, OWA blog link below

⚠️LAST CALL TO WRITE TO CMA: 5pm TODAY ⚠️ DEMAND FAIR ACCESS on iOS Equal API Access to All Apps Equal Performance and Privileges Enforceable Deadlines & Oversight FAILURE MEANS: Developers can’t compete with Apple’s Apps & Hardware Apple keeps features to themselves Browsers & the Web won’t be able to compete Sets Global Precedent for weak digital legislation Less Competition = More Expensive + Worse Quality for consumers πŸ‘‡ Read more, OWA blog link below

⚠️ LAST CALL TO WRITE TO CMA: 5pm TODAY ⚠️

Under the current proposal, Apple can keep iOS and iPhone functionality exclusive to its own apps and services.

If you want fair access to APIs for competing apps and browsers email πŸ“§ mobilesms@cma.gov.uk

See: open-web-advocacy.org/blog/apples-...
πŸ§΅πŸ‘‡οΈ(1/5)

03.03.2026 08:48 πŸ‘ 7 πŸ” 3 πŸ’¬ 1 πŸ“Œ 0

Haha, fair. In this case it was Open Collective, which is some cases effectively is a bank - but yes it's very annoying when random sites act like they need the same security as a gold vault to protect my shopping list. Honestly even for bank accounts most of the time it's way OTT.

02.03.2026 10:28 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Magic link login is fine, session expiry is fine, but for the love of god please don't do both.

If you have to re-auth every week, there is little more frustrating that blocking the process waiting for an email so I can click a button, over and over and over...

02.03.2026 10:18 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
We deserve a better streams API for JavaScript The Web streams API has become ubiquitous in JavaScript runtimes but was designed for a different era. Here's what a modern streaming API could (should?) look like.

After implementing web streams in multiple runtimes, supporting them for years, talking with other implementers, dealing with issues... I think it's well past time we talked about something better blog.cloudflare.com/a-better-web...

27.02.2026 14:14 πŸ‘ 83 πŸ” 29 πŸ’¬ 5 πŸ“Œ 4
Preview
Open Source Endowment β€” World's First Endowment Fund for OSS The Open Source Endowment provides truly sustainable funding for critical open source software through a community-driven endowment model.

This looks very exciting: endowment.dev

26.02.2026 17:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

This inspired by me quickly temporarily creating a "WIP" commit to track some state, and then worrying about actually pushing it publicly by accident... Now conveniently impossible!

24.02.2026 15:37 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
GitHub - pimterry/git-confirm: :question: Git hook to catch placeholders and temporary changes (TODO / @ignore) before you commit or push them. :question: Git hook to catch placeholders and temporary changes (TODO / @ignore) before you commit or push them. - pimterry/git-confirm

Everybody's favourite "save me from myself" git hook (github.com/pimterry/git...) has the first new major feature in nearly 5 years: it'll now validate and catch unintended git pushes too πŸ˜€

24.02.2026 15:37 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
Dictionary Compression is finally here, and it's ridiculously good Dictionary compression could completely change how applications send data over the web. It's recently gained broad support, and offers absurd real-world...

Wouldn't it be nice if HTTP compression suddenly got 90% better for a whole bunch of common web scenarios?

Dictionary Compression is here to save the day: httptoolkit.com/blog/diction...

23.02.2026 12:14 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
What's Next at Bluesky - Bluesky As we head into 2026, we're entering a new phase for the Bluesky app. Last year was about scaling through rapid growth and getting the fundamentals in place. This year is about leaning into what's wor...

2026 is the year Bluesky and the Atmosphere really come alive

here's what's next

bsky.social/about/blog/0...

26.01.2026 21:07 πŸ‘ 1796 πŸ” 346 πŸ’¬ 152 πŸ“Œ 116
Node.js code that loads TLS & crypto, starts defining a KEY variable with BEGIN PRIVATE KEY, and then loops on the same 'random' string forever...

Node.js code that loads TLS & crypto, starts defining a KEY variable with BEGIN PRIVATE KEY, and then loops on the same 'random' string forever...

My AI code generation has decided it can generate an inline private key pair by itself, and I think we might be in trouble...

09.12.2025 08:48 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I use Bunny for CDN, DNS, video streaming & object storage. It's been absolutely rock solid (I've noticed zero downtime in multiple years) and very reasonably priced.

DX less polished, narrower feature set, but for the core functionality if I started again today, I'd pick them over Cloudflare 100%.

05.12.2025 09:51 πŸ‘ 6 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Really? He's the #1 frontman for tech getting into bed with the hard-right. Bold choice.

05.12.2025 09:23 πŸ‘ 8 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Screenshot of a Cloudflare site that says "500 Internal Server Error – Cloudflare"

Screenshot of a Cloudflare site that says "500 Internal Server Error – Cloudflare"

Happy Cloudflare is down once again to all who celebrate

05.12.2025 09:04 πŸ‘ 26 πŸ” 11 πŸ’¬ 1 πŸ“Œ 0
Preview
GitHub - pimterry/git-confirm: :question: Git hook to catch placeholders and temporary changes (TODO / @ignore) before you commit them. :question: Git hook to catch placeholders and temporary changes (TODO / @ignore) before you commit them. - pimterry/git-confirm

I have a published general purpose hook for exactly this: github.com/pimterry/git-confirm πŸ˜€

Add any patterns you like (like TODO) and it'll ask you to confirm before you ever commit any change with those strings.

04.12.2025 09:39 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Critical Security Vulnerability in React Server Components – React The library for web and native user interfaces

A perfect CVSS 10 πŸ§‘πŸ»β€πŸ³πŸ’‹

CVE-2025-55182: Unauthenticated remote code execution vulnerability in React Server Components

The vuln is in versions 19.0, 19.1.0, 19.1.1, and 19.2.0:

react-server-dom-webpack
react-server-dom-parcel
react-server-dom-turbopack

Upgrade immediately!

03.12.2025 16:23 πŸ‘ 290 πŸ” 120 πŸ’¬ 18 πŸ“Œ 29

Honestly I'm just really excited to discover that people running a global DDOS setup have heard of me.

04.12.2025 09:00 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Maybe this is somebody trying to hammer Paddle through me? Maybe they're just messing around & testing things? Very odd.

04.12.2025 08:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

On a more practical note: all this API is separate from product delivery & functionality, and existing accounts will work fine even if it goes offline for days. Could only really impact new checkouts, no need for anybody else to worry.

04.12.2025 08:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Much credit to Scaleway autoscaling & Bunny CDN for taking the edge off here.

04.12.2025 08:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Wouldn't say the accounts API loves it, but seems to be autoscaling and holding up just fine, the only errors I see are affecting the attackers' own requests for now (largely due to Paddle rate limits). All manageable.

04.12.2025 08:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Needless to say, HTTP Toolkit normally does not normally have 500k daily customers. Clearly recent marketing efforts are paying dividends!

04.12.2025 08:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

For some reason, somebody using random IPs and random-ish emails for every request hit the HTTP Toolkit checkout API ~500k times this morning.

04.12.2025 08:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Being hit by my first DDOS attack right now, it's all quite exciting!!!

04.12.2025 08:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
GitHub - step-security/wait-for-secrets: Publish from GitHub Actions using multi-factor authentication Publish from GitHub Actions using multi-factor authentication - step-security/wait-for-secrets

I have seen github.com/step-securit..., but a) I'd rather go 100% hardware passkeys instead of messing with TOTP, b) I want to gate non-npm deployments as well, so I'd love a general solution, and c) linking a rule directly to the env instead of using a step would provide some broader guarantees.

26.11.2025 19:55 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
Creating custom deployment protection rules - GitHub Docs Use GitHub Apps to automate protecting deployments with third-party systems.

It looks like you could gate OIDC publish on 2FA today via docs.github.com/en/actions/h..., though I can't see that anybody has implemented a 2FA provider for that yet.

Would that be sufficient? Any idea if anybody is working on it?

26.11.2025 19:55 πŸ‘ 2 πŸ” 0 πŸ’¬ 3 πŸ“Œ 0

I'm aware of concerns with CI publishing, hadn't heard about provenance concerns, it's interesting! Imo full reproducible builds would be great, but reproducing the process is an independent problem to proving the input (though a shared goal). But if you don't want to rehash that's fair, no worries.

25.11.2025 22:35 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Is it? Seems like the npm metadata is user controlled (a nice signal, little more) while TP provenance does give some guarantee (backed by GitHub) that the code at the recorded commit hash generated the output.

Stores the commit hash as well, so GHA history would be nice but not strictly necessary.

25.11.2025 22:19 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0