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.
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…)
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?”.
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.
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.
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:
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.
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.
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 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.
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.
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.
This is everything to do with the request. Here we break it down into a few key points:
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:
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
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:
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:
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.
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:
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:
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.
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.
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 😀
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:
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:
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.