Scott Hanselman

10 years and over 520 episodes of podcasting - Tech is a marathon, not a sprint

May 12, '16 Comments [28] Posted in Musings
Sponsored By

I try not to be prideful, as a rule, but darnit, I'm REALLY proud of my podcast. As of this writing I've done 526 episodes. Each one 30 minutes long. Every Thursday, for the last decade. That's over 250 hours of technology talk that promises not to waste your time.

I started Hanselminutes: Fresh Air for Developers almost as a joke. Podcasting was just starting up and I felt at the time that it was largely kind of a vapid copy of talk radio. Hours of directionless rambling. I said to my buddy Carl Franklin that a show shouldn't waste your time and force you to fast-forward 20 minutes in to get to the meat. He said, you should start a show. I laughed, and I did.

HanselminutesOver 10 years later, here we are, having built a significant piece of creative, informational, and pseudo-journalistic work. While other podcasts come and go, many with the "two dudes on Skype" format, I've chugged along. While I do over a million downloads a year, I've never cracked into any mainstream technology podcasting charts or iTunes Top Ten. I think about that sometimes, a little bummed, but I realize that this show and it's content is as much for me as it is for you, Dear Listener. This isn't a popularity much as one can appreciate recognition.

I talk to anyone and everyone about all things tech. The show started before I went to work at Microsoft and will continue long after, I'm sure. It's a non-denominational technology show.

The show also aims to be intentionally inclusive without being heavy-handed. Showcasing diversity in technology isn't about "hey, we need a Black guy this week, know anyone?" That's insulting to everyone. Instead, I've cultivated an amazing network of amazing people from all over the world, and I talk to them about what they love to do. This has some wonderful side effects when recently without planning, 7 of the last 8 shows featured women!

The faces on this archive page go on and on. I'd encourage you to scroll and explore the wall of topics. There's hundreds of highlights, but here's a few favorites:

I am also proud of the show talking to people before (sometimes) they went mainstream or got famous. From interviews with Tim Ferriss in 2007, Kimberly Bryant from BlackGirlsCode in 2012Baratunde Thurston in 2010, Dr. Michio Kaku, author Lauren Beukes, as well as the now legendary show on Geek Relationship Tips with my wife, I've got you covered! You'll often hear it here first.

We were also one of the first podcasts to have a transcriptions/PDFs of the show for the hard of hearing and folks who like to read along while they listen. I struggle with keeping transcripts up to date and we're about a year behind but I'm looking for sustainable solutions. I'd like to get the transcripts available in HTML and posted on the side next to the shows so they'd be more easily searchable.

I want to thank you and remind you and yours that the show exists and continues weekly in earnest, every week with amazing topics and powerful guests. Above all, don't just keep listening, but please, share episodes socially and do encourage your friends and colleagues to listen and subscribe. Your letters and your kindness (as well as your guest suggestions) keep me going.


Thanks everyone for your support and help over the last decade. Here's to another ten years, eh?

Sponsor: Big thanks to SQL Prompt for sponsoring the feed this week! Have you got SQL fingers? Try SQL Prompt and you’ll be able to write, refactor, and reformat SQL effortlessly in SSMS and Visual Studio. Find out more.

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

Chatting with Prince on AOL in 1999 - "this way is modern"

April 24, '16 Comments [9] Posted in Musings
Sponsored By

Erica Kennedy chats with Prince on AOL in 1999Before the Internet as we know it today, before social media, there was AOL. Specifically there was AOL chat rooms. The digital world was smaller but Prince was always there. He was so ahead of his time digitally. The Purple One did group chats with fans all the time on AOL. A "room" in AOL chat parlance was like a Twitter DM - a private chat room.

Six years ago my friend Erica Kennedy and I were talking about what she was going to write for her next book. She had just released her second book, Feminista, and was pretty well known for her first book, Bling that satirized the music industry that she came up in. We had the idea of  a Kindle Single detailing her interactions with Prince while she was working on a profile for InStyle Magazine. You can see photos of Prince's Spanish Villa and a few lines of Erica's AOL chats with Prince over at InStyle now.

This is the AOL chat log detailing her interactions with Prince that Erica emailed me while we were planning her novella.

Here, of course, "NPG---" was Prince's private AOL chat handle at that time while Ekj4 is Erica. I have kept all the typos exactly as they occurred in 1999.

Erica K to me - u r the 1st person 2 c this outside of the N style staff.

