I've been making progress on multiple personal projects lately, so I'm using that momentum to re-establish my blogging habit by sharing weekly updates here.
Gossip Glomers
I've been writing more Go code lately, and there has coincidentally been interest around Go-related projects from folks at the Recurse Center. I heard some gossip (pun totally intended) about Recursers working on Gossip Glomers, a series of distributed systems challenges.
I joined while they were a few challenges in, but my lack of familiarity with the concepts meant I couldn't contribute much, so I caught up on previous challenges over the rest of the week, code here.
I liked the challenges I solved so far, looking forward to further group programming sessions!
Virtual RC CLI
A project I started working on two weeks ago (also in Go) was to build a CLI tool for Virtual RC, the online representation of RC's physical space. This week, I worked on one of the main features I was interested in using their API.
The API is built with ActionCable, and the workflow looks something like this:
- Connect to WebSocket endpoint
- Subscribe to channel
- Get initial state of Virtual RC as JSON
- Receive subsequent smaller updates to state as JSON
- Unsubscribe to channel and close connection when done.
The workflow would work best with a program that runs as a server or daemon - it starts a connection once, maintains the state via the initial message and further updates, and displays the updated state.
However, since my tool is a CLI that terminates after the command is executed, I had to start and stop a connection for each execution.
This sounds fine in theory, but it lead to an initial lag of 3-4 seconds for each run in reality. With the help of some pairing, we came to the conclusion that the lag comes from the API taking time to sending the initial state message - a big chunk of JSON data.
Since then, I've been re-considering the direction this project should take. One solution would be to have the connection run as a background process doing the work of receiving updates and maintaining state. Then the CLI tool has to get the state from the process, which would be a lot faster.
This doesn't feel very different from having a Virtual RC tab open in the browser though, so is all this effort even worth it? I'm not sure, so I've decided to let the ideas simmer for a while and prioritize other projects in the meantime.
Revamping this website?
Speaking of prioritizing, I successfully managed to bring my focus to this little corner of the internet. It started off as a theme re-design (as it always does), except this time, it is slowly turning into a complete overhaul of all aspects of my personal website.
This is still very much in-progress, I'll have more details to share next week.
Reflections
I made progress on many different projects this week, which is a rarity, and it made me wonder where all this momentum came from.
I think I can trace down to the combination of starting a dev journal about two weeks ago and good luck - finding the linked blog post at a time when it resonated with me the most.
Writing stuff down lead to more ideas, and writing those ideas down made it more likely that I'd give them a shot instead of getting overwhelmed and giving up. This is the positive feedback loop I needed, as I'm more open to trying out new ideas than I've been in a very long time.
For example, I've been writing and posting checkins in the Recurse Center community for months, but I wouldn't have considered posting them publicly earlier. But here I am now, doing exactly that in the form of these weeknotes.