Scott Hanselman

VIDEO: How to get started with technical public speaking!

January 26, '17 Comments [9] Posted in Musings
Sponsored By

On .NET is a weekly chat with team members from the .NET team at Microsoft. This week we put together something a little different, and honestly, I think it not only went really well, but I think it's an hour that provides a lot of value that goes well beyond .NET or any technology.


We put together a panel of folks at different points in their technical careers. Some just starting to speak publicly and some who've been doing it for 20+ years. Some introverts, some extroverts. Some with speaking or theater experience, others with none. And we talked!

We chatted about how to get started, where you can learn to speak on technical topics, how to form a story arc, how to best utilize your gifts, when to be critical and when to breathe.

It was great fun and included myself, Kendra Havens, Maria Naggaga Nakanwagi, Kasey Uhlenhuth, and Donovan Brown. You can view or download it here on Channel 9, or you can watch it on YouTube embedded below.

Let us know if this kind of content is useful, and if you want to see more in the future.

Sponsor: Big thumbs-up for Kendo UI! They published a comprehensive whitepaper on responsive web design and the best and fastest way to serve desktop and mobile web users in a tailored and cost-effective manner. Check it out!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

What .NET Developers ought to know to start in 2017

January 11, '17 Comments [74] Posted in Musings
Sponsored By

.NET ComponentsMany many years ago I wrote a blog post about what .NET Developers ought to know. Unfortunately what was just a list of questions was abused by recruiters and others who used it as a harsh litmus test.

There's a lot going on in the .NET space so I thought it would be nice to update with a gentler list that could be used as a study guide and glossary. Jon Galloway and I sat down and put together this list of terms and resources.

Your first reaction might be "wow that's a lot of stuff, .NET sucks!" Most platforms have similar glossaries or barriers to entry. There's TLAs (three letter acronyms) in every language and computer ecosystems. Don't get overwhelmed, start with Need To Know and move slowly forward. Also, remember YOU decide when you want to draw the line. You don't need to know everything. Just know that every layer and label has something underneath it and the whatever program you're dealing with may be in a level you have yet to dig into.

Draw a line under the stuff you need to know. Know that, and know you can look the other stuff up.  Some of us want the details – the internals. Others don't. You may learn from the Metal Up or from the Glass Back. Know your style, and revel in it.

First, you can start learning .NET and C# online at You can learn F# online here Both sites let you write code without downloading anything. You just work in your browser.

When you're ready, get .NET Core and Visual Studio Code at and start reading! 

Need To Know

  • What's .NET? .NET has some number of key components. We'll start with runtimes and languages.
  • Here are the three main runtimes:
    • .NET Framework - The .NET framework helps you create mobile, desktop, and web applications that run on Windows PCs, devices and servers.
    • .NET Core - .NET Core gives you a fast and modular platform for creating server applications that run on Windows, Linux and Mac.
    • Mono for Xamarin - Xamarin brings .NET to iOS and Android, reusing skills and code while getting access to the native APIs and performance. Mono is an open source .NET that was created before Xamarin and Microsoft joined together. Mono will support the .NET Standard as another great .NET runtime that is open source and flexible. You'll also find Mono in the Unity game development environment.
  • Here are the main languages:
    • C# is simple, powerful, type-safe, and object-oriented while retaining the expressiveness and elegance of C-style languages. Anyone familiar with C and similar languages will find few problems in adapting to C#. Check out the C# Guide to learn more about C# or try it in your browser at
    • F# is a cross-platform, functional-first programming language that also supports traditional object-oriented and imperative programming. Check out the F# Guide to learn more about F# or try it in your browser at 
    • Visual Basic is an easy language to learn that you can use to build a variety of applications that run on .NET. I started with VB many years ago.
  • Where do I start?
  • After runtimes and languages, there's platforms and frameworks.
    • Frameworks define the APIs you can use. There's the .NET 4.6 Framework, the .NET Standard, etc. Sometimes you'll refer to them by name, or in code and configuration files as a TFM (see below)
    • Platform (in the context of .NET) - Windows, Linux, Mac, Android, iOS, etc. This also includes Bitness, so x86 Windows is not x64 Windows. Each Linux distro is its own platform today as well.
  • TFMs (Target Framework Moniker) - A moniker (string) that lets you refer to target framework + version combinations. For example, net462 (.NET 4.6.2), net35 (.NET 3.5), uap (Universal Windows Platform). For more information, see this blog post. Choosing a TFM decides which APIs are available to you, and which frameworks your code can run on.
  • NuGet - NuGet is the package manager for the Microsoft development platform including .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by all package authors and consumers.
  • What's an Assembly? - An assembly is typically a DLL or EXE containing compiled code. Assemblies are the building blocks of .NET Full Framework applications; they form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions. In .NET Core, the building blocks are NuGet packages that contain assemblies PLUS additional metadata
  • .NET Standard or "netstandard" - The .NET Standard simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. The .NET Standard Library is a formal specification of .NET APIs that are intended to be available on all .NET runtimes.
  • .NET Framework vs. .NET Core: The .NET Framework is for Windows apps and Windows systems, while the .NET Core is a smaller cross platform framework for server apps, console apps, web applications, and as a core runtime to build other systems from.

