SShortSingh.

Programming

0
ProgrammingDEV Community ·

How to architect a browser-based isometric game using Three.js

Developer Mendola.Tech has shared lessons from building Eidolon, an open-source isometric action game running in the browser using the Three.js WebGL library. The project highlights that browser games must treat the entire startup sequence — asset loading, input setup, and first frame — as part of the player experience, not just the gameplay loop. Key architectural advice includes separating game simulation logic from the Three.js scene graph, validating GLTF asset conventions early, and monitoring draw calls, texture memory, and garbage collection rather than relying on feel alone. The team also recommends implementing adaptive quality settings for resolution, shadows, and particle counts to handle the wide range of mobile and desktop hardware. Eidolon's source code is publicly available, and the overarching guidance is to keep the game's critical path lean enough that startup, rendering, and simulation can be understood as one connected system.

0
ProgrammingDEV Community ·

How to Build a Deterministic C++ Simulation Framework That Actually Works

Achieving true determinism in a multithreaded C++ simulation requires deliberate architectural decisions across scheduling, randomness, floating-point math, and data layout. Developers must define a clear boundary for what "deterministic" means — whether results must match across machines, compilers, or operating systems — rather than treating it as a blanket guarantee. Fixed simulation timesteps, scoped random-number streams, and explicit job graphs with defined read/write sets are among the key design requirements. A reliable framework must also support input recording, state restoration, checkpoint hashing, and divergence reporting to make determinism verifiable. The primary practical payoff is converting rare, hard-to-reproduce timing failures into consistent, debuggable test cases.

0
ProgrammingDEV Community ·

How Permit Workflows Reveal the Core Principles of Reliable Document Software

A guide to Pasco County septic-repair records illustrates how effective workflow software must track the full chain of relationships between documents, decisions, and real-world objects — not just store files. Each document should be anchored to a stable entity such as a property or case, with a consistent internal identifier rather than a filename or address alone. Workflow systems must distinguish between discrete stages — such as application uploaded versus accepted, or permit issued versus inspection passed — and record the actor, timestamp, and evidence behind every status transition. Version history and append-only records are essential so that earlier submissions remain visible when later decisions are reviewed. When reference sources conflict, the system should surface the disagreement and prompt verification rather than silently treating one source as authoritative.

0
ProgrammingDEV Community ·

Tableau Recommends Just Two or Three Views Per Dashboard, Not Eight

Tableau's published guidance advises limiting dashboards to two or three views, as each additional view divides reader attention and dilutes the impact of the overall message. Overcrowded dashboards typically result from trying to serve multiple audiences simultaneously rather than a single named person with a clear purpose. Designers are encouraged to write a one-sentence statement defining what question the dashboard answers and for whom, then remove any view that does not directly serve that purpose. Layout also matters: the most important view should occupy the upper-left position, as readers naturally scan from there first, with supporting views placed below. Following this approach, most dashboards lose roughly half their views, and the remaining ones communicate more effectively than the cluttered original.

0
ProgrammingDEV Community ·

A Practical Step-by-Step Guide to Making Your First Open Source Contribution

Contributing to open source can be daunting for beginners, but a structured approach makes the process more manageable. Aspiring contributors are advised to start by selecting an organization through resources like GSoC lists, then thoroughly reading the project's CONTRIBUTING.md file to understand setup and guidelines. Setting up the project locally, studying frequently updated files, and grasping the overall repository structure are key preparatory steps. For a first pull request, contributors should pick a small, focused issue and dedicate at least three weeks to researching and resolving it carefully. Patience and persistence are emphasized as essential traits, with the process described as becoming easier and more rewarding over time.

0
ProgrammingDEV Community ·

Rate Limiting Has Three Distinct Layers, and Most Systems Only Use One

A software developer building two separate platforms — LogicVisor, a public AI code-review tool, and Titan, a payments system — found that effective rate limiting requires three distinct layers rather than a single strategy. Client-side controls like debouncing or disabling submit buttons improve user experience but offer no real security, as malicious actors can bypass JavaScript entirely. LogicVisor, which allows anonymous users three free reviews, stacks multiple server-side checks before any paid AI call is made, including IP-based limits, session tracking, browser fingerprinting, and result caching via code hashing. Rather than returning a hard 429 error during traffic spikes, the system degrades gracefully by serving a basic non-AI response to authenticated users. The key insight is that abuse prevention, cost control through deduplication, and graceful degradation are separate mechanisms that each protect different resources and carry different trade-offs.

0
ProgrammingDEV Community ·

Why Your Status Enum Scattered Across Five Files Is a Silent Bug Factory

A common codebase problem occurs when a single concept like an order status enum gets independently redefined across multiple files — as constants, type unions, SQL constraints, and UI components — with no single source of truth. Each new developer who cannot locate an existing definition simply creates another version, causing silent divergence between representations. The most dangerous consequence is a case-mismatch bug where one file stores 'archived' in lowercase while another expects 'ARCHIVED', causing filtered data to silently disappear with no compiler or runtime error. TypeScript casts and SQL CHECK constraints each validate their own layer independently, so neither catches the cross-layer inconsistency. The core issue is not which representation to choose, but the absence of a canonical, discoverable definition that all parts of the system share.