NPG---:   high
Ekj4:       hi 2 u
NPG---:  is ur last name kennedy?
Ekj4:       no it's my middle name that i use for writing, trying to stay on the dl
NPG---:  r u alone?
Ekj4:       sure am
NPG---:  have u ever spoke in private chat space?
Ekj4:       all the time!
Ekj4:       i'm a terrible typist though
NPG---:  would u like 2 go a room?
Ekj4:       what room? what's wrong with this way?
NPG---:  don't like
Ekj4:       ok, where's the room?
NPG---:  it's called...
NPG---:  amatteroftime
Ekj4:       how do i get THERE?
NPG---:  use the icon that says....people
NPG---:  c it?
Ekj4:       yes. and...
NPG---:  start ur own chat
NPG---:  private
NPG---:  type in the space....amatteroftime
Ekj4:       is it only going to be u and i?
NPG---:  yes
Ekj4:       ok
NPG---:  scared?
Ekj4:       no
NPG---:  yea,right!
NPG---:  r u there?
Ekj4:       yep
NPG ---: is ur hair done?
EKJ4:       it’s up in a ponytail and truth be told, it’s lookin’ kinda busted.
NPG---:  lol!
EKJ:        my hair doesn’t have the bounce of your ‘do.
NPG---:  do u stay up late?
EKJ:        24-7.  Actaully more like 20-7.
NPG---:  good.
EKJ:        y?
NPG---:  my flight gets in at 1 am
EKJ:        great, ur  coming 2 ny?  u want me 2 meet u at 2?
NPG---:  I can send a car 4 u
NPG---:  if u like
Ekj4:       yes, that would be great. don’t have a sister trying to hail a cab in crooklyn at all hours.
NPG ---:  r u a sista?
Ekj4:        haven't we been over this?  u will c
NPG---:   what do u look like?
NPG---:   describe urself!
Ekj4:        i'm skinny
NPG---:   u eat meat?
Ekj4:        on occasion
NPG---:   then y r u skinny?
Ekj4:        just got it like that
NPG---:   skinny parents
Ekj4:        i actually eat way too much junk food
Ekj4:        i'm skinnier than everyone in my family
NPG---:   do u think we could complete an interview like this?
Ekj4:        no, we cannot do the interview this way, but doesn't matter. u'll be here in a minute
NPG---:   y
NPG---:   then u have direct quotes

but this way is modern

Ekj4:        it neesd to be face to face
NPG---:   y?
Ekj4:        yes, but i have to set the scene. you get better feeling about the person that way
Ekj4:        anyway, this could be aaron for all i know.
NPG---:   but this way is modern
Ekj4:        yes, it is. i love to chat online
NPG---:   eye am not a liar
NPG---:   this way is cooler
NPG---:   and eye don't get motion sickness
Ekj4:        so u think we will just have some time tonight or would you be down to...
Ekj4:        hang over the weekend if i need more time?
Ekj4:        ur not going to be all drowsy, r u?
NPG---:   eye have 2 fly 2 oakland
NPG---:   2morrow
Ekj4:        for what? the all star game?
NPG---:   eye am never drowsy
NPG---:   yes ...the game
Ekj4:        u r going?
Ekj4:        i watch all teh games. i love the t-wolves and kg
Ekj4:        but i root for the knicks
NPG---:   eye maybe cannot go if eye go 2 new york
NPG---:   2 much flying makes me barf
Ekj4:        npg---, u sleepin'?
NPG---:   eye wanna c the slam dunk competition up close
Ekj4:         is kg in it?
NPG---:   no doubt
Ekj4:        you hang with him in minn?
NPG---:   if u were me...would u fly thamuch
Ekj4:        no i don't like to fly that much.  the loss of control and everything
Ekj4:        y ru coming here for 1 day? to do the interview?
NPG---:   yes, eye am coming unless u allow me 2 do something cooler
Ekj4:        i think u should come
NPG---:   eu
Ekj4:        eu?
NPG---:   do u know what that means
Ekj4:        please explain
NPG---:   this:
NPG---:   :P*******
NPG---:   me barfing
Ekj4:        lol!!!!
Ekj4:        why r u barfing?
NPG---:   HEY,not so loud!
Ekj4:        so r u coming or not?
NPG---:   yes, eu
Ekj4:        GREAT!

u type like me