Should Know

    • CLR – The Common Language Runtime (CLR), the virtual machine component of Microsoft's .NET framework, manages the execution of .NET programs. A process known as just-in-time compilation converts compiled code into machine instructions which the computer's CPU then executes.
    • CoreCLR - .NET runtime, used by .NET Core.
    • Mono - .NET runtime, used by Xamarin and others.
    • CoreFX - .NET class libraries, used by .NET Core and to a degree by Mono via source sharing.
    • Roslyn - C# and Visual Basic compilers, used by most .NET platforms and tools. Exposes APIs for reading, writing and analyzing source code.
    • GC - .NET uses garbage collection to provide automatic memory management for programs. The GC operates on a lazy approach to memory management, preferring application throughput to the immediate collection of memory. To learn more about the .NET GC, check out Fundamentals of garbage collection (GC).
    • "Managed Code" - Managed code is just that: code whose execution is managed by a runtime like the CLR.
    • IL – Intermediate Language is the product of compilation of code written in high-level .NET languages. C# is Apples, IL is Apple Sauce, and the JIT and CLR makes Apple Juice. ;)
    • JIT – Just in Time Compiler. Takes IL and compiles it in preparation for running as native code.
    • Where is  .NET on disk? .NET Framework is at C:\Windows\Microsoft.NET and .NET Core is at C:\Program Files\dotnet. On Mac it usually ends up in /usr/local/share. Also .NET Core can also be bundled with an application and live under that application's directory as a self-contained application.
    • Shared Framework vs. Self Contained Apps - .NET Core can use a shared framework (shared by multiple apps on the same machine) or your app can be self-contained with its own copy. Sometimes you'll hear "xcopy-deployable / bin-deployable" which implies that the application is totally self-contained.
    • async and await– The async and await keywords generate IL that will free up a thread for long running (awaited) function calls (e.g. database queries or web service calls). This frees up system resources, so you aren't hogging memory, threads, etc. while you're waiting.
    • Portable Class Libraries -  These are "lowest common denominator" libraries that allow code sharing across platforms. Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms.
    • .NET Core is composed of the following parts:
      • A .NET runtime, which provides a type system, assembly loading, a garbage collector, native interop and other basic services.
      • A set of framework libraries, which provide primitive data types, app composition types and fundamental utilities.
      • A set of SDK tools and language compilers that enable the base developer experience, available in the .NET Core SDK.
      • The 'dotnet' app host, which is used to launch .NET Core apps. It selects the runtime and hosts the runtime, provides an assembly loading policy and launches the app. The same host is also used to launch SDK tools in much the same way.

    Nice To Know

      • GAC – The Global Assembly Cache is where the .NET full Framework on Windows stores shared libraries. You can list it out with "gacutil /l"  
      • Assembly Loading and Binding - In complex apps you can get into interesting scenarios around how Assemblies are loaded from disk
      • Profiling (memory usage, GC, etc.) - There's a lot of great tools you can use to measure – or profile – your C# and .NET Code. A lot of these tools are built into Visual Studio.
      • LINQ - Language Integrated Query is a higher order way to query objects and databases in a declarative way
      • Common Type System and Common Language Specification define how objects are used and passed around in a way that makes them work everywhere .NET works, interoperable. The CLS is a subset that the CTS builds on.
      • .NET Native - One day you'll be able to compile to native code rather than compiling to Intermediate Language.
      • .NET Roadmap - Here's what Microsoft is planning for .NET for 2017
      • "Modern" C# 7 – C# itself has new features every year or so. The latest version is C# 7 and has lots of cool features worth looking at.
      • Reactive Extensions - "The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators." You can create sophisticated event-based programs that work cleanly and asynchronously by applying LINQ-style operators to data streams.

      NOTE: Some text was taken from Wikipedia's respective articles on each topic, edited for brevity. Creative Commons Attribution-ShareAlike 3.0. Some text was taken directly from the excellent .NET docs. This post is a link blog and aggregate. Some of it is original thought, but much is not.

      Sponsor: Big thanks to Raygun! Join 40,000+ developers who monitor their apps with Raygun. Understand the root cause of errors, crashes and performance issues in your software applications. Installs in minutes, try it today!

      About Scott

      Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

      facebook twitter subscribe
      About   Newsletter
      Sponsored By
      Hosting By
      Dedicated Windows Server Hosting by SherWeb

      Teaching coding from the Metal Up or from the Glass Back?

      January 6, '17 Comments [27] Posted in Musings
      Sponsored By
      * Stock photo by WOCInTech Chat used under CC

      Maria on my team and I have been pairing (working in code and stuff together) occasionally in order to improve our coding and tech skills. We all have gaps and it's a good idea to go over the "digital fundamentals" every once in a while to make sure you've got things straight. (Follow up post on this topic tomorrow.)

      As we were whiteboarding and learning and alternating teaching each other (the best way to make sure you know a topic is to teach it to another person) I was getting the impression that, well, we weren't feeling each other's style.

      Now, before we get started, yes, this is a "there's two kinds of people in this world" post. But this isn't age, background, or gender related from what I can tell. I just think folks are wired a certain way.  Yes, this a post about generalities.

      Here's the idea. Just like there are kinesthetic learners and auditory learners and people who learn by repetition, in the computer world I think that some folks learn from the metal up and some folks learn from the glass back.

      Learning from Metal Up

      Computer Science instruction starts from the metal, most often. The computer's silicon is the metal. You start there and move up. You learn about CPUs, registers, you may learn Assembly or C, then move your way up over the years to a higher level language like Python or Java. Only then will you think about Web APIs and JSON.

      You don't learn anything about user interaction or user empathy. You don't learn about shipping updates or test driven development. You learn about algorithms and Turing. You build compilers and abstract syntax trees and frankly, you don't build anything useful from a human perspective. I wrote a file system driver in Minix. I created new languages and built parsers and lexers.

      • When you type and press enter, you can pretty much tell what happens from the address bar all the way down to electrons. AND YOU LOVE IT.
      • You feel like you own the whole stack and you understand computers like your mechanic friends understand internal combustion engines.
      • You'll open the hood of a car and look around before you drive it.
      • You'll open up a decompiler and start poking around to learn.
      • When you learn something new, you want to open it up and see what makes it tick. You want to see how it relates to what you already know.
      • If you need to understand the implementation details then an abstraction is leaking.
      • You know you will be successful because you can have a FEEL for the whole system from the computer science perspective.

      Are you this person? Were you wired this way or did you learn it? If you teach this way AND it lines up with how your students learn, everyone will be successful.

      Learning from the Glass Back

      Learning to code instruction starts from the monitor, most often. Or even the user's eyeballs. What will they experience? Let's start with a web page and move deeper towards the backend from there.

      You draw user interfaces and talk about user stories and what it looks like on the screen. You know the CPU is there and how it works but CPU internals don't light you up. If you wanted to learn more you know it's out there on YouTube or Wikipedia. But right now you want to build an application for PEOPLE an the nuts and bolts are less important. 

      • When this person types and presses enter they know what to expect and the intermediate steps are an implementation detail.
      • You feel like you own the whole experience and you understand people and what they want from the computer.
      • You want to drive a car around a while and get a feel for it before you pop the hood.
      • You'll open F12 tools and start poking around to learn.
      • When you learn something new, you want to see examples of how it's used in the real world so you can build upon them.
      • If you need to understand the implementation details then someone in another department didn't do their job.
      • You know you will be successful because you can have a FEEL for the whole system from the user's perspective.

      Are you this person? Were you wired this way or did you learn it? If you teach this way AND it lines up with how your students learn, everyone will be successful.


        Everyone is different and everyone learns differently. When teaching folks to code you need to be aware of not only their goals, but also their learning style. Be ware of their classical learning style AND the way they think about computers and technology.

        My personal internal bias sometimes has me asking "HOW DO YOU NOT WANT TO KNOW ABOUT THE TOASTER INTERNALS?!?!" But that not only doesn't ship the product, it minimizes the way that others learn and what their educational goals are.

        I want to take apart the toaster. That's OK. But someone else is more interested in getting the toast to make a BLT. And that's OK.

        * Stock photo by WOCInTech Chat used under CC

        Sponsor: Big thanks to Telerik! They recently published a comprehensive whitepaper on The State of C#, discussing the history of C#, what’s new in C# 7 and whether C# is the top tech to know. Check it out!

        About Scott

        Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

        facebook twitter subscribe
        About   Newsletter
        Sponsored By
        Hosting By
        Dedicated Windows Server Hosting by SherWeb

        I suck at vacation - What I did this week

        December 1, '16 Comments [20] Posted in Musings
        Sponsored By

        Well, it seems I'm lousy at vacation. I'm still learning what I'm supposed to do. My wife is working and the kids are still in school so here was my week.

        3D Printed Brackets for my new HTC Vive

        I treated myself to an HTC Vive Room-Scale VR system. I'll blog extensively about this later but let me just tell you. It's AMAZING. I've used Google Cardboard, I've used Gear VR, I've used Oculus. Vive is it. Full Room-scale VR with something like the Doom 3 VR Mode is amazing. This fellow has a version of Doom 3 coded up at GitHub that modifies your existing purchased version and adds a REALLY compelling VR experience. I will say spent less time fighting demons and more time looking closely at wall textures. I admit it.

        There's a joke about folks who have 3D Printers. We just end up printing brackets to hold stuff.  Well, I got a Vive so I wanted a nice way to mount it. Problem solved.

        I dig #3Dprinting because you can make EXACTLY the brackets you need in a few hours!

        A photo posted by Scott Hanselman (@shanselman) on

        3D Printed a Rifle Stock for the Vive

        There's a popular VR game called Onward. It's basically a Call of Duty-type squad shooter with a focus on squad teamwork and realism. However, holding two VR controllers up to your cheek and pretending they are a rifle doesn't really work. Fortunately an intrepid maker named SGU7 made a prototype you can 3D Print.

        I made one first in Yellow but it broken because it lacked enough infill. I made it again in black (because I had a lot of black. I wish it looked less aggressive, though) and it works great. Note that the part in my hand is a controller and the other controller is attached to the front. The front one can pop off and act as your left hand to reload and throw grenades.

        It was a challenging print with five large pieces and two small along with screws and nuts to hold it together. However, it was super fun and it makes the game WAY more realistic. More on this later. I've also been experimenting with some new exotic filaments.


        Made an AdaFruit Cupcade Raspberry Pi MAME Arcade

        My teenage nephew and I worked on a Cupcade a few months ago but it was his. I 3d printed and made a PiGrrl (Raspberry Pi GameBoy) last year, so I figured I'd make a Cupcade (Raspberry Pi tiny Multi-Arcade Machine Emulator) as well. It's also somewhat challenging but I never really had the time until vacation. You can get the plans and source many of the parts locally, or you can get a complete kit from Adafruit. I did the partial kit for cheaper without the plastic case, then had a local makerspace lasercut a $5 piece of clear acrylic.

        Set up Alexa to talk to my Nightscout-based Blood Sugar system

        I got a few Amazon Alexa "Echo Dot" devices, so now we have three around the house. I upgraded my Nightscout Site (this is the Azure-based system that that allows remote management and viewing of my blood sugar as a Type 1 Diabetic.

        The most recent update of Nightscout added Alexa support. I headed over to and made a dev account and got it all working. It's pretty slick. I can ask it all kinds of things (as can my kids. They love to know about how I'm doing when I'm out of town.)


        Here's a video of it working!

        "Alexa, what's my blood sugar?" #Diabetes @nightscoutproj #video

        A video posted by Scott Hanselman (@shanselman) on

        Basically I've been just making stuff and fixing stuff around the house. I even sat in a café and read the news. Madness.

        I wonder if I could do this full time? I guess that's called retirement. ;)

        Sponsor: Big thanks to Octopus Deploy! Do you deploy the same application multiple times for each of your end customers? The team at Octopus have taken the pain out of multi-tenant deployments. Check out their latest 3.4 release

        About Scott

        Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

        facebook twitter subscribe
        About   Newsletter
        Sponsored By
        Hosting By
        Dedicated Windows Server Hosting by SherWeb

        The 2016 Christmas List of Best STEM Toys for your little nerds and nerdettes

        November 19, '16 Comments [14] Posted in Musings
        Sponsored By

        Last year my 9 year old asked, "are we nerds yet?" Being a nerd doesn't have the negative stigma it once did. A nerd is a fan, and everyone should be enthusiastic about something. You might be a gardening nerd or a woodworking nerd. In this house, we are Maker Nerds. We've been doing some 3D Printing lately, and are trying to expand into all kinds of makings.

        NOTE: We're gearing up for another year of March Is For Makers coming soon in March of 2017. Now is a great time for you to catch up on the last two year's amazing content with made in conjunction with!

        Here's a Christmas List of things that I've either personally purchased, tried for a time, or borrowed from a friend. These are great toys and products for kids of all genders and people of all ages.

        Sphero Star Wars BB-8 App Controlled Robot

        Sphero was a toy the kids got for Christmas last year that they are still playing with. Of course, there's the Original Sphero that's just a white ball with zero personality. I remember when it  came out and I was like, "meh, ok." But then Star Wars happened and I tell ya, you add a little head on the thing and give it some personality and it's a whole new toy.

        Sphero Star Wars BB-8 App Controlled Robot

        The Sphero team continues to update the firmware and software inside BB-8 even now and recently added a new "Sphero Force Band" so you can control Sphero with gestures.

        However, the best part is that Sphero supports a new system called "The SPRK Lightning Lab" (available for Android, iOS, or other devices) that lets kids program BB-8 directly! It's basically Scratch for BB-8. You can even use a C-style language called OVAL when you outgrow their Scratchy system.

        Meccano Micronoids


        I grew up in a world of Lincoln Logs and Erector Sets. We were always building something with metal and screws. Well, sets like this still exist with actual screws and metal...they just include more plastic than before. Any of these Meccano sets are super fun for little builders. They are in some ways cooler than LEGO for my kids because of the shear size of them. The Meccano Meccanoid 2.0 is HUGE at almost two feet tall. It's got 6 motors and there's three ways to program it. There's a large variety of Meccano robot and building kids from $20 on up, so they fit most budgets.

        Arduino UNO Project Super Starter Kit from Elegoo


        Arduino Kits are a little touch and go. They usually say things like "1000 pieces!"...but they count all the resistors and screws as a single part. Ignore that and try to look at the underlying pieces and the possibilities. Things move quickly and you'll sometimes need to debug Arudino Programs or search for updates but the fundamentals are great for kids 8-13.

        I particularly like this Elegoo Arduino UNO Starter Kit as it includes everything you'll need and more to start playing immediately. If you can swing a little more money you can add on touchscreens, speakers, and even a little robot car kit, although the difficulty ratchets up.

        Snap Circuits

        Snap Circuits

        I recommended these before on twitter, and truly, I can't sing about them enough. I love Snap Circuits and have blogged about them before on my blog. We quickly outgrew the 30 parts in the Snap Circuits Jr. Even though it has 100 projects, I recommend you get the Snap Circuits SC-300 that has 60 parts and 300 projects, or do what we did and just get the Snap Circuits Extreme SC-750 that has 80+ parts and 750 projects. I like this one because it includes a computer interface (via your microphone jack, so any old computer will work!) as well as a Solar Panel.

        In 2016 Snap Circuits added a new "3D" kit that lets you build not just on a flat surface but expands building up walls! If you already have a SnapCircuits kit, remember that they all work together so you can pick this one up as well and combine them!


        Secret Messages Kit

        It's a fact - little kids LOVE secret messages. My kids are always doing secret notes with lemon juice as invisible ink. This kit brings a ton of "hidden writing systems" together in one inexpensive package. Ciphers, Braille, Code Breaking, and more are all combined into a narrative of secret spy missions.


        What educational toys do YOU recommend this holiday season?

        FYI: These Amazon links are referral links. When you use them I get a tiny percentage. It adds up to taco money for me and the kids! I appreciate you - and you appreciate me-  when you use these links to buy stuff.

        Sponsor: Help your team write better, shareable SQL faster! Discover how your whole team can write better, shareable SQL faster with a free trial of SQL Prompt. Write, refactor and share SQL effortlessly, try it now.

        About Scott

        Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

        facebook twitter subscribe
        About   Newsletter
        Sponsored By
        Hosting By
        Dedicated Windows Server Hosting by SherWeb
        Previous Page Page 2 of 138 in the Musings category Next Page

        Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.