Exceptionless 2.0 Update - SO CLOSE!

Exceptionless Error Logging ServiceWe know, we know... It's been a while since our last update. As so often is the case, the holidays took their toll on work and waists here at Exceptionless over the past few months. However, we're not slacking too bad. In fact, we've got a small update on Exceptionless 2.0 that proves it's hasn't been all turkey and naps!

In general, the primary features and functionality of the new version are complete and we are in the testing, bug fix, and tweaking phase before we officially launch a production environment and begin orchestrating the process of data migration and rolling users over into the new system.

Recent Changes & Progress #

We thought we would throw out some of the most recent stuff we've been working on. We're sure you'll approve!

One of the main things we've been working hard to get right is the new filtering system. Since we put together our filter demo video, we've added in the following searchable items:

  • Exception Type
  • IP Address
  • Messages
  • Machine Name
  • User
  • Codes
  • URL Path
  • and more!

Documentation #

Another major feature we want to make sure is ready to go when we launch is the documentation. We aren't quite finished with the user documentation, but the API documentation has been updated and is current. Of course, we'll keep updating everything as development continues and will field any support related questions you may have.

Queue Processor #

We've been bragging about how fast Exceptionless 2.0 will be, and we're not joking. We've been putting a lot of time recently into optimizing the queue processor so that it's not just fast, but really fast. You'll see!

Bots #

Another little feature we've added is the ability to specify custom user agent strings to treat as bots. We're sure a few of you guys will find that handy.

Coming Soon. Not Tomorrow, but Soon. #

As mentioned above, we're still working out some bugs and preparing to enter the production and migration phase. We'll be sure to keep everyone updated via the blog, social media, email, and in-app as we get closer to launch.

Until next time, we hope everyone had a great holiday season and is enjoying a happy new year!

Previously, Re: Exceptionless 2.0 #

Bulk Actions Sneak Peak in Exceptionless 2.0 - Video

Exceptionless Bulk ActionsYou know you want it! Bulk edit actions, that is. The ability to select multiple exceptions or occurrences of a single exception and do with them as you please, all at once. Well, they're coming, and today we've got a sneak peak!

We're not changing the world here, but we're making yours a little more efficient. Maybe you want to remove sensitive instances of an error that contains certain data, or maybe you you've got some test errors that you don't want included in the total count, either way the new feature should help. Check it out and let us know what you think!

Exceptionless Bulk Actions Video Transcript #

Welcome to another sneak peak video for the upcoming Exceptionless 2.0. Today we'll be looking at the new bulk edit feature, one of many highly requested features we wanted to make sure we got into version 2.

If we log in to our Exceptionless 2.0 dashboard, which you've hopefully checked out the overview of in a previous blog post and video, we can see that there are now check boxes next to each exception, and if you click in to an individual exception, there is also a check box next to each occurrence of that exception.

Going back to the dashboard, you can select one, multiple, or all visible exceptions. Then, after you've made your selections, you can mark all of them fixed or hidden, or you can delete them.

Now, if we go into a specific exception, we can make all of the same selections, and then we can delete those specific occurrences of that exception.

And that's a quick look at the new bulk edit feature of the soon-to-be Exceptionless 2.0. Please leave a comment on this video or blog post and let us know what you think or any questions you may have. Thanks for watching.

Thoughts? #

Lets hear em! Thanks for watching.

Check out the Exceptionless 2.0 First Look Video and the new filtering system demo video, if you haven't already.

Filter Your Exceptions in Version 2.0 - Video Demo

ElasticSearch Exceptionless Filter DemoIf you've used Exceptionless, chances are a search or filter system would have helped you out more than once. We know, and we agree! That's why we've made it a priority with Exceptionless 2.0, which is coming very soon.

To expand on our previous "Exceptionless 2.0 User Interface FIRST LOOK" article, we want to give everyone a little bit more of a look at the filtering system. This demo isn't anything super fancy, but it gives you a good idea of how easy and fast it will be to filter and search through your event data.

As always, we are looking for feedback on the platform as we continue to draw nearer to launch, so feel free to leave us a comment or contact us and let us know what you think. We hope you like it!

Filter Demo Transcript #

Hi there. Today we want to quickly demonstrate the use of the new filtering system in Exceptionless 2.0.

Let's check out a quick example.

With our new tagging system, you can add any tag you like to an exception - so maybe you want to tag various exceptions to be related to a specific feature or issue - you can do that now.

As you can see in our dummy data here, we've introduced Tag 1 through Tag 5 on various exceptions.

If we go back out to the main dashboard and click up here on our filter/search icon, we can give it a quick test.

