Bug tracking. Two words that you’ll never be able to escape as a developer. Our goal as developers is to always create a high quality product with pristine code, but let’s face it, nobody’s perfect and accidents happen. Bugs are going to pop up no matter how hard we work or how much we plan ahead. They’re an inevitable part of the job and the more complex your project becomes, the more likely unexpected bugs are to start popping up.
You can try and track these little annoyances manually, like some kind of an animal, or use a bug tracking software to significantly speed up the process and provide a log of what happened and where to prevent future iterations of the same issue.
At its core, bug tracking is when a developer tracks, logs, and resolves a bug or issue that caused their software to not perform as intended. This could be as simple as a missing semicolon or trailing slash or as complicated as a vulnerability in your back end.
In the old days of yesteryear, there weren’t any (good) bug tracking software platforms so developer had to exhaustively QA test their code before publishing and even then, they couldn’t catch everything. Bugs sometimes went to production undetected and they relied on users to report issues so they could investigate them manually later. As you can imagine, this was an incredibly time consuming and tedious process that ate up far too much time and resources that could have been spent developing the next great feature to propel sales.
At the risk of sounding pretentious, Kurt Vonnegut said that "Everyone wants to build and nobody wants to do maintenance." Whether we like it or not, we can’t always build the next big feature or streamline the functionality of our platform. Sometimes we have to hunt down elusive bugs and do maintenance to keep our code clean and keep a solid foundation so we can keep building.
Ignoring or intentionally leaving bugs to multiply in the code can damage your company’s reputation (and revenue) if one of these errors affects your customers’ ability to do their job or compromises their information. It will save everyone involved a ton of time, money, and headache if you simply implement a bug tracking software from the get go. Your code will stay clean and you’ll stop losing users, leads, and customers. It’s a win / win for everyone.
ASP.NET is a coding model used to build enterprise class applications with minimal coding. This not only cuts down on the amount of man hours necessary to complete your project, but also simplifies running and maintaining said application due to its (relative) simplicity. If you’re new to the ASP.NET platform, do not be surprised if it’s not the easiest thing to pick up, but once you do, you’ll understand why it’s one of the most popular development platforms out there. (There are a ton of tutorials & learning environments if you’re looking to learn the platform.)
Just because ASP.NET is a simplified coding platform doesn’t mean that you won’t have bugs. If anything, it can make them a bit tougher to find, but that’s where having an integrated bug tracking suite comes into play.
Our bug tracking software suite helps development teams find, record, and categorize bugs and errors in real time for your ASP.NET websites, applications, and services. It organizes information in an intuitive and easy to digest dashboard to help your platform become exceptionless.
Bugs can happen anywhere at anytime and if you aren’t watching, they can go unnoticed for months, sometimes years. Our bug tracking software runs in the background of your ASP.net platform 24/7/365 so if something happens, we have a full report with the data you need to craft surgical solution with ease
Once a bug has been discovered and tracked, there’s no need to attempt to replicate the issue. A detailed report is automatically created that intelligently organizes important information to help resolve the bug.
Curious about what else is captured in our reports? Check out the full write up on our detailed error reports.
For ease of browsing, our platforms groups errors together based on a variety of criteria, i.e. date, type, platform, browser, etc. to help you drill down and pinpoint the cause of bugs in your application. It also keeps a full history of the exception even after it’s been resolved in case it resurfaces in the future.
You no longer have to worry about your customers letting you know about bugs or checking a dashboard every morning. Simply update your notification settings and get instant emails when an error happens, only when new errors happen, or not at all. You can even flag resolved errors to send emails in the event that regress to their previously broken state.
Bugs are an inescapable part of any ASP.NET application, but they don’t have to be an unmanageable nuisance. Implementing an error tracking solution will help you organize bugs as they occur while providing vital information that will help you pinpoint the cause and quickly resolve them. Keep your development teams updating your application with new features with an ASP.NET bug tracking software.
We've added .NET Standard 2.0 support, which allows you to easily integrate with UWP applications now.
Microsoft.Extensions.Logging support has also been added via the Exceptionless.Extensions.Logging client. Thank you @moogle001 for contributing to this feature!
Thanks to @jamierushton, we now allow null and default values to be serialized, which translates to greater insight into contextual data.
We're now using GitLink to debug packages more easily.
If you are using our hosted service, you do not need to upgrade anything on your end. If you are self hosting Exceptionless and upgrading from version 2 or 3, you should just have to update your NuGet packages. See our upgrade guide for more information.
Since we first introduced Slack integration with the goal of further improving notifications in Exceptionless, we've come back around with updates, a few bug fixes, and wanted to give everyone a quick all-in-one overview of the feature!
Thanks to everyone that has provided feedback, bug reports, and suggestions. If you have any, don't hesitate to submit an issue over on GitHub. We're always looking to improve and would love your input!
Along the way, we have run into incoming webhook issues, some usability/setup workflow updates that needed to be made to make the process more usable, and, among other things, incorrectly created action URLs that weren't being handled correctly with rate limiting.
Then, click on "Add Slack Notifications" and log in to your slack team.
Once logged in, you will need to select the channel you want Exceptionless Notifications to post to and click Authorize.
Once authorized, you can then configure the different notification settings by going back to the Exceptionless app and into the project's integrations tab again.
Once integrated and configured, notifications will look something like the below screenshot, with the message, type of event, stack trace, links to actions, etc.
We're excited to keep improving notifications, and would love for you guys to continue testing and providing feedback! What else would you like to see happening with notifications? What are we doing right, and wrong?
Integrations with other chat & productivity tools like HipChat and Microsoft Teams are on our list, as well, so if you use these please ping us and let us know so we can gauge interest!
Recently, we released Exceptionless.JavaScript 1.5. The major update for the release was the addition of universal JavaScript (React Universal) support! More details below. The key is that we can now run in server side node apps, or in the browser, with a single script and do the right thing!
TL;DR: Isomorphism is the functional aspect of seamlessly switching between client- and server-side rendering without losing state. Universal is a term used to emphasize the fact that a particular piece of JavaScript code is able to run in multiple environments. - Gert Hengeveld, Isomorphism vs Universal JavaScript
We have gotten lots of requests for Universal JavaScript support. What this means is that you can use a library in the browser or server without any changes from the end user. This is great because you can just consume the library and just know it will work using the same API service no matter where you want to use it. The main con of using a universal client is the increased payload size as you know have to send node support to the browser as well.
We implemented universal JavaScript support by bundling both the browser and node scripts together. But it wasn't as easy as concatenating the files together. We had to refactor the node and browser entry points so that they would automatically run, while ensuring that the initialization of environment specific code (storage, network, etc.) only ran when specific environment conditions were met. This is pretty easy to do with an IIFE function and a quick if check as shown here. Next, we needed to provide a new entry point that imported both of the entry points which ensures that browser and node entry points run.
This update adds support for universal apps, and a React Universal sample that shows the exact changes that were required to get everything working and setup can be found here. The pull request for universal support can be found here.
To target it, you just need to reference the universal script (exceptionless.universal.js), this will happen automatically if you install via browserfiy or webpack.
Blake's been busy lately, including some work on one of our other projects, CodeSmith Generator, to update Exceptionless to the latest version. Naturally, this got him thinking about other potential improvements while we were doing work on Serilog Sink for Exceptionless and Foundatio.Redis, as well.
While updating our WPF application, CodeSmith Generator, to the latest version of Exceptionless, Blake brainstorms several improvements that could be made to help take advantage of plugins, isolate Exceptionless from other plugins, etc.
We have been tweaking the recent Slack integration over the past month or so, and this week we noticed that action URLs being created incorrectly and failures weren't being handle correctly with rate limiting. So, those two issues have been tweaked and should be working much better now.
As you guys know, we've been working on notification improvements lately. This latest video update by Blake is no different and involves Slack integration!
If you're not familiar with Slack, definitely check it out. It's a great app for communicating with your team, and much more. For Exceptionless, it's been something we've wanted to integrate closely with for a while now, because email can be very tedious and overwhelming. With Slack integration, you can set up a specific channel for your Exceptionless notifications to go to, and have an organized eye on your events.
Watch the video above for an explanation of the integration, and see below on how to set it up for yourself.
First, go into your project's settings in the Exceptionless app and click on the Integrations tab.
(/assets/img/news/exceptionless-slack-setup.png)
Then, click on "Add Slack Notifications" and log in to your slack team.
Once logged in, you will need to select the channel you want Exceptionless Notifications to post to and click Authorize.
Once authorized, you can then configure the different notification settings by going back to the Exceptionless app and into the project's integrations tab again.
(/assets/exceptionless-slack-settings.png)
Once integrated and configured, notifications will look something like the below screenshot, with the message, type of event, stack trace, links to actions, etc.
(/assets/exceptionless-slack-example.jpg)
We're excited to keep improving notifications, and would love for you guys to test this out for us.
Integrations with other chat & productivity tools like HipChat and Microsoft Teams are on our list, as well, so if you use these please ping us and let us know so we can gauge interest!
Recently, we made several improvements to our email notifications, adding additional details, improving rendering, and more. Blake has mentioned it in a few of his weekly update videos, but today we wanted to walk you through it and add a few more details, with examples. Check it out!
We decided to use Zurb's Foundation for Emails to help us create emails that look great on all email clients. The reason we went with Zurb is because it has clean markup that translates to good old (ugly) HTML that just works. It also works great with Handlebars.Net which we use to render the email content.
An example of one of our event notification emails can be found here.
Then, we run a Node.js build task to transform the templates into some pretty crazy html markup that works everywhere. The markup at that link contains the Handlebars.Net syntax.
These templates are stored as embedded resources so we can use them from any environment and render them out with ease! Here is a code example of how we perform that task.
We added JSON-LD support, to the emails to give us rich contextual actions, by starting with this Google Developer tutorial and ended up with the below implementation. It's worth noting that we had to go through their verification process for the actions to be enabled.
We tested the emails in Outlook for Windows and Mac, Paper Cut, Gmail on Safari, and Apple Mail. Then, we used Litmus to test a wide range of clients before publishing and pushing everything live.
We hope our build out here can help other developers, and we would love to hear your feedback, questions, or comments either here on the blog or over on GitHub!