Scott Hanselman

Developing on Docker with the new and improved Visual Studio Container Tools (and WSL2)

May 19, '20 Comments [6] Posted in Docker | VS2019
Sponsored By

I've been spending a lot of time with Docker lately. Docker Desktop on Windows is great and getting better every day. Now that WSL2 (Windows Subsystem for Linux) is rolling out stable over the coming weeks and Docker Desktop supports WSL to host Linux containers directly, I'm finding myself using Visual Studio to develop my sites under Docker.

Visual Studio Container Tools are actively improving as well and the latest release is pretty sweet. You likely already HAVE this as the Containers tool window is now included in Visual Studio 2019 starting with version 16.4 Preview 2 and above!

NOTE: Be sure to check out the Visual Studio Code Docker Extension as well!

First thing that is impressive is that Visual Studio now tries to help you get to a successful place with helpful guidance, as sometimes set up can be daunting.

When you create or open a Docker-enabled project:

  • VS container tools help you install Docker Desktop
  • VS container tools make sure Docker Desktop is running

Start Docker Desktop?

You've got the Container Tools already if you've installed the Web or Azure Workload in Visual Studio 2019 and it is included in the free Visual Studio 2019 Community!

You can Docker-enable a project with a checkbox when you create it OR you can right click Add Docker Support after the fact.

Enable Docker Support

When working with .NET Core the Container Tools will make a great multi-stage Dockerfile that encapsulates best practices. It uses Docker layering to build within Docker using the .NET SDK but then publishing into a smaller runtime container for the smallest possible resulting image for maximum density.

Multistage Dockerfile

Multi-container Debugging

Debugging real systems with multiple containers has been a challenge in the past. VS2019 now has Container Orchestrator Support built-in. This screenshot shows Docker Compose appearing itself as a Debug Target within the standard VS2019 toolbar!

Docker Compose

Once you have a bunch of containers running, the Containers Tool finds a nice balance between showing you the text logs and getting out of your way but also giving you a GUI to start and stop and manage multiple running containers.

You can see below the images I have, the Solution Containers. I can even right click and Attach to Process within a running Linux container! Again, all using WSL2 and wicked fast.

Docker Container Tools

Coming soon to Visual Studio! Native WSL2 debugging

I like my containers BUT if you just want to dev on Linux directly (no containers) then this is one of the "coming soons" that you'll be the most excited about - WSL 2 Debugging! Coming soon to the Marketplace as a preview with a plan to ship in future Visual Studio tooling releases, you'll be able to just select WSL2 (Linux) as a compilation and debug target! That means dev/test/run native Linux on Windows right from VS.

Remember that WSL2 uses a real Linux kernel so there's no emulators here. The WSL2 Linux starts up in about a second and you'll be debugging FAST. WSL2 is rolling out now!

WSL2 in Visual Studio

That means breakpoints and full debugging on Linux from Visual Studio 2019 on Windows. Scott Hunter and I talked about this and showed a demo in our "Journey to One .NET" talk at BUILD this year that you can watch free here!

If you want all these nice Container Tools either install VS2019 or just run the Visual Studio Installer and UPDATE your existing installation.

Sponsor: This week's sponsor! This blog and my podcast has been a labor of love for over 18 years. Your sponsorship pays my hosting bills for both AND allows me to buy gadgets to review AND the occasional taco. Join me!

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

Review of the Surface Book 3 for Developers

May 14, '20 Comments [25] Posted in Reviews
Sponsored By

I was offered a Surface Book 3 to use as a loaner over the the last 5 weeks. I did a short video teaser on Twitter where I beat on the device with a pretty ridiculous benchmark - running Visual Studio 2019 while running Gears of War and Ubuntu under WSL and Windows Terminal. I have fun. ;)

Size and Weight

My daily driver has been a Surface Book 2 since 2017. The new Surface Book 3 is the exact size (23mm thick as a laptop) and weight (3.38 and 4.2 lbs.) as the SB2. I have had to add a small sticker to one otherwise I'd get them confused. The display resolutions are 3000×2000 for the 13.5-inch model and 3240×2160 for the 15-inch one that I have. I prefer a 15" laptop. I don't know how you 13" people do it.

