Skip to content

Archive / page 34

All articles

Every practical article from the Nalar archive, newest first.

Cybersecurity 14 Sep 2026 7 min read

Cache Keys Define the Security Boundary of Shared Responses

A reverse proxy can receive two requests that look different to an application and identical to its cache. That disagreement is enough to turn an ordinary performance feature into a cross-user security boundary. Shared HTTP caches are built around equivalence. A cache key decides which requests may reuse the same stored response. The origin application makes a separate decision about which request properties influence its output. Security problems appear when those two models diverge: the origin varies a response on data that the cache does not include in its identity for that response.

Cybersecurity 14 Sep 2026 7 min read

CAA Records Narrow Certificate Issuance Authority

CAA Records Narrow Certificate Issuance Authority A public certificate authority can validate control of a domain correctly and still be the wrong authority for that domain’s operating policy. DNS Certification Authority Authorization, or CAA, addresses that gap by giving a domain operator a published way to constrain which certificate authorities are permitted to issue certificates for its names. Domain-control validation establishes that an applicant can satisfy a validation method. CAA expresses a separate authorization decision: among the public certificate authorities capable of performing validation, which ones may proceed with issuance for this domain?

Artificial Intelligence 14 Sep 2026 6 min read

Bound Extreme Logits with Soft Capping

A transformer can produce logits whose magnitudes grow far beyond the range needed to express a strong preference. Large attention scores can make a softmax distribution extremely concentrated, while large output logits can make token probabilities nearly one-hot. A hard clamp can bound those values, but it introduces a flat region with an abrupt derivative change at the threshold. Logit soft capping uses a smooth saturating function instead. One common form is:

Artificial Intelligence 14 Sep 2026 6 min read

Accumulate Gradients Across Microbatches

A training batch can exceed accelerator memory even when model parameters and optimizer state fit comfortably. Activations from the forward pass often account for a large part of the remaining footprint, and their memory cost grows with the number of examples processed together. Gradient accumulation splits a larger logical batch into smaller microbatches. Each microbatch runs its own forward and backward pass, but the optimizer waits until several backward passes have contributed to the parameter gradients. This reduces the activation memory required for any single pass without requiring an optimizer update after every microbatch.

Artificial Intelligence 14 Sep 2026 5 min read

Account for Exposure Bias in Autoregressive Generation

An autoregressive model can receive a clean prefix at every training position and still face a different input distribution during generation. Training commonly scores the next reference token while conditioning on earlier reference tokens. At inference time, the prefix contains the model’s own outputs instead. This mismatch is called exposure bias. It matters because an early generation error does more than make one token incorrect. That token becomes part of the context for later predictions, placing the model in a prefix state that may have been rare or absent during training.

Software Engineering 13 Sep 2026 9 min read

Write Skew Across Disjoint Rows

Write Skew Across Disjoint Rows Two transactions read the same set of rows, reach compatible decisions, and then update different rows. Neither transaction overwrites the other’s write. Both commits can still leave the database in a state that violates a rule spanning those rows. That shape is write skew. It is easy to miss because many concurrency discussions center on two writers contending for one row. Write skew has no such collision. The conflict exists at the level of an invariant inferred from several records, while the physical writes remain disjoint.

Tech 13 Sep 2026 8 min read

Wi-Fi Roaming Keeps Clients Moving Between Access Points

A large Wi-Fi network often uses several access points to cover rooms, floors, or buildings. Those access points can advertise the same network name and security configuration, giving a phone or laptop one familiar network across a wider area. The client still communicates through a specific access point at any moment. As the device moves, radio conditions change and another access point may become a better choice. Roaming is the process that moves the client association from one access point to another while keeping the broader network connection usable.

Cybersecurity 13 Sep 2026 9 min read

WebSocket Upgrades Need Their Own Origin Policy

WebSocket Upgrades Need Their Own Origin Policy A WebSocket endpoint can sit behind the same hostname, TLS certificate, session cookie, and reverse proxy as an ordinary web application while obeying a different browser security model. The connection begins as HTTP, but once the upgrade succeeds, the familiar request-response controls around application endpoints no longer describe the full security boundary. That gap matters most when a browser automatically attaches credentials to the handshake. A hostile site may be able to initiate a WebSocket connection toward another origin. If the target service accepts the upgrade based only on a valid session cookie, the attacker’s page can gain a bidirectional channel operating with the victim’s authority. The browser’s same-origin restrictions on reading ordinary cross-origin HTTP responses do not provide the same protection for WebSocket traffic.