NPG---:   we will call when eye ge there
Ekj4:        1derful
NPG---:   u type like me
Ekj4:        now that u have my e-mail, don't send me any spam!
Ekj4:        chain letters and nonsense
NPG---:   won't send u any mail
NPG---:   ever
NPG---:   many people use this screenname...
Ekj4:        ok, npg---
NPG---:   it's secret, so don't divulge it, ok?
Ekj4:        oh, good so you can maintain your privacy. of course, bro
NPG---:   ever go 2 prince. org?
Ekj4:        can't say that i have. do u?
NPG---:   once or twice
NPG---:   interesting?
NPG---:   yes
Ekj4:        i don't think i would like 2 c what random people r saying about me
NPG---:   sometimes it is funny
Ekj4:        taht would be strange but i guess you have become accustomed 2 it
NPG---:   yes
NPG---:   so, eye must go and pack, then
NPG---:   bye bye
NPG---:   c u 2night
Ekj4:        c ya later, inshallah
NPG---:   peace

I loved these chats because they are a reminder that our legends are also real people. He loved technology, Prince started YesWeCode with Van Jones to inspire more Black Youth to get involved in tech.

I talked to Erica on the phone just two day before she passed away. I miss our regular talks and her energy but most of all I miss my friend.  Prince is gone now as well, and even though he was a legend he was also a real human who loved people. He was a tech visionary who appreciated very early on how technology could bring us all together.

20 years later Prince would still reply to fans directly on Twitter (and often delete the tweets, adding to his air of mystery.) He was known to even engage in lengthy private DMs with fans and superfans.

I love what InStyle said about these Prince's AOL chats.

Internet chat from a rock star looks like Internet chat from anybody else.

I miss you two and what you brought to our lives. I'm glad we have your legacy and your work to remember you by.

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

An update on ASP.NET Core 1.0 RC2

April 14, '16 Comments [84] Posted in ASP.NET
Sponsored By

What's going on with ASP.NET Core 1.0 RC2? Why is RC2 taking so long over RC1 and what's going to happen between now and the final release? I talked to architect David Fowler about this and tried to put together some clear answers.

This stuff is kind of deep and shows "how the sausage gets made" so the TL;DR version of this is "the guts are changing for the better and it's taking longer than we thought it would to swap out the guts."

That said, ASP.NET Core RC2 has some high level themes:

Re-plat on top of the .NET CLI

This is the biggest one and there are quite a few changes and tweaks made to the hosting model to support this. The way your application boots up is completely different. I'd encourage you to take a look at the Some of the changes are very subtle but important. We baked a bunch of assumptions into DNX specific for web applications and now we're building on top of a tool chain that doesn't assume a web application is the only target and we have to account for that.

There were a couple of fundamental things affected by this move:

  • Acquisition
    • How do you get the tool chain and shared runtime?
  • Runtime
    • The API used to find dependencies at runtime ILibraryManager
    • The API used to find compilation assemblies at runtime ILibraryExporter
  • Tooling
    • There's no dnvm replacement
    • Visual Studio Tooling (UI) support needs to use the new CLI
    • OmniSharp needs to use the new CLI
    • What's the dnx-watch successor?

The list goes on and on. I'd suggest watching the ASP.NET Community stand up as we're pretty transparent about where we are in the process. We just got everyone internally using builds of Visual Studio that have CLI support this last week.

The new .NET CLI (again, replacing DNX) will be the most de-stabilizing change in RC2. This is a good intro to where things are headed There's been tons of changes since then but it's still a good overview.

Moving to netstandard

This has been a long time coming and is a massive effort to get class library authors to move to the next phase of PCL. This is critical to get right so that everyone can have their favorite packages working on .NET Core, and as such, working everywhere.

.NET Standard Library means a modular BCL that can be used on all app models


We're looking at all of the patterns that we have invented over the last 2 years and making sure it's consistent across the entire stack. One example of that is the options API. We went through the entire stack and made sure that we were using them consistently in middleware and other places. That is a breaking change but it's an important one.

Other examples of this include things like making sure we have the right extension methods in places and that it looks like they were designed in a coherent manner (logging is an example).

Other small things:

  • Remove the service locator pattern as much as we can. Some of this requires API change.
  • Making sure we have the right set of DI abstractions so that DI vendors can properly plug into the stack.
  • Taking the time to look at feedback we're receiving to make sure we're doing the right things. This is ongoing, but if there are small changes we can make that solve a common issue people are having, we'll make that change while we still have this freedom.
  • Change how we plug in and configure servers in our Hosting APIs

