tech

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

Technology and FriendsHillel Wayne on TLA+ [EPISODE 795]
  • Formal specification checks the design, not the code. Wayne, a formal methods consultant, separates it from the better-known branch that proves code correct with a theorem prover (his "Let's Prove LeftPad" project shows that branch). Specification checks an abstract blueprint of the system. He says it is less powerful because it cannot show the code works, but faster and cheaper for companies, and has grown more popular than proof over the past few years.
  • TLA+ explores every interleaving of a concurrent design. Instead of being run, a TLA+ spec is model checked: every random outcome and concurrent interleaving from the initial state is checked against safety properties ("no account ever goes below $0") and liveness properties (the money in the system adds up once every transaction has been processed, even if a process crashes partway). His example is a bank wire, where a check-withdraw-deposit design can hit a race condition and overdraft an account.
  • Writing the spec first is cheap compared with the code. Wayne says a spec usually takes a tenth to a twentieth as long as the code; on one project the spec took two days and the code two months. Code cannot practically be generated from a spec. His pitch is that you then write code for a design you know is correct, not one that may be fundamentally flawed. He says generating test suites from specs is a promising but not yet mainstream field, in which MongoDB has shown good results.
  • Some work is not worth specifying. Wayne names three cases: code that will be finished within a day or two (he finds TLA+ economical for projects of a couple of weeks to a month); complicated legacy code where a change would need a very large model first; and simulation or highly computational code such as machine learning, where you do not know the answer until you run it. He has seen ETL pipelines into ML systems specified, but not the ML itself.
  • The tooling is free, open source and funded by Microsoft Research. The TLA toolbox IDE or a VS Code extension includes the model checker, and specs should be checked in and code reviewed with the source. The syntax is mathematical, so Wayne points beginners to PlusCal, which compiles to TLA+ and which AWS used around 2014 to find complicated bugs in S3 and DynamoDB, to a newer language called Quint, and to his site learntla.com. He says the work began at AT&T before the inventor joined Microsoft Research about 15 years ago, and a TLA+ foundation now oversees funding and development.
Technology and FriendsPaul Sheriff on Starting and Running a Successful Consulting Business [EPISODE 794]
synopsis

Sheriff, who ran his own software company from 1991 until selling it in 2017, argues that independence depends less on programming skill than on time management, visibility, a financial cushion and basic business knowledge. He promotes his own YouTube course on the subject.

Getting started. After working at Boeing and then a small consulting firm in Munich, he launched on the back of a friend's training-seminar series, which paid the bills and brought clients. He advises six months of living expenses saved, partner buy-in, and, ideally, starting while single.

Finding work. Teaching, writing, LinkedIn and conference speaking make people treat you as an expert. The non-billable hours spent marketing are why he says poor time managers should not go into business.

Structure and staff. He incorporated as an S corporation for liability protection and avoided partnerships. Admitting he was a poor manager, he hired a former Boeing IT director to run roughly 16 staff, and he enforced a 10-minute rule before asking for help. Giard adds an MBA case study of the founder who outgrows their own management ability.

Lean times. Every payment was split by percentage into a rainy-day account. In one downturn his staff chose a shared pay cut over a layoff, with his own cut 50% deeper. Giard backs the value of managers being transparent during layoffs.

The exit. After weighing employee buyouts and mergers, he used a business broker. The sale took two years because he rejected buyers who would harm his staff, and he kept it secret from employees.

  • Start with a cash cushion and as few obligations as possible. Sheriff went independent in 1991 after Boeing and about a year at a small, fast-growing consulting firm in Munich. A friend's national training-seminar series paid enough in a couple of weeks a month to leave the rest for finding clients, and seminar attendees became clients. He advises six months of living expenses in the bank, says the best time to start is when single with no kids, and says a spouse needs full buy-in. He worked 60 to 80 hours a week from a small apartment.
  • Clients find you if you keep your name out there. Early advice he took: teach and write articles, because an audience assumes a speaker is an expert. Today that means consistent LinkedIn posting, blogging, and speaking at user groups and conferences. He says strong programmers often fail at the marketing and sales side, and that anyone poor at time management should not go into business, because the non-billable hours spent finding the next client are unavoidable.
  • Incorporate once you have employees, and buy the management you lack. He moved from sole proprietor to an S corporation for limited liability and lower taxes than a C corp, and he distrusts partnerships unless the skills complement each other. At his peak he had about 16 employees. Calling himself "the worst manager in the world", he hired a former Boeing IT director as manager, who stayed 17 years. Staff were hired by word of mouth and in-person interviews, worked from an office, and followed a 10-minute rule: if you can't find an answer in 10 minutes, ask a colleague. He stresses a lawyer, client contracts, an employee handbook, workers' comp, and the employer's half (7.5%) of the 15% payroll taxes.
  • Survive lean times with a rainy-day fund and open books. Incoming revenue was split by percentage into an operating account and a rainy-day account, and he says that fund should never drop below six months. In one downturn he gave staff the choice between one layoff and an across-the-board pay cut, with his own cut 50% deeper. They chose the cut, and he restored salaries once business recovered. His lesson is to talk to employees when things get tough.
  • Selling the company took two years because fit mattered more than speed. He lists the exit options as winding down, an employee buyout paid over about 10 years, a merger with a friendly competitor (he tried, without success), or a business broker, which is what he used in 2017 after 27 years. He kept the sale secret from staff, since nervous employees leave and the value falls, and he turned away a buyer with cash but no business experience. The buyer gave everyone a raise, then sold to a larger company two years later.