Basically if you are a Surface Book 2 user the size and weight are the same. The Surface Book 3 is considerably more power in the same size machine.

CPU and Memory

They gave me an i7-1065G7 CPU to test. It bursts happily over 3.5 Ghz (see the compiling screenshot below) and in my average usage hangs out in the 2 to 1.8 range with no fan on. I regularly run Visual Studio 2019, VS Code, Teams, Edge (new Edge, the Chromium one), Ubuntu via WSL2, Docker Desktop (the WSL2 one), Gmail and Outlook as PWAs, as well as Adobe Premiere and Audition and other parts of the Creative Suite. Memory usually sits around 14-18 gigs unless I'm rendering something big.

Task Manager with a Surface Book 3

It's a 10th gen Intel chip and as the Surface Book 3 can detach the base from the screen, it's both a laptop and tablet. I gleaned from Anandatech that TDP is between 10 and 25W (usually 15W) depends on what is needed, and it shifts frequencies very fast. This is evident in the great battery life when doing things like writing this blog post or writing in Edge or Word (basically forever) versus playing a AAA game or running a long compile, building containers, or rendering a video in Premiere (several hours).

FLIP THE SCREEN AROUND? You can also when docked even reverse the screen! Whatever do you mean? It's actually awesome if you want an external keyboard.
Flip the screen around

All this phrased differently? It's fast, quickly, when it needs to be but it's constantly changing the clock to maximize power/thermals/battery.

SSD - Size and Speed

The device I was loaned has a Toshiba KXG60PNV2T04 Hard Drive 2TB NVMe M.2 that's MASSIVE. I'm used to 512G or maaybe a 1TB drive in a Laptop. I'm getting used to never having to worry about space. Definitely 1TB minimum these days if you want to play games AND do development.

I ran a CrystalBenchmark on the SSD and it did 3.2GB/s sequential reads! Sweet. I feel like the disk is not the bottleneck with my development compile tests below. When I consulted with the Surface team last year during the conception of the Surface Book 3 I pushed them for faster SSDs and I feel that they delivered with this 2TB SSD.

GPU - Gaming and Tensorflow

The 13.5-inch model now comes with an NVIDIA GeForce GTX 1650 Max-Q GPU with 4GB of GDDR5 memory in its Core i7 variant, while the 15-inch unit features a NVIDIA GeForce GTX 1660 Ti Max-Q with 6GB of GDDR6 memory. When running the Gears 5 Benchmark while plugged in (from the Extras menu, Benchmark) is has no issues with the default settings doing 60fps for 90% of the benchmark with a few dips into the 57 range depending what's on screen.

It's not a gaming machine, per se, but it does have a NVIDIA GeForce GTX 1660 Ti so I'm basically able to 1080p 60fps AAA games. I've played Destiny 2, Gears of War 5, and Call of Duty Modern Warfare on default settings at 60 fps without issue. The fan does turn on but it's very manageable. I like that whenever we get back into hotels I'll be able to play some games and develop on the same machine. The 15" also includes an Xbox Wireless Adapter so I just paired my controller with it directly.

Gears at 60fps

I was also able to run Tensorflow with CUDA on the laptop under Windows and it worked great. I ran a model against some video footage from my dashcam and 5.1 gigs of video RAM was used immediately and the CUDA engine on the 1660Ti is visible working in Taskman. The commercial SKU has an NVIDIA Quadro RTX 3000 that is apparently even more tuned for CUDA work.

NVidia CUDA engine is engaged

Developer Performance

When I built my Intel i9 Ultimate Desktop 3.0 machine and others, I like to do compile tests to get a sense of how much you can throw at machine. I like big project compiles because they are a combination of a lot of disk access and a lot of parallel CPU work. However, some projects do have a theoretical maximum compile speed because of the way the dependences flesh out. I like to use Orchard Core for benchmarks.

Orchard Core is a fully-featured CMS with 143 projects loaded into Visual Studio. MSBUILD and .NET Core supports both parallel and incremental builds.

  • A warm build of Orchard Core on IRONHEART my i9 desktop takes just under 10 seconds.
    • My 6 year old Surface Pro 3 builds it warm in 62 seconds.
  • A totally cold build (after a dotnet clean) on IRONHEART takes 33.3 seconds.
    • My Surface Pro 3 builds it cold in 2.4 minutes.

