the open source diagnostics platform of the web

Category Archives: Announcements

Isn’t it amazing that these days we have the luxury of time to have a release where all we do is fix issues and take great pull requests. It turns out that this is one of those times with the release of 1.3.1.

This release sees updates to following packages:

Glimpse.Core – Welterweight release

Majorish fix that addresses the new Glimpse.axd page telling you that a new update is available even though you just updated

Majorish update which switches cache busting control from client with query string to the server using the correct headers

Majorish fix for users getting duplicate resource error message

Minor fix where popup window not resizing viewable area for timeline

Minor update to allow FileResource to be used outside of Glimpse.Core

Minor fix for NuGetAttribute which ignores constructor arguments

Minor fix for multi-threaded tracing regression

Glimpse.AspNet – Flyweight release

Minorish update to Session Tab to support for objects which override the ToString method

Well its that time again and we have another Glimpse release out the door. Since releasing v1.0, we have managed to drop a fairly major feature release every 13.5 days. At some point we will have to take a break, but with all the support we have been getting, I don’t see us slowing down anytime soon.

Package versions
For those with a keen eye, you might have noticed that not every package reved to 1.3.0. Traditionally, it has worked out that all the Glimpse packages have had similar changes which has resulted in the version numbers jumping in step. But from today onwards, it looks like they will be destined to be different.

New glimpse.axd page
With this release we decided to totally overhaul the glimpse.axd page we have all come to love and adore. But progress demands that we move with the times and we thought that the page deserved much more love that we have given it since going live with v1.

For those who don’t remember what we had before I’ve taken the liberty of including some screen shots and highlighting some problems that stuck out – bonus points if you can spot the problems:

Moving quickly on, I would like to introduce the future Glimpse.axd page – note, you might spot that it’s feeling very proud of itself:

Besides a total UI overhaul, keep an eye out for the following changes:

Tell the users in big letters when the cookie is on/off.

Notify users when Glimpse detects a newer updates available.

Tell users exactly what tabs/inspectors/resources/etc are registered.

Notify users when duplicated resources are registered.

Here are some screen shots to keep an eye out for:

Glimpse now try’s to tell you loud and clear whether its on or off

Not only do we show you what tabs and policies Glimpse has found, we we try and make sure people know that Glimpse will only work locally by default

Glimpse now shows you all the configuration information it has (note this is probably most useful for those creating extensions, hence why its toggle hidden by default)

If you have any feedback or ideas on the above, please let us know.

N+1 detection for ADO queries
This was a feature that we dropped from the initial ADO/EF release but felt strongly should be there. Most of the work in this release has gone into the backend detection of N+1 events, so you will have to forgive us if you agree the UI needs a bit more work.

Client support rendering arrays of objects
Traditionally when you had list data, you would have had to transform your objects into an array of arrays for Glimpse to display the data as you would expect. This has been updated in this release so that you can return a normal array of objects and have it rendered as you would expect.

For an example of how this works, head over to the protocol test page and have a look at Scenario 28 and 29. We really hope that this will make returning your data even easier.

Other changes to watch for
You might have noticed the readme that opens when you install or update Glimpse. This page exists to try and let people know how to use Glimpse and what changes to keep an eye out for. Previously this page only showed changes that occurred for Glimpse.Core, we have now opened this up so that it will work with any 3rd party Glimpse package that wants to add their release details to the page. Look for a follow up post on how to update your packages for this.

Final words
Well I think that is a wrap. For a full list of changes, issues and commits see below:

Our last meeting was quite successful, so we’re really hoping to continue with that momentum. We’re looking to have even more content (the last Town Hall was a bit of a “party”), and we are working through an agenda now. If there is something you’d like to share, see or hear about, please add a comment to this post.

The meeting will be Tuesday, April 16th at 3:00 PM (UTC-5:00). We’ll be on Google Hangout again, so bring along your microphone and web cam if you can! (Or just text chat with us…)

If you just download the ADO package, but you are running Entity Framework you will have an exception raised. We have tried our best to make this not the case, but this is a limitation enforced on us by Entity Framework. So good rule of thumb, if you are using Entity Framework download the relevant EF package not just the ADO package.

Also, just because you have a Glimpse.MVC package installed doesn’t mean you automatically get these packages. You need to download the Glimpse.EF (or Glimpse.ADO) packages separately.

What we show
From within the plugin you can expect to see:

Connections and how long each connection is opened for

Commands associated with those Connections, number of records affected, how long the command took to execute and any errors that may have occured

Transactions and which commands are associated with those Transactions and end status

Additionally, the connection and command timing information is feed into the timeline, filling previously undefined gaps:

Technical Details
As you might now, most of the EF’s infrastructure ends up leveraging ADO’s DbProviderFactory infrastructure. As such, this is the where we tap in and from this, we get a fair amount for free (this what also happens to be how we get the build of our raw ADO support).

We also tap into the DbConnectionFactory and in Entity Framework 6 we tap IDbProviderFactoryService and DbProviderServices via the new IDbDependencyResolver infrastructure the EF team has provided. With this I believe we catch the majority of use cases.

For those using Entity Framework or using DbProviderFactory already you shouldn’t have to change any of your code.

Important note
If you happen to use EF in you App_Start, EF gets initialized before Glimpse has a chance to set up. In this case, you will need to include the following lines before your first query runs (an example of how this is used can be found here):

