Reading List
The most recent articles from a list of feeds I subscribe to.
How to Republish or Adapt this Content
All original writing and images on this blog are released under the Creative Commons Attribution 4.0 International License.
That means you can republish the content or adapt it as long as you honor the license.
What you’re allowed to do
- Republish the content in any medium or format, even for commercial purposes.
- Adapt the content by changing the wording, translating it to other languages, or expanding on what I wrote.
What you’re required to do
If you republish, adapt, or translate content from this website, you’re required to:
TinyPilot: Month 42
New here?
Hi, I’m Michael. I’m a software developer and the founder of TinyPilot, an independent computer hardware company. I started the company in 2020, and it now earns $80-100k/month in revenue and employs six other people.
Every month, I publish a retrospective like this one to share how things are going with my business and my professional life overall.
Highlights
- I think about how I can do a better job delegating product decisions and documentation.
- I compare my experience learning Nix to learning Zig.
Goal grades
At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals:
Use a Nix Flake without Adding it to Git
When I work in my own repositories these days, I always add a Nix flake to the repo so that I can spin up a working development environment on any system with a single command.
What do I do when I’m working in someone else’s repo and they don’t want to adopt Nix flakes?
Normally, I’d just add the file to my copy of the repo and gitignore it locally so I don’t commit my personally-specific files with the rest of my changes.
Using Zig to Unit Test a C Application
Zig is a new, independently developed low-level programming language. It’s a modern reimagining of C that attempts to retain C’s performance while embracing improvements from the last 30 years of tooling and language design.
Zig makes calling into C code easier than any other language I’ve used. Zig also treats unit testing as a first-class feature, which the C language certainly does not.
These two properties of Zig create an interesting opportunity: Zig allows you to add unit tests to existing C code. You can do this without rewriting any of your C code or build logic.
Using Zig to Call C Code: Strings
Zig is a new, open-source programming language designed to replace C. I’m still a Zig beginner, so I’m trying to learn the language by using Zig to rewrite parts of existing C applications.
One of the first challenges I encountered with Zig is understanding strings. I couldn’t find detailed documentation about how Zig strings work when calling C code, so I’m sharing my findings in case they’re helpful to others who want to use Zig to call C.