Eric Smith Makes Error Reporting A Breeze With Exceptionless
Eric Smith is the founder of CodeSmith Tools and CodeSmith Generator. I'm sure many software developers are just as excited as I am to have him as a guest on Simple Programmer. CodeSmith started out as a side project while Eric was working with a company. He ended up leaving that company but negotiated with them to get rights to sell it. To cut the long story short, he made a deal with them and the rest is history.
I've actually interviewed Eric on Get Up and Code awhile back, and we talked about CodeSmith and his inspiring weight loss transformation. He also talked a little bit about Exceptionless, a company he just started at the time. I invited him again to do another interview and talk about it a bit more.
Check out my video interview with Eric Smith and the Q&A below that he put together especially for the site.
Q: Hello Eric, can you tell us a little about yourself?
My name is Eric Smith and I am the founder and president of CodeSmith Tools. I am married with two children and I am a tennis addict. I did an interview with you a while back about weight loss, and I have lost over 100 pounds eating better and playing tennis.
I am really passionate about software development and technology in general and I love building tools that help make our job as developers easier. I created a product called CodeSmith Generator a little over 10 years ago when .NET was first released. Since then I’ve helped create a few other products, one of them being an error reporting app called Exceptionless.
Q: What is Exceptionless?
Exceptionless pulls everything into a dashboard that organizes all of the events into neat stacks of actionable work items. It organizes things in a way that makes it easy for you to see which errors are affecting the most people so that you know exactly what issues to fix. It also gathers lots of contextual information about each error which helps make tracking the issue down much easier.
Simply put, it’s a tool for developers that makes their lives easier and their users happier!
Q: Why should developers be excited to use Exceptionless?
As developers we always face tight deadlines and sometimes we are forced to launch applications before we are ready. Inevitably, this results in bugs. Sometimes we know about these bugs, but in most cases we wouldn’t even know about them until our users reported them to us. The biggest problem is that most users will just walk away in frustration and never report these issues to us. Not knowing that these issues are happening can be catastrophic to users confidence in the application and for commercial products it will definitely result in lost revenue.
I worked in the consulting field for many years and know how it is – and that’s why we built Exceptionless. So developers can innovate and let Exceptionless keep track of the errors and make it quick and painless to track them down and fix them. This leads to better applications, happier users, and more money!
I guess the question you have to ask yourself is: Do you want to stop losing users and money, be able to spend more time building instead of tracking down bugs, and in the process put out amazing products that just work – you know, that app that everyone loves? If so, then I would strongly encourage you to give Exceptionless a shot… there’s nothing to lose!
Q: How does Exceptionless compare to other similar services like Raygun and ELMAH?
There are certainly more choices today than there were a few years ago, especially for .NET developers. I’d say the biggest difference with Exceptionless is that we are completely open source under the very permissive Apache license and free to use if you want to host the service yourself. We provide paid hosting if you don’t want to manage it, but you are not locked in and can switch to hosting yourself at any time. We are just taking the approach of helping the community and trying to build up an open source project. If money comes from people using our hosting service, that’s great!
After that, the primary difference is that we are event based and you can send any type of event that you want in addition to errors you can send things like log messages, 404s, feature usages, and literally any other type of event that you want.
We also make it really easy to send any sort of custom data that you want with each event. For instance, you could include a complete cart object when an error happens during the checkout process of your website. We provide a really nice visualization of those custom objects and also make it easy to promote them to their own tabs to make them feel like 1st class data in the UI.
Another big thing that we provide is a project settings feature which allows you to set key value pairs that will be sync’d down to all the Exceptionless clients that are pointed to your project in close to real-time. This allows things like providing a config setting that controls the level of detail that each event contains. For instance, maybe you are having a problem with the checkout part of your website and you want to turn the logging level up. You could do that from the Exceptionless application and it would change the settings on all the clients and they could then send more detailed logging information. Once you figure out the problem, you can turn it back down. This mechanism isn’t limited to only being used for Exceptionless either, people are using it to control other aspects of their applications because it is so convenient to have real time configuration and the ability to easily change it remotely.
Q: What’s the best way to get started with Exceptionless?
Getting started is really easy! Developers can set up an account and send their first event to the dashboard in minutes using our managed hosting service at exceptionless.com, or they can self host for free, which we have gone through great lengths to make as easy as possible.
Q: Awesome, is there anything else you want to tell us about the project?
Yeah well, once again, while building Exceptionless, we ran into problems building a loosely coupled scalable application that was just as easy to run locally as it is to run in the cloud. As we worked on solving that problem in Exceptionless, we decided to pull the core building blocks that we had created out of the Exceptionless project and create another new open source project called Foundatio.
Foundatio provides pluggable building blocks for things like caching, queues, locks, messaging, jobs, file storage, metrics, logging, and repositories. Then we have various implementations including in memory (for local dev and testing), Redis, Azure, and Elasticsearch.
Q: Cool, but there are other options out there for all that – why Foundatio?
There are several problems we ran into that spurred the development of Foundatio. The biggest one being that there was nothing out there to abstract the core building blocks necessary for building scalable applications while not locking your application into a single cloud vendor and also being able to easily run the app locally or host it yourself outside of the cloud.
I love all of the new cloud services that are coming out and raising the abstraction level for building scalable apps and making it much easier to start a new businesses, but I don’t like the idea of being locked into one of them because our application is too coupled to that particular cloud service.
Q: Awesome! How can I get started with Exceptionless and Foundatio?
For Exceptionless, if you want us to handle the pain and expense of hosting the service for you, we offer free accounts and super painless signup at http://exceptionless.com. If you are interested in hosting the service yourself, we have worked hard to make it really easy for you and have extensive documentation on setting everything up. Just go to our GitHub repository and follow the instructions.
For Foundatio, the easiest thing to do is to just install the Foundatio NuGet packages. We also have examples and documentation at the Foundatio GitHub repository.