tech
Network Chuck30 Windows Commands you CAN’T live without
- Built-in commands can hide, encrypt and cloak your files.
copy /ban image plus a zip folder into a new image to tuck the archive inside what looks like an ordinary photo;cipher /eon a folder encrypts every file so only your account can open them;attrib +h +s +ron a folder makes it vanish from view, and the same flags with minuses bring it back. - Windows stores every saved Wi-Fi password, readable in plain text.
netsh wlan show profilelists every network the machine has joined; adding the network name andkey=clearshows its password. Chuck runs a one-liner that dumps all of them, redirects it to a text file, and saves it aswifi.batso it runs by name; he says the command is in the description, not read out. - Curl ships with modern Windows and does far more than downloads. Chuck uses it for weather (
curl wttr.in/Dallas), unshortening a link by fetching headers and piping tofindstr location, checking a site is up (curl -Is, which returned 200 OK), finding the public IP via checkip.amazonaws.com, drawing QR codes, dictionary lookups, latest-video and tweet lookups, and querying ChatGPT with a long command he leaves in the description. - Small tweaks make Command Prompt faster to live in. Set the shortcut to run as administrator by default; type
cmdin Explorer's address bar to open a prompt there, orexplorer .the other way;subst S: "path"mounts a folder as a drive (subst /d S:undoes it). F3 repeats the last line, F7 lists past commands,doskey /historyprints them all, andcolor,prompt … $Gandtitlerestyle the window. The video is sponsored by ITProTV, now ITPro from ACI Learning. - Chuck's real advice is to leave Command Prompt for Terminal and PowerShell. Windows Terminal, built into Windows 11 and installable on Windows 10, adds tabs, drag-and-drop file paths and "open in terminal" from Explorer. He still uses Command Prompt out of career-long habit, but calls PowerShell more powerful and the thing to learn for anything deep.
Crosstalk SolutionsUniFi Dream Wall Full Review and Setup
- The Dream Wall is a wall-mounted all-in-one UniFi OS console. It lists at $999 US and was in stock as of recording; the host's Early Access unit cost $799 in May 2022, and newer hardware replaces its 1.3-inch touchscreen with a 4.7-inch one. It carries a firewall, a 4x4 MIMO Wi-Fi 6 access point, four 802.3af, four 802.3at and four 802.3bt PoE ports, four non-PoE ports, a 10G SFP+ cage, plus a 2.5GbE WAN and a 10G SFP WAN.
- Its redundant power supplies share a single power cord. The host notes that true dual power, as in VoIP and PBX setups, needs a separate cord per supply so each can run to a different circuit in a data centre.
- The host finds the split cabling layout an odd design choice. Power and WAN enter through a channel at the bottom while the switch ports exit the top about an inch off the wall, with nowhere tidy to go; he notes the marketing photos never show top cables. Ports 16/17 or 19/20 can be set as WAN in UniFi, so all connectivity could come in from the top.
- Setup was quick, but the unit runs hot even idle. Mounting the roughly 20-pound unit took about 10 minutes (one side in a stud), adoption a minute, and updates about 20 minutes. The fan was whisper quiet at about 40%, yet the display read 149°F and his thermometer measured up to 120°F on the front, with no PoE load or traffic.
- The host will not recommend the Dream Wall to his customers. At $999 it adds little over the UDM SE beyond the top switch ports and redundant power; he would rather see the same components in a 2U rack-mount box with rear PSUs, a 16- or 24-port switch and room for redundant drives.
Crosstalk Solutions5 Privacy Tips to Help You Disappear Online
- Switching to a privacy-focused browser is the easiest, biggest gain. The host, citing privacytest.org, recommends Brave or Firefox for blocking trackers and randomizing fingerprints; Brave is a drop-in Chrome replacement with the same extensions, and he uses DuckDuckGo on his iPhone. Stuck-on-Chrome users can add EFF's Privacy Badger or uBlock Origin; private windows are not anonymous, and Brave itself says to use the Tor Browser when personal safety depends on it.
- A privacy-focused search engine stops searches being tied to you. Google and Bing profit from targeted ads, so the host recommends Brave Search or DuckDuckGo as the browser's default search engine.
- Enable DNS over HTTPS, which browsers usually leave off. Even with HTTPS sites, plain DNS queries can be seen by anyone watching the traffic; in Brave or Chrome the "use secure DNS" setting under privacy and security turns it on with a chosen provider.
- The host calls a paid VPN a must, despite its rough edges. It masks the WAN IP and location, but Hulu, Disney+ and Netflix block known VPN IPs and it can break captive portals. He still uses Private Internet Access but stopped promoting it after Kape Technologies, which he calls an adware and malware company, bought it; he suggests Mullvad or Proton, saying he is not affiliated and the video is not sponsored.
- Network-wide DNS filtering covers devices you cannot configure. Cloudflare's 1.1.1.2 and 1.1.1.3, Quad9 and OpenDNS FamilyShield filter by a big company's rules, so the host prefers self-hosted Pi-hole or AdGuard Home. His main Pi-hole blocks over 50% of DNS requests on his network, with Roku devices phoning home tens of thousands of times a day.
Technology and FriendsChris Woodruff on HTTP [TECHNOLOGYANDFRIENDS 748]
- REST's contribution was standardizing services within HTTP's own constraints. Woodruff traces web services from 1990s RPC through SOAP to sites like Facebook and Twitter making up their own HTTP calls, such as a GET carrying "insert" in its body; his point is that developers should build within the environment they are in, HTTP, rather than from the ground up.
- You need HTTP's working vocabulary, not the whole specification. He shows the HTTP 1.1 spec in his talk and says not to read it; what matters is that requests and responses each carry headers and a body, with headers for client type, content type and the format wanted back (JSON, XML, HTML, binary), plus the request's verb and the response's status code.
- Status codes are a language the API and consumer agree on. In his convention 200 means success with a response body and 204 success with none, as after a DELETE; the 400s blame the client and the 500s the server. He returns 405 for verbs his read-only APIs refuse, 410 for a resource no longer at that address, 429 for rate limiting on paid or abuse-prone APIs, and 503 when a client requests an API version that has been retired.
- REST, as he sees it, is resources, addresses and verbs. A resource is any digital thing, made unique by its URL even if identical copies exist elsewhere; GET, POST, PUT and DELETE change its state and map onto create-read-update-delete, with PATCH increasingly used for partial updates. He says others may disagree with this framing.
- Hypermedia lets responses tell clients where related resources live. Of Roy Fielding's constraints (client-server, stateless, caching, uniform interface, layered system, code on demand) he dwells on HATEOAS: a list of Beatles albums should carry a URL per track so a music-store client can buy one without knowing addresses in advance. He says he has never seen code on demand used and does not fully understand it; Giard notes it needs a lot of trust.
Technology and FriendsEldert Grootenboer on Azure Service Bus [TECHNOLOGYANDFRIENDS 747]
synopsis
Grootenboer, Microsoft's program manager for Azure Service Bus, presents it as the advanced enterprise queue among Azure's messaging services. Its next step, as of March 2023, is closing two reliability gaps: messages lost to regional failure and locks lost to dropped connections.
Choosing a service. Storage Queues handle simple, high-throughput queuing, Service Bus handles advanced MQ-style work, Event Hubs handles streaming with a Kafka protocol, and Event Grid handles events. Java shops coming from IBM MQ, TIBCO or ActiveMQ can keep their JMS 2.0 code and change only the connection string.
Reliability semantics. Transactions span queues in one namespace only. Dead-lettering kicks in after 10 retries by default, and duplicate detection keys on an ID the sender supplies. Delivery is at-least-once (peek-lock) or at-most-once (receive-and-delete), so exactly-once needs a client-side log of the steps already completed.
Tiers and cost. Basic and Standard are billed per million messages, with a 256 KB message limit. Premium is billed per hour on dedicated resources, with a 100 MB limit, and scales to 16 messaging units per partition. Partitions in preview raise that to 64 units.
Roadmap. Geo-DR, then metadata-only, was headed to private preview with full data replication. Synchronous mode gives RPO zero and asynchronous mode throttles senders once lag reaches the RPO they set. Durable terminus would let a reconnecting client keep its locks. Grootenboer says he reads the Azure Ideas votes weekly to plan.
- Azure's many messaging services each fit a different scenario. Grootenboer, Microsoft's program manager for Azure Service Bus, describes Storage Queues as simple, high-throughput queuing. Service Bus is advanced enterprise queuing in the line of IBM MQ, with sessions for in-order processing, auto-forwarding, dead-lettering and scheduled delivery. Event Hubs is for streaming and offers a Kafka protocol, and Event Grid is for events ("something happened"), as opposed to messages ("do something for me"). He says many customers use several side by side.
- Service Bus offers at-least-once or at-most-once delivery, not exactly-once. Peek-lock gives at-least-once and receive-and-delete gives at-most-once. Exactly-once needs client-side logic: a log of processed messages, and of the steps within each, so that work resumes at the right step. Transactions are limited to moving messages between queues in one namespace, never spanning a database. Poison messages go to a dead-letter queue after 10 retries by default, and duplicate detection drops repeats of an ID such as an order number within a time window.
- Tier sets message size, pricing model and scale. Basic and Standard run on shared infrastructure, priced per million messages, which he says suits bursty serverless loads. Premium gets dedicated CPU and memory, priced per hour, with no hard message limit. Messages can be up to 256 KB on Standard and 100 MB on Premium, and he says messages near 100 MB mean you are doing data transfer, not messaging. Premium scales to 16 messaging units per partition, a new partitions feature then allowed 4 partitions (64 units), and he says GA could allow, for example, 16 partitions of 16 units each (256 units).
- Geo-disaster recovery will replicate messages, not just metadata. As of the March 2023 recording, Geo-DR copied only entities such as queues and topics. A private preview "in the coming weeks" was to replicate the whole namespace, data included. Synchronous mode gives an RPO of zero at the cost of cross-region latency. Asynchronous mode lets you set an allowed RPO, such as 10 minutes, and throttles senders once replication lag reaches it. He gave no timeline beyond private preview.
- Durable terminus will keep message locks across dropped connections. Today a broken AMQP connection, from container churn, client faults or Microsoft's own infrastructure upgrades, loses the lock, so the message goes to another consumer and may be processed twice. A new lock mode, tentatively "durable lock", lets a reconnecting client get its message state back from the service. He says Service Bus will be the first broker to implement this part of the AMQP spec, and it too was headed to private preview soon.
Technology and FriendsRyan Booz on PostgreSQL [TECHNOLOGYANDFRIENDS 746]
- Tooling and T-SQL habits are a SQL Server developer's main hurdles. Booz, after about 15 years on SQL Server and .NET, joined a company that had moved to Postgres in the month before he arrived. Postgres runs SQL closer to the ANSI standard, so things like variables mid-script need its procedural language, PL/pgSQL, inside a function. There is no single official IDE: he names pgAdmin and uses DBeaver, the closest he has found to SSMS. He says Postgres's protocol has become the standard for connecting, used even by databases such as CockroachDB and YugabyteDB.
- Extensibility is the feature Postgres has that SQL Server lacks. Booz says that over a decade ago Postgres added hooks letting extensions change query planning, on-disk storage, index types and backup. His examples are Timescale, his former employer, which adds compression and managed partitioning; Citus, bought by Microsoft for horizontal scaling; and HypoPG, which tests whether the planner would use a hypothetical index. Beyond B-tree, Postgres has hash indexes and the GIN and GiST types that grew out of PostGIS, which handle nearest-neighbour searches and overlapping ranges.
- Query tuning is weaker than in SQL Server. Booz says the complaint he hears most is that Postgres query plans are text-only, with fewer node types, and hard to parse next to SQL Server's graphical plans. Second is the lack of a built-in equivalent to Query Store for seeing how a query used to run. Third-party tools and startups are working on both, including his employer, Redgate.
- A permissive licence means no lock-in to a vendor's core. Booz says Postgres is entirely free under a very short licence, which is why AWS could fork it to build Redshift. Any vendor's Postgres must offer the full core, so vendors differ only in which extensions they allow. Some extensions carry their own licences, and procedural-language extensions without a "trusted" layer could break out onto the server, so not every provider supports them.
- AWS's Babelfish could start moving SQL Server shops to Postgres. AWS, which Booz calls the biggest provider of Postgres services through RDS and Aurora, announced Babelfish about three years before the recording. It is an open-source fork that translates T-SQL so SQL Server tools and .NET apps can connect, and he says AWS hopes to merge it into mainline Postgres. He says Redgate sees .NET and SQL Server shops of 15–20 years asking about Postgres, and he expects more developers to be asked to migrate, though he does not know how fast.
Crosstalk SolutionsWorth It? WiFiMan Wizard Setup and Review
- The WiFiMan Wizard adds spectrum scanning iOS does not allow natively. It is a $99 Bluetooth accessory, now out of Early Access, that reads 2.4 and 5 GHz networks through the WiFiMan app (iOS 0.18.0+ or Android 1.15.0+); Ubiquiti claims about 240 minutes of continuous scanning on battery, which the host did not test.
- The scan view is basic and cannot be sorted. It lists SSIDs, channels, signal strength and a Wi-Fi 6 marker (his T-Mobile Home Internet showed channels 9 and 108 at -32 dBm), but the host wants sorting by signal or name and says scanning is all the device does.
- The host says home users should skip it; professionals might not. A home user is better served by an Android phone and its spectrum apps, while a wireless installer gains a compact tool-bag item. Even so, he prefers NetSpot for floor-plan coverage maps, since WiFiMan's maps cannot be saved and ignore multiple floors.
Crosstalk SolutionsYou Need to Learn This! Cloudflare Tunnel Easy Tutorial
synopsis
The host builds a free Cloudflare Tunnel from a Docker container on his Synology NAS. It publishes his NAS, Pi-hole, EdgeRouter and OpenSpeedTest server as HTTPS hostnames, which he then locks behind a Cloudflare Access one-time-PIN policy. He argues this outbound-connector model will cut deeply into VPN use.
Why tunnels. VPNs usually still need open ports and a server to maintain. A tunnel connector dials out instead, hides the WAN IP, adds valid certificates to HTTP-only services and works behind CGNAT on Starlink or T-Mobile Home Internet.
Domain and DNS. The domain's root nameservers move from Namecheap to Cloudflare's. Activation took about 10 minutes, though Cloudflare allows up to 24 hours.
The connector. The host rejects a VM as wasteful and a Raspberry Pi as command-line bound. In Synology's Docker app he pulls cloudflared (about 56 MB), uses the host network, enables auto-restart and pastes only the "tunnel run --token" part of Cloudflare's command.
Publishing services. The NAS at port 5000 becomes an HTTPS site on 443 with a valid certificate. Pi-hole needs /admin, the EdgeRouter's HTTPS origin needs "No TLS Verify", and OpenSpeedTest needs its Docker-mapped port 49158; over his phone that test showed 42.6 down and 62.8 up.
Locking it down. Left open, anyone who knows a hostname reaches the service. A wildcard self-hosted application with a policy including chosen emails or a domain, requiring a US origin and optionally excluding countries or IP ranges puts a one-time-PIN gate in front, separate from each service's own login.
- Cloudflare Tunnel gives remote access without opening firewall ports. A connector inside the LAN dials out to Cloudflare, so the WAN IP is never exposed, it works behind CGNAT such as Starlink and T-Mobile Home Internet, and the free plan covers everything shown. The host predicts this will put a real dent in VPN use over the next few years without ever fully replacing it.
- Cloudflare must manage the domain's DNS before a tunnel works. Beyond a free Cloudflare account, you need a domain whose root nameservers are moved to Cloudflare's; the host used Namecheap, for which he gives a link. Propagation can take five minutes to 24 hours, and his activation email arrived in about 10 minutes.
- The host recommends running the connector in Docker. A full Ubuntu VM worked but wasted CPU and RAM, and a Raspberry Pi forces command-line configuration, whereas Docker is set-and-forget with everything managed in the Zero Trust dashboard. On Synology, use the host network, enable auto-restart and trim Cloudflare's command to "tunnel run --token…", since no-autoupdate is already supplied; a constantly restarting container means that string was edited wrong.
- Each public hostname turns an internal service into valid HTTPS. His Synology NAS on HTTP port 5000 came out on port 443 with a valid certificate. Pitfalls: Pi-hole needs /admin on the URL, an HTTPS origin like his EdgeRouter 4 needs "No TLS Verify" turned on, and Docker services need their mapped port (49158 for OpenSpeedTest).
- Until Cloudflare Access is configured, anyone with the hostname gets in. The host adds a one-time-PIN login method and a wildcard self-hosted application whose policy includes specific emails or a domain, requires a US origin (which he notes a VPN easily bypasses) and can exclude countries or IP ranges. Services with their own login then require two separate authentications.
GCastCreating and Deploying an Azure Spring App [GCast 147]
- Azure Spring Apps hosts Java Spring applications without managing infrastructure. Giard describes it as a way to run Spring apps in Azure where Azure handles the hardware, networking, infrastructure and containers. Searching "Azure Spring Apps" under Create a resource turns up two versions, an enterprise one he describes as from a third party and the standard one from Microsoft; he uses the standard one.
- The service is created first; apps are then added inside it. On the Basics tab he creates a new resource group, names the service and picks a region (East US, advising viewers to weigh where users and consumed resources are, to minimize latency). The default tier is Basic, which he keeps; Basic does not allow zone redundancy, which needs a higher tier. Deployment of the service took about six minutes. The service name must be unique across Azure; an app name only within its service, and may not contain spaces.
- Each app takes either a container or a JAR artifact. Under Apps > Create app he chooses the artifact (JAR) route, then sets the runtime (several Java versions, and .NET Core, which he says he has not tried), full or half a virtual CPU, memory of half a gig, one gig or two gig, and an instance count. Raising instances to eight, he says, costs eight times as much per hour for eight times the scalability; he leaves it at one and the defaults elsewhere. Creating the app took about a minute.
- A new app gets a test endpoint; production needs an assigned endpoint. The test URL, which contains the word "test", serves a placeholder getting-started page. Clicking Assign endpoint produces a friendlier URL built from the service name and app name on azuremicroservices.io, and a custom domain can be pointed at it through a DNS record.
- One
az spring app deploycommand pushes the JAR to the app. Using a sample Spring Boot app cloned from GitHub (needing Git, Java, WSL on Windows, and an IDE such as VS Code), he runs from WSLaz spring app deploywith the resource group, service, app name and artifact path to the JAR, copying the names from the portal. The deploy took about two minutes, after which the endpoint returned "Greetings from Spring Boot".
GCastGranting YouTube Permissions to Other Users [GCast 146]
- Channel access is granted per user from YouTube Studio's Permissions page. Giard goes from the profile icon to YouTube Studio, then Settings at the bottom left, then Permissions, where he is the only user, as owner. The Invite button takes the other user's email address and an access role. He says the invitee needs a Gmail account, because YouTube is owned by Google.
- Six roles trade off power, chiefly permissions, deletion and revenue data. As he reads them: Manager is almost an owner; Editor can do everything a Manager can except manage permissions or delete content; Editor (limited) is the same minus viewing revenue data; Subtitle editor adds and removes subtitles; Viewer sees everything, including settings and private files; and Viewer (limited) the same without revenue data. He notes they are not quite in descending order of power, and picks Editor (limited) as the least control that still lets the user upload videos.
- The invite stays pending until the owner saves and the invitee accepts. Clicking Save makes the owner re-enter a password (he has two-factor authentication on), and Google may also send a prompt to his phone. The invitee then gets an email inviting them to access the channel and must accept it. After that, playing the invitee, he uses Switch account to reach the shared channel and upload a video to it.
- Access can be changed or revoked from the same Permissions page. The user's role dropdown lets the owner raise or lower their access, or choose Remove access, which asks for confirmation and may prompt for a password or two-factor check (it did not this time). Once removed, the user's Switch account list no longer includes the channel.
Scott HanselmanWhere'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.
Technology and FriendsKevin Grossnicklaus on Low Code No Code Solutions [TECHNOLOGYANDFRIENDS 744]
- Power Platform is one piece of a larger architecture, not all-or-nothing. Grossnicklaus, who runs a software development company building .NET, Azure, Angular and Kubernetes systems, says his teams typically combine two or three of Power Apps, Power BI, Power Automate, Power Pages and Power Virtual Agents alongside custom Angular and .NET code; if he can get 90% done in a week and spend a month on the other 10%, the project is still shorter and cheaper.
- It fits internal enterprise data apps, not public-scale products. He would not build "the next Twitter" on it, but a division of 50 people searching, reporting on and entering data is a good fit; Microsoft licenses it per user or per app, and its Dataverse database lives behind an API with no data center to choose. He says governance and security (who can publish, what data apps reach) are built in, though some client companies made it "the Wild West" by ignoring them.
- Owning the bottom line is what converted him. As a developer he chose technology with "someone else's money"; as a business owner he weighs eight months of a development team against hiring someone part-time to do the task manually. He says Power Automate lets him offer small businesses that have done things by hand for years a two-day automation engagement.
- A COVID vaccination tracker went live in about two weeks. Five or six St. Louis hospitals pooling doses for weekend events in underserved areas needed state-reportable tracking within two weeks, against the eight months he estimates for traditional development; his team built an Angular/.NET registration site on Azure feeding Dynamics, an iPad check-in Power App and a Power BI report to the state, finished in four or five days with a week of testing. He says he fixed bugs on site in real time, and the system was archived after roughly 12 months of use.
- In his experience the adopters are developers, not citizen developers. Grossnicklaus says Microsoft's marketing targets non-technical users, but everyone he has seen adopt the platform had a deep technical background, and about 99% of his conference audiences are developers. Inside his own company he evangelizes it top-down, steering small internal admin screens to Power Apps so developers focus on public-facing work.
Scott HanselmanWhy 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.
Technology and FriendsGuy Royse on Software Defined Radio [TECHNOLOGYANDFRIENDS 743]
synopsis
Royse, a Redis developer advocate, argues that a $25–30 software-defined radio opens a large technical landscape of broadcast audio and data, and that it is a good gateway into ham radio, which he values for combining technology with people.
What the device is. A USB dongle with an antenna adapter replaces a radio's tuning and demodulating circuitry with software, covering from below AM to about 2 GHz. With a loop antenna in Columbus, Ohio, he picked up shortwave from Lhasa, Tibet.
Live demo. Using SDR Angel and an antenna on his kids' old playground, he tunes 162.55 MHz NOAA weather radio, then APRS on 144.39 MHz, decoding a packet. APRS uses AX.25 with call signs and 1200-baud-modem encoding; iGates link it to the internet, and an ISS repeater can relay remote messages.
What else is in the air. Aircraft, ships, utility meters and tyre-pressure sensors broadcast openly; his Redis talk maps aircraft from an event stream. Text pagers, used mostly by doctors, expose patient details. He says listening to clear broadcasts is legal in the US but sharing private ones is not, revising his first statement and disclaiming legal advice.
Ham radio. Listening led him to cheap Baofeng transceivers and talking with people in his region.
- Software-defined radio moves tuning and demodulation from circuitry into software. Royse, a developer advocate at Redis, shows a USB dongle costing $25–30 on Amazon that covers from below AM up to about 2 GHz and sends a wide swath of bandwidth to the computer to decode; it needs an antenna suited to each frequency.
- A cheap setup reaches across the world and the local airwaves. With a loop antenna at his dining-room window in Columbus, Ohio, he picked up a shortwave station broadcasting from Lhasa, Tibet. On camera he uses SDR Angel, which he calls full-featured but steep to learn, with a two-metre/70-centimetre antenna to tune 162.55 MHz, Columbus's NOAA weather radio, through a narrowband FM demodulator.
- Ham radio's APRS carries data as well as audio. On 144.39 MHz, stations broadcast location, weather and tracking packets in AX.25, based on X.25 with call signs in place of MAC addresses and the same encoding as 1200-baud modems. iGates relay packets to and from the internet, enabling SMS gateways and weather lookups, and a repeater on the International Space Station can relay a message from the wilderness.
- Many everyday devices broadcast readable data in the clear. He lists aircraft positions and flights, ships (he tracked boats on the Ohio River at an event in Louisville), gas and water meter readings (he matched his own meter's ID) and tyre-pressure sensors reporting pressure and temperature. His talk "Tracking Aircraft with Redis and Software Defined Radio" puts aircraft data into an event stream feeding a map app.
- Unencrypted pagers leak medical information. Royse says doctors are the most common remaining text-pager users, so HIPAA violations with patient names and room numbers occur "every minute". His understanding of US law, revised mid-conversation and offered as not legal advice, is that listening to clear broadcasts is legal but sharing communications intended to be private is not, and breaking encryption counts as illegal hacking.
Technology and FriendsMatt Groves on Fluent Migrator [TECHNOLOGYANDFRIENDS 742]
- Fluent Migrator versions schema changes as ordered, reversible C# classes. Groves, who works at Couchbase, describes an imperative approach inspired by Rails migrations: each numbered class overrides Up (create table, add column) and Down (drop, remove), and a runner applies the ones not yet run; he has had 50 or 60 in smaller projects, and tags or parameters can restrict migrations to dev or test environments. He credits its fluent syntax with making features discoverable through IntelliSense.
- Stored procedures, views and triggers fit it awkwardly. Fluent Migrator can run a checked-in SQL script, but changing it means either editing the file and losing the version history or adding a "Matt Sproc 2" copy, a source-control history inside source control. Groves prefers to keep business logic out of the database anyway.
- Broad database support means lagging database-specific features. It supports SQL Server back to 2000, Postgres, MySQL, Oracle, Access via the Jet engine and DB2, but a new feature in, say, Postgres may not be available right away.
- DBAs may want to see the SQL before production. The command-line runner can run in a CI/CD pipeline for fully automated deployment, but it abstracts away the generated SQL; an output option Groves only recently learned of writes a full SQL script that a DBA can review, tweak and run against test or staging first.
- He has started a separate NoSQL Migrator project. Fluent Migrator is relational-only, and talks with its organizer about NoSQL support ran into big differences between NoSQL APIs, so Groves built an unaffiliated, early-stage tool at github.com/mgroves/nosqlmigrator; he argues schemaless databases still have structure that teams should track in source control.
Crosstalk SolutionsNEW! Strongest 2FA for Apple devices - Yubikey + iOS
- Apple IDs can now be secured natively with FIDO security keys. Apple added support with iOS 16.3 for iPhone and iPad and macOS Ventura 13.2, so YubiKeys now work directly; the host demonstrates on a YubiKey 5 NFC (USB-A or USB-C plus NFC) and a YubiKey 5Ci (USB-C and Lightning, no NFC).
- FIDO U2F is the strongest two-factor tier, above TOTP and SMS. The host ranks SMS lowest because phones are lost, stolen or SIM-swapped and the codes get phished; TOTP apps such as Google Authenticator or Authy are better, and TOTP held on a YubiKey better still; FIDO U2F has no code to phish and requires the physical key.
- The host prefers YubiKey 5 series keys because they do both. They handle FIDO U2F where a site supports it and TOTP, through the Yubico Authenticator app, where it does not. He says he has used them for about three years; the video carries affiliate links but is not sponsored or paid for by Yubico.
- Apple requires at least two keys, and setup takes minutes. The path is Settings, your name, Password & Security, Add Security Keys; an NFC key is held to the back of the phone, a Lightning key plugged in and its contact touched, and each is named. The host registers three keys and suggests keeping social-media apps on a separate phone with no personal data.
Technology and FriendsScott Rutz on Dapr [TECHNOLOGYANDFRIENDS 741]
- Dapr's building blocks abstract microservice plumbing behind configuration. Rutz, a cloud solution architect on Microsoft's app innovation team, cites service invocation with service discovery and mTLS handled for you, and a simple key-value state API whose backing store, such as Redis or Cosmos DB, is set in component configuration outside the code; the same code can use RabbitMQ or Redis locally, Service Bus in the cloud, or different middleware at an edge site such as a smart factory.
- Bindings bring event-driven triggers to containers. Rather than writing code to read from an Event Hub and track its position in the stream, Rutz says the developer configures a binding and Dapr invokes the configured method for each event; the host compares this to Azure Functions, which he puts at about half a dozen triggers.
- Actors give stateful objects sequential processing while the system scales out. Rutz's example is IoT, with thousands or millions of devices sending telemetry processed concurrently, where each device's events must be handled in order. He also lists observability traces aligned with OpenTelemetry, and secrets and configuration through a generic API, so that Key Vault in the cloud can be environment variables locally without an SDK.
- The sidecar model makes Dapr language-agnostic. Dapr runs beside the application and is called over HTTP, or gRPC for higher performance, so any language that can make HTTP calls can use it; Rutz says it is Linux-container oriented and he was unsure whether Windows containers were yet supported.
- Adoption is opt-in, one building block or one service at a time. An existing application can take a single feature and delete its own code; Rutz says .NET developers can use the optional SDK's client or simply point an HTTP call at localhost on the Dapr port with the target service's name, after installing Dapr locally and writing component files.
Technology and FriendsMike Shelton on Data Lakehouses [TECHNOLOGYANDFRIENDS 740]
- Data warehouses required knowing reporting needs before loading. Shelton, a cloud data specialist on the host's team at Microsoft, describes warehouses as offloading transactional data through extract, transform and load into a fixed relational schema, easy for business users but hard to scale as volumes grew despite massively parallel processing; data with no column defined for it was simply not used.
- Data lakes stored everything raw but were hard to query. Lakes, often on Hadoop's distributed file system and compute, took text, social media, images and video without a schema up front, but Shelton says business users struggled to use them, some called them a "data swamp", and organizations ended up duplicating data into a warehouse for query performance that MapReduce did not provide.
- A lakehouse combines both on one platform with many compute engines. He credits Databricks with coining or evolving the term; raw data lands in an object store and remains a single representation that engines such as Spark or SQL can reach, serving Power BI reporting alongside machine learning on raw text or image recognition.
- Data is refined through bronze, silver and gold tiers. Shelton describes a common pattern of raw files in a bronze layer, cleaned and curated data, often in compressed columnar Parquet, in silver, and reporting-ready data in gold; because all the raw data is kept, a new attribute for reporting means extending the refinement rather than going back to the transactional system.
- On Azure, separate services fill each lakehouse role. He names Azure Data Lake Store as the object store, Azure Synapse Analytics for Spark transformation and serverless or dedicated SQL querying, and Databricks against the same data; he calls the area emerging and says an analytics platform can grow into it incrementally.
Scott HanselmanThe 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
preventDefaulton 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.
Technology and FriendsJimmy Bogard on Vertical Slice Architecture and MediatR [TECHNOLOGYANDFRIENDS 739]
synopsis
Bogard, a software consultant of about 15 years now working on his own, holds that code should be organized by cohesion, with everything for one request in one place, and that abstractions should be added only once real pain demands them; MediatR is what that approach produced.
The layered project. On a 2008–09 ASP.NET MVC application of up to about 1,000 screens, the team used onion architecture enforced by project references. Adding a field meant edits all over, per-entity repository and manager classes became contention points, shared methods coupled features, and persistence ignorance led to inefficient ORM use. The team collapsed its projects into one over a weekend; the same project gave rise to AutoMapper.
Zero patterns first. On the next project Bogard and a few leads spent about a month with no abstractions, letting the code show where patterns were needed.
Feature folders. Each request's input, handler, response, validation, view, script and styling went together on disk, leaving only controllers where routing required, in one project split only when two applications needed to share code.
MediatR. Single-method services became request handlers, and a mediator reduced each controller to one dependency and gave one place for logging, transactions and auditing. He open-sourced the roughly 100 lines after a sixth copy.
Convergence. He points to Angular moving from AngularJS's layer folders to co-located components as an independent arrival at the same idea.
- Layered onion architecture broke down on a 1,000-screen application. Bogard describes a 2008–2009 ASP.NET MVC project where a rigid project hierarchy enforced inward dependencies; adding one field to a screen meant changes across the code base, and per-entity "layer god objects" such as a customer repository and customer manager became contention points for many developers and coupled unrelated actions through shared methods.
- Pretending the ORM did not exist produced inefficient data access. Because business logic could not couple to the ORM, the team relied on lazy loading and lowest-common-denominator features. Friction got bad enough that one Friday the tech lead had all projects collapsed into one by Monday, keeping the layers as folders; Bogard says that project also gave rise to AutoMapper and other now-common MVC patterns.
- Start with no patterns and abstract only when it hurts. On the next large project he and a few senior leads spent about the first month using tools directly, data access in controllers included, to see which problems actually emerged, because abstraction adds complexity that must buy something.
- Organize code by what changes together, not by layer type. In his "feature folders", now vertical slices, each request's input object, handler, response, validation, view, JavaScript and styling sit in one place on disk, with only controllers left where routing required them; he keeps one project and splits only when two applications need shared logic. He says other ecosystems reached the same conclusion independently, citing Angular's move away from AngularJS's organize-by-kind layout.
- MediatR grew out of copying the same 100 lines into six projects. Single-method services like "approve invoice" and "reject invoice" became a request–handler–response pattern; routing requests through a mediator gives each controller one dependency instead of one per action, and lets logging, transactions and auditing wrap every handler without DI-container decorators or proxies. Bogard says the name was a nod to SignalR and has no correct pronunciation.
Technology and FriendsRob Richardson on Containerization [TECHNOLOGYANDFRIENDS 738]
- Containers virtualize the operating system kernel, not the hardware. Richardson, a developer advocate at Shoreline, contrasts virtual machines, which specify bus, RAM and CPU and install a guest operating system, with containers that share the host's kernel, so they start fast enough to spin up per request, scale to demand and hand resources back to the cloud afterwards.
- Containers are identical, short-lived cattle, with state kept in volumes. Every instance of an image is the same apart from host name and IP, so two, five or 25 web servers behind a load balancer make a durable site; durable data goes in a volume mapped into the container from a SAN, Azure Files or S3, which the application sees as an ordinary folder.
- One image runs the same locally, on premises and in the cloud. Configuration such as the database is injected through environment variables without rebuilding, which he says removes "works on my machine"; the caveat is that the kernel must match, so Linux containers need a Linux host, and locally developers usually run them inside a small Linux virtual machine.
- Docker builds containers and an orchestrator such as Kubernetes runs them. Richardson says the two are used together rather than one replacing the other: images are built with Docker on developer machines and build agents, pushed to a registry, and an orchestrator told, for example, to keep three instances across availability zones chooses machines and moves workloads when one is taken out for updates.
- New versions deploy by shifting traffic, not upgrading servers. He describes starting version two alongside version one, moving 10%, 20%, 50% and then all traffic, and terminating the old containers; the pipeline's artifact is an image holding the application and dependencies such as a PDF generator or SDK, the Dockerfile lives in Git with the source, and images go to a separate image repository.
Crosstalk SolutionsWorth It?? T-Mobile 5G Home Internet Speed Tests and Overview
- T-Mobile Home Internet is cheap, contract-free and easy to start. It cost the host $50 a month ($25 for existing T-Mobile phone customers), with a $100 sign-up rebate, and he walked out of a store with the modem in 30 minutes. He says he has no affiliation with T-Mobile and pays for the service himself; it needs solid local 5G coverage.
- The modem double-NATs and offers no bridge mode or static IP. Plugged into a UniFi UDM Pro's WAN it handed out a private 192.168.x address, and the host found no static-IP option on either the home or small-business service. The UDM Pro at first negotiated at 100 Mbps instead of 1 Gbps, which cleared after swapping the modem's two gigabit ports and rebooting.
- Measured speeds were high and fairly consistent over a month. A wired Raspberry Pi running a speed-test CLI client every 30 minutes, graphed in Grafana, showed up to about 600 Mbps at night and 250–300 Mbps by day; an iPhone 14 on the modem's Wi-Fi 6 regularly saw about 350 Mbps daytime.
- Occasional sluggish spells make it unfit as a business primary. About half a dozen times in a month browsing stalled for a couple of minutes, sending the host back to his Comcast Business 600x40 line at almost $350 a month. He judges double NAT bad for VoIP and other real-time services, and a missing static IP a problem where a business WAN IP cannot be dynamic.
- The host rates it fine for ordinary homes and ideal as backup. For basic browsing and streaming he calls it totally usable, and faster and cheaper than his $110-a-month Starlink at 80–150 Mbps, though Starlink works remotely. He is keeping it as failover on a dual-WAN router, or to carry guest and non-critical traffic.
Technology and FriendsKira Soderstrom on Power Platform [TECHNOLOGYANDFRIENDS 737]
- Low code pairs subject experts with pro developers in hybrid architectures. Soderstrom, a Microsoft engineer on a Power Platform team for about a year, describes building rapidly on the platform's services while adding high-code components where needed, with citizen developers such as accountants or project managers building alongside, or sometimes without, pro developers. Rather than listing what the platform is wrong for, she looks for pieces to incorporate: an MLOps pipeline stays on Azure Machine Learning, but can draw on Dataverse.
- Built-in security and privacy is the platform's biggest selling point. She calls both moving targets that the platform handles, leaving teams to configure access controls; she says security left until late in a project can block it and cost days, and possibly thousands of hours, of development time.
- Extend through connectors, custom code and existing patterns. Soderstrom points to hundreds of out-of-the-box connectors such as SharePoint and Adobe Sign, custom connectors to any API, as she built on a recent project for a client's middleware team, custom JavaScript, HTML and CSS, and portal access for external identity providers; she advises first searching for a pattern someone in the same industry has already built.
- Solutions fit standard CI/CD as diffable configuration files. The Power Platform CLI pulls a solution of Dataverse tables, flows and connectors down as XML and YAML that can go into source control and through validation, CI and CD pipelines, with checks available as Azure DevOps tasks or from the CLI; she says the files are harder to read than code but show changes between versions, and Dataverse is also backed up automatically.
- She found Playwright workable for end-to-end testing of portals. In a spike eight or nine months earlier, where Selenium was not built in for portals, she says Playwright offered built-in video, screenshots and code generation from clicking through the browser, and could be swapped in and out of her testing pipelines to verify that a flow updated a status in a given row.