Jon Earnshaw
9 posts
Front-end Signing and Back-end Verification in JavaScript Applications
We live in a time of offline apps, AI-generated content, and decentralized storage. In this world, guaranteeing data…
TS2327: Property ‘{0}’ is optional in type ‘{1}’ but required in type ‘{2}’
TS2327: Property ‘{0}’ is optional in type ‘{1}’ but required in type ‘{2}’ TypeScript has quickly become a…
Hot vs Cold Observables: Getting Started with RxJS – IV
I recently came across MkDocs-Material by Martin Donath, a fantastic open-source project with over 22k GitHub stars. It’s…
Hacking Excel Files in Power Automate
Ever since 2003 Microsoft had to open up their Office files for other software, and that meant moving…
Mistakes I made while studying Machine Learning
Hey there 👋 Hope you are doing well 😊 We all know that this is the decade of…
The Speculation Rules API: A Guide to Faster Websites
In the pursuit of seamless user experiences, the Speculation Rules API offers web developers a powerful tool to…
Data-driven time management for product managers
Product Lead, Julia Ryzhkova launched an initiative to analyze work calendars. Personally, she found out that she spent…
How to convert a TypeScript built-in enum to a GraphQL enum
At Woovi we are GraphQL lovers, hence we develop many helpers around this tool to bring a good…
Identifying, Fixing, and Preventing Cannibalization — Whiteboard Friday
In this Whiteboard Friday, Jon discusses how to identify, fix, and prevent cannibalization. He identifies three specific types…