Monthly Archives: June 2013

Glimpse Town Hall #3

Its been a little while, but as promised, we are back again with another Town Hall meeting!

Last meeting was quite successful, hence we are back again and hope to have even more content, 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.

Agenda

  • HUD roundup and future
  • Project management and our focus on openness
  • Welcome to our new Core Contributor
  • Look at what Glimpse could do with Azure
  • What’s happening next, what would people like to see?
  • Question and Answer

The meeting will be Tuesday, July 2nd at 4: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…)

Hope to see you there!

Glimpse NDC talk and video up

Well its the end of another week and this one has been full of fixing bugs and addressing issues. Also, just catching up and taking stock of where we are at and what we are doing next.

In the mean time I would like to leave you with the video of the talk on Glimpse that I did at NDC earlier in the month:

Post

This video is worth watching as I go into the why’s and how’s of the problem space Glimpse is working in and motivations of what is driving our current direction.

Also here are the slides from the talk.

Let us know what you think.

Next up for HUD?

HUD is officially one week old! Since then, the community response has been nothing short of amazing. As hoped, HUD has resonated with developers as something that serves a real need and not just a nice to have. Here is a little taste of the feedback we have been getting:

Absolutely love Glimpse, the new HUD, the sexy new UI… all looking amazing. The reaction you get from web devs who’ve never seen Glimpse is priceless!

Our vision for HUD has always been one of trying to provide you with the information you need, without having to go look for it. Its designed to help answer the question of “that seemed slower than usual, why?” or “what action/view did that hit again?” or even “wow, thats a lot of queries that run on this page, do I have an N+1 query?”.

What’s next
In order to take HUD to the next level we are looking to get your feedback on what is needed/missing. We want to know if people feel we have our priorities straight, and make sure that we continue to provide what you need. Here is a taste of what we have been thinking:

  • Extensibility
    Provide a means by which you or framework authors can add data to HUD.
  • Alerting
    Ability to set thresholds on the various data points to have those values flagged when the thresholds are crossed.
  • Notifications
    Ad hoc logic which facilitates developers being able to send notifications back to HUD (i.e. when Web Optimizations fails).
  • Linking
    Links between data points in HUD and their counterparts in full Glimpse.
  • Configuration
    Ability to pick and choose which data points you want to see in the bar view of HUD (also choose things like sizes, etc).
  • History
    Put the spark graph into the popup which shows historical trends. When the users to mouses over the points, all the data in HUD switch to reflect the values of that historical request.
  • Ajax details
    Ability to see the HUD details for any ajax request that occurs (i.e. mouse over ajax request and see HUD update itself to reflect the data for that request).
  • More interesting data
    Imagine being able to view payload sizes (pre/post gzipping), or Indicate number of DOM inserts as they happen in real time, or any other possible data points.

Besides the above, we know we have a few things we also need to sort out:

  • Popup Design
    We need to work out a way of creating more space in the popups – particularly Host section when you have no SQL data.
  • Section Design
    Facilitate being able to minimize section more easily, more surface area to select.

Your voice
We would love to hear from you about where you think we should go next. I’ve put in a survey at the bottom of this post to try and gather some initial feelings from the community. Our intent is to try and more fast on the feedback and continue to provide you with an experience that you have come expect from Glimpse.

Want to help
If you would like to be a part of the discussion or even help tribute to and guide the direction of HUD into the future, please get involved in the discussion on the mailing list. Glimpse wouldn’t be possible without the help we have had from the community and this only becomes more true as the project aims higher.

Thanks again for everyones feedback!

Glimpse 1.4.2 released

Since going live with 1.4.0, the feedback has been amazing. We have heard from many different people that the way in which HUD represents the data really resonates with what people are after and servers a general need – rather than just the cool factor.

This release is a service update to fix some edge cases that people have come across. This release sees updates to following packages:

  • Glimpse.Core – Lightweight release 1.4.2
    • Bug fix on the back end to prevent ajax results that return Json causing errors
    • Bug fix in the client which prevents a possible race condition from occurring between when HUD can detect Ajax requests and when it can display them
    • Minor fix to client to prevent host event data from overflowing in some cases
    • Minor optimization improvement in the client to prevent it from calling out when either the ajax/history tab is selected and the client is closed
  • Glimpse.MVC* – Lightweight release 1.3.2
    • Minor fix to client to only render Action/View timings if that information is available

In terms of pull requests, I have to say a big thanks to:

And for the great issue reports, I want to thank:

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

Let us know if you have any thoughts or comments and I hope you enjoy this release.

Glimpse 1.4.1 Released

This release is a very small release and just fixing up a couple of issues we came across after releasing 1.4.0.

The main issue in this release is the fact that within the MVC package, async controller action events were being classified as Filter events rather than Controller events. This was causing the HUD client to throw an exception when this case occurred.

To get this fix you will need to update to Glimpse.Core 1.4.1 and Glimpse.MvcX 1.3.1.

Just want to say a quick thanks to:

Thanks for helping us make Glimpse even better!

Glimpse Heads-Up Display released

The Glimpse team, in conjunction with many members of the community, is proud to announce Glimpse Heads-Up Display (HUD) – a mini dashboard that pulls out the most important details about a request and displays it right in the bottom of your page. This release signals the biggest change to Glimpse since going live just over 2 years ago. We are very excited about this release and hope that it will help change the way you do development.

