Things are getting sloppy, I'm getting lazy (i.e. demotivated), and my living is no longer in sync with my mind. I know, eventually things will get messy for every single one of us; and it's neither practical nor necessary to stay in that ideal neat space constantly. But time and again it shows that whenever you go astray for too long, you will eventually find your way back. And writing (with introspection of course) has always helped you do it.
2022 was messy. I finished phase 1 of the chat app project at the end of May (it was the biggest project so far, spanning 7 months), and spent the next month on my 6th project, a GUI wrapper for yt-dlp using Tcl/Tk (my third language after Elm and Rust, but of course excluding JavaScript and Python, which every curious amateur dabbled in before all that). That was all so very satisfying, but then I stopped coding. July-August was just taking a comfy break after the intense months, getting back to some physical training, resuming the VIS photo portfolio updates, then of course, lots of binge watching. Same old, same old.
Then for the remaining 4 months, September-December, various events in life kept me distracted enough that I couldn't initiate my next project. Social/relationship, living/housing, and health (yes, no escape from Covid), I'm not saying I expect life to be always irrelevant to my soul, it will always take your attention one way or another. I'm just frustrated that I wasn't able to accommodate that fact in order to sustain my primary activity. But as that activity is not tied to financial or living factors, it's purely sustained by internal energy, and that has proven to be fragile (in terms of the area-under-the-curve output). Maybe that's rather like how artists work? But even the prolific classical composers had very robust work ethic. I would like to see a substantial improvement on the sustainability in the new year of 2023. I know social contact/exposure can be an effective motivator, and it doesn't even have to be direct interaction - listening to Matt Griffith's 2022 Elm endeavors turned out to be surprisingly motivating (this was Jan 2023 already). I admire him for creating Elm-UI, and his elm-codegen effort seemed so stimulating, although I have no concrete projects in mind utilizing the tool.
I guess I really want to do the following:
-
Read people's code! (Continue reading uhabits, no matter how complicated it seemed to Android newbies like me; and Elm and Rust code of course.)
-
Write code on a more regular basis. This is hard, because so far it has always been a binary mode: you either turn on, or turn off completely. But I do believe practice is essential in the craft. In particular, I was never able to work on more than one of my projects at the same time, that could use some change, in particular, revisiting previous projects is likely a good idea, e.g. there were more features planned for Arrow, right?
-
Present at least a subset of my projects in a social context. Now that seems daunting for a clueless guy like me. But still, taking the first step is what it takes, you don't have to complicate the scenario.
I did spend time on programming-related activities during the second half of 2022, in particular, I read quite a few intro-level mini courses/tutorials about Android dev in Kotlin, because I have one project in mind, well, it's more like a vague draft, because the design isn't well specified yet. It's meant to be a rather general-purpose performance-tracking app, but concrete applications include physical activities like running or body-weight trainings (pushups etc). I use uhabits daily, and I have a sports watch (Garmin), but the former doesn't track very specific data (e.g. distance/time, repetitions/sets), and the latter has terrible performance issues (slow synching and loading), and the data presentation is all over the place, not to mention the lock-in. So I do want to design an app that tracks more concrete and domain-specific data than uhabits, and one that is lightweight/fast and independent of device makers.
Android is not known for its elegance (e.g. compared to the Elm architecture), but I think it's important to recognize its completeness, richness, and ubiquity. There're so many UI details that you can just get for free, while with Elm (and Elm-UI specifically), you craft everything by hand. And more importantly, it's about the mobile hardware - the special form factor, the rich device APIs, it will be a new and distinctive dev experience from the web.
But what concerns me the most at this early stage is data modeling. Android mainly uses SQLite (or via the recommended Room ORM), and frankly I haven't worked with relational databases for years. But again I don't want to just put some UI widgets together to have the illusion of creating an Android app, what's really essential is always the data modeling, and that's why I haven't started coding anything even though I have looked at several tutorials, including (in Jan 2023) a particularly relevant one showcasing the making of a Todo app by Florian Walther. I guess I'll revisit RDMS/SQL concepts, but not by simply going back to books and lecture slides, but again, by following project-based learning and guiding the search and reasoning with actual questions encountered in data modeling attempts.
In particular, how do I represent different types of activities using the relational model, given that I want to also treat all activities uniformly? Within the application logic, this can be naturally captured with union types ("enums" with associated data), that is, all activities share some common set of attributes (name, time, etc), but each contains a specific variant of the union type that stores certain structure of data. But alternatively in OOP, this can also be modeled by subclasses, where the common attributes belong to the parent class. Either way, this seems to be actually a known and largely unsolved issue about mapping class dependency or inheritance to tables. See, this is the object-relational impedance mismatch revealing itself in real life. Does EdgeDB solve this? (But EdgeDB doesn't work with SQLite.)
OK I don't want to keep this too long. Indeed, as I discussed in earlier pieces, I've been feeling burdened by writing for quite a while. It's no longer feeling like a soothing process of introspection or even self-healing, but the obligation or urgent responsibility to for a semi-regular brain dump, it still felt good, but only after you do it, not before. And you know, it's vital for sustainability that you feel good before doing something.
So I think it's important to re-assess. One thing to keep in mind is that you don't have to write about all the significant or impactful things in life in this public journal. Personal life is private by default, and for the most part, sharing that sort of info isn't useful to others (and for whatever I find interesting/relevant, say about health and medicine, people are just way better off reading from reliable professional sources; anecdotal evidence is never significant after all).
But that doesn't mean you don't write about them. That's where private journals come in handy. So far over the years I find the following places quite nice for record-keeping the info that's only relevant to myself or people close by.
- journal/*
- timeline.txt
- health.txt
- write.txt
Note "write.txt" is now mainly for jotting down random ideas that are to be elaborated on in here, it works.
P.S. VPN blocking has escalated significantly since late October, and the situation has been rocky ever since. It is very inconvenient. But on the flip side, it reminds me how important the Internet is. Yes, lots of porn there and also dumb things just for laughs, for which I am grateful, but also it's way more than that. No matter where you are, it makes you part of the human world. Connection is vital, and isolation is fatal. Of course not necessarily in the physical or direct sense. Minimally we just need "Wilson".
"We all live for a while and then we die." I guess living is about two things: the experience, and what you leave behind. The experience is, ultimately, very much bounded, it's confined within the tiny skulls of us (but also it's the most personal, so I don't mean that it's the less cherishable). On the other hand, it is possible to create things that are not bounded by physical lifespan, namely memes. Art, science, and other good inventions, etc. Of course they still need physical vehicles (mostly humans ourselves) to manifest, but they are essentially transcendental, and that is what's special about humanity.
That can hopefully guide us. Mind the personal journey which is transient but profoundly intimate; and if possible, leave behind "good stuff" as a thank you note to everyone who helped and inspired us.