Software Engineering 13 Sep 2026 10 min read

Version Columns Turn Lost Updates Into Conflicts

Two transactions can read the same row, compute different changes, and then write in sequence. If each update replaces values derived from its earlier read, the later write can erase part of the earlier one without either transaction observing a database error. A version column changes that interaction. The row carries a generation value alongside its domain fields, and an update is accepted only when the generation still matches the value observed by the writer. A stale writer no longer looks identical to a current writer at the storage boundary.

Tech 13 Sep 2026 7 min read

Variable Refresh Rate and Frame Timing

A game can render one frame in 8 milliseconds and the next in 14. A conventional display running at a fixed refresh rate does not adjust its scan timing around those changes. The graphics source and the display therefore operate on separate schedules, and the mismatch can appear as tearing or uneven motion. Variable refresh rate, commonly shortened to VRR, changes that relationship. Within a supported operating range, a compatible display can vary the interval between refreshes so that new frames are presented closer to the time the source finishes them. The display is still refreshing one complete image after another; the timing between those refreshes is what changes.

Tech 13 Sep 2026 6 min read

USB-C Hub Power Budgets and Passthrough Charging

A USB-C hub may advertise a high-wattage power input yet deliver less power to the laptop connected through it. Plugging in a flash drive, Ethernet adapter, or other peripheral can also change how much power remains available elsewhere. The missing power is not necessarily a fault. A hub is an active device with its own power requirements and a finite power budget. Passthrough charging adds another layer. Power enters the hub through one USB-C port, some of it operates the hub and its attached devices, and the remaining capacity can be offered upstream to the computer. The exact result depends on the hub design, charger, cable, connected loads, and the power contract negotiated over USB Power Delivery.

Tech 13 Sep 2026 5 min read

USB-C Cables Do Not All Carry the Same Signals

Two USB-C cables can have matching plugs and still behave very differently. One may charge a laptop but move files at only USB 2.0 speed. Another may carry high-speed data and a display signal. A third may support a higher charging power but still lack the signal paths needed for some other functions. USB-C describes the connector system, not one fixed bundle of data, power, and display capabilities. The devices at both ends and the cable between them determine which functions a connection can actually use.

Cybersecurity 13 Sep 2026 7 min read

Unsafe Deserialization Turns Data Into Program Behavior

A serialized value can look inert on the wire and become active the moment an application reconstructs it. The dangerous transition is easy to miss because the input may resemble ordinary state: fields, type names, references, collection entries, or compact binary records. Yet some serialization systems restore far more than plain data. They can select classes, invoke constructors or callbacks, rebuild object graphs, and activate framework behavior during or after decoding.

Go 13 Sep 2026 4 min read

Transform Unicode Text with strings.Map in Go

strings.Map applies one function to every rune in a UTF-8 string and builds a string from the returned runes. A mapping function can preserve a rune, replace it, or remove it entirely. That makes the API a compact fit for transformations whose rule is naturally expressed one Unicode code point at a time. mapped := strings.Map(func(r rune) rune { if r == '_' { return '-' } return r }, input) The operation is rune-oriented rather than byte-oriented. ASCII input still follows the same contract, but multibyte UTF-8 sequences arrive at the callback as decoded rune values.

Artificial Intelligence 13 Sep 2026 6 min read

Trade Activation Memory for Recomputation with Gradient Checkpointing

Training a deep neural network requires more memory than its parameters alone suggest. Backpropagation needs intermediate values from the forward pass, and retaining those activations across many layers can consume a large share of accelerator memory. Gradient checkpointing changes that storage policy. Instead of retaining every intermediate activation until its gradient is computed, training keeps selected boundary tensors and reconstructs omitted intermediates by running parts of the forward computation again during the backward pass. The model function need not change, but the execution schedule does.

Tech 13 Sep 2026 7 min read

Thermal Throttling and Sustained Performance

A phone, laptop, handheld console, or desktop can begin a demanding task at high speed and settle at a lower speed several minutes later. The processor has not necessarily developed a fault. Modern chips continuously operate within electrical, power, and temperature limits, and their control systems can reduce performance when those limits become restrictive. This behavior is commonly called thermal throttling when temperature is the active constraint. It protects the processor and surrounding components while keeping the device inside its intended operating envelope. The practical result is a gap between brief peak performance and the level a system can sustain during a long workload.

