Warehouse Route Optimization
A three-part breakdown of a barcode-driven warehouse picking system: how scans became pick routes, why lookup tables beat online pathfinding, and how Excel imports stayed safe against a live ERP database.
A three-part breakdown of a barcode-driven warehouse picking system: how scans became pick routes, why lookup tables beat online pathfinding, and how Excel imports stayed safe against a live ERP database.
Keep GitHub credentials off a remote machine while letting an AI agent copy a PR body into your local pasteboard.
The data pipeline behind the warehouse system: spreadsheet exports, safe imports, gRPC streaming, typed validation errors, staging tables, and an atomic swap against the ERP database.
I went looking for a seeded PRNG in TypeScript and found splitmix32, a 32-bit pseudorandom number generator so elegant it made me want to understand every single bit.
The route optimizer benchmark track: JPS was a reasonable pathfinding choice, but precomputed Dijkstra tables, SlotId compression, and an exact ILP referee fit the warehouse better.
How a barcode scan became a warehouse route: order lookup, slot choice, shelf ergonomics, and the graph hidden under a pick list.
From bars and spaces to keystrokes in your input field. How UPC-A barcodes encode data, how scanners decode them, and why your barcode reader acts like a keyboard.
A debugging journey through webpack internals, WebAssembly loading, and ESM edge cases. Four dead ends before finding the fix.
Stochastic Greedy replaces greedy's full scan with random subsampling, reducing runtime from O(nk) to O(n ln(1/ε)) while losing only an additive ε in the approximation guarantee. This post covers the algorithm, its proof, and practical guidance.
Lazy Greedy keeps the greedy algorithm's (1 - 1/e) guarantee while skipping most of its oracle calls. Submodularity makes stale marginal gains sound upper bounds, so a max-heap of them is enough to certify each pick.
The greedy algorithm achieves a (1 - 1/e) approximation for monotone submodular maximization, provably the best any efficient algorithm can do. This post covers the algorithm, its proof, and when greedy fails.
An introduction to submodular functions, the mathematical framework behind diminishing returns: set functions, marginal gains, and applications from sensor placement to influence maximization.
A Gradle-based solution using afterEvaluate to permanently fix SDK Build Tools version mismatches across React Native Android dependencies.
FlashSampling fuses exact categorical sampling into the LM head. Its authors report zero logits materialization in HBM and up to 19% faster decoding.
Choosing ten distinct winners is not ten independent random choices. Every draw changes the distribution faced by the next one.
A classifier can print 0.93 without being correct 93% of the time. Softmax normalizes logits; calibration is a separate empirical claim.
The code cited the right weighted-sampling paper and kept the wrong end of its priority queue. The mismatch is more useful than a clean success story.
The network produces logits. Temperature, truncation, and a random draw turn those logits into the token users see.
With 1,000 expected hits, a 20% miss has probability at most 0.00000324. Concentration turns 'probably close' into a number.
After 10,000 events, every event has a 1% chance of occupying a 100-slot buffer. After a billion, the buffer is still fair and still holds 100.
A geometric and probabilistic refresher on the matrix calculus that actually matters in deep learning: gradients, Jacobians, affine maps, chain rules, and the softmax-cross-entropy shortcut.
A Bloom filter can rule out missing keys without storing the keys. Its false positives are not a defect; they are the price of the memory saved.
A latent variable can improve prediction without revealing the one true cause. Useful explanation and literal truth are different contracts.
`Math.floor` and `Math.round` differ by one word. For four choices, one is uniform; the other makes the middle values twice as likely.
Self-attention mixes information across token positions. The next-token logits are what remains after many layers repeat that operation.
An autoencoder only needs codes that reconstruct its inputs. A VAE learns a probabilistic model whose prior gives generation somewhere to begin.
Weights of 1, 2, and 7 turn into odds of 10%, 20%, and 70%. Chance remains, but the code finally admits that the options differ.
Ask PostgreSQL for 100 random rows and it may still evaluate a random key for every candidate. `LIMIT 100` does not make the other rows disappear.
Karger's min-cut algorithm can fail on one run and still be exact when it succeeds. Repetition turns that luck into a bound.
The operational side of the warehouse system: a shared 4 GB Debian server, no Docker, Koa for the hot path, gRPC for isolated jobs, Unix pipes for log forwarding, and one painful native dependency.
A user manual for collaborating with me: communication preferences, working style, and what I care about.