Speaking
I gave a few meetup talks, mostly at Wrocław TypeScript, where I served as a placeholder speaker.
A tiny calendar with sync engines and CRDTs
TypeScript Fireside #4, Wrocław · May 2025
Why and how I built bear-fit, a calendar for
finding a day that works for all my friends. Initial experiment with val.town
Townie, then a migration to PartyKit and Yjs.
Code
Refinement Types
What refinement types are, a research paper that adds them to TypeScript, and
live-coding a userland refinement type you can use today.
Code ·
extended slides
· follow-up post
- Paris TypeScript #27, online · Nov 2020 · recording
- KTUG #5, Kraków · Feb 2020 · recording (pretty bad quality)
- Wrocław TypeScript #7, Wrocław · Sep 2019 · 5-minute lightning talk
Building a Branded Styling DSL in TypeScript
Wrocław TypeScript Online #17 · Jul 2020
Module augmentation and declaration merging to make Theme UI’s sx prop accept
only your design tokens. The live demo breaks at the end, for the exact reason
the talk warns about. Thank god I had a GIF and screenshots.
Recording ·
Theme UI PR
Progressive Web Apps Demystified
Chop-Chop · May 2020 · in Polish
A PWA is just an app that fulfils a checklist. What’s on it, and a case study
with Next.js and Apollo.
Recording
Fixing JSX.IntrinsicElements conflict in react-three-fiber
Wrocław TypeScript #12, Wrocław · Feb 2020
How I used the TypeScript Compiler API to generate react-three-fiber’s JSX types
from three.js and stop them clashing with @types/react.
Slides ·
PR
Maybe-ts. A softer approach to optionals
Wrocław TypeScript #10, Wrocław · Dec 2019
The problems with Option from Rich Hickey’s
“Maybe Not”, and a nullable Maybe for fp-ts
that avoids them. It turned out not to be a lawful functor.
Slides ·
library
Reducers and Hooks in the Wild
Chop-Chop Academy, Wrocław · Dec 2019
Live-coding reducers, a Notification API hook and a Web Audio alarm into a
pomodoro app.
Code ·
app
Power of Preconditions
Wrocław TypeScript #8, Wrocław · Oct 2019
Why TypeScript 3.7 assertion signatures are huge: partial vs total functions,
throwing vs returning errors, and safer React code.
Slides
Linter Overload
Wrocław TypeScript #6, Wrocław · Jun 2019
So many linters for TypeScript. Which one should I use, and how do I configure
it?
Slides
Matryoshka Code
A rant about over-abstracted code, DRY as the dunes of Arrakis, and how to deal
with it.
Slides · notes
- Chop-Chop Academy, Wrocław · in Polish · recording
- Wrocław TypeScript #5, Wrocław · May 2019
Using React with TypeScript
Wrocław TypeScript #1, Wrocław · Jan 2019
Why and how to use TypeScript in React apps.
Slides