I've been working away pretty much on my secret project Antenna lately, and I hope to be able to announce it in the coming few days. This post isn't about the project itself, but a recollection of just how much I've learned so far doing it. A celebration of learning and progress in themselves.
In the past couple of months I've been learning python3. It's something I've wanted to do for years, but just never got around to. Having projects that need something more capable than bash certainly helps (did I mention that the script that generates the gardengnome.ml page four times a day is a horrendous blob of bash? That's what my smaller home projects often turn out like).
Small tools like my gmi2html and gemcall scripts have been pretty easy to implement in python3 (the latter was very much a learning project, since I'd never used sockets or TLS in python before).
Bigger things like digging into the AstroBotany codebase have likewise taught me a lot. But I think Antenna has been the most wide-ranging learning opportunity I've taken on in quite a while.
In just the last week I've learned:
The total project is only about 250 lines of code, and will probably swell to 300 before it's done. Considering the hours I've put into it I haven't exactly produced many lines of code per hour, but the learning experience has been intense and wonderful. My next python3 project will most definitely be a lot faster to implement.
I jokingly told a friend that I spend about 90% of my time reading docs, 9% testing things in the python3 interpreter and about 1% actually writing my code. It's probably not too far from the truth, actually.
Previously I've been very reluctant to take on projects that require me to spend much time learning things, because I easily feel that I just don't get anywhere. That progress is frustratingly slow. This time around it doesn't feel that way. Possibly because I have a future project in mind where all these learnings will come in handy, and this will work as a test bed and study for that. But it's also the fact that I've just decided that it's okay for things to take time, or not even be finished. To be less goal oriented and leaning into my whims more. Last night I sat down to program and ended up being distracted by velomobile photos for almost an hour before I even got started, and you know what? That's totally okay.
AstroBotany on GitHub
SQLite3 lib for python3
UPSERT statement for SQLite3
Regex in python3
Exception handling in python3
-- CC0 Björn Wärmedal