Scott Hanselman

Unofficial, machine-generated summaries, as of 2026-11-09.

↗LINQ to XML
Performance Testing a DevDrive on Windows 11 LIVE and RAW with ZERO EDITS
  • Dev Drives bring the ReFS file system to ordinary Windows 11. Hanselman says they shipped in the Windows 11 "October moment" (13 October), needing version 22621 or later, and are created under Settings > developer features as either a VHD or a real partition; he carved a 51,200 MB (the minimum) D: partition out of unallocated space on the same physical disk as his NTFS C: drive.
  • The big gain came from Defender's async scanning, not the file system. His first Meadow Project Lab samples build (about 20 projects) took 49.95 s on both drives; only after he turned on "Dev Drive protection" (scan threats asynchronously on trusted Dev Drives) did the Dev Drive run drop to about 28 s, which he credits to the antivirus change "more than … the file system".
  • Small, CPU-bound builds gain modestly; disk-bound work gains more. With async on, his Hanselminutes podcast site built in about 2.37 s against 2.71 s on C: (about 12% faster) and dasBlog in about 3.74 s against 4.5 s (about 18%); he warns that a Dev Drive only helps disk-bound builds, and his 32-thread machine's compiles showed as CPU-bound in Task Manager.
  • Package caches and temp folders belong on the Dev Drive, not tools. Following Microsoft's documentation, he pointed a user-level NUGET_PACKAGES environment variable at D:, after which dasBlog built in 4.44 s against 5.89 s on C: (about 25% faster); he notes the same applies to temp, npm, pip, cargo, Maven and C++ caches, and says he believes Dev Home and Visual Studio will automate this in future.
  • He reports 10–50% speedups and calls the test informal. He says this is one take and "not a lab", claims block copies on ReFS can be 80–90% faster (asserted, not measured on screen), plans to move all his source to the Dev Drive, and asks viewers who do rigorous, repeatable benchmarking to publish their own results.
How to set your Default Speaker/Audio/Sound Output on Windows - Power Tools and Tips for Pros
  • Too many sound devices is the usual cause of lost audio. Hanselman made the video after his son couldn't tell where his sound was going: headphones, Bluetooth, HDMI monitors with speakers and virtual devices (Oculus, NVIDIA Broadcast) all show up as outputs. Right-clicking the taskbar volume icon opens the output picker. To find the right device, he switches between devices while clicking the volume slider to make it beep, or plays music.
  • Rename devices and disable the ones you never want. Devices can be renamed and given icons in the modern Sound settings. The older classic dialog is under "More sound settings", or Win+R and mmsys.cpl, and there he used "Don't use this device" to hide the speakers on his three HDMI-connected Dell monitors. His warning: disabled devices disappear, so you have to remember you turned them off.
  • Set the default device and the communications default separately. He found NVIDIA Broadcast set as his default communications device for Teams and Zoom and moved that to his headset, leaving his 5.1 speakers as the main default.
  • The same controls apply to inputs, so disable stray microphones. On his gaming PC he disabled the front mic jack and his Logitech Brio webcam mic, so a call or recording can't quietly pick the wrong microphone.
  • A third-party volume app beats the built-in per-app mixer. He recommends EarTrumpet, a free third-party app from the Microsoft Store by Rafael Rivera and others (he thinks it is also on GitHub). It replaces the taskbar volume icon with per-device and per-app volume, respects devices you have hidden, and still links to the legacy Windows dialogs.
Review of the Elecfreaks CM4 XGO Robot Dog kit with Raspberry Pi Compute Module
  • The robot was a free review unit, not a paid video. Hanselman discloses that Elecfreaks sent him the XGO Lite CM4 robot dog to review but did not pay him for the video. It runs on a Raspberry Pi Compute Module, which he says is squarely in his interests, along with block-based programming he uses when teaching at schools.
  • The hardware is unusually well built for the price. He points to careful packaging and an all-metal body with many servos. It has a front camera doing on-device hand recognition on a 1.5 GHz ARM Cortex, plus a grabber arm he uses by remote control to pick up a red ball. It can walk or trot. Elecfreaks advises not letting the battery drop below 20%.
  • Network setup works but should be easier. The dog joins Wi-Fi by scanning a QR code from the app or by connecting to a phone hotspot with a name it recognizes. He recommends a 2.4 GHz IoT network for compatibility.
  • The programming tool lacks polish. The XGO Blockly editor is a fork of Google Blockly, Apache-licensed, so Elecfreaks needn't publish its changes, though he'd like them to. It loads from a bare public IP address and talks to the robot over WebSockets across domains. Chrome and Edge blocked that and Firefox didn't. He wants it cloneable to run locally or in a container, or else served with a domain name and SSL certificate.
  • He rates it highly despite the steep price. His score is 8 out of 10. At $599 he calls it an investment, "2 Xboxes", and says it is limited only by your ability to program it in Python or blocks. He plans to give it to a local high school robotics team.
The C# DevKit is out and gives you a complete .NET experience inside VS Code!
  • Building from the command line works but gives no editor help. Hanselman builds a console app with dotnet new console, dotnet build and dotnet run on .NET 8, then a release candidate. Editing in Notepad gets no syntax highlighting and no IntelliSense, which is why people use an IDE.
  • A full IDE shows the project's logical structure, not its files. Visual Studio's Solution Explorer isn't a file view: it shows libraries, analyzers and the target framework. He also shows IntelliCode's starred machine-learning suggestions, IntelliSense and GitHub Copilot. The released Visual Studio wouldn't open the .NET 8 project, so he had to switch to Visual Studio Preview.
  • The new extension brings full-IDE features into the lightweight editor. Until then VS Code had only a language server, he says, and showed the raw files, including bin, obj and the project files. The C# Dev Kit, the new official extension, adds Solution Explorer, a Test Explorer and Roslyn-powered code navigation, and installs the base C# extension and runtime with it. It runs on Windows, Mac, Linux and Codespaces. You sign in with the same account as Visual Studio Community or a paid licence.
  • His demo covers debugging and tests on a real project. He runs F5 debugging with breakpoints, watches and locals. On his Hanselminutes podcast site he browses project references and package versions, then runs the unit tests from Test Explorer. The same project opens in both Visual Studio and VS Code.
  • He says it became generally available that day. It is installed by searching "C#" in VS Code's extensions, and he says it updates automatically. "Today" refers to the recording date.
Reviving a Microsoft Zune in 2023
  • Reviving a Zune in 2023 is four separate problems. Hanselman, working with a Zune 30, a Zune HD and a small Zune, splits it into updating the firmware, installing the software, getting the PC to see the device, and getting content onto it.
  • Firmware updates depend on a community site faking Microsoft's servers. The Zune software still phones home to zune.net, but nobody answers; zuneupdate.com, run by a community member rather than Microsoft, has you change DNS settings and the hosts file and run a local server so the PC answers itself and the firmware can be updated.
  • The software installs, but Windows 11 will not recognise the device. The installer is zunepackage.exe and needs .NET 3.5, which Windows should offer to install or which can be added through Windows Features; on Windows 11, he says, plugging the Zune in just produces the connect and disconnect sounds.
  • The driver fix means forcing a file into system32. A fix he credits to Reddit users is copying a file into the en-us folder under system32; he traces the failure to a MUI file for the Zune co-installer DLL that lacks permission to be copied there, so you take ownership as admin and copy it by hand, which he did after the install failed with an error that it "requires an interactive Windows station". He also points to a GitHub tool, the Zune modding helper, with a heavy caveat: it is unsupported and he would not use any of this on a machine you care about.
  • His working answer was old hardware for old hardware. Rather than keep fighting Windows 11 — though he says he won't give up on it — he put Windows 8 on an old laptop, where the Zune software installed and recognised the device and he copied video onto it with no workarounds.
Building an Apple I from Parts with SmartyKit.io - Part 3
synopsis

In the third livestreamed session of his SmartyKit Apple I build, Hanselman gets a keyboard controller feeding a video controller on breadboards, with no CPU or memory yet. Keypresses show up as ASCII on a row of LEDs and the small display powers on. He puts this at step 70 of the kit's online instructions, "two of six" stages, with CPU, memory and the original 1976 ROM left for next time.

The kit and where it stood. SmartyKit sells a boxed set of chips (CPU, RAM, ROM, video) with pre-cut wires and an interactive online assembly guide, aimed at teaching how computers work. He describes the Apple I as Wozniak's 1976 6502 machine that came before the Apple II, and his build as a kit approximation of it. A month earlier he got stuck on a bad keyboard decoder chip. The company sent a replacement, and he opens by showing it working on a test bed, with a $10 PS2 keyboard from Goodwill.

Checking before building. He uses a cheap multimeter–oscilloscope hybrid to show the clock LED's waveform once he finds the right range and timebase. He checks each resistor before placing it: 2.2k pull-ups, a 10k, and a 220 Ω on the clock LED. One reading fluctuated and came out too high until he took off the alligator clips, and then it read the expected 2.2k. He calls himself "paranoid" and says testing also helps him learn.

Video controller. He takes apart the keyboard test bed so he can follow the kit's order. Then he places the video controller at the top of the stack, distributes power and ground from the rails, and wires a four-line bus and pull-up resistors. Viewers in chat help him locate board positions from the docs. One spots a wire hidden under a pop-up in the instructions, which he had missed. The screen turns on, which he calls only the "hello world" stage.

Keyboard controller. He adds the oscillator crystal and capacitors, power, the 220 Ω clock LED, an eight-wire data bus from D6 to D13, and the PS2 connector's data and clock lines. On power-up the LEDs light with each keypress's ASCII code.