I'll do the same build on both my Surface Book 2 and this new Surface Book 3 to compare. I've excluded the source folders from Defender as well as msbuild.exe and dotnet.exe. I've also turned off the Indexer.

  • A cold build (after a dotnet clean) on this Surface Book 3 takes 46 seconds.
    • A warm build is 16.1 seconds
  • A cold build (after a dotnet clean) on my Surface Book 2 takes 115 seconds.

It's WAY faster than my Surface Book 2 which has been my daily driver when mobile for nearly 3 years!

Benchmarks are all relative and there's raw throughput, there's combination benchmarks, and all kinds of things that can "make a chart." I just do benchmarks that show if I can do a thing I did before, faster.

.NET working hardAll the CPUs are working

You can also test various guesses if you have them by adding parameters to dotnet.exe. For example, perhaps you're thinking that 143 projects is thrashing to disk so you want to control how many CPUs are used. This has 4 physical cores and 8 logical, so we could try pulling back a little

dotnet build /maxcpucount:4

The result with Orchard Core is the same, so there is likely a theoretical max as to how fast this can build today. If you really want to go nuts, try

dotnet build -v diag

And dig through ALL the timing info!

Webcam Quality

Might be odd to add this as its own section but we're all using our webcams constantly right now. I was particularly impressed with the front-facing webcam. A lot of webcams are 720p with mediocre white balance. I do a lot of video calls so I notice this stuff. The SB3 has a 1080p front camera for video and decent light pickup. When using the Camera app you can do up to 5MP (2560x1920) which is cool. Here's a pic from today.


Ports and Power and Sound and Wi-Fi

The Surface Book 3 has just one USB-C port on the right side and two USB 3.1 Gen 2s on the left. I'd have liked one additional USB-C so I could project on stage and still have one additional USB-C available...but I don't know what for. I just want one more port. That said, the NEW Surface Dock 2 adds FOUR USB-C ports, so it's not a big deal.

It was theoretically possible to pull more power on the SB2 than its power supply could offer. While I never had an issue with that, I've been told by some Destiny 2 players and serious media renderers that it could happen. With the SB3 they upped the power supply with 65W for the base 13.5-inch version and a full 127W for the 15-inch SKUs so that's not an issue any more.

I have only two Macs for development and I have no Thunderbolt devices or need for an eGPU so I may not be the ideal Thunderbolt consumer. I haven't needed it yet. Some folks have said that it's a bummer the SB3 doesn't have it but it hasn't been an issue or sticking point for any of my devices today. With the new Surface Dock 2 (below) I have a single cable to plug in that gives me two 4k monitors at 60Hz, lots of power, 4 USB-C ports all via the Dock Connector.

I also want to touch on sound. There is a fan inside the device and if it gets hot it will run. If I'm doing 1080p 60fps in Call of Duty WarZone you can likely hear the fan. It comes and goes and while it's audible when the fan is on, when the CPU is not maxed out (during 70% of my work day) the Surface Book 3 is absolutely silent, even when running the monitors. The fan comes on with the CPU is bursting hard over 3Ghz and/or the GPU is on full blast.

One other thing, the Surface Book 3 has Wi-Fi 6 even though I don't! I have a Ubnt network and no Wi-Fi 6 mesh points. I haven't had ANY issues with the Wi-Fi on this device over Ubnt mesh points. When copying a 60 gig video file over Wi-Fi from my Synology NAS I see sustained 280 megabit speeds.

The New Surface Dock - Coming May 26th

I'm also testing a pre-release Surface Dock 2. I suspect they wanted me to test it with the Surface Book 3...BUT! I just plugged in every Surface I have to see what would happen.

My wife has a Surface Laptop 2 she got herself, one son has my 6 year old old Surface Pro 3 while the other has a Surface Go he got with his allowance. (We purchased these over the last few years.) As such we have three existing Surface Docks (original) - One in the kids' study/playroom, one in the Kitchen as a generalized docking station for anyone to drop in to, and one in my office assigned me by work.