Fundamentals - Stress, Security, Performance

This is always ongoing but now that most of the features are done, we have more time to spend on making things like Kestrel (the web/app server) rock solid and secure.

We're also doing more stress runs to make sure the stack is very stable memory wise and to make sure nothing crashes .

More Performance

This is part of fundamentals but deserves to be called out specifically. We're still making changes to make sure things are very "performant." Some of these are tweaks that don't affect consuming code, others are actual design changes that affect API. MVC is getting tons of love in this area ( HttpAbstractions and other higher level APIs are also getting lots of love to make sure we reduce allocations for things like file upload.

We're also looking at higher level scenarios to make sure that not only focusing on microbenchmarks. You can see some of them at

Techempower is still on our radar and we're running the plain text benchmark on similar hardware now and comparing against the competition (we're in the top 10 right now!) and we'll hope to be there and official for RTM.

I hope this gives you some context. We'll cover this and more every week on the Community Standup as we move towards RC2, then on to RTM on three platforms!

Sponsor: Big thanks to RedGate and my friends on ANTS for sponsoring the feed this week! How can you find & fix your slowest .NET code? Boost the performance of your .NET application with the ANTS Performance Profiler. Find your bottleneck fast with performance data for code & queries. Try it free

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

Give yourself permission to have work-life balance

April 13, '16 Comments [25] Posted in Musings
Sponsored By
Stock photos by #WOCTechChat used with Attribution

I was having a chat with a new friend today and we were exchanging stories about being working parents. I struggle with kids' schedules, days off school I failed to plan for, unexpected things (cars break down, kids get sick, life happens) while simultaneously trying to "do my job."

I put do my job there in quotes because sometimes it is in quotes. Sometimes everything is great and we're firing on all cylinders, while other times we're barely keeping our heads above water. My friend indicated that she struggled with all these things and more but she expressed surprise that *I* did. We all do and we shouldn't be afraid to tell people that. My life isn't my job. At least, my goal is that my life isn't my job.

Why are you in the race?

We talked a while and we decided that our lives and our careers are a marathon, not a giant sprint. Burning out early helps no one. WHY are we running? What are we running towards? Are you trying to get promoted, a better title, more money for your family, an early retirement, good healthcare? Ask yourself these questions so you at least know and you're conscious about your motivations. Sometimes we forget WHY we work.

Saying no is so powerful and it isn't something you can easily learn and just stick with - you have to remind yourself it's OK to to say no every day. I know what MY goals are and why I'm in this industry. I have the conscious ability to prioritize and allocate my time. I start every week thinking about priorities, and I look back on my week and ask myself "how did that go?" Then I optimized for the next week and try again.

Sometimes Raw Effort doesn't translate to Huge Effect.

She needed to give herself permission to NOT give work 100%. Maybe 80% it OK. Heck, maybe 40%. The trick was to be conscious about it, rather than trying to give 100% twice.

Yes, there are consequences. Perhaps you won't get promoted. Perhaps your boss will say you're not giving 110%. But you'll avoid burnout and be happier and perhaps accomplish more over the long haul than the short. 

Work Life

Look, I realize that I'm privileged here. There's a whole knapsack of privilege to unpack, but if you're working in tech you likely have some flexibility. I'm proposing that you at least pause a moment and consider it...consider using it. Consider where your work-life balance slider bar is set and see what you can say no to, and try saying yes to yourself.

I love this quote by Christopher Hawkins that I've modified by making a blank space for YOU to fill out:

"If it’s not helping me to _____ _____, if it’s not improving my life in some way, it’s mental clutter and it's out." - Christopher Hawkins

The Red Queen's Race

Are you running because everyone around you is running? You don't always need to compare yourself to other people. This is another place where giving yourself permission is important.

"Well, in our country," said Alice, still panting a little, "you'd generally get to somewhere else—if you run very fast for a long time, as we've been doing."

"A slow sort of country!" said the Queen. "Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!" - Red Queen's Race

There's lots of people I admire, but I'm not willing to move to LA to become Ryan Reynolds (he stole my career!) and I'm not willing to work as hard as Mark Russinovich (he stole my hair!) so I'm going to focus on being the best me I can be.

What are you doing to balance and avoid burnout?

* Stock photo by #WOCTechChat used with Attribution

Sponsor: Big thanks to RedGate and my friends on ANTS for sponsoring the feed this week! How can you find & fix your slowest .NET code? Boost the performance of your .NET application with the ANTS Performance Profiler. Find your bottleneck fast with performance data for code & queries. Try it free

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

