Live 360 Takeaways
I attended the Live 360 conference last week. Here are my main takeaways.
A Tour of Visual Studio
Some of this I knew already. Many of the less important keyboard shortcuts are omitted.
- ReSharper. There is a ton of stuff that Visual Studio does now for refactoring. Long story short however, R# still does more. I'm really productive with it. No reason to throw it out just yet.
- I use Resharper key bindings, so some of the shortcut keys he used are different for me!
- You can assign key bindings.
- Press Esc to get rid of the Splash Screen.
- CTRL-Q.
- Search for features. (Try "bookmark")
- Better yet, it shows the keyboard shortcuts.
- No more hunting for windows.
- Workflow tip. Try unpinning docked windows to see more code!
- There are a myriad of ways to customize VS:
- Settings roam with you via a login.
- Can export settings.
- You can have multiple start up projects: Solution > Properties
- SHIT-F10 is context click.
- Live Share exists. So does Teams.
- CTRL-SHIFT-V = Clipboard ring.
- Intellicode uses machine learning to put a star next to things you may want to do in IntelliSense.
- I have Many, Many other shortcuts written down if you want a list.
- You can create your own Refactorings. (A lot of work. Easy to get slightly wrong)
- Testing - run tests in parallel, sort by duration. Coverlet?
- Other stuff. Some of it is Enterprise only:
- Performance Analyzer
- Debug -> profiler
- Analyzers
- Extensions
Programming Smart Contracts in C#
This was about block-chain. It was complicated and it blew my mind. This seemed like a product marketing for Neo. I don't see a space for using block-chain storage.
(thought: Visual Studio Code usage is soaring, Visual Studio is lagging)
What's New in .NET Core 3.0
- Winforms and WPF runs on it! (Only on Windows. The design tools are not ported yet)
- New single file EXE deployment. LARGE file. Takes a while to run first time, but is snappy after that.
- gRPC project template.
- C# 8.0 has await foreach! This is actually helpful. I have been doing Select and then await Task.WhenAll(tasks).
- Has Blazor Server Side and Blazor WebAssembly. They are 2 different things!
- The latter is the real deal and is releasing May 2020.
- Requires javascript interops right now (wrappers).
- Everything is a component.
- .NET Core 3.1 is getting LTS Long Term Support.
- Soon they will drop the name "Core" which I think will be super confusing. Oh well!
- There are very few reasons to use .NET Framework anymore.
Dev Ops
They were pushing Azure pretty hard.
Azure DevOp Services DOES IT ALL. vs. Atlassian?
Blazing the Web
- Blazor WebAssembly (Client side)
- Requires .NET Core 3.1 Preview
- Type limitations: int, int64, float, float64.
- No DOM, no threads, requires JS interop (wrapper), No native JS operations - Geo Location as an example.
Graph API
I keep hearing about this, but have had no interaction with it yet.
One API to rule them all.
One API to rule them all.
Can use Microsoft.Identity.Client package to get a token (MSAL). You can also do it manually if you want.
Uses bearer token.
Make request for permission via scopes.
There are many authentication flows.
Use Graph Explorer. Like Postman. You can get C# snippets if you use the preview version!
Use Microsoft.graph package to get Fluid API.
Uses bearer token.
Make request for permission via scopes.
There are many authentication flows.
Use Graph Explorer. Like Postman. You can get C# snippets if you use the preview version!
Use Microsoft.graph package to get Fluid API.
Power Automate
Formerly "Flow". Formerly Logic Apps?
Drag and drop programming.
A lot of canned actions.
Can also call APIs.
Example.
Drag and drop programming.
A lot of canned actions.
Can also call APIs.
Example.
Typescript - Advanced
- Transpiled to JS
- All JS is valid TS, but that does not mean you should!
- You can do a lot of crazy things with classes and interfaces: Unions, Merges, etc.
- Language concepts are rapidly being added: For ... of, for ... in, Map, Set, Generators
- Most of this stuff was "too" advanced.
Identity Server
- Poor guy struggled with the projector for a while - I aborted.
- Simple [Authorize]
- Role [Authorize(Role="Role")]
- Claims
- Policy - complex logic
- There are tons of Scaffolding options. Scaffold, then customize.
Dev && UX
- Happy, Ease, Intuitive, Accessibility
- Frustration, confusion, disappointment, distraction = UX Debt
- UX != Style, Graphic design
- Function > Style
- Tree test. This was a cool tool she used to have us find a topic in the navigation and analyze the results. I can't find the link to it.
- A lot of companies say customer satisfaction is their top priority, but they do not measure it!
Web Performance
Amazon and Walmart did an experiment with performance. They purposely slowed their pages by 100ms. There was a loss of 1% in sales. If you need to improve performance in an app, translate the ROI into dollars. Make sure your marketing department understands the benefits and work with them.
- Http
- For HTTP 1.1, make fewer requests. (4 connections max)
- For HTTP 2.0, this is an anti-pattern. (Multiplexing 1 TCP connection)
- Send as little as possible
- Use Fiddler
- Metrics:
- First Byte (server response time)
- Speed Index
- Time to Interactive
- Onload
- Fully loaded
- Real User Monitoring (RUM) - capturing all user interactions. W3C Navigation Timing. W3C Resource Timing.
- Steps:
- Header Compression = 50% less bandwidth.
- IIS Compression - CS, JS, HTML, not images
- Content Expiration (cache). Rename, hash or build custom code to bust cache.
- CDN. Bandwidth vs. Latency (distance). Latency is king. Use your own CDN and give fallbacks.
- Bundling and Minification. In HTTP 2.0 we don't need to bundle anymore and don't minify your html.
- Images. Avoid them! USe CSS3 if you can. Use SVG if you can.
- Use JPEG for photos
- Use PNG for all else
- Use srcset, <picture> not <img>
- Use Client Hints (new)
- Use Progressive JPEG - lower res renders first.
- Lazy load images below the fold.
- Deffered loading. (Like for ads)
- Async JS. Use Async keyword. Use deffered if order matters.
- Resource hints.
- "Preconnect" gets the HTTP request read ahead of time.
- Prerender
- Image names are case sensitive. Use consistent naming make sure you are using the cache.
- JS at the top now.
- Webpagetest.org => Speed index. Visible page above the fold.
- Google Test My Site. (See PDF in my email)
Next Breakthrough Dev Platform
Low-code development. App development is expensive!
Targeting multiple execution environments.
- Flutter, Uno, Kony, Power Apps, Zoho, Blazor
UX in a Day
Random Thoughts
Stuff that came up in conversations
- CSLA
- gRPC
- T4
- Flow is now Power Automate
- I talked to a dude who may a web form, mobile app, etc. in a month with Power Automate. Very powerful for less complicated workflows/apps.
- I want to learn more about Jasmine and Selenium for client side testing.
Comments
Post a Comment