Type checking in Ruby – Part 1
Over the course of a career in software engineering, we learn to love elements of our tooling and dislike others - that’s perfectly natural. As requirements change, including our own need to improve as engineers, so does what appeals to us when reaching for a new framework, language or library. A common path for lots of engineers will have been to learn something like C or C++, both strongly typed… Continue reading
A brief introduction to ‘the cloud’ and managing infrastructure with code
Over the last decade the ‘cloud’ has become increasingly prevalent . A cloud based system allows a company to flexibly buy servers, storage, networking and various other services that are hosted externally rather than on-site, typically with a programmatic interface to allow large-scale use. According to a 2019 report, 94% of companies were utilising the cloud in one way or another. The market for cloud providers was valued at $200… Continue reading
Getting started with Jupyter Notebook
Jupyter Notebook is a development environment that runs in your web browser and can be used with several languages, including R and Python. In this blog post, we’ll look at some of the benefits of using Jupyter Notebook and how to start using it with Python. Benefits of Jupyter Notebook Chunking code into cells Instead of having to write code in large flat files, developers can use Jupyter Notebook to… Continue reading
Tooled Up. A brief history of SaaS tools we’ve loved (and lost)
Distributed (remote) working has always been a foundation of the Engineering team at FreeAgent. Our entire company was founded as a distributed team and over the years we've managed to maintain a 50% distributed-to-office staff ratio in Engineering. The tools we use to work effectively as a distributed team have changed over the years, but there are a number of stalwarts that we've used since 2007 and still love today.… Continue reading
An Evolution of Bank Feeds: from Yodlee to Open Banking
We care a great deal about bank feeds. They provide the essential link between our users' FreeAgent accounts and their bank accounts, automatically importing transactions each day. From our customers' point of view they're probably the most valuable and most used feature of the software, so they're really important to us too. For many of our customers, the main purpose of using accounting software like FreeAgent is so they don't… Continue reading
Let’s talk tools
In a recent workshop, we were talking about our toolchains, recommending tools to one another that we couldn't live without. We shared them with the rest of the engineering team and they gave further suggestions of their setups. I've collected them all together so you can find your new favourite tool and increase your productivity! Let's get into it. Browser Extensions Octotree is a browser plugin that gives you a… Continue reading
Shaving yaks – problem solving in Dev Platform
Although I usually work in Support Engineering here at FreeAgent, I was recently given the opportunity to spend a six-week cycle working in the Dev Platform team. The technical aspect of the Support Engineer role is what drives me; I love to take a problem, dig into the source code and figure out how to solve it. The work in Dev Platform promised to be even more technical so I… Continue reading
From Finder to Sublime Text
At FreeAgent we work on Macs with a good number of us using iTerm2 and some using Sublime Text. Often I find myself in Finder needing to open a file or folder in Sublime Text. The unfun way is to go Finder -> Services -> Open New iTerm Tab Here and then once that opens type subl .. There's a couple other ways to do this that are more fun… Continue reading
Have your butler do the de-linting
Lots of our infrastructure is managed by Puppet, the open source configuration management tool that uses its own domain specific language (DSL) to describe how services, files and systems should look. The DSL was inspired by Nagios configuration files, so you’ll find lots of nested blocks under curly braces, indentation, groups of parameters assigned with => separators, all of which can begin to look messy in a large manifest, as… Continue reading
How we run 4 hours of tests in under 4 minutes
Here at FreeAgent we have a test suite that contains over 21,000 individual RSpec examples. Currently it takes approximately 4 hours to run in a single process. Here’s how we’ve tuned our test suite and CI system (Jenkins) to run them in under 4 minutes. 1. Parallelise The first step is to run the specs in parallel. Test queue We use test-queue, a parallel test runner by Aman Gupta. It… Continue reading