0
ProgrammingDEV Community ·

Harness AI Assistant Runs Perception Stack On-Device to Keep Costs Near Zero

Harness, a screen-aware AI assistant, processes video frames, text, and audio entirely in the user's browser using on-device models, meaning compute costs are borne by the user's own hardware rather than the developer. The tool relies on several lightweight models — including CLIP for image embedding, PaddleOCR for text extraction, and a quantized 2.6B language model — stored in a roughly 1.7GB download. For complex reasoning tasks that smaller models cannot handle reliably, Harness routes requests through Surplus Intelligence, a marketplace reselling provider quota below standard list prices, reportedly achieving savings of up to 66% on certain models. Revenue is generated from the spread between discounted surplus pricing and the list price charged to users, a margin the developer describes as disclosed bridge revenue rather than the core business. The architecture is designed so that high-frequency, perception-based tasks scale freely on user hardware, while lower-frequency frontier model calls incur real but reduced costs.

0
ProgrammingDEV Community ·

Database Isolation Levels Explained: Why the ANSI SQL-92 Standard Falls Short

In multi-user database systems, concurrent transactions can produce anomalies such as dirty reads, phantom reads, lost updates, and write skew, which corrupt data consistency. To manage these risks, databases offer isolation levels — configurable settings that trade off data safety against performance. The ANSI SQL-92 standard defines four classic isolation levels: Read Uncommitted, Read Committed, Repeatable Read, and Serializable. However, this widely taught standard is considered incomplete, as it omits critical anomalies like lost updates, read skew, and write skew. As a result, some databases that advertise full Serializable isolation actually only implement Snapshot Isolation, potentially leaving applications exposed to subtle data integrity failures.

0
ProgrammingDEV Community ·

MCP C# SDK 2.0.0: Why Pinning Protocol Version 2026-07-28 Matters for Stateless Apps

The MCP C# SDK 2.0.0 defaults to the 2026-07-28 protocol but automatically falls back to older versions when connecting to stateful servers, which can silently change the wire contract. The 2026-07-28 specification eliminates the initialize handshake and HTTP sessions, allowing clients to send per-request capabilities via server/discover. When fallback occurs, health checks may stay green while code built on stateless or modern-only assumptions runs under legacy session rules. Developers can enforce a minimum protocol version by setting the ProtocolVersion field in McpClientOptions, causing connections to fail rather than silently downgrade. Inspecting both NegotiatedProtocolVersion and SessionId after connecting is recommended to make any compatibility fallback visible in logs.

0
ProgrammingDEV Community ·

Why a HIPAA-compliant edge system chose gRPC over Unix sockets instead of HTTP

A developer building PhotonicOps, an offline telemetry and hardware-triage system for clinical silicon photonic biosensors, faced a key architectural decision on a single-host Apple Silicon edge deployment. The system ingests optical resonance data at 10,000 samples per second and must pass batches of sensor frames from a Go ingestion engine to a Python DSP pipeline without any cloud API calls, due to HIPAA compliance requirements. The core transport question was whether to use plain HTTP on a loopback port or gRPC over a Unix socket for that one internal process-to-process hop. Three concrete, code-level reasons drove the choice away from HTTP: native client-streaming support in gRPC, a strict sub-10ms per-frame processing budget, and the overhead costs of reconstructing similar functionality manually over HTTP/1.1. The article focuses on the reasoning behind the losing option rather than simply advocating for gRPC, framing the tradeoff analysis as the transferable insight for engineers facing similar decisions.

0
ProgrammingDEV Community ·

Study of 5,388 repos finds AI-authored code merges faster at median, but 25% pay real review cost

A scan of 5,388 public repositories covering 444,225 merged pull requests found that the median repo experiences no extra review burden from AI-attributed code, with attributed work merging in roughly half the time of non-attributed work. However, the top quartile of repositories did show a measurable review cost, with time-to-merge running at least 1.18 times longer for AI-attributed pull requests. Attribution was determined strictly from commit-level markers such as co-author tags and agent bot accounts, not inferred from code style or timing. The researcher behind the study disclosed a commercial interest in the scanning tool used, while noting the findings actually work against a simpler sales narrative. Key caveats include that inline AI completions leave no repository trace, meaning detected figures represent a floor, and causation between agent use and review time cannot be established.

0
ProgrammingDEV Community ·

Five Minutes of Extra Thought Separates Maintainable Code from Technical Debt

A software engineer with experience at AWS, Meta, and fintech startups argues that most code quality problems stem from skipping a few minutes of careful thinking upfront. He illustrates this with a case where a junior engineer manually provisioned an EC2 instance instead of using the team's established CDK infrastructure-as-code workflow, creating hidden operational risks that cost far more time to resolve later. In a separate consulting engagement, he inherited a backend with queries timing out at over 30 seconds due to a massive JOIN on millions of rows, which he resolved by replacing raw SQL with decomposed, paginated ORM-based queries — cutting response time to around 200ms. He acknowledges that context matters, noting he skips Terraform for his own solo projects where the team-coordination tradeoff does not apply. His core principle is not to always choose the harder path, but to consciously understand the true cost of a shortcut before taking it.

