top of page
Search

[Post Event]: .NET Developer Days, Warsaw, October 2019 – Part II

As I promised, here are the key points of all the presentations I have joined during the conference. Below you can find my notes from all the presentations I joined. I added some extra information for some, but they’re mostly keywords to what I found important. You can search based on these keywords in case you want to learn more about a certain topic. Enjoy.


It’s a great time to be a developer


Opening Keynote: The Intelligent Cloud and Intelligent Edge – Scott Guthrie

  1. Big performance improvements in Visual Studio 2019 => significantly faster than 2017 and previous versions

  2. Namespaces added automagically while typing (when adding references to new classes)

  3. Live unit tests – runs impacted tests in the background while changing code and presents results + code coverage

  4. Indexes (^ operator) => var lastItem = list[^1]; //list[list.Count – 1];

  5. Ranges (.. operator) =>

  6. var slice1 = list[2..^3];// list[Range.Create(2, Index.CreateFromEnd(3))]

  7. var slice2 = list[..^3];// list[Range.ToEnd(Index.CreateFromEnd(3))]

  8. var slice3 = list[2..];// list[Range.FromStart(2)]

  9. var slice4 = list[..];// list[Range.All]

  10. Intellicode = intellisense on steroids => AI powered, improved suggestions, including for parameters

  11. .NET Core 3 – now supports Win Forms and WPF desktop apps

  12. CI/CD with git hub – for cloud infrastructure

  13. Network fail during cloud demo hahaha 🙂

  14. Publish to live server from git hub (via cloud)

  15. Modify code directly in github

  16. Store secrets in git hub without commiting it into sources

  17. gRPC service – improved Remote Procedure Call, alternative to REST. Faster, easier to use, works cross platform and cross (several) programming languages => e.g. call Java code from C#

  18. Ads service reference for grpc to link the 2 services

  19. Azure edge devices from Microsoft

  20. Starbucks, Mercedes, VW, BMW (even on the cars themselves – .NET Core) use Azure.

  21. Physical form recognition translates to json via azure cognitive services (e.g. invoices)

  22. Facial recognition for photos similar with auto tagging on Facebook available through cognitive services

  23. Azure serverless databases

  24. Coca cola vending machines use azure for telemetry and real time data used for optimizations

  25. Simona Cotin (Microsoft) – uses mac and iPhone 🙂

  26. Power BI – magical tool to interact with large data to get insights – e.g. what is causing delays (didn’t quite get too much info on this)

The world runs on software!


Overall impression: even though it was mostly a marketing presentation, I found it really cool and interesting.

Building an Educational Game with .NET Core and Unity3D – Johnny Hooyberghs

I don’t have any key points as it was pretty technical with pre-made code. The presenter explained basic concepts at the beginning (only value I found), then copy/pasted pre-made code into the demo project and debug it to check what was not working. The game was pretty simple, added some robot models on some terrain, make them attach each other with some sort of bombs. At the end the whole terrain was filled with robots.

Please see end slides for source code reference.


Overall impression: not too impressed. The first 10-15 minutes were the most valuable.

Docker and Kubernetes for .NET Developers – Elton Stoneman

Firstly, I have never worked with Docker or Kubernetes but I’ve heard these two buzzwords enough to raise the interest. The presentation was basic, for beginners – exactly what I was looking for.

  1. Docker is very portable

  2. Docker file is a script

  3. Create docker image on a laptop => share it with everyone

  4. From – start from existing image – dependencies

  5. Docker compose – aggregate all docker containers to create environment

  6. Kubernetes runs on top Docker.

  7. Does not manage container. Uses pods, a wrapper over a container.

  8. Replicate set contains collections of pods (can be 1 or more, same server or different servers) for high availability. Deployment of replica set. Can define secrets.

  9. Hybrid setup – Linux and Windows

  10. Same artefacts/configurations (app.yml) for either OS/app

  11. Learn once, apply to anything

This guy was giving some very valuable information but was speaking waaaay too fast. I could barely write some key points and try to get all the things he was saying. He jumped from a big idea to another one very fast, if you lost one idea, you were in the lost.

This guy held a hands on workshop a day before and my guess is that he had the time to go through all the details. I managed to talk with another developer who joined the workshop and luckily, he gave me a link with the slides from the workshop, so here you go dak4.net. Many thanks, dude from Moldova Republic working on firm from Belgium :D.

Check out slide for links and other goodies.


Overall impression: good content, but waaay to fast. I believe the original presentation was longer and was squeezed into the 60 min limit.

Quantum Computing With Microsoft Q# – Johnny Hooberghs