We use these individual Surfaces (varying ages, sizes, and powers) along with my work-assigned Surface Book 2 plus this loaner Surface Book 3, so it's kind of a diverse household from a purely Surface perspective. My first thought was - can I use all these devices with the new Dock? Stuff just works with a few caveats for older stuff like my Surface Pro 3.

RANDOM NOTE: What happens when you plug a Surface Pro 3 (released in 2014) into a Surface Dock 2? Nothing, but it does get power. However, the original Surface Dock is great and still runs 4096 x 2160 @30Hz or 2960 x 1440 @60Hz via mini DisplayPort so the Pro 3 is still going strong 6 years out and the kids like it.

So this Surface Dock 2 replaces the original Dock my office. The Surface Dock 2 has

  • 2x front-facing USB-C ports (I use these for two 4k monitors)
  • 2x rear-facing USB-C ports
  • 2x rear-facing USB-A 3.2 (10Gbps) ports
  • 1x Gigabit Ethernet port
  • 1x 3.5mm audio in/out port
  • Kensington lock slot - I've never used this

First, that's a lot of USB-C. I'm not there yet with the USB-C lifestyle, but I did pick up two USB-C to full-size DisplayPort cables at Amazon and I can happily report that I can run both my 4k monitors at 60hz plus run the main Surface Book 3 panel. The new Dock and its power supply can push 120 watts of power to the Surface with a total of 199 watts everything connected to the dock. I've got a few USB-C memory sticks and one USB-C external hard drive, plus the Logitech Brio is USB 3, so 6 total ports is fine with 4 free after the two monitors. I also Gigabit wired the whole house so I use the Ethernet port quite happily.

Initially I care about one thing - my 4k monitors. Using the USB-C to DisplayPort cables I plugged the dock into two Dell P2715Q 4ks and they work! I preferred using the direct cables rather than any adapters, but I also tested a USB-C to HDMI 2.0 adapter I got in 2018 with some other Dell monitors in the house and that worked with the Surface Book 3 as it had previously with the Book 2.

SURPRISE NOTE: How does the super-thin Surface Pro X do when plugged into a Surface Dock 2? Amazing. It runs two 4k monitors at 60 Hz. I don't know why I was shocked, it's listed on the support page. It's a brand new device, but it's also the size and weight of an iPad so I was surprised. It's a pretty amazing little device - I'll do another post on just the ARM-based Surface Pro X another time.

One final thing about the new Dock. The cable is longer! The first dock had a cable that was about 6" too short and now it's not. It's the little things and in this case, a big thing that makes a Dock that much nicer to use.


All in all, I'm very happy with this Surface Book 3 having been an existing Surface Book 2 user. It's basically 40-50% faster, the video card is surprisingly capable. The SSD is way faster at the top end. It's a clear upgrade over what I had before, and when paired with the Surface Dock 2 and two 4k monitors it's a capable developer box for road warriors or home office warriors like myself.

Sponsor: Have you tried developing in Rider yet? This fast and feature-rich cross-platform IDE improves your code for .NET, ASP.NET, .NET Core, Xamarin, and Unity applications on Windows, Mac, and Linux.

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

Windows PowerToys FancyZones is the essential window manager for Windows 10

May 12, '20 Comments [7] Posted in Open Source | Win10
Sponsored By

Last year Microsoft rebooted PowerToys and it's open source and on GitHub. It's a few months later and PowerToys is getting even better. You can download and install it from releases.

FancyZones is one of the highlights of PowerToys. I'll do other blog posts on the other awesome apps and applets, but FancyZones is special.

Fancy Zones Editor

FancyZone is a Windowing Manager for Windows, ahem. That means it helps you MOVE AND SNAP your windows to known regions, which is way easier than MOVE AND ENDLESSLY FIDDLE WITH your windows.

You likely have a limited number of things you do with your machine - believe it or not - and you likely find yourself in a finite number of "layouts." You likely do this naturally but you're wasting time getting your windows into those configurations.

Default Fancy Zones layouts

FancyZones solves all that. You may a layout or layouts and then shift drag your windows to a zone and they pop/snap into place.

It's absolutely essential for large monitors and once you get used it to you'll be hooked. Go get all the open source PowerToys here

