Polis Pandit$Elon Musk’s Free Speech Fallacy and the Liver King Fraud
- This post includes paid content that is not available publicly. See the original source.
The video walks through building a network-wide ad and malware blocker on a Raspberry Pi, ending with pi-hole blocking roughly 221,000 domains, resolving its own uncached lookups through a locally run Unbound service rather than a third-party DNS provider, and serving every device on the network (including separate guest and IoT subnets) via the router's DHCP settings.
Preparing the hardware. The host notes the project is not resource-intensive — he installs it on a Raspberry Pi 4 with 2GB of RAM, calling even that overkill — and says it runs just as well in a Docker container or VM for anyone who can't find a Pi in stock, pointing to a "Pi locator" tool for stock alerts. He flashes Raspberry Pi OS Lite 64-bit with the Raspberry Pi Imager, pre-configuring a hostname, SSH access, and credentials before writing the card.
Installing pi-hole and choosing block lists. After an apt update/upgrade and setting a static IP (either a DHCP reservation or a manual dhcpcd.conf edit), he runs the pi-hole installer, accepting the default Steven Black unified block list and enabling full query logging. He then supplements that list using the Firebog, a curated index of block lists graded by maintenance quality, taking the top two "green" (safe, well-maintained) lists from each category. Running "update gravity" afterward raises the blocked-domain count from about 158,000 to 221,000. He cautions against adding too many lists, since over-blocking breaks ordinary browsing and tends to get pi-hole disabled rather than tuned.
Serving the whole network. Rather than configuring DNS on each device, he points his DHCP server's DNS settings at the pi-hole's IP (and a second existing pi-hole as backup). Because his network has separate LAN, guest, and IoT subnets, he also changes pi-hole's DNS interface setting from "only allow local requests" to "respond only on interface eth0" so it will answer queries from those other VLANs. He flags that without a firewall rule, a tech-savvy user can bypass pi-hole by manually setting a device's DNS to something else, and recommends blocking outbound port 53 to anywhere but the pi-hole.
Adding Unbound for private resolution. To stop any upstream provider from logging the household's DNS history, he installs Unbound, drops in a configuration file from the pi-hole documentation, and confirms it resolves queries on 127.0.0.1 port 5335 using the "dig" command. He then repoints pi-hole's upstream DNS setting at that local address and port instead of Cloudflare.
Verifying and upkeep. Testing against an ad-blocking test site, he shows pi-hole blocking 93% of tracking/ad hosts, versus 61% when the same device is switched to plain Google DNS. He closes with routine maintenance: running "sudo pihole -up" to update, and a scripted URL for temporarily disabling blocking (which he's wired to a Stream Deck button) for troubleshooting false blocks across multiple pi-holes.
Starting from the part-3 character-level MLP (three characters of context feeding one hidden layer, validation loss 2.10), he restructures it into a WaveNet-style hierarchical network — progressively fusing pairs of characters across multiple layers instead of squashing all context into one layer at once — and lands, after fixing a BatchNorm bug and scaling up, at a validation loss of 1.993 on the same names dataset, while also converting the codebase to a small PyTorch-like module library (Embedding, Flatten, Sequential) reusable going forward.
PyTorch-ifying the codebase. Before touching the architecture, he refactors the ad hoc layer list into proper module classes — Embedding and Flatten alongside the existing Linear, BatchNorm1d, and Tanh — plus a Sequential container that chains them, mirroring torch.nn's own API. This isn't cosmetic: the forward pass collapses to a single call through the model, exposing a real bug where forgetting to leave BatchNorm in evaluation mode (rather than training mode) caused a single-example forward pass to compute a variance over one number, silently corrupting output — a reminder that BatchNorm's train/eval state is an easy source of hidden bugs.
Baseline: just widening the flat network. Simply increasing context from 3 to 8 characters in the existing one-hidden-layer architecture drops validation loss from 2.10 to 2.02, with no structural change — establishing a baseline against which the hierarchical redesign has to earn its keep.
Building the hierarchical (WaveNet-style) network. Rather than flattening all 8 characters into one long vector immediately, he fuses them progressively: a FlattenConsecutive layer groups every 2 adjacent character embeddings into a single unit, which a linear/BatchNorm/Tanh block processes; this repeats, so 8 characters become 4 pairs, then 2 groups of 4, before a final layer produces the prediction — matching WaveNet's tree-like, dilated causal convolution structure, though implemented purely by reshaping tensors rather than by using real convolutions. He shows PyTorch's matrix multiply already supports this: it operates only on a tensor's last dimension, treating any number of leading dimensions as batch dimensions, so grouping character-pairs into a new "batch-like" dimension is just a view/reshape, not a new operation.
The 3D BatchNorm bug. Feeding the now-3D intermediate tensors (batch × groups × channels) into a BatchNorm1D layer written for 2D input caused it to silently compute separate running statistics per group instead of per channel — reducing only over dimension 0 instead of over both the batch and group dimensions. The fix (reducing jointly over dimensions 0 and 1 when the input is 3D) recovers a proper per-channel normalization and gives a small but real improvement, from 2.029 to 2.022 — and he notes this convention deliberately departs from PyTorch's own BatchNorm1d, which places the channel dimension in the middle rather than last.
Results and what convolutions actually buy you. With the corrected hierarchical architecture and its parameter budget matched to the flat baseline, results are initially a wash (~2.02 either way), but scaling embedding and hidden sizes up (to about 76,000 parameters) pushes validation loss to 1.993. He closes by clarifying that real WaveNet-style convolutions wouldn't change what's computed here at all — they're purely an efficiency mechanism, sliding the same shared filters across a sequence inside fast CUDA kernels and reusing intermediate values shared between overlapping positions, rather than recomputing the whole hierarchy independently at every character position as his implementation does.
Dhall, CEO of a cloud consultancy, ends up arguing that no cloud is best at AI. Microsoft, Google and Amazon each win on different tasks and change from one version to the next, so for AI services, which are just API calls, he would combine at least two clouds and add domain-specific logic.
Why AI projects fail. Dhall cites failure rates of 83–92% and a Gartner prediction that 85% of AI implementations would fail by 2022. He reads these as projects failing, often for non-technical reasons. He says his firm vets feasibility up front and claims a 100% success rate. One customer, he says, spent a few million dollars running a deterministic algorithm in R and then Python, and concluded the cloud did not scale. He says it was never an AI problem and would suit C# or Java.
Handwriting benchmarks. In his firm's May 2020 tests, Microsoft had 12 errors, Google 20 and Amazon 37, though Amazon did not then support handwriting. Google did best on French and was alone in separating two combined images. In an October 2022 retest Google read more words correctly but made a structural error. Weighted 5 for structure against 2 for words, its score got worse.
Forms and receipts. Microsoft Form Recognizer trained in seconds where the others took about an hour, and it alone returned bounding boxes. Google hit 100% accuracy on 10 samples. Giard notes that a tax return justifies waiting where a coupon does not. Dhall keeps a human review step, which he says cuts the job from 200 people to three.
Real-time action and multi-cloud. Dhall describes a bot that matches a rival's discount automatically, with one-click human approval. Multi-cloud costs enterprises 70–80% more when data moves, he says, but not for API calls.
Woody's position is that nobody has to do everything to secure a database, but everyone has to do something. That means the basics first, then a zero-trust review of how applications reach the data. He treats security as a shared "tax" that is worth paying, because people make mistakes no technology can prevent.
Why it matters more now. Woody points to newer professionals who were never taught the fundamentals, more data spread across more places, and nation-state attack tools that have leaked to criminals.
The basics. Patch and upgrade, even when 2,500 custom applications make testing hard. He says upgrading from SQL Server 2005 picks up 17 years of security patches. Most attackers try unlocked doors, so strong passwords and encrypting the sensitive columns turn most of them away. Giard frames this as making a break-in cost more than the data is worth.
Defense in depth and zero trust. Defense in depth is the layered goal, and zero trust is the method: verify explicitly and assume breach. Woody uses a neighbour collecting his car keys to separate identity, authentication and authorization.
Applications and accounts. He says apps that use one super-user login hand everything to whoever breaches it, and that almost every user list still holds former staff.
The course and the Uber story. Woody's free, self-paced course is on GitHub through aka.ms/sqlworkshops. He also teaches it module by module at a Tampa SQL Server user group. He closes on the Uber breach, which went from a phished MFA code to a trojan sent to IT. That, he says, is "wetware", not software.
Randall Munroe, author of What If 2 and the webcomic xkcd, ends up describing his work as disciplined curiosity: answer the absurd question quickly, follow the rabbit holes it opens, state plainly how sure you are, and go to whoever actually knows, whether a librarian, a cookbook or an astronaut. He says he still finds it hard to imagine a better job, because xkcd's format lets him draw whatever he is into that day.
Uncertainty as a habit. Munroe, a physics graduate, explains his frequent disclaimers as a way of making uncertainty explicit. He checks a constant in two sources, would check a third if his life depended on it, and wants readers to add their own doubt rather than treat him as an authority. He does the arithmetic in Mathematica, whose unit-aware calculation he calls "the dream", and chooses precision to suit the question: his figure of a couple of millimetres of rock for the weight-loss chapter barely moves whatever definition is used, although small density differences matter when two masses are subtracted.
Rabbit holes and librarians. A typical chapter is one research sprint, often a single day, and then digressions. Niagara Falls through a McDonald's straw comes out at about a third of the speed of light within minutes. Checking the flow rate, though, led to a US–Canada treaty with separate day and night minimums and one compliance officer per country. Six hours on overlapping Great Lakes agency websites found nothing; librarians at the Harvard Law Library, already helping him with another question, got the officers' names and biographies from the commissions themselves.
Experts, footnotes and corrections. He uses the steak-from-orbit chapter of his earlier book to show the method. He rebuilt an old NASA Flash calculator for leading-edge heating, then gave up on heat-flow equations for a cookbook. Unable to model how a raw steak tumbles at hypersonic speed, he left a footnote asking for help. Two University of Manchester doctoral students with spare wind-tunnel time ran the test: the surface seared and ablated, the inside stayed raw, and the result looked far worse than his drawing. He welcomes such corrections, and says fact-checkers catch most algebra slips and later printings fix the rest.
The astronaut and the T-Rex. Interviewing Chris Hadfield for his book How To, Munroe escalated landing scenarios hoping Hadfield would hang up, but he never hesitated. A later text about the What If 2 cover, a T-Rex on a jetliner, drew the same calm: fine near the centre of gravity, like the shuttle-carrier 747; nose down for negative G to dislodge it; and on saving the animal for science, "not my concern".
What a star smells like. A friend's random text led to six hours on olfaction. Patients whose olfactory bulb was in a radiation beam report bleach, burning hair and ozone, which he puts down to ionised mucus. Stellar plasma's free hydrogen ions would taste sour, and a chemist agreed this explains the sour taste reported in a lab criticality accident.