RSS.Social

blog.thea.codes

follow: @[email protected]

Posts

Reflecting on my 2024

Prusa has learned nothing

Split tunneling using Wireguard and namespaces

Building Alan Wake's Angel Lamp

Reflecting on my 2023

My experience building a Voron 2.4

Introducing KiCanvas

A reply to Josef Průša

Reflecting on my 2022

Creating a pick and place control board with the RP2040

Using Python to vectorize artwork for PCBs

A few of my favorite typefaces

Farewell, Google

Talking to gamepads from Python without PyGame

The tools and tech I use to run a one-woman hardware company

Using the SAM D21's brown-out detector

Designing Winterbloom's Castor & Pollux

Opinions after a decade of professional software engineering

The most thoroughly commented linker script (probably)

The Design of the Roland Juno oscillators

Understanding the SAM D21 clocks

We need to talk about GitHub

Getting the most out of the SAM D21's ADC

Reading analog values with the SAMD21's ADC

Phase-shifted PWM on SAMD21

Designing Winterbloom's Big Honking Button

Thoughts on #CircuitPython2020

Lessons learned from building a custom CircuitPython board

Building a stateless API proxy

My personal values

Genesynth: A Sega Genesis-inspired synthesizer

Genesynth part 4: Cleaning up the noisy audio amplifier

Genesynth part 3: proper audio amplification

Genesynth part 2: basic communication

Genesynth part 1: idea and research

Writing a small static site generator

Hello, world, I am Thea

Github-flavored Markdown descriptions on PyPI

My Python testing style guide

Thoughts on empathy & software

A year of open-source @ Google

Opinionated deployment tools & Kubernetes

Docker, procfiles, and health checks

App Engine is (sometimes) the wrong hammer.

Fixing the wrong bug to discover the right one

Managing vendored packages on App Engine