0
ProgrammingDEV Community ·

How to Test MySQL 8.4 Compatibility on AWS RDS Before a Blue/Green Cutover

AWS RDS Blue/Green Deployments offer a near-zero-downtime path for upgrading MySQL 8.0 instances to MySQL 8.4, the current Long Term Support release. However, the Green environment is read-only by design, which limits per-application compatibility testing before the final switchover. This becomes a significant obstacle when a single RDS instance hosts multiple projects with different upgrade readiness timelines. A workaround involves layering a snapshot-based test instance on top of the Blue/Green setup, allowing teams to validate each application individually against MySQL 8.4. Once all projects are confirmed compatible, a single coordinated switchover can be executed with minimal downtime.

0
ProgrammingDEV Community ·

Kyverno's disallow-latest-tag policy can silently block pod recovery after eviction

A Kyverno ClusterPolicy enforcing disallow-latest-tag only triggers on Kubernetes admission events — specifically Pod CREATE or UPDATE — meaning existing pods using the ':latest' image tag continue running unaffected after the policy is applied. The hidden danger emerges when those pods need to be recreated, such as after a node memory eviction, drain, or rollout restart, at which point the webhook blocks the new pod and the workload never recovers. In-place container restarts by the kubelet do not create new Pod objects, so CrashLoopBackOff pods with ':latest' can loop indefinitely without ever tripping the policy. This creates two silent populations in a cluster: compliant workloads and legacy workloads that only survive until their Pod object is replaced. Engineers should also note that Kyverno 1.13 moved enforcement configuration from spec.validationFailureAction to a per-rule validate.failureAction, meaning older copied policies may not enforce as expected on newer installs.

0
ProgrammingDEV Community ·

Developer builds open-source infrastructure map to replace daily multi-VM SSH juggling

A developer frustrated by managing multiple VMs and Kubernetes clusters daily through separate SSH sessions built an open-source tool called InfraCanvas. The browser-based dashboard displays servers, containers, pods, and services as a unified visual map rather than disconnected lists. Users can connect Kubernetes clusters by dropping in an existing kubeconfig file, while plain VMs are supported via a lightweight Go agent installed with a single command. The tool offers live terminals, log streaming, container restarts, and manifest editing from one interface, without requiring inbound ports on connected machines. InfraCanvas is released under the AGPL license on GitHub, with a hosted version also available at infracanvas.app.

0
ProgrammingDEV Community ·

Doom Runs Inside a Transformer Model Without Any Training

Researchers have managed to run the classic Doom game renderer inside a transformer neural network, using the Phi-3 architecture as the base model. Rather than training the network, a compiler was used to directly set the model's weights. This means the transformer executes Doom's renderer through autoregressive generation, with no machine learning training involved whatsoever. The project, published on ood.dev, demonstrates an unconventional use of transformer architecture as a programmable computational substrate.

0
ProgrammingDEV Community ·

Pontmore PR #12 Adds Direct Escrow Invocation Standard to PIP-01 Protocol

Developer merged PR #12 into the Pontmore protocol repository on August 11, 2026, extending the PIP-01 Escrow Descriptor to support standalone escrow service invocation without requiring a swap state machine. The update was driven by Issue #11, which called for a defined way for applications to create, fund, release, and cancel escrows directly between parties. The revised descriptor includes an optional service block specifying transport, authentication via Nostr public keys, canonical operations, funding models, and release decision formats. The patch also addressed structural vulnerabilities uncovered during implementation, including cross-instance replay attacks, funding-phase timeout enforcement, and mutual-consent deadlock scenarios. The changes establish a self-contained wire contract anchored by a normative OpenAPI schema, making the protocol more interoperable for financial applications built on Bitcoin and Lightning.

0
ProgrammingDEV Community ·

PHP 8.6 Mass Deprecation Vote Concludes: 31 Proposals Pass, 4 Rejected

PHP internals wrapped up a 35-ballot mass deprecation vote for version 8.6, with results posted by Gina P. Banyard after voting closed on Monday at 13:00 UTC. Of the 35 proposals, 31 were accepted and 4 were rejected, including the deprecation of list(), which ended in a 23-23 tie, and reserving the keywords in, out, and inout, which failed 8 to 21. Among notable passing votes, readonly property defaults cleared without a single no vote at 24-0, and const object property writes passed at 89.5 percent. The pipe assignment operator |>= was declined at 53.8 percent, falling short of the required two-thirds majority. A last-minute concern was also raised about SplFileObject CSV methods, flagging a potential inconsistency if setCsvControl() is removed in PHP 9 while READ_CSV remains, though the item passed 25 to 5 before any resolution was reached.

← NewerPage 151 of 1334Older →