Technology and FriendsGael Fraiteur on Metalama [EPISODE 793]
  • Roslyn source generators made a successor to PostSharp possible. Fraiteur says PostSharp, begun in 2004 when the C# compiler was closed-source C++, had to read, rewrite and recompile MSIL to inject boilerplate such as logging and INotifyPropertyChanged. Microsoft's source generators three or four years ago led him to build Metalama on Roslyn, which became generally available in May of the previous year. PostSharp is now in maintenance mode: still supported and updated for new platforms, but getting no new features, which all go into Metalama.
  • Aspects transform code, report errors and suggest refactorings. A Metalama aspect runs at compile time and in the IDE. It can add code (implement an interface, override properties, add methods), raise diagnostics when its preconditions are not met, and offer a refactoring that writes the generated code into source. Developers apply aspects by custom attribute, by LINQ-style queries over the codebase in a "fabric", or by inheritance from a base class.
  • Templates are written in "T#", a dialect fully compatible with C#. In one template method, build-time expressions such as a parameter's name sit beside runtime expressions such as its value. Fraiteur compares this to Blazor, except that the input and output languages are both C#. Aspects can live in a separate project for reuse, but he says they usually sit next to the classes that need them, such as a change-tracking aspect beside its base entity.
  • The core ships as NuGet packages on Metalama's own Roslyn fork. At build time, the open-source Metalama Compiler adds an ISourceTransformer entry point that turns one compilation into another, because standard Roslyn does not allow code to be changed during compilation. At design time it uses the standard analyzer, source generator and code fix extension points, so it works in any editor. An optional Visual Studio extension adds aspect syntax highlighting, a diff between source and generated code, and CodeLens markers for aspects.
  • Code validation enforces a team's own architecture rules in the IDE. Fraiteur argues that architecture erodes because guidelines exist only as text checked in code review, where lapses slip through. Existing analyzers enforce community-wide .NET conventions, and architecture unit tests (he names NetArchTest) check a team's own rules through the test runner. Metalama instead shows violations as red squiggles in the editor.
Scott HanselmanLocal AI empowers startups with StoryGraph's Rob Frelow
synopsis

Rob Frelow, co-founder and chief AI officer of StoryGraph, argues that a two-person freemium startup with millions of users survives only by keeping costs low and user trust high. That meant moving off the cloud to rented bare metal, and running its language model on its own servers rather than sending readers' data to a third party.

Off Heroku. Costs tracked users in lock step, and the forecast showed no path to profit. Cloud 66 gave them Heroku-style deploys onto bare-metal servers they rent. He considered servers in his garage and colocation, and rejected both. The company has since become profitable.

The economics. StoryGraph has over 2 million registered users and about 50 million book views a day, funded by just over 10,000 Plus members paying about $5 a month. Hanselman likens the arrangement to the "thousand true fans" theory; Frelow says it leaves the business dependent on goodwill.

The holiday surge. Daily users more than doubled around New Year, and about 100,000 Goodreads imports meant roughly a billion database inserts. That caused outages, which Frelow calls the worst week of his professional life. Hanselman tells a story of his own about a traffic shift at a former employer, and urges Frelow to give himself grace.

Local AI. A self-hosted model runs on every book page hit, chosen for cost, privacy and trust. It is opt-in, and a footnote says no data leaves StoryGraph's servers. Hanselman credits its explanations of why a book suits a reader as responsible AI. The personalised preview is to move from Plus to the free plan.

What comes next. Customers vote on the road map. Shareable year-end graphs drove the January 1 traffic. Buddy reads hide spoilers by percentage, and book clubs with group recommendations were due shortly.

  • Leaving Heroku was forced: freemium costs rose with users. Frelow, co-founder and chief AI officer of StoryGraph, says costs rose in lock step with usage and their forecast showed the company "had no future" on Heroku. They now rent bare-metal servers deployed through Cloud 66, which he says gives Heroku-style ease and is "really the reason" they are profitable without hiring ops staff; the company has two full-time people, and co-founder Nadia is the only developer.
  • The business runs on the goodwill of a paying minority. He reports well over 2 million registered users and about 50 million book views a day, against a Plus membership of about $5 a month that has just passed 10,000 members. He calls that model precarious because it depends on users continuing to like and trust them.
  • The bottleneck in a surge is the database, not server count. New dedicated servers arrive within minutes, he says, but over the holidays daily users more than doubled and about 100,000 Goodreads imports of roughly 1,000 books each, with about 10 attributes per book, came to on the order of a billion inserts. That caused outages and a trade-off between keeping the app up and processing imports; he expects to need replication or a distributed database.
  • Every book page hits a locally hosted language model. Sending millions of hits to a third party would cost too much, give away user data, and risk the trust the business depends on, he argues. The feature is opt-in through a pop-up that never reappears if declined, and a small share of users still dislike it. The personalised AI preview is currently a Plus feature because of cost; he plans to move it to the free plan in the coming months and reshape Plus around stats.
  • Users set the road map; features favour reading together. He cites Nadia's mantras: keep costs low, keep the tech simple with Ruby on Rails, keep talking to customers. Buddy reads lock each comment until a reader reaches the same percentage of the book, read-alongs give up to 1,000 people chapter checkpoints, and book clubs with a group-recommendation AI were due within a week or two. He says they avoid gamification.
Crosstalk Solutions10-Minute Guide to a Secure Remote Home Lab Setup
  • Cloudflare Tunnels expose home-lab services even behind CGNAT. The cloudflared connector dials out to Cloudflare and holds the connection, so no firewall ports need opening. Cloudflare then routes each DNS hostname down the tunnel to an internal service, including other devices on the LAN. The host demonstrated it over T-Mobile Home Internet, says he was not paid by Cloudflare or ZimaBoard, and has not tried the alternatives he names, Tailscale and ZeroTier.
  • The ZimaBoard is a cheap one-click platform for this. The ZimaBoard 832 costs $199, with an Intel Celeron, 8 GB of RAM, 32 GB onboard storage, two SATA ports, two gigabit Ethernet ports and two USB 3 ports. Its CasaOS app store installs OpenSpeedTest (port 3004) and cloudflared in one click. Where casaos.local does not resolve, the host finds its IP in the DHCP leases or on an attached monitor, and updates it first.
  • A tunnel needs a Cloudflare-managed domain and per-service hostnames. The domain is either bought through Cloudflare or pointed at Cloudflare's name servers from another registrar. The tunnel is created under Zero Trust > Networks > Tunnels, and its token command is pasted into cloudflared. Public hostnames then map to http://IP:port, such as the CasaOS dashboard, OpenSpeedTest and the T-Mobile gateway at 192.168.12.1. Until locked down, anyone with the URL can reach them.
  • Cloudflare Access locks the hostnames down, but only with a wildcard subdomain. Leaving the application's subdomain blank protects only the root domain, so the host uses an asterisk. His policy uses an emailed one-time PIN for addresses ending in his company domain and adds a US-only country requirement, which he concedes a VPN easily bypasses. IP-range rules and SSO providers (Google, Azure, GitHub, Facebook) are other options.
Scott HanselmanOur Retro FPGA future powered by Jose Tejada (JOTEGO)
synopsis

Jose Tejada, known as JOTEGO, argues that FPGAs are the superior way to preserve old arcade and console hardware, because they recreate the circuit itself. He funds the work through Patreon early access while keeping it open source, and his day job as a chip designer.

