T
Thea Flowers
blog.thea.codes · Personal blog · on HN since 2019
Thea Flowers is a software and hardware engineer who writes about Python, embedded systems, synthesizers, and running a small hardware company.
What HN saysHN commenters link her network namespace VPN guide and her reply to Josef Prusa on open source, and list her among favorite blogs.
38HN people shared it
10linked it in comments
40stories submitted
1.9Kstory points
2 months agolast shared
2019people per year2026
Most-shared posts
- 1The most thoroughly commented linker script (probably)9 people · 35 points · first shared 2021 · 3 comments on HN
- 2The Design of the Roland Juno Syntheziser's Oscillators4 people · 288 points · first shared 2020 · 81 comments on HN
- 3Opinions after a decade of professional software engineering4 people · 9 points · first shared 2021 · discussion on HN
- 4A Reply to Josef Prusa4 people · 2 points · first shared 2023 · discussion on HN
- 5Building a Stateless API Proxy3 people · 153 points · first shared 2019 · 53 comments on HN
- 6The tools and tech I use to run a one-woman hardware company2 people · 929 points · first shared 2021 · 130 comments on HN
- 7My Python testing style guide (2017)2 people · 205 points · first shared 2021 · 84 comments on HN
- 8Using Python to vectorize artwork for PCBs2 people · 38 points · first shared 2022 · 4 comments on HN
- 9Designing Winterbloom's Big Honking Button2 people · 5 points · first shared 2021 · discussion on HN
- 10Designing Winterbloom's Castor and Pollux2 people · 3 points · first shared 2021 · discussion on HN
- 11Nordvpn wireguard namespaces2 people · first shared 2025
- 12Homepage2 people · first shared 2021
- 13Creating a pick and place control board with the RP20401 people · 185 points · first shared 2022 · 23 comments on HN
- 14Fixing the wrong bug to discover the right one (2014)1 people · 7 points · first shared 2022 · discussion on HN
- 15Prusa Has Learned Nothing1 people · 4 points · first shared 2024 · discussion on HN
What HN people wrote when they linked it
simonw · 2021-09-08
Agreed, this is an infuriating limitation of PATs - I would desperately like to be able to create a PAT with much more finely grained permissions - can only trigger this single REST API for this specific repo for example.
There's a brilliant trick for doing that described here but it's a lot of work to setup: https://blog.thea.codes/building-a-stateless-api-proxy/
You can also create a brand new GitHub user account, grant it access to just a single repository and then create a PAT for that user account - annoying but it does at least let you scope down the permissions a bit.
yjftsjthsd-h · 2025-12-19
Can you use user namespaces to create a network namespace with the VPN active and stick applications in that namespace?
From a quick search, https://blog.thea.codes/nordvpn-wireguard-namespaces/ sees to have at least the bones of a decent solution, though I've not had a chance to dig very far. A lot of results use root to set up the namespace, but I was pretty sure that shouldn't be needed with a new kernel and user namespaces enabled
the8472 · 2025-09-17
network namespaces provide a clean host/vpn split.
https://blog.thea.codes/nordvpn-wireguard-namespaces/
guiambros · 2025-01-06
Here's a few more, from my Feedly:
Julia Evans - https://jvns.ca/
Fabien Sanglard - https://fabiensanglard.net/
Rachel - http://rachelbythebay.com/w/
Bruce Eckel - https://bruceeckel.substack.com/ (old blog @ https://www.bruceeckel.com/)
Blobs in Games - https://simblob.blogspot.com/
Astrid dot tech - https://astrid.tech/
Brendan Gregg - https://www.brendangregg.com/blog/
Stargirl Flowers - https://blog.thea.codes/
533474 · 2024-11-20
It is not open source anymore: https://blog.thea.codes/a-reply-to-josef-prusa/
musingsole · 2023-04-02
This response references Thea Flowers' response: https://blog.thea.codes/a-reply-to-josef-prusa/
Prusa exists in what I hope is a time of transition from capital/ownership mindsets into a new type of open market. Wanting to straddle the fence in the name of profits shows once again Prusa only partially understand the movement they benefit from and namecheck frequently.
Comparing Prusa to Marc Jacobs to emphasize the brand over the product is genius.
bengtan · 2021-05-28
Hi,
I come across a lot of blogs when I curate for my newsletter Interesting Things [1]. Just looking through the links that have been curated in the past month or so, I would suggest:
Tech
- https://wasteofserver.com/
- https://tonsky.me/
- https://brianschrader.com/
- https://blog.thea.codes/
- https://fasterthanli.me/
- https://jvns.ca/
- https://blog.royalsloth.eu/
Non-tech
- https://www.drorpoleg.com/ - About work and society
- https://staysaasy.com/ - About tech work
- https://www.nateliason.com/ - About life in general
- https://andymatuschak.org/
- https://craigmod.com/
- https://perell.com/
And, of course, shameless plug: https://bengtan.com
----
[1] https://bengtan.com/interesting-things
gus_massa · 2021-01-14
Nice post. The info is in https://blog.thea.codes/the-most-thoroughly-commented-linker-script/ (by the same author)
type0 · 2021-01-01
> I dunno... I disagree with the assertion that the DX7 was the synth that made synth music mainstream.
For a polyphonic synth though it was a game-changer, it did make it affordable, but so did sh-101 and countless other synths but those weren't polyphonic. Roland Juno could be said, it wasn't revolutionary but more evolutionary in electronic music making. Here's a good article on DCO vs VCO https://blog.thea.codes/the-design-of-the-juno-dco/ and recent discussion here:
https://news.ycombinator.com/item?id=25598656
mierle · 2022-03-06
The key to understanding ELF is that it serves three purposes:
(1) Execution - A container describing how an OS can load and execute a binary
(2) Linking - A container with relocatable machine code; for the linker to assemble
(3) Metadata for debugging and other purposes like stack traces
Program headers describe "segments". Segments are for the execution time view of the ELF. They describe the parts of the file to load into memory regions, and the execution entry address. The program headers are what are read by the OS when running "./my_executable". The segments don't always have names. Also, it is confusing that "sections" and "segments" mean very different things, but that's just how it is.
Thus, program headers (and the segments they describe) are for #1 - Execution.
Sections are a link-time construct, leveraged by the linker, to decide how to allocate functions and data to the execution segments (via sections). Intermediate ELF object files contain relocatable code, where the code is allocated to sections (you can manually specify them if you want). Example sections include ".text", which is executable code; ".bss" which is zero-initialized static variables; ".data" which is pre-initialized static variables, and so on. You can see an example of sections being allocated to segments in this thoroughly described linker script [1]. Sections are mostly ignored during program execution.
Thus, section headers (and the sections they describe) are for #2 - Linking.
You…