Remix.run Logo
steve_adams_86 3 hours ago

Lately I’ve been working on https://oceanconnect.ca

The original developer has left our organization so I’ve been tasked with general assessment and winding it down to enter maintenance mode. It’s still alive and well, has a very passionate and appreciative user base, but we want to ensure it doesn’t demand too much attention moving forward while we focus on other things. It has pretty noisy error reporting.

Reliability and fault tolerance are some of my favourite things to work on in software so it has been a lot of fun so far. It has also been an incredible opportunity to practice using LLMs for specs, planning, verification, and research. I don’t actually need to output much code to get this thing into a stable state in which it can coast along; the bulk of the work is time spent understanding the app, the infrastructure, its existing faults, poring through traces and logs, going over query plans, and so on. LLMs are great assistants for this work and I’m having a ton of fun having so many opportunities to figure out what works and what doesn’t.

The outcome has been awesome. The performance is steadily climbing (especially in the database), and most common errors when I started are either gone or much better understood with plans to address them. I’ve almost got it set up so if someone needs to take it over in the future, it should be pretty easy to toss them the keys and trust that they can deploy and maintain it easily from the docs and systems I’ve created.

Despite spending a lot of my career on the front end, the hardest part of this project has been navigating that. Aiming to improve an application with minimal intervention is exceedingly difficult in the browser, or so I’ve been finding. I can get incredible performance gains out of Postgres without changing the interface between lambda and rds in the slightest, but meaningful improvements to the react application seem virtually impossible without substantial refactoring.

I understand the key factors in getting better performance out of react apps and I see plenty of opportunities, but they all involve large diffs that are risky and time-consuming, even with a model like Opus handy to churn through boring and large change sets. It’s such a fragile and flaky environment.

Even so, I’m loving it. Making software better is so gratifying. Doing it without reinventing the world is such a fun challenge, too. It really puts your brain to work. It would be so easy to go in and start flipping tables and throwing code in the garbage, but that’s too easy and too risky. Taking it slow, absorbing as much information as you can, truly understanding how features work, and planning surgical changes with significant pay off is safer and just feels awesome when it works.

I’ll be sad when this one is finished. It’s almost there. Next up is a remote temperature controller for 40 saltwater experiment tanks with a temperature profile planning interface and a monitoring interface for the lab. That will be awesome too. It has been a good couple of months for work.