Add README

This commit is contained in:
Adam Millerchip 2023-09-01 00:49:16 +09:00
commit 75d6b3d17c

57
README.md Normal file
View file

@ -0,0 +1,57 @@
# The System
I've been stuck in analysis paralysis for literally years about choosing a systems programming
language.
I've always wanted to write code for computers. But I've never really worked with a compiled
language, except for a bit of C++ in an old job, but that was so tied up in a Visual Studio
behemoth I felt completely distanced from the machine.
I made an attempt to learn Zig via the ziglings: https://git.adamu.jp/adam/ziglings.
I even flew to Italy and attended the Software You Can Love conference 2022.
But then got stuck once I actually tried to write anything due to memory management. I want to
give it another go.
But I'm also torn on whether I should learn Rust instead. Zig *feels* like the right choice:
simplicity, not run by a megacorp, no weird governance issues, etc., however I can't stop myself
from thinking things like "but so many people use Go, maybe I should just use it", or
"life's too short to manually manage memory, maybe Rust's borrow checker is the answer", etc.
Anyway, I've rather than to constantly get stuck in thought processes, I decided to try a
simple project in each of Zig, Rust, and Go, to get a feel for each one. I will start very simple,
then add a couple of layers of complexity to get a feel for how code organization works. It's not
an ideal plan, because I'll be judging as a beginner and will have likely made a bunch of newbie
errors or followed some anti-patterns, but at least it'll give me concrete experience in order to
make a more informed decision for which one to commit to learning more fully.
## Initial App
It's dull, but I'll make a simple CLI calculator.
It should be able to parse an input and perform the four basic operators:: `+`, `-`, `*`, `/`,
printing the result to the console.
## Bigger App
Once the calculator is done, I might have made a decision or decided to drop some candidates.
If there is still some indecision, I will also implement a mini Mastodon CLI. I'm probably
not going to implement ActivityPub, but more just use the Mastodon API. This will give me a taste
for making HTTP request and a bit of networking.
There should be two commands:
* toot - send a toot
* feed - show the first few toots of my feed
Instance URL and auth tokens etc. can be handled via environment variables.
## Final challenge
NIFs for an Elixir library.
I like Elixir, I've been using it as a hobby since ~2016 and professionally since 2021.
I've always been curious about native bindings, so as a final challenge I would like to make
some kind of Elixir library that uses NIFs built using these languages.
# Progress
Space for notes and thoughts as I progress.