Jon's Dev Brag Doc
Inspired by Jeff Morhous, this page is my hidden ‘dev brag doc’! Simply to outline and describe some of the major projects, initiatives, and systems I’ve built over the years (in more of a technical way).
Alex: The Long-Term Dripper (June 2024)
After the success of Alex as a virtual (AI) customer service agent, I essentially setup a pipeline for Alex to write our long-term (‘drip’) marketing text-messages. This means that each person in our long-term campaigns is now receiving their own, customized, personal message from Alex every few weeks rather than a hard-coded template of text.
The best part? Since gpt-4o-mini
came out, we can send tens of thousands of these per day for (seriously) pennies. Amazing.
To a BetterStack (June 2024)
While we’d previously used Loggly and a couple other tools, it’s hard to deny the value, visual polish, and UX simplicity of BetterStack for logs, visualization, and awareness. After migration all of our systems onto BetterStack, I setup a dashboard to illustrate overall system health at a glance and an iPad on my desk to display that real-time dashboard 24/7/365. It’s even helped us become aware of a couple production issues since!
The Great Database Migration (May 2024)
Agent Pronto’s two Rails application previously sat atop a strange database setup. Application 1 used database A and application 2 used both database A and database B. Adding complexity, database A was a MySQL database and database B was a Heroku Postgres DB.
The short story is that I migrated all of our data successfully from two databases into a single Heroku Postgres instance for both apps. I used pgloader
in a multi-step / multi-phase migration to get everything into the right place and shipped several code changes to both applications to prepare them for Postgres instead of MySQL. Not an easy week, but a big win for our application and simplicity!
Modal-izing A (Turbo-Frame) Wizard 🧙 (April 2024)
While I’ve written extensively on how to build a wizard in Rails, we opted to trial a new direction as a company — our sign-up wizard in a modal pop-over rather than as full-pages:
Figuring out how to do this while still staying inside the lines of a Rails, Hotwire, and backend-driven approach was tricky! But I found a way. And it’s actually better than I previously imagined. We now have the means to generate this modal from back-end rendering, with Turbo Frames, from anywhere on the website! Any page on our website can now host the modal wizard anywhere we’d like, with no Javascript. Proud of this one! Staying as non-Javascript and Turbo-friendly as possible has such great long-term benefits.
Twilio’s Native Link Shortening
We use ‘magic links’ for direct sign-in via Devise for several of our authenticatable models. It’d been challenging, previously, to send sign-in links to certain clients thanks to the length of the token added to the url. This system allows us to automatically have our links shortened down to a 10-character, transparent redirect! On a custom domain, at that.
Launching Alex 🤖: A New Beginning (February 2024)
After a few months of deep development, I launched my OpenAI-powered customer service agent for Agent Pronto: Alex. I took a novel approach with Alex, designing it to be a full-fledged User in our system rather than simply a chat-bot. We built ‘views’ for Alex to observe the pages of our CRM that typical human users would, then built an array of Functions for Alex to call at its will (just how a User would click buttons on the CRM pages), and trusted Alex to do the rest.
And, without getting into too much proprietary detail here, the results have been excellent. Alex is extremely capable, aware, and wrapped by several layers of control code within our own application that governs and guides what Alex can do, and in some cases, should do. An excellent harmony of hard-coded logic and non-deterministic GPT output.
‘Dialpad’ — A Real-Time Browser-Based Call System via Turbo (January 2024)
What a fun build and neat technical challenge this one turned out to be. In short, I ended up designing and building a system that allows our customer service agents to field (dial outbound and receive inbound) phone-calls directly from their browsers, virtually from scratch. While we did have a system that (somehow) worked before, it was some seriously legacy, black-box code.
The trick and challenge of this project was designing and implementing that system to work in a Javascript-less, Turbo-driven world. How do you implement real-time, browser-based, phone calls without (much) Javascript? A remote control style architecture! I actually ended up writing extensively about this approach here.
‘Launchpad’ — Real-Time Notifications via Turbo (December 2023)
This was another great personal project for me — an overhaul of a legacy system that still mostly worked, but was aging and becoming more and more difficult to work with. In this case, our real-time notifications for internal (customer service) users to alert them that they have a new task or message to handle.
This project ended up being a work of Turbo art — frames, streams, and back-end broadcasting driving a truly resource-driven approach in a person-specific way. This system has been running excellently for a few months now (as of writing) and the results are extremely reliable! Turbo Streams + Broadcasting is awesome!
The Great Repository Merger (November 2023)
The short way to put it is that our two Rails applications (that sit on top of the same database) are now merged into a single mono-repo in order to have a nicer git-life. The long way to put it is that merging two repositories, each with their own 10+ year histories, is a bit gnarly.
The good news is that I was able to deploy some git-fu to actually retain the full git history from both sides of the repository — so we can trace blames back infinitely through both parental trees of what is now the single repo! This is amazing.
Mostly I did this for logistical benefits — having a single PR that can cover both applications is extremely helpful and allows us to see and understand a feature or functional change in its entirety, all in one place.
Shared Session / Shared Auth (October 2023)
As we moved on to Devise and continue to adopt more traditional authentication standards, allowing users to remain logged in across both applications was becoming more challenging. Luckily I was able to figure out a means for both of our Rails applications to exactly line up their session encryption and decryption keys, tokens, and values, such that logging in to one application would log you in to the second, too. It would simply read your session with the same “they’re already logged in” values that it itself would’ve set had you logged in there. Totally transparent and shared session! Hugely helpful, and a powerful addition. Proud of this one!