Category Archives: Release

Glimpse 1.3 released with a new glimpse.axd page & N+1 detection

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:

As always if you have any thoughts or comments, just let us know and I hope you enjoy this release!

Glimpse 1.2 Released With Support for Entity Framework & ADO

Well, its taken us awhile with everything going on, but we finally have support out for EF and those using “raw” ADO.

New Packages
As usual, to get up and running simply go to Nuget and download the relevant package:

OR if you are just using ADO directly:

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:

More details will be coming out soon and I will show some more interesting usage scenarios. In the meantime thanks for all your help and let us know what you think.

What else in 1.2
Trying to make sure that the rest of the release isn’t overshadowed by EF/ADO, here is the rest of what is in this release:

  • Core: Fixed issue in timeline which affected sub 1 ms events.
  • Core: Fixed trailing comma that causes problems with some browsers/browser modes.
  • Core: Minor refactoring of MessageCategory classes.
  • Core: Minor update to Nuget transform to show how to turn on logging.
  • Core: Minor update to config page to make sure you always get latest logo.
  • ASP.NET: Fixed issue where config tab would fail to show connection string for connection strings with no provider defined.
  • MVC4: Major fix which adjusts the .NET version that Glimpse.MVC4 is running as (previously was .NET 4.5)

For the above, big shout out to the following people for the great bug reports:

For a full list of changes, issues and commits see below:

  1. Issues in this milestone – https://github.com/glimpse/glimpse/issues?milestone=4&state=closed
  2. Individual commits made in this milestone – https://github.com/glimpse/glimpse/compare/1.1.0…1.2.0
  3. Enjoy!

Glimpse 1.1 Released With Support for MVC 4

Since we released Glimpse 1.0 several weeks ago, we’ve been inundated with questions about and requests for full ASP.NET MVC 4 support. We’ve heard your feedback and are happy to announce that as of today, in addition to our Glimpse.Mvc2 and Glimpse.Mvc3 packages, we are shipping a Glimpse.Mvc4 package with full support for Task<T> based async actions and Display Modes.

In addition to support for ASP.NET MVC 4, we’ve also made several small improvements to our ASP.NET and Core packages. You can see the list of everything we’ve done in our GitHub Issue Tracker.

As always, we can’t do this without our users and contributors. Special thanks to those who reported issues:

Note: Glimpse.Mvc4 does not yet support ApiControllers (or WebAPI at all). We simply ignore requests to your web API’s for now.

Bug Fixes: Glimpse 1.0.1

In our effort to update Glimpse at a regular cadence, we have dropped Glimpse 1.0.1 tonight.

This update affects all of our main packages: Glimpse, Glimpse.AspNet, Glimpse.Mvc3 and Glimpse.Mvc2.

You can see the list of fixed bugs in our GitHub Issue Tracker as well as the full list of changes between 1.0.0 and 1.0.1.

Special thanks to those who reported issues:

Glimpse 1.0 Ships!

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.

Please report any issues or suggestions to our GitHub issues tracker.

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.

Glimpse RC2 now available!

The Glimpse team is proud to announce the availability of our second 1.0 release candidate (RC2).

This release incorporates a ton of great feedback we received after the first release candidate, resulting in over 31 bug fixes and improvements to Glimpse.

A few of the highlight changes include:

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.

As usual, please report any issues to our GitHub issues tracker.

Retrospective: Decision to rearchitect

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.

Glimpse 0.86 Released

We know its been a while but we have been busy.

Ironically, we have had this release pretty much ready to go now for over a month. But we have both been busy working on some major work which will get us out of beta and into 1.0. Until that happens thought, this release is ready to go and we have some really cool new features to share!

Timeline Support

This is a huge feature for us and where we spent a significant chunk of time. Basically we had the realization that as a side effect of the inspection we are doing, we had a heap of timing information available to us. The question then was how to best show this timing information.

We tossed and turned on this one for a while, and with a little inspiration from how tools like FireBug solve this problem, we finally settled on having an interactive timeline to show the data.

Additionally, we provide a table view for those who would prefer the data in that fashion.

Lastly, I am happy to announce that along with this we allow you to add your own data to the timeline. This will not only be useful for your own applications, but for plugin authors. Given the way that the Timing API has been added into Glimpse, any plugin can submit data and it will show up in the timeline. Here is an example of what it looks like:

//For duration events
using (GlimpseTimer.Start("Event Name", "Event Category", "Description"))
{
//...
}
//For snapshot events
GlimpseTimer.Moment("Event Name", "Event Category", "Description")

More samples and details will come soon. If anyone has any feedback make sure you let us know.

CALL TO ACTION:

