21 posts since 2019
Writing
2026
- The Reports of Jim Carrey's Death are a Failure Mode
A false report of Jim Carrey's death was a canary in the coal mine - a visible failure mode of a knowledge system
- The Man With No Brains
After two years of using AI to write code, I finally found myself unable to start a new project without it.
2025
- Oh no, not again... a meditation on NPM supply chain attacks
For enterprise software, the software supply chain presents some of the biggest risks today to data privacy and security.
2023
- Slack wants you to know this privacy exploit is fine
A privacy exploit I reported in Slack has been marked as "works as intended" - I thought you should know
- I Think I Found a Privacy Exploit in ChatGPT
Either ChatGPT is good at hallucinating, or I found an exploit in their API that can expose private information
2021
- Announcing Formula - A Zero-Config Reactive Forms Library for Svelte
Create reactive forms in Svelte with ease using only HTML properties to configure validations
- Revisiting Dark patterns with the HTML <dialog> tag
Revisiting some earlier work with the <dialog> tag showing how it can easily be mis-used, and how to protect against it
- WebSerial.app - Browser to USB Serial Communication With Svelte
Talk to hardware from your browser with this Svelte-powered Web Serial application
- Web Serial API with RxJS - Two-Way Reactive Communication between Browser and Serial Hardware
The newly launched Web Serial API allows the browser to connect to devices across a serial connection - learn how to combine it with RxJS to make a reactive app
- Create your own Dark Mode Detection Observable using RxJS and Media Queries
Using RxJS and CSS Media Queries - create an Observable that detects the users dark mode preference
- Creating Custom RxJS Operators
RxJS has over 100 operators, but it's also very easy to create your own higher-level operators for your domain code
- RxJS Ninja Updates - New operators for math and working with streams
A few new RxJS Ninja operators for numbers, math and working with streams, with StackBlitz demos showing them in action
2020
- RxJS Primitives is now RxJS Ninja
RxJS Primitives has been re-released as RxJS Ninja, now published under @rxjs-ninja instead of @tinynodes
- New RxJS Primitives release, new operators + Typescript 4
New releases of RxJS Primitives with new utility operators, and an upgrade to Typescript 4 that removes polymorphic functions
- Polymorphic TypeScript - Function overloading with rest parameters
Learn how to create different signatures for your functions, so they can accept various parameter variations
- Publishing NPM Libraries using NX and Github Actions
Learn how to publish your own TypeScript libraries to NPM in a few steps
- RxJS Primitives - Operators for mutating and filtering primitives
A new set of RxJS operators on NPM for working with String, Number and Boolean values, plus some useful utilities
2019
- Validating data with JSON Schema, Angular and TypeScript
Learn how you can validate data input using OpenAPI specifications and TypeScript
- Ngx-EditorJS library for Angular
My first full Angular module - a set of features for Angular 7+ to create and control EditorJS instances
- Providing injectable features to Angular modules
Taking advantage of one of Angular's more powerful features - dependency injection - to provide configurable features to modules
- New blog ('Hey I'm Moving From Medium')
Buying a new domain is always a good excuse to do something with it - so here's a new blog, and why I'm leaving Medium