Blog.
Notes from my Obsidian vault: thoughts and experiments shaped by the Zettelkasten system, then refined with LLMs into pieces with a beginning, middle, and end before being published here.
Filter by tag 34 tags
JavaScript Modules and Bundlers
JavaScript module systems (IIFE, CommonJS, ESModules), modern bundlers, and build types for apps and libraries
PixieShop Authentication Playbook — OIDC SSO Across Four Identity Providers
Practical OIDC SSO playbook for a Next.js B2B SaaS using Auth.js v5, FusionAuth, Okta, and Microsoft Entra ID.
Web Accessibility V3 — Topics cheat-sheet & decision guide
Compressed guide to the Web Accessibility (V3) course topics with quick heuristics, team workflow, and checklists.
Backend Architectures — history, case studies & dogfooding
From monolith → services → serverless; lessons from Amazon, Netflix, Google, Uber; how dogfooding turns platforms into products.
XState — model UI behavior correctly and make it testable
State modeling in React with XState: finite states, events, guards, effects. Clear behavior and cheap tests.
Domain-Driven, Data-Oriented Design (DDDOD)
Bill Kennedy’s Go-centric take on DDD focusing on data flow, validation, and layered boundaries.
Gophers 2025 — Event Report
Comprehensive recap of the Gophers 2025 conference (13–14 May) including sessions, workshops, detailed technical notes, and recommended next steps for Go teams.
Package Oriented Design
Bill Kennedy’s approach to Go package design: purpose-driven packages, clear boundaries, and modular structure.
Go Serialization Options
How Go types expose custom wire formats with MarshalText, MarshalJSON, and helper-based serialization.
Teach Yourself Programming in Ten Years
Summary of Peter Norvig’s essay on long-term skill development in programming.
TDD Effects on Quality and Productivity
Summary of Bissi et al.'s systematic review on Test-Driven Development impacts.
Software Aging
Summary of David Parnas’s 1994 essay on software aging, causes, and preventive practices.
No Silver Bullet — Essence & Accidents
Summary of Frederick Brooks Jr.’s 1986 essay on inherent vs accidental complexity in software engineering.
Modularization Criteria — Parnas 1972
Summary of David Parnas’s criteria for decomposing systems into modules (KWIC case study).
Design by Contract (DbC)
Summary of Bertrand Meyer’s Design by Contract principles for robust software.
Decision-Making Traits of Great Software Engineers
Highlights from Meyer et al. (2015) on decision-making characteristics in top engineers.
Conway’s Law — origins, literature, and team design
Summary of Melvin Conway’s original essay, subsequent research, and practical implications for structuring engineering teams.
JavaScript Sets, Maps, and Hashing
Understanding Set vs Map behaviour, hashing, caching patterns, and differences from C#.
useRef
useRef hook in React
Typescript Overwrite Types
Overwriting types in TypeScript
This Object Inside Call, Apply and Bind
How the this keyword works in JavaScript across four binding rules — implicit, explicit (.call, .apply, .bind), new, and window binding — with practical examples.
TensorFlow
TensorFlow notes and resources from 2019
SVG Are the Best
Why SVG is often a better choice than icon fonts and bitmap images for modern web interfaces.
Shape Up: Stop Running in Circles and Ship Work that Matters
Notes and practice guide merging book takeaways and course review on Shape Up by Ryan Singer, connected with The Mythical Man-Month, Design by Contract, Programming with Abstract Data Types, and Domain-Driven Design.
Recursion
Recursion concepts and examples
React.Suspense
React.Suspense for lazy loading
React ForwardRef
Forwarding Refs is a technique in React where you pass a ref from a parent component to a child component
Prototype
JavaScript prototype chain and inheritance
Optimizing React with Memoization
Optimizing React applications with memoization techniques
Mapped Types and Generics
Mapped types and generics in TypeScript
Domain-Driven Design: Tackling Complexity in the Heart of Software
Domain-Driven Design (DDD) is a software design approach that focuses on modeling complex systems based on the real-world domains or concepts they represent.
Design Patterns
Notes and presentation outline about design patterns, their intent, trade-offs, and related connections.
Closures and Curries
Closures and currying are both important concepts in JavaScript, especially for functional programming.
Behavior-Driven Development (BDD)
BDD with Cucumber and Gherkin — principles, syntax reference, step definitions in JS/TS, best practices, and comparison with TDD.
Agile Software Development
Comprehensive guide to Agile methodologies, values, and practices for modern software development teams.
ADR — Architecture Decision Records
How to use Architecture Decision Records (ADRs) to document important architectural choices, their context, and trade-offs.
Master’s Article Summaries
Key takeaways from replay attack detection, deepfake speech, plant identification with remote sensing, and spoofing countermeasures.
Testing Library vs Enzyme
Complete migration guide from Enzyme to Testing Library, covering the mindset shift, custom renders, wrapper patterns, form testing, and real-world Calendar component examples.
Testing Concepts Notes
Core testing concepts covering BDD, Sinon, accessibility, Lighthouse, CSS snapshots, unit testing best practices, and Storybook integration with Cypress.