What an FPGA is. It is generic logic: one-bit registers fronted by programmable lookup tables, with some chips carrying a hard ARM CPU on the side. They are mostly used in signal processing. A core is a bitstream that sets switches, closer to a save state for the chip than to a program. Tejada's first contact was the MiST project's Atari and Amiga work, and Hanselman places MiSTer around 2020 or 2021.

Why not software. Every critical signal can in principle be cycle-exact, and software simulation of the same logic runs hundreds of times slower than real time. Tejada agrees with Hanselman that FPGAs will always be more accurate and faster.

Recovering the design. Arcade boards were mostly bespoke per game, so a game-specific core can take as much work as a console. Missing documentation means extracting schematics from boards or decapped chips. He once exchanged messages with a Capcom veteran involved in Street Fighter II, who doubted a Spanish-made board in Tejada's collection was original. He reads US case law as permitting reverse engineering that produces your own design.

Making it pay. Betas go to patrons first and are released later with source. He says staged releases keep people engaged, and that detailed posts make the community feel valued. The day job pays more than Patreon could, and he values its cross-pollination.

The Neo Geo Pocket. The 1999 handheld's CISC CPU, close to 300 instructions with mismatched register, address and data widths, was the hardest part. The beta is monochrome. His choice to use microcode, as the original did, keeps it off smaller FPGAs.

  • An FPGA core describes the original hardware rather than emulating it. Tejada (JOTEGO) explains FPGAs as registers plus programmable lookup tables, enough to build any digital circuit; a "core" is not software but a bitstream that sets switches, so at power-on the chip is the arcade board or console. He believes the Analog Pocket's FPGA uses ordinary volatile memory, so it can be reprogrammed without limit.
  • FPGAs will stay more accurate and faster than software emulation. Given enough information, every signal can be reproduced to one clock cycle on systems clocked at roughly 6 to 30 MHz. His evidence is that simulating the same logic on a PC during development runs hundreds of times slower than real time.
  • Arcade games often need their own cores, rebuilt like archaeology. Arcade makers usually built new hardware for each game, so a single game can cost as much work as a console. He works from schematics and datasheets where they exist and otherwise extracts the design from boards or decapped chips; he says original companies have often lost the material. On legality he points to US rulings on a PlayStation emulator and Intel versus NEC that allowed reverse engineering as long as you build your own thing, and notes that in Spain modifying a console is illegal, which he says his work does not do.
  • Paid early access funds open-source work. Patreon backers get betas before cores are released publicly with source, which he calls one of the few working open-source business models; releasing one thing at a time also makes people value each core more. He keeps his day job as a microelectronics engineer designing chips, citing synergy between the two, and pays two helpers, one of whom answers repetitive support questions from templates.
  • The Neo Geo Pocket core's hard part was a convoluted CPU. The beta, released 5 January, is monochrome only; he says colour "should not be that complicated". The Toshiba TLCS-900H at 6.144 MHz has close to 300 instructions and mixes 32-bit registers, a 24-bit address bus and 16-bit data paths. Implementing it with microcode, as the original did, makes the core too large for smaller FPGAs.
Technology and FriendsKashif Qureshi and Nick Simons on Fluid Framework [EPISODE 792]
  • Fluid Framework syncs application data between clients almost instantly. Simons describes it as a client-side runtime plus a service, built for Microsoft Office productivity apps; Microsoft Loop and Whiteboard use it. Qureshi adds that Teams meeting notes run on Loop components built on it. Any JSON-shaped data can be synced, but it currently has to fit in client memory: about 10 MB is a good ballpark, and the team is working past that limit. The guests name Autodesk and the manufacturing firm Hexagon as the most prominent external partners.
  • Developers use synced data structures as if they were local. The runtime is TypeScript (JavaScript also works) and fits any front-end framework. Writing to the data model updates every client and fires a change event. A service is still required: Azure Fluid Relay, where you bring your own authentication and permissions, or SharePoint Embedded, in preview, which stores Fluid data in customers' M365 tenants. Client code barely changes between them. There is an open-source reference service, but the guests say running your own is a months-long effort for a large team, while a working collaborative app on the hosted services takes an afternoon.
  • Version 2.0's main addition is SharedTree, a schema-based tree structure. Simons says users found 1.0's primitives, mainly SharedMap (key-value pairs, nestable), inflexible. SharedTree supports classes, objects and full arrays, and merges concurrent array edits so there is no data loss or merge conflict, letting a whole app run on one structure. The 2.0 beta shipped in January, with general release expected "later this spring", around mid-year.
  • A browser dev-tools extension shows Fluid state during testing. Qureshi describes a Fluid tab in the Edge developer tools, with a Chrome version too, that shows an app's Fluid components, the current state of its SharedTree, and who else is in the session. More features are to be announced in the coming weeks at aka.ms/fluid and fluidframework.com.
  • The runtime is free and open source; the service is not. Azure Fluid Relay has a free tier for development but none for production. The guests present open source as the answer to reservations about adopting a big company's technology, backed by Microsoft's scale, and they are asking for feedback through GitHub Discussions ahead of the final 2.0 release.
Technology and FriendsJordan Thayer on the AI Landscape [EPISODE 791]
  • Large language models jumped forward abruptly, after long incremental progress. Thayer, AI practice lead at a software product consultancy, says fields move slowly and then advance "as if 10 years happened overnight". He credits more special-purpose hardware and deep-learning advances in compression that keep large models in memory. The models are now used for work needing more state and structure, such as coding assistants and image, time-series and video generation.
  • Most of his recent projects were not generative AI. He says clients think of generative AI first, but most of his projects in the last couple of years were vision and planning or scheduling systems. Those techniques have been fielded longer, and clients' equipment telemetry is in better order than their internal knowledge bases. Manufacturing examples: deciding where to cut a two-by-four from a board to minimise waste, and estimating the remaining useful life of tractor-trailer parts, which he calls state estimation. The two big needs he sees are avoiding unscheduled downtime and making the most of raw material, time or labour.
  • In regulated industries, he puts generative output in front of an expert. He sees three camps of client: those with a defined problem, those exploring generative techniques, and those who need "AI in the box" for funding or competitive reasons. He warned a pharmaceutical company that a product-recommending chatbot raised medical-device and liability concerns, which "wasn't what they wanted to hear". For a financial services firm with a similar idea, the workable version fed the generated advice to its expert advisers as a draft, with them as the final check.
  • Developers should learn older, less hyped AI fields too. His own background is heuristic search and optimization, close to operations research. It covers puzzles and pathfinding, and also FedEx depot placement, US Air Force air-to-air refuelling sorties, ship scheduling and nurse rosters. He also recommends classic machine learning (decision trees, clustering, k-nearest neighbours), classic NLP such as sentiment analysis, which needs less hardware and maths than LLMs, and OpenCV vision; a friend built a cat-versus-possum detector. His reading list: 3Blue1Brown on YouTube, Russell and Norvig's AI: A Modern Approach, Judea Pearl's Heuristics, and Toby Walsh's Machines Behaving Badly.
  • AI's impressive results come from "comically stupid" methods. He says a solver finds the shortest Rubik's Cube solution by trying move sequences hundreds of thousands of times a second, and most approaches just encode a problem as linear algebra: "it's just doing math". His looming concern is that people stop scrutinising output they don't have to check, so he sees a lot of UX and human-computer-interaction work ahead before these systems are used responsibly in medicine or driving. Giard cites Tesla's eye-tracking alerts. Thayer is most excited about self-driving cars letting ageing people, like his parents in rural Kentucky, keep their independence.