Why bother. He says there is no practical reason beyond fun. He sets it against talk about ChatGPT: "somebody has to understand how to do this or the system breaks down." He calls this "driving stick shift" and repeats the joke that computers are rocks we put lightning in. What he leaves for the next session is plugging in the CPU and memory, booting the Apple I ROM, and getting the RCA video out to OBS through an HDMI adapter.

  • A breadboard kit rebuilds the Apple I step by step. Hanselman is following SmartyKit's online assembly instructions, with chips for CPU, RAM, ROM and video, and pre-cut wires; he describes the Apple I as Wozniak's 1976 6502 machine that preceded the Apple II. Last session stalled on a bad keyboard decoder chip, which the company replaced, and he uses a $10 PS2 keyboard from Goodwill.
  • Measure parts rather than trust colour bands. He uses a cheap multimeter–oscilloscope hybrid to see the clock LED's on/off waveform, and tests each resistor (2.2k, 10k, 220 Ω) before placing it. One reading was "surprisingly large" and fluctuating until he removed the alligator clips, at which point it read the expected 2.2k.
  • The instructions can hide a step. A viewer noticed a wire he had missed because a pop-up covered part of the instructions; he says the circuit worked without it but he would probably have had to debug it later.
  • Keyboard and video controllers now work without a CPU. The video controller's small screen powered on, which he calls only the "hello world" equivalent. With the keyboard controller wired to it over an eight-wire data bus, keypresses show as ASCII on a row of LEDs, putting him at step 70, "two of six" stages. Next time he plans to add CPU and memory, boot the original 1976 Apple I ROM, and send the RCA video out via an HDMI adapter to OBS.
  • The point is understanding the foundations. He says there is "absolutely no reason" to do this "other than it's awesome". He contrasts it with talk about ChatGPT: "somebody has to understand how to do this or the system breaks down", likening it to driving stick shift and to the joke that computers are rocks we put lightning in.
Where's the FILE? Cloud Files for the Generation Gap - Computer Stuff They Didn't Teach You #23
  • Knowing one layer beneath your tools makes you better at them. Hanselman argues that Generation X and millennials understand the file system while Generation Z takes it for granted; his 17-year-old does not know what one is because the iPad hides it. He compares it to knowing a stick shift or how to change a tire, and says he is not gatekeeping.
  • Cloud drives show files that often aren't really on your computer. In OneDrive a green circle means local and in the cloud, while a bare cloud icon means cloud only ("on-demand files"). He uses the command prompt (cd, dir) to show a 26 MB comic listed in parentheses as a placeholder, then shows it losing the parentheses after "Always keep on this device" and regaining them after "Free up space".
  • Deleting files to "free space" is usually tidying mental clutter. He says non-technical people delete things thinking they slow the computer, when on-demand files mostly take no space. The same placeholder behaviour appears in Dropbox, which decides itself whether to keep a downloaded file, and in iCloud, where he shows his Mac desktop mirrored on Windows and on his iPhone with download buttons. He also notes that a file on a cloud website may be only a preview.
  • Downloading a cloud document turns it into a separate copy. He saves a Google Sheet as Excel into iCloud Drive, so it is now a copy in another format and no longer the live shared document. He concedes that staying inside the Google Sheets ecosystem is probably smarter, but argues that knowing how to move files between clouds keeps you from being locked in.
  • Keep your own copies, because cloud access can vanish. He cites the backup rule of three: three copies, in two formats, one offsite, for example a hard drive, Dropbox, and a DVD or USB key in a safety deposit box or with family. He also treats the headless server in his closet as a "local cloud", and closes that "your phone is lying to you" about what is really on it.
Why We do Tech Outreach with Coding By Sophy - Hanselminutes Podcast 879
synopsis

Sophy, a fintech software engineer nearly five years in who posts on TikTok as Coding by Sophy, ends up holding that anyone willing to do the work can get into tech, that the honest message is that it is hard, and that a career lasts through continued learning, asking for help, and the confidence to disagree.

Why the outreach. Sophy does it alongside a full-time job to be representation for underrepresented minorities. The first tech person in the family, Sophy recalls a fellow National Society of Black Engineers member at UC Irvine doubting they would finish, when Sophy had never seen a Black woman engineer in industry.

Hard, but open to anyone. Against Hanselman's "six months to six figures" creators, Sophy stresses the grind and rejects the "naturally smart" myth. Sophy will not tell anyone they cannot do it, and backs bootcamps where a four-year degree isn't an option.

After the degree. Sophy describes phases: discovering the field, struggling through undergrad, then finding college taught little about the job. The first six months brought doubts about asking questions, which eased on hearing others ask the same ones. Hanselman adds that after three decades he still gets stuck.

Help and disagreement. Sophy now time-boxes struggle before asking, because asking teaches the helper's reasoning. Against Hanselman's picture of colleagues who argue hard and still trust each other, Sophy reports a first step: defending a solution against a more senior engineer's, which the team adopted. Both stress that tech has multiple right answers and nobody knows everything.

Reach. Of Sophy's videos for 50,000-plus TikTok followers, dozens draw one to three thousand views and one drew two million, for reasons Sophy cannot explain. A recent Creator Fund payout was about $8.40.

  • Sophy's outreach exists to give underrepresented minorities visible role models. Sophy, a fintech software engineer who posts as Coding by Sophy, is the first tech person in the family. Sophy recalls a fellow member of the National Society of Black Engineers at UC Irvine holding off on wearing a computer-science shirt until sure of finishing, and says Sophy had never seen a Black woman engineer in industry. Messages saying "you got me into coding" are what confirm the impact.
  • Tech is hard but possible, and saying so isn't gatekeeping. Hanselman contrasts creators who promise six figures after six months of light study. Sophy says getting there took grind, rejects the "naturally smart, coding since two" image ("I'm not naturally smart, I actually work hard"), and refuses to tell anyone they can't do it. On bootcamps, Sophy holds a four-year degree but is not against them: take the university route if you can, and try a bootcamp if you can't.
  • The degree starts the work, and confidence comes in phases. Sophy says college taught "kind of nothing" about being a software engineer, and the first six months in a corporate job brought doubts about whether to ask questions. Confidence grew from hearing others ask the same question, and Sophy measures growth by no longer being nervous in a one-on-one held since internship. Hanselman, at 30-plus years, adds that he spent an hour stuck on C# before a colleague pointed him to the Dockerfile.
  • Time-box your struggle, then ask for help. Sophy says stubbornly refusing help hurt their mood and sleep, and it robs you of the helper's thought process, which would make the next instance faster. Sophy now does due diligence first, then asks sooner. Hanselman frames a senior engineer's value as having seen a problem before, and calls life "a way bigger group project" than school.
  • Healthy disagreement depends on never questioning someone's right to be there. Sophy has watched senior engineers go at it but has not had heated arguments; recently Sophy nervously defended a solution against a more senior colleague's, and the team adopted it. Hanselman's version is to fight, disagree, then commit without "flipping the bozo bit". Both say tech usually has multiple right answers and nobody knows everything; a former manager once called Sophy the team's expert after two weeks on a project.
The Web's Next Transition with Kent C. Dodds - Hanselminutes Podcast 878
synopsis

Kent C. Dodds, who left Remix a few months earlier to build the education site epicweb.dev, argues from an All Things Open keynote that web architecture is entering a fourth era, progressively enhanced single-page apps (PESPA). These keep a baseline that works without JavaScript, share UI code between server and client, and keep existing non-JavaScript back ends as APIs. Dodds names Remix as the first implementation.

The eras so far. Dodds lays out multi-page apps, then multi-page apps with "JavaScript sprinkles", then SPAs. Multi-page apps leaned on Post/Redirect/Get, and the back-button "confirm resubmission" warning is what skipping it looks like. SPAs lead in active development, Dodds says, though not by any measurement.

Performance in context. Hanselman's framing is that native apps hide their size behind installation while websites get no such allowance. Dodds partly agrees, but says a megabyte of JavaScript costs more than a megabyte of PNG because it must be parsed and run. Performance is not the most important thing for every app, and front-end developers shave five milliseconds where an infrastructure change could save 500.

What SPAs broke. Calling preventDefault on links and forms means hand-emulating browser behaviour, including race conditions and rolling back optimistic UI, as with a favourite on a deleted tweet.

The PESPA answer. Progressive enhancement was dropped because it duplicated code; PESPA avoids that by running the same UI code in both places. Next.js, SolidStart and SvelteKit are following Remix.

Other back ends and the edge. Other back ends stay, with the UI moved slightly onto the server, as in PayPal's Node tier. Edge runtimes must answer within milliseconds, and Dodds prefers fly.io's distributed servers. Asked whether apps could enhance by device power, Dodds has not seen it done but thinks Remix could.

  • A "confirm resubmission" warning on Back signals an architectural flaw. Dodds says sites such as airlines that warn "don't hit the back button" returned HTML in response to a POST, which puts the POST in the history stack. Post/Redirect/Get, redirecting after the POST, would remove both the warning text and the browser dialog.
  • Single-page apps dominate what developers actively build, not deployments. Dodds distinguishes time spent developing from sites deployed: a library using the bitwise operator that ships in WordPress could put it on 90% of sites while few developers know it. Dodds admits to not having measured this, but would be "very surprised" if SPAs were not on top by a large margin.
  • Preventing browser defaults makes apps re-implement browser behaviour, usually worse. SPAs call preventDefault on links and forms, then route on the client and send JSON with fetch, so they take over the race-condition handling the browser did automatically. Dodds's example is Twitter's optimistic UI: rolling back a favourite on a deleted tweet is tricky, when a full page refresh would simply have shown the truth.
  • The next transition is progressively enhanced single-page apps. Dodds's term is PESPA: a baseline app that works with the web's most basic features, enhanced with JavaScript, and avoiding code duplication by running the same UI code on server and client. Dodds, who worked at Remix for about 10 months, calls it the first implementation and says Next.js, SolidStart and SvelteKit are following.
  • Non-JavaScript back ends can stay as APIs. Asked about PHP, Ruby or C#, Dodds says to keep the existing back end for logic and shift the front-end UI code slightly onto the server, as PayPal did with a Node middle tier over Java services. Edge and CDN runtimes are constrained (Cloudflare wants a handful of milliseconds), so Dodds hosts a personal site on fly.io, which runs full long-running servers in many regions to be closer to users.
Hachyderm's Kris Nova on running a Mastodon Server - Hanselminutes Podcast 872
synopsis

Kris Nova, who works at GitHub after Azure, ends the conversation committed to keeping Hachyderm, the Mastodon server they started in a rack at home, open to new users until perhaps 200,000, having moved it to Hetzner because a home connection could not carry its outbound traffic. Along the way Nova argues that Mastodon's performance problems lie in how it schedules work and touches its data, and that followers lost in migration are a cost of federation rather than a bug.

Hardware without gatekeeping. Nova keeps the rack to stay in touch with building things, but says it reflects ten years of savings and no kids and should not be a prerequisite for anyone. Hanselman offers his six Raspberry Pis running k3s, set up with Alex Ellis's k3sup, as a way in for about $150.

