Blog
Observability
Instrument using OpenTelemetry, part 1: gather metrics, logs, traces with Python
Instrument using OpenTelemetry, part 2: gather structured events with Python
Instrument using OpenTelemetry, part 3: in-browser tracing with React.js
Backend
21 principles for systematically solving problems in computer science: I provide a general process for solving computer science problems, whether it's system design or a coding problem.
25+ patterns for high performance software (part 1): Batching, compression, streaming, pipelining and other best practices for low latency and high throughput
Frontend
- Designing state management for complex React frontends: Complex React frontends are complex because their state is complex. “Use library X” won't cut it. This post organizes state into global, data, local, form, URL, and page state and describe how to use each.
Security
Your digital security is as strong as your weakest security email: If your email is compromised, all your accounts are compromised. And even if you have 2FA or a Yubikey: How secure is your email account, really?
How to design security controls - Security engineering is about developing a threat model and then devising security controls, given real-world constraints. This post describes how to do both, using the practical example of a medieval feudal lord.
Can we quantify cybersecurity risk? - Risk quantification offers to let security teams precisely measure their risk level, so they can prioritize, assess controls, and communicate posture to management. I spoke with many CISOs and risk quantification practitioners to learn if it was feasible.
7 techniques for assessing frequency when quantifying risk: Assessing frequency is the hardest part of assessing risk. How would you accurately assess the chance of a data breach? Ransomware incident? I provide several practical techniques.
Presentations
- Beyond ChatGPT: AI tools for high school and college students - a presentation I gave to a group of high school students on different AI tools they can use for studying