Proficiency Is the Pursuit
GoScriptures is more than just a social media platform I created; it has been my technical test bed for nine years. I have deeply honed my Angular, Node.js, Java, and PostgreSQL skills working on it. I have designed, architected, and coded across all layers, but I have had to rely on others with various expertise over the course of the project: DevOps, help with Java velocity, UI/UX, and graphic design. In my circumstances, that reliance has often slowed progress: finding the right people, getting them up to speed, coordinating schedules, and waiting for availability.
About a year ago, I began a UX redesign, recognizing that GoScriptures is built on four pillars: discuss, engage, explore, and circles. I fed screenshots of every page into Claude Code, explained every feature and every data field in detail, explained the pillars concept, and explained my vision for the UI/UX. Working with Claude Code, we developed a strategy document for a new approach. We laid out a new navigational scheme and a flat page hierarchy; I kept the leaf-node pages and just reorganized the navigational elements. Once the design was complete, I coded it, and the result is a massive step forward: not just a more intuitive UX but, equally important, the first solid representation of the brand itself, embodied in the UX.
I still had a problem, though. My AWS runtime was more complex than necessary, resulting in unnecessary costs, and I was still dependent on others for deployments, maintenance, and issue diagnosis. So I sat down with Claude Code and began outlining what was important to me in a runtime environment:
- I wanted the production runtime to be replicable on my local machine. Until then, production ran a different architecture, which meant the production deployment itself could introduce issues. I wanted to close that gap.
- I was actively expanding my DevOps skills, but I wanted to favor a simpler approach: the simplest architecture capable of satisfying the platform's requirements.
- Makefile targets re-engineered for this new approach, following the development and delivery workflows.
- A transient test environment in AWS, to support a test deployment before each production deployment.
These were the basics. I wrote a strategy document, placed it in the root of the repo, and got to work. I built a new Makefile and targets, Terraform scripts, and Dockerfiles, reconfigured the AWS accounts, and reworked the GitHub Actions. I defined new operational management procedures with weekly and monthly maintenance tasks, defined database backup and recovery processes and tested them across the new test and local environments, and defined an evolution workflow outlining the sequence for adding layers of sophistication and the events that should trigger each one.
I spent over a month reviewing scripts, documenting processes, running tests, and strengthening the automated testing practices, with Cypress on the front end and JUnit on the back end. I provisioned test environments on AWS, deployed, tested, and tore them down, over and over. I practiced database restores to gain proficiency in the process. I had Claude force errors so that I could hunt through the logs and improve my ability to diagnose production failures. All of it was meticulously documented. There are too many details to keep everything in my head, so thorough documentation gives Claude and me a reliable reference when revisiting decisions, processes, concerns, or action items.
The day finally came. On October 1, 2026, GoScriptures cut over to an AWS operational runtime of my design and in my control. Since then, I have had two major deployments, and neither went entirely to plan. One deployment failed when a special character in a generated database credential interacted unexpectedly with Docker Compose's environment-variable parsing. My bootstrap process hadn't accounted for that case. I traced the failure through the deployment logs, identified the cause, and corrected the script with Claude's assistance.
The liberation I feel being able to run through sprints without a DevOps dependency is amazing. The time it takes me to introduce new features, improve capabilities, and remediate observed inconsistencies has gone from months to days.
I love the four quadrants of proficiency: unconscious incompetence, conscious incompetence, conscious competence, and unconscious competence. Pursuit is the mechanism that moves us to the next higher quadrant and anything that inspires pursuit is something to be treasured.