Sponsor: Have you tried developing in Rider yet? This fast and feature-rich cross-platform IDE improves your code for .NET, ASP.NET, .NET Core, Xamarin, and Unity applications on Windows, Mac, and Linux.

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

Microsoft Build 2020 registration is not only open, it's FREE, it's LIVE, it's VIRTUAL, and it is all FOR YOU

April 30, '20 Comments [48] Posted in Win10
Sponsored By

Register for Microsoft BUILDMicrosoft Build 2020 is upon us, registration is open NOW. Stop reading this blog post and go register. I'll wait here.

Done? Sweet.

It's not the Build we thought it would be, but it's gonna be special. It's BUILD. Marketing says not to use ALL CAPS because it's Microsoft Build for them. For me, it's BUILD. It's BUILD at HOME. It's BUILD for YOU. It's BUILD for US. It's VIRTUAL BUILD.

A ton of folks are working hard to make Microsoft Build 2020 something special when it kinda feels like there's not a lot of special stuff happening.

It needs to be about humans as much as tech. More than tech. We build (BUILD!) stuff for each other - that's the whole point and sometimes it takes a situation like the one we're in to be reminded of that.

What are we building for you this year?

Microsoft Build 2020 will be 48 hours starting May 19th at 8am Pacific Time with Satya himself! Then - scandalously - I'm doing the opening keynote with some of my favorite people and wonderful colleagues who will join me in a parade of demos, technical context, continuous learning, innovation, and I'm sure my children will interrupt me even though the calendar is clearly marked BUILD (note the brand-violating ALL CAPS) because "do not disturb" means nothing these days! :)