How to host your own NuGet Server and Package Feed

April 13, '16 Comments [39] Posted in NuGet | NUnit
Sponsored By

Local NuGet FeedHosting your own NuGet Server, particularly when you're a company or even a small workgroup is a super useful thing. It's a great way to ensure that the build artifacts of each team are NuGet Packages and that other teams are consuming those packages, rather than loose DLLs.

A lot of folks (myself included a minute ago) don't realize that Visual Studio Team Services also offers private NuGet Feeds for your team so that's pretty sweet. But I wanted to try out was setting up my own quick NuGet Server. I could put it on a web server in my closet or up in Azure.

From the NuGet site:

There are several third-party NuGet Servers available that make remote private feeds easy to configure and set-up, including Visual Studio Team Services, MyGet, Inedo's ProGet, JFrog's Artifactory, NuGet Server, and Sonatype's Nexus. See An Overview of the NuGet Ecosystem to learn more about these options.

File Shares or Directories as NuGet Server

Starting with NuGet 3.3 you can just use a local folder and it can host a hierarchical NuGet feed. So I head out to the command line, and first make sure NuGet is up to date.

C:\Users\scott\Desktop>nuget update -self
Checking for updates from
Currently running NuGet.exe 3.3.0.
NuGet.exe is up to date.

Then I'll make a folder for my "local server" and then go there and run "nuget init source dest" where "source" is a folder I have full of *.nupkg" files.

This command adds all the packages from a flat folder of nupkgs to the destination package source in a hierarchical layout as described below. The following layout has significant performance benefits, when performing a restore or an update against your package source, compared to a folder of nupkg files.

There's two ways to run a "remote feed" handled by a Web Server, rather than a "local feed" that's just a file folder or file share. You can use NuGet.Server *or* run your own internal copy of the NuGet Gallery. The gallery is nice for large multi-user setups or enterprises. For small teams or just yourself and your CI (continuous integration) systems, use NuGet.Server.

Making a simple Web-based NuGet.Server

From Visual Studio, make an empty ASP.NET Web Application using the ASP.NET 4.x Empty template.

New Empty ASP.NET Project

Then, go to References | Manage NuGet Packages and find NuGet.Server and install it. You'll get all the the dependencies you need and your Empty Project will fill up! If you see a warning about overwriting web.config, you DO want the remote web.config so overwrite your local one.

Nuget install NuGet.Server

Next, go into your Web.config and note the packagesPath that you can set. I used C:\LocalNuGet. Run the app and you'll have a NuGet Server!

You are running NuGet.Server v2.10.0

Since my NuGet.Server is pulling from C:\LocalNuGet, as mentioned before I can take a folder filled with NuPkg files (flat) and import them with:

nuget init c:\source c:\localnuget

I can also set an API key in the web.config (or have none if I want to live dangerously) and then have my automated build push NuGet packages into my server like this:

nuget push {package file} -s http://localhost:51217/nuget {apikey}

Again, as a reminder, while you can totally do this and it's great for some enterprises, there are lots of hosted NuGet servers out there. MyGet runs on Azure, for example, and VSO/TFS also supports creating and hosting NuGet feeds.

Aside: Some folks have said that they tried NuGet.Server (again, that's the small server, not the full gallery) a few years ago and found it didn't scale or it was slow. This new version uses the Expanded Folder Format and adds significant caching, so if you've only see the "folder full of flat nupkg files" version, then you should try out this new one! It's version 2.10+. How much faster is it? First request to /nuget (cold start, no metadata cache) before was 75.266 sec and after is 8.482 sec!

The main point is that if you've got an automated build system then you really should be creating NuGet packages and publishing them to a feed. If you're consuming another group's assemblies, you should be consuming versioned packages from their feeds. Each org makes packages and they flow through the org via a NuGet server.

Important! If you are using a Network Share with NuGet.Server, make sure you have the newest version because this file folder structure can give you MAJOR performance improvements!

How do YOU handle NuGet in YOUR organization? Do you have a NuGet server, and if so, which one?

Sponsor: Big thanks to RedGate and my friends on ANTS for sponsoring the feed this week!

How can you find & fix your slowest .NET code? Boost the performance of your .NET application with the ANTS Performance Profiler. Find your bottleneck fast with performance data for code & queries. Try it free

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

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