Scott HanselmanThe Power of Open Telemetry with Dr. Sally Wahba
  • Monitoring is reactive; observability answers questions you didn't anticipate. Wahba, a principal engineer at Splunk, says monitoring detects a problem after it happens using predefined metrics. Observability's goal is to reason about a system's internal state from its outputs and answer new questions without adding instrumentation, an investment in "your future self".
  • Distributed systems outgrow the debugger. In microservices a request may never touch your process, and in Kubernetes an ephemeral pod's logs vanish with it unless harvested. She contrasts this with her NetApp storage-OS work, where you could SSH in or read a core dump, and draws parallels with the sensor networks she worked on, where nodes came and went without knowing their neighbours.
  • OpenTelemetry's value is instrumenting once, vendor-neutral. With proprietary libraries, a change of vendor means re-instrumenting everything; OpenTelemetry makes that a one-time investment, with vendors differentiating on top.
  • Instrumentation depth is an art, and needs culture and buy-in. Instrumenting everything costs money and buries the needle in a bigger haystack. Like unit tests, observability should shape design and needs management backing, which she says is best won by pointing to past disasters it would have shortened. Personal data stays out of telemetry, enforced partly by code review.
  • Being on call made her a more empathetic engineer. NetApp shielded developers from production, while at Splunk her team runs its own service, which pushed her to build for fewer 2 a.m. pages and faster recovery. Observability experts are scarce because the field is new and rarely taught, so she advises starting small with zero-config auto-instrumentation.
Crosstalk SolutionsCrazy Starlink stats! #starlink #shorts
  • Starlink carries about 42 petabytes of traffic a day. The host cites a PCMag article for the figure (42,000 TB, or 42 million GB, daily), and passes on a Reddit user's calculation converting it into an equivalent number of 3.5-inch floppy disks a day.
Technology and FriendsOren Eini on the Corax Search Engine Part 2 [EPISODE 790]
  • Decompressing and re-encoding beats editing sorted lists in place. Eini says that because the compression runs faster than memcpy and moving data to the CPU is the dominant cost, Corax updates a posting list by unpacking a buffer, scanning it alongside the additions and removals, and re-encoding it; a 4 KB buffer holds about 7,000 document IDs, so the index updates incrementally without Lucene's deferred merge cost. Part of this rests on a machine-generated code file of about 17,000 lines.
  • Corax lets users query any combination of fields without compound indexes. He says a traditional compound index (last name, then first name) fixes its structure up front and cannot serve a first-name-only search, so supporting arbitrary queries means a combinatorial explosion of indexes; Corax intersects independent, compressed posting lists per term instead, which he says is largely how Lucene works too.
  • Sorting a large result set nearly broke the design. His example is "all published blog posts, sorted by date, top five" over 70 million records in a data set of a few hundred gigabytes: Lucene caches every unique value of the sort field in memory, but Corax cannot assume data stays unchanged, and fetching each date meant random disk reads. Corax now rewrites such queries internally, speculatively scanning the date index from the bottom up and matching against the results so they come back already in descending order.
  • Corax shipped with zero client changes, by deliberate rule. Eini says it reached the 10x goal, was released in early October (about three months before recording) and is switched on by one configuration setting; customer feedback is "it's faster", alongside some missing Lucene features and bugs. The no-visible-change rule comes from RavenDB's 2015 break of backward compatibility, which he calls the right technical decision but "really annoying", since he still supports old versions, including users of a Silverlight management interface from 2012–13.
  • Infrastructure vendors end up debugging systems nobody remembers. He describes a customer system that threw an unhandled optimistic-concurrency error after three years because two people finally edited the same document, with its authors gone and the operations staff knowing only the process name; he cites Leslie Lamport's line that a distributed system is one where a server you never knew existed breaks yours. For one client who refused source control, he shipped a zip of all sources embedded in each deployed binary.
Technology and FriendsOren Eini on the Corax Search Engine Part 1 [EPISODE 789]
  • Lucene is built for a search engine, not a database. Eini says Lucene, which RavenDB used for about 15 years, assumes large periodic batches merged later, so a small index write takes milliseconds until a merge hits and takes 30 seconds; a database sees steady small writes (he cites 100 a second) and users expect to query a change immediately.
  • Lucene's compact file format costs RavenDB twice per query. He says the format dates from the early 2000s, when disk was expensive, and must be decoded into managed objects at query time and then garbage-collected; against his target of one million requests per second, cutting allocations "even a little bit" adds 2–3% to overall performance. He says RavenDB already exceeds 500 queries per second on a Raspberry Pi Zero (quad-core 1 GHz ARM, 512 MB).
  • Replacing Lucene had to pay for its risk tenfold. Work on Corax (Latin for raven) began in 2014 but was never fully staffed for years; the bar Eini set was 10 times faster than Lucene for indexing and querying in all common scenarios, without losing Lucene's features.
  • An index is conceptually simple: terms mapped to posting lists. On a slide he shows an index as a dictionary of fields to terms to sets of document IDs, queried by intersecting sets; for persistence Corax encodes terms with HOPE (High-speed Order-Preserving Encoder), whose compressed keys sort the same as the originals, letting him fit a 100 GB test data set onto the 512 MB Pi Zero.
  • Corax uses 64-bit document IDs, compressed with SIMD in C#. Lucene's int32 IDs cap it at 2 billion records, which RavenDB users hit and had to shard around; to keep 8-byte IDs from bloating posting lists (8 MB per million), Corax uses a published integer-compression algorithm the captions render as "Fast P4", which Eini says took him three weeks to understand after five years of returning to the paper. He implements its SIMD instructions in C# through .NET JIT intrinsics rather than P/Invoke, which he says costs too much at billions of calls a second, and says the code hits hardware memory-bandwidth limits while effectively outrunning memcpy because it works on compressed data.