Slowing down on purpose. Records played through a tube receiver, a side lasting about 15 minutes, help Nova's ADHD; they now schedule this time and recommend counting your smiles. Their book Hacking Capitalism began as the context a technical book on distributed operating systems needed first.

Dangerous things, cautiously. Skateboarding, Nova says, taught them calculated risk and recovery, which is why exposing a home IP felt manageable; they want juniors to have the same freedom to fail, provided they write things down like scientists. Hanselman's gloss is that psychological safety means not flipping the bozo bit on someone who asks a question.

Why it stayed open. Hachyderm grew from about 700 users on November 3, 2022 to 30,000 weeks later. Nova would not turn away people leaving Twitter, which they had treated like an RPG status bar. Growth outran the rack: decade-old Dell PowerEdges went in straight off the moving truck, and the problem became cutting over without days of downtime. One day brought a terabyte of egress against 200 Mb of upload; bad disks slowed media, Sidekiq queues backed up, and memory filled.

Inside Mastodon. Nova has rebuilt federation on a laptop and finds the queues arbitrary and overlapping, like old cron jobs, tuned by hand. The Rails code reads and writes whenever it likes, which they call the biggest opportunity for improvement. They avoid Kubernetes for now, despite a working Helm chart, to understand the application before possibly rewriting parts.

Migration and federation. Moving followers needs an HTTP-signature handshake with every instance, so a neglected server's queue may never finish. Hanselman's 850 stranded followers cluster on mastodon.online and qoto.org, and there is no admin retry. Nova calls it a consequence of federation and advises large accounts to choose an aware instance or run their own; when Hanselman says he does not take his following seriously, Nova points to streamers whose followers are their income.

  • Nova kept Hachyderm open rather than turn Twitter refugees away. The server went from about 700 users on November 3, 2022 to 30,000 a couple of weeks later; Nova says people were breaking up with a part of their identity and they "didn't have it in me to say no". They intend to keep sign-ups open until perhaps 200,000 users, closing only briefly, as during recent DDoS threats; a legal entity is being formed behind it.
  • Upload bandwidth at home, not compute, forced the move off the rack. One day saw a terabyte of egress against a small-business line advertised at a gigabit down and 200 Mb up, so serving users saturated the upload; the instance is moving to Hetzner bare-metal "auction servers". Nova describes cascading failures: bad disks slowed media reads, the Sidekiq queues behind them filled, and memory filled after that.
  • Mastodon's waste is unscheduled queues and unplanned database access. Nova finds the Sidekiq queues arbitrary and overlapping, like old cron jobs, and tuned by hand (threads times concurrency kept under the DB pool); the Rails code reads and writes whenever it likes, which they call the biggest opportunity for improvement. They chose not to run it on Kubernetes, despite a Helm chart others use successfully, so they understand the application before possibly rewriting parts.
  • Followers lost in migration are stalled federation handshakes, not losses. Every instance must re-verify each follow with HTTP signatures, so a neglected server's queue may never finish; Hanselman's 850 stranded followers sat on mastodon.online and qoto.org, and Nova says there is no admin button to retry. They call this a consequence of federation and advise large accounts to join an instance aware of it or run their own.
  • Seniors should give juniors room to fail safely. Nova credits skateboarding with teaching them to take calculated risks and recover, which is why exposing a home server to the internet felt manageable, and wants that freedom for early-career people provided they work like scientists and write things down. Hanselman's own gloss is that psychological safety means not "flipping the bozo bit" on someone who asks a question.
What If 2 with Randall Munroe on the Hanselminutes Podcast 865
synopsis

Randall Munroe, author of What If 2 and the webcomic xkcd, ends up describing his work as disciplined curiosity: answer the absurd question quickly, follow the rabbit holes it opens, state plainly how sure you are, and go to whoever actually knows, whether a librarian, a cookbook or an astronaut. He says he still finds it hard to imagine a better job, because xkcd's format lets him draw whatever he is into that day.

Uncertainty as a habit. Munroe, a physics graduate, explains his frequent disclaimers as a way of making uncertainty explicit. He checks a constant in two sources, would check a third if his life depended on it, and wants readers to add their own doubt rather than treat him as an authority. He does the arithmetic in Mathematica, whose unit-aware calculation he calls "the dream", and chooses precision to suit the question: his figure of a couple of millimetres of rock for the weight-loss chapter barely moves whatever definition is used, although small density differences matter when two masses are subtracted.

Rabbit holes and librarians. A typical chapter is one research sprint, often a single day, and then digressions. Niagara Falls through a McDonald's straw comes out at about a third of the speed of light within minutes. Checking the flow rate, though, led to a US–Canada treaty with separate day and night minimums and one compliance officer per country. Six hours on overlapping Great Lakes agency websites found nothing; librarians at the Harvard Law Library, already helping him with another question, got the officers' names and biographies from the commissions themselves.

Experts, footnotes and corrections. He uses the steak-from-orbit chapter of his earlier book to show the method. He rebuilt an old NASA Flash calculator for leading-edge heating, then gave up on heat-flow equations for a cookbook. Unable to model how a raw steak tumbles at hypersonic speed, he left a footnote asking for help. Two University of Manchester doctoral students with spare wind-tunnel time ran the test: the surface seared and ablated, the inside stayed raw, and the result looked far worse than his drawing. He welcomes such corrections, and says fact-checkers catch most algebra slips and later printings fix the rest.

The astronaut and the T-Rex. Interviewing Chris Hadfield for his book How To, Munroe escalated landing scenarios hoping Hadfield would hang up, but he never hesitated. A later text about the What If 2 cover, a T-Rex on a jetliner, drew the same calm: fine near the centre of gravity, like the shuttle-carrier 747; nose down for negative G to dislodge it; and on saving the animal for science, "not my concern".

What a star smells like. A friend's random text led to six hours on olfaction. Patients whose olfactory bulb was in a radiation beam report bleach, burning hair and ozone, which he puts down to ionised mucus. Stellar plasma's free hydrogen ions would taste sour, and a chemist agreed this explains the sour taste reported in a lab criticality accident.

  • Every number carries uncertainty, so precision should match the question. Munroe says his disclaimers make his uncertainty explicit: he checks a value in two sources, would check a third "if I was going to trust my life" on it, and does not want to be cited as the authority. His "two millimeters of rock" for the 20-pound weight-loss question is deliberately loose, since sand versus bedrock moves it only between about 2.5 and 3.2 centimetres in a related calculation; he says density choices only become critical when two masses are subtracted.
  • Easy answers open rabbit holes, and librarians beat six hours of Googling. Pushing Niagara Falls through a McDonald's straw takes about a third of the speed of light, but checking the flow rate led him to a US–Canada treaty setting daytime and night-time minimums and appointing one compliance officer per country. After hours on overlapping Great Lakes agency websites, the Harvard Law Library's librarians got the officers' names from the commission itself.
  • The practical expert often beats the theory. For the steak dropped from orbit, he abandoned engineering heat-flow equations for a cookbook, and footnoted that he did not know how raw steak tumbles at hypersonic speed. Two doctoral students at the University of Manchester later tested a steak in a hypersonic wind tunnel: as he predicted, the outside seared and ablated away, the inside stayed raw, and it looked far more ragged than he drew it.
  • Test pilots answer absurd scenarios with flat, correct priorities. Chris Hadfield told him a T-Rex on a jetliner roof is fine if it stays near the centre of gravity, citing the 747 that carried the Space Shuttle; to dislodge it he would push the nose down for negative G, dive or roll. Asked about saving the dinosaur for science he replied "not my concern", which Munroe ties to the pilots' order of aviate, navigate, communicate.
  • A star would smell like ozone and taste sour. Munroe draws this from cancer patients whose olfactory bulb was in a radiation beam and reported bleach, burning hair and ozone smells, likely from ionised mucus; stellar plasma's free hydrogen ions would trigger sour receptors. He says, and a chemist he consulted agreed, that this explains the sour taste reported by a victim of a lab criticality accident with a bomb core.
Targeting Linux with .NET 6/7 and WSL (Windows Subsystem for Linux) on Windows 11
synopsis

Hanselman, speaking as part of the Microsoft team behind WSL ("we own the kernel here"), argues that a Windows 11 machine is a comfortable place to build .NET apps for Linux: Linux runs side by side with Windows, the tools cross between them without friction, and the result ships to Linux containers in the cloud.

Setup. He starts by making Windows Terminal the default terminal, then runs wsl --install, which replaces the old manual feature toggling. WSL uses a lightweight utility VM rather than Hyper-V, so it runs on Windows Home. Distros download from the Windows Store as tar files; he adds Oracle Linux 8.5 in seconds alongside Ubuntu, Kali and Debian, and wsl --list -v shows which are running or stopped.

Integration. Windows drives mount under /mnt/c, though he warns that working there is slower than on the Linux file system. In the other direction, explorer.exe . opens the Linux home folder through \\wsl.localhost, Notepad edits Linux files with line endings intact, and Linux GUI apps such as GIMP run in their own windows.

.NET on Linux. He recommends installing .NET from the official package archives, Ubuntu's or Microsoft's, which Microsoft supports. A dotnet new console app builds into a 142K Linux executable that needs only the runtime. .NET 6 is current, and .NET 7 is "a few weeks" away.

VS Code and the network. code . splits VS Code into a client and a server: the editor runs on Windows while the C# language server and debugger run in WSL. An ASP.NET app on Linux localhost port 7036 opens in the Windows browser because a WSL host process forwards the port from the internal 172.21 network.