Artificial Intelligence 13 Sep 2026 7 min read

Steer LLM Behavior with Activation Vectors

A transformer can produce different continuations without changing its prompt, weights, or decoding settings if an internal activation is modified during the forward pass. Activation steering uses this property as an inference-time control mechanism. A vector representing a target attribute is added to, or subtracted from, a hidden representation at selected model locations. The operation is simple, but its effect depends on where the vector came from, where it is injected, and how strongly it is scaled. A direction that separates two sets of prompts in one layer is not automatically a portable semantic control across layers, model revisions, or prompt distributions.

Tech 13 Sep 2026 5 min read

SSD TRIM and Deleted Storage Blocks

Deleting a large file can make free space appear immediately in the operating system, yet the SSD underneath has a separate view of its flash memory. The file system knows that the file no longer occupies usable space. The drive, however, works through logical block addresses and does not infer file-system intent from a directory entry disappearing. TRIM bridges that gap. It allows host software to tell compatible storage that ranges of logical blocks no longer contain data the host needs. On NVMe storage, the comparable operation is commonly expressed through deallocation in the Dataset Management command. The practical result is similar: the controller can treat those logical ranges as unused when managing flash.

Tech 13 Sep 2026 7 min read

SSD TRIM and Deallocated Storage

Deleting a large file can make free space appear immediately in the operating system, yet an SSD does not treat that event like a hard drive overwriting a fixed physical location. The file system releases its own allocation first. A separate deallocation signal can then tell the SSD that the corresponding logical blocks no longer contain data the host needs. That signal is commonly called TRIM. On NVMe storage, the comparable operation is deallocation through Dataset Management. The names differ across storage interfaces, but the practical idea is similar: the host identifies logical ranges whose previous contents no longer need to be preserved.

Go 13 Sep 2026 4 min read

Split Text with Custom Rune Boundaries Using strings.FieldsFunc in Go

strings.FieldsFunc treats selected Unicode code points as boundaries and returns the non-empty text between them. That behavior fits inputs where separators belong to a class rather than one fixed substring: commas and semicolons, several punctuation marks, or any rune accepted by a deterministic predicate. fields := strings.FieldsFunc(input, func(r rune) bool { return r == ',' || r == ';' }) For alpha,,beta;gamma;, the result is []string{"alpha", "beta", "gamma"}. Consecutive matching runes form a boundary region, and matching runes at either edge do not produce empty elements.

Go 13 Sep 2026 4 min read

Split Once with strings.Cut in Go

strings.Cut separates a string around the first occurrence of a delimiter and reports whether that delimiter was present. That three-result contract matters in parsers where a missing separator is different from a separator followed by an empty value. before, after, found := strings.Cut(input, "=") When the separator exists, before contains the text preceding its first occurrence and after contains the remainder. When it does not exist, the function returns the original string, an empty second string, and false.

Tech 13 Sep 2026 5 min read

Sleep vs Hibernation: Power Use and Resume State

Closing a laptop lid can make the machine appear to be off, yet opening it a few minutes later may restore the desktop almost instantly. A computer placed into hibernation can also restore open applications, but the mechanism is different. The distinction affects power use, resume time, storage activity, and what happens if the battery becomes depleted. Both modes preserve more session state than a normal shutdown. They differ mainly in where that state is kept while the computer is inactive.

Tech 13 Sep 2026 6 min read

Sleep and Hibernation Handle Memory Differently

Closing a laptop lid can make the screen go dark almost at once, yet the next lid opening may restore every window in seconds. A computer can produce a similar result after hibernation, even though the underlying state is quite different. Both modes preserve an open session, but they do not preserve it in the same place or with the same dependence on electrical power. The distinction matters most when a computer stays unused for a long period, its battery becomes depleted, or resume time matters. It also explains how a machine can appear to continue from the same desktop after spending hours with little or no active power draw.

Go 13 Sep 2026 5 min read

Set Per-Request Read Deadlines with http.ResponseController in Go

A server-level read timeout applies one policy across connections, but a particular handler can have a narrower request-body budget. Go’s http.ResponseController exposes SetReadDeadline for that case. The deadline covers reading the request, including its body, and gives handler code a direct boundary for input that arrives too slowly. This control is different from limiting body size. A byte limit constrains how much data a handler accepts; a read deadline constrains how long reads may continue. Endpoints that accept streamed or uploaded data often need both dimensions considered separately.