Another buzzword I knew very little about. An ex colleague of mine, Mihai Stancu, explained something at some point to me, but I didn’t know exactly how to work with it and I hoped this was my chance.

  1. It’s all about two main ideas: superposition and entanglement

  2. Superposition – one object can have two states at the same time. The “final” state is determined when you measure (look at it) it.

  3. <joke>Imagine the USB key => you insert it upwards, it doesn’t fit. You insert it downwards, it doesn’t fit. You look at the port and then insert it properly 🙂 </joke>

  4. Entanglement – copy state of another particle

  5. Experiments for proof:

  6. Quantum experiment space scale (https://www.youtube.com/watch?v=4QlcKuxDGrs)

  7. Double slit experiment (https://www.youtube.com/watch?v=DfPeprQ7oGc and https://www.youtube.com/watch?v=GzbKb59my3U) – watch the first one several times for a better understanding

  8. Why quantum computing?

  9. Security

  10. Drug development (simulate quantum system requires a quantum system)

  11. AI

  12. Bits vs quantumbits (qubit)

  13. Qubit in superposition can be 0 and 1 simultaneously

  14. 2 qubit system (4 values)

  15. 3 qubit system (8 values)

  16. Q# – available as an addon for visual studio

  17. Quantum computing for software development

  18. you can run code on IBM’s quantum computer – available for public (queue is pretty big, you can wait for up to 15-20 mins for the code to run)

  19. there are simulators which run way faster

  20. https://www.ibm.com/quantum-computing/


Overall impression: mindfuck :), but very interesting in the same time. Worth it

Spying on .NET with EventPipes on ETW (Event Tracing for Windows) – Christophe Nasarre

This guy talked a lot about frets. Wtf are frets in this context?

These are the only type of frets I know, from a guitar.

Without any disrespect to the presenter, I later deduced that he was referring to threads, not frets (he is french) :).

  1. Two tools: PerfMon and PerfView

  2. Captured traces are machine wide – filtering required

  3. Filter for .NET provider to get only dot net errors

  4. Filter by time

  5. Perfview is hard to get => watch Vance Morrison video to get the basics fast => https://channel9.msdn.com/Series/PerfView-Tutorial/PerfView-Tutorial-0-Getting-PerfView

  6. TraceEvent – by Microsoft via nuget. Listen to events as they arrive

  7. Logman tool to get list all ETW sessions on the system => session housekeeping. Allows to close sessions. Without the tool you need to reboot machine (sometimes?)

  8. Listening to the ETW is blocking thread, run on separate thread

  9. CLR events: exception, thread contention (duration of wait of a thread before getting resource) duration, ThreadPoolWorkerThreadAdjustmentAdjustment (thread pool starvation), called finalizers, gcallocationtick (100kb allocation), gc type condemned generation and gens size, gc (suspension and pause) duration (gcsuspendebegin)

  10. All above applies for .NET Core aka EventPipe

  11. Windows object explorer (not the one from sysinternals) – see all pipes

  12. Tools: dotnet-trace, dotnet-counter, dotnet-dump

  13. IT installs the server with the hammer :)))

  14. Usage:

  15. dotnet trace list processes,

  16. dotnet collect -p pid

  17. Open collected file with perfview

  18. Dotnet trace convert —format speedscope json

  19. Load file in speedscope.app site

  20. Dotnet counters list

  21. Dotnet counters monitor -p pid – shows values in realtime

  22. Dotnet dump collect -p pid

  23. Dotnet dump analyze – most of the commands used by windbg

  24. EventPipeClient class


Overall impression: cool and knowledgeable guy, hands on advanced debugging. Even though the way to achieve this is not easy, the performed steps made sense to me at the time. Valueable information, will definetly start digging some more on this topic starting from these notes when I need it.

Internals of Async – Adam Furmanek

  1. 1 mb of stack memory when a thread is created – threads are heavy

  2. Manage thread and native threads are different

  3. You can name a thread to be easier to follow during debugging

  4. Task is of two types: which consume CPU and future/promise task (there is something going to happen soon or in the future)

  5. Task state machine: create, glue task, clean task

  6. Create task: Task.Run, Task.Factory.StartNew, PLinq.

  7. TaskScheduler provided by framework (ThreadPool is something else)

  8. Glue task: Task.ContinueWith creates a promise

  9. Clean up task: from .NET 4.5 there is nothing to dispose. Before 4.5, calling dispose breaks it

  10. ValueTask

  11. SynchronizationContext internals

  12. SynchronizationContext is used by different threads based on app type (console, win forms etc)

  13. ExecutionContext

  14. State machine

  15. State is stored first, then there is a try/catch => in catch the state changes

  16. Deadlocks

  17. Use async all the way up

  18. Same code on ASP.NET might break win forms due to how the SynchronizationContext is used

  19. SynchronizationContext is global variable, can be changed without you knowing thus making it dangerous. When in doubt, get current sync context, execute shady method, set sync context back to initial value => hackish

  20. Understand SynchronizationContext

  21. Always wait for threads to finish


