August 20th, 2024 10:04 UTC · 3 months ago

StatusPythonGolangallenap.meEntrepreneurialismpgdo

2024, Week 34

Relearning Python (update)

My efforts to relearn Python, and also to use PostgreSQL’s Row-Level Security seem to have paid off: they invited me back for another interview. Fingers crossed.

Relearning Golang (update)

I have finished going through Go by Example and I did a bonus day working through an interesting post I found about Go. I’ve written up my conclusions from the experience, and the whole series is scheduled: one post will publish each weekday, with the final post coming out on August 28th.

I might write one more post in the series. Yesterday I watched a video by The Primeagen, and I have a very different perspective on most of it:

I’ll publish it as an appendix to the series if I can write something that’s constructive and not (too) snarky.

Side quest: adding series to my website (update)

I improved how series are displayed on the home page and on post pages so it’s easy to see the whole series and switch to different posts in the series:

Series dropdown on post page

Given that I have a backend engineer’s UI/UX intuition, I’m quite pleased with how this turned out.

Fit 4 Start (update)

I chose to not apply this time around. The prototype I have is… well, I’m not happy with it. It doesn’t demo well. I know it has potential, but I don’t think it’s compelling enough to sell to others yet.

New focus: pgdo

I’m working on pgdo again. I did a lot of work on it in 2023, but I set it aside: I wasn’t fully happy with where it was going and I lacked concrete goals, but what really pushed me off track was a technical issue.

pgdo creates and starts a PostgreSQL cluster wherever you ask it to. If the cluster already exists, it will reuse it. If it’s already started, it will connect. When the last consumer of the cluster goes away, the cluster is halted – or, optionally, destroyed (useful for tests). It’s a PostgreSQL cluster on demand.

One use case was using the same cluster from outside and inside a Docker container. The cluster would be mounted into the container. Using pgdo from outside or inside the container would be transparent. However, it wasn’t. For one, UNIX socket namespaces are not (by default) shared between the host and the container. Filesystem locking was also an issue. I mulled over how to make this all Just Work™ and I was left with no satisfactory options, and I didn’t want to compromise.

Well, I’m back at the table. I have some new ideas, and compromise is no longer a dirty word. I still want to make the UX/DX uncomplicated and discoverable, but some of the technical hurdles are too high to surmount without outside intervention. The new approach will be to fail early, fail in a way that doesn’t mess things up, and to give the user the information they need to understand and resolve the problem.

I also have some interesting ideas for the project beyond these immediate technical issues. I’m excited again!

Fwiw, pgdo is the project I wanted to submit to Fit 4 Start. If I can make enough progress I will submit it in a future iteration.