At FreshBooks, we do a lot of recurring billing transactions which means a ton of data. Specifically, payment gateway response times. This is the time difference between when a customer hits enter payment after filling in their credit card information and when we get a failed or completed transaction ping. The faster the payment gateway responds, the quicker we can notify your customer about their paid/outstanding invoice and also run your other recurring invoices.
There are many factors that can affect a gateway’s response time such as the type of processor people are using with the gateway. But the data here is aggregated, so it shows the typical response times with all the factors contributing.
As you can imagine, not all payment gateways are equal. Some are inconsistent or a little slow while some are consistent and fast. All the graphs here show the percent of total responses that FreshBooks received in seconds. As a whole:
For a more detailed look at 0-10 seconds and 0-3 seconds, please look at the next two graphs.
If you work for yourself, you’re doing something you love. However, you’re probably spending hours on administrative work that frustrates you. You’ve been told to use virtual assistants or sub-contractors. Maybe using a virtual assistant to book your travel, organize contacts and receipts, or answer your email. If they charge you less than your billable rate, there’s an easy business case for it. But there are hidden costs: the time it takes to find the right person and the hours you spend managing them.
Don’t fret, there’s a happy medium you can start using today: proven web services. There are a lot of great web services that can save you hours every week. They’ll cost you a small monthly fee but the hours they free up can be spent doing what you’re the best at. Those hours can now be billable so you can get a quick return on your investment.
Have a shoebox of expense receipts? Get Shoeboxed to organize them.
Need a professional phone system? Let Grasshopper answer your calls.
Manage your own hosting? Let Rackspace worry about it.
Disorganized business contacts? Tag them in BatchBook (or send your business cards to Shoeboxed).
Lost track of the leads coming from your website? Have Wufoo receive and organize them.
Writing your invoices in Excel? Send and manage invoices with…
I’ll let you can figure out the last one.
Don’t waste your time on a problem that has been solved before. The right person can really help you out, but finding them can take time. Use a proven web service today so you can get a return on your investment right away. Spend more time on what you love.
I recently read the legitimate complaints of Eric Goldman about Scribd’s new Archive Subscription premium service. For those not aware, Scribd is a fantastically popular document sharing site that made Word and PDF files viewable inside a web browser, which was not really easy before Scribd. Until recently the service was completely free to use, which no doubt helped it grow superpopular.
Through the end of summer, Scribd introduced what it called a premium feature called Scribd Archive Subscriptions. After some period of time (apparently two months), if you need to download the original document, you have to buy a Scribd Archive Subscription. Readers will only be able to read the document on Scribd.com or on a suitable ereader.
For thousands of users like Eric and others who relied on Scribd to store and share their documents with their audiences, this was a huge shock. These authors and contributors had sent their readers to Scribd and now Scribd was exploiting their documents to generate money. What’s more, by making it difficult to download documents, Scribd had changed the expectation of why they sent readers to Scribd.
Scribd made this more difficult on themselves by making it an opt-out program. I bet they were nervous when they flipped the switch.
You are not the customer
I understand why Scribd had to do this. In fact, their VP of Marketing, Tammy Nam wrote a very honest guest editorial on the Huffington Post: they need to make money to cover their operational costs. Wildly successful and wildly expensive, they really need to ramp up revenue to be profitable and they don’t yet know what to do to get there.
I cannot blame Scribd for this decision, nor should you. There is one thing I have learnt dealing with free services. Until they know what their business model is, you can’t know who they are. They can tell you what they think they will be, but it doesn’t matter. We all become defined by how we earn our daily bread.
While everyone else is jumping on Scribd, let me turn the tables on their users. The only reason Scribd’s story was so dramatic was that it had an unstable relationship with users from the beginning. Here’s a true fact: when “users” pay nothing for a service, they are not the customer.
Fight for your right to pay
It’s simple, really. If your business depends on a service, pay for it. If Scribd won’t take money from you, use a subscription document sharing service like OfficeDrop. Then you know how the company earns its living. From you! You will be the customer.
The Globe and Mail, Canada’s national newspaper, has been running a special focus on customer service in their online business section. Today they featured a special case study on FreshBooks and our customer oriented service and culture. They interviewed our co-founder and CEO Mike McDerment who shares some examples of FreshBooks’ striving customer service and why it’s an opportunity for any business, especially for one with customers (we’re hoping everybody!).
“A lot of companies look at customer service on their financial statement and don’t see that, fundamentally, it’s a gold mine. There’s a disconnect with the numbers on the page. They look at it as a cost because it’s not generating new sales directly and misunderstand that it does indirectly. In reality, it’s pure interaction between your customer and your company.”
Ever wonder how you and your team have been tracking against a project’s budget? Shazam! You can now track your progress against time budgets in FreshBooks. What’s even better is there are new snapshot visuals to go along with it.
First, check out the dashboard on your Home tab (under “Recent Activity”). You and your team (who are assigned to the project) can now visualize the budget and your company’s total billed and unbilled time. Also, take advantage of the “Start” timers to track time straight from your Home tab without having to go to the Time Tracking tab.
“But how do I enter in these budgets?” you ask. It’s very easy. First, for any project, you’ll see a budget bar with either “Enter Budget” or a color (progress based) filling it. Just click on it and you’ll be prompted to enter the budget.
Alternatively, you can enter a budget when creating a new project, or editing a current one.
So where else can you view your projects’ budgets? You can see your projects’ budget in two other places: 1) on the list of the projects, in Time Tracking under the Projects sub tab,
and 2) in the Project Details. Just click on your project from the List of Projects and you can get all the details you need for your project: time tracking details, budget, past invoices, and expenses.
For other “more” technical posts, we suggest our Dev blog.
Recently here at FreshBooks we’ve been busy re-factoring and updating how we serve content delivered through XHR or ‘ajax’ requests. There were several factors and reasons that drove us to rework a subsystem that has worked well for the past 5 years.
Difficult to test – The current implementation has a number of factors that make it challenging to test.
Difficult to extend – Other details with the current implementation cause it to be more challenging to extend than we’d really like.
Coupled to XML – Xml is great, but JSON is a smaller, and for our uses easier to work with format.
Once we knew the pain points of our current system, we started looking at what our ‘ideal’ implementation would look like, and ways that we could incrementally migrate code into a codebase that would be easier to test and allow us to use non-XML data formats.
Planning the solution
After collecting the problems we wanted to solve, we started to plan out the new approach. We started out by whiteboarding potential solutions and the object structure we wanted. Using our list of what was wrong with the current implementation as a guideline of things we wanted to avoid, we discussed the structure we wanted and drew out possible implementations on a whiteboard. After getting something that looked good in sharpie, our next step was to hack out a prototype using test cases to make sure it would do what we want. We presented this prototype to the rest of the team to get feedback and improve the design.
In the end we went with a structure that provided separation between serialization, domain logic, and request handling. This not only made the new code shorter, but also allowed us to write more specific and more accurate tests. This separation also allowed us to reduce a lot of duplication that was present in the existing implementation.
Beginning implementation
Once we had planned out how we wanted to tackle the problem, and our prototype looked feasible, we polished up the prototype and continued to implementation. New code was created with unit and integration tests. At FreshBooks, we have a 2 ‘ajax’ endpoints. One handles non-account-specific features, and the other handles per-account features. In the old system each file contained all the functions it needed, which meant duplication was just a fact of life. For the new object-based implementation we didn’t want to maintain this physical separation in the code base. A physical separation like the previous implementation would introduce additional unwanted complexity. However, we still needed an explicit way to declare which methods could be exposed where. As part of our planning process we decided to take a page from PHPUnit and used method annotations to declare under what context a method could be used. The two zones were named ‘inside’ and ‘outside’, for their roles inside and outside a customer’s account. Every method would need to have an @expose doc tag that indicated under what context it could be called. Methods without this annotation would not be accessible from a URL — this would help prevent developer error and leave things in a ‘deny by default’ mode.
We were able to solve the testing and serialization separation issue by following MVC ideas. By separating the logic and serialization steps, we were able to more easily test the logic and provide extensible serialization. Instead of having to write tests against serialized output we could write tests against data structures, which is much easier.
Incremental rollout into production
After the initial set of tests were written for the common libraries, we decided to use a low-risk area of the application to spike our solution and make sure it was practical and functional. The current implementation at its heart is a very long case switch. Because of this we were able to slowly ‘strangle’ out the old code and replace it with new code. We put the new request handling at the bottom of the switch so it would be able to catch any requests the existing code could not. If a request falls through the case switch, it means that the code has either been cleaned up or the request is bogus. The new system attempts to handle these left-over responses with its methods. This is a huge win, as it has allowed us to incrementally weed out the old implementation. Each section can be extracted out of the old implementation and moved into the new. This can be done safely and incrementally, so that we don’t overburden development or QA with our updating efforts. This ‘strangulation re-factor’ approach has allowed us to iteratively and safely roll out the new codebase with no disruptions.
I have to say I’ve been very happy with our approach and process. During the entire process we have had no customer-reported issues with the new implementation. Unless you spend the time to dig through the network traffic, you won’t even know that we’ve been overhauling what a pretty important piece of the FreshBooks experience.
Are you a solo professional? Looking for the latest and greatest ideas, strategies and inspiration? You should attend International Freelancers Day on September 24-25. It’s a free online conference with 25 high profile speakers. Our very own Mike McDerment will be speaking.
The conference is focused around growing and sustaining your Freelance business with of course some extra tips and tricks. Topics include:
Transitioning from a freelancer to a creative business owner
Low-tech ways to land profitable clients
Negotiating your way to success
FaceBook and network marketing
SEO copywriting
Finding a viable market for your business
Getting corporate clients
Building your freelance brand
Introduction to book writing
Optimizing web content for social media
It’s perfect time to get some new inspiration as the freelance economy continues to grow!
It’s an online conference so everything will be broadcast online. However, the videos cannot be simply paused or restarted, you’ll need to be on time to catch all the great content – just like an in person conference. However, if you’re not available the day of the event, there will be video replays but only available to registered participants.
Also, did I mention it was free? There are no-catches or hidden fees. You’ve got nothing to lose by registering today.
On September 27 & 28, 2010, FreshBooks will be heading to Chicago for midVenturesLAUNCH. Over 2000 entrepreneurs will converge on what is the largest startup conference in the Midwest to see the latest web, mobile, consumer, and greentech products and services.
During the conference, over 100 startups will get a chance to demo their company, pitch their idea, and compete for $100,000 in prizes on the main stage. Hundreds of other startup founders and the startup-curious will get to shake hands with the people who could turn their business idea into business gold. It will be intense.
We have 8 tickets to give away to 4 teams. midVenturesLAUNCH is all about getting your idea out there. We want to see you practice your pitching! Fire up your webcam and make a video pitch on YouTube. We will give the four best pitches for yourself, your business, or your idea 2 tickets each.
Pro tip: Time is short. Don’t worry about videography. Don’t get a hair cut. Just pitch it straight into the camera as if you met someone at the conference. Here’s a good example. Here’s a less good example:
The Rules
Keep it less than 60 seconds.
One entry per team.
Mention FreshBooks once during the video.
Tag the video freshbookslaunch2010 so people can find it.
Email me a link to your video so I have your contact information.
We’ll pick the two videos with the most number of Likes on YouTube and the staff at FreshBooks will pick two videos based on the quality of the idea and the smoothness of the pitch. We’ll give two tickets to the creator(s) of each winning video.
The contest ends September 15. We’ll notify the winners September 16. You’re invited to get your friends to Like your videos if you think that will help!
The FreshBooks office and support lines were closed yesterday in celebration of Labour Day.
Ahhh, Labour day, best known as the last long weekend of the summer. It’s the one last chance you can get to do all your fun summer activities until autumn, along with the cold front, starts to creep in. (At least, in Toronto anyways!) More importantly, it’s a chance to celebrate and pay tribute to the labour movement and the social and economic achievements of all.
That said, did you ever ponder where Labour Day came from? The answer might surprise you. I bet you didn’t know that Labour Day was originated in Canada!
On April 14, 1872, a big parade was staged in support of the Toronto Typographical Union’s strike for a 58-hour work-week. The Typographical Union had been on strike since March 25th of that year, and the Toronto Trades Assembly (TTA) called upon its 27 unions to demonstrate in support. Needless to say, this demonstration made the editor of the Toronto Globe and Canadian politician George Brown furious, and he fought back by pressing the police to charge the Typographical Union with conspiracy.
Twenty-four leaders of the Typographical Union were arrested, which didn’t go so well with the TTA. On September 3rd, there was another demonstration for the arrest; this time, not just in Toronto, but also in Ottawa, where the parliament reside.
This demonstration finally caught the attention of Sir John A. Macdonald, the Prime Minister at the time. He promised to repeal the anti-union laws, and passed the Trade Union Act on June 14, 1873. Pretty soon, all union demanded a 54-hour work week.
So where did the American Labour day came from, you ask? Well, the Toronto Trades and Labour council, the successor to the TTA, have been hosting a celebration every spring for the workers since the 1872 incidents. For the celebration on July 22, 1882, the council asked American Peter J. McGuire, co-founder of the American Federation of Labour, to speak.
Following that event, McGuire and the Knights of Labour organized a similar parade based on the Canadian event on September 5th, 1882 in New York City, which has become a tradition since. Pressure for Labour day to become a national holiday started to mount in both Canada and the United States, and on June 28th, 1894, and July 23rd, 1894, Labour day was officially recognized as a national holiday in United States and Canada respectively.
So come this weekend, do take the time to thank the Toronto Typographical Union, the Toronto Trades Assembly, Peter J. McGuire, and pretty much every worker on the planet for helping to build strength, prosperity, and well-being for our respective nations. Hope you’re haveing a great and safe long weekend!
If you’ve ever been to a good developer conference you know how incredibly inspiring they can be. Hearing someone talk about the cool stuff they are working on can really inspire a developer. Inspired, the developer goes off and creates even more cool stuff. So the cycle continues and incredible technology becomes available to the masses.
One day we started thinking, why not bring a little bit of that inspiration to Toronto. In fact, we thought, lets have it in the middle of the week and in the evening so almost any developer could come. So TechTalksTO was born.
TechTalksTO will be an ongoing series of events in which we bring in inspiring tech people from all over to give a talk. We hope that the talks will help to bring together developers in Toronto and eventually grow to be an integral part of the Toronto tech community.
To start things off, we are flying in Jeff Lindsay from San Fransisco. Jeff Lindsay created Notify.io and was one of the first evangelists of WebHooks. He is now working over at Twilio.
Jeff is going to talk to us about WebHooks and the greater “evented web” that they unleash. There will be time before and after the talk to hang out with Jeff and your other fellow developers. There will be drinks. There may even be some snacks.
At first we were going to make this entirely free. However, with the limited space we decided to charge a minimal amount just to prevent people from taking a ticket and not showing up. I do hope you will come join us, get inspired, and continue this cycle of creating amazing stuff.
The first speaker series is happening Wednesday, September 15th at The Gladstone Hotel
FreshBooks is an online invoicing, time tracking and expense management service that helps people save time, get paid faster, look professional and focus on what they love to do - their work.