SShortSingh.

Programming

0
ProgrammingDEV Community ·

MarkoMetrics Built a Python Script to Auto-Audit Google Business Profiles Across Markets

SEO agency MarkoMetrics developed a lightweight Python-based audit tool to automatically detect data inconsistencies in Google Business Profiles (GBP) for B2B SaaS clients operating across the UK and Southeast Asian markets including Singapore, Malaysia, Indonesia, and the Philippines. The script uses the Google Business Profile API to pull live listing data and compare it against a canonical source of truth, typically exported from a CRM. It flags issues such as category mismatches, invalid or missing phone numbers, unverified location statuses, and absent business hours. The tool was built to replace manual weekly checks, which the team found unscalable across multiple regional profiles. MarkoMetrics has shared the full script and setup instructions publicly so other teams can adapt it for their own multi-location SEO workflows.

0
ProgrammingDEV Community ·

Free browser tool checks EU CRA Article 14 compliance via dependency lockfiles

A developer has released a free, browser-based tool at cra.toledotechnologies.com/check that lets users check software dependencies for EU Cyber Resilience Act Article 14 obligations by pasting common lockfiles or SBOMs. Under Article 14, enforceable from 11 September 2026, companies must notify their national CSIRT and ENISA within 24 hours if a vulnerability in their EU-market product is being actively exploited. The tool cross-references declared dependencies against the OSV.dev advisory database and CISA's Known Exploited Vulnerabilities catalogue, with all processing done locally in the browser and no file contents sent to the developer's servers. A companion GitHub Action, cra-watch, is also available for automated CI pipeline checks across twelve lockfile formats. The developer cautions that a KEV match does not automatically trigger a reporting obligation, and that reachability of the vulnerable code path remains a key factor under the European Commission's July 2026 guidance.

0
ProgrammingDEV Community ·

Developer Fine-Tunes 7B LLM for Khattak Pashto Dialect Using LoRA and Unsloth

A developer fine-tuned a Qwen2.5-7B large language model to adapt it toward the Khattak Pashto regional dialect, using a technique called LoRA (Low-Rank Adaptation) alongside the Unsloth training framework. LoRA works by keeping the original model weights frozen and training only a small set of additional parameters, making the process far less resource-intensive than full fine-tuning. Unsloth complemented this by reducing memory usage and speeding up training, making the experiment feasible without access to large GPU clusters. Over the course of training, the model's loss dropped significantly from 3.44 to 0.22, though the developer noted that real-world evaluation remains essential beyond training metrics alone. The project, documented as Khatta-ka-LLM, highlights how parameter-efficient fine-tuning techniques are lowering the barrier to LLM experimentation for developers with limited infrastructure.

0
ProgrammingDEV Community ·

435 Directory Submissions Reveal What Launch Guides Never Tell You

A software team tracked every detail from 435 directory and launch platform submissions made across multiple product launches, publishing findings in September 2026. More than half of directories required a badge or backlink on the submitter's site before granting a listing or a followed link, making footer space a practical pre-launch necessity. Three out of four submissions also required creating an account before the form was even accessible, adding significant hidden time to each entry. Of listings that went live, 106 out of 150 carried followed links — better than expected, but the team cautions that link attributes can change and should be verified directly on live pages. Based on these insights, the team built a tailored launch checklist tool covering 47 core items across eight phases, with additional items that appear only for the specific product type being launched.

0
ProgrammingDEV Community ·

Strategy Pattern in PHP and Laravel: A Fix for Bloated if-else Logic

As Laravel applications grow, shipping calculators and similar features often devolve into deeply nested if-else blocks that become hard to read, test, and extend. The Strategy Pattern addresses this by extracting each algorithm or behavior variant into its own dedicated class behind a shared interface. This approach allows behaviors to be swapped at runtime without modifying existing code, upholding the Open/Closed Principle. A shipping calculator spanning multiple countries, methods, and discount tiers can produce hundreds of conditional combinations, all of which the pattern helps isolate and manage. The GPS navigation system serves as a practical analogy, where each route type becomes its own strategy class rather than a branch in a monolithic function.