Overall impression: very good content, but extremely rushed unfortunately. Moving from big ideas very fast, if you lost a piece of information you were lost.

Afternoon Keynote: The History of .NET – Richard Campbell

  1. 3 shows: .NET rocks, the tablet show, one more I did not get

  2. Why the tablet show? Turns out that after participating at the Build conference in 2011, the focus was on Win8 and WinJS. Nothing about .NET. They thought .NET might be discontinued. The Tablet Show was a contingency plan. Starting with 2014, .NET Rocked again and The Tablet Show was discontinued. It ran between 2011-2014 and the focus was mobile development.

  3. I managed to find a related talk from the beginning of the year => https://www.youtube.com/watch?v=lH8DlaOasGg, even though it is clearly not the same exact talk, there are many common points.

  4. C# was previously named COOL => C-based Object Oriented Language

  5. IE 6 was released before the release of a CSS standard, this is why it had so many issues

  6. Avalon is now known as WPF

  7. Rumors: .NET Core will be gone.  Will merge with .NET Framework in what will be called .NET 5.

I was so caught on Richard’s speech, I forgot to take pictures :|.

Overall impression: interesting stories, some of which I didn’t know such as the big issues Microsoft had in 1998 (https://www.youtube.com/watch?v=m_2m1qdqieE). Mark Zuckerberg most likely learned a lot from these videos in the recent context.

This was about it for the first day. Next event, was the Party and I was very skeptical about it. Having known, how these “IT” parties usually end up => in the club with lots of booze and “zbuntzi-zbuntzi” music (trance and other derivatives types of “music”), I wasn’t really looking forward to it. I thought it will be wiser to get out and visit the city some more. But them I thought that I should give it a try, stay for half an hour and afterwards decide what to do. Glad I did just that, here’s why.

Party

So most of my assumptions regarding the music were gone once I saw two pianos on stage. I thought to myself: okay, this could get interesting.

Then at around 8PM, this dude and “dudette” came on stage and they introduced themselves as Jeff and Rhiannon, the concept of Dueling Pianos and started to ask for song requests. The beginning of the requests was quite shy, but they managed to get a few and afterwards they started playing the requested songs. It was amazing, I was hooked from the first minutes.

They basically played only based on requests, and did an improvisation based on those songs (something similar, but not only, related to call and response on guitar => https://www.youtube.com/watch?v=a3fNcBTerRM). And it worked like a charm.

They played from 8PM to 12AM, with a small 20 mins or so break. The requested songs ranged from Metallica to Celine Dion and Mr. Mix-A-Lot (because why not :)).

It was very impressive to hear AC/DC and other beautiful songs on pianos alone. Jeff did some beat-boxing at some point though, but still, it was an amazing experience.

Jeff and Rhiannon are true entertainers who managed to deliver an awesome performance. Check out the fragments I managed to record at https://www.youtube.com/watch?v=Sx7J3MVzBJs and you will understand what I’m saying (this was a very small subset of all the songs they played). Please note that the sound quality was perfect at the venue, it is my tired phone to blame for the low quality of the video.


There was a single request which they didn’t play: Justin Bieber. It was very funny as their reaction was “This is a Bieber-free zone”. Otherwise, they improvised on a lot of songs, and even though they didn’t play the whole song, this was better, as they managed to play more songs in this limited time-frame.

I’m so glad I didn’t miss this event! I really hope for this Dueling Pianos concept to catch on in Romania too and be popular. Let’s turn down the “zbuntzi-zbuntzi” a notch and listen to something else.

I managed to track them to https://www.noteworthyproductions.com/ so if you have the money, don’t be a stranger and hire them and let me know so that I can join. I will happily pay my ticket to see these guys.

Awesome, awesome experience, the organizers made me forget about all the conference issues (see first part). Don’t worry, you are forgiven :).

I will follow-up with a similar blog post for the second day of the conference, I just need to find some time to write it down. Spoiler alert: presentations were way better the second day (or maybe I picked the “wrong” ones during the first day). Stay tuned!

Comments


bottom of page