Starting the 19th we'll kick off...

  • 48 hours of continuous learning
    • There's a TON of LIVE content and everything will be recorded so if you miss something LIVE you can catch up on YOUR schedule.
  • We are in your timezone
    • o    We’re bringing the experts to you – in your time zone! We'll do sessions 3 times (spread out every 8 hours) so you can spend time with the devs and PMs that build the stuff you use every day. No need to stay up until 2am, we'll do it for you. (Don't worry, we'll take the week off after! We're doing this because we love it.)
  • Enhance your learning with LIVE sessions - We'll have shorter and more LIVE sessions and then
    • Those starter sessions then will have longer recorded on-demand sessions to explore after the event. It's Netfl*x for Nerds.
  • Live Q&A with experts
    • Be sure to register (don't be anonymous) so you can do LIVE Q&A with the folks in the know
  • Community connections
    • Sometimes the best track at a conference is the Hallway Track and we want you to spend time with like-minded people in a positive environment so we'll have ways for you to self-organize and step into your own space to share and learn.
  • Registering for the event is your all access pass to all sessions
  • If you're a teacher, we'll even have content for your student and new learners!
  • 48 hour workshops with Build on Twitch
    • For a change of pace and style, we'll have your favorite Live Coders doing long form workshops (1-3 hours) LIVE on Twitch.

Whether you've got 30 min, an hour, or you've cleared your schedule and stay up for a few days with us, I know you'll have a great time. Microsoft Build 2020 will be unlike anything *I've* ever be involved in. I'm working hard with my friends to put together an unprecedented Developer Keynote for an unprecedented situation. Better yet, I get to be the opening act for ScottGu (look Ma, I made it), Rajesh Jha, and other Microsoft luminaries far above my pay grade.

I'm really proud of what we're working on and I'm looking forward to sharing it with you all. You're still reading? Nice. Go register for Microsoft Build 2020 and leave a comment below on what you want to see from us!

This week's blog sponsor: Couchbase gives developers the power of SQL with the flexibility of JSON. Start using it today for free with technologies including Kubernetes, Java, .NET, JavaScript, Go, and Python.

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

Review: Logitech MX keyboard and mouse - MX Keys and MX Master 3

April 28, '20 Comments [18] Posted in Reviews
Sponsored By

Logitech makes some beautiful keyboards and mice. Frankly, for me there's just Logitech and Microsoft in the keyboard and mouse game. I've never been a big fan of mechanical keyboards. I like a soft touch and a clear soft key throw.

I've gone back and forth between Microsoft classic keyboards like the Ergo 4000, but for Mice, I've been Team Logitech for YEARS. The MX Master Vertical is a fantastic product. Rock solid, long battery life, great vertical ergonomics, and USB-C to recharge batteries that last over two months. Lovely.

NOTE: Logitech recently give me their latest MX Master series - Keys, Palm Rest, and the 3rd gen MX Master 3 Mouse to review. As is with all the rare times a company sends products for review, I donate the gifted products to a local charter school. If I truly like the product, I will - and do - purchase the products directly with my own money.

Logitech MX Master Mouse

These are premium devices and they have a weight to them that was surprising. I don't mean weight like heavy, more like substantial. The keyboard is about 2 lbs which means it doesn't feel cheap and it'll stay put, but it's not an unruly weight.

The MX Master 3 mouse is 10 ounces and pushes smoothly. I have long ago standardized on the Wow!Pad Graphite Gaming Pad as it's cheap and lasts forever and the MX glides nicely on it with minimal friction. The scroll wheel - they call it magspeed - uses electromagnets and can switch between the clicky ratchet tactile scroll and a disturbingly smooth frictionless scroll. It's a click to switch between them. I like Ratchet for code and Smooth for long form reading. There's a center scroll and clever configurable thumb-scroller.

The mouse is multi-OS and supports Bluetooth, natch, but also the long time Logitech Universal Receiver standard. If you already have a Logitech receiver, adding a new device is trivial.

Logitech MX Master Series

Logitech MX Keys

Let me gush about this keyboard for a second. It's got substance. I don't like a cheap plasticky feel and the MX Keys has a solidity to it, a concreteness that you kinda have to feel to appreciate. It's nearly 2 lbs and I like that. This isn't a cheap keyboard and it doesn't feel cheap. I also expect a keyboard that costs $100 to last for YEARS. I feel this will.

I noticed that the "Windows Key" isn't a Windows key. This is a non-denominational keyboard that loves everyone and every OS. In fact, their Logitech Options (optional) software can even let you move from machine to machine in the same room, copy paste across operating systems, and move the mouse from screen to screen quite happily. So if you, like me, appreciate more than one operating system you'll also appreciate that little detail.

The MX keys basically assumes that you're a multi-computer office and has three dedicated keys to that fact. It, too, charges on USB-C quickly and easily and I just keep a cable around to top off the keyboard and mouse on the rare occasions they need the topping up.

As a touch typist I didn't think I'd care about illuminated keys but it's a lovely accenting touch adds something.

Logitech MX Keys

Frankly my only complaint is that this isn't an ergonomic or split keyboard. If they could just pop it into two pieces that would angle off to either side, it'd be the perfect keyboard. I added the palm rest but it doesn't attach to the keyboard, it is a secondary "along for the ride" floating accessory.

The keys have convex dips that feel nice and your fingers comfortably slip into them. The throw is shallow, more than a laptop, less than a Microsoft Ergo keyboard. The throw is similar to the Microsoft Surface keyboard line, but a bit crisper. They keys are soft and low-profile and sharp, never squishy.


Logitech Options Software is clear and easy to use, unified across the product line and allows you to easily mix and match your new mouse with your old keyboard, or vice versa. Everything can be remapped and customized.

The optional Logitech Flow is similar to long time OSS options like Synergy but takes it to the next level with file-sharing. If you have two or three machines in your office that you regularly need to control (especially if you're mixing Windows and Mac) this may be the perfect keyboard+software solution for you.

Logitech Options Software

I'm very happy with this keyboard and mouse and I'm sold on the mouse already. I'm going to give it another month before I decide to purchase the keyboard. Both are excellent high-end products that you won't go wrong with. Again, the only caveat with the keyboard is that it's not ergo, but that's up to your taste.

The MX Mouse isn't vertical but it's extremely comfortable. If you prefer a right-handed ergo MX option, the MX Vertical Mouse is amazing and long ago replaced my Anker Vertical Mouse. In a word, Logitech's mice are unstoppable.

This week's blog sponsor: Couchbase gives developers the power of SQL with the flexibility of JSON. Start using it today for free with technologies including Kubernetes, Java, .NET, JavaScript, Go, and Python.

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.