Lets say I want to see all exceptions tagged "tag4". OK Great. How about tag5? And tag 3? Cool.

Now, we can also do that within a group of exceptions... Let's look at this one. Again, all we do is filter by the different tags to see their frequency, look at individual instances, and more. Let me run through the different tags real quick.

And that's a quick look at the Exceptionless 2.0 Filtering system, which gives you even more control over sorting and finding the information you need.

Looking forward to filtering your Exceptionless events? #

Great! That's what we like to hear. We think it's going to be super easy, super fast, and even fun for some of you data junkies. Again, if you have any questions or comments, please let us know.

Exceptionless 2.0 User Interface FIRST LOOK

We can prove it! Exceptionless 2.0 is real, and we've got evidence!

We've been wanting to give everyone a sneak peak for a long time, and today we are excited to finally be able to. Watch the video above to see a high level overview of the new UI and features.

There are still quite a few small things to take care of before we release it, but we are happy to say that we are around the 85% mark as far as being finished. Once we get closer, we will be putting up a live demo/preview site for everyone to play with and give feedback on.

Please don't hesitate to give us any feedback you may have after watching the video or reading the transcript below. We want to hear it!

Video Transcript #

Exceptionless 2.0 Lets take a quick look around, shall we?

Everything is built on angularJS and talking to the REST api, so the UI itself is static, with no more server-rendered views.

There are a few upfront differences - mainly the fact that we're using all the screen real estate now and everything is mobile responsive

On the left navigation bar, we have the 4 default event types, exceptions, log messages, broken links, and feature usages. Each has a dashboard, most recent, most frequent, and new view, which generates a page very similar to what you're used to seeing.

As promised with version 2.0, we also have an all events section, which you can send literally any event to. We'll go into more detail on that in future posts and videos.

Cross Project Views & Filtering #

If we move to the top navigation bar, we see that you can now view data across all projects or by individual projects - a highly requested feature. We then have a quick time period selector, and finally the new filtering system, which allows you to quickly filter your exceptions. We'll show off that feature in it's own video soon.

Bulk Actions! #

Moving down into the data portion of the view, one feature that actually isn't new is that you can click and drag to select a period of time on the graph. Just a quick pointer there. Something that is new is the ability to select multiple exceptions or instances of an exception and perform bulk actions on it, such as Mark Fixed, Mark Hidden, or Delete. Again, more on that soon.

Anywhere. Anytime. #

One last quick feature that we thought we would highlight today is that all times are now translated to the user's timezone, so your team members can always be working in their specific time no matter where they are.

That's about it for today, but keep an eye out for more updates as we close in on a release date for Exceptionless 2.0. We know some of these features and enhancements have been on your request list, and we're really excited to be this close to shipping them for you guys.

Until next time, take care!

AngularJS and Exceptionless 2.0

Angular JSAs we plug away at Exceptionless 2.0, perfecting and future-proofing it, we wanted to stop and take the time to talk about AngularJS, how we are using it in version two, and what benefits we're going to get out of it.

Naturally, we want to maintain all current functionality while supporting planned V2.0 features like search and filtering. We also want it to be static and use the REST API for everything. We're pretty determined to not cheat on that point. Then, thinking ahead, building it to support easily adding new features in the future is a huge priority.

Lets look at these points in a bit more detail.

Static UI #

Using our fully documented REST API, the new Exceptionless 2.0 UI will be static, with no server side logic. What this allows us to do is host the UI on a content delivery network (CDN), guaranteeing faster load times for users anywhere in the world. Everyone loves fast load times!

Much, Much Faster #

Being a single page application (SPA), the new version of the app eliminates page loads. The only thing being loaded is the JSON data, and we can pre-load other content as users navigate the site. That, along with the static UI mentioned above, means we can deliver an app that responds almost instantaneously to the user's input. What a time to be alive.

Maintainable Modularity #

Version 1 taught us a lot. We gained valuable feedback from users, beat our head against several complex problems, and made countless wish lists for the future. Most of that lead to the desire for a more modular, easily maintainable system that new features could be added to with minimal reinvention.

AngularJS has helped us fulfill those dreams. We can now add new features very easily, without breaking other sections of the site, and our code based has been greatly simplified. And, even with all the modularity, we are still able to run tests on the UI. Pretty snazzy!

Event type support is handled via pluggable view modules, and we'll be able to add new ones that we haven't even conceived of with relative ease.

Do You Angular? #

Making the choice to go with AngularJS wasn't easy or quick, but be believe it was the right path to take.

Do you Angular? What apps have you used it on? If not, what other frameworks do you use for this type of app, and why?

Services and Other Technologies the Exceptionless Team Uses

