SShortSingh.
Back to feed

How a 2016 npm naming dispute caused 11 lines of code to break the internet

0
·1 views

On March 22, 2016, developer Azer Koçulu unpublished all 273 of his npm packages in protest after npm transferred his 'kik' package name to the messaging app Kik following a trademark dispute. Among the removed packages was left-pad, an 11-line utility function that had been downloaded nearly 2.5 million times the previous month and was a transitive dependency for major tools like Babel and Atom. Within minutes, thousands of software builds began failing at a rate npm described as hundreds per minute. npm resolved the outage in about two and a half hours by taking the unusual step of restoring the original package from backup. The incident prompted npm to introduce an unpublish time window — initially 24 hours, later extended to 72 hours — and highlighted the fragility of live-resolved transitive dependencies in modern software development.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

CodeMemory Gives AI Code Reviewers Persistent Memory of Team Preferences

A team of developers built CodeMemory, an AI-powered code review system with persistent memory, during the Hack With Hyderabad 3.0 hackathon. Unlike standard AI coding tools, which treat every review session as a fresh start, CodeMemory retains context from past interactions such as team coding preferences, repeated mistakes, and architectural decisions. The system integrates a memory layer using a component called Hindsight to store and retrieve relevant historical context before generating feedback. This approach is designed to mimic a senior developer who builds familiarity with a team over time, rather than rediscovering the same context repeatedly. The project addresses a widely recognised limitation of stateless AI assistants, which currently dominate the code-review landscape.

0
ProgrammingDEV Community ·

Developer Builds AI Incident-Response Agent That Learns from Past Fixes

A developer has built an AI-powered incident-response agent that retains memory of past production errors and their outcomes, rather than treating each new incident as an entirely fresh problem. The system uses Hindsight for agent memory, Groq as the language model, and Streamlit for the user interface. For every incident, the agent stores the original error log, identified root cause, applied fix, and whether that fix succeeded or failed. When a new incident arrives, the agent retrieves similar past cases and includes them as context in the prompt sent to the language model, explicitly instructing it not to repeat fixes that previously failed. This memory-first approach shifts the agent's role from generic troubleshooter to an assistant informed by real operational history.

0
ProgrammingDEV Community ·

Shared Memory Tiling Delivers 1.92x Speedup in CUDA Matrix Multiplication Project

A developer documenting their GPU programming learning journey built a matrix multiplication project from scratch using CUDA to apply concepts from studying parallel processor architecture. Starting with a naive implementation that assigned one thread per output element, they identified repeated global memory fetches as a key performance bottleneck. They then implemented a tiled kernel using shared memory, where threads cooperate to load data blocks and reuse them locally, while also adding boundary checks to handle arbitrary matrix dimensions. Benchmarking on a Colab GPU for a 1024×1024 matrix showed latency drop from 4.66 ms to 2.43 ms, translating to a 1.92x speedup and a jump from roughly 460 to 884 GFLOP/s. The project also incorporated a structured GitHub workflow and a dedicated CUDA-event-based benchmark harness to ensure rigorous, reproducible performance measurement.

0
ProgrammingDEV Community ·

How Idempotency Keys Prevent Duplicate Payment Charges in Backend Systems

A common backend vulnerability called an idempotency issue can cause the same payment to be processed multiple times when a client retries a failed or timed-out request. In a weak-network scenario, a server may successfully receive a payment request but fail to return a response, prompting the client to resend it and triggering duplicate charges. Load testing with the k6 tool demonstrated that 50 simultaneous identical requests created 50 separate database entries for a single intended transaction. The standard solution is to assign each payment a unique idempotency key, which the client sends with every retry of the same request. The backend checks this key before processing, ensuring the transaction is executed only once regardless of how many duplicate requests arrive.