0
ProgrammingDEV Community ·

Debouncing Explained: How Developers Prevent Code From Running Too Often

Debouncing is a programming technique that delays the execution of a function until a specified period of inactivity has passed since its last trigger. It is commonly used in web development to handle high-frequency user actions, such as typing in a search bar or resizing a browser window. Without debouncing, an application might fire a server request on every single keystroke, straining infrastructure and wasting bandwidth. A simple JavaScript implementation uses setTimeout and clearTimeout to reset a timer each time the function is called, executing the task only after the user pauses. The core principle is not about reducing work, but about timing it correctly to align system responses with actual user intent.

0
ProgrammingDEV Community ·

Minke: Open-Source Desktop Workspace Unifies AI Agent, Files, and Terminal

Developer lencx, known for creating a popular open-source ChatGPT desktop client, has released Minke, a local-first desktop workspace designed to streamline AI agent workflows. The Electron-based app integrates conversations, project files, terminals, and browser tabs into a single environment, addressing the fragmented context problem developers face when working with coding agents. Minke runs on DeepSeek Harness but is not locked to it, and all workspace data remains on the user's machine with no cloud dependency. The project is independently developed and not affiliated with DeepSeek, currently carrying 637 GitHub stars and an Apache-2.0 license. It remains under active development, and the README cautions that features and data schemas may still change significantly.

0
ProgrammingDEV Community ·

Developer builds browser-only MOV to MP4 converter that never uploads your file

A developer has released movconverter, an open-source TypeScript library that converts MOV files to MP4 entirely within the browser, with no server uploads or file size restrictions. The tool exploits the fact that MOV and MP4 share the same underlying file format ancestry, meaning iPhone and Mac footage — already encoded in compatible H.264/HEVC and AAC formats — can be converted by rewriting metadata rather than re-encoding media. For less common cases involving PCM audio or ProRes video, the library falls back to WebCodecs or lazily loaded WebAssembly for transcoding. A free web interface is available at movtomp4.net, where users can drop in a file and complete the conversion locally without leaving the browser tab. The library also performs a preflight check before conversion, informing users in advance whether their file will be processed losslessly in seconds or require a slower audio transcode.

0
ProgrammingDEV Community ·

Developer Builds Product Form Library Drawing on Surveys from Superhuman, Intercom and Airbnb

A developer has launched the Product Form Library, a curated collection of ready-to-use product forms inspired by research from teams including Superhuman, Intercom, Airbnb, and Chromium. The library aims to replace generic templates with carefully ordered questions and proven follow-ups drawn from published surveys and guidance. Forms cover a range of use cases including user feedback, onboarding, bug reports, feature adoption, and AI products. One highlighted example adapts Superhuman's product-market fit survey, which asks users how they would feel if they could no longer access the product. The creator is seeking community input on gaps in the collection and welcomes further feedback.

0
ProgrammingDEV Community ·

How to Build Screen-Reader-Friendly NBA Live Score Pages Using ARIA

A developer guide published on DEV Community outlines how to make real-time NBA scoreboards accessible to screen-reader users. The core challenge is that live basketball data — scores, clocks, and game status — updates constantly, but announcing every change would overwhelm assistive technology users with noise. The guide recommends using WAI-ARIA live regions, particularly role=status elements with implicit polite behavior, to deliver compact, meaningful announcements only when significant events occur, such as a score change or period end. Clock ticks should remain navigable but not auto-announced, since per MDN guidelines, not every real-time update warrants interruption. The article uses NBA Live Today, a Philippines-focused sports data platform, as a practical example, arguing that accessibility should be built into the live-data architecture from the start rather than added as an afterthought.

0
ProgrammingDEV Community ·

