The full archive
Chemistry, physics, mathematics, art, software, and systems — newest first.
Forbidden and allowed: what symmetry does to a spectrum
Dissolve cobalt chloride in water and the solution is pale pink; add hydrochloric acid and it turns an intense blue — same ion, same kind of transition, a hundredfold jump in intensity. The gap didn't change; the symmetry did. This post pays the pigment series' oldest promissory note and explains what "forbidden" and "allowed" actually mean — one integral, one parity argument, one character table — and why forbidden bands show up anyway.
Molecules as circuits — a chromophore as an RLC resonator
An absorption energy gap is a resonant frequency, a transition dipole is charge sloshing across a capacitor, and a linewidth is a resistance — so a dye molecule is literally a driven RLC circuit. This post makes the analogy pay its way, pinning every circuit element to a number from a real chromophore I synthesized, then shows the three places the model quietly stops describing the physics: the hyperpolarizability, the quantum interference in the wiring, and the many-body order that actually sets device performance.
One donor, one acceptor, one new band: push–pull chromophores and charge transfer
Aniline and nitrobenzene each absorb only in the ultraviolet. Bolt the amino donor and the nitro acceptor onto the same ring and a new band appears that neither parent owns — lower in energy and brighter than anything either shows alone. This post computes that emergence with TD-DFT, measures the charge-transfer character directly, and uses it to stress-test two density functionals against a failure mode one of them is famous for.
The colors on the palette are energy-level gaps: engineering pigments for permanence
A tube of paint is an electronic-structure problem plus a scattering problem, perceived by an eye. This post builds the mechanism-first taxonomy of color — conjugated π-systems, ligand-field d–d transitions, charge transfer, and semiconductor band gaps — leading with the modern synthetic pigments engineered to fix the lightfastness failures of their historic ancestors, then puts absorption and scattering back together with Kubelka–Munk.
How much does correlation really cost? The correlation gap in water, measured
The Hartree–Fock post drew its correlation-gap figure schematically. This post runs the actual calculations — RHF marched up a basis-set ladder to its limit, MP2 and CCSD(T) below it — and reports what electron correlation costs, in hartrees, for one bent molecule of water.
One matrix element, two experiments: molar absorptivity and the Pockels effect
A companion to the molar-absorptivity post. The absolute height of an absorption band, the refractive index, and the electro-optic coefficient of a poled material are three readouts of one quantity — the transition dipole. Normalizing every spectrum to 1 throws that quantity away. This traces the same matrix element from Beer's law through the two-level model to the Pockels effect, with worked numbers.
Molar absorptivity is a rate constant in disguise
The molar absorptivity in Beer's law looks like a static property of a molecule — a number you read off a table, like a melting point. It is not. The integrated absorption band is proportional to the same transition dipole that fixes the spontaneous-emission rate, so an absorption measurement quietly measures a lifetime. This post follows the chain from Beer's law to the Einstein coefficients and shows why weak absorbers are always slow emitters.
Hartree–Fock and the correlation gap: where the orbital energies come from
A water molecular-orbital diagram quotes orbital energies as if they were just there to be read off. This post derives the ground-state machinery — the Hartree–Fock equations, their self-consistent solution, Koopmans' theorem, and the correlation energy that the mean field leaves behind — that actually computes them.
Reading water off the page: geometry, orbitals, acidity, and spectra
Water is the most familiar molecule and one of the strangest. This post builds it up from the bottom — where the atoms sit, what the electrons do, why it is both an acid and a base, and how it talks to light.
The anatomy of a Hakyll site, line by line
A complete reference for the Haskell that builds this blog — the package layout, the Hakyll rule set, contexts, feeds, the Pandoc compiler with citations and math, the build-time TikZ filter, and the templates — presented as numbered code blocks with a detailed explanation of each.
What are cloud functions? A practical tour with real code
A from-scratch explanation of what cloud functions actually are, the problem they solve, and three real-world examples — an image-resize trigger, a scheduled report, and a webhook handler — written in JavaScript, Python, and Go with line-by-line explanations of what each function does.
gcloud, Firebase, and why I keep paying for a Workspace account
A working tour of Google Cloud and Firebase — what each one actually is, where the line between them sits, how they integrate through a shared project and IAM, and why a paid Google Workspace account ends up being the quiet keystone that ties it all together.
The Met API has no random button
A year ago I shipped a one-button "random artwork" toy on top of the Met Museum API. It has since grown into a four-screen app — and the interesting part is what you do when the API you're randomizing over has no way to hand you something random. Manufacture it. And once you can manufacture randomness, a deterministic "artwork of the day" falls out for free.
A citation, a slot, and the line nobody plots
Running my day job on Claude Code — an agent architecture for non-software work
My day job isn't writing software — it's coordinating insurance-restoration jobs, which is document-heavy and relentlessly repetitive. Over a few months I built a system of Claude Code agents around that workflow. This is the architecture, the decisions that made it hold together, and what I'd change.
Reading the source — the circuitikz behind four schematics
A follow-up that opens up the four circuits from the previous post and shows the circuitikz source for each — the RC low-pass filter, the series RLC, the inverting op-amp, and the full-wave bridge rectifier — line by line.
Hardening the open CORS proxy — allowlists, SSRF guards, and the bypass I almost left behind
A year after building an open serverless CORS proxy, I closed the open-relay hole it had become — target and origin allowlists, SSRF guards, a resilience layer — and learned a sharp lesson about a forgotten debug endpoint that Vercel was still routing.
A light wave from Maxwell's equations, rendered in pure TikZ
Deriving the electromagnetic plane wave from Maxwell's equations, then drawing it with build-time TikZ — and the Haskell pipeline rebuild (lualatex + dvisvgm) that finally renders its transparency.
Schematics that compile — circuit diagrams in pure TikZ
Teaching the build-time TikZ pipeline to draw electrical schematics with circuitikz, demonstrated with four classic circuits — an RC filter, a series RLC, an inverting op-amp, and a full-wave bridge rectifier.
Quantum Tunneling Workflow for Hydrogen Peroxide - PES Scans, kappa Corrections, and Instanton Integration
An ACS-style, AI-authored workflow note that couples a relaxed PES scan with semiclassical tunneling corrections and an i-PI ring-polymer instanton sketch, including charts, tables, and runnable code.
Two barriers, one tunnel: the hydrogen peroxide torsion, recomputed
The original version of this post validated its H2O2 torsional barrier against the wrong experimental number and reported tunneling corrections from code that assumed its own conclusions. Recomputed from scratch — a fresh MP2/cc-pVTZ relaxed scan, the periodic torsional Schrödinger equation solved on the resulting potential, and transmission through the barrier that actually matters — with the tunneling splitting checked against sixty years of far-infrared spectroscopy.
Visual Process Documentation - Measuring Efficiency Through Domain Crossing Analysis
A simple methodology for documenting and measuring process efficiency by visualizing the movement between digital and physical work, with practical applications for office workflow optimization.
Building a Random Art Generator with the Met Museum API and a Serverless CORS Proxy
Taking a break from science to explore art and technology with a web application that makes the Metropolitan Museum's collection accessible through a custom-built CORS proxy solution.
Building a Serverless CORS Proxy with Vercel - Simplifying Cross-Origin Requests
A practical exploration of building a serverless CORS proxy using Vercel's serverless functions, offering an elegant solution to the common cross-origin resource sharing challenges faced by frontend developers.
Three exact solutions and one inequality: quantum chemistry's ground floor, computed
The particle in a box, the harmonic oscillator, and the hydrogen atom are the only systems in quantum chemistry you can solve with pen and paper — which makes them the only place you can hold your numerics fully accountable. Every figure here is computed, every number is checked against its closed form, and a psi4 basis ladder shows the one atom where Hartree–Fock is the whole answer.
Understanding the Virial Equation - A Systematic Taylor Expansion of the Ideal Gas Law
An exploration of how the virial equation emerges as a Taylor expansion of the ideal gas law, providing a systematic way to account for molecular interactions in real gases.
Visualization of Compression Factor Behavior in Real Gases - A Virial Equation Approach
A computational exploration of how compression factors vary with temperature and pressure for common gases, demonstrating the transition between attractive and repulsive molecular interaction regimes.
Determination of SI Units for Magnetic Interactions in Quantum Mechanical Calculations
A systematic derivation of the SI units involved in magnetic interactions at the quantum level, focusing on the correct dimensional analysis of magnetic moments, fields, and coupling constants.
Setting Up a Comprehensive Quantum Chemistry Environment on Linux
A detailed guide for establishing a versatile computational chemistry environment on Linux systems with instructions for package installation, environment configuration, and remote access setup.
AI Assisted Computational Tools for TDDFT Analysis of Chromophores Supplemental Information
A suite of Python-based computational tools for efficient geometry optimization, TD-DFT calculations, and spectral visualization of chromophores, providing a systematic approach to predicting electronic transitions and optical properties.
AI Assisted Computational Tools for Time-Dependent Density Functional Theory Analysis of Chromophores
A suite of Python-based computational tools for efficient geometry optimization, TD-DFT calculations, and spectral visualization of chromophores, providing a systematic approach to predicting electronic transitions and optical properties.
Mathematical Frameworks and Basis Sets in Excited State Calculations
A comprehensive explanation of the mathematical principles underlying excited state calculations, including TD-DFT, EOM-CCSD, ADC, and CASSCF methodologies, as well as detailed discussions on basis set selection, computational considerations, and practical applications.
Comparative Analysis of TD-DFT Functionals for Formaldehyde Excited States
A systematic comparison of different DFT functionals for predicting formaldehyde excited states, revealing significant variations in excitation energies and oscillator strengths across methods.
Modern DNS Analysis on macOS - Beyond nslookup
A comparative analysis of traditional and modern DNS query tools on macOS, with practical examples and insights for network administrators and security professionals.
PowerShell Command Line Fundamentals - A Structured Learning Approach
A methodical introduction to PowerShell fundamentals with structured experimental procedures and evaluation of command functionality.
Polarizability Trends in Carbon-Chalcogen Diatomic Molecules - A Computational Study
A systematic computational investigation of polarizability in diatomic molecules formed between carbon and Group 16 (O, S, Se, Te) elements, with analysis of geometry-optimized structures and higher-order electronic properties.
Polarizability Trends in Group 14-16 Heteronuclear Molecules - A Computational Study
A systematic computational investigation of polarizability trends in diatomic molecules formed between Group 14 (C, Si, Ge, Sn, Pb) and Group 16 (O, S, Se, Te) elements, showcasing the power of automation and open-source computational chemistry tools.
Mathematical Framework for Hyperpolarizability Calculations
A detailed explanation of the mathematical principles underlying hyperpolarizability calculations
Quantum Chemical Calculations of Hyperpolarizability - Setup and Initial Results
A detailed walkthrough of setting up computational environment for calculating hyperpolarizabilities of Group 4A elements
Calculating Atomic Polarizabilities of Group 14 Elements Using Psi4 - A Finite Field Approach
An experimental study calculating polarizabilities of Group 14 elements using Psi4's finite field method, with results for C, Si, and Ge, and insights into limitations for heavier elements.
Network Path Analysis - Evolving Network Diagnostics for the Modern Security Landscape
Network Path Analysis - Evaluating Diagnostic Tools in Security-Hardened Modern Networks
A modern networking laboratory exercise for Mac users exploring ICMP protocols and network diagnostics