Scott Hanselman

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

December 6, '15 Comments [27] Posted in Musings
Sponsored By

My 8 year old (recently 7, they grow so fast) asked recently, "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 2016. Now is a great time for you to catch up on March 2015's content!

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.

Snap Circuits

Snap Circuits

I love Snap Circuits and have talked 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.

Dremel 3D Printer

We still use our Dremel 3D Printer at least two or three times a week. We're printing a quadcopter, making Minecraft Chess sets, and creating gifts for the family.

Minecraft 3D Printed Chess Set

Here's some of my 3D Printing posts so far:

It's been extremely reliable. Some folks complain that the Dremel system and software is proprietary, but it's very easy to use. Additionally, if you really don't like their custom software, companies like Simplify3D have Dremel support built right in. You can also use third party filament like Proto-pasta with great success. We even extended the Dremel with a custom 3D printed spool adapter for Proto-pasta and upgraded nozzle and build plate. It's been fantastically reliable and I recommend the Dremel highly.

littleBits Electronics Gizmos and Gadgets

LittleBits are a more expensive than Snap Circuits, but they operate at a higher level of abstraction. While Snap Circuits will teach you about resistors and current and voltage, litlteBits is more oriented towards System Thinking. The littleBits Electronics Gizmos & Gadgets kit is massive and has kept my kids entertained for the last few weeks. It includes motors, wheels, lights, switches, servos, buzzers even a remote control. In fact, the remote control lets you remote any signal and make any gadget you come up with a wireless one.


LittleBits also has a LEGO compatibility system which, while a little persnickety, has allowed the kids to create remote controlled LEGO cars in minutes. They are very expandable and everything is modular. You can build more with additional kits, or you can get just one sensor or that one motor that you need.

The HP Stream 11.6 Laptop

First, let's be serious. The HP Stream is a $199 laptop with an 11.6" screen. Surprisingly, you can get a 13.3" screen for just $210. But on the real, it's not for office workers. It's not even for you. It's for the kids in your life. It's a good, solid, beginner laptop for kids. 2 gigs of ram, and a very modest 1.6 Ghz processor with just a 1366x768 screen, it runs Windows 10 pretty well, in fact and even includes Office 365 Personal for a year (that's Word, Excel, etc).

HP Stream 11.6" Laptop

I've even heard a parent call the HP Stream the "Minecraft Laptop." My sons took a week-long summer school Minecraft class with a room filled with these little laptops and they did just fine. It has just a 32gig SSD for a hard drive, but for <$20 you can add and drop in a 64gig SD Card and tell Windows 10 to put downloaded apps onto the SD Card directly.

This is a great machine for <$200 that you can feel comfortable giving to an 8 year old or tween and teach them how to code.

Raspberry Pi (any kind!)

Little boys on the Raspberry Pi

Every STEM house should have a Raspberry Pi or six! We've got 4? Or 5? They end up living inside robots, or taped to the garage door, or running SCUMMVM Game Emulators, or powering DIY GameBoys.

I recommend a complete Raspberry Pi Kit when you're just getting started as it guarantees you'll be up and running in minutes. They include the SD Card (acts as a hard drive), a power supply, a case, etc. All you need to provide is a USB Keyboard and Mouse. I ended up getting a cheap Mini USB wired keyboard and cheap USB wired mouse for simplicity.

Raspberry Pis will give you back as much as you can put into them. While you can treat it as a very low-powered browser or basic machine, you should really explore the breadth of projects you can make with a Raspberry Pi. Sure, the kids can learn Scratch or Python, but they can also build Raspberry Pi Robots or run a version of Windows 10 and play with C#. They can add their own electronics, lights, sounds, make radios, and more.

If you want to save money, get just a Raspberry Pi alone for <$40 and use a micro-USB Cell Phone Power Supply, and whatever electronics you have around the house. Once I took a local kid to Goodwill (a thrift store) and we found the power supply, mouse, keyboard, AND LCD Monitor all in the electronics junk pile of the store for $25 total.

OWI Robotic Arm Edge

The OWI Robotic Arm Edge isn't a kit but it's a reasonably priced robotic arm to get kids thinking in terms of command and control and multiple dimensions. OWI also has a cool 3in1 robot RC kit if you prefer driving robots around and more "rebuildability."

OWI Robotic Arm Edge

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: Big thanks to Infragistics for sponsoring the feed this week. Responsive web design on any browser, any platform and any device with Infragistics jQuery/HTML5 Controls.  Get super-charged performance with the world’s fastest HTML5 Grid - Download for free 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