GCastIndexers and Indexes in Azure AI Search [GCast 169]
  • An indexer turns mixed documents into one queryable JSON index. Giard sets out the sequence: put documents in a data store, create an Azure AI Search service, add the store as a data source, then run an indexer that converts the content to JSON and builds an index, with optional post-processing such as OCR and image analysis. His inputs are nine coffee-shop reviews from Microsoft Learn, which he saved as Word, text, PDF and image files so the service has to read each format.
  • Setup is a blob container and a Basic-tier search service. He uploads the files to a blob container named "reviews" with anonymous access, which also has to be allowed on the storage account. He says real use needs more security than that. He picks the Basic tier, the cheapest paid one, at about $75 a month if it runs all month. He says everything shown also works on the free tier, and higher tiers buy scale at higher cost.
  • Built-in AI enrichments extract text, sentiment and image descriptions. On import he extracts content and metadata, keeps the default parsing mode because the files differ in structure, and attaches the free built-in Azure AI services (formerly Cognitive Services). He turns on OCR (merged into a merged-content field), page-level granularity at 5,000 characters, location names, key phrases, sentiment (the reviews carry no star rating), and image tags and captions. He skips people, organizations, language detection and PII because the data has none of them. The enrichments and image projections are saved to a knowledge store in the same storage account.
  • Index fields and the indexer schedule are set in the wizard. He marks the returned fields (content, locations, key phrases, sentiment, image tags and captions) as both retrievable and filterable. He runs the indexer once, but it can run hourly, daily or on a custom interval such as every 120 minutes from a later start date, which he suggests for a document store that changes. Among the advanced options he leaves on the encoding checkbox, whose main benefit he says is allowing spaces in key names.
  • Queries hit stored JSON, so the analysis runs only once. In the Query Explorer, a query for location Chicago returns JSON with a match score, the content, key phrases and a sentiment label for each review. Seattle reviews are excluded. A search for negative reviews returns repeats because the same text exists in several file formats. The indexer also writes a JSON file per document to blob storage holding the metadata and the OCR and image-analysis output. Giard says the index reads that file rather than re-processing the original document.
Crosstalk SolutionsUI 2FA will be REQUIRED in July!
  • Ubiquiti will make two-factor authentication mandatory on every UI account. It takes effect on July 22, 2024. Accounts that have not set up 2FA by then will be defaulted to email codes, which the host calls the least secure and least convenient option.
  • The host prefers TOTP or UI Verify over email codes. TOTP is a rotating six-digit code every 30 seconds from an app such as Google Authenticator or Microsoft Authenticator, or from a hardware key like the YubiKey 5 series he uses himself. UI Verify instead pushes an approve-this-login prompt to the phone. Either one covers every UniFi application: Network, Protect, Access, Talk and Connect.
  • 2FA is set up under the account's Security settings. Go to account.ui.com, or open any UniFi mobile app and choose Manage UI Account from the profile picture. Under Security, re-enter the password if asked, then use "add new method" under multi-factor authentication. The host hopes Ubiquiti will add FIDO2 or passkeys later.
Technology and FriendsMichael Eaton on Sharing Knowledge [EPISODE 801]
synopsis

Eaton ends where he starts: anyone, at any level, should share what they know, in whatever form suits them, mostly for their own benefit, and without being put off by gatekeepers or critics.

