sometimes i wish i had registered evanchen.dev instead of evanchen.cc,
although i don't think .dev domains were available for sale yet back then.
Note to self on how to use virtualfish to create a new uv environment with a
specified Python version
vf new -c ENVIRONMENT_NAME --python (uv python find 3.12)
Honestly the virtualfish and uv situation is worthy of a blog post… maybe
it'll help some confused amateurs like me? If I have the time.
Programming languages are also judged by the proficiency of their users. So a programming language with good design principles attracts good developers, which in turn increases its reputation further.
I ran out of Claude credits so I ended up refactoring build.py
in web.evanchen.cc by hand, which took way longer than making a robot do it,
but I feel like the final product was also better than it would've been
if I had an LLM do it.
Switched from Pelican to Zola for wall and it feels so clean. (And fast.)
TIL that sed can delete all lines matching a pattern:
sed -i '/pattern/d'
I think I should learn more about sed.
Woke up to Tailscale DNS not working on desktop.
Ended up installing openresolv to replace resolvconf, to match my laptop.
I have no memory at all of installing either.
I hope Python and Rust rule the world together.
Spent the morning trying to wrap my head around the nvim IDE stuff and wrote up a note to self.
Reading about mkdocs falling apart is… huh. I had no idea.
CI is killing my productivity because I feel like I can't focus on the actual work until the CI is set up perfectly.
Might really switch from prettier to rumdl.
Finally realized I could use CloudFlare's functions/_middleware.js
for a small basic HTTP authentication. That's nice.
Something about running this command was deeply satisfying:
$ rm -rf Therapy/
Trailing commas being forbidden in JSON drives me nuts. I hope Python gets TOML 1.1 support into a builtin module soon, for now I have to keep including it as a dependency.
Isn't fate pull such a good command name?
We discovered it when the package was pulled in as a transitive dependency by an MCP plugin running inside Cursor. The
.pthlauncher spawns a child Python process viasubprocess.Popen, but because.pthfiles trigger on every interpreter startup, the child re-triggers the same.pth— creating an exponential fork bomb that crashed the machine. The fork bomb is actually a bug in the malware.
(Passed to me by a work colleague.)
Man, I can just like, upload whatever I want to PyPI and it's great.
I really want to like biome,
but having to have a configuration file to cause it
to use spaces over tabs (the default for prettier) isn't great.
I don't have .prettierrc and don't really want to start with biome.json
either.
What does it say about me that tinkering with CI is more addictive than Netflix?