Brainstorming development workflows with Docker, Kitematic, VirtualBox, Azure, ASP.NET, and Visual Studio

December 4, '15 Comments [23] Posted in ASP.NET | Open Source
Sponsored By

Kitematic for WindowsFirst, a disclaimer. I have no idea what I'm talking about. I'm learning and exploring some ideas, and I wanted to see what the development process looks like today (December 2015) with Docker, ASP.NET, and Visual Studio on my Windows 10 machine. I'm also interested in your ideas in the comments, and I'll share them directly with the folks who are working on making Docker integration with Visual Studio.

This post uses the bits and stuff and hacks that are working today. Some of this is alpha, some is hacky, but it's all very interesting. What do you think?

Setting up Docker on Windows

I got a new laptop and needed to set it up. This seemed like a good to time re-discover Docker on Windows.

  • For this ASP.NET-centric example, I'm assuming you have Windows with Visual Studio, but you can get Visual Studio 2015 Community for free if you need it. You'll want ASP.NET 5 RC1 as well.
  • Go to, click Get Started, then Windows. You'll end up here:
    • Note, you'll need hardware virtualization enabled in your systems BIOs, and if you are already running HyperV, either turn it off (I just to go Windows Features and uncheck it. It can be quickly turned back on later) or create a boot menu to switch between Hyper-V and VirtualBox.
    • The Docker website could get to the point faster, but they are making sure you're prepped for success.
  • Download Docker Toolbox which has a great chained installer that includes:
    • Docker Client - This is the "docker" windows command you'll use at the command line, if you want to.
    • Docker Machine - Docker Machine creates Docker hosts anywhere and configures Docker to talk to those machines.
    • Docker Compose - This is a tool for defining multi-container Docker applications.
    • Docker Kitematic - Kitematic is really accessible. It's the Docker GUI and runs on Mac and Windows.
      • I like to think of Docker Kitematic as "GitHub for Windows for Docker." Just as GitHub for Windows is an attractive and functional GUI for 80% of the things you'd want to do with Git, then Kitematic is the same for Docker. I personally think that while Kitematic is in alpha, it will be the thing that gets new people using Docker. It definitely made onboarding more comfortable for me.
    • VirtualBox - Oracles free and excellent Virtual Machine software. I use this instead of Hyper-V on the client. Hyper-V is great on the server or in the cloud, but it's not optimized for client software development or running Ubuntu VMs and remoting into them. Also, VirtualBox is extremely easy to automate, and Docker and Kitematic will be automating creating the VMs for you.

When you run Kitematic the first time it will automate VirtualBox and use a "boot2docker.iso" to boot up a new that will host your Docker containers.


If you want to test things, click New in Kitematic and search for "Ghost." Kitematic will download the Dockerfile, create a VM and Container, provision everything, and run Ghost inside Docker within your (hidden from view) VM. Click Settings and you can see what port it's running on, or just click the Arrow next to Web Preview and Kitematic will launch a web browser talking to the node.js-based Ghost Blog running in Docker.

Note: Microsoft Edge is having some troubles talking to VirtualBox virtual network adapters, and I'm tracking workarounds here. Other browsers are fine.

Kitematic publishig Ghost

ASP.NET 5 and Linux and Docker

ASP.NET 5 and the .NET Core CLR are both open source and run on Windows, Mac, and Linux. We're going to make an ASP.NET in Visual Studio and deploy it to a Linux Container via Docker. The "Dockerfile" that describes ASP.NET 5 is open source and is here on GitHub but you don't really need to sweat that even if it is interesting.

NOTE: You can get and install ASP.NET here Visit it from any OS and it will give you the details you need to install and get started.

An example Dockerfile for your basic ASP.NET 5 application would look like this:

FROM microsoft/aspnet:1.0.0-rc1-final

ADD . /app

WORKDIR /app/approot

ENTRYPOINT ["./web"]

It says, "start from this base docker file, add the files in . to ./app, and we'll be running from /app/approot. Then run ./web."

Deploy to Docker from within Visual Studio

The Visual Studio 2015 Tools for Docker are just a Preview, but they are pretty useful even in their Alpha state. Install them in Visual Studio 2015 - it just takes a second.

Make a new ASP.NET application with File | New Project. I made one without authentication.

Go into the Project.json and change this line to include the --server.urls bit. The important part is the *, otherwise the Kestrel web server will only listen for localhost and we want it to listen everywhere:

