Sunsetting API 1.0
We launched the first FreeAgent API back in February 2008. It served us well but 18 months ago we launched our second-generation API. The vast majority of third party apps that integrate with FreeAgent have now migrated over to API 2.0, so we will be shutting down API 1.0 by the end of 2013. We have announced this to our API community already, but we're now reaching out to our… Continue reading
Staying On Track
We were fortunate to start FreeAgent at a point in time when things had just taken a turn for the better for web developers. Prior to 2005, I was writing web apps in Java using technologies such as Spring, Velocity and (sorry for swearing) Struts. Then along came Ruby on Rails. Rails was perfect for our bootstrapped startup. Its conventions allowed us to focus on rapidly developing the core functionality… Continue reading
Revving the engine
At FreeAgent we deal with a lot of accounting data - every invoice, bank transaction, expense and VAT return in the system must be processed, and its tax and accounting effects calculated and recorded. In the early days of FreeAgent this was something that was baked directly into the business objects – reporting data was pulled directly from the day-to-day business records. As the number of users grew and the… Continue reading
Switching wings mid-flight
How would you choose to release a completely redesigned version of your web application? Capistrano? Git hooks? Copying files over SFTP? Now imagine your application serves over 21,000 active, multi-user accounts. It’s a very busy app, and forms the backbone of many of those users’ livelihoods. At that point, the question perhaps becomes less about “how”, and more about “when”. 1am? And how long is the downtime going to be?… Continue reading
Conference Pairs
At FreeAgent we strive to create the best working environment we can for our Engineering team. A happy employee is a productive employee and, as an engineer myself, I understand that there's little that makes us happier than fast interwebs, great coffee (or tea, served from a teapot, naturally), free beer (or Irn Bru), shiny new toys and an endless supply of challenging code to craft. This is why we… Continue reading
CoffeeScript with jQuery sprinkles
This is part two of a two part intro to CoffeeScript. part one part two So my last article on CoffeeScript certainly seemed to provoke some thought. Some of you even found it useful, which is all sorts of awesome. If you haven't had a look at that article, I'd advise doing that first, as this one builds on it. There is one more thing I’d like to touch on… Continue reading
! ‘CoffeeScript: two sugars, no bitter aftertaste’
This is part one of a two part intro to CoffeeScript. part one part two The FreeAgent web application runs on Rails, and around the corner for us is an upgrade to Rails 3.1. This will bring many benefits to performance, but one of the things I'm most excited about is the asset pipeline. This makes JS and CSS assets first-class Rails citizens, and as a bonus, allows us built-in… Continue reading
Understanding the Rails Logger
I've lost track of why now, but I've spent a bit of time this afternoon trying to understand how the Rails logger works in production. For years we've been using a Hodel 3000 Compliant Logger, which is dead straightforward. Recently, though, we switched back to using the built in logger with Rails, which is a little more subtle. The default logger in Rails is the BufferedLogger from ActiveSupport. It can… Continue reading
On the road
Hello and welcome to the all-new FreeAgent engineering team blog! A lot of work goes on behind the curtain at FreeAgent and we’ve kept rather quiet about this ever since we launched the first iteration of our app (18th September 2007, if you were wondering). This isn’t because we’re unwilling to reveal our secret special sauce (still classified, sorry), more because there has always been such an ever-growing mountain of… Continue reading