How to Handle Keyboard Focus Traps in Modals for Web Accessibility

Web accessibility requires that all interactive elements, including modals, be fully navigable using only a keyboard, as many users with visual or physical disabilities rely on it. A keyboard trap occurs when focus enters a section of a page and cannot be moved out using keyboard controls alone. For modals specifically, intentionally trapping focus inside is correct behavior — Tab should cycle only through elements within the modal, and pressing Esc or a close button must return focus to the element that triggered it. Without a keyboard-accessible exit, the modal becomes a true trap, rendering parts of the page unusable until a reload. The native HTML dialog element, governed by WCAG Success Criterion 2.1.2, handles all of this automatically, eliminating the need for custom keyboard management code.

0
ProgrammingDEV Community ·

Developer Builds PostNest to Help Writers Get Discovered Without SEO Hassles

A developer frustrated by low readership on self-published content has launched PostNest, a new open publishing platform aimed at developers, founders, students, and creators. The platform is designed to handle technical concerns like SEO and indexing automatically, so writers can focus solely on their content. Unlike many existing platforms, PostNest does not require readers to create an account or navigate a paywall to access articles. The platform supports rich-text and Markdown publishing, images, company profiles, and an API for programmatic publishing. The creator is currently seeking early users to test the platform and provide honest feedback to guide its development.

0
ProgrammingDEV Community ·

Why Google Sheets API Writes Don't Trigger onEdit or onChange Events

A common source of confusion for Google Apps Script developers is that writing data to a spreadsheet via the Sheets API does not fire onEdit or onChange event triggers, as these only activate on direct user interactions. The distinction matters because script executions and external API requests are treated separately from user-driven edits by Google's trigger system. Developers can verify this behavior using a test setup involving a bound Apps Script project with installed triggers for edits, changes, and form submissions. Running a script write and an API values.update call in controlled conditions will show that neither produces a trigger execution, unlike a manual cell edit. Understanding this separation is essential for correctly architecting automation workflows that rely on spreadsheet event handlers.

0
ProgrammingDEV Community ·

A developer built a working container in 30 lines to demystify how they actually work

A software developer set out to understand what containers truly are at the kernel level, finding that no special kernel object called a 'container' actually exists. Using Linux's unshare command with a handful of namespace flags, they isolated a process with its own hostname, PID table, network stack, and filesystem in roughly 30 lines of code — no Docker required. Each flag, such as --pid, --net, and --uts, requests one specific type of isolation from the kernel, making the mechanism far simpler than most developers assume. The trickier step involved replacing the root filesystem, where pivot_root was used instead of chroot to fully unmount the old root and eliminate any escape path. The exercise demonstrated that container isolation is not a complex built system but a series of direct, incremental requests to the Linux kernel.

0
ProgrammingDEV Community ·

Developer releases open-source Python library after months of debugging unattended AI agent

A software developer has released a lightweight Python library called kevlar-agent after spending months identifying critical failure points in a self-built, voice-driven AI assistant running unattended with over 240 tool integrations. Among the key bugs discovered were an OAuth flow that silently blocked indefinitely when no user was present, duplicate tool calls that caused two processes to simultaneously fight over a single microphone, and a shared API key that allowed one feature's usage burst to silently exhaust quota needed by another. Each failure led to a specific fix — including time-windowed deduplication, per-feature budget ceilings, and enforced timeouts for blocking calls. The resulting library, kevlar-agent, packages these patterns as plain Python decorators with no framework dependencies, making it compatible with tools like LangChain, CrewAI, or custom agent setups. It is MIT licensed, includes 24 tests, and is publicly available on GitHub and PyPI.

0
ProgrammingDEV Community ·

Four typosquatted PyPI packages targeting AI libraries removed after malware review

