4025-01 In Review

My meaningful achievements this month:

  • Published 8 blog articles so far, 4 (including this one) are partially done, 1 planned but started yet, 1 on hold.
    • I could have done 14 at EOM if I maximally prioritized this, but that is unlikely.
    • I'm getting faster at making demo videos.
    • The hardest one was Emacs Guide for PHP Development in 2025 and Beyond as it was pretty long, and I also recorded gifs and videos.
      • It is also the most comprehensive Emacs for PHP Development guide I've seen. I read through a few long time PHP hacker's blogs who also used emacs.
      • Technically started the article back in Dec, but at the time, I did not get dape working through a docker container. Earlier this month I did, letting me complete it!
  • Got dape working to debug php code through a container for my nonprofit work!
  • Shipped 3 audio/sfx related libraries: snd-selectric-mode, sndd.el, hella-sounds.el
    • snd-selectric-mode is a remix of selectric-mode. Writing it gave me the groundwork to drive snd from emacs.
    • sndd.el generalizes driving of snd, for any emacs client. I wanted to use sndd.el for other projects.
    • hella-sounds.el abstracts the emacs advice mechanism as a declarative datastructure and wraps calls to sndd.el. In the future, hella-sounds should support other ways to drive audio.
    • I wrote so much lisp for just these three projects. I debugged a lot.
    • I didn't have enough time to do creative writing pieces in each readme.
  • Shipped a website where requests are served by emacs: leetcode-archive
    You can search for what the daily leetcode problem was for a given day.

    Technically I started this project in December, then left it off because debugging was really hard. I had to fight to make this project come alive. Oh and, because I'm on free tier, when you visit it likely will spin up cold, and take ~ 50 seconds to serve you the first request, but after it should be quick. Until it gets cold again.

    Milestones:

    • I used el-node, and started with basic serving of requests. I later added graphql libs and esxml so I could do html templating in emacs. (el-node has a way to do html templating, but I didn't want to figure out if it was broken. Plus esxml has more usage.)
    • Elnode is ~ 2010 years old. Some of its documentation is wrong. I had to struggle to realize it wasn't accepting requests on 0.0.0.0.
    • I containerized emacs, and got emacs to run as an fg-daemon, so docker wouldn't quit out. This was the first major struggle.
      • Why did I do this? Because I couldn't find any cloud platforms that would let me ship an emacs app for free.
        • "emacs app" aren't really two words you see together much eh?
        • But I did find render.io, which lets me ship docker containers for free.
      • Cloudflare, despite rescinding an offer that would have changed my life, would have been my first choice still. I wonder if it would be possible, since they technically support C right?
    • Debugged through all the broken web requests happening for some reason when building the container. I had serious intermittent connectivity issues. Sometimes downloading an emacs package would fail.
    • I couldn't connect an emacsclient to the unix socket through the container. I gave up, and this was a wise move. I could try a TCP connection next.
    • I got comfortable with SQLite. It was either that or PostgreSQL. SQLite was easier because I make no money and can colocate the db more easily in the container with less moving parts.
    • I hydrated the DB with all the records I could find. Leetcode doesn't list problems earlier than 2020-04-01, using the endpoint dailyCodingChallengeV2(year: $year, month: $month).
    • I implemented features for data consistency.
      • auto-backfill on startup for the app, so if startup succeeds, the data should be correct.
      • implemented a timer to fetch the new daily problem. This was surprisingly easy. But then I also needed to make inserts idempotent. (Why did sqlite diverge in syntax from other DBs for upserts?)
    • Implemented cursor based pagination!
    • Do you know what it takes to implement this at the backend application level for arbitrary sort keys and directions? I'm proud of this.
    • Now I need to clean up the code, make the repo readme better, and make it visually prettier.
  • Did more work for nonprofits, one as a software engineer, another as an IT Admin.
    • I'm working on a critical bug right now.
  • Still doing daily Duolingo
    • I massively scaled back my goal of 1 unit / day. But I think it's worth it to have more time doing projects and watch less ads.
  • Still putting time into doing a daily leetcode problem
    • but I do wish now that I was doing something else. I'm really close to a 365 day streak.

Meaningful losses:

  • When I have heart pain I have to slow down. I'm completely sure why, but I have sense it might be air quality.
  • Continued problems from unemployment.
  • Egg shortage / avian flu. I do not buy eggs because of cost now. Hope those chickens get better.
  • Haven't done creative writing.
  • Haven't made new relationships. Next month will be similar.

What I'm grateful for:

  • I'm still lucid. My implementation and speed of execution remain strong, despite declining health.
  • Ability and time to focus. So much of life is how we aim our attention. (But doing it against the backdrop of pain is hard.)
  • I try at things, even when it's hard. Even when I start a morning and feel frustrated when implementing/understanding has roadblocks, or I don't have the progress I'm looking for. I'm able to come back. Org mode helps me in this because I record what's going on and it's easy to re-reference what I was looking at.
  • Costco. I've been eating well ever since a friend brought me to costco. I bought peanut butter, sliced bread, jam, a cheese pizza, oatmeal, sweet potatoes, fresh-baked bread.
  • Nights where I can sleep, unhaunted.
  • Leftovers from other people.
  • Moments where I am not in pain, I feel like freedom is possible. Maybe that is freedom, the very hope of it.
  • Local public library reopening soon.
  • My friend for letting me stay with him.

Looking ahead:

  • Hopefully, I have to start learning + shipping emacs' first state-charts library.
    • It's a pattern from video game programming.
    • I want to colorize my cursor more reliably based on state. Managing a ton of state is hard. State charts is like using a finite state machine pattern, but more powerful and flexible.
  • Suffering.
  • I want to get to "done" for my custom font, synentica. I made it in 4020? 4021? It's unfinished but it's used in the /about page of this blog. I'll have to fire up inkscape and remember what my workflow was again. Not sure if that's slated for February. I don't know where I'll be in March.
  • More work for nonprofits.
  • I really don't like using social media to promote myself but I think I have to. Sigh.
  • Trying to put more links for patreon/buymeacoffee/liberapay.
  • Another round of job apps.