Glimpse.Settings.Initialize.Ado();
Glimpse.Settings.Initialize.EF();

We need your help
Obviously it has taken a significant effort to get to this point. But in order to produce this release in a timely fashion we had to drop 2 main features:

N+1 detection, and

Execution context (i.e. indicating to the user where the query was triggered from)

We would love some help getting these features in. The first shouldn’t be that hard to implement, the second, might involve a bit more work.

Additionally, Entity Framework 6 has a bunch more information that would be great to expose:

Conventions

Registered Providers

Model Mappings

Manifest Details

etc

If you are interested in helping out with any of the above, please let us know and we will be more than happy to help – either on the mailing list or via twitter (@anthony_vdh and/or @nikmd23).

Special thanks
Support for Entity Framework and ADO has been a long time coming. An initial prototype for these plugins was written around a year ago, but with everything going on, we never got it to a point where we felt comfortable producing a full release. But since going live with v1 and with some encouragement from K Scott Allen of OdeToCode fame, we have this release. Here is the list of people who helped make this release:

We finally did it! Glimpse 1.0 is out and things are working relatively smoothly. It took a little longer than anticipated, but we are generally pleased and happy with ourselves.

To celebrate, on Tuesday March 12th, at 3:30 PM (UTC-5:00), the Glimpse team is going to be throwing a (slightly late) virtual release party.

What does a virtual release party entail, you may ask? Well, I’ll probably at least buy myself a cupcake. You can do that too, but I find that eating cupcakes alone can be a little sad – so lets do it together.

I’ll tweet out a link to a Google Hangout a few minutes before 3:30 (is there really no way to schedule these things?!?) and we can celebrate together.Thanks to Cecil, I now know how to schedule a Google Hangout and here’s the direct link the the party. Of course, it won’t all be self congratulations and high-fives, we’ll demo new features of Glimpse, answer any questions you may have and discuss what’s on the road map for vNext.

We want this to be the first in a series of monthly town hall meetings which will provide an outlet for plugin authors to demonstrate what they have built, discuss challenges with the Glimpse platform and gather user feedback. We’ll experiment with times and technologies until we find the right fit to include the most number of users.

The Glimpse team is proud to announce that we have shipped Glimpse 1.0. (Stable, RTW, final – call it what you’d like, but it’s certainly good!)

Glimpse 1.0 supports more frameworks and runtimes than any previous version of Glimpse. We’ve fixed a ton of bugs and added many new features since the last beta.

In addition, we’re proud to announce a new website design at getGlimpse.com. We’ve re-built the site to leverage a GitHub repository and Azure Websites to allow for contributions and simplified deployment. This will allow us to add documentation, samples and improved content much more quickly. Keep an eye on the site for changes and please feel free to contribute.

This release follows a successful second release candidate (RC2), and contains few changes, the most notable of which is the rename of IPipelineInspector to IInspector. This change will only affect a small percentage of external plugin authors and has been discussed on the Glimpse developers list.

As usual all four packages (Glimpse, Glimpse.AspNet, Glimpse.Mvc3 and Glimpse.Mvc2) can be downloaded via NuGet.

In addition, we’ll be having a virtual release party/townhall meeting in the near future to show off some of the new features and answer any questions you may have live. We’ll announce more details as soon as they become available.

As usual all four packages (Glimpse, Glimpse.AspNet, Glimpse.Mvc3 and Glimpse.Mvc2) can be downloaded via NuGet. The only thing to remember is that the RC2 packages are “prerelease” packages so be sure to have NuGet configured to allow for that.

Our hope is that RC2 will be short lived and that we will be able to release these packages as our “stable” 1.0 release very soon.

Its now going on a week sense we got the RC release out for v1. So far the response has been extremely positive. Since that time we have been fixing a couple of the bugs and spiking on some new ideas we have had – if you want to see, checkout the branches on github ;). We have also taken the time to step back and reflect on our last release.

As these things go, it was never our intent that the gap between beta and RC would be as long as it was. In an effort to be transparent, this gap has probably slowed down the momentum that we had gained. Some of this was due to Nik and I needing to spend more time with our families, wanting to ensure that we didn’t burn out, international moves and wanting the project to remain fun for us to work on.

Additional, many smart people have questioned the sanity of completely re-architecting your system, but we felt compelled to do so to ensure that project could move forward. Ideally we would have taken a more evolutionary tack here, but being a framework that people build on, as well as a product people use, this made the decision difficult.

The need to do any of this work comes back to the origins of Glimpse and some fundamental decisions we made on day one of the project. The biggest problem we had was the decision to take a dependency on System.Web. Prior to OWIN and self-hosting movement gaining momentum, this would have been a safe decision, but we have had many requests from various interested parties to remove this dependency. Unfortunately, this was not a straight forward task, but by making the change it meant that Glimpse could work in many more situations and be moving in the same direction as the industry trends – we now have the ability to add support for self-hosted WebAPI and frameworks like NancyFX.

Furthermore, the initial development work for Glimpse was done in a period of 5 weeks between the hours of 10pm and 2am in the lead up to Mix11. Even though many of the abstractions have held up over time, given a better eye to where we could go in the future and more time we probably would have made different decisions and taken different routes. Hence abstracting away System.Web represented a great opportunity to set things up moving forward.

In posts to come, we will talk about the various changes on the client and server, and the details of what went into the underlying changes.