Although Edge is using the Chrome developer tools now, I’d like to think that the progress we made on the IE developer tools helped spur some innovation on the Chrome side as well. Chrome added a CPU graph, frames, etc. as well (the tools are now substantially more advanced :).
These same controls, layout, etc. were also used for the .NET UI responsiveness tooling. 6/ fin
1.1.2023 21:54Although Edge is using the Chrome developer tools now, I’d like to think that the progress we made on the IE developer tools helped spur...Eventually, the tool matured into the IE10/11 and early Edge (before Chromium integration) tool used for performance analysis, and looks like this: 5/
1.1.2023 21:53Eventually, the tool matured into the IE10/11 and early Edge (before Chromium integration) tool used for performance analysis, and looks...The following sprint saw much better integration between the CPU graph and timeline, enabling range selection, zooming in/out, life cycle events, user generated events, etc. At this point, the tool actually became useful for the app writers :) 4/
1.1.2023 21:53The following sprint saw much better integration between the CPU graph and timeline, enabling range selection, zooming in/out, life cycle...In the next sprint we enabled dynamic collection of data and added the initial CPU graph. 3/
1.1.2023 21:52In the next sprint we enabled dynamic collection of data and added the initial CPU graph. 3/The first iteration was focused on building out reusable controls and on reading and analyzing ETL files via script. The UI that we actually integrated in VS during that time was extremely minimal and allowed us to see the data processing and event layout: 2/
1.1.2023 21:52The first iteration was focused on building out reusable controls and on reading and analyzing ETL files via script. The UI that we actually...🧵It's fun to look back at how things evolve. In 2012, my team was working on creating a UI responsiveness tool for IE and Visual Studio (for Windows Store apps written using JavaScript). This was at a time when many of the default Windows applications were written using JS and we didn't have good tools for the Window's team to analyze performance problems. It took us a few sprints to get the data collection, analysis, and UI to be useful.
1.1.2023 21:51🧵It's fun to look back at how things evolve. In 2012, my team was working on creating a UI responsiveness tool for IE and Visual...In this case the CEE_LEAVE instruction (leave.s <LINE_NUMBER>) doesn't have an associated source line, so the debugger shows source information of the lexically previous instruction that had source associated with it.
9/ (end)
31.12.2022 06:47In this case the CEE_LEAVE instruction (leave.s <LINE_NUMBER>) doesn't have an associated source line, so the debugger shows...that it causes (and the risk of losing confidence in the debugger).
In case folks are curious, or perhaps remember experiencing this, a basic repro looked like this:
try
{
Console.WriteLine("In try");
}
catch(Exception e)
{
Console.WriteLine("In catch");
}
finally
{
Console.WriteLine("In finally");
}
If you were stopped on C.W("In try") and then stepped over, the debugger would show your IP on C.W("In catch").
8/
31.12.2022 06:47that it causes (and the risk of losing confidence in the debugger).In case folks are curious, or perhaps remember experiencing this, a basic...including: queries that tracked when a bug had many duplicates, writing better rationale in the bug for the postponement so others resolving as duplicate would realize when issues should be re-raised, spending more time on issues that were contentious and assigning them out for detailed analysis even if we don't plan to address them so we have a full understanding, and treating stepping behavior similarly to bad code-gen given the extreme confusion
7/
31.12.2022 06:46including: queries that tracked when a bug had many duplicates, writing better rationale in the bug for the postponement so others resolving...However, because we had postponed the original issue, other people who were trying to be helpful, just resolved those issues as duplicates of the postponed bug. I do not remember the total number of bugs entered, but it was dozens before one finally made it back to triage and we examined the original bug again. At this point, it was too late to fix it in the VS 2002 release, and we had to fix it in the follow up service pack. I learned a lot about better methods of triaging from that issue
6/
31.12.2022 06:46However, because we had postponed the original issue, other people who were trying to be helpful, just resolved those issues as duplicates...We decided that the likelihood of that specific code was extremely unlikely so we could fix it in the next release or a service pack if needed.
Unfortunately, the cases in which this stepping problem occurred were many and varied. This information wasn't in the bug obviously, as the tester had reasonably entered it based on their initial findings. Many other bugs were entered over time that demonstrated the severity of the issue.
5/
31.12.2022 06:45We decided that the likelihood of that specific code was extremely unlikely so we could fix it in the next release or a service pack if...uring triage, we realized that there was no codegen problem, but rather, in this very specific case the emitted PDB (debugger symbols) didn't correctly mark some of the generated code as 'step-through'. PDBs contain a special moniker 0xFEEFEE to indicate that the associated instruction has no line number associated with it, and it should implicitly 'step-over' that instruction.
4/
31.12.2022 06:44uring triage, we realized that there was no codegen problem, but rather, in this very specific case the emitted PDB (debugger symbols)...It is similar to most bug tracking systems though substantially less scalable and configurable then something like Azure DevOps work items.
The biggest mistake I remember making on a bug at that time was resolving an issue with stepping as postponed. The original bug was entered by a tester who thought there was bad codegen happening in a somewhat obscure case with try/catch/finally.
3/
31.12.2022 06:43It is similar to most bug tracking systems though substantially less scalable and configurable then something like Azure DevOps work...Microsoft had a system for entering and tracking bugs, though I cannot remember if we were using Product Studio at that point or if it was still RAID. Regardless, they were similar in that they allowed resolving issues as 'postponed' if we decided we would address it in a future release. Additionally, there was a resolution of 'duplicate' which indicated that another issue was the same. Those bugs would then be linked.
2/
31.12.2022 06:42Microsoft had a system for entering and tracking bugs, though I cannot remember if we were using Product Studio at that point or if it was...🧵Early in my career at Microsoft I was a PM on the C# compiler and language. Along with the QA and Dev lead we would regularly triage through bugs and decide when and whether they would be addressed. This was at a time when we'd spent the last 3 and 1/2 years working on VS 2002, .NET 1.0, C# 1.0, etc. We were approaching our release and so our triage bar for fixing issues was very high, particularly in the compiler, as we tend to stabilize platform components earlier than leaf components.
1/
31.12.2022 06:41🧵Early in my career at Microsoft I was a PM on the C# compiler and language. Along with the QA and Dev lead we would regularly triage...Sigh, another platform for which I don't know how to do threads correctly. Maybe I just need to learn to write concisely?
Any tips are appreciated. Do I reply and mark unlisted? Should I indicate it's a thread at the beginning or end? If it's more than 2 posts, do I reply to the first post multiple times, or reply to each subsequent post?
28.12.2022 06:18Sigh, another platform for which I don't know how to do threads correctly. Maybe I just need to learn to write concisely? Any tips are...I spent this afternoon rehydrating that project. This is a gif of what I presented as 'my summer project'. There was sound as well; specifically, a roar once the animation hit that point. It went over well and afterwards I had several interns come up to learn more about C# and how they could get started with it. It was a fun experience, though I was probably more nervous for that presentation then for any other during that summer. 3/
28.12.2022 06:16I spent this afternoon rehydrating that project. This is a gif of what I presented as 'my summer project'. There was sound as well;...I remain unclear as to whether this was because he thought it was a great opportunity or he just didn't want to do it himself :) Regardless, I ended up being the only intern to give one of these talks that summer.
I've mentioned before that part of my intern project for the PDC was a Quake model viewer in C#. I wanted to talk about that as the climax of my presentation, to demonstrate the power, speed, and interoperability of .NET. I thought it'd be fun to do the reveal in a 'subtle' way. 2/
28.12.2022 06:14I remain unclear as to whether this was because he thought it was a great opportunity or he just didn't want to do it himself :)...🧵When I was at MS in 2000, there were often 'tech talks' given to interns by teams across the company. You could learn about all kinds of cool upcoming tech. For example, this was the first place I saw an Xbox (and the presentation was awesome!). These were generally given by program managers in those organizations. My manager convinced me I ought to give a tech talk to all the other interns about C#.
1/
28.12.2022 06:13🧵When I was at MS in 2000, there were often 'tech talks' given to interns by teams across the company. You could learn about all...I've been watching Crash Course content on Curiosity Stream recently. I went through the mythology content, and now I'm watching the game content. I love random facts and one that struck me earlier today where it was mentioned that Ms. Pac-Man was the first (or at least, nearly the first) female protagonist in a video game.
27.12.2022 08:18I've been watching Crash Course content on Curiosity Stream recently. I went through the mythology content, and now I'm watching the...