Skip to Main Content
Official App
Free – Google Play
Get it
FreshBooks is Loved by American Small Business Owners
FreshBooks is Loved by Canadian Small Business Owners
FreshBooks is Loved by Small Business Owners in the UK
Dev Blog

Why weren’t you at ConFoo?

By Shey Sewani on March 16th, 2011

ConFoo was an incredible experience; with 146 sessions over 3 days, multiple tracks attracting members of many different open source communities from around the world. We met brilliant people everyday: diversity rocks.

Over three days, we had our brains rocked by sessions that ranged from caching with HTTP to Node.js to deploying and maintaining mission critical web applications. Just as important as the topics were the people who held the sessions.  Developers who are in the trenches everyday, working on real world applications and sharing their solutions.

Our brains were fried, daily, but when you’re in a beautiful city, with amazing people and incredible beer, there are always ways to relax.

So, thanks to the organizers and everyone we met and chatted with during the conference. If you’re a Ruby/Python/PHP developer, you should definitely go to ConFoo next year.  I know we’ll be there.

P.S.  We’ll bring a camera next time.

P.P.S: I was at {SXSW, PAX , PyCon} are all good answers

TechTalksTO – Episode 3 – James Duncan on Node.js

By Jason Diller on March 8th, 2011

On March 2nd, 2011, FreshBooks was proud to sponsor another edition of TechTalksTO.  Hosted once again by The Gladstone Hotel, this edition featured James A. Duncan, Chief Architect at Joyent, who hold the IP rights to Node and sponsor its ongoing development.

We packed the house again, and the developers who attended were treated to an informative and entertaining talk about Node, including:

  • What Node.js is and why Joyent is investing in it.

  • How Node.js handily solves the C10K problem
  • How more and more devices are generating volumes of data, and how non-blocking, event based I/O enables dealing with those volumes.
  • Why JavaScript is the right language for Node
  • How it all works under the covers.

We hope everyone had a good time and that you’ll all come back for the next edition of TechTalksTO!

Our next installment is set for March 29th, and will feature Ben Cherry of Twitter

A video of the talk will be posted shortly. You can check out the slides from the talk below.

Node js techtalksto

View more presentations from Jason Diller

Update:As promised, the video is now available at

Improving the reliability of WebHooks

By Shey Sewani on February 16th, 2011

At FreshBooks we dog food our API and WebHooks, which is how we noticed a curiosity in our implementation. Repeater, our WebHooks engine, is designed to retry a WebHook if the endpoint URI is temporarily inaccessible, i.e., it receives a non 200-series response code– unfortunately, Repeater didn’t repeat.

In its original implementation, Repeater maintained an internal priority queue of all WebHooks that must be retried, and a pool of threads which work on items in the queue. This implementation supported prioritization of first time WebHooks over retries as well as exponential back off for each subsequent retry; however, this scheme suffers from two major drawbacks. Firstly, the priority queue is maintained within memory and all retries are lost if Repeater is restarted, likely during upgrades; secondly, it uses multi-threaded code which is hard to debug and maintain.

Given that Repeater was not performing one of its fundamental operations consistently, and RabbitMQ is better suited for durable queues, we decided to replace the internal priority queue with a simple queue on RabbitMQ. We also replaced the pool of workers with a newer version of Sparkplug which supports multiple processes out of the box. In the new implementation, Repeater attempts to post…

Value Fun: The FreshBooks Hack Off

By Corey on February 11th, 2011

We’re pretty busy at FreshBooks. Like lots of companies; there’s always a ton of work to do, and sometimes it can be hard to keep your eye on the longer-term goals.

Having fun, for example.

We value fun at FreshBooks — people do their best work when they’re engaged and excited, but it can be hard to maintain that spirit in the midst of all the day-to-day work that needs doing. So we’re always looking for ways to keep things fun, to break up the ongoing work and give the creative people who make up this team a chance to stretch their skills and show off a little bit in front of their colleagues.

We call it a “Hack Off”.

They’re usually once a month, on a Friday (cause, you know, Fridays are good for this sort of thing). Developers are asked to stop working on whatever features or fixes they’ve got on their plates for the current release (we deploy to production every two weeks), and instead spend the day working on….

Whatever they want. Anything is fair game — the only caveat is that they are expected to show whatever they’ve been working on to the rest of…

API changes for Jan 11, 2011: API on for everyone!

By Shey Sewani on January 11th, 2011

Santa’s late, but he still brought presents!

First, API access is turned on for everyone! Customers no longer have to explicitly turn on their API. We hope that this simplifies support for our integration partners. In particular, this will immensely help those integrations using OAuth

If you’re developing a Time Tracking application you’ll be happy to hear that the time_entry.list and time_entry.get now return a read-only ‘billed’ status field in their responses. Additionally, the time_entry API now respects the page and per_page parameters.

Finally, the ‘status’ field is now ignored by the estimate.create and estimate.update methods.

As always, if you’d like clarification on anything feel free to call or email us.