-
posts
-
TIL: June 15, 2025 - Weekly Reading: AI, Programming with agents, and Personal Development
Artificial Intelligence AI Changes Everything - Armin Ronacher Armin seems very AI-positive. He now uses Claude Code and finds it significantly increases productivity by alternating between giving instructions and reviewing work. His optimistic outlook sees AI enhancing human capabilities rather than replacing people, potentially democratizing knowledge and accelerating innovation. While I can agree that AI is likely an irreversible change, I don’t share his view that it won’t replace people or that the job of programmer or designer won’t go away. I think that largely using AI to write code will change the job of a programmer completely, and the...
-
TIL: June 3, 2025 - Weekly Reading: AI, NixOS, and more
AI I am disappointed in the AI discourse – Steve Klabnik This post from Steve Klabnik has been popular on Bluesky recently. I personally didn’t get a lot out of it though. I am pretty skeptical about AI and it seems that some folks like Steve really get a lot out of it even if it doesn’t get everything right. I’ve just found that every time I use it I get really bad results right away and it turns me off. I come back to try it every week or so and I still haven’t found it to be very...
-
TIL: May 26, 2025 - Weekly Reading: Go, Security, AI
Go What’s New In Go - Cameron Balahan, Marc Dougherty (Google) A very basic presentation of new features in Go 1.24. It looks like it was done for Google I/O 2025 but it’s not one of the in-person sessions. It covers the improvements to iterators, json package’s new omitzero option, improvements to WASM targets, post-quantum cryptography, and performance improvements to Go maps via the new Swiss Tables implementation. Security Domestic abuse victim data stolen in Legal Aid hack - Aoife Walsh & Graeme Baker (BBC News) A hack of the Legal Aid Agency in the UK has resulted in the...
-
TIL: May 19, 2025 - Weekly Reading: The Go Scheduler, CNCF/NATS Drama, and Signalgate
Here are some of the things I was reading this last week or two. Go Go Scheduler - Nguyen Trong Nghia This is a really good write up of how the Go scheduler works. It covers the GMP model, Goroutine creation, the schedule loop and preemption, integration with network and file I/O, and much more. It is written in a very approachable way with lots of diagrams and examples. Highly recommended reading. Leaving Google - Ian Lance Taylor Ian Taylor is a well known name in the Go community and has been at Google for almost two decades. He was...
-
TIL: Packaging Static Binaries
I have been using the zizmor project for a while to lint GitHub Actions workflows for security issues. Zizmor is a (mostly) static binary written in Rust so it should be a relatively straightforward install. But I noticed that it can be installed via unexpected ways like by Python package. Recently the company Astral has been building many Python tools in Rust, like uv and ruff, and creating many integrations between the two languages. Further integrations are made possible by PyO3 and maturin. Maturin is a build backend for Python packages that supports Rust crates. It also has another feature...
-
TIL: Apr 29, 2025 - Weekly Reading: Go ABI/GC hacks and MCP
These are some of the things I was reading this last week or so. Programming Cheating the Reaper in Go – Miguel Young de la Sota This is an good post that build’s on Miguel’s previous post Things You Never Wanted To Know About Go Interfaces. It discusses how to implement an “arena” in Go, which is a memory management data structure that is useful for assigning objects to a specific region in memory which can be allocated and freed all at once when it’s no longer needed. I hadn’t heard of this data structure before, but it might be...
-
TIL: Modern Fonts with LaTeX
I recently learned that you can use modern fonts in LaTeX documents by using the
fontspec package. This allows you to take advantage of modern system fonts
like TrueType fonts when using XeLaTeX or LuaLaTeX.
You can use the Noto Sans variable font in your LaTeX document by including
the following lines in your preamble. In my case I bundle the fonts in my
repository so I include a path to them in the Path option.
\usepackage{fontspec}
\setmainfont[
Path = path/to/fonts/,
Extension = .ttf,
BoldFont = {NotoSans-VariableFont_wdth,wght},
ItalicFont = {NotoSans-Italic-VariableFont_wdth,wght},
BoldItalicFont = {NotoSans-Italic-VariableFont_wdth,wght},
BoldFeatures={RawFeature={+axis={wght=bold}}},
BoldItalicFeatures={RawFeature={+axis={wght=bold}}},
]{NotoSans-VariableFont_wdth,wght}
-
TIL: Apr 13, 2025 - Weekly Reading
These are some of the things I was reading this last week or so. Code sbp A nice little bash prompt library. I decided to use this in my dotfiles and wrote a Tokyo Night theme for it. Stylelint A linter for CSS that can be extended to cover SASS. I added this to my website to improve its stylesheets. Tech Things You Never Wanted To Know About Go Interfaces - mcyoung This a somewhat hard to follow, but very useful post about the implementation of types, interfaces, and functions in Go. It’s useful to understand how languages implement certain...
-
TIL: Syncing with GitHub Repository Templates
GitHub allows you to create repositories from a template repository. This is useful because the template repository can include various tools and configuration specific to your type of project. One good example is the typescript-action template for GitHub Actions written in TypeScript. However, when creating a repository from a repository template, your new repository is not a fork. Instead, it is a squashed version of the template repository with one commit and is totally unrelated to the new repository. This is fine for most situations where you want to create a new repository as a one off and continue development...
-
TIL: Proposal to Make GOMAXPROCS Container-aware
One of my former colleagues, Michael Pratt, created a proposal for the Go runtime’s GOMAXPROCS to take into account the process’s CPU limits imposed by cgroups. The goal is for Go to be more container-aware because cgroup CPU limits are the main way that container runtimes enforce resource constraints. I’m really excited to see this added to Go because I adhere to the philosophy that processes should need to know as little as possible about the infrastructure that they are being run on. Currently, almost every production Go application running in a container needs to incorporate code like uber-go/automaxprocs to...