Five skills. Back on the speaking circuit after a long break, Eaton lists his "five skills everyone should have": write things down, learn continuously (which he says few were ever taught how to do), share, cultivate humility (ego, his own included, has been developers' biggest downfall over his almost 30 years), and lead up. The rest of the episode is spent on sharing.

Nobody is too junior. He tells boot camp graduates they have something to say, and argues against discouraging "yet another" SOLID post, since a newcomer's wording may reach someone the classics did not.

Notes to self, made public. His Things I Learned posts, snippets repo and weekly links post are records he expects to need again; Giard says the same of his own blog. Eaton moved job-search resources from a private Slack channel to a public GitHub repo, and built an Ohio tech events repo, because GitHub is open, takes pull requests and needs no login or algorithm. Giard reflects that his Midwest events list and speaker history might belong there too.

Small venues count. Sharing can be a chat with teammates, a lunch and learn or a five-minute lightning talk; one person helped is enough. He wants people to share without seeking credit, and to tell speakers when a talk helped.

Getting started. Pick the comfortable medium: write if you like writing, speak small if you like speaking, or approach a speaker for help. He writes everything on paper first and keeps separate developer, writing and personal journals. On hostile responses, he stays off X, prefers Mastodon, and ignores the critics.

  • Everyone has something worth sharing, however junior. Eaton, who has talked with many developer boot camp graduates, says newcomers assume they have nothing to say; he objects to a social media post asking people to stop blogging about SOLID, because a beginner's fresh wording may be what finally makes the principles click for someone who has struggled with them. "Don't gatekeep," he says.
  • Write primarily for your future self. His "Things I Learned" blog series (an attempt at daily posts that lasted 15 days, about 20 posts so far) records small fixes such as controlling Spotify from the terminal and an Azure Functions failure on his Mac traced to a mismatched .NET version; he also keeps a GitHub "snippets" repo of commands he forgets, and calls his weekly interesting-links post his own bookmarks. He says he shares not for credit but almost for selfish reasons. Giard says the same of his blog: notes to his future self, and his own perspective rather than a copy of the documentation.
  • Put shared material in public, low-friction places like GitHub. After collecting job-search resources in a private Slack channel during his own search 2–3 years earlier, he moved them to a public GitHub readme that takes pull requests; his Ohio tech events repo has had pull requests from five or six people. He prefers this to LinkedIn, which not everyone uses or will log into, and says it is free of paywalls, walled gardens and algorithms. Giard adds that his own Midwest events list needed a modified blog engine to avoid a post date, where a repo would have been simpler.
  • Sharing need not mean blogs or conference stages. Eaton suggests showing two or three teammates something, a lunch and learn, or a five-minute lightning talk at a meetup, and says a CodeMash lightning talk changed his own perspective; one person getting something out of it is enough. He urges anyone helped by a talk to tell the speaker.
  • Start in the medium you are comfortable with. He says forced writing shows, so writers should write and speakers should start small; he prefers blogging because a post lasts and can be sent as a link, while a talk is "an hour and poof, it's gone". Everything he writes starts on paper, including talks scripted word for word before the slides. Of online critics, he stays off X, finds Mastodon engagement higher quality, and ignores the "well, actually" crowd.
Technology and FriendsJeremy Miller on The Case Against Clean Architecture [EPISODE 788]
  • The fault is prescriptive architecture, not Clean Architecture itself. Miller, who founded Jasper FX Software the year before, objects to Clean or Onion Architecture templates used as infallible rules: four or five projects from the start, and a noun-based chain (invoice controller, invoice service, invoice repository, DTOs) in separate projects that scatters closely related code. His advice to technical leaders is to hand over a decision tree, not black-and-white rules, explaining why and when the advice does not apply.
  • Broad horizontal layers block incremental modernization. Miller says swapping a library or database (NHibernate to the latest EF Core, or SQL Server to Cosmos DB, DynamoDB or his own Marten) means changing every handler in a layer at once, too big to sell to product owners. He wants loose coupling between modules so one can be upgraded at a time; Giard adds his own experience of a new column having to be carried through every layer, which Miller knows as the "wormhole anti-pattern".
  • The full template is severe overkill on small services. Miller has repeatedly seen teams build a microservice of two or three controllers and about 12 endpoints with separate controller, service and repository projects, a mediator and base classes everywhere. In his view that erased the microservice's advantage: small enough to test purely with integration tests and so written as much simpler code.
  • Prioritize test automation, now easier with disposable databases. Miller says layering is worth it only where it serves testability, and good test coverage keeps the architecture reversible so layers can be added later. Mocks arose because databases were hard to set up; engines that spin up in Docker and wipe state between tests let him choose integration testing over clean-architecture abstractions, and he calls mocks "overused", not evil.
  • Organize vertically around use cases, then horizontally within each slice. Miller favours "vertical slice architecture" (Jimmy Bogard's term), grouping code by commands or events so one feature lives in one place. He credits Bogard's MediatR with breaking up bloated MVC controllers of 15–20 HTTP methods into single-message handlers, and offers his own Wolverine, a messaging and mediator tool with a 10–12-year lineage under earlier names, whose HTTP endpoint layer can replace MVC Core plus MediatR.
GCastGitHub Action Triggers [GCast 168]
  • A workflow's triggers are whatever is listed under its on section. Giard extends the simple echo workflow from the previous episode, which had only workflow_dispatch (run manually by pushing a button). He points to the "events that trigger workflows" page in the GitHub Actions docs at docs.github.com, which lists the available events alphabetically with sample YAML to copy.
  • Issue events can be narrowed to specific activity types. He copies the docs' issues sample, keeps only the opened and edited types and drops the milestone ones; the docs list others such as pinned, unpinned and closed.
  • A push trigger can be filtered to a branch, folders or wildcards. He adds a push trigger limited to the main branch, noting the docs cover further filtering by folder and wildcard, and warns that indentation matters in the YAML. The result is three triggers, with the manual one kept so the workflow can still be run by hand.
  • Both new triggers fired in his test. A commit made in the GitHub web editor to main showed up in the Actions tab under its commit message, queued while a VM container spun up and then ran; creating a new issue likewise started a run identified by the issue's name. Giard says most of the short run time was spent spinning up the container.
GCastGitHub Actions [GCast 167]
  • A GitHub Action runs jobs, made of steps, in response to triggers. Giard's examples of triggers are checking in code, creating an issue and clicking a button. The repository's Actions tab offers starter templates grouped by deployment, security, continuous integration and automation, made by GitHub, companies or the community. He starts from GitHub's "Simple workflow".
  • In YAML, indentation defines the structure and errors break it. He covers the basics: # starts a comment, settings are name-value pairs, and each level (jobs, then the job name, then steps) is indented two spaces further than its parent. Bad indentation produces syntax errors. He keeps only the workflow_dispatch trigger, which adds a manual "Run workflow" button, and leaves runs-on: ubuntu-latest, noting you would change it for Windows or a specific Linux version.
  • His demo workflow is two jobs that just echo text. Job one has a one-line script step and a multi-line script step; job two has one step. The file is committed under the .github/workflows folder, and he renames it from blank.yml to gcast-simple.yml. A manual run queues while an Ubuntu container spins up, and the run view shows each job, its steps and their output, which is also where errors would appear for troubleshooting.
  • needs makes one job wait for another instead of running alongside it. By default the two jobs ran at the same time. Adding needs: job1 to job two makes them run one after the other, which Giard says suits a case like one job creating a file the next one uses. The rerun took about five seconds longer, and the run graph shows the dependency. He edited the YAML straight into main in the browser and says this is "probably not great for application lifecycle" but fine for a demo.
Crosstalk SolutionsBackseat Driving a Wireless Install 900ft Underground
  • The host critiques another channel's install, not one Crosstalk did. The install, shown on Ghost Town Living, brought internet 900 ft down a mine shaft at Cerro Gordo, California. A NanoBeam AC took a feed from an on-property tower into a MikroTik hEX PoE lite, then a pair of Veracity Highwire ethernet-over-coax adapters (up to 200 Mbps, almost $450 together) took it down the shaft. The host offered in December 2020 to wire the town for free in exchange for filming, and repeats the offer.
  • The coax adapters were unnecessary once power was run down the shaft. Since mains power already reached the bottom, the host argues a PoE switch could sit down there rather than pushing PoE over coax. A MoCA adapter would carry the network without PoE for about a third of the price and at higher speed, he says.
  • He would have used two UniFi switches and armored fiber. With a US-8-150W at each end, armored outdoor fiber could go down the shaft, giving full gigabit, less exposure to lightning than copper, and one management interface for a very remote site. The switches handle both 24 V passive PoE and 802.3af/at. He estimates it at roughly $100–200 more, or more with spares.
  • The first attempts failed on a spliced coax and an access point. After the coax was spliced, neither network nor power got through, so 1,000 ft of coax was replaced. A UAP-AC-Mesh-Pro then would not broadcast even on a PoE injector. A non-Pro AC Mesh taken from the hoist house worked at about 50 Mbps. The host would have put the non-Pro unit at the bottom from the start, since wireless mesh cannot pass through rock anyway.
  • He would add resilience and reach beyond what was built. A preconfigured spare switch should stay on site, because the hoist house is dusty and very hot or cold, and a replacement could take days or weeks. He suggests Starlink (100–300 Mbps) as a backup WAN. A switch at the 900 level would also let cable run 200 ft up to the 700 level for the water-pump camera, which the build as shown cannot support.
Technology and FriendsAlex Riviere on Fresh Hot CSS Features [EPISODE 787]
synopsis

Riviere argues that CSS is in a renaissance: features now shipped in all browsers handle variables, layout, parent selection and text direction natively, jobs that once needed preprocessors, frames or JavaScript.

Why this matters. Giard learned CSS about 20 years ago and stopped; Riviere says many people stopped at "good enough" while front-end practice changed dramatically over the last six years. He demonstrates on a plain page with a header, articles and a footer.

Custom properties. He moves a duplicated font fallback stack into a -- property and reuses it with var(), then defines "paper" and "ink" colours, a metaphor he finds clearer than foreground and background. Redefining a property on headers, or on one element, overrides it within that element, and dev tools show which definition wins.

Grid. He traces CSS Grid to Microsoft and Internet Explorer and says it reached every browser within about a month in 2018. He puts the grid on a wrapper rather than the body, lays out named template areas, spaces them with gap, and puts the grid behind a 768-pixel media query so mobile is the default.

:has(). Styling a container by its contents, such as the wrapper of an invalid input, used to need script; :has() does it in CSS and, he says, reached Firefox about a month before recording.

Logical properties. Inline and block start and end properties keep padding on the correct side when a page switches to a right-to-left language. He blogs at alex.party but has not yet written this talk up.

  • CSS custom properties remove the need for a preprocessor for variables. Riviere says developers who learned CSS 10 or 20 years ago still reach for Sass or Less to get variables, but a property defined with a -- prefix and read with var() can hold fonts, colours or sizes; he defines a shared font fallback stack and colours named "paper" and "ink", which he prefers to foreground and background as clearer. Redefining a property on an element (headers, or one element's style attribute) overrides it for everything inside through the cascade, and browser dev tools show each variable's current value and where it came from.
  • CSS Grid with named template areas is his favourite way to do page layout. He says Grid originated at Microsoft in Internet Explorer and reached every browser in about a month in 2018; he applies display: grid to a wrapper rather than the body, because third-party scripts inject elements into the body, names areas (side, content, footer) with grid-template-areas, assigns elements to them, and spaces them with gap, which applies only between rows and columns. Wrapping the grid in a min-width: 768px media query makes the single-column mobile view the default and the fallback.
  • The :has() selector styles a parent by what it contains, without JavaScript. Riviere's example is highlighting the box around a label and an invalid input, which previously meant listening to the input and toggling a class on the parent in script; he demonstrates bordering any article that contains a tag link with a given data attribute. He says it now works in all major browsers, with Firefox the last to ship it, about a month before recording.
  • Logical properties keep spacing correct in right-to-left languages. He shows that padding-left stays on the left when text is translated into Hebrew, which used to require direction-specific selectors; properties such as padding-inline-start, padding-inline-end, padding-block-start and padding-block-end attach spacing to where text starts and ends instead.
Technology and FriendsBrian Gorman on a Microsoft Software Training Program for US Military Veterans [EPISODE 786]
  • Microsoft's military team runs a tech boot camp for transitioning veterans. Gorman describes the Microsoft Software and Systems Academy, a 17-week program with three paths: cloud application development (ending with AZ-204), cloud administration (AZ-104), and a new cybersecurity path, which he says suits veterans who already hold clearances. Active-duty members take it under orders in roughly their last six months of service, honorably discharged veterans can also join (one of his students left three years ago), and there are Pacific and Central European regions, though one overseas student is attending his Central-time cohort from 7 p.m. to 3 a.m.
  • Admission is selective and takes a couple of months. As Gorman understands it, applicants complete LinkedIn Learning courses, may once have had to pass a Pearson aptitude exam, and go through several interviews. He tells interested veterans to follow the Microsoft military team on LinkedIn for informational webinars and application deadlines; Giard gives the site as military.microsoft.com/mssa.
  • The developer curriculum takes beginners from C# to Azure certifications. Gorman's current class is the 13th run of the cloud application track: 15 students, all virtual, four days a week, most of whom had never programmed. They start with C# console apps built around their own interests (one student's collectible Starbucks cups, used to teach inheritance), then Microsoft Learn's C# path with the free 80-question freeCodeCamp C# certification, data structures, and AZ-900 and AZ-204.
  • Placement support includes a guaranteed Microsoft interview. Fridays, and one full mid-course week, go to professional development with Microsoft mentors on resumes and interviewing. Gorman says 8 of his first cohort's 15 got Microsoft offers and several students were placed at Southwest Airlines, a Microsoft partner, while his second cohort took longer to place in a weaker job market; he has students build GitHub portfolios and team MVC projects to stand out as juniors.
  • Gorman calls this the most rewarding work he has done. He teaches as a subcontractor through Opsgility, his former employer and a Microsoft partner that manages cohorts, and cites seeing veterans move from military pay to developer salaries. He jokes, and says students confirm, that their hardest civilian adjustment is that nobody shows up to meetings on time.
Technology and FriendsJose And Laurel Mojica on Virtual Reality Storytelling [EPISODE 785]
  • The pursuit of immersion led them from live-action film to animated VR. The Mojicas say their feature The Life Peddler shot every scene in one take to feel like watching real lives, and VR promised to put the viewer inside the story. With 360-degree 3D live-action cameras the viewer stays fixed in one spot, so to let viewers move around they had to build digital worlds with digital characters.
  • Viewers choose which of several simultaneous storylines to follow. Their VR movies run four or five storylines at once; the demo has about 10 characters, each with a full story in roughly four to five minutes, meant as short, rewatchable episodes. Jose says the hard part is telling a story when the viewer can abandon the main character for a side story.
  • A pre-recorded "reference video" lets two people perform every character. Because one long take allows no cuts, they first record themselves reading all parts and edit that into a synced, captioned reference video, a method they say took about a year to work out. They then perform each part separately while watching it, recording body motion apart from face and voice; characters built in iClone and Character Creator are driven by motion-capture suits, and odd bodies need care, since the bacon-wrapped avocado is all head and Jose must pivot his whole body to play it.
  • They chose Unreal Engine for its easy path to a VR headset. Laurel says its VR template built and ran on a Meta Quest far more easily than Unity, and its blueprint system needs no low-level programming. The engine supplies collisions, gravity and interaction: viewers can pick up a pizza box or carry a lantern, and climb onto the roof or into trees; an artist builds assets in Blender on top of purchased graveyard and forest sets.
  • The self-funded demo is aimed at future investors. It is a graveyard scene in a town of monsters who make bad low-budget horror films, with the Mojicas as the directors, and they hoped to finish it by March, speaking on 15 January 2024. The team is five people (the two of them, an artist, a gaming-degree programmer who writes the blueprints, and a social-media hire), with clips at baconwrappedavocado.com and on YouTube, and T-shirt sales planned.
Technology and FriendsBrendan Burns on Creating Kubernetes [EPISODE 784]
synopsis

Burns, now a Microsoft corporate vice president over cloud-native open source and the Azure control plane, argues that Kubernetes became the default container orchestrator because it had to be open source and vendor-neutral, and because its creators built a coalition and then the governance to sustain it.

Origins. Giard calls the adoption fast; Burns says it felt long: work began in fall 2013, it went public at DockerCon in 2014, reached 1.0 a year later, and only around 2016–17 stopped competing for adoption against Mesos, Swarm and dozens of others. Mature orchestrators were closed and internal; Docker served one machine, not systems across many.

Selling the vision. A usable demo makes a vision real and gets people moving despite the obstacles, the way a picture of Walla Walla wine country does for a long drive.

Open source as the only path. Inside Google he argued that Kubernetes had to run on competitors' clouds and on premises, because the world is multi-cloud and will go elsewhere otherwise. He adds a hiring argument: shared open tools widen the pool.

The foundation. McLuckie created the CNCF a year after release to give IP and logos a neutral home. Venture money produced a flood of projects, and the sandbox, incubating and graduated tiers let CNCF admit them without endorsing them or exhausting its reviewers.

Writing the rules. After a year learning to run an open-source project and two more winning users, the team had to invent succession, elections, conduct and security-embargo processes, mixing and matching from Node.js and the kernel because neither quite fit.

Now. His team runs AKS and contributes upstream. He recommends kubernetes.io and his co-written book Kubernetes Up and Running, free as a PDF from Azure.

  • Kubernetes won by building the largest coalition, not by being first. Burns says he, Craig McLuckie and Joe Beda began in fall 2013, went public at DockerCon in 2014 and hit 1.0 a year later, but it was 2016 or 2017 before they stopped arguing for it against Mesos, Docker Swarm and tens of other orchestrators. The mature ones were internal to large internet companies and not open source, Mesos was built for big data, and Docker focused on the single machine, while they felt they "had the puzzle box"; what made Kubernetes dominant, he says, was a safe place where any company could see a way to succeed.
  • A new project starts with a demo people can actually use. Burns says the key early task is getting others to believe the vision, and a hands-on demo, not a PowerPoint, does that; his analogy is that people fixated on snowy passes and speed traps never leave Seattle, but show them a Walla Walla winery and they forget the six-hour drive.
  • Open source was not optional if Kubernetes was to win. At Google he had to argue against making it a product that ran only on Google's platform, and a colleague accused him of getting the company to fund his startup; his answer was that the world is multi-cloud and hybrid and wants one solution, so a project that does not go everywhere is abandoned. He calls himself no zealot, saying "it wasn't this should, it was this has to be", and adds that open technology widens hiring, since someone with years on AWS can run workloads on AKS.
  • The CNCF exists to provide vendor-neutral trust. Burns credits McLuckie with building the Cloud Native Computing Foundation under the Linux Foundation, launched a year after Kubernetes' release with Kubernetes as its flagship, so companies building on it need not fear trademark or IP claims; he cites Istio as the most egregious holdout, donated only about a year before recording. To avoid kingmaking amid a venture-funded "Cambrian explosion" of projects, and after pressure from VCs and connections began burning out governance people, CNCF settled on tiers: an unendorsed sandbox, a carefully judged incubating stage, and a handful of graduated projects.
  • Kubernetes had to invent its governance as it grew. He says few open-source projects had been this successful, and neither Node.js nor the Linux kernel (which leaves much to distributors and grew up on mailed patches) fit a GitHub-native project that also did its own releases, testing and documentation; it needed elections and voting rules that large companies could not capture, a code of conduct with eviction, and an embargoed security-disclosure process. At Microsoft, his team now runs the Azure Kubernetes Service, packages AKS for edge and IoT, and keeps a dedicated team contributing upstream to Kubernetes and CNCF projects.
Crosstalk SolutionsStarlink Gen3 In-Depth Setup and Review
  • Gen 3 is excellent where Starlink is the only broadband option. In populated areas the host points to cable or fiber, and argues 5G home internet is faster and cheaper as a backup. He paid $599 for the dish on the Mobile roaming plan and will pause it and keep it in his RV for areas with no LTE. Unpausing bills the whole month. His Gen 1 plan went from $99 unlimited to $120 with a 1 TB cap, and he pays about $30 a month for T-Mobile Home Internet at about 400 Mbps.
  • The dish is smaller overall, tougher, and has a detachable cable. It is slightly bigger than Gen 2 but has a manual kickstand instead of a motorized stand, so it takes up less space. It is rated IP67, against IP54 before. It ships with a 50 ft cable that can be swapped for an optional 150 ft one, where Gen 1's cable was fixed.
  • Power draw is the host's biggest objection, especially off-grid. Starlink states an average of 75–100 W, against a 75 W maximum for Gen 2. He measured about 10 W for the router alone, a peak of 108 W while booting, and 35–48 W at idle. That is a real drain on RV batteries or solar, compared with about 10 W for his T-Mobile router.
  • The router's two built-in Ethernet ports are the big improvement. Gen 2 needed a separate, often out-of-stock Ethernet dongle. The router is also 4x4 MU-MIMO Wi-Fi 6, which the host says mainly helps local transfers because Starlink speeds are about 100–200 Mbps. It can mesh up to three routers, and he believes it works with Gen 2 routers too. It has bypass mode, custom DNS and content filtering, which blocked adult sites when he tested it.
  • Setup took about half an hour, and speeds were strong. Plugging it in took about 5 minutes, and connecting and updating took another 20–30. The host praises the app's real-time alignment guide, which corrected a 12° misalignment. He measured 155/9.3 Mbps in the Starlink app and 308/31.2 Mbps on speedtest.net, and 150–300 Mbps down across the house.