We want to make the information we show as useful as possible. What we are showing in this release is just what we think people are interested in seeing. Hence if you have any ideas, reach out to us or hop on the dev list.

PRG Support

As defined by Wikipedia, PRG is Post/Redirect/Get (PRG) is a common design pattern for web developers to help avoid certain duplicate form submissions and allow user agents to behave more intuitively with bookmarks and the refresh button.”

This is important, as when a PRG occurs, the majority of interesting data (as far as Glimpse is concerned) is associated with the original “post” and hence is missing from the redirected “get” that the developer sees in Glimpse after the PRG.

This was always possible with Glimpse, but the UX experience was not good. Knowing that a PRG had occurred, one would have to go to the Remote tab, find the session and then selected or the appropriate result set.

Now, Glimpse can automatically detect the PRG pattern, and will display the URI as a dropdown allowing you to easily switch contexts between the original POST and the resultant GET.

IP Range Support

We took on a great pull request from rho24 (aka Richard Oliver) which has added the long requested IP Range support for Glimpse. This support has taken the form of CIDR Notation. To enable this within your system, simply add this following to your Glimpse config:

<ipAddresses>
<add address="127.0.0.1" /><!-- OR -->
<add addressRange="127.0.0.1/24" />
</ipAddresses>

In this case, it would allow all IP’s from 127.0.0.0 – 127.0.0.255. Hopefully this will allow for a lot more flexibility when it comes to setting up Glimpse on any remote servers.

New Glimpse.EF Package

Just look at this screen shot, need we say more?

WARNING: This new Glimpse plugin is highly experimental, is not yet complete and currently only supports EF 4.0 and 4.1. This adds support that we have wanted from day 1 but has taken some time to get out the door. We would love it if you would give it a try and let us know if you have any trouble or find any bugs.

You can download and add Glimpse.EF to your project as usual via Nuget.

That’s it!

Wow that seems like a lot! But hopefully it has been worth the wait and we have some more existing stuff coming in the next release. We hope that if all goes well here, our next release will be a Release Candidate build!

You can download Glimpse 0.86 from NuGet.org or CodePlex.com

Thanks again for your support!

Glimpse 0.84 Released

We are pleased to announce the release Glimpse 0.84.

This release includes the following improvements to the core:

  • urlBlacklist validator contributed by hahndorf
  • Support for IP validation when server is behind a proxy/load balancer contributed by rho24
  • Glimpse <script> tags now render inside <body> tags
  • Glimpse no longer uses inline javascript, fixing bugs reported for developers with content security policy enabled in firefox
  • Added exception information to glimpseLog when enabled
  • UI facelift, including update to glimpse icon
  • Static glimpse files are now cached in browser, improving performance (can be disabled via web.config)
  • Fixed NullReferenceException problem on session tab
  • Javascript client performance improvements

In addition we’ve made a change to the MVC3 package:

  • Fixed bug that caused the execution tab to always be disabled

You can download Glimpse 0.84 from NuGet.org or CodePlex.com

 

Glimpse 0.83 Released!

We know its been a long time coming but Glimpse 0.83 is finally up and ready to go.

We have a bunch of fixes and features in this build including the infamous 404 fix and a heap of other changes, some of which are listed below:

  • Switch from /Glimpse/Config to /glimpse.axd, including temporary automatic redirect and warning message
  • Notification on at top of screen when Glimpse is turned on
  • Glimpse/glimpseClient.js has been shifted to /Glimpse.axd?r=client.js to support certain server configurations
  • Glimpse/glimpseSprite has been shifted to /Glimpse.axd?r=sprite.png to support certain server configurations
  • Added a bunch of new fields to the Environment tab and re-arranged the layout
  • Added application/json as a default content type
  • Simple fix for a bug where ajax requests can occur before Glimpse is rendered
  • Shifting placement of expand/collapse data icon in the UI
  • Changed font of text in Glimpse panel to something more readable
  • Made IGlimpsePlugin implementations more testable by replacing HttpApplication with HttpContextBase
  • Introduction of logging – … – used for debugging glimpse
  • Fixed bug with users in non en-Us cultures
  • Fixed issue some users were getting with PowerShell install file
  • Vastly improved Glimpse documentation (with more on the way!), HUGE thanks @hahndorf

To update simply head over to http://nuget.org/List/Packages/Glimpse or http://nuget.org/List/Packages/Glimpse.MVC3.

Also, keep an eye out for the automatic update notifier that we have built into the Glimpse UI that will tell you when an update is available. This was released with Glimpse 0.82 but this will be the first time it is able to be used.

Note, we also are officially providing a copy of the Glimpse dll’s on Codeplex for people not using Nuget – http://glimpse.codeplex.com/.

Please give us feedback and let us know how it goes! Thanks again for all your support.