I love to learn by writing about something new; and I love to learn by making little toy applications. Below are some of my tinkerings where I've brought those two joys together. Hopefully they'll be useful to you in some fashion as well.
Ideally, they're small. Likely, they exist because I wanted to learn something or illustrate a concept on its own. You may laugh at why I even bothered to make them. But, I had fun.
I was reflecting on The Unix Philosophy and it struck me that
wc (a command-line utility that can count words, characters, and lines)
would be interesting to replace. But, unlike
wc, I would only do one thing. Count lines. In writing my own utility, I could learn how to read input from the command line.
But, even better, I could rewrite the same utility in a few languages to get a sense for how various languages compare with a problem that is trivial but useful.
My buddy, Joe, wanted a way to get the output from a .NET solution's unit tests into a CSV. I decided to see if that was possible. Through that, I learned that you can tell `dotnet test` to output in a standard XML format. From there, I was able to use the XML deserialization to read the test results and then write them back out as CSV.
This project is useful to see an approach for generating test output, using a glob-matching library for finding files during directory traversal, and processing XML files. It's all packaged as a .NET tool as well and the GitHub actions show off how to do that packaging.
The code is available on GitHub at https://github.com/hyrmn/jerk.
I've been playing with using algorithms to get computers to draw pretty pictures. Generative Art. Because I like the contrast of modern and retro, the UI for creating it all is a text-based UI that feels fresh out of the early 90's or late 80's.
The code is available on GitHub at https://github.com/hyrmn/gart.