SShortSingh.

Programming

0
ProgrammingDEV Community ·

Developer Builds PWMake, a New C++ Build System to Replace CMake

A developer frustrated with CMake and existing build tools has created PWMake, a new C++ build system built on top of Ninja. The project introduces a custom language that generates Ninja build files, aiming to simplify the configuration process. PWMake organizes build logic into groups — Compiler, Files, and Project — to manage compiler settings, source file discovery, and output types such as binaries, static libraries, and shared libraries. The tool currently targets C++23 and uses the Clang compiler with the libc++ standard library. This is the first release, and the developer acknowledges it may have missing features and bugs, inviting community contributions via GitHub.

0
ProgrammingDEV Community ·

Free browser tool converts cron expressions into plain English with live previews

A developer has built a free, client-side cron expression generator to help users who struggle to remember cron syntax. The tool lets users select day, hour, and minute values from dropdowns and instantly translates the resulting expression into plain English. It also previews the next five scheduled runs in the user's local timezone, helping catch daylight saving time errors. Ready-to-use code snippets are generated for Python, Node.js, Bash, Docker, GitHub Actions, and n8n. The tool requires no signup and runs entirely in the browser at cron-generator-kappa.vercel.app.

0
ProgrammingDEV Community ·

Developer finds three data leakage flaws in ML model that appeared to validate cleanly

A developer building a computer vision model to estimate container fill levels discovered three separate data leakage issues after the model appeared to perform well, with a mean absolute error of 0.055. Despite having grouped train/test split guardrails in place from the start, leakage occurred because a grouping column contained incorrect scene IDs instead of unique container IDs, meaning the split was not separating data as intended. A second leak arose when evaluation scripts bypassed the safe split module entirely and used frame-level rather than container-level grouping. A third issue involved a cross-site validation claim that broke down because a drone's default filename prefix appeared across multiple sites, causing training and test data to intermingle. The developer noted that while one published validation claim was invalidated, relative performance comparisons between model approaches remained reliable since all experiments ran on the same flawed partitions.

0
ProgrammingDEV Community ·

Developer Documents Multi-Layer Debugging Journey to Connect PySpark with Kafka

A developer working on a financial data engineering project attempted to extend a batch pipeline with Spark Structured Streaming by reading JSON messages from a Kafka topic. Although the Python Kafka producer and Kafka broker were functioning correctly in Docker, running the Spark job triggered a chain of failures across multiple layers including PySpark, the Spark runtime, Kafka connectors, Hadoop on Windows, Docker networking, and dependency resolution. The spark-submit launcher failed to locate the pip-installed Spark environment on Windows, prompting the developer to run the Python script directly instead. This workaround bypassed the launcher issue but immediately revealed a second problem: Spark lacked the Kafka data source connector entirely, meaning it could not even attempt a connection. The experience highlighted the importance of isolating failures by layer rather than assuming all errors originate in application-level Python code.

0
ProgrammingDEV Community ·

Most startup directory free tiers don't pass real backlinks to Google, audit finds

An AI agent running an autonomous startup experiment audited over a dozen startup directories to assess whether free-tier listings actually provide SEO-valuable backlinks. The analysis found that the majority of free listings either use 'nofollow' attributes or lack outbound vendor links entirely, meaning Google does not count them. The team developed a four-step shell script check — requiring no browser, account, or signup — to evaluate each directory in roughly 30 seconds before investing time in form submissions. Notable findings included Open Alternative (DR 51) serving nofollow links on free tiers, and Saaspa.ge having no outbound vendor anchor at all in its raw HTML across any listing tier. PeerPush (DR 74) was identified as a rare exception, offering a followed link that carries genuine SEO value.

0
ProgrammingDEV Community ·

Only 35 editorial domains link to all 8 major web hosts, analysis finds

A link-graph analysis using Common Crawl data from April–June 2026 examined the top 2,000 referring domains for eight major web hosting providers, including Hostinger, Bluehost, WP Engine, and Kinsta. Across all eight hosts, researchers identified 10,077 unique linking domains, but after filtering out platforms, CDNs, social networks, and URL shorteners, only 35 editorial domains linked to every host in the set. Around 72% of linking domains pointed to just one host, suggesting the web hosting category lacks broad, recurring press coverage. WP Engine had the widest referring-domain profile while Cloudways had the narrowest, a gap the researchers flagged as a practical outreach opportunity. The highest-authority sites linking to all eight hosts were WordPress.org, GitHub.com, and Shopify.com, each with a domain authority above 80.

0
ProgrammingDEV Community ·

Idempotency Keys: How APIs Handle Duplicate Requests Without Double-Charging

When a network drops a connection mid-request, clients must retry — but servers risk executing the same operation twice, such as charging a card or creating duplicate orders. Idempotency keys solve this by having clients attach a unique token (typically a UUID) to every retry of the same logical operation, allowing servers to detect and deduplicate repeated requests. A naive database check for existing keys introduces a race condition, where two concurrent retries can both pass the cache check and trigger the side effect twice. The correct approach is to atomically claim the key before executing any work, using database-level conflict handling to ensure only one request proceeds. Servers must then explicitly handle three states — in-progress, completed, and failed — each requiring a distinct response strategy to ensure reliability under real-world network conditions.

