Two Engineers, One Mentoring Story: Why Both Sides Win
We are Carme and Mila, both software engineers at FreeAgent, where we collaborate as mentee and mentor. In this blog we interview each other about our mentoring relationship. Weāre hoping that our experience is universal and sharing our insights will be useful to anyone who is interested in mentoring. If you like what you read, why not give it a try! The menteeās perspective - Carme When did you reach… Continue reading
Persisting nested form attribute indexes through Turbo updates
Introduction We recently encountered an interesting problem when using Turbo Streams to update part of a complex nested form in FreeAgentās main Ruby on Rails web application. For those unfamiliar, nested forms allow a user to enter data relating to both a main parent object and its associated objects. This could be, for example, a contact form which also supports creating and editing multiple associated addresses. To illustrate the problem… Continue reading
How we Use Dagster Automations in our Data Pipeline
Introduction The heart of a reliable data platform are robust and automated data pipelines. As our team migrates our data pipelines to Dagster, re-architecting our automation logic is a crucial task. Dagster offers condition-based approaches to creating or updating a data asset (table or file), moving us toward a modern, asset-centric view of data. This post details the three primary automation strategies we considered and implemented (so far) in DagsterāSchedules,… Continue reading
We're hiring! Check out our vacancies š
A refreshing take: using serverside rendering to reduce fragile DOM state
Hotwire is central to how we drive the frontend at FreeAgent, and Action Cable allows us to send Turbo Streams as users browse the site, adding a layer of richness to the user experience. Continue reading
Streamlining DBT Macro Testing: A Unit Test Approach with Pytest and Jinja
Introduction Data Engineering at FreeAgent has a mission to ensure our colleagues and customers have reliable, accurate, and secure access to the data they need. Our migration to Dagster, DBT, and DLT is a key part of that. However, it has raised numerous questions, including how we test DBT Macros. This post dives into how we're tackling this by leveraging pytest and Jinja for more efficient unit testing of DBT… Continue reading
Waiting for it with Capybaraās synchronize method
Feature specs are notorious for their potential to flake. Itās possible for the results of feature specs to be inconsistent because they have to deal with asynchronous state. In a typical test environment, thereās a single Ruby process at play, so test code will be executed in order as written ā we can reasonably expect one line to complete before the next is executed. But when it comes to feature specs… Continue reading
Wiggling my way to a win
The work calendar At FreeAgent, we work in intervals of sprints (2 weeks) and cycles (which are made up of 4 sprints ā adding up to roughly 2 months total). In a cycle a team typically aims to complete 1 larger project, and during a sprint a team aims to complete sub-tasks of that larger project. This helps construct timelines and structure for product managers and engineers to work within. … Continue reading
Switching to Swift: The iOS Migration
Apple released the SwiftUI framework at their Worldwide Developers Conference (WWDC) 2019. The new framework was a significant shift in iOS app development, promising faster development and more reactive user interfaces (UI). At the time, the FreeAgent iOS codebase was in much the same state as other iOS apps - using UIKit, an entirely different framework that had been in existence since 2008. Whilst UIKit was, and still is, a… Continue reading
Building the bridge from education to real-world application
Youāve just hung up the phone and youāve received an offer for an internship. The excitement is overwhelming as the countless months of applications, assessment centres, interviews and rejections become obsolete. Youāve done it! This is your first step gaining valuable experience about being a software engineer and bridging the gap from theoretical university to real-world application. Youāre faced with excitement and questions. What is it like to work on… Continue reading
Building the building blocks: My summer on FreeAgentās Design System Team
As someone hoping to find a job within the UI/UX field of computer science, I was amazed at how little I knew about how a design system team works. My classmates at university were the same. They too didnāt realise the scale of these teams and had never come across the phrase ādesign systemā. This internship has been a crash course in why design systems are so important. I think… Continue reading