Containers and deployment. Docker Desktop runs on WSL, so images are shared between the two sides. He builds his Hanselminutes site as a container and shows it running on Linux in Azure, deployed through Azure DevOps or GitHub Actions.

  • Getting Linux onto Windows is now one command. Hanselman shows wsl --install doing the Windows-features toggling and reboots that used to be manual, running a lightweight utility VM rather than Hyper-V so it works on Windows Home, which he says was deliberate so students without Pro can use it. Distros come from the Windows Store as tar files, as many as you like (he has Ubuntu 20.04, Kali, Debian and installs Oracle Linux 8.5 live), and he recommends the Store's WSL preview for updates to wsl.exe.
  • WSL is integrated with Windows, not a VM-in-a-box. Windows drives appear under /mnt/c, and Linux distros appear in Explorer via \\wsl.localhost; notepad.exe and explorer.exe . launch from the Linux shell, line endings survive editing on either side, and Linux GUI apps such as GIMP run in their own windows. His caveat: work on /mnt/c is slower than on the native Linux file system because it is "effectively" a network share, so keep code under /home.
  • .NET on Linux is just another distro package. He recommends the official package archives (Ubuntu's own, or packages.microsoft.com, which Microsoft supports for several distros) over tarballs or scripts, and builds a console app that is a 142K Linux executable needing only the runtime. The demo uses .NET 6, with .NET 7 described as "coming out in a few weeks" and .NET Conf on November 10.
  • The dev loop runs in Linux but feels local. code . installs a VS Code server in WSL, so the C# language server and debugger run on Linux while the editor is the Windows app. An ASP.NET app listening on Linux localhost (port 7036, on an internal 172.21 network) opens in the Windows browser because a WSL host process forwards the port automatically, which he calls the principle of least surprise.
  • Build on Windows, deploy to Linux containers in the cloud. Docker Desktop uses WSL, so the same images are visible from Windows and Linux; he builds his Hanselminutes site (862 episodes at the time) as a container and shows it running on Linux in Azure, deployed by an Azure DevOps pipeline that ran in 1 minute 36 seconds, with GitHub Actions as the alternative.
How to setup the Nightscout Diabetes Management Open Source Server on Azure FOR FREE
  • Nightscout can run on Azure for nothing, indefinitely. Hanselman, a type 1 diabetic, pairs Cosmos DB as the database with an App Service web app, both on free tiers, filling what he says is a gap in reliable write-ups for Azure. He frames this as a first run-through ("a beta test"), and says he himself pays for his own Nightscout hosting.
  • Lock the database to its free tier before creating it. He ticks "apply free tier discount" and "limit your account", which caps it at 25 GB and 1,000 resource units, more than enough for Nightscout, and keeps the database named test at a maximum of 1,000 RU because Nightscout still expects that name. In the Node.js connection string he replaces maxIdleTimeMS with socketTimeoutMS to work around what he calls a small Nightscout issue.
  • Deploy the website from a pinned Docker image on the free plan. He creates a Linux web app from the Nightscout team's Docker Hub image nightscout/cgm-remote-monitor, recommending the specific version 14.2.6 rather than latest, on the free F1 plan. The paid tiers he shows cost about $80 and $13 a month, and he calls the $13 one a reliable, inexpensive option; the web app should sit in the same region as the database.
  • Configuration is a handful of app settings, each save restarting the site. The essentials are DB_URI with the edited connection string and API_SECRET, which failed until he made it at least 12 characters; optional settings cover plugins, enabled features and the Dexcom bridge credentials. Each save restarts Nightscout, so the site needs a moment before refreshing works.
  • Confirm it worked by checking for the seven collections. He looks for food, settings, treatments, device status, activity, profile and entries in the database, and says to restart the web app or start over if they are missing; first launch then goes through the profile editor, authenticated with the API secret.
Wifi enabled C64 with WiModem talking to a BBS
  • Two hardware "lies" bridge a 40-year-old computer to the internet. Hanselman shows his Commodore 64, his first computer and recently working again. A WiModem on his Wi-Fi tells it that it is an old-style modem, and a cartridge with a Raspberry Pi inside tells it that it is a floppy disk.
  • Dialing a BBS now means connecting to a network address and port. In his terminal program, which he likens to a text-mode web browser, he switches between 40- and 80-character modes and moves from 300 to 2400 bits per second. He then "dials" an address and port (not port 80). He says the board on the other end is another Commodore 64, and it asks whether his machine can do color and graphics.
  • BBSes were social media before social media. Hanselman says people have made bulletin board systems available again. He checks his email on the board (no mail) and presents the demo as nostalgia for the fun people had calling each other's machines by phone.
Emulating a C64 1541 Floppy disk drive with a Raspberry Pi. AMAZING
  • Original 1541 drives are the weak point of a restored C64. Hanselman, refurbishing a 40-year-old Commodore 64 still in its original Sears box, says the 5¼-inch 1541 drive has moving parts, heads that drift out of alignment, and is very slow.
  • Pi1541 emulates the drive clock-perfectly, so the C64 cannot tell. The open-source project by Stephen White (whom Hanselman says he has donated to) puts a hat on a Raspberry Pi Zero, roughly a $10 board he estimates at three to four thousand times the C64's speed, and serves disk image files picked from an SD card. He stresses that only the drive is emulated, not the C64 itself: "emulation is lying" to the machine.
  • Small adapters let real Commodore hardware use modern conveniences. His second example translates between the C64's 1351 mouse and a PS/2 mouse connector, and he argues such devices let him keep original hardware while using modern mice and disk-file loading.
The best progamming language to learn in 2022?
  • No single best language; success is possible in any. Hanselman names C#, Java, JavaScript, Python, Ruby, Rust and Go, and argues people fixate on language details when they should be thinking about the larger systems languages live within.
  • Pick by enjoyment and local jobs, and ignore "this language sucks". His advice is to learn one, see whether it "feeds your spirit", check the job market where you live, and switch if it doesn't suit; he notes your favourite websites are probably written in a language someone else thinks sucks, so success is the better metric.
Don’t you miss copying your code directly from a magazine to play a game?
  • Magazines once delivered C64 games as code you typed in. Hanselman recalls that besides cassette, disk or radio, games came as printed listings in mailed magazines; a friend paid in Skittles would read the 6502 assembly aloud while he typed, and later issues added features until you had a playable game. He calls it "the coolest thing ever", and notes the channel is not a Commodore 64 channel, just his interest that week.
Did you know Ctrl-Shift-A lets you search your open tabs?!?
  • Ctrl-Shift-A searches across all open browser tabs. Hanselman's tip for having too many tabs open: press it and start typing to find a tab. The video does not name the browser.
Writing C# on a IoT Microcontroller with .NET and the Wilderness Labs Meadow Project Lab Board
  • Meadow brings plain C# and .NET to a microcontroller. Hanselman demos Wilderness Labs' Meadow F7 Feather (version two) on its Project Lab board, an expander with a screen, buttons, relays and sensor buses that removes the wiring a bare developer kit needs. He discloses that he is an investor in Wilderness Labs, says the video is not paid, and says he did not tell the company he was making it.
  • The sample weather app shows how readable the code stays. In the Project Lab samples cloned from the Wilderness Labs GitHub, he shows Wi-Fi joined in one line of C#, an onboard barometric sensor read through the Meadow Foundation sensors namespace, an OpenWeatherMap REST call deserialized straight into a typed object with async/await, and a view-model pattern for the colour screen. The app updates indoor and outdoor temperature at the top of each minute.
  • A microcontroller runs one program, not an operating system. He contrasts it with a Raspberry Pi, which runs a full Linux desktop and lasts hours on battery, while a microcontroller boots into a single program and can run for days.
  • WSL can take over USB flashing that is awkward on Windows. Flashing STM32-family devices from Windows tends to fail when they drop into DFU mode, and he shows that happening. Using Andrew Leach's WSL USB GUI, a wrapper over the command-line tools, he detaches the STM bootloader from Windows and attaches it to Ubuntu by tunnelling USB over IP, so it can be flashed from Linux without installing drivers.
  • His next project is the blood sugar display, in C#. He calls blood sugar his "hello world" and plans to rebuild his CircuitPython glucose display on the Meadow's screen, which he estimates will take "maybe an hour or two this weekend."
Hacking on an AdaFruit M4 Matrix Display with CircuitPython to show my Blood Sugar using Nightscout
  • Displaying his blood sugar is his test for any new device. Hanselman, who is type 1 diabetic and wears a Dexcom sensor, pulls his last five readings from his cloud-hosted Nightscout instance onto Adafruit's Matrix Portal M4 driving a 64×32 LED matrix. He says it covers HTTP with SSL, JSON parsing, multiple data types, a trend direction, and drawing on a tiny display.
  • CircuitPython's mount-as-a-drive workflow is ideal for learners. The board shows up as a disk drive, and saving code.py reboots it and runs the code. It also exposes a COM port for debug output, which a VS Code CircuitPython extension (by Joe DeVivo, by his account) can monitor.
  • GitHub Copilot sped up writing a language he does not know. He admits he does not speak Python. Copilot guessed the next colour after "red green yellow", filled in the full set of arrow glyphs once he started on them, and wrote the "from epoch" comment for a timestamp field, which he calls "creepy".
  • The real question is how much of borrowed code you must understand. He takes an Adafruit moon-phase sample's accelerometer maths, which uses an arc tangent plus pi, and tries values in a Python REPL: (0, −10) gave 270 and (10, 10) gave 180. He decides it is enough to know it yields a 0/90/180/270 rotation, but says knowing why bitmap fonts load only the glyphs you need (device memory is tight) does matter.
  • Working code is not idiomatic code, and he shows his own shortcuts. He could not find a way to turn the label red above 200 once its colour was set, and he maps strings like "flat" to arrow glyphs crudely. He catches every error and retries after a minute, and he spots a five-second sleep he meant to be five minutes, which raises whether to loop tightly for a clock or sleep to save power. He compares it to speaking a new language: first you make yourself understood, then you learn to sound like a native.
Moving 17 years of old legacy code and websites into the Cloud - Scott Hanselman at NDC Porto 2022
synopsis

In this NDC Porto 2022 talk, Hanselman recounts moving hanselman.com, his podcast site and his DasBlog blog off a dying physical server and onto Azure platform as a service without anyone noticing. He ends up with all of it on .NET 6, running on Linux or Windows from a single cheap App Service plan, with nearly everything held in memory. His closing argument is that the cloud's tooling, not individual brilliance, is what lets one person run like a team.

The server under the desk. As an MVP he was given what he believed was a free virtual machine. When disk-full errors began, the host, since sold to a Quebec company, found it was a physical mini-tower once kept under an employee's desk. It ran Windows Server 2003 on a 30 GB spinning drive, could not do TLS 1.3, and was 19 years old against a five-to-seven-year mean time before failure. He backed everything up first, but he no longer trusted that he could rebuild the sites.

Choosing the target. He dismisses lift-and-shift, imaging the disk with disk2vhd and running it in the cloud, as keeping a dying machine alive in the matrix. IaaS is "free like a puppy", since you still maintain the kernel. PaaS lets him care only about the runtime version.

Porting, easiest first. He moved the brochure site, then the podcast site, then the blog, from .NET 2 and 4 to .NET 6, building on both Windows and Ubuntu under WSL. The only bugs were hard-coded backslash paths. Running on Linux opened hosting about 30% cheaper and allowed Docker, where a multi-stage build compiles in a roughly 300 MB SDK image and ships a roughly 100 MB runtime image. He recommends running a personal site as the way to learn production, since only the owner carries the pager.

Making it better, not just moved. Cloud machines are slower but rich in RAM, so DasBlog's 4,964 XML files (about 384 MB for 20 years of posts) load into memory at startup. Images sit on a CDN on a separate subdomain for parallel DNS lookups, and podcast art is named by show number instead of being stored in a database. Sponsors are a text file he edits on Thursdays. Four sites share one $35 plan at about 12% CPU and 65% memory, which he says is fine to run hot in the cloud.

Tools as the 10x. Application Insights produces a dashboard showing about 5 ms average response time. Each footer links the runtime version, live commit and build log. An Azure Front Door reverse proxy split traffic 50/50 between the Quebec box and the cloud before an IP swap. He notes that load balancing, once a consultant's job, is now a checkbox.

Questions. About 70% of DasBlog was .NET Standard and recompiled unchanged, while its Web Forms templates were rewritten as Razor Pages. He says WinForms apps moved to .NET 6 run 30–50% faster and can ship as a single self-contained executable, which tree trimming shrinks to about 118 MB.

  • His "free virtual machine" was a forgotten physical PC. The host that gave Hanselman, then an MVP, a server for hanselman.com had been sold to a Quebec company. When he ran out of disk, it turned out to be a physical mini-tower once under an employee's desk, running Windows Server 2003 with a 30 GB spinning drive and no TLS 1.3. He calls the 19-year-old drive his deadline: if it stopped spinning, it would never start again.
  • He rejected lift-and-shift and moved to platform as a service. Imaging the disk into the cloud with Sysinternals' disk2vhd would be "a bandage on cancer", and IaaS is "free like a puppy" because you still patch the kernel. He ported the brochure site, podcast site and DasBlog from .NET 2/4 to .NET 6 on both Windows and Linux. The only bugs were hard-coded backslashes in paths, and Linux hosting was about 30% cheaper.
  • Docker multi-stage builds keep the compiler out of production. The build runs in a roughly 300 MB SDK container, and only the published output is copied into a runtime image of about 100 MB. He had previously been shipping the whole SDK.
  • Cloud-native, to him, means spending cheap RAM instead of databases. DasBlog stores 20 years of posts as 4,964 XML files, about 384 MB, which he loads entirely into memory for sub-millisecond reads. Images go to a CDN on a separate subdomain so browsers can parallelize the lookups, and sponsors live in a text file. He argues most apps over-engineer (YAGNI): cache for five to ten minutes, because "real time" rarely needs to be real time.
  • Cloud tooling, not genius, makes a "10x developer". He runs four sites, including Azure Friday, on one $35 App Service plan (about 12% CPU, 65% memory), arguing cloud machines can run hot. Each site's footer shows the runtime version, the live commit and its build log. He cut over through a reverse proxy (Azure Front Door), splitting traffic 50/50 with the old server before swapping, and says this once took a team.
Customizing your Windows Terminal Hotkeys and Actions
  • The command palette lists every Terminal action and its hotkey. Hanselman's pitch, addressed to people frustrated with configuring Windows Terminal, is that Ctrl+Shift+P shows each available command and what it is bound to, which surfaces actions users never knew existed; his example is find, bound to Ctrl+Shift+F, which searches and highlights text in the buffer.
  • Panes and tabs can work like a browser. Ctrl+T opens a tab and Ctrl+W closes it, alt-clicking a profile in the dropdown splits the current window into a new pane, and shift-click opens a new window. He points out that Ctrl+W for close pane and Ctrl+Shift+minus for split pane are his own bindings, not the defaults.
  • Actions live both in the settings UI and the JSON file. The Actions page in settings lets you pick a command and type a preferred hotkey; the same bindings are serialized under actions in settings.json, including commands with parameters such as split pane automatic versus horizontal or vertical. He calls the JSON the better route for advanced users because the file can be kept in a GitHub gist or a cloud drive and reused on every machine.
  • Editing in VS Code gets schema completion and a safety net. The Terminal's JSON schema gives VS Code a completion list of every command, and he says Terminal will not accept a saved file with bad syntax but reverts to a backup. He demonstrates by adding close other tabs on Ctrl+Alt+Shift+W in the JSON, which then shows up in the UI.
Celebrating Julia Liuson’s 30 years at Microsoft with some of the code she worked on!
  • A 30-year-old Access 2.0 database still accepts new data. One speaker shows Microsoft Access 2.0, which Julia worked on, on a period machine with 16 MB, a 120 MB hard drive and a 3.5-inch floppy; to get a 21K, 16-colour picture of her into it they went through a floppy-drive-to-USB-A-to-USB-C adapter chain, dithered the image to 16 colours and embedded it in the database alongside the other "employees of the day".
  • The tribute misspelled her name, which landed as the punchline. The other voice points out the last name is wrong, and the first jokes about fixing it in the database.
Inside the Microsoft Archives
  • The archive vault prizes constant conditions over cold. The archivist (addressed as Amy) says the vault is held at 55 degrees and 45% humidity for storing CD-ROM media, and that the constancy matters more than the temperature itself.
  • The collection spans shipped media, hardware and branded oddities. Hanselman is shown 8-, 5- and 3.5-inch floppies, a boxed Excel, Flight Simulator for Windows 95 (the first Windows version; earlier ones were DOS), a SideWinder controller, an internet keyboard and the Surface table. The archivist calls Clippy the most popular item, lent out as a costume, and describes animatronic DW and Arthur toys that talked and sang along with the TV show via a transponder, with add-on packs for VHS or PC.
  • Paper tape beat punch cards because a drop didn't destroy the program. The archivist shows a hex assembler shipped on paper tape, the way software was distributed before disks.
  • Original Xbox dev kits survive because an Office admin bought them cheaply. Before the console design was shown, the dev kits came in PC-style boxes; an admin found she could order them internally for $45 each, and her team wiped the Xbox OS, installed Windows and used them as desktops.
  • The archive collects partly by automatic copies, partly by donation. Internal posters are sent to it automatically, while external marketing material only arrives if teams hand it over; an Apple II on a cart is part of a larger donation meant to go on to Stanford. A rack system that would have cost $1–8 million in 2003 was, by 2008, worth so little that HP paid two people two days to dismantle and rebuild it there. The archivist says a volunteer reconditioning programme for old machines is likely, and that outside researchers get in only if sponsored, as it is not open to the public.
Client-side vs Server-side, Front-end vs Back-end? Beginner Explanation of JavaScript on the Web
  • A self-contained command-line script has no client or server. Prompted by a nephew in computer science 101 who was being taught JavaScript through Node, Hanselman runs a one-line console.log file with node myapp.js on Windows 11. He says it runs inside Node's JavaScript engine on the local machine and exits, with nothing connecting it to the outside world.
  • A Node web server is server-side code; the browser is the client. His server.js uses Node's HTTP module to return HTML for /, /student and /admin and listens on port 5000 (ports, in his analogy, are windows in the house that is the computer). Browsing to localhost:5000 returns those pages. Client and server share one machine here, but he asks viewers to picture the server in Azure or Amazon and the client on a phone.
  • The client receives only the HTML output, never the server's code. View Source in the browser shows the strings the server wrote to the response, with none of the JavaScript that produced them. The server's own console.log lines appear only in the server's console, as logs for developers to debug with; he says the user on the front end never sees them.
  • JavaScript can run on both sides at once. He embeds an inline script in the home page's HTML, calling it something "you shouldn't do" and shown only for teaching. On each refresh the server logs "in the server" to its console, and the browser, which understands JavaScript out of the box, runs the embedded script and logs "in the browser" to the F12 developer-tools console.
My Top Tips for using Windows Terminal like a Pro
  • Modifier-clicking Settings opens the raw JSON files. Hanselman shows that Shift-clicking Settings opens settings.json, the text version of the graphical settings, while Alt-clicking opens defaults.json; he notes the editor flags invalid entries, so "don't be afraid" of breaking the file.
  • Tabs can be renamed and coloured to mark environments. Right-clicking a tab renames or recolours it (his example labels one "production" as a warning), and the same tab colour can be set permanently per profile in the JSON, where VS Code supplies a colour picker.
  • Mouse and drag-and-drop shortcuts are commonly overlooked. Ctrl+scroll zooms the font for the session and Ctrl+Shift+scroll changes background opacity; a "use acrylic in tab row" setting, which he describes as not quite official yet, makes the tab bar transparent too. URLs in output are Ctrl+clickable, and dropping a folder onto the tab bar opens a tab in that folder.
  • Experimental HLSL pixel shaders restyle the whole terminal. Beyond the built-in and custom colour schemes and a scan-line retro effect he finds "a little bit in my face", an experimental pixel-shader path setting with no UI yet loads a shader per profile. Editing one (turning tint off, a black-and-white variant) crashed the terminal once, which he blames on his own shader rather than the terminal.
  • Rebind new tab and close pane to browser keys. He recommends Ctrl+T and Ctrl+W in place of the defaults Ctrl+Shift+T and Ctrl+Shift+W, so tabs and panes open and close one-handed; he also binds split-pane keys (Ctrl+Shift+minus for horizontal, pipe for vertical), though he is unsure of the default split shortcut on camera.
Exploring COVID Vaccine response in your Lab with Dr. W. Shawn Carbonell, MD, PhD - Hanselminutes
synopsis

Carbonell, an MD PhD who runs Brazen Bio and the nonprofit Cure Glioblastoma, ends up arguing that his own lab data vindicate the vaccines: a booster raised his antibodies about fourfold, the science was never rushed, and an annual combined flu and COVID shot is the likely destination, though not yet.

Teaching science on TikTok. TikTok recruited him into its educational accelerator after years of Instagram micro-blogging. His most viral, July's four-month data, reached 16.6 million views and over 20,000 mostly negative comments; he stepped back for a month, and stays for viewers who say he is why they got vaccinated.

The assay. Nervous about mRNA himself, he has tested his serum since his first dose on Valentine's Day 2021, noting self-experimentation is normally barred and he can do it as CEO. His sandwich ELISA layers recombinant spike protein, diluted serum and a marked detection antibody in 96-well plates; a standard curve gives the reference, and acid stops the reaction, turning blue wells yellow for the plate reader. Hanselman restates it as a gradient with a fixed y-axis and a timed stop.

What was rushed. Regulation and logistics, he says, not science: mRNA has decades behind it, first as a cancer vaccine, so design took about a week after sequencing. His own brain-cancer drug, from 10 years' work, is still in phase one.

Waning and the booster. Levels fell below 50 by five months, which he calls the body not wasting resources. The booster gave a roughly 400% rise, four times rather than 400 times, more than he would have bet; he credits memory B cells and says both those and circulating antibodies matter. Against a reported 95% efficacy, more has diminishing returns but could decide hospitalisation.

Outlook and his own work. He expects another booster in 2022, possibly modified, depending on Omicron, before any yearly combined shot. His glioblastoma drug has enrolled several patients at Moffitt Cancer Center, and Brazen Bio gives STEM creators equity.

  • He measures his own vaccine antibodies with a sandwich ELISA. Carbonell, an MD PhD who co-founded Brazen Bio and the nonprofit Cure Glioblastoma, says he began testing his serum because he was himself nervous about mRNA vaccines; he coats 96-well plates with recombinant spike protein, adds diluted serum and a marked detection antibody, reads absorbance against a standard curve, and stops the reaction with acid, which turns blue wells yellow. He caveats that self-experimentation is normally not allowed and he can do it as CEO.
  • Only regulation and logistics were rushed, not the science. He says mRNA technology has existed for decades, first tested as a cancer vaccine, so a design followed within about a week of sequencing; everything after was manufacturing, logistics and regulatory. By contrast his own brain-cancer drug, from about 10 years of work, is still in phase one.
  • The booster raised his antibodies about fourfold, beyond his expectation. He measured roughly a 400% increase over post-second-dose levels, stressing that this is four times, not 400 times, after levels had waned below 50 by five months. He attributes the jump to memory B cells, calls waning normal resource-saving, and says gains have diminishing returns against a reported 95% efficacy at six months but could still decide hospitalisation.
  • He expects an eventual yearly combined flu and COVID shot. Carbonell says many groups are working on one but it is not yet feasible mid-pandemic; his forecast is another booster in 2022, possibly modified, depending on how the Omicron variant goes.
  • Viral reach brought mostly hostile comments but real persuasion. His most viral TikTok, July's four-month data, drew 16.6 million views and over 20,000 comments he believes were mostly negative, and he stepped back for a month. He stayed for the dozens of "you're the reason I got vaccinated" comments; Brazen Bio now signs STEM creators for equity, and his glioblastoma drug has enrolled several patients in a phase one trial at Moffitt Cancer Center.
My WebAPI broke! Using Azure Functions, C#, and Blob Storage w/ JSON in a new format for my Web App
synopsis

Hanselman restores azurefriday.com after its upstream API vanished by putting a scheduled Azure Function between Microsoft Docs and the site: it reshapes Docs' paged data into a single JSON blob in Azure Storage, so the site itself did not change. His point is that the work was mostly trade-offs, not code.

What broke. The site cached one JSON dump of every show from Channel 9's API. When Azure Friday moved to Microsoft Docs, which also cut the catalogue from about 700 shows to roughly 350, the site showed "error loading".

The new API. Docs pages at most 30 results and returns only title and URL; thumbnails and video links need a details call. Batching 30 IDs a call still means about 25 calls instead of one, which he does not want his website or its visitors' browsers making.

The design. A timer-triggered function, described as a cron job in the cloud, makes those calls and writes the JSON he wants to a public, nearly free blob. He argues this decouples data shape from the site, could feed RSS or an app later, and need only be as fresh as a twice-weekly show.

The code and deployment. A C# loop pages until an empty page, collects episode records, then fills thumbnails and YouTube URLs from batched details calls. One dump method serves a console app and the function, which runs daily at 3 AM with run-on-startup on (recommended off), takes its connection string from configuration, and uploads as application/json, not octet-stream. He tests locally with Functions Core Tools, publishes from Visual Studio, and plans GitHub-driven deployment and a fix for his podcast site.

  • azurefriday.com broke when its upstream API moved. The site, built with a friend, cached a single JSON dump of shows from Channel 9's API; when Azure Friday moved to Microsoft Docs it showed "error loading". Docs also pruned the catalogue from about 700 shows to roughly 350.
  • The replacement API turned one chunky call into many chatty ones. Docs pages results at a maximum of 30 and returns only title and URL, so thumbnails and video links need a separate details call; batching 30 IDs per call still means about 25 calls where one used to do, which Hanselman says is not his website's job.
  • A scheduled function reshapes the data into blob storage. His fix is a timer-triggered Azure Function, described as a cron job in the cloud, that calls Docs, projects the result into the JSON shape he wants and writes it to a public Azure Storage blob the site reads. He argues this decouples data shape from the site, costs pennies, could later feed RSS or an app, and only needs to be as fresh as a show released a couple of times a week.
  • Shared C# code runs as both console app and function. The code loops pages until one comes back empty, fills a dictionary of episode records, then fills in thumbnails and YouTube URLs from batched details calls; the same dump method backs a console app (about 3,500 lines of output) and the function. The function runs daily at 3 AM with run-on-startup on, which he notes is recommended off, takes its connection string from configuration, and uploads with an application/json content type rather than octet-stream.
  • Most of the work was trade-offs, not code. He lists alternatives (an ASP.NET background worker, a Logic App, a batch file on his own machine) and says the thinking was about availability, error handling and data shape. He published straight from Visual Studio for the demo and plans continuous deployment from GitHub and a similar fix for his podcast site next.
Bad Date Comparisons in C# - if (DateTime.Now.ToString() == "01/01/2022 00:00:00")
  • The brand's New Year snippet could never have run true. The code, tweeted by an unnamed popular brand, compared DateTime.Now.ToString() to "01/01/2022 00:00:00"; running it on his en-US machine (recorded 1/3/2022 on the US west coast) shows the culture's short-date format omits leading zeros, so the strings could not match even at midnight.
  • Culture and time zone are hidden inputs to date code. ToString draws its format from Windows region settings, and Now uses the ambient time zone; switching to UtcNow already returned the next day. He advises doing date comparisons and arithmetic in UTC, warning that code that works locally fails on a server set to UTC.
  • Compare dates as dates, never as strings or ints. He suggests constructing a new DateTime(year, month, day) or using ParseExact, since ordinary parsing has the same implicit inputs (month-day versus day-month). Dates should be stored and passed as dates, written as ISO 8601 if they must be strings, and converted to the user's format only at display.
  • The output line shows signs of being pasted from Word. He points out an escaped quote the string did not need, possibly a JavaScript habit, and a single Unicode ellipsis character in place of three dots, which he and Safia Abdalla both noticed; it rendered oddly when run.
Connecting USB devices to WSL on Windows with usbipd-win for Linux IoT device support!
  • USB devices can now be used inside WSL through a third-party project. Loewen, the WSL product manager, says the open-source usbipd-win, with contributions from a Visual Studio team intern, unblocks USB workflows now, while better-integrated USB support in WSL itself is "longer term". Hanselman discloses that he sponsors the project's maintainer, who is based in the Netherlands, on GitHub.
  • It tunnels USB traffic over IP without leaving the machine. The tool wraps USB packets in IP and unpacks them in a Hyper-V guest or WSL2, and Hanselman calls it "a wormhole for USB". Loewen explains that WSL depends only on the Virtual Machine Platform component, a subset of Hyper-V, which Hanselman notes means it runs on Windows Home.
  • Linux flashing instructions now work without fighting Windows drivers. Hanselman shows a Wilderness Labs Meadow board, an STM32 microcontroller, in DFU bootloader mode with no driver installed. usbipd wsl list showed it at bus ID 9-4, and usbipd wsl attach asked for a sudo password and handed it to Ubuntu, where lsusb saw it. meadow flash os then succeeded once it was run under sudo with its full path. He says the setup took him about five minutes.
  • Serial COM ports remain unsupported, so that work stays in Windows. When the flashed board rebooted it came back as a USB serial device on COM9 in Windows, and Ubuntu lost it. Hanselman went back to Visual Studio in Windows for the app, and both speakers raise COM port support only as a possibility for the future.
  • The subsystem now ships separately from Windows, for faster updates. Loewen says WSL is available in the Microsoft Store, with a new logo. It is the same runtime and works the same way, and coming through the Store means it gets updates faster and more easily.
Pair Programming with Microsoft's Damian Edwards - Retrieving and parsing JSON with .NET 6
synopsis

Hanselman and Edwards set out to repair azurefriday.com, and by the end they have a .NET 6 console app. It calls the new paged episode API, deserializes each episode into a small C# record and prints the titles. Fanning out across pages and making the batch media call are left for a follow-up. Along the way the session argues that analysis and explicit trade-offs come before code, that early-career engineers should not be put off by having only one of many valid answers, and that iteration rather than first-time correctness is how code gets written.

The broken feed. Hanselman's site held every Azure Friday episode, about 700 of them and "like a meg", in memory for instant client-side search. The data came from one Channel 9 API call that the Channel 9 team had extended to skip paging. Since Channel 9 joined Microsoft Learn, that URL redirects. The replacement docs hierarchy service pages results at no more than 30 and returns no media, so thumbnails need a second batch call keyed on entry IDs. One GET has become what Edwards calls "cascading calls".

Probing the API. Before writing code they tested the API in the browser. Counting "uid" in VS Code confirmed 30 entries a page. An oversized page size returned a clear error, and a page past the end returned an empty array, which gives them the loop's stop condition. Edwards noted that there were no hypermedia-style next-page links. The batch endpoint gave good validation errors, did not remove duplicate IDs, and accepted 30 and then 31 IDs. Around 300 drew an HTML bad request, then a 404, and Hanselman suspects Azure Front Door blocked him for what looked like an attack. They settled on 30 a page. The API reported 351 episodes rather than 700.

Choosing an architecture. Edwards frames the first choice as fanning out on each request versus building the data periodically. The periodic route brings in cache invalidation and the question of what runs the job. Hanselman proposed an ASP.NET background worker that caches to local disk at startup. Edwards listed what can go wrong with that: write access, containers, redeploys, concurrent writes and scale-out. He describes "step functions": going from one instance to two changes far more than going from two to ten. Hanselman answers growth to 200 with "that's a great problem to have" and YAGNI. His plan is a console app now, later an Azure Function or cron job that drops a JSON file into storage.

Experience and failure. Hanselman says the difference between early- and late-career engineers is suffering, such as having been rate limited before. Edwards puts it as learning from failure over time: what you need to remember is the failure modes, not the APIs. Hanselman worries that "you poser" comments chase newcomers out of tech. Edwards says published content hides the iteration everyone relies on, and that code which is right today can be wrong after a 10x traffic promotion.

Writing the code. Edwards says HttpClient is still the default, with lifetime management and DNS caching as the server-side complications. An interpolated string is evaluated when it is created, so they used a string.Format placeholder for the page number. Hanselman reached for System.Text.Json.Nodes and walked the response node by node, and the total count came out through an explicit operator cast to int. Edwards said he would have started with JsonDocument, and that JSON path is supported in Json.NET but not yet in System.Text.Json. They finished by passing each episode node to JsonSerializer.Deserialize into a Show record with matching property names. The code is not yet defensive about nulls.

  • An upstream API migration broke his site's single-call episode feed. Channel 9 has joined Microsoft Learn. Hanselman's azurefriday.com loaded every Azure Friday episode (about 700) in one call from the old Channel 9 API. The replacement docs hierarchy service pages results at a maximum of 30 and carries no media. Thumbnails and the rest need a second, batch call keyed on entry IDs, which turns one GET into "cascading calls".
  • Probe the API's edge cases before writing code. They found that an oversized page size returns a clear error, that a page past the end returns an empty array (so that is the stop signal), and that there are no next-page links. The batch endpoint accepted 30 and 31 IDs without removing duplicates. Around 300 IDs drew an HTML bad request, then a 404, and Hanselman suspects Azure Front Door blocked him. The reported total was 351 rather than 700; his guess is that older episodes were cut off.
  • Every design is a set of trade-offs, so limit the scope. Edwards frames the first choice as fanning out per request versus building the data periodically, and says the second raises cache invalidation and the question of who runs the job. A startup worker writing to disk raises further questions: write access, containers, redeploys, concurrency and scale-out. Edwards argues the step from one instance to two changes the most. Hanselman answers growth to 200 with "that's a great problem to have" and YAGNI. His plan is a console app for now, later an Azure Function or cron job writing a JSON file to storage.
  • Senior judgment is remembered failure, and public content hides iteration. Edwards says you learn from failure over time, and what you need to retain is the failure modes you have hit, not the APIs. Hanselman worries that "you poser" comments drive early-career people out of tech. Edwards replies that published code hides the iteration everyone relies on, and that what is correct today can be wrong after a 10x traffic spike.
  • Navigate loosely with JsonNode, then deserialize into a record. In a .NET 6 console app, Edwards says HttpClient is still the default answer but that servers have to manage its lifetime and DNS caching. An interpolated string is evaluated when it is created, so a string.Format placeholder suited the page number. They walked the response with System.Text.Json.Nodes and an explicit cast to int, then handed each episode to JsonSerializer.Deserialize into a Show record whose property names match the JSON. Edwards would have started from JsonDocument or a typed response instead. The run printed titles; the paging fan-out and the batch call were left for a follow-up, and the code is not yet defensive about nulls.
Pair Programming with OhMyPosh's Jan De Dobbeleer - Together we code a Nightscout segment in Go!
synopsis

Over a little more than two hours, Hanselman and Oh My Posh creator Jan De Dobbeleer build a working Nightscout segment in Go that shows Hanselman's live blood sugar and its trend arrow in his prompt, coloured by thresholds he sets in his theme, and cached so it costs nothing on most renders. The segment runs and caches by the end; units, staleness handling, tests, documentation and the pull request are left for Hanselman to finish.

The problem. Hanselman is diabetic and runs a personal instance of Nightscout, the open-source, non-profit project he has long been involved with: a sensor sends readings to his phone, the phone to the cloud, and a REST API returns them. One reading is a serum glucose value (139 at the start, after an apple he ate on purpose to show the number move) and a direction string. His earlier prompt integration, built with a friend, had a Windows service or cron job write to a text file the prompt read, which broke whenever he forgot to run it. De Dobbeleer says the weather segment already does what is needed: call an API, cache, display.

Latency first. De Dobbeleer's first question is how often to fetch, since nobody wants a slow prompt. Hanselman says a short pause once every five minutes is fine, and five minutes is also the most often the sensor reports. De Dobbeleer says the git segment is usually the slow one.

Setting up. Hanselman forked the repository and opened it in the project's VS Code dev container, which a contributor added to lower the barrier to contributing. It installs Go and the extensions, sets up every supported shell so a change can be checked in all of them, and also works on github.dev. De Dobbeleer joins via Live Share from Belgium, midnight for Hanselman and 7 a.m. for him. Hanselman repeatedly pitches this as an underused way to work, "Google Docs for code", and De Dobbeleer says he has considered using it for contributor help, since asynchronous reviews can be slow and daunting.

Copying the weather segment. They copy the OpenWeatherMap segment and take it apart. De Dobbeleer walks through its shape: an enabled function deciding whether the segment shows, a string function returning only text, and an init that receives the user's properties and an environment interface through which all I/O passes, so tests can mock everything. Colouring used to live in segment code; he has recently moved it into templates, with background and foreground templates that can branch on any exposed value, because adding colour properties for every API field does not scale. Hanselman wants only the full Nightscout URL, token included, as the one property, so the segment is not "in the business of building URLs". De Dobbeleer agrees and names the property simply url, since properties are scoped to the segment. Hanselman had assumed the cache was shared across segments; De Dobbeleer corrects him that keys are per-segment.

The array envelope. The API returns an array even with count=1. They debate caching the raw response against extracting the first element, and settle on parsing the array, taking element zero and copying its values onto the segment struct so templates can use .Sgv and .Direction. Doing it this way also tolerates a user leaving count off the URL. Hanselman notes the result deserializes and reserializes JSON on the way to the cache and calls it an optimization for later. Asides along the way: Go's implicit interfaces, which De Dobbeleer says are powerful once you get used to them, especially for mocking, and Copilot completing his enabled function.

Wiring and the first failure. They register the segment type and its mapping per the contributing guide, rebuild, and get nothing. The binary was the old one: the PowerShell profile in the container loads the module's executable, and the build task's readlink step failed, so they rebuilt into the module path by hand rather than rebuild the container and lose Live Share. Write-PoshDebug then showed the 20 ms default HTTP timeout being hit; raising it in the theme brought the number up.

Trend icons. For the seven direction values Hanselman lays out three options: hard-code them, write a large template, or add icon properties with defaults. De Dobbeleer picks the third as fastest and readable, following the git segment's upstream icons, with a Go switch returning each property or its default. His rule is that a default right 99% of the time should ship. Hanselman worries that double arrows will change the segment's width; De Dobbeleer notes git already varies.

Colour and caching. Background templates turn the segment yellow above 150 and red below 60; Hanselman, colour-blind, adds a black foreground template. Testing with hard-coded values exposes that the cache never worked: get and set used different keys, which they fix while hard-coding the timeout to five minutes. A lingering 1,200–1,500 ms lag proves in the debug timings to be the git segment over the container's volume mount, with Nightscout at zero.

What is left. Glucose units (mg/dL against mmol/L) are not in the API response and need a property or discovery. Hanselman wants to show readings as stale after an hour, and tests, segment documentation with a sample config, and the PR remain. De Dobbeleer says a segment normally takes him about 20 minutes plus tests; Hanselman, having estimated 30, says he could now do one in an hour.

  • A prompt segment can replace a background service for live data. Hanselman, who is diabetic, wanted his Nightscout blood sugar in his Oh My Posh prompt; his earlier approach with a friend, a Windows service or cron job writing to a text file, was a hassle he kept forgetting to run. De Dobbeleer, Oh My Posh's creator, says it fits the existing weather segment's pattern: call an API, cache the result, display it.
  • Nothing may slow the prompt, so calls time out and cache. The default HTTP timeout is 20 ms, after which the segment is simply hidden; they had to raise it for Nightscout. The cache is set to five minutes because the glucose sensor only reports that often, and a cache-key mismatch between get and set was the bug that kept it from caching. A 1,200–1,500 ms lag turned out, via the debug output, to be the git segment over a dev-container volume mount, with Nightscout at zero from cache.
  • Segments stay dumb; display logic belongs in user templates. De Dobbeleer explains a segment is an interface (an enabled check, a string output) with all I/O behind an environment interface that tests can mock, and that colour logic was recently pulled out of segments into background and foreground templates. Hanselman's thresholds went in the theme config: yellow above 150, red below 60. He also chose to take the user's full Nightscout URL with token rather than build URLs in code.
  • Configurable icon properties with defaults beat templates or hard-coding. For the seven trend directions, De Dobbeleer rejected a long template switch evaluated every render and chose icon properties with defaults set in a Go switch, mirroring the git segment's upstream icons. His rule: if a default is right 99% of the time, ship it and let people override.
  • Dev containers and Live Share made the remote pairing workable. Hanselman argues few people use them enough: setup took him five minutes and they edited one file across nine time zones. The session still ran 2 hours 10 minutes against his 30-minute estimate, partly on a broken build task because the container's PowerShell profile loads the module's binary; De Dobbeleer says a segment normally takes him about 20 minutes plus tests. Units (mg/dL against mmol/L), staleness, tests, docs and the PR were left for later.
Understanding Windows 11 new security requirements with David Weston
synopsis

Weston's position is that Windows 11's hardware bar is a data-driven line for a guaranteed experience — security, performance and reliability together — and that its security half rests on turning on by default a trusted-computing stack Windows 10 already had: measured boot, virtualization-based security and DMA protection. Older machines, he says, are not left behind; they can stay on a supported Windows 10 and enable most of it by hand.

Why a fast PC fails the check. Hanselman opens with his own 7th-gen Intel machine. Weston says the bar weighs drivers and reliability statistics from millions of machines, agreed with silicon vendors, alongside security features, and that speed alone does not clear it. Hanselman adds his own experience: enabling VBS meant converting from MBR to GPT and removing nine unsigned drivers.

Optional security is exclusive security. Weston compares optional features to overclocking: enthusiasts tweak, most people never touch them. TPM requirements date to Windows 10 logo systems in 2015, so the chips were mostly already there.

Boot first, then everything else. Secure boot validates signatures; trusted boot adds TPM measurements that unseal BitLocker. Attackers take the easy path, Weston says, but go to firmware for stealth, since whoever runs first wins. He frames this as building a foundation rather than chasing individual malware.

Ring minus one. VBS uses the hypervisor to own page tables and other critical state, creating a secure kernel with its own "trustlets" for credentials and attestation. He credits the cloud hypervisor team: the same multi-tenancy code, brought to the client because everyone runs as admin.

Physical attacks. Sub-$100 DMA devices let an attacker patch memory; the IOMMU blocks new DMA devices while the machine is locked, and biometric matching moves inside VBS.

Advice. Asked about unsupported installs, Weston calls it a support question outside his area but advises against it: turn the features on in Windows 10 instead.

  • The CPU cutoff balances security, performance and reliability, not speed. Weston, partner director of OS security at Microsoft, says a machine like Hanselman's 7th-gen Intel gaming PC is fast and has the security features but fails on drivers and published reliability data; the line was drawn from crash and performance analytics across millions of machines, with silicon vendors agreeing. He says Windows 10 remains supported with driver updates, and personally advises against registry hacks to install 11 on unsupported hardware.
  • Windows 11 makes on-by-default what Windows 10 left optional. Weston argues optional security is "exclusive", like requiring overclocking to game, since most people assume what Microsoft didn't enable shouldn't be touched. The TPM is not new: Windows 10 logo systems required one from 2015, announced around 2012, and most Intel and AMD chips have had it for a decade, so the $14 add-on TPMs scalpers pushed to $100 were mostly unnecessary. Users staying on 10 can enable core isolation, memory integrity and secure boot in Windows Security.
  • Early-boot integrity is the foundation every other defence depends on. Secure boot checks signatures on boot components; trusted (measured) boot adds TPM measurements, which is why a changed component triggers the BitLocker recovery screen. Weston says attackers, state actors included, take the easiest path such as phishing or macros, and go to firmware only for stealth against well-defended targets, because "whoever boots their code first wins" — his red teams prefer it for that reason.
  • Virtualization-based security keeps admin compromise from being game over. The hypervisor creates a "ring minus one" secure kernel that controls page tables, MSRs and I/O and applies policy, such as requiring signed code, before granting access. Weston says it is the same hypervisor technology Microsoft built for multi-tenant cloud, shrunk to the client, and it lets Windows curate which kernel drivers run — relevant to supply-chain attacks, for which he cites UltraEdit's compromise.
  • DMA attacks are now cheap, and the IOMMU blocks them when locked. Weston says a PCILeech-style device costs under $100 with code from GitHub; on Microsoft Mechanics he used one to patch the biometric process to "return true". Windows uses the IOMMU to cut off DMA to new devices while the machine is locked, and enhanced sign-in security moves biometric matching inside the VBS boundary; he says he wants to overturn the old law that a machine out of your possession is no longer yours, as Xbox already has.
.NET 6 Hot Reload in Visual Studio 2022, VS Code, and NOTEPAD?!?
  • Hot reload patches the running process instead of restarting it. In a .NET 5 folder pinned by global.json, dotnet watch run exits, recompiles and relaunches on save, which Hanselman shows by printing the process ID and watching it change; under .NET 6 the same command reports "hot reload enabled" and the PID stays the same across edits.
  • The static entry point cannot be hot-reloaded, so move code out. .NET 6 console apps hide Main and add implicit usings (no using System.Threading needed), but that entry point still exists and cannot be rewritten live; he moves the output into a separate Utils class so changes to it reload. Ctrl+R restarts the app when a full restart is needed.
  • It is editor-agnostic, not a Visual Studio feature. He edits the .NET 6 app from the command line in Notepad and it reloads the same way; in Visual Studio 2022 (free Community edition, he notes) there is a "hot reload on save" option and a button to force a reload when that is off.
  • Web apps update in the browser without pressing refresh. On a Razor Pages app under dotnet watch run, edits to both the .cshtml markup and the C# code-behind (a logger call) appear immediately; view source shows an ASP.NET Core browser-refresh script injected at development time doing it. He dates .NET 6's release to "next week or this week", with .NET Conf running November 9–11.
Internet of Things for Beginners w/IoT Expert Tara Walker - Computer Stuff They Didn't Teach You #22
synopsis

Tara Walker, a Microsoft engineer who works on Azure IoT, takes Hanselman from "what counts as a device" to a working model of IoT hardware. Where she ends up: start by blinking an LED on a Raspberry Pi, but build real single-purpose devices on microcontrollers running a real-time OS, then connect them to the cloud.

What makes it IoT. Hanselman's USB-powered Tony Stark heart only lights up, so Walker says it is not an IoT device because it has no brain. Blinking an LED is the hello world.

Microprocessor or microcontroller. In Walker's account, microprocessors run a full operating system, embedded Linux or Windows, with external storage and real multitasking. Microcontrollers keep RAM, flash and peripherals on one chip, usually 8- or 32-bit, and run an RTOS that switches tasks quickly. A desk quiz makes the point: boards with screens and ports were still microcontrollers, and a RISC-V board running Linux was not. A thermostat, she says, belongs on a microcontroller. She concedes the Pi is a fine learning tool, since RTOS work demands C/C++ or Rust, but calls Hanselman's Pi-and-Twilio garage-door alarm overkill.

Sensors and actuators. Sensors sense the world and report voltage patterns that code turns into values, and actuators act on it. Her plant waterer pairs a soil-moisture sensor with a relay-driven pump.

The cloud. The next step is connecting thousands of devices. They propose a later episode where a button in Atlanta lights an LED in Hanselman's house.

  • A device needs a brain to count as IoT. Walker rules out Hanselman's 3D-printed Tony Stark heart kit, which takes USB power only to light up and does nothing else. The hello world of IoT, she says, is making an LED blink.
  • Microprocessors run a full OS; microcontrollers keep everything on-chip. In Walker's account an MPU runs embedded Linux or Windows with external flash and buses and truly multitasks, like Hanselman's Raspberry Pi 4. An MCU holds RAM, storage and peripherals on one chip (8-bit to 32-bit, a few 64-bit, where 1 MB "is huge") and runs a real-time OS such as Azure RTOS, FreeRTOS or Zephyr, which switches tasks fast enough to look concurrent. She takes up Hanselman's juggler analogy for this. In her desk quiz, boards with a screen, Ethernet and an SD slot were still microcontrollers, the printed circuit board being "along for the ride", while an open-source RISC-V board running embedded Linux was a microprocessor.
  • Single-purpose, low-power devices belong on a microcontroller. Walker says a thermostat should run an RTOS because it does one job, must respond quickly and should draw little power. She still recommends a Raspberry Pi for learning, since RTOS work means C/C++ or Rust and knowledge of registers and architecture. She calls Hanselman's Pi taped to his garage door (it texts him through Twilio when the door has been open five minutes) overkill for what a microcontroller and an accelerometer could do.
  • Sensors sense the world; actuators act on it. Walker says sensors such as buttons, temperature, motion, soil-moisture and GPS report patterns of high and low voltage that code interprets as values. Motor drivers, relays, screens and LEDs are actuators. Her own plant-watering project used a soil-moisture sensor to trigger a relay that ran a pump from a bowl of water.
  • Connecting devices to the cloud is the next step. Walker works on Azure IoT, which she describes as linking thousands of devices rather than one board and its sensors. The two propose a "cloud hello world" for a later episode: a button pressed in Atlanta lights an LED in Hanselman's house. Both recommend Adafruit's subscription boxes, and Walker says she has no tie to Adafruit beyond being a fan.
First Look at Android Apps on Windows 11, plus Linux Apps, running side by side! (plus Xbox Cloud)
  • Android apps reached Windows 11 Insiders through an Amazon store-within-a-store. As of October 20 (his date), the Beta channel shows an "Amazon Appstore Preview" inside the Microsoft Store. Searching the Store for an app such as Kindle deep-links into it, and the selection is a small group of apps with more promised later.
  • Installed Android apps behave like ordinary Windows apps. He shows them appearing in the Start menu, resizing, maximizing and working with Snap Assist. Subway Surfers took keyboard input because it already supports Bluetooth keyboards on Android. A joystick did not register in an Android game, where the mouse acted as touch, and one app glitched while moving between his 1080p and 4K monitors.
  • The subsystem runs as a VM, much like WSL. By his reading of the announcement it is built on the Android Open Source Project version 11. An Android settings app lets the subsystem run only when needed or continuously, and it can be shut off.
  • Android, Linux and Win32 apps all paint to one surface. He drags a transparent Windows Terminal over an Android game, Word and a Linux image editor to show them rendering through the same acrylic layer. The Xbox cloud game he runs alongside is browser streaming, as he notes, not part of the Android feature.
VS Code vs. Vim?
  • Vim's startup speed beats VS Code's, the clip argues. The speaker times VS Code at five to ten seconds to open on a 2018 MacBook Pro with an Intel Core i7, against Vim opening instantly. Their claim is that terminal-based editors will always have better performance and better integration with existing Unix tools.
Space Cadet Pinball from Windows 1995 decompiled running natively on Linux on Windows 11 using WSLg
  • A decompile made 3D Pinball run natively on Linux. Hanselman credits a developer on Twitter, whose handle the captions garble, with decompiling the original 32-bit Windows executable of the roughly 25-year-old game. The project recompiles the code against SDL2 and SDL2 mixer with CMake and Clang/GCC, and he notes the original pinball.exe is only 270 KB.
  • Building it needs your own copy of the original game. The repository does not redistribute the licensed bitmaps and sound files. Hanselman got them by mounting an old Windows XP virtual hard drive he keeps on his Synology, built the code under Ubuntu 18.04 in WSL, and copied the resources next to the Linux binary.
  • WSLg runs the Linux build beside the original on Windows 11. He shows the Linux executable running through WSLg next to the original XP executable running directly on Windows. He closes with a quip that "the year of the Linux desktop is happening on Windows 11."