-- Leo's gemini proxy

-- Connecting to warmedal.se:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en

Working on Antenna


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:


How to use the SQLite3 lib for python3.

INSERT, UPDATE, PRIMARY KEY, types, UPSERT, DELETE statements in SQLite3.

Exception handling in python3.

Regex and capture groups in python3.

The Feedparser module.

The Time and Datetime modules.

A ton of tiny things like how python3 does type casting, truthiness of various things, working with lists, sets, and iteration in general, tuples, dicts, converting strings to dates and vice versa, how to define a class, etc.


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.


Relevant Links


My gmi2html

My gemcall


AstroBotany on GitHub


SQLite3 lib for python3

UPSERT statement for SQLite3


Regex in python3

Datetime module

Exception handling in python3

Feedparser module


-- CC0 ew0k, 2021-06-29

-- Response ended

-- Page fetched on Sat May 4 09:51:14 2024