HUD Overview

Overview

Traditionally, when you are working on a project, you don’t notice problems in your system until you have finished development and moved onto another task. Additionally, it has been a challenge to know that what you have just developed is acting the way you expect it to operate – i.e. which action and controller did I just hit? HUD changes this. HUD provides you with the information you need, all time time, without the need for you to go and seek it. HUD is the notification center for your application’s pulse and shows you what is happening as its is happening.

HUD Detail

History

HUD was originally conceived around a month after Glimpse originally went live (around 2 years ago). Since then most of the work we have done has been focused on trying to get the formula right and access to the data we need. A working prototype of what we have here was up and running over 6 months ago, but we took our time refining it, in line with the feedback we’ve been getting.

v0.1 Concept
middlehud

v0.5 Refinement
oldHUD

v1.0 Final
HUD Final Version

We always knew that a first impressions where key. We have tried very hard to create a vision of simplicity, where the UI gets out of the way and the key data points stand out. We also spent time trying to work out what data is the most important, and what data you want to follow you from page to page. HUD is designed for the always-on use case.

Breakdown

HUD is broken down into 3 main sections. This is designed to try and follow the flow of how your request is handled during its lifecycle.

HTTP HOST AJAX
Ajax Preview Host Preview HTTP Preview

HTTP

This is everything to do with the request. Here we break it down into a few key points:
HUD HTTP

  • Request: Total request time from click to DOM ready
  • Wire: Total time on the network – including DNS lookup, sending of request, receiving response.
  • Server: Total time on the server
  • Client: Total time once client kicks in to dom ready

 
Beyond this, the popup provides a few additional pieces of of information:

HUD HTTP Popup

  • Graph: Shows the relative time that each part of the request takes
  • Host: Server that responded to the request.
  • Server: Principle that is currently logged in for this session

HOST

Once the request hits the server, the Host section shows the key points. This aims to merge the most important data points on the server in a meaningful, related way. The best example of this is the contextual linking of SQL queries to the actions that caused these events to occur. The breakdown is:
HUD Host

  • Action: How long root Action took to execute
  • View: How long root View took to render
  • Controller/Action: Name of the root Controller and Action
  • DB Queries: Total query duration and number of all SQL queries

 
Beyond this, the popup provides a few additional pieces of of information:

HUD Host Popup

  • Server: Total time on the server
  • DB Connections: Total query duration and number of all SQL queries

Above and beyond this, we show a listing of the core events that occur on the server:

  • Category: The type of event that was recorded
  • Description: Generally the name of the event i.e. Controller and action that caused the event
  • Duration: Total time the event took to execute, less the time of any direction child events shown
  • From start: How far into the request did the event occur
      In this listing we also show any SQL queries that belong to a given event and the ability to show any trivial events that occur.

AJAX

Lastly, is the AJAX section, which shows high-level details of any requests that your page makes. Without opening any other tool, you will instantly know when a request is made. You will also know if any errors occurred in processing the request. This is the breakdown:
HUD Ajax

  • Count: Total Ajax requests detected on this page
  • Details: Last 2 requests that have occurred

 
In addition to this, the popup shows the last
6
requests to have occurred as well as a few additional pieces of of information:
HUD Ajax Popup

  • URI: URI that the request used to make the request
  • Duration: Time from when the request left the browser to when the response was received
  • Size: Response payload size
  • Method: Type that the request made
  • Status: Status code that the response object has*
  • Content Type: Type that was received
  • Time: Time that the request was made
      *Note, in some caching scenarios, the browser passes a 200 response to the JS object even though the browser received a 304 from the browser.

Future

Despite everything you have seen here there is more to come. We are keen to see what you think of the new dynamic and where you want to take it. We want to know what you think and what data you find most valuable. We also want to start experimenting with bringing data from other data sources into Glimpse. If its proved that HUD is a mechanism by which we can easily consume important data, there is no reason the data has to be restricted to what Glimpse gathers on the server.

Additionally, we believe it’s important moving forwards to provide alerts when your application reaches different thresholds or conditions. Imagine you can set when a maximum number of queries is crossed, or be notified when cache misses occur.

Best place to give feedback is to either directly to myself @anthony_vdh or @nikmd23, or on our issues list.

We believe a whole new world of possibilities is opened with the arrival of HUD, and we will need your help in getting us there.

But wait there is more

Above and beyond everything here, wider Glimpse has had a facelift. We thought it was about time and that you might appreciate a bit of sexy being introduced. Welcome to the new Glimpse 😀

UI Preview Environment

I’m sure you’ve already noticed that we have tried to simplify the overall visuals. Most notably we have removing rounded corners and gradients, and simplified the color pallet. Over time expect some usability changes to come as we continually seek to improve the experience that you have.

Here a few more samples of what to expect:

Execution

SQL

Timeline

Where to get it

As always the best way to get Glimpse is via Nuget. Depending on your needs, here are the links to the various core packages:

Thanks!

This release wouldn’t have been possible without the help and support of the community. Every day we get to work on Glimpse, a dream for us, and it’s your continued support that helps make this happen. Additionally I want to say a huge thanks to Red Gate in believing in our vision and helping us bring this see the light of day.

Enjoy!