"commands": {
"web": "Microsoft.AspNet.Server.Kestrel --server.urls http://*:5000"

Right Click Solution Explorer and click Publish and you should see this:

Docker Tools for Visual Studio

From here, select Docker, and you will have a change to make a VM in Azure or publish to an existing VM.

Instead, click "Custom Docker Host" because we are going to public to our local VM.

Here's what my settings look like. Yours will be different.

Custom Docker Profile in Visual Studio

In order to get the settings YOU need, go to Kitematic and click Docker CLI to get a cool PowerShell preconfigured command prompt all setup with knowledge of your system.

Type "docker-machine config default" and you'll get a command line showing where your certs are and the IP and port of your Docker setup.

Note the result is missing a carriage return there after the port 2376.

docker-machine config default

Fill out the form with the Server Url, and image name, and some ports. I mapped port 5000 inside the container because I'll have the ASP.NET Kestrel web server listening on Port 5000.

Here's what my "Auth Options" text box looks like. Your paths will be different.


Click Validate Connection and you'll hopefully get a green checkbox.

WEIRD BUG: As of this writing the November 2015 version of the preview Docker Tools for Visual Studio 2015 has a bug when publishing to a custom host. The generated .ps1 in the PublishProfile is wrong. I think they'll fix it ASAP but the fix is to fake publish a Hello World ASP.NET project to a Docker container in any Azure VM and grab the .ps1 it generates. You don't need to hit publish, the file gets generated when you hit Next. Copy that file off somewhere and copy it OVER the wrong one in your actual project. You only have to do this once. I'm sure it will get fixed soon. You can confirm you have the right .ps1 because it'll say "Docker" at the top of the file.


When you hit publish, the project will build locally, and deploy into a new Docker container. You can watch Kitematic update as the deploy happens. The selected Container there is ASP.NET, and I know it worked because Kitematic puts a nice Web Preview there as well!

ASP.NET 5 in Docker in Kitematic

Brainstorming Improvements

So this is what I was able to do with existing bits. What I'd like to see is:

  • Press Ctrl-F5 in Visual Studio and have it build the project, deploy to Docker, and launch the browser all in one go. Do you agree?
    • I was thinking to make a "docker" command in the ASP.NET 5 "launchSettings.json" which would appear like this in Visual Studio.
      Docker in VS
  • Today you have to delete the container manually in Kitematic and publish again. How would you want things to work?
  • If Docker is promoting Kitematic as the best way to get started with Docker, should Visual Studio plugins know that Kitematic and Docker Machine are there and auto-configure things?

Additionally, when  Windows Containers happens, Visual Studio should clearly be able to publish an ASP.NET 5 application to the container, but even better, if this Docker flow works cleanly, I should be able to publish via Docker to Linux OR Windows from the same dialog in VS. Then after a local deployment to Docker I could Right-Click Publish and publish to Docker in an Azure VM and or Azure Container Service.

IMHO given an ASP.NET 5 app, you should be able to:

  • Publish to a folder
  • Publish to a Docker container (Linux or Windows)
    • Ctrl-F5 build AND F5 debug that container.
    • Publish to Docker in any cloud
  • Publish to an Azure VM, Web Site (App Service), or Docker within Azure Container Service
  • Editor support and syntax highlighting for Dockerfiles and Docker Compose files.
  • Docker Tools for VS should make a basic Dockerfile if one doesn't exist
  • Run xUnit and tests in the Docker Container

What do you think, Dear Reader? How much Visual should Visual Studio have? I personally like these lightweight dialogs that launch command line tools. How do you expect Docker to integrate with Visual Studio?

Sponsor: Big thanks to Infragistics for sponsoring the feed this week. Responsive web design on any browser, any platform and any device with Infragistics jQuery/HTML5 Controls.  Get super-charged performance with the world’s fastest HTML5 Grid - Download for free 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

Fixed: Microsoft Edge can't see or open VirtualBox-hosted local web sites

December 2, '15 Comments [10] Posted in Bugs
Sponsored By

I'm using VirtualBox on a Windows 10 machine along with Docker to deploy ASP.NET websites to local Linux Containers. To be clear, this isn't accessing websites with http://localhost, this is accessing locally an VirtualBox virtual network.

For example, my local IP and subnet is here, but my VirtualBox is here:

Ethernet adapter Ethernet:
IPv4 Address. . . . . . . . . . . :

Ethernet adapter VirtualBox Host-Only Network:
IPv4 Address. . . . . . . . . . . :

Make sense? A Linux VM running Docker containers is then, for example, on various ports.

Strangely, however, I was unable to access these VirtualBox-hosted websites with Microsoft Edge, while they worked on Chrome and Firefox. I wanted to fix this. Just saying "use another browser" isn't enough, I like to figure it out.

I ended up trying this, and oddly, I was right. Go to Start, type "Internet Options" then then the Security Tab, then click Local Intranet, then Sites. Add your Virtual Machine's IP (in this case, the Docker Host) in that list and you're golden.

Add your VirtualBox VM's IP in the local intranet list of sites

Now about the WHY....I have no idea. I'll report back as I keep poking around.

Sponsor: Big thanks to Infragistics for sponsoring the feed this week. Responsive web design on any browser, any platform and any device with Infragistics jQuery/HTML5 Controls.  Get super-charged performance with the world’s fastest HTML5 Grid - Download for free 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

Announcing PowerApps with Azure App Service

November 30, '15 Comments [8] Posted in Azure
Sponsored By

Introducing PowerAppsMicrosoft announced Azure App Service in March of this year on ScottGu's blog. Azure App Service includes all this stuff for one price. In fact, if you are already using Web Apps/Sites, have many of these features but may not know it:

  • Web Apps - This is the Azure Web Sites that you use today. .NET, node.js, Python, Java, PHP, and more.
  • Mobile Apps - libraries and runtimes for iOS/Windows/Android/Mac, plus offline sync support, notifications, and more
  • Logic Apps - Workflow in the cloud (like IIFTTT but hosted and controlled by you) that can orchestrate business processes within your App Service
  • API Apps - RESTful web services, connections to lots of SaaS systems like Dropbox, Office365, etc, plus security and automatic versioning.

In April the Azure team added isolated App Service Environments. An App Service Environment provides a isolated and fully dedicated environment for securely running all of your apps including Web Apps, Mobile Apps, API Apps and Logic Apps. Your apps run on virtual machines that only run your apps. You aren't on a pool of shared machines like much of the cloud. These dedicated App Service Environments can also scale much larger than the standard App Service. App Service Environments always run in their own private virtual network that you control.

Today at the Convergence Conference in Spain, Bill Staples announced PowerApps. The team I work on doesn't just make ASP.NET, we also make tools and services for Azure App Service and for the last year the team has been building PowerApps. PowerApps makes it easy to quickly create new business apps, connect systems and then share those apps with anyone on your team.

You should go check out to learn about the creation process for business users (like, folks who use Office but don't program), but I decided to focus more on how a professional developer would use Azure App Service and PowerApps, so I made a video to demonstrate a real example.

PowerApps for developers

bricksA Real Scenario

I wrote an app something like 13 years ago for Pioneer Courthouse Square here in Portland. The square is the Center of the City and it's covered with bricks that have the name of the people who donated to have the square built. There's tens of thousands of bricks and they are hard to find. There was an Access Database and a paper map but that was lame, so I put together an ASP app and a SQL database to generate a printable map that gets visitors within ten or so feet of their brick.

This is a real legacy app that has been running - happily and unchanged - for over a decade. We don't like to admit apps like this exist but the world is full of them. This apps was created before the iPhone, before ubiquitous connectivity, before web services, and before federated security. I thought it would be cool to make this legacy data available as a JSON-based web service, secure it's admin access with Azure Active Directory, build a CRUD mobile admin app with PowerApps for iOS, Android, and Windows, and then, just for fun, also create a native Android app with Xamarin 4 and the Azure Mobile Apps libraries so that volunteers can manage requests for photographs of bricks.

What does this all mean? What's changed?

PowerApps is the business application creation side. Think of it as a new member of the Office Family. It's not a Visual Studio thing. Apps made with PowerApps are sharable with in your organization as easy as sharing documents and they run on Windows, Android, and iOS. A business user could build a new workflow app and share it with everyone. They can auth that new app against APIs like Office 365, Microsoft Dynamics, Salesforce, Dropbox, Twitter, Google Drive, and OneDrive. For example, my example app takes photos of the bricks and puts the result in Azure Storage, but I could just as easily drop them in Google Drive or OneDrive.

However, for Visual Studio developers, or any developer, you still use the language of your choice (C#, F#, node.js, PHP, etc) and write Web APIs and Apps and host them in Azure App Service as you always have. But, if you want, those APIs can live in a new gallery that is specific to your organization so that anyone in your org (developer or business user alike) can use in their applications. My legacy BrickFinder is now an authenticated API living in an Azure App Service Environment. The API is being used by a website, an Android app written with Xamarin, and also an application created with PowerApps, running everywhere.

One other interesting point to note is that PowerApps pricing isn't consumption based, it's user-based pricing. Pay by the head, rather than prices fluctuating by consumption. For companies with public facing apps like my startup, I like pricing that changes with the popularity and usage of my app. For enterprise and large companies, simple pricing that's per-user makes more sense and is easier to budget for.

Check out the launch videos. PowerApps is in private preview now (go sign up at if you like), but you'll be hearing more about it in the months to come. 

Sponsor: Big thanks to Infragistics for sponsoring the feed this week. Responsive web design on any browser, any platform and any device with Infragistics jQuery/HTML5 Controls.  Get super-charged performance with the world’s fastest HTML5 Grid - Download for free 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

RFC: Server-side Image and Graphics Processing with .NET Core and ASP.NET 5

November 26, '15 Comments [21] Posted in ASP.NET | Open Source
Sponsored By

The .NET Core and the Core Libraries are open source and run on Windows, Mac, and Linux. In fact, you can run them with support, today, in production on Windows and Linux (Mac is for development, not production).

Head over to to get ASP.NET 5 with .NET Core on any platform. Also get the free cross platform editor Visual Studio Code as well.

Because .NET Core runs anywhere, there are things that it doesn't have. It doesn't have a UI layer (no WinForms, for example, because that makes no sense on Linux) or Registry Access (that's only on Windows, so it's simply omitted). While these omissions make sense, others don't exist because of lack of times, changing priorities, or peoplepower.

Currently, as of the time of this blog post's writing, .NET Core has no good built-in option for image resizing or image generation/creation. There is no System.Drawing because there is no Win32 GDI. There are some options, that I'll point out later, but this clearly hasn't been a priority so it's not done yet. There has been some work on System.Drawing.Graphics, but it seems stalled.

Nathanael Jones is the very accomplished author of ImageResizer and the primary at Imazen, an imaging software company. I've talked about ImageResizer before, it's fantastic. Nathanael has been pushing hard to get folks at Microsoft to commit to a story around Server-side Graphics in ASP.NET 5 and recently updated his own roadmap with respect to ImageResizer and the new ASP.NET 5 (that runs on .NET Core as well as the full .NET Framework). Take a moment and read it, there's a lot there. Concerns about how to call native code, how to distribute managed code that has to call native code, and lots more. I've worked with Nathanael for the last year trying to work out some way to solve this problem but it hasn't worked out well. Big company, sigh.

Another library in the .NET imaging space is called ImageProcessor by James M. South. Jim also wants to solve the program of server side image manipulation. He's currently working on a re-write of his ImageProcessor as a cross-platform library and I'm sure he would appreciate your help.

Jim himself says:

Is this wise? Honestly... I don't know. I could be writing code that may be suddenly obsolete. There has been little feedback on questions I've asked but it's a nice learning process if anything and I will definitely be releasing the code for consumption.

Over in the Microsoft corefxlab repo Jim has asked some questions and tried to push as well, but the issue is currently closed. Fortunately it is just closed for lack of interest. Krzysztof Cwalina from Microsoft says:

We have nobody working actively on this. It's a interesting problem space, but it does not align with our current priorities. I will close this for now. Please let me know if anybody wants to work on it and I will reopen.

Enter, you, us, the community. Jim has asked for help, and I'm also asking for help. Is Server-Side graphics manipulation in ASP.NET 5 important? Jim asks:

Please... Spread the word, contribute algorithms, submit performance improvements, unit tests. Help me set up CI for nightly releases.

Performance is a biggie, if you know anything about the new vector types and can apply some fancy new stuff with that it would be awesome.

There's a lot of developers out there who could write this stuff a lot better and faster than I and I would love to see what we collectively can come up with so please, if you can help in any way it would be most welcome and beneficial for all.

So, two things.

First, head over to and talk to James M. South on Twitter. If you can, offer support. Perhaps help with a AppVeyor setup, or offer your own CI server for builds. Do you have a need for server-side image work now or perhaps you have a cache of unit tests? See what you can offer. Even if you're a First Timer to Open Source.

Second, if you want to work on it, either with James, or with Microsoft, check out the closed issues on GitHub at and engage there. It'd be awesome to see this problem solved.

Sponsor: Thanks to RedGate for sponsoring the blog this week. They're offering a free .NET eBook! Discover 52 tips to improve your .NET performance! Our new eBook features dozens of tips and tricks to boost .NET performance. With contributions from .NET experts around the world, you’ll have a faster app in no time. Download your free copy.

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.