The Importance of Tracking Exceptions
As a solo founder and app developer, launching and maintaining an app – any app – can be a significant undertaking. It may not seem like much at first but there is a lot of information that you need to keep track of and questions that need to be answered. Here are some questions I needed to have answered when building and launching my app, Scheduling:
- Are my servers still up and doing what they’re supposed to do?
- Are my users getting emails from the application?
- Are my users experiencing any errors?
For the purposes of this article, I’m going to concentrate on the last question: Are my users experiencing errors? As you may have gathered from the fact that you’re reading this on the Exceptional blog, I use Exceptional to track errors in the application. There’s a lot you can extrapolate from simple exception tracking, though.
Even with a strict TDD methodology, errors happen in an application. In my experience working on both large and small scale applications, developers always miss a few possibilities for behavior of an application. This can happen for many reasons: apps run differently with a lot of data compared to a little data in development, users figure out new and interesting ways to use (read: break) your application, and more. Keeping track of, and responding to, these errors helps to give you something that’s difficult to come by in this day and age: focus.
During beta, Exceptional was my to-do list: I would keep track of and (separately) prioritize bugs that needed to be fixed based on the information in Exceptional. Closing the error in Exceptional would mean, for me, it was done and the affected users were contacted. I still occasionally use Exceptional as my to-do list, though the app is, at this point, stable enough that I don’t much need to.
If you’re a developer, exception tracking is useful for keeping track of regressions with a twist. I had one particular error that popped up in a few places. I fixed it three times in the course of a few days in different spots in the app. This was a sure sign that I needed to devote some time to refactoring.
Finally, quickly being informed of errors helps in customer service. You can pass in custom information to Exceptional and see it in the dashboard. I find this most useful with information such as passing an account name or user name/email. This can make proactive customer responses very easy and surprising. I had an issue early on in the official launch of Scheduling which resulted in a user seeing an error page. This is a bad thing™. I was able to proactively email the affected user within minutes letting them know that I was aware of the error and it was being fixed, along with apologizing for what happened. This goes a long way towards fostering good will.
The “The Importance of Tracking Exceptions” is a guest post by Jason Seifer / @jseifer . If you have any interesting stories, tips, or best practices that you would like to share with the community send your submissions to email@example.com
Send Exceptions to GitHub Issues.
Last week we introduced a new service to Exceptional. Account administrators can add GitHub integration. Our first GitHub integration lets users send exceptions to GitHub creating a GitHub Issue.
We will be adding more features to the GitHub service in the coming months, if you have a suggestion a feature, send them to firstname.lastname@example.org .
Step 1. Goto Account -> Services. Add GitHub.
2. Add the github username / organisation name and it’s repro.
— NOTE. You have to add your organization + repro name/repo. e.g. exceptional/exceptional-app
3. Authorise the Exceptional to access your GitHub account.
4. At the bottom of an individual exception you will see a link to ‘Send to GitHub’. You can edit the Issue title and content, but it will be based on the Exception detail information.
5. You can now view the exception on GitHub. Our roadmap includes automatically closing the exception on Exceptional once it’s closed on GitHub.
iOS, Coldfusion, Flask, Pylons, and more
The Exceptional community has been prolific of late, producing many new Exceptional clients meaning that Exceptional is far from being a Rails only web application. Let’s take a run through what’s available…
Brian Lambert created a Coldfusion client for Exceptional, which is available again on Github.
11 Supported envrionments
Meet our Customers 9
There are some very cool Exceptional customers featured in this round, from ticket tracking to HTML5 & audio all the way to health & fitness classes in Atlanta.
In Contrast, we’ve been using Sifter heavily for about a year. It’s a fantastic tool for tracking issues during software development. Obviously this is a competitive space, and it takes a lot to stand out. Sifter has a beautifully clean UI and crucially the “Create a ticket” workflow is so simple that your whole team will get onboard using it. A good measure of the quality of a web application is the amount of people who end up using it after a recommendation. For me Sifter is scoring very highly there.
Sounds good is a online video sound editor, using the latest HTML5 technologies. You can upload any video, add any sound from their extensive sample gallery, or add your own sounds from your computer and experiment with the result right away in your browser. Once you are happy with the results, Sounds good renders the video for you. The most recent feature added is YouTube support letting you send your video straight to YouTube, but even cooler, add your own soundtrack to a YouTube video!.
Sounds good is a great example of what’s possible using HTML5, try their simple demo to see how impressive it is.
Cooleaf is a marketplace for health & fitness instructors, and would-be students. Their beta roll-out covers Atlanta, Georgia, where they’ve secured partnerships with Atlanta’s leading providers of health/wellness services including Yoga Studios, Health Clubs, and Personal Trainers.
As always, we’re happy to feature all Exceptional customers on our blog, if you’re interested in this, simply send a message to des at getexceptional.com
Exceptional engineer required
Our rapid rate of growth requires some serious help. We’re looking for an excellent software engineer to manage and improve the product.
You must have:
- many years of Ruby (and Rails) experience and
- many years of database admin experience.
It would be nice if you also had:
- a computer science (or equivalent) education,
- great social skills and the right attitude to give our customers appropriately warm, fuzzy feelings.
Your responsibilities will include working with us to implement brand new features, dealing with technical enquiries from our customers, making fixes to the app, liaising with developers to help them build plugins for their technology of choice. You’ll work remotely.
In return, we’ll:
- retain you on contract for a fixed amount of days each week (starting with 3, growing to 5 before the end of the year),
- give you a cut of the profit.
This is a big deal. Exceptional has been run entirely by the Contrast team to-date and we’re ready to take it to the next level and give one talented and very able programmer a tonne of responsibility and control over the product. We’re doing this because we feel that Exceptional’s future will be brightest if driven by someone with fresh ideas and energy and not distracted by the other goings on in our team.
Please get in touch if you’re interested.
Exceptional on Fluid.app
Benjamin Stein is an avid Exceptional user, who accesses the product via Fluid.app. He has crafted a Site Specific Browser for Exceptional that includes an Dock badge showing the number of open Exceptions.
Nice work Benjamin!
Meet our Customers 8
Car repairs, Organising sports events and a Chicago marketplace make up this weeks featured customers.
2CarPros are a Father & Son team of master car repair technicians. They run 2CarPros.com - a site for helping car owners diagnose and fix their problems.
Teamer.net is an Irish customer, which is always great to see. Teamer.net eases frustration for sports team organisers by automating the tasks associated with getting your team together each week. Emails, SMS, Teamer notifies you every way you want, and lets you track member availability Teamer is free to use and has over 600,000 members across 40,000 teams worldwide.
FeelGoodTrader is a new Chicago-based online marketplace. Buy/sell new and used items to community members, and browse easily with visual search The site also makes it easy to share items and get email/sms notifications when new listings are posted on the site. All in all it’s a very easy way to shop.
Recent Performance Issues
This e-mail was sent to all of our active users on 3 Feb 2011.
OUR RECENT PERFORMANCE ISSUES
Exceptional has had some severe performance issues over the past 5 days. For this we are incredibly sorry. We know Exceptional is a part of your workflow, and this past week we haven’t delivered a good service. We have fixed the problems that occurred, and we’ve now made many changes to speed Exceptional up.
Nonetheless, developers to developers, we owe you an explanation…
WE EXCEEDED RDS STORAGE LIMITS
On the 28 January our main database ran out of storage space due to a truly massive, unprecedented spike in new exceptions—despite our API rate limiting. It hit the 1TB storage limit imposed by Amazon RDS on a single database instance. We attacked the problem in two ways: firstly implementing a sharding strategy, and secondly reclaiming space on the database.
WE NOW SHARD OUR DATA
Exception data is now sharded by app, meaning that the load on our most frequently accessed data (occurrence data) is now distributed across our database cluster. We’re also working hard to clean out extraneous data. The web app may have some short periods of downtime as a result of this improvement work, however, we’ll schedule it for the off-peak hours. As always, no exception data will be lost.
WE’RE SPEEDING UP THE WEB APP
We have improved the performance of the web application. You’ll notice that occurrence data is now loaded via AJAX, and is cached by the browser. This makes it easier to get straight to your exception data, and also speeds up all subsequent page loads. We’re quite pleased with the results of this, and we’re looking for ways to speed up the web app further.
API and web app performance should be better than ever before. We’ll aggressively monitor our storage capacities in the future, though our new architecture will give us much more scaleability and flexibility.
WE’RE GRATEFUL FOR YOUR SUPPORT
Thank you so much, for your time, patience, and custom.
Ciarán, Wal, Eoghan, Des and David.
Meet our Customers 7
2011 brings with it more new interesting web apps, all monitored by Exceptional for any erratic behavior. Kicking off the year we have video processing, accountancy, and a talent marketplace.
Aframe is a powerful video production platform that simplifies the process of searching through,sharing and storing your video. Once it’s on Aframe you can let production companies, broadcasters and freelancers work with it immediately, in a collaborative environment.
SmoothContract offers a simple administrative system for contractors who just need to keep track of their clients, invoices, payments and admin tasks. The interface is clean and simple, and the workflows are nicely polished. You can use a live demo of the application to see for yourself.
GeniusPool is a talent market place for developers or employers looking to source new talent. All the adverts on Genius pool have the option to tap into a network of podcasts such as FoundersTalk, the RubyShow and more to gain additional exposure by being read out during the show.
That’s it for this week, we’ll be featuring more new applications throughout 2011, if you’d like to have your application featured, drop an email to email@example.com.
Exceptional and node.js
Exceptional-node allows you to catch exceptions in your node.js apps, and send details about that error to your getexceptional.com account. Exceptional-node will capture the error message, backtrace, environment information about the application when the error occurred.
We will be adding all the usual features to this module as we go (i.e context params) so please keep an eye on the github repo and this blog for updates!
Please give it a spin and let us know your feedback at firstname.lastname@example.org
The Exceptional Team.