Exceptionless Services & TechnologyOver the past couple of weeks, we have been writing about the tools and technologies that the Exceptionless Team uses to create, support, and maintain Exceptionless. In part three of the series, we want to take a look at the services used.

Most projects need project organization, time management, tracking, the ability to easily communicate with team members, version control, etc - the list goes on. Exceptionless is no different. Here are some of our favorite tools that provide those services to help keep Exceptionless, well, Exceptionless.

Services & Technologies #

Azure #

Hosts our infrastructure
Microsoft Azure lets you build, deploy, and manage applications any way you like for exceptional productivity. It is a major cloud platform and is an industry leader for both infrastructure-as-a-service (IaaS) and platform-as-a-service (PaaS).

GitHub #

Source control, issue tracking, wiki, and static site hosting
GitHub provides access control ,version control, issue tracking and several collaboration features such as wikis, task management, bug tracking, and feature requests for any project. It is a web-based graphical interface tool that also includes desktop and mobile integration.

HipChat #

Team chat and notifications
HipChat allows users to create and participate in chat rooms and send one-on-one messages with other people in a group-centric format. It is an excellent tool to keep your team organized and on task, no matter how small or large.

Pingdom #

Awesome uptime monitoring
Pingdom is a service that tracks the uptime, downtime, and performance of your websites from multiple locations globally so that it can distinguish genuine downtime from routing and access problems. An excellent tool to stay on top of your website’s downtime and to assist with issues that arise.

Trello #

Task management
Trello is a collaboration tool that organizes your projects into boards. In one glance, it tells you what's being worked on, who's working on what, and where something is in a process. You can easily sort your projects by tasks, to-do lists, and to stay on top of those time sensitive projects.

Librato #

Monitoring real time system metrics
Librato provides a solution for monitoring, analyzing, and understanding the system metrics that impact your business at all levels. It provides everything you need to visualize, analyze, and actively alert on the metrics that matter to you.

Mandrill #

Awesome and inexpensive way to send emails
Mandrill is a transactional email product that apps can use to send automated one-to-one email, like password reminders, shopping-cart receipts, and personalized notifications. It is highly customizable and can help assist with all aspects of email for your business.

Intercom #

Integrated app messaging and user communication
Intercom shows you who is using your product and makes it easy to personally communicate with them through behavior-driven email and in-app messages to help with feedback and suggestions to help you develop your product further.

Stripe #

Awesome payment processing
Stripe is a developer-friendly way to accept payments online on your website, or in your mobile app. It can be used in any size business and scales perfectly.

Apiary #

Api documentation
Apiary allows you to easily write a custom API blueprint for your project. Once created, you can share it with your teammates or customers to test. Once you have the perfect API mock, let your developers get to work. Check out the upcoming Exceptionless 2.0 documentation.

Google Apps for Work #

Cloud based email and documents
Google Apps for Work is a service from Google that provides independently customizable versions of several Google products. It uses your personal domain name and features several Web applications with similar functionality to traditional office suites, including Gmail, Hangouts, Google Calendar, Drive, Docs, Sheets, Slides, Groups, News, Play, Sites, and Vault

Skype #

Video conferencing
Skype is the most popular voice communication service in the world. Skype can be used to instant message, VoIP, Send files, or collaborate with your friends, family, or team members. They provide desktop applications as well as mobile applications.

What did we miss? #

As always, if you use other services and tools that are worth checking out, let us know. We know they're out there!

Client Side Technology the Exceptionless Team Uses

colored-swooshLast week we wrote up a whole list of server side technologies that we use to build and maintain Exceptionless. This week, we're going to look at client side tools and services.

We're all about function around here, but we like to think that the app looks and feels pretty good, too! We hope you agree, and maybe you'll come across a thing or two you could use in the future to jazz up the user side of your projects.

Most of these are free services, so check them out!

Client Side Tech #

AngularJS #

JavaScript framework for building dynamic, awesome apps

AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your UI language and lets you extend HTML's syntax to define your application’s structure efficiently. Angular's data binding and dependency injection eliminates much of the "fluff" code needed and does this all in the browser.

Bootstrap #

Mobile first front-end framework

Bootstrap is a free collection of tools for creating websites and web applications that was created by a developer and a designer at Twitter. It contains libraries of HTML,CSS, and JavaScript components to give your project a head start.

Font Awesome #

Scalable vector based icons via CSS

Font Awesome gives you scalable vector icons that can instantly and easily be customized and extended with the power of CSS.

Restangular #

AngularJS service for handling Restful Resource

Restangular is an AngularJS service that simplifies the most common GET, POST, DELETE, and UPDATE requests with a minimum amount of client code. It is a perfect fit for any application that uses data from a RESTful API.