GitHub's Advisory Database on 11 September 2026 flagged four malicious PyPI packages — langgrap, openaii, transfomers, and ollamaa — each mimicking a popular AI library with a single character difference. All four were grouped under the campaign identifier 2026-09-openaii and shared an identical attack mechanism: a malicious .pth file that executed automatically upon Python interpreter startup without requiring an explicit import. Once triggered, the packages downloaded a secondary payload, stole SSH keys and cloud credentials, installed cryptocurrency mining software, set up persistence across reboots, and wiped logs to hide activity. The fake packages used plausible but outdated version numbers, likely to avoid immediate suspicion from developers relying on older dependency pins. All four packages have since been removed from PyPI and return 404 errors, though install counts and the full extent of exposure were not disclosed in the advisories.

0
ProgrammingDEV Community ·

npm malware advisories can lag up to 95 days behind package publication, study finds

A analysis of the 100 most recent npm malware advisories from the GitHub Advisory Database found that while most malicious packages are flagged on the same day they appear, 30% remained on the registry for more than a day before an advisory was issued. The worst case, a package called unifi-credential-server, was publicly available for 95 days before being flagged. Researchers used two public APIs — GitHub's advisory feed and the npm registry — to compare each package's publication date against its advisory date. Despite the lag, 95% of the flagged packages were under 30 days old when the advisory arrived, suggesting most npm malware is relatively new when detected. The findings highlight a structural blind spot in advisory-based dependency scanners, which cannot warn users about threats that have not yet been reported.

0
ProgrammingDEV Community ·

Using searchParams in Next.js Pages Forces Dynamic Rendering Silently

In Next.js, simply accepting the searchParams prop in a page component causes the entire route to be treated as dynamically rendered, even if the prop is never meaningfully used. Unlike cookies() or headers(), searchParams looks like a normal React prop destructure, giving no visual signal that it carries request-specific implications. The behavior is intentional — since query strings vary per request, Next.js cannot pre-generate a single static HTML output for such pages. The real problem arises when searchParams is included out of habit or copied from another component, unnecessarily stripping static caching benefits from pages like an About or Contact page. Developers can identify affected routes by running a production build and checking whether routes expected to be static are instead flagged as dynamic.

0
ProgrammingDEV Community ·

Why Your A/B Test Results May Be Wrong Before You Even Read Them

A technical guide published on DEV Community outlines three critical validity checks that should precede any interpretation of A/B test results. The first is an A/A test, where two identical experiences are run against each other to expose tracking bugs or randomization errors in the testing pipeline itself — Microsoft's experimentation team once found a false-positive rate of 30% this way. The second check is Sample Ratio Mismatch (SRM), which uses a chi-squared test to verify that traffic was actually split as intended, since even a 4% imbalance can signal bot skew, ID collisions, or broken redirects. The third issue flagged is Simpson's Paradox, where aggregate results can contradict segment-level findings, making the overall metric misleading without deeper breakdown. The article argues these infrastructure checks are not one-time pre-launch steps but should run continuously so pipeline regressions are caught before they corrupt live experiment data.

0
ProgrammingDEV Community ·

Django 6.1's FETCH_PEERS cuts N+1 query loops from 2,001 queries to just 2

Django 6.1, released on 5 August 2026, introduced a queryset-level setting called fetch_mode with a FETCH_PEERS option designed to automatically batch foreign key lookups without requiring explicit select_related() or prefetch_related() calls. In benchmark tests using 2,000 book records across 50 authors on a local Postgres 17 instance, the default N+1 approach fired 2,001 queries and took 1,144.6 ms, while FETCH_PEERS reduced that to just 2 queries and 13.1 ms — nearly matching select_related performance. The feature works by issuing a single WHERE id IN (...) batch query on first access, functioning like an on-demand prefetch_related(), and also handles deferred fields beyond just foreign keys. However, testing revealed a documented limitation: FETCH_PEERS does not apply to reverse foreign key managers, meaning a loop over author.books.all() still produces the same number of queries regardless of the fetch_mode setting on the parent queryset.

← NewerPage 1268 of 3231Older →