From QA Engineer to Software Engineer: my journey
At the start of the year, I was a Student Quality Assurance Engineer, testing educational games at an educational technology company. Fast forward to now, and I’m navigating the complexities of accounting software as an engineering intern. How did I make this change? Why did I choose this path? And what insights can I share with others considering a similar leap? The starting point During my third year studying computer… Continue reading
Blasting away with Jetpack Compose: Android development at FreeAgent
FreeAgent’s talented mobile app engineers work within their own specialised technology stack. Unlike the developers for the desktop version of FreeAgent, we don’t use HTML, JavaScript, or Ruby. Instead, we work with Kotlin for Android development, and Swift for iOS. The FreeAgent mobile app developers work to keep feature parity with the desktop version, whilst juggling unique mobile-specific considerations. These considerations are vital to empowering mobile customers and their businesses.… Continue reading
Hybrid working: finding balance in flexibility
Recent years have shown that we no longer have to be chained to our offices. Particularly for those who do everything on a computer, remote working has brought welcome changes, and many people have adapted well to this new environment. Adopting hybrid arrangements, people can get the best of both worlds, and FreeAgent is an excellent showcase of workplace flexibility. Coming into my FreeAgent internship as a student accustomed to… Continue reading
We're hiring! Check out our vacancies 👈
It takes a village to raise an intern
Let me tell you about my worst day at FreeAgent. At the start of June, I was eager to get started as the newest workflow intern, the team responsible for user-facing admin features. The first couple of weeks were spent bouncing between inductions and tech issues, but I finally found my feet at the beginning of week 3. Ruby was starting to make sense, my tech was up and running,… Continue reading
Breaking the coding doom loop: lessons from my intern project
Tell me if this sounds familiar. You get a project idea that you’re excited about, create a new GitHub repository, and dive headfirst into coding. Instead of coming away with your new pride and joy, you end up with just another repo in your archive. Well, this has happened to me too, too many times! With my university projects, I could always produce a good piece of work. But university… Continue reading
Thinking on paper the software engineering way
Starting your first engineering job feels like a race against time. Handle coding, survive testing, run through a slew of inductions and find time somewhere in there to meet your teammates. Organisation tools are everywhere. But with a schedule spread across Google Calendar, Notion, and the odd Slack notification, nailing the daily admin can become a chore in its own right. The purpose of a planner is to break down… Continue reading
Combining text with numerical and categorical features for classification
Classification with transformer models A common approach for classification tasks with text data is to fine-tune a pre-trained transformer model on domain-specific data. At FreeAgent we apply this approach to automatically categorise bank transactions, using raw inputs that are a mixture of text, numerical and categorical data types. The current approach is to concatenate the input features for each transaction into a single string before passing to the model. For… Continue reading
How the Ruby Interpreter Creates Methods on the Fly
(And why it matters!) I was lucky enough to attend last year's EuRuKo, the travelling European Ruby conference. A theme of the conference (for me) was Ruby's infamous embrace of metaprogramming, which I've had little exposure to in my day-to-day as a Rails dev. The approach to this discussion was inspired by this great talk by Masafumi Okura on Code Reading, and much of the detail comes from the book… Continue reading
Restructuring our analytics team
In late 2022, we restructured our analytics team by aligning each analyst to a different area of the business. In this blog post I’ll talk about what we changed, why we changed it, and how we feel the changes have gone so far. If you’ve been through a similar process (or even the opposite process!), are considering it, or have any other thoughts, we’d love to chat! Please drop us… Continue reading
Using API Gateway, Lambda, SageMaker and DynamoDB to build a categorisation service in AWS
I’ve talked previously about the value of combining rules-based and machine learning approaches to categorisation. In short, rules-based approaches make it easy to do customer-level personalisation that complements a machine learning model trained to find patterns across customers. In this post I’ll talk about how we used AWS to build an expense categorisation service that combines machine learning with a rules-based approach. This service forms part of the Smart Capture… Continue reading