AngularJS Batarang #

Debugging and inspecting Angular apps in Chrome

The AngularJS Batarang Chrome extension includes tools and utilities to assist in finding and addressing performance bottlenecks, and visualize and debug applications using AngularJS.

Emmet Re:View #

Easily test responsive layouts

Emmet Re:View is a small Google Chrome extension that finds responsive design breakpoints on your page and creates view for each breakpoint. This allows you to easily debug your code to perfect and create the perfect UI.

WebStorm #

Awesome JavaScript IDE for front end dev

JetBrains WebStorm is a commercial IDE for JavaScript, CSS & HTML. It includes JavaScript plugins (such as for Node.js) as well as provides automatic code completion, on-the-fly code analysis, refactoring support and VCS integration.

Grunt #

JavaScript task runner

Grunt provides an easy way of managing the large number of build tasks required to maintain a sophisticated web application. It also has a vast library of plugins to further extend its functionality.

npm / Bower #

Package managing

Npm is most commonly used for managing Node.js modules, but it works for the front-end too when combined with Browserify and/or $ npm dedupe.

Bower is created solely for the front-end and is optimized with that in mind. The biggest difference is that npm does nested dependency tree (size heavy) while Bower requires a flat dependency tree (puts the burden of dependency resolution on the user).

Server Side Technology the Exceptionless Team Uses

Server TechnologyAs it turns out, building technology and web applications takes a lot of other technology. We were reflecting the other day and decided it would be cool if we did a blog series that went over all the different "stuff" we use to make and maintain Exceptionless.

For the first part in the series, we decided to look at all the server-side products and services. They are listed below, along with a short description of what they are used for. See something you've never used? Check it out! Have something we should try out instead? Let us know by commenting!

The Server Tech #

TeamCity #

Continuous integration and deployment triggering

TeamCity from JetBrains is a popular continuous integration server that supports a variety of different version control systems and build runners.

Octopus Deploy #

Automated deployment

Octopus Deploy works with, not against your build server. This ensures reliable, secure, automated releases of ASP.NET applications and Windows Services into test, staging and production environments, whether they are in the cloud or on-premises. The Octopus Deploy dashboard can tell you quickly which versions of your application are deployed to specific environments. .

ElasticSearch #

Event storage, filtering, stats and search

Elasticsearch is a search server. is a distributed, multitenant-capable full-text search engine with a RESTful web interface and schema-free JSON documents. It has scalable search, real-time search, multi tenancy and can be used to search all kinds of documents.

MongoDB #

Account and billing info storage

MongoDB makes integration of data in certain types of applications easier and faster. It is a cross-platform document-oriented database that is classified as a NoSQL database. It favors JSON-like documents with dynamic schemas over the traditional table-based relational database structure.

Redis #

Caching

Redis is often referred to as a data structure server. Keys can contain strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs. It is open source and licensed under BSD.

Resharper #

Makes Visual Studio awesome!

ReSharper is a productivity tool that makes Microsoft Visual Studio a much better IDE. It includes features such as code inspections, automated code refactorings, blazing fast navigation, and coding assistance.

Postman #

For testing our REST API

Postman allows you to construct simple as well as complex requests quickly. You can save them for later use and analyze the response sent by the API. It dramatically cuts down the time required to test and develop APIs. It can easily scale and be used for your small team, or larger organizations.

Simple Injector #

Dependency Injection

Simple Injector is an easy-to-use Dependency Injection (DI) library for .NET 4+. It supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. It can be easily integrated with popular frameworks such as Web API, MVC, WCF and many others. It also provides a carefully selected set of features in its core library to support many advanced scenarios.

SignalR #

Real time notifications

SignalR is a library for ASP.NET developers that assists with developing real-time web functionality. SignalR allows bi-directional communication between server and client. It allows pushing content to connected clients instantly as it becomes available. SignalR supports Web Sockets, and falls back to other compatible techniques for older browsers easily as well as includes APIs for connection management, grouping connections, and authorization.

AutoMapper #

Easy mapping of data models from one form to another

AutoMapper is a convention-based object-object mapper. It provides useful conventions to take the tedious work out of figuring out how to map type A to type B. As long as you follow a few simple standards, almost zero configuration is needed to map two types.

FluentValidation #

Validating business rules in our data model

A small validation library for .NET, FluentValidation uses an easy-to-use interface and lambda expressions for building validation rules for your business objects quickly and efficiently.

ApprovalTests #

Easy verification of test outputs

ApprovalTests is an open source assertion/verification library to assist with unit testing. It is compatible with many .NET unit testing frameworks such as Nunit, MsTest, Xunit, and MBUni. It can be used for verifying objects that require more than the simplest of asserts.

What Did We Miss? #

We know you've got some cool toys you use on your projects. Spit it out! What other technology should we give a try. We're always looking for the best, fastest, coolest stuff to try out.

Making the Move to Elasticsearch for Exceptionless 2.0

Screenshot 2014-09-03 15.03.16We know you've thought about it when using Exceptionless, and many developers have submitted formal requests. Search.

You need it, and we want to provide it. That's why we've decided to integrate Elasticsearch into 2.0, and it's going to be awesome!

Check out a few of the cool things we're going to be able to do with it, below, and let us know what you think!

What Elasticsearch Brings to the Table #

Simple scaleability #

Moving to Elasticsearch for event and stack storage will enable us to simplify many areas of the system, like stats, and also enable us to easily scale the service as it continues to grow.

Search ALL the things #

The new system will allow users to search by tags, date range, keywords, error type, and more, all while providing full statistics at the same time. This, specifically, has been our most requested feature, and we're glad to finally be able to say it's coming soon!

Faster, too! #

Elasticsearch removes the need for us to do stats incrementing for every type of view that we want to show. This simplifies the system, further increases performance, and improves throughput for the event collector.

Statistics everywhere #

You're not just going to get more accurate stats within Exceptionless, you're going to get them in real time, and we'll be able to display them in multiple time zones, too.

Future-proofing #

Instead of having to think of everything up front while we're building Exceptionless 2.0, Elasticsearch will enable us to provide new insights in the future, something every developer dreams of!

We Hope You're as Stoked as We Are #

Search has been a long time coming for Exceptionless, and we're super excited to be able to provide a robust, thorough, scaleable solution that will cover 99.99% of possible use cases. Hang in there - we're coding it in as fast as we can!

Case Study: Server Expiration Error for Pre-Alpha Game Release

game-postToday we've got a pretty cool case study that comes to us from a game development studio!

We love to see Exceptionless being used by companies with interesting projects and development pipelines, and what's more interesting than gaming, multi-server, and multi-player environments?

These guys also gave us some good feedback, which we'll address.

Check it out!

Project #

This user is working on a pre-alpha game that is, at the time of the feedback, only available to the in-house team. The game environment requires multiple servers that are deployed via script. When an old version of a server comes down and a new one is deployed, there is cleanup that must happen, etc.

"I like your product! I've previously written an exception-reporting system that did the same type of thing as Exceptionless but used a mail-server as the exception repository. Since that system was something I had to leave behind at my last company, I wanted to find a solution for my current company, and after comparing alternatives liked what your team had built, so that's what we're using now."

How Exceptionless Helped #

Because the game had such limited players, servers, and testing, it's tough to catch all the little bugs. Fortunately, Exceptionless was able to catch a potentially huge bug that would cause old versions of the servers that were still running to crash because of files being deleted by the new server development clean up scripts.

"If an old version was still running it would crash because its data-files got deleted. Since we're still in development mode there aren't enough people playing on our game servers to notice this exception - but we would have when going into alpha or beta test! Fortunately Exceptionless did notice and report this problem."

We think that's pretty awesome, and not just because we're huge nerds!

Feature Requests & Thoughts #

We were lucky enough to get some great feedback from these guys, as well.

Bug Ownership #

"We'd like a feature that allows our developers to claim ownership of bugs so that they're not seen by others in the Dashboard view by default."

With multiple developers on multiple projects, bugs can stack up and things can get messy. John doesn't need to see Billy's bugs from project A when he's working on his own bugs for project B.

We definitely agree here and understand, but there is a fine line between us being an error reporting service and getting into bug tracking type features. We had a previous product that tried to do too much and turned people off so we really wanted to try and keep Exceptionless simple. That being said, we want to make Exceptionless integrate with other apps much more in the future and make it really easy to create new integrations. We're working on this now with Exceptionless 2.0, coming soon!

Multiple Services on Single Server #

"One other thing that was painful for me personally: we run multiple services of the same type on a single server (e.g. multiple instances of "game-server.exe"). In order to ensure that each server has its own queue folder and logfile, I had to write a chunk of custom code."

Again, we totally agree! The client in Exceptionless 2.0 will be MUCH simpler and will make things much easier. You will be able to easily use in-memory storage and be able to plug in different storage implementations.

We Love Feedback! #

If you're a current user, we'd love to hear how you've used Exceptionless to cut down on bugs and build better apps. If you've got any criticisms or feature feedback/requests, keep those coming as well - they help us improve!

Have an awesome day!