0
ProgrammingDEV Community ·

How One Developer Built USDT Payment Architecture for AI Agents at Scale

A developer building roborent.cc, a marketplace where AI agents and humans earn USDT for completing tasks, has detailed the payment architecture they designed after finding traditional payment rails unworkable for automated workers. Stripe, PayPal, and bank transfers were ruled out due to KYC requirements, slow settlement times, and fees that make micro-payments unviable for bots. The system defaults to Tron's TRC-20 standard for payouts, citing roughly $0.80 flat transaction fees, three-second finality, and broad exchange support, while also accommodating BNB Chain, Arbitrum, and TON through a unified abstraction layer. A key cost-saving measure involves batching payouts every 60 seconds using a smart contract with a Merkle tree structure, reducing fees for 1,000 individual transfers from an estimated $800 down to around $0.80. The architecture also employs idempotency keys in a ledger service to prevent double-payouts, and an air-gapped signing service to protect the private keys controlling payout wallets.

0
ProgrammingDEV Community ·

Next.js Caching Explained: Tag-Based Revalidation and Granular Cache Control

Next.js 13+ introduced a major shift in caching architecture, moving from opt-in static generation to an opt-out model where Server Components are cached by default and developers must explicitly manage invalidation. The App Router's multi-layered caching system spans the Edge Runtime, Server Components, and Node.js environments, placing greater responsibility on engineers to maintain data consistency. A key advancement is the revalidateTag API, which allows developers to invalidate cached data across multiple pages and components using named tags rather than relying solely on URLs or time-based intervals. This is especially useful when interdependent data changes — for instance, a profile update can simultaneously invalidate a header, a notification badge, and a profile page with a single tag. Traditional ISR's time-based revalidation is increasingly seen as insufficient for production apps, as it can serve stale data and trigger unnecessary rebuilds, making tag-based and granular cache strategies more practical alternatives.

0
ProgrammingDEV Community ·

BTC Basis Bot Hits 91% Win Rate, But Its Edge Is Slowly Fading

A developer team testing automated crypto trading bots on BTC/JPY discovered that a simple buy-and-hold strategy over eight years returned 217%, outperforming every timed entry and exit bot they had built. While the bots kept drawdowns between 13–17%, the buy-and-hold approach suffered a 54% maximum drawdown, prompting the team to explore blended portfolio strategies instead. A market-neutral basis-fade bot targeting the price gap between GMO's BTC/JPY leverage and spot products achieved a 91.3% win rate and a near-zero 0.39% drawdown. However, the team found that the strategy's trade frequency had dropped sharply over time, from 55 trades in its first four years to just 14 in the most recent four, suggesting the edge was rooted in early-market volatility rather than a durable structural advantage. Classic Japanese technical indicators like Ichimoku and RCI also failed to clear the team's minimum profitability threshold, with the latter undermined by a circuit breaker that cut off recoveries during volatile periods.

0
ProgrammingDEV Community ·

Fill-rate SQL queries catch dead code that grep and unit tests miss

A software engineer writing for DEV Community found that simple SQL fill-rate queries — counting how many rows have a given column populated — reliably expose dormant logic that neither grep searches nor unit tests can detect. Across seven projects, the approach uncovered multiple silent failures, including a coordination database where only 7 of 177 rows had a critical consistency column filled, leaving three downstream gate constants effectively evaluating against empty data. A separate query revealed that 95 out of 101 routed queries never had their results fed back to the caller. One seven-row stats table showed win-rate data updating normally while run counters had never incremented since inception, keeping a demotion threshold permanently unreachable. The author argues that grep matches the shape of bugs you already expect, while column-level data queries surface failures that no one has yet thought to look for.

0
ProgrammingDEV Community ·

OpenAI Invests $1.5 Billion in Rural Georgia Data Centre Campus

OpenAI has announced a $1.5 billion data centre campus in Effingham County, Georgia, marking one of its largest domestic infrastructure commitments to date. The facility will support AI model training and deployment at scale, while also being positioned as a regional economic development project through job creation and community partnerships. Effingham County was chosen for its available land, power infrastructure, and proximity to Savannah's logistics network, reflecting a broader industry shift toward rural sites where land and energy costs are lower. The investment is believed to be part of OpenAI's wider Stargate initiative — a joint programme with SoftBank and Oracle targeting up to $500 billion in AI infrastructure, though OpenAI has not formally confirmed the link. The move follows similar multi-billion dollar US data centre announcements by Microsoft, Google, and Amazon as AI companies race to secure compute capacity ahead of growing demand.

0
ProgrammingDEV Community ·

Pre-Auth Risk Scoring Can Stop Credential Stuffing Before Password Checks Begin

Credential stuffing attacks use large lists of leaked email-password pairs, replaying them across thousands of IPs at low volume to evade traditional defenses. Standard countermeasures like per-account lockout and per-IP rate limiting both fail because attackers deliberately spread attempts thin across many accounts and residential proxies. A more effective approach involves scoring each login request before any password verification occurs, using the IP address and email address as cheap risk signals. Datacenter IPs, known proxy exits, and emails appearing on abuse lists can flag suspicious requests without touching the expensive bcrypt hash. By tiering responses based on a combined risk score, servers can reject or challenge likely bot traffic before wasting CPU on junk authentication attempts.

0
ProgrammingDEV Community ·

Developer Replaces Vector DBs for AI Memory with Git and Markdown

A software architect has released an open-source AI memory system that uses Git and Markdown instead of vector databases or graph frameworks. The developer argued that spinning up heavy infrastructure just to store conversation context is unnecessary over-engineering for many use cases. The system leverages Git for tracking and rolling back an AI's conversation history, while Markdown serves as a lightweight, human-readable storage format that LLMs can parse without embedding pipelines. The solution is designed to be serverless, zero-cost, and portable enough to integrate into internal automation tools without database maintenance overhead. The project has been published on GitHub, and the developer is inviting the community to test the architecture and contribute feedback or pull requests.

0
ProgrammingDEV Community ·

How Error Budget Policies With Real Consequences Improve Engineering Reliability

Error budgets only work when backed by enforceable policies, according to a framework outlined by Dr. Samson Tanimawo of NovaAIOps. The core mechanism is a feature freeze triggered when a team exhausts its error budget, a rule that leadership cannot override except in genuine emergencies. Weekly 15-minute reviews involving SRE leads and engineering managers track budget status, while monthly sessions with leadership assess trends and investment needs. Teams that enter a constrained state three or more times in a quarter are flagged for a systemic reliability review. Tanimawo argues that after 6 to 12 months of consistent enforcement, feature freezes become rare as the policy gradually drives more stable engineering practices.

0
ProgrammingDEV Community ·

How to Add Distributed Tracing to a Node.js App Using OpenTelemetry

OpenTelemetry (OTel) is a vendor-neutral standard for generating telemetry signals — traces, metrics, and logs — that can be shipped via the OTLP wire format to any compatible backend. Developers can instrument a Node.js service with distributed tracing in a single afternoon by installing the OTel SDK and auto-instrumentations package, then launching the app with a single --require flag and a few environment variables. The auto-instrumentation library automatically patches popular libraries such as Express, PostgreSQL, Redis, and gRPC clients to emit spans without any manual code changes. Experts recommend starting with zero-code auto-instrumentation before writing custom spans, as hand-crafting spans for already-covered libraries is a common time sink for teams new to OTel. For production use, an explicit setup file is advised over the register-flag approach to give developers finer control over exporters, resource attributes, and which instrumentations are loaded.

0
ProgrammingDEV Community ·

Infrastructure Lifecycle Management: How IaC Governs Provisioning and Decommissioning

Infrastructure Lifecycle Management encompasses two core phases — provisioning and decommissioning — both managed through Infrastructure as Code (IaC) principles. Provisioning involves translating a defined blueprint into a fully operational, production-ready environment by allocating resources, applying configurations, and running acceptance tests. Decommissioning is the controlled reversal of that process, systematically removing all system components to eliminate residual costs and security risks. Key steps in decommissioning include dependency mapping, data archival, graceful shutdown, and resource termination using IaC scripts in reverse. Together, these phases ensure the entire asset lifecycle is handled with consistency, auditability, and minimal operational overhead.

0
ProgrammingDEV Community ·

How a failed AI agent pilot led to a living knowledge system that doubled dev output

A developer spent a year building autonomous AI agent tools for software development, only to watch the system become outdated as the product evolved, because agent knowledge was frozen at the time prompts were written. The core problem was not the AI model or framework, but the inability to capture and maintain the tacit knowledge held by senior engineers — decisions, trade-offs, and historical context never written down anywhere. After stepping back for a month to reassess, the developer shifted focus from building smarter agents to solving the knowledge-loss problem, creating a living decision log that updates automatically after each implementation. The approach was first tested privately on personal tickets, yielding dramatically faster turnaround times not from faster coding but from eliminating repeated context reconstruction. Two developers on the team later delivered double their committed sprint points using the resulting system, regardless of seniority, with the full story to be told across a planned five-part series.

0
ProgrammingDEV Community ·

Why AI Agents Fail in Production and How to Engineer Reliable Ones

AI agents that perform well in demos often break down under real production workloads, getting trapped in infinite retry loops, hallucinating invalid parameters, or executing destructive system commands due to poor architecture. A detailed engineering guide published on DEV Community argues that building production-ready agents requires treating them as distributed systems, not simply as language models with tool access. The guide outlines how failures stem from cascading issues such as context window bloat, unvalidated state mutations, and lack of trajectory observability. To address these, the guide recommends applying formal mathematical frameworks — including Markov Decision Processes, Bellman optimality equations, and Shannon entropy bounds — alongside fault-tolerant design patterns like circuit breakers and exponential backoff. The core argument is that a reliable AI agent must be engineered as a deterministic, stateful control system built around an inherently non-deterministic probabilistic reasoning engine.

← NewerPage 265 of 1350Older →