April engineering blog
Here at Katalyst, we value knowledge sharing because it raises skills and builds stronger relationships between team members. This week we tried a new idea, show and tell session where team members were encouraged to share something cool they have been working on.
Here are some of the things Katalyst was working on this week.
Custom rails routing
Katalyst has been working on a complex site that has multiple subdomains and models that can live on one or more subdomains. We’ve been using Rails’ Resolve for automatically generating appropriate links on any subdomain.
This week we built a custom extension to the default rails DSL for composing resolve procs while preserving access to the routing context. This greatly improves the readability of our routes file and allows for better testing.
Optimising with Bullet
One of our senior team members shared some tips on using Bullet for optimising page load times by identifying N+1 queries. We’d love to be able to enable strict loading for all our applications, but this tool brings some of the benefits to older codebases.
We’re pretty proud of the use of Stimulus and CSS3 transitions on https://connectplus.sa.gov.au/dashboard that bring some life to an otherwise static page. Katalyst has been using Stimulus for a while now, and we really appreciate how flexible and empowering it can be.
Katalyst has been hard at work on upgrades to our internal Admin/CMS. Our design team shared some exciting progress on UX development, sharing how a live preview could level up CMS editing. Our engineering team is excited to see whether Turbo could make this possible. TurboFrames lets us render an entire controller action in a “frame” and reload that in real-time without the need for a full page refresh.
We had a great experience delivering a client “share this content” feature using Rails’ Signed Global IDs. This feature ticked all our boxes on security and useability, allowing shareable links to preview unpublished content with a TTL without reinventing the wheel.
We’ve also got a lot of value out of using GIDs to implement application-wide polymorphic actions on model resources.
Database global content replace
Katalyst occasionally encounters situations where we need to move older applications into maintenance mode. One of our senior engineers shared an approach to using PostgreSQL procedures to go through all tables + columns and replace URLs embedded in text fields – much more performant and reusable than the equivalent Rails/Arel code we might have hacked together otherwise.
Katalyst uses I18N’s interpolate function to build editable templates as it’s a great balance between security and functionality. This week we found another use – writing templates for SMS notifications with preview and validation.
It’s always great to see what everyone is working on and we’re grateful to our talented team for sharing what they have been up to this week. Looking forward to more in the future!