Souk's Notes - Unofficial Summaries
Andrej KarpathyLet's reproduce GPT-2 (124M)
synopsis
By the end of this build, a from-scratch GPT-2 124M — implemented in under 100 lines, trained on 8xA100 GPUs — matches OpenAI's original GPT-2 124M on validation loss and HellaSwag accuracy after roughly two hours on 10 billion tokens of FineWeb-Edu, and comes close to GPT-3's 124M checkpoint after an overnight, four-epoch, 40-billion-token run. Along the way, a chain of hardware- and algorithm-level optimizations cuts per-step time on an A100 from about 1,000ms to 93ms, an 11x speedup, at an estimated cloud cost of about $10 for the shorter run.
Loading the target model. Rather than starting from the original TensorFlow GPT-2 code released by OpenAI, the build starts from Hugging Face's PyTorch port, loading its state dict to inspect the real shapes: a 50,257×768 token embedding table (one row per BPE token, from the tokenizer covered in Karpathy's earlier tokenization series) and a 1,024×768 position embedding table. Plotting the position embeddings shows a jagged but broadly sinusoidal structure — evidence the vectors were learned from scratch rather than fixed as in the original 2017 Transformer, and a sign, from their raggedness, that this checkpoint isn't fully converged. Sampling five completions of "Hello, I'm a language model," from the Hugging Face pipeline gives a target: coherent, on-topic text to match once a custom implementation exists.
Rebuilding the architecture from scratch. GPT-2 departs from the original Transformer in two ways: it drops the encoder and cross-attention entirely (decoder-only), and it moves layer normalization to before each attention and MLP block instead of after, adding one more final layer norm before the classifier. The custom implementation mirrors Hugging Face's module names exactly (wte, wpe, h.0...h.11, ln_f) so weights can be copied over directly, and comes in at under 100 lines versus Hugging Face's roughly 2,000. Attention is described as a "reduce" — tokens exchange information by aggregating weighted values from earlier positions — while the MLP is a "map" applied identically to every token, making the Transformer a repeated map-reduce. The MLP uses GELU with the tanh approximation (GPT-2's original choice, made because the exact erf-based GELU was slow in TensorFlow at the time), preferred over ReLU because a smooth nonlinearity avoids the fully dead, zero-gradient neurons a flat ReLU tail can produce. Multi-head attention is implemented as one fused module using batched tensor reshaping — algorithmically identical to separate per-head modules, just faster — with a causal mask stopping any position attending to the future and a softmax normalizing attention weights to sum to one.
Loading real weights and validating generation. After copying OpenAI's released weights into the custom class (accounting for the fact that a few TensorFlow-derived weight matrices are transposed relative to PyTorch's convention), the custom model reproduces coherent completions, confirming the from-scratch architecture is correct — though its exact sampled tokens don't match Hugging Face's pipeline output bit-for-bit, a discrepancy Karpathy attributes to undocumented pipeline defaults (top-k 50 sampling among them) rather than a bug in the reimplementation. Switching to random initialization instead produces gibberish, as expected, and confirms the model is ready to train rather than merely replay OpenAI's weights.
A minimal training loop and sanity checks. Tokenizing the tiny Shakespeare dataset (about 1 million characters, roughly 338,000 GPT-2 tokens) and reshaping the token stream into (B, T) input batches, with targets simply the same sequence shifted by one position, gives the first working forward-backward-update loop using AdamW at a 3e-4 learning rate. Two sanity checks matter here: at initialization, the loss should be close to -ln(1/50257) ≈ 10.82, since an untrained model should assign roughly uniform probability across the vocabulary — the observed ~11 confirms a healthy random start; and the model should be able to overfit a single small batch to near-zero loss, which it does, confirming the optimization mechanics work before scaling up to real data.
Weight tying and initialization details. Inspecting the loaded state dict reveals that OpenAI's token embedding matrix and the final classifier's weight matrix are literally the same tensor — a weight-tying scheme from the original 2017 Transformer paper, motivated by the idea that semantically similar tokens should sit near each other in both the input embedding space and the output probability space. Pointing both layers at the same tensor saves about 40 million of the model's 124 million parameters, roughly 30%, and is expected to help a small model train more efficiently with fewer independent parameters to learn. For initialization, GPT-2's own source uses standard deviation 0.02 for weights and zero for biases (differing from PyTorch's default uniform bias init), values roughly consistent with the Xavier-style 1/√(fan-in) rule at typical GPT-2 channel counts. A second, less obvious detail scales every residual-path weight's standard deviation by an additional 1/√(2·n_layer): because each block adds its own contribution into the residual stream, repeatedly summing unscaled, unit-variance contributions inflates its variance — a toy example of 100 additions of standard-normal noise grows the running standard deviation to about 10 — so this correction keeps activation growth bounded regardless of depth.
Precision and compilation: from 1,000ms to 130ms per step. With batch size 16 and full GPT-2 sequence length 1,024, a plain float32 forward-backward step on an A100 costs about 1,000ms. Enabling TensorFloat-32 (TF32) — which truncates float32's mantissa from 23 to 10 bits inside the tensor-core matrix multiply only, transparently to the rest of the code — cuts this to about 333ms, a 3x gain rather than TF32's theoretical 8x, because the workload remains memory-bandwidth-bound: activations are still shuttled around in full float32 even though the multiply itself is faster. Switching to automatic mixed precision with bfloat16 (via torch.autocast, chosen over float16 because bfloat16 keeps float32's exponent range and needs no gradient scaler) brings this to about 300ms, converting activations like the logits to bf16 while parameters and operations like layer norm stay in float32. The largest single jump comes from torch.compile, which analyzes the whole model graph ahead of time rather than dispatching operations one by one from the Python interpreter, fusing elementwise sequences (GELU is the worked example) into single kernels that round-trip GPU high-bandwidth memory once instead of several times — dropping the step to about 130ms, a 2.3x gain from one line of code.
FlashAttention and vocabulary padding. torch.compile cannot find every fusion opportunity; the attention operation (torch.nn.functional.scaled_dot_product_attention, backed by FlashAttention) requires an algorithmic rewrite it won't discover on its own. FlashAttention performs more floating-point operations than the naive four-line attention implementation but is dramatically faster — the paper cites up to 7.6x — because it never materializes the full T×T attention matrix in high-bandwidth memory at all, instead computing softmax incrementally in an online, streaming fashion (a technique that traces back to a 2018 NVIDIA paper on online softmax normalization, four years before FlashAttention applied it). Swapping in FlashAttention drops the step to about 96ms. A final, smaller optimization pads GPT-2's awkward 50,257-token vocabulary up to 50,304 — a number divisible by 8, 16, 32, and 64 — because CUDA kernels operate in fixed-size block tiles and an input that doesn't divide evenly forces slow boundary-handling code paths; despite the added compute from the extra fake tokens (which the model simply learns to assign near-zero probability), this padding brings the step time down to about 93ms, an roughly 11x total speedup from the 1,000ms starting point.
Matching GPT-3's optimization hyperparameters. Because GPT-2's own paper is vague on optimizer details, hyperparameters are pulled from GPT-3's paper instead, given the architectures are otherwise very similar. This means AdamW with betas (0.9, 0.95) and epsilon 1e-8 in place of PyTorch's defaults, global gradient-norm clipping at 1.0 to guard against destabilizing loss spikes, and a cosine learning-rate schedule with linear warmup — rising to a peak of 6e-4 for a 124M-parameter model, then decaying to 10% of that peak, implemented as under a dozen lines rather than PyTorch's built-in scheduler so every step of the math stays visible. Weight decay of 0.1 is applied only to two-dimensional parameters (matrix weights and embeddings), leaving one-dimensional biases and layer-norm parameters undecayed, and a fused AdamW kernel (available in newer PyTorch, detected via inspect.signature) shaves the step time slightly further by updating all parameter tensors in one kernel launch instead of iterating over them individually.
Gradient accumulation, and the bug in getting it right. GPT-3's stated 0.5-million-token batch size doesn't fit in one GPU's memory, so gradient accumulation simulates it: multiple forward-backward passes accumulate gradients before a single optimizer step. A toy example with a 4-example batch versus four size-1 gradient-accumulation steps demonstrates the trap: because the loss functions used (MSE, and later cross-entropy) default to averaging over the batch, naively accumulating per-example losses via repeated .backward() calls sums rather than averages the contributions, producing gradients too large by the accumulation factor; the fix is dividing each micro-batch's loss by the number of accumulation steps before calling backward, recovering an identical result to true large-batch training.
Scaling to 8 GPUs with DistributedDataParallel. Launched via torchrun, eight copies of the training script run in parallel, each pinned to one GPU and identified by a DDP rank used to stride each process through a distinct slice of the data loader so no two GPUs see the same batch. DDP keeps the forward pass unchanged but, after the backward pass, averages gradients across all eight ranks via an all-reduce, so every rank ends the step with identical, batch-averaged gradients; to avoid wasteful synchronization on every micro-step during gradient accumulation, Karpathy directly toggles DDP's internal require_backward_grad_sync flag so the all-reduce fires only on each macro-step's final micro-step, rather than using PyTorch's documented (but, in his view, uglier) no_sync context-manager pattern. The accumulated loss value itself also needs an explicit dist.all_reduce average across ranks before the master process logs it, since otherwise each process would only report the loss it locally observed. With 8 A100s, gradient accumulation drops to 4 steps and throughput reaches about 1.5 million tokens per second.
Data: FineWeb-Edu, and evaluation with HellaSwag. GPT-2 and GPT-3 both trained on undisclosed, Reddit- and Common-Crawl-derived datasets, so the build substitutes a 10-billion-token sample of Hugging Face's FineWeb-Edu, a Common Crawl subset filtered for educational content (using Llama 3 70B as an automatic quality judge), tokenized into 100 shards of 100 million tokens apiece. Alongside a held-out validation shard, the model is periodically scored on HellaSwag, a 2019 multiple-choice sentence-completion benchmark where wrong answers are adversarially generated to fool language models while remaining easy for humans (95% human accuracy versus 48% for the best models of that year); since a 124M model can't natively perform multiple-choice reasoning, each candidate ending is instead scored by its average per-token loss under the model, with the lowest-loss completion taken as the prediction, and GPT-2 124M is measured at 29.5% (versus 25% random chance) as the baseline to beat.
Results and open caveats. Training for one epoch (about 19,073 steps, 10 billion tokens, roughly two hours) produces a validation loss below OpenAI's GPT-2 124M checkpoint's own score on this validation set, and a HellaSwag accuracy surpassing GPT-2 124M's 29.5% baseline — with 10x fewer training tokens than GPT-2's original 100-billion-token budget, tentatively credited to FineWeb-Edu's narrower, English-only, higher-quality domain and to broader post-2019 gains in data curation and filtering. An overnight extension to four epochs (about 40 billion tokens) pushes HellaSwag to 33.24%, nearly reaching GPT-3 124M's own reported score despite its 300-billion-token budget. Two rough edges stay unresolved: a periodic, sawtooth pattern in the loss curve, suspected to come from FineWeb-Edu shards not being shuffled or permuted across epochs, and an unexplained error that forces torch.compile off during generation and HellaSwag evaluation. The lecture closes by pointing to llm.c, a parallel CUDA/C reimplementation that reproduces identical losses and norms step-for-step while running faster than this PyTorch version, and by noting that everything built here is pretraining only — a conversational model, as in ChatGPT, would need a further supervised fine-tuning pass on conversational data, not covered here.
- The gpt2 architecture needed under 100 lines to reproduce exactly. Against hugging face's roughly 2,000-line implementation, Karpathy rebuilt gpt2 as a decoder-only Transformer matching two departures from the original 2017 Transformer: pre-normalization (layer norm moved before attention and the MLP, not after) plus an extra final layer norm, and weight tying between the input token embedding and the output classifier — a scheme from the original Transformer paper that here saves about 40 million of the model's 124 million parameters, roughly 30%.
- Careful initialization keeps the residual stream's variance under control. Following gpt2's released source, weights are drawn from a normal distribution with standard deviation 0.02 and biases are zeroed, but residual-path weights are additionally scaled by 1/√(2·n_layer). Without that scaling, repeatedly adding zero-mean, unit-variance contributions into the residual stream inflates its standard deviation — a toy example of 100 additions grew it to about 10 — so the correction keeps activation growth bounded as depth increases.
- A chain of five optimizations cut training time roughly 11x. Per-step time on an A100 fell from about 1,000ms in float32 to 333ms with TF32 (only 3x of the promised 8x, because the workload is memory-bound, not compute-bound), 300ms with bf16 autocast, 130ms with torch.compile's kernel fusion, 96ms after replacing manual attention with FlashAttention (which never materializes the full T×T attention matrix, using an online softmax instead), and 93ms after padding the 50,257-token vocabulary to 50,304 so it divides evenly into GPU block sizes.
- The reproduced 124M model matched gpt2 using 10x fewer tokens. Training with gpt3's optimizer settings (AdamW, betas 0.9/0.95, gradient clipping at 1.0, cosine learning-rate decay with warmup, weight decay only on 2D parameters) on 8 A100s via DDP, gradient accumulation reached the paper's 0.5-million-token batch size; one epoch (10 billion tokens) of FineWeb-Edu, run in about two hours, surpassed openai's gpt2-124M on HellaSwag (its reference score was 29.55%), even though gpt2 trained on 100 billion tokens. A four-epoch, 40-billion-token overnight run reached 33.24% HellaSwag, nearly matching gpt3-124M's own reported accuracy.
Technology and FriendsJeff Fritz on Deploying .NET Aspire Applications [EPISODE 807]
- Aspire's build output is a JSON manifest that deployment tools consume. Fritz describes .NET Aspire as a stack, not a framework, for observability, resiliency, scalability and manageability. AZD (the Azure Developer CLI) is the first-class tool for Azure. A community tool, Aspir8, generates Kubernetes YAML from the same manifest, and other tools target AWS, but Azure-only services such as Cosmos DB cannot go to a non-Azure cluster.
azd initthenazd upbuilds, provisions and deploys.azd upasks for region, subscription and resource group, generates unique names for background resources such as the container registry and key vault, and names services as the app host does, so a service called "web" becomes a container app called "web". Fritz says a Redis cache deploys by default as a container in Azure Container Apps. Extra app-host configuration switches it to the Azure Redis service or to a supplied connection string.- AZD generates most of the CI/CD pipeline for you.
azd initwrites a next-steps.md pointing to GitHub Actions or Azure DevOps scripts. Fritz prefers GitHub Actions, and saysazd pipeline configprompts for parameters and creates the pipeline secrets so every commit builds and deploys. - The hidden Bicep can be written to disk and edited. Fritz did this on Aspirify.net, a .NET Aspire news hub he builds with Aspire on his live streams, to give the container app its custom domain and certificates. That was during the previews, when templates were rough and one preview-to-preview change broke his deployment completely. He says it now deploys properly and the customization is documented.
- Some deployment defaults need explicit overriding. Azure storage defaults to geo-redundant storage, and Fritz says the cheaper locally redundant option has to be set in the app host's Program.cs. Ingress must be turned on explicitly for a site to take external HTTP traffic, which caught him out after Azure App Service, while internal APIs such as his thumbnail service stay unexposed.
Technology and FriendsScott Hunter on .NET Aspire [EPISODE 806]
synopsis
Hunter, whose Microsoft team builds Aspire's publishing tools, presents .NET Aspire as Microsoft's first opinion of what a cloud-native .NET app looks like: it switches on capabilities .NET already had, runs and wires several projects together, and publishes the whole app to Azure, with its defaults in code the developer owns rather than hidden "magic".
Defaults turned on. Hunter lists resiliency in the HTTP client via Polly and retries in Entity Framework Core from the ASP.NET Core 3.0 era, health checks for orchestrators such as Kubernetes, and OpenTelemetry. Adding Aspire orchestration to an existing project creates an app host and a service defaults project; any default, such as health checks, can be commented out.
Orchestration and discovery. The app host declares projects, their start order through WithReference, and which are public through WithExternalHttpEndpoints. Service discovery replaces ports hard-coded from launchSettings.json: a project calls http://api and the address arrives through environment variables, so the app runs locally, in Azure or in AWS unchanged.
Dependencies. Redis, SQL Server, Postgres, MySQL and Azure Storage run locally as Docker containers and become real Azure resources on publish, with connection strings, managed identity or Key Vault handled for the developer.
Publishing. azd init and azd up create an Azure Container Apps environment with a container per project and no Dockerfile; azd infra synth exposes the Bicep, and azd pipeline sets up CI/CD. Against the "magic" he found in Spring Boot and Web Forms, Hunter points out that the defaults live in a project you can step through.
Dashboard and status. The dashboard shows resources, logs, traces and metrics locally and in Azure, but holds only hours of data in memory. Hunter says 1.0 shipped at Build in May as version 8.0, and he expects 2.0 with .NET 9 in November.
- Aspire turns on cloud-native features .NET already had. Hunter, who runs Microsoft's Azure Developer Experience team after 15 years on .NET, calls Aspire Microsoft's first "opinion" of what a cloud-native .NET app looks like, inspired partly by Java's Spring. It switches on by default the HTTP client resiliency using Polly and Entity Framework Core retries added around ASP.NET Core 3.0, health checks for orchestrators like Kubernetes, and OpenTelemetry. Those defaults sit in a service defaults project the developer owns and can edit, which he presents as his answer to the "magic" he found hard to debug in Spring Boot and ASP.NET Web Forms.
- The app host runs multi-project apps in a set order everywhere. Hunter says Visual Studio's multiple startup projects were "klutzy" and VS Code had no equivalent. The app host's
AddProjectwithWithReferencedefines what starts and in what order from the command line, VS Code or Visual Studio, andWithExternalHttpEndpointsmarks which projects are visible on the public internet when published; an API called only by the Blazor front end stays private. - Service discovery ends hard-coded localhost ports. Instead of copying a random port from another project's
launchSettings.json, Hunter says, the front end calls the API by its app host name, such ashttp://api, and the orchestrator injects the real address through environment variables. He says the same app then runs on his machine, Azure or AWS without changes. - Dependencies run in Docker locally and become Azure resources on publish. Hunter says packages for Redis, SQL Server, Postgres, MySQL and Azure Storage start containers through Docker Desktop, so nothing is installed locally. Publishing creates the proper Azure resource, such as Azure SQL Database, wires connection strings through environment variables, and uses managed identity or Key Vault where it can.
azdpublishes the whole app without a Dockerfile. Hunter saysazd initandazd upcreate an Azure Container Apps environment with one container per project;azd infra synthwrites out the Bicep for ops teams, andazd pipelinesets up CI/CD. The dashboard also runs in Azure but keeps data in memory for hours, not days; Application Insights stores history. He says 1.0 shipped at Build in May, numbered 8.0 because it ships with .NET 8, and expects 2.0 at .NET Conf in November with .NET 9.
Scott HanselmanDr. Juan Gilbert in association with the ACM Bytecast
synopsis
Dr. Juan Gilbert chairs computer and information science and engineering at the University of Florida and leads its Computing for Social Good lab. He holds that technology should be designed for everyone at once, built and deployed rather than only theorised, and judged only after real-world evaluation. That last point leaves him agnostic on what AI will do to society.
Accessible voting. Gilbert received the National Medal of Technology and Innovation in 2023, after a confidential 2019 nomination. He says it recognised Prime III, a universally designed voting machine. It was built because he saw the 2002 Help America Vote Act's separate accessible machine as "separate but equal".
Human-centred computing and AI. He sees room for tech built because it is cool and for human-first design. The human-first cases are where tech can replace a person. On AI and jobs he says no one knows, and offers facial recognition as a technology whose bias surfaced only once deployed.
Applications Quest. He frames admissions and hiring disputes as capacity limits rather than race. His software recommends qualified, holistically diverse shortlists from application data.
Virtual Traffic Stop and BCI. A student-prompted app puts driver and officer on a recorded video call before any approach. Gilbert argues it protects officers as well as drivers. The lab's 2015 brain-drone race aimed to prove brain-computer interfaces viable.
- Separate accessible voting machines are "separate but equal" and fail. Gilbert says the 2002 Help America Vote Act's rule of at least one accessible machine per precinct got it wrong. His Prime III is one machine anyone can vote on, whether or not they can see, hear or read or have arms. Audio prompts let a voter say "vote" or blow into the microphone instead of naming a candidate, which keeps the ballot private.
- Nobody knows how AI will reshape work until it is deployed. Gilbert calls AI's effect on jobs "to be determined": visions get implemented, fail and are abandoned. His example is police facial recognition, which looked good until deployment showed it misidentified some demographics more than others. Hanselman contrasts smooth airport face recognition in Korea with a letter from 14 US senators opposing it.
- Admissions and hiring fights are about capacity, not race. Gilbert built Applications Quest in response to the Supreme Court's affirmative-action rulings (June 2003 and "last year"). When qualified applicants outnumber slots, someone qualified is turned away and looks for a scapegoat, so he predicts the fight will move to legacies and athletes. AQ works on application data after humans have read it and recommends a qualified, "holistically diverse" shortlist.
- A pre-approach video call could de-escalate traffic stops. His lab's Virtual Traffic Stop app, prompted by students upset at shootings during routine stops, connects driver and officer by video before the officer approaches. A third party such as a parent can join, hard-of-hearing drivers can chat instead, and the recording goes to both sides. Gilbert pitches it on officer safety and predicts it will be built into every car; only the University of Florida police use it so far.
- The lab ships working systems rather than only papers. Gilbert says this is deliberate under its "change the world" motto, and that ideas come from events affecting students and their communities. In 2015 it held what he calls the world's first brain-drone race, to show non-invasive brain-computer interfaces are viable, and a dissertation there studied BCIs people would want to wear.
Crosstalk SolutionsTop Tier Wi-Fi 7 Access Point - U7 Pro Max Overview
- The Pro Max adds power, capacity and a spectrum-analysis radio. The U7 Pro Max keeps the U7 Pro's form factor and 2.5 GbE port, adds transmit power for coverage, moves to 4x4 MIMO on 5 GHz for more clients, and adds a radio dedicated to real-time spectral analysis. The host has installed one in his attic and worries about heat; both models have fans and are rated to 140°F (60°C).
- The spectrum view shows live and recent channel use per band. On UniFi Network 8.2.93, the U7 Pro Max adds a Spectrum tab covering 2.4, 5 and 6 GHz, with a live waveform plus a waterfall of the past 60 seconds; other access points show only point-in-time SSID, channel and signal. Green means little activity, and yellow or red marks busy spectrum to avoid.
- His own scan showed which channels his neighbours crowd. On 2.4 GHz the waterfall showed heavy use of channels 1 and 11, leaving 6 clearest; on 5 GHz channel 157 was busy and the rest mostly clear; 6 GHz was empty, which he attributes to likely being the only Wi-Fi 7 user in his neighbourhood.
- For now the data only helps you set channels by hand. The host found no sign that the spectral analysis feeds automatic channel selection. Ubiquiti's launch video promises continuous packet capture in a future version, which he says remains to be seen.
Crosstalk SolutionsTesting a $40 Wireless Bridge
- One of AliExpress's cheapest point-to-point bridges comes complete. The host's two-pack cost just under $35 shipped and came with two PoE injectors, Ethernet cables and tie straps; the box claims IP65 weatherproofing, 1–5 km range, 300 Mbps and 2.4/5.8 GHz. Each unit has a master/slave switch, WAN/PoE and LAN ports, and a reset button for one-key pairing.
- Setup took one button press and an IP change. The units appeared to pair on their own at power-up, with full signal bars. Both share a default LAN IP of 192.168.188.253 and the password "admin", so he gave each a static address on his own network; the interface reported confusing addresses, but traffic passed and the internet was reachable.
- Measured throughput was about a third of the box's claim. He got roughly 80 Mbps each way: Speedtest.net gave about 60 down and 43 up; a LAN test to a 10 GbE Mac Mini gave 76/82 with antennas at the ceiling, and 81.7/72.3 when aimed at each other 3–4 feet apart. He explains vendors' 300 Mbps usually sums both directions, so he expected about 150 Mbps at most.
- He judges them good enough for outbuildings, with durability untested. For a barn, gazebo or remote garage running a few cameras or an access point, he says the price is hard to beat. How they hold up over time is unknown; he would trust the IP65 rating mainly under an eave. The video carries a pitch for Rogue Support's bridge design service.
GCastGetting Started with .NET Aspire [GCast 177]
- .NET Aspire builds telemetry, health checks and resiliency into distributed apps by default. Giard calls it an opinionated tech stack for distributed cloud applications. It had just reached general release at Microsoft Build in late May 2024. It needs the latest Visual Studio 2022 tooling and a running Docker Desktop, because Aspire runs some services, such as the Redis cache, in local containers. The ".NET Aspire Starter Application" template creates a web front end that calls an API service. It offers HTTPS, Redis caching and a test project as options, and adds two Aspire projects: AppHost and ServiceDefaults.
- The AppHost project wires up and starts every service.
Its Program.cs uses a distributed application builder rather than a web application builder.
AddRedisregisters a cache named "cache", and that name is how the connection string is looked up later, so it can sit in configuration and change between environments instead of living in code.AddProjectregisters the API service and the web front end by name.WithExternalHttpEndpointsexposes the front end to the public internet, andWithReferencelinks the front end to the cache and the API and starts them. Giard says this saves setting multiple startup projects in Visual Studio, a setting that isn't checked into source control, so people pulling the code skip a step. - ServiceDefaults adds OpenTelemetry, health checks, service discovery and retry logic in one call.
AddServiceDefaultsis an extension method on the host application builder, and the web and API projects each call it at startup; the web project also adds the Redis output cache by its "cache" name. The code can be modified or stepped through, and it ships with commented-out suggestions for changes. Giard's point is that Microsoft provided these features long ago but left developers to add them, whereas Aspire adds them automatically. - Running AppHost opens a dashboard showing the app's current health. The dashboard lists endpoints and shows console output, structured logs, traces with call timing and parallelism, and per-resource metrics such as active requests over time. The sample front end has a counter that keeps its state in the cache and a weather page that calls the API. Giard stresses this is a quick snapshot, not a substitute for Application Insights. Long-term logging and analysis still need setting up in Azure Monitor.
- Giard recommends copying the template's patterns rather than retrofitting an existing app. Right-clicking an existing web project offers "Add .NET Aspire Orchestrator Support", which creates the AppHost and ServiceDefaults projects. He advises stepping through the starter template to understand it first, then building your own project the same way.
Technology and FriendsRocky Lhotka on Designing Distributed Systems [EPISODE 805 ]
- SOA failed partly through the shared "master document". Lhotka, who does cloud modernization consulting at Xebia, says many SOA efforts 12 to 14 years ago defined one master customer document to pass from service to service, an idea he says large consulting firms pushed because they could sell tooling around it. In microservices as he thinks SOA should have been, each service defines its own input and output contract.
- Brownfield modernization starts with cataloguing what you actually run. Lhotka says clients have found forgotten VB6 apps used once a quarter or once a year that the business cannot run without, and one had no source code because the departed developer's PC had been recycled. The catalogue ranks each asset by business value and technical debt, then decides whether to buy a SaaS replacement, lift and shift it into a cloud VM, which he says gains little since you still patch the OS, or rewrite it.
- Cloud-native means following the 12 factors at 12factor.net. Lhotka calls them behavioural patterns, covering startup, shutdown, configuration, memory and source management, and says modern .NET absorbed many, such as a new configuration system. Greenfield apps should aim for all 12; for existing apps a former colleague's "fast five" makes them "cloud capable". The one he recalls is externalized configuration from environment variables or a store such as Key Vault, not an
app.config. - Business logic buried in the UI makes modernization hard. Lhotka says tooling from VB to Blazor makes it easiest to put code in button-click events, which cannot be tested without the form and must be teased out to move to services; his open-source framework CSLA exists to give business logic its own layer. He advises extracting only the parts that change often, such as regulatory or pricing logic, while 90% stays in the monolith, and treating every app as mission-critical because two-year stopgaps run for 20.
- Migrations need a business driver or a technology driver. On the business side Lhotka looks for real pain such as scale or competitors, while admitting some projects start because a CTO was sold Kubernetes; lift and shift can be a first step to gain Azure's fault tolerance. On the technology side he cites FoxPro apps rewritten when the platform faded and argues .NET Framework, maintained but not innovated, needs a multi-year strategy to modern .NET before developers willing to work on it become scarce and expensive.
Polis Pandit$The Courageous Jurors Who Convicted Donald Trump
- This post includes paid content that is not available publicly. See the original source.
Scott HanselmanVIDEO: Making "Tales of Kenzera: Zau" with Abubakar Salim
synopsis
Abubakar Salim, an actor and the founder of Surgent Studios, presents Tales of Kenzera: Zau as a first game in which every major choice serves one purpose: expressing his grief over his father's death. The genre, the feel of the controls, the mythology and the price all come back to it, and he argues that this heart is what lets a small studio's debut stand next to far bigger releases.
Why a game, and why this genre. His father, a C++ engineer at Xerox, introduced him to games and died just before Salim graduated from drama school. A game rather than a film was the only fitting tribute, he says. He chose the Metroidvania because it throws a character into a hostile, alien world that grows familiar over time, which is how grief felt to him.
Building a studio from nothing. With no engineering background and no experience of making games beyond voicing a character in Assassin's Creed Origins, he spent most of four years building a team, learning the craft and signing with EA. The bulk of the game was made from 2023 onward. The team moved from Unity to Unreal, the CTO arrived only in the final year, and the studio has been remote by design, with artists spread across several African countries, Europe and New York.
Myth drawn from life. Hanselman notes that the lore is real rather than invented. Salim confirms that he drew on several Bantu traditions, including the impundulu lightning bird and the South African healers he met while filming there, and that he did it from his own perspective and his father's stories rather than in response to Black Panther. Because the tradition is oral, every teller reshapes a story, and he wanted the game to carry that.
The feel in the hands. Salim describes the movement as a dance that demands precision: frustration and button-mashing fail, while calm rhythm succeeds, mirroring the work of grief. The instant-death spikes are deliberate, to make players think, though he concedes the developers had stopped noticing how hard the game is for newcomers.
Price. Remembering that he could afford about one game a year as a child, he set the price at roughly that of a pizza, about $20.
- The Metroidvania genre was chosen because it maps onto grief. Salim, actor and founder of Surgent Studios, says the genre drops a character into an alien, hostile world they cannot prepare for, which grows more comfortable the longer they stay. The game is a homage to his father, a C++ software engineer at Xerox who introduced him to games and died just before Salim graduated from drama school; he says games, not film, were the only way to do right by him.
- The platforming rewards calm rhythm, not frustrated button-mashing. Salim says the team wanted movement to feel like a dance that still demands precision: attacking the controller harder fails, while stepping back and finding "the beat of the drum" succeeds, mirroring the journey through grief. Instant-death white spikes, unlike the pink thorns that only knock you back, are deliberate, to force the player to think; he concedes that developers who had lived with the game for four years stopped noticing how taxing it is for new players.
- The lore draws on real Bantu myth across many cultures. Rather than invent a pantheon or pick one country, Salim pulls from several Bantu traditions, among them the Zulu impundulu lightning bird and the traditional healers he met while filming Raised by Wolves in South Africa. He rejects the idea that it was prompted by Black Panther: it is his perspective and his father's stories. He told the team that sending players down a "Wiki wormhole" meant they had done their job, and he says the oral tradition, which lets each teller change a story, is built into the game.
- Most of the time went into building the studio, not the game. Salim says most of the four years since the studio's founding went on building a team from scratch, learning what making a game means, and signing the EA deal; the bulk of the game came together from 2023. The team began in Unity, moved to Unreal after talks with people at Epic, and its CTO joined only in the final year. The studio is remote by design, with artists in Nigeria, Botswana and South Africa as well as New York, France and mainly England, and many of the developers came from the Hitman series and had never built a side-scroller.
- It is priced like a pizza to keep it accessible. Salim says that in talks with EA the team asked what a pizza or takeaway costs and set the game at about $20, against the $60–70 that Hanselman notes big releases cost, because he could afford only about one game a year growing up. He sees leading with "heart" and showing the humans behind a game as how a debut cuts through against a release like Prince of Persia. The game is out on Switch, PlayStation 5, Xbox and Windows under the EA Originals label.
Scott HanselmanMaking "Tales of Kenzera: Zau" with Abubakar Salim
synopsis
Abubakar Salim, an actor and the founder of Surgent Studios, presents Tales of Kenzera: Zau as a first game in which every major choice serves one purpose: expressing his grief over his father's death. The genre, the feel of the controls, the mythology and the price all come back to it, and he argues that this heart is what lets a small studio's debut stand next to far bigger releases.
Why a game, and why this genre. His father, a C++ engineer at Xerox, introduced him to games and died just before Salim graduated from drama school. A game rather than a film was the only fitting tribute, he says. He chose the Metroidvania because it throws a character into a hostile, alien world that grows familiar over time, which is how grief felt to him.
Building a studio from nothing. With no engineering background and no experience of making games beyond voicing a character in Assassin's Creed Origins, he spent most of four years building a team, learning the craft and signing with EA. The bulk of the game was made from 2023 onward. The team moved from Unity to Unreal, the CTO arrived only in the final year, and the studio has been remote by design, with artists spread across several African countries, Europe and New York.
Myth drawn from life. Hanselman notes that the lore is real rather than invented. Salim confirms that he drew on several Bantu traditions, including the impundulu lightning bird and the South African healers he met while filming there, and that he did it from his own perspective and his father's stories rather than in response to Black Panther. Because the tradition is oral, every teller reshapes a story, and he wanted the game to carry that.
The feel in the hands. Salim describes the movement as a dance that demands precision: frustration and button-mashing fail, while calm rhythm succeeds, mirroring the work of grief. The instant-death spikes are deliberate, to make players think, though he concedes the developers had stopped noticing how hard the game is for newcomers.
Price. Remembering that he could afford about one game a year as a child, he set the price at roughly that of a pizza, about $20.
- The Metroidvania genre was chosen because it maps onto grief. Salim, actor and founder of Surgent Studios, says the genre drops a character into an alien, hostile world they cannot prepare for, which grows more comfortable the longer they stay. The game is a homage to his father, a C++ software engineer at Xerox who introduced him to games and died just before Salim graduated from drama school; he says games, not film, were the only way to do right by him.
- The platforming rewards calm rhythm, not frustrated button-mashing. Salim says the team wanted movement to feel like a dance that still demands precision: attacking the controller harder fails, while stepping back and finding "the beat of the drum" succeeds, mirroring the journey through grief. Instant-death white spikes, unlike the pink thorns that only knock you back, are deliberate, to force the player to think; he concedes that developers who had lived with the game for four years stopped noticing how taxing it is for new players.
- The lore draws on real Bantu myth across many cultures. Rather than invent a pantheon or pick one country, Salim pulls from several Bantu traditions, among them the Zulu impundulu lightning bird and the traditional healers he met while filming Raised by Wolves in South Africa. He rejects the idea that it was prompted by Black Panther: it is his perspective and his father's stories. He told the team that sending players down a "Wiki wormhole" meant they had done their job, and he says the oral tradition, which lets each teller change a story, is built into the game.
- Most of the time went into building the studio, not the game. Salim says most of the four years since the studio's founding went on building a team from scratch, learning what making a game means, and signing the EA deal; the bulk of the game came together from 2023. The team began in Unity, moved to Unreal after talks with people at Epic, and its CTO joined only in the final year. The studio is remote by design, with artists in Nigeria, Botswana and South Africa as well as New York, France and mainly England, and many of the developers came from the Hitman series and had never built a side-scroller.
- It is priced like a pizza to keep it accessible. Salim says that in talks with EA the team asked what a pizza or takeaway costs and set the game at about $20, against the $60–70 that Hanselman notes big releases cost, because he could afford only about one game a year growing up. He sees leading with "heart" and showing the humans behind a game as how a debut cuts through against a release like Prince of Persia. The game is out on Switch, PlayStation 5, Xbox and Windows under the EA Originals label.
Crosstalk SolutionsU7 Pro Wall Has Arrived!
- The U7 Pro Wall is designed to disappear into the wall. With Ubiquiti's flush-mount accessory ($39 extra, with a paintable cover) it protrudes only about half an inch (just over 1 cm); out of the box ($199 MSRP) it mounts on a wall or single-gang box like earlier in-wall models, and a $39 desk mount also exists.
- It drops the switch ports of earlier in-wall models. It is a Wi-Fi 7 AP with 2x2 MIMO on 2.4, 5 and 6 GHz, up to 320 MHz channels, PoE+ power and a single 2.5 GbE port; the host reasons extra ports are of little use flush in a wall. Ubiquiti told him a more traditional U7 in-wall with switch ports is coming, with no ETA.
- The 5.7 Gbps headline overstates real-world speed. Ubiquiti's figure (with 300+ concurrent clients) adds upload and download together; the host expects about 1.8–2 Gbps each way at best. His test, a Wi-Fi 7 Pixel 8 beside the AP at 320 MHz to OpenSpeedTest on a 2.5 GbE port, gave 1,600/2,100 Mbps and then 1,560/1,973 Mbps.
- The host rates it highly, especially for installers. He measured 99°F (37°C) on the back, likes paintable covers over fixed skins (one is now also out for the U7 Pro), and predicts copycat flush-mount APs from TP-Link or others by the end of the year.
Crosstalk SolutionsProtect 4.0 is Here - All New Features Explained
- Protect 4 is claimed to be faster and hold more cameras. Ubiquiti says a re-architected NVR core engine speeds the user experience and raises camera capacity by 20%; the host hopes this cures playback stutter and speculates the storage gain comes from optimizing unchanged pixels. He was on UniFi OS 4.0.3 on his UNVR on the day it went GA.
- Footage can now be stored downscaled to save disk. Cameras can record to the NVR at 2K or HD rather than full 4K, which the host suggests for low-detail views such as a hallway or doorway.
- Video archiving exports footage to Google Drive or OneDrive. You choose a date range and cameras and it uploads in the background; in his Google Drive test it created a UniFi folder with subfolders by date.
- New search and tracking tools narrow events to what matters. Camera shortcuts jump to another camera at the same moment, which he demonstrated following himself across three cameras. Area-of-interest filtering limits events to part of the frame, such as a gate, and licence plates can be labelled with a notification when a given plate is detected.
- PTZ patrol and custom doorbell animations were also added. G4 PTZ cameras can pan between set start and end points, and the Doorbell Pro accepts custom JPEG, PNG or GIF images larger than 240×240 pixels. The host upgraded his own UNVR without issue.
Polis Pandit$What Important Truth Do Few People Agree With You On?
- This post includes paid content that is not available publicly. See the original source.
Crosstalk SolutionsSet Up Secure VPN in Minutes with GL.iNet Routers!
- A home router plus travel router gives easy remote VPN access. In this GL.iNet-sponsored video (the host says he used their routers long before the sponsorship), a Flint 2 at home runs a WireGuard server and a Slate AX travel router connects to it as a client. The Flint 2 has two 2.5 GbE ports and four 1 GbE LAN ports, on sale for $127 through June 15.
- Basic home settings deserve attention before the VPN. The host sets the time zone, and recommends Dynamic DNS if your WAN address is dynamic, since a changing IP breaks the VPN server. He also enables AdGuard Home network-wide and widens the default DHCP pool of .100–.249 to .10–.254.
- Enable "remote access to LAN" or VPN clients cannot reach anything. The WireGuard server's default 10.0.0.1/24 tunnel network is fine, but without that setting clients reach only each other. He generates one client profile per device and enables "use DDNS domain" in it if the home IP is dynamic.
- The travel router's LAN must not overlap the home subnet. Both ship on 192.168.8.x, so he moves the Slate AX to 192.168.10.1, also avoiding the remote gateway's 192.168.12.x. Over T-Mobile Home Internet, a CGNAT connection standing in for a hotel, he reached OpenSpeedTest at home at about 40/40 Mbps.
- The Slate AX's side toggle can switch the VPN client on and off. He maps it to the WireGuard client, so in a hotel you connect the router to the wired or Wi-Fi internet and flip the switch. Devices set up once on the travel router then need no reconfiguring at each new hotel.
Scott HanselmanEthics, AI, and Human-centered Computing with Dr. Casey Fiesler
synopsis
Casey Fiesler, an associate professor at CU Boulder and a public communicator on technology ethics, ends up arguing that generative AI is almost certainly here to stay, so the question is how to develop and deploy it as responsibly as possible. She holds that the speed of market competition and the public's poor grasp of what chatbots are both make that harder.
What a chatbot is. Hanselman proposes that chatbots are a new user interface that people anthropomorphize. Fiesler agrees that people misread them as search engines or encyclopedias, and calls the output a predictable "bundle of tropes". She says users should always be told when they are talking to a bot.
Ethical debt. Her term, from an op-ed with a former student, names the consequences taken on unknowingly by moving fast. She cites chatbot failures at a New York City business-advice service, an eating-disorder helpline, Air Canada and a car dealer, and calls many of them foreseeable.
Hype and hidden humans. Hype in both directions inflates the technology. Drawing on Weizenbaum's ELIZA paper, she says explanation normally dispels technological magic, but generative AI is hard to explain briefly, and forgetting the human data labelers makes it seem more magical and hides bias.
Consent and regulation. She finds the argument against unconsented training data valid but expects the technology to persist whatever the copyright cases decide. She expects the EU AI Act to have limited impact, and its GDPR-like requirements, such as training-data disclosure, to be its most likely effect.
- People misunderstand chatbots; they are neither search engines nor encyclopedias. Fiesler, an associate professor of information science at CU Boulder, calls a chatbot's output "a bundle of tropes": the most predictable answer, which is why ChatGPT writes "terrible fanfiction". Hanselman frames chatbots as a new, unresolved user interface that people anthropomorphize, and calls the temperature setting randomness rather than creativity. Fiesler links this to her 2009 PhD work coding videos of professional improv troupes to build improvising micro-agents, which took a stereotype and changed one element.
- Users should always know when they are talking to a chatbot. Fiesler says how human an interface should feel depends on context, but undisclosed customer-service chatbots upset people, and she expects this to remain a continuing problem.
- Racing to market is piling up "ethical debt". Fiesler and a former graduate student coined the term in an op-ed about four years earlier, by analogy with technical debt; the difference is that you may have no idea what consequences you are taking on. She blames market competition for the speed and cites failures she thinks were foreseeable: a New York City small-business chatbot that The Markup found advising illegal things, an eating-disorder helpline bot gone within about five days after staff tried to unionize, and chatbots giving away an Air Canada upgrade and a $1 car. Hanselman's comparison is the early-web rule never to trust user input, now ignored in "a giant text box and a button".
- Hype in both directions overstates what the technology can do. Fiesler says the "change everything tomorrow" and "destroy humanity" camps are sometimes the same people. Citing Joseph Weizenbaum's ELIZA paper, she argues the magic usually crumbles once a technology is explained, but "basically autocomplete" is not enough to dispel it for generative AI, and forgetting the human data labelers behind it makes it seem more magical and hides sources of bias. She aims to make the general public more critical, not to change minds at OpenAI.
- The consent argument is valid, but the technology will persist. Fiesler calls the case that AI built on unconsented data is fundamentally unethical "very valid", yet thinks copyright rulings shutting it down are unlikely; if they came, she expects weaker models or open-source ones trained anyway and shared on torrents. She expects the EU AI Act to have less impact than people think because parts are hard to implement, and the GDPR-like rules, such as disclosure of training data, to be the likeliest to take hold.
Polis Pandit$The Ghost at the Feast and the Ghost Haunting OpenAI
- This post includes paid content that is not available publicly. See the original source.
Technology and FriendsValerie Gurka on Documentation in Software Engineering [EPISODE 804]
- Skipping documentation saves money now and costs more later. Gurka, who runs a software development company of five architects and 10 engineers and has done project and engineering management for over 20 years, says clients with no documentation, or none they can find, end up paying staff and then outside help to research code nobody understands, and often rewrite it from scratch. Documentation, she says, does not spare you the work on a system; it spares you starting from zero.
- Different audiences need different kinds of documentation. Gurka lists technical documentation (architecture diagrams, what talks to what, databases), written in parallel with the coding rather than before or after it; requirements kept as a backlog in tools such as Jira or Azure DevOps and exported to a document for the client, which she sees replacing the old waterfall business requirements document; user guides, which she says are often missed at the end of a project; and release notes, which clients should not have to ask for. On code comments she defers to Giard, who prefers documenting method by method or class by class and wants the code itself to be self-documenting line by line.
- Good documentation is concise, free of jargon and kept current. Gurka says to make the point clearly rather than write a novel, avoid acronyms or add a glossary page, and update the document with every enhancement so it is versioned alongside the system. She favours tools developers can write in together, such as Confluence or SharePoint.
- AI removes the writer's block, but its output still needs review. Gurka has AI write release notes from the code and uses a tool that turns uploaded meeting transcripts into summaries and action items; Giard adds that GitHub Copilot can generate documentation for code he right-clicks on. She says there is no shame in using it as a tool, provided you check what it writes.
- Put documentation in the estimate and name the deliverables. Gurka says projects skip documentation because it was never estimated and the budget or time ran out, so she writes it into the estimate and statement of work as specific items: backlog, architecture diagram, user guide, release notes. The most common problem she meets is outdated documentation, such as an architecture diagram that describes the system as it was years ago and that the client sends without looking at it.
Scott HanselmanCommunity and content with Android Expert Madona Wambua
synopsis
Madona Wambua, an Android developer, author, startup founder and now a CTO, comes down on community and persistence as the way to survive a hard tech market. Her advice to early-career engineers is not to quit, to find people who will walk the road with them, and to trust that skill compounds over years. As a CTO, she means to build the culture that she once found missing.
A hard market. Wambua dates the layoff wave to late 2022 and early 2023, declines to blame AI, and notes the irony of "over-hiring" claims from companies that remain profitable. Engineers are taking other jobs within months. A plan B helps, she says, but founding a company is not for everyone.
Community as a safety net. Backed by her husband's income, she built a consultancy on community referrals and finished five projects in 2023. She gives her time freely, booked on a calendar and focused by the topics people send in advance, and she makes direct introductions for referrals. Hanselman agrees, provided that time is capped and the questions are specific.
Learning that compounds. Her Android cookbook records how much the platform has matured since about 2013. She learned Kotlin by rewriting her own app by hand over weekends, and her years of experience now let her read unfamiliar languages such as C# well enough to diagnose bugs. This is why she says good coders take years, not days.
Culture. A past employer penalized her for asking too many questions. That pushed her toward communities and teaching, and she says her own team will be encouraged to ask questions and to help one another rather than chase tickets.
- The tech job market is exhausting, and the cause is unclear. Wambua, an Android developer, startup founder and now a CTO, dates the wave of layoffs to late 2022 and early 2023 and says she is not ready to blame AI. She relays the "over-hiring" explanation while noting that the companies remain very profitable; Hanselman objects to the word because the people laid off have mortgages and lives. She says programmers are being forced into other jobs within three or four months.
- Community, not a job board, carried her consultancy. Leaning on her husband's full-time income, she started a mobile and web consultancy by asking her community for work. The first job, rebranding a women's community site, came through a community member, and one job led to the next: five projects in 2023, including one for a large New York web3 and crypto company. Hanselman notes that in the US, health insurance makes going independent a privileged option.
- "Pick your brain" requests deserve time, but with structure. Wambua offers free calls booked through her calendar and spread across days, asks people to list the topics they want to cover, and makes direct introductions for referrals; she once connected a stranger to a friend at Pinterest. Hanselman caps his own community time at one to two hours a week and says three to five well-thought-out questions energize him where an open-ended ask irritates him.
- Moving from Java to Kotlin took deliberate rewriting. Wambua resisted Kotlin until interviewers told her she could interview in Java but their code was Kotlin. She rebuilt her own budgeting app in Kotlin over weekends rather than using the automatic converter, whose formatting was poor, to build muscle memory, and now prefers Kotlin. Her book, Modern Android 13 Development Cookbook, records how much easier Android has become since she began around 2013–14, now that it has defined architectures and the Jetpack libraries. Years of experience, she says, now let her read C# well enough as a CTO to find a bug and suggest a fix, which is why juniors should not quit.
- A culture that punishes questions isolates engineers. One employer gave her a negative review for asking too many questions, which nearly put her on a performance plan; she blames a heads-down culture of closing sprint tickets instead of helping struggling colleagues. She took her questions to communities instead, which led her into teaching through webinars, and as a CTO whose team is in Europe she says she encourages questions and admits what she does not know. She sees politics as her eventual career.
Crosstalk SolutionsNEW! U6-Mesh-Pro access point. #unifi #crosstalk
- The U6 Mesh Pro brings Wi-Fi 6 to an old form factor. It replaces the UAP-AC-Mesh-Pro, first released in 2017, with PoE-powered gigabit Ethernet plus a gigabit pass-through port, IPX6 weatherproofing, 2x2 MIMO and 8 dBi antenna gain on both 2.4 and 5 GHz, wall or pole mounting and 350+ clients, at $199 MSRP in the UI store.
Crosstalk SolutionsSynology NAS Upgrade Step-by-Step
- The host upgraded a full NAS to a larger eight-bay one. He moved from a Synology DS1520+ to a DS1821+; the old unit had 30 TB usable with 28.4 TB used, well past Synology's 20%-free warning. Synology supplied the DS1821+, two 800 GB NVMe cache drives and a dual 10 GbE card ($2,640); he bought eight 12 TB IronWolf drives at $200 each, for $4,240 in all. SHR with two-drive fault tolerance gave just under 63 TB usable.
- Synology's Migration Assistant worked almost perfectly but wipes the new volume. Installed on the destination NAS, it deleted the SHR volume he had built, so he advises leaving the new drives unformatted. Its 3-day-14-hour estimate for 29.1 TB at about 100 MB/s, held to gigabit by the old NAS, proved accurate.
- Some steps remain after migration. He had to repair about three packages and expand the copied volume to the maximum size. Surveillance Station licences need manual reactivation, and the NVMe pair has to be set up as a read-write cache.
- His backup audit found important data failing the 3-2-1 rule. His working drive meets the rule and his Windows image misses it acceptably. But his user folders, mapped to the NAS, rely only on Backblaze if the NAS dies; "RAID is not a backup", so he will add the external USB drive as a second local copy.
- Home Assistant would not start until its RAM was cut. The DS1821+ ships with 4 GB against the old unit's 8 GB, so the 2 GB VM failed; he ran it at 1 GB on its own IoT-network port. He bought two 16 GB Crucial ECC SO-DIMMs at $54 each, against $350 each for Synology-branded ones. The Pi-hole container moved intact but needed its new IP in DHCP.
Technology and FriendsScott Hermes on Microsoft Fabric [EPISODE 803]
synopsis
Hermes's position is that Microsoft Fabric is a fast-maturing platform that gives a company one governed place to find and use its data, wherever that data physically lives. It works alongside tools such as Databricks rather than forcing a migration or a choice between them.
What Fabric is. Hermes calls it a SaaS wrapper around Azure data services, sold by capacity tier, with OneLake holding structured and unstructured data under one layer of security and governance. His case for it is a client that bought the same dataset two or three times. Power BI licences come included, but other visualisation tools work too. He says it went GA on 16 November 2023, about five months before the first Fabric conference in Las Vegas, and the interview is dated 9 April.
Reaching data elsewhere. Shortcuts read S3, Google Cloud Storage, S3-compatible stores and Dataverse where they sit. Mirroring replicates Snowflake and others read-only, with F64 capacity including 64 TB of mirrored storage. Hermes credits Azure with a better on-premises story than other clouds, and an on-premises gateway is now in public preview. The gaps he concedes: only S3 on AWS, with Mongo still on the roadmap.
Databricks. Parquet and Delta Lake underneath, plus two-way Unity Catalog shortcuts, mean "no need to make a hard choice."
Controls. Item-level permissions, regional capacity, and Git integration for reports, notebooks and lakehouse definitions. As far as he knows that integration runs through Azure DevOps only.
Pace. Hermes estimates around 60 features a month across six or seven product teams, the most aggressive rollout he has seen. He adds Copilot for Fabric and a redesigned Purview for business users, and says the product team takes community suggestions into its priorities.
- Fabric aims to give a company one copy of its data under one set of controls. Hermes, an Azure platform architect at a digital consultancy, describes it as a Microsoft SaaS product wrapping services such as Data Factory, Synapse and Data Lake Storage around OneLake, "OneDrive for the enterprise", with one layer of security, governance and discoverability. He cites a client that paid for the same dataset two or three times because no one could find what the company had already bought.
- Data can join Fabric without being migrated. Hermes says shortcuts query data where it sits: Amazon S3 at launch, and now Google Cloud Storage, any S3-compatible store and Dataverse, with an on-premises gateway in public preview. Mirroring keeps a read-only replica close by for performance, with Snowflake newly announced; mirrored storage is free up to an allowance, F64 capacity getting 64 TB. Coverage is incomplete: on AWS only S3 is reachable, and he says Mongo is on the roadmap.
- Fabric complements Databricks rather than replacing it. Hermes says teams happy on Databricks should stay there, since Fabric stores everything as Parquet in the Delta Lake format Databricks uses, and newly announced shortcuts link Fabric and Databricks' Unity Catalog in both directions. A team can start in Fabric and add Azure Databricks later against the same lake.
- Git integration now covers the definitions, though not the data. Hermes says Power BI reports and semantic models, notebooks, lakehouse definitions and Spark job definitions can now go into Git, and a workspace can be branched. As far as he knows this works through Azure DevOps only, not directly with GitHub. On security, rights now reach the individual item as well as the workspace, and capacity is set by region, with a switch for access from anywhere that is off by default to protect data sovereignty.
- Fabric is adding features faster than any product Hermes has seen. He puts it at around 60 new features a month, because six or seven product teams, Power BI and pipelines among them, each ship on their own. Features he expects to matter include Copilot for Fabric, which comes with higher capacity tiers, and a redesigned Microsoft Purview interface aimed at business users who decide what is confidential.
Technology and FriendsRaj Krishnan on the Challenges of Artificial Intelligence [EPISODE 802]
- AI is old; what changed is how little modelling it now takes. Krishnan says he once used integer and linear programming on historical queue data to staff a call centre, and that this kind of algorithmic AI (regression, prediction, clustering) needed data scientists and parameter tuning. Now, he says, you hand data to a model and tell it what to do, citing TimeGPT producing what he calls pretty accurate forecasts from raw data; Giard adds cheap rented cloud compute and OpenAI's work as the two drivers.
- Retrieval-augmented generation is harder than the demos make it look. Krishnan says a model built for around $100 million on internet data gives no references and can hallucinate, so enterprises vectorize their own knowledge, find the chunks most similar to a question, and tell the model to answer only from those. He says what you vectorize, how you chunk it, the chunk size and the prompt all change the answer; people who saw a demo built on Paul Graham's essays will be disappointed when they ask questions of their own data, such as an insurance client wanting policies similar to a given one.
- Grounding RAG in a knowledge graph first is the next step. Krishnan describes building a graph of nodes and relationships in Cosmos DB or Neo4j, which he calls more deterministic, querying it before the retrieval step, and then using RAG. He says much current work focuses on combining the two.
- Too many tools are arriving, and cost has to steer the choice. Krishnan, who works for Microsoft, lists AutoGen (open-source agents that write code, talk to each other and correct themselves), Semantic Kernel for .NET, LlamaIndex, LangChain and TaskWeaver, and says his job is trying them to see what works. He still rates GPT-4, and even GPT-3.5, as the best at summarization and entity extraction, but says GPT-4's price means testing whether an open-source model or a combination gives similar results; he also likes LlamaIndex's semantic chunking, which sizes chunks by content so related text stays together.
- Beginners should start with low-code tools and generated code. Krishnan recommends Copilot Studio or AI Studio on your own data first, moving to LangChain or Semantic Kernel only when they hit a limitation. He uses generated code from TaskWeaver or GitHub Copilot to learn, finding it better commented than his own, but would not ship it as production code; Giard says Copilot gets him about 80% of the way and he never trusts it fully, and Krishnan calls it "a job aid", not a job killer.
Technology and FriendsA Celebration of Friends [EPISODE 800]
- Episode 800 is a montage of past guests' closing remarks. Instead of an interview, it strings together dozens of short clips, nearly all variations on the show's "technology and friends" sign-off; few speakers are named in the captions beyond Buck Woody and Jeff Fritz, who plugs .NET Conf and live streaming.
- The recurring claim is that tech careers run on community. Many guests say their closest friends came from user groups, conferences, open-source mailing lists or long tenure at one company. One says the pandemic showed that "talks aren't great, but hallway tracks are"; another urges viewers to find events on Meetup and LinkedIn as in-person events restart.
- Programmers underestimate how differently others use technology. One guest says that when they asked friends how to turn a paragraph into all caps, the most common answer was to retype it with caps lock on. They draw the lesson that small help, like the few months they spent cleaning up all of one nonprofit's computers, can matter a great deal.
- A few clips make substantive professional points. One guest argues open source shared among friends and open source as a corporate commons are both valid but must not be conflated. Another repeats the "people, process, and tools, in that order" line they say they wrote about in Code Magazine for over 20 years, holding that only people can decide the what and why of a technology; a third says friends don't let friends build distributed systems without OpenTelemetry "in 2022".
- Tech has more roles than development, and newcomers should explore them. A designer in one clip lists design, development and cybersecurity, and advises against copying whatever someone with a technology title does. Another guest says over 20 years their work has become less about technical detail and more about people, process and delivery.
Scott HanselmanOpen Core Open Source with Mermaid Chart's Knut Sveidqvist
- Mermaid began as a fix for his own diagram problem. Sveidqvist, CTO of Mermaid Chart, says that almost 10 years earlier, at a large Swedish telecom, diagrams lived in Word and Visio and some original Visio files had been lost; with Markdown gaining ground, he wanted diagrams as text that developers could manipulate. He named it after The Little Mermaid, which his children were watching, and expected maybe 20 users.
- Chasing zero open issues nearly burned him out. His motivation dropped until other contributors stepped in. He then time-boxed Mermaid to one or two evenings a week, and he remains its top committer with almost 2,500 commits. That near-burnout is also why he wanted a company behind the project: with a full team, Mermaid does not depend on one person who will eventually burn out.
- Open core works only with a clean line between free and paid. Open Core Ventures, the venture studio of GitLab CEO Sid Sijbrandij, approached him and coached the split: Mermaid itself, including new diagram types, stays open source, while the paid Mermaid Chart platform adds a visual editor that round-trips edits to the code, plus AI features. He wanted above all to avoid pull requests to Mermaid for paid features. He predicts a dual-license model will eventually emerge so that large companies give back; Hanselman, who works at Microsoft, says big companies have to choose sustainability over throwing money at projects.
- Once a syntax ships, it can never change. Sveidqvist wanted the syntax to be readable like Markdown rather than maximally terse. New diagram types stay "experimental" because, once approved, changing the syntax would break the diagrams of perhaps 100,000 to a million users; there are things in flowcharts he would do differently but cannot. To allow more than the 8–9 diagram types he had held to, now about 14, the company added lazy loading to control bundle size.
- ChatGPT brought non-developers to Mermaid. ChatGPT turned out to write Mermaid well because so many diagrams existed to train on, and it sent real-estate agents and business people to Mermaid Chart, which is why the visual editor exists. Next he plans to extend the editor to every diagram type and to add diagrams to open-source Mermaid, which also benefits paying customers. Hanselman cites 20 million-plus visitors and a recent seed round from Open Core Ventures.
Crosstalk SolutionsFirst Look! UniFi Pro Max 16 PoE Switch
- The USW Pro Max 16 PoE is a compact switch with Etherlighting. It has 12 gigabit ports, four 2.5 GbE ports, which are the PoE++ ones and suit a U7 Pro, and two 10G SFP+ cages; the other ports are PoE/PoE+ (802.3af/at). A non-PoE version is $279 (US). The PoE model's price is garbled in the captions, though the host expected it to undercut the $799 24-port Pro Max.
- An external power brick is what keeps the chassis small. The supply is rated 54 V, 3.9 A, and there is no power switch. The included rack ears slot into rear notches for wall mounting with a levelled template. An optional rack kit makes it a reversible 1U unit that also holds the brick.
- Setup is standard UniFi, plus Etherlighting controls. It adopted from his UDM Pro Max and was up to date; port LEDs can show speed or VLAN in chosen colours, with breathing mode optional. Filming on May 1, 2024, a day after receiving it, he plans to use it in his 10-gigabit home upgrade in place of the 24-port model, since he does not need the ports.
Polis Pandit$Palestinian Protestors: The New Occupy Wall Street
- This post includes paid content that is not available publicly. See the original source.