AI 资讯
The NetSapiens inter-domain calling quirk that keeps showing up
Quick share. Been running into this enough times across NetSapiens deployments that it's worth flagging. Scenario: Call gets placed or transferred between two domains on the same NetSapiens platform. The call connects fine. Audio works. But the caller ID showing up on the receiving side is wrong. It's showing the local extension or domain user instead of the actual originating caller. If you check the NetSapiens Known Issues page, this maps to NMS-2518. It shows up specifically when calls cross domain boundaries during hold or transfer. The fallout is mostly cosmetic but it matters for anyone running multi-tenant reseller deployments. Your customer sees the wrong name in their call history. Voicemail attribution gets weird. Inter-domain analytics show calls from the wrong source. A few patterns I've seen work around it: Configure SIP header rewriting at the SBC layer to preserve the original From URI across domain hops For softphones that pull call history from NetSapiens API directly, verify which field the client is actually displaying. Some pull from orig_user , others from local_user . The discrepancy shows up clearer than you'd expect. If you're running a mobile softphone client, check whether the client is caching contact info locally and overriding what NetSapiens returns. A lot of "wrong caller ID" reports turn out to be client-side caching bugs, not platform bugs. The deeper fix is platform-side and depends on what NetSapiens version you're running. The cleaner softphone integrations route call history through the NetSapiens API rather than building it locally on the device, which sidesteps the worst of this behavior. White-label softphones that integrate natively with NetSapiens handle this more consistently than generic SIP clients. Tragofone is one example where the call history syncs through the NetSapiens softphone integration layer directly, so inter-domain caller ID is consistent with what the platform actually has. Other native integrations handle t
开发者
Top 7 Featured DEV Posts of the Week
Welcome to this week's Top 7, where the DEV editorial team handpicks their favorite posts from the...
AI 资讯
What are your Goals for the week? #182
Ready for a new week. All that's left from ren faire is packing down some tent walls and floor one...
AI 资讯
My company packaged 12 years of my experience into an AI Skill, then laid me off. When it crashed, the CTO called at 5x my salary.
A story about knowledge extraction, Kafka consumer rebalance, and what happens when a company...
AI 资讯
🎥AI Chat, AI Cheering Messages, and Animation Editor Hyper (AI Avatar v10: VS Code and Chrome Extension)
Intro AI Avatar is a completely free app that lets your VRoid (VRM) 3D avatar animate in...
AI 资讯
I wrote this while refactoring my invoice app and trying to sort out where frontend “business logic” should actually live. Curious how others draw the line between components, hooks, use cases, and domain helpers in real React apps.
Clean Architecture on the Frontend: Beyond Smart and Dumb Components djblackett djblackett djblackett Follow Jun 7 Clean Architecture on the Frontend: Beyond Smart and Dumb Components # react # frontend # architecture # typescript Comments Add Comment 14 min read
AI 资讯
Writing in the Age of AI
I haven't written articles in quite a while and I recently decided to come back to it. At work I use AI daily, so a big part of my coding tasks are delegated to agents. I try not to do the same when it comes to writing text but I don't have a clear reason for that (or maybe I do and I don't want to admit it). I am sure people can take advantage of generating text with the help of AI but at the moment I feel like prompting would not save me any time and writing the text myself would be faster. What about you? Are you using AI to write your articles? Image credit - jessica olivella, on pexels
AI 资讯
Our VP Said AI Would Test Itself. I Raised My Hand. I Got Reassigned. Day 3 Cost $2.8M. I Had the Screenshots Ready.
Based on real software development trends. About a VP of Engineering who believed AI would verify its own output, 47 TODOs that shipped to production, and a $2,800,000 discount calculation error that nobody caught. This story is based on a submission from a community member. If you have a similar story or something you need to get off your chest — reach out. The next one could be yours. Act 1 · The Tech Meeting "Starting today — no more hand-written code." Marcus, the new VP of Engineering, put a slide up on the big screen. Four words: WRITING BY HAND IS OVER. I was sitting in the back row, against the wall. Seven years at this company. Three core modules that I'd built from scratch. Two production systems that ran the company's primary revenue stream. Now someone was telling me — don't write anymore. The room went quiet for about five seconds. Then people started whispering. Someone pulled out a phone and took a picture of the slide. Marcus added: "AI coding isn't optional — it's a mandatory development standard. We benchmarked this. AI writes code 400% faster than humans. Anyone still typing manually is wasting the company's time." I raised my hand. "Who reviews the code?" "AI reviews it." "Who writes the tests?" "AI tests itself." "What if AI writes something wrong?" Marcus laughed. Not a polite laugh. The kind of laugh you give someone whose question you've already decided doesn't matter. "Let me ask you something." He paused. "Do you really think — you, one person — have more training data than Orion-7? " People started laughing. Not supportive laughter. Pile-on laughter. "Or do you think the world's AI companies — hundreds of billions in investment, tens of thousands of GPUs — built something that's less reliable than one backend developer?" Nobody was looking at me anymore. Everyone was watching him, waiting for the kill shot. He didn't take it. He just smiled. "Starting next sprint, it's AI across the board. Anyone who has concerns — my door's open." Act 2 ·
AI 资讯
Your Codebase Is a Mess Because Your Team Can't Agree on What a "Customer" Is
Nobody wants to hear this. But the reason your software is hard to change, hard to test, and hard to explain to a new engineer isn't your tech stack. It's that your code doesn't reflect how your business actually works. Your engineers are using one word — "customer," "order," "student," "subscriber" — and meaning six different things depending on which part of the system they're touching. Your domain expert says "order" and means something completely different from what your database schema says "order" is. That gap? That's where complexity lives. That's where bugs are born. That's where senior engineers spend their Fridays. Domain-Driven Design is the discipline of closing that gap. Here's what it actually means, practically, without the academic noise. The Core Problem: One Model Trying to Mean Everything Imagine a map that tried to show subway routes, underwater hazards, hiking trails, and flight paths — all at once. It would be useless. A subway map works because it only shows what matters for navigating trains. A nautical chart works because it only shows what matters for sailing. Each map is an abstraction built for a specific purpose, valid within a specific context. Your software models need to work the same way. The moment you build a single "Customer" class that has to satisfy your billing team, your marketing team, your support team, and your logistics team simultaneously — that class becomes a bloated, ambiguous disaster. Everyone adds their fields. Nobody removes anything. The model stops meaning anything specific to anyone. This is the monolithic model trap. And most large codebases are sitting right inside it. Strategic Design: Understand the Problem Before You Touch Code DDD separates design into two layers. Strategic design comes first — it's the work you do before writing a single line of code. Step 1: Find Your Subdomains A subdomain is a slice of the business problem. Ordering. Shipping. Notifications. Payments. Inventory. These aren't your micro
AI 资讯
5 micro-SaaS ideas devs are asking for on Reddit
I have a side habit. When I run out of ideas for what to build next, I do not open Twitter or Product Hunt. I open Reddit. There are about thirty subs where the same complaint comes up every week. Someone describes a workflow they hate, asks if a tool exists, and a commenter says "I wish, please tell me if you find one." That second comment is the cofounder you do not need to pay. Here are 5 I pulled from threads in the last few months. Each one has a real Reddit post behind it, real search volume on the keyword someone would type into Google, and a wedge small enough to build over a weekend. None of these are billion-dollar ideas. All of them could be a $2k MRR side project if you actually shipped. 1. Invoice reminders for trade contractors "i know the title sounds made up. invoice reminders for plumbers. $14K a month. but that's exactly why it works. nobody is competing for this." r/passive_income, 3,653 upvotes Search demand: 7,200 monthly searches for "invoice reminder software" and adjacent terms. Why it works: plumbers, electricians, and HVAC techs send invoices and then forget about them. Their customers also forget. Nobody wants to be the awkward one chasing money. A scheduled email or SMS sequence converts ghosted invoices into paid ones. The buyer is one tradesperson, the value is measured in actual dollars recovered, and the competition is QuickBooks (terrible at this) or nothing. Wedge: a single Stripe-or-QBO connector that sends a polite nudge at day 7, a firmer one at day 14, and a "final notice" template at day 30. Charge $19 a month. 2. Field service software for solo tradespeople "Is there field service management software that doesn't assume you have a team? I run residential HVAC solo, sometimes one helper when it gets busy. Everything I've tried is built for dispatching crews." r/EntrepreneurRideAlong Search demand: 8,800 monthly searches for "field service management software" with solo and small-business modifiers. Why it works: Jobber, Houseca
AI 资讯
Scarab Diagnostic Suite Field Test #013: Kubernetes Watch Cache Critical-Section Boundary
This field test was against Kubernetes. The issue was Kubernetes #138728: https://github.com/kubernetes/kubernetes/pull/139545 The issue involved the watch cache path around initial events. The useful diagnostic boundary was: watch cache consistency work → read lock hold time → initial event delivery That matters because cache paths in Kubernetes are not just storage details. They sit between stored state and the clients watching that state. If too much work happens while a cache lock is held, the system may still be logically correct, but the operational path can become more expensive, more blocking, or harder to scale than it needs to be. The local repair candidate is intentionally narrow. It does not redesign the watch cache. It does not change the broader storage model. It does not rewrite WatchList behavior. The patch focuses on reducing how much work happens while the watch-cache read lock is held. For ordered stores, the repair keeps the cheap snapshot boundary during interval construction, but defers full ordered list materialization until the interval is consumed by the watcher path. In plain terms: Take the necessary cache boundary under lock. Do not do heavier list materialization there if it can be safely deferred. The local patch touched only the watch-cache interval implementation and its focused tests. Local validation passed for the relevant cacher tests, store tests, full cacher package tests, and diff hygiene. Status: draft PR opened for maintainer review Field Test #013 Project: Kubernetes Issue type: watch-cache / initial-events behavior Boundary: cache consistency work under lock vs bounded watcher consumption Result: narrow local repair candidate and focused test coverage Status: local proof prepared; no public PR or comment opened yet This field test matters because it shows Scarab operating inside a major distributed systems platform. The bug shape was not a simple crash. It was not a UI issue. It was not a configuration mismatch. It was a me
AI 资讯
Clean Architecture Revisited
If you are a Software Developer of some form or another, chances are that you follow what are considered best practices for "Clean Code"or "Clean Architecture". It's considered generally best practice according to these books to keep functions down to a few lines, ensure classes have exactly one reason to change, and wrap implementation details behind abstract interfaces. It’s an approach designed to isolate responsibilities and keep the long-term cost of software modifications flat. Yet, as codebases grow under this paradigm, engineers frequently encounter a subtle friction. In the drive to decouple every moving part, applications often accumulate a massive web of boilerplate and multi-layered abstractions. This raises a fundamental question: does hyper-decomposing code actually reduce complexity, or does it simply scatter it across dozens of shallow files, making a single linear operation difficult to follow? This article revisits the baseline assumptions of Clean Architecture by examining a growing yet subtly different software design philosophy championed by systems engineers and computer science pragmatists. We will explore how different software environments define code quality, look at actual case studies of algorithmic decomposition, and map out alternative patterns like John Ousterhout's "Deep Modules." Along the way, we will examine how our design choices interact with mathematical correctness proofs, functional programming paradigms, and a modern toolchain increasingly driven by automated AI agents. The bubbles that shape your opinions The frameworks championed by the "Clean" movement were largely forged in the world of large-scale corporate IT consulting. They were explicitly designed to manage risk in massive organizations where hundreds of engineers with varying levels of experience write code against a single, shared repository. In a setting like a sprawling insurance platform or a legacy banking app with shifting corporate rules, Clean Architecture s
AI 资讯
Scarab Diagnostic Suite Field Test #012: Next.js Source Map Provenance Boundary
This field test was against Next.js. The issue was Next.js #94450: https://github.com/vercel/next.js/issues/94450 The reported problem involved production browser source maps when React Compiler and Turbopack were involved. The visible symptom was that the final browser source map could expose transformed compiler output instead of preserving the original client source content. That matters because source maps are not just debugging extras. They are provenance artifacts. They tell the developer what source the browser output came from. If a source map claims to represent a source file but its sourcesContent contains compiler-transformed output instead of the original file content, then the debugging artifact has drifted from the source truth it is supposed to preserve. The useful diagnostic boundary was: original client source → transform source map → Turbopack source-map composition → final browser chunk map The important proof was that the Babel/React Compiler transform itself could produce a source map whose sourcesContent still represented the original client file. So the loss was not simply: React Compiler changed the code The sharper issue was: the browser source-map composition path was not preserving original source authority all the way into the final artifact That made the repair lane much narrower. The local repair candidate has two parts: Preserve the original loader input source in the Babel loader transform map. Fill missing source-map file provenance from the origin path when an incoming transform map omits it, so Turbopack has enough identity information to match the transform map back to the generated intermediate file during composition. The goal is not to rewrite source-map behavior broadly. It is not to patch the final browser map after the fact. It is to preserve source authority at the point where the transform map is composed into the browser artifact. A regression fixture was added around a React Compiler client component with an original sou
AI 资讯
SpaceX's IPO Will Make Elon Musk Earth's First Trillionaire. That's Not Actually a Finance Story.
The first trillionaire in history won't make their money from banking, oil, or real estate. They'll make it from rockets and algorithms — and the implications of that distinction are genuinely unsettling. The Problem It's Solving (Or Creating) SpaceX is preparing for its IPO. Analysts tracking the raise estimate it will push Elon Musk's net worth past the trillion-dollar threshold, making him not just the richest person on Earth by a wide margin, but something qualitatively different from every billionaire before him. The standard framing treats this as a wealth story. It isn't. A billionaire is powerful because they have money. A trillionaire is powerful because, at that scale, they stop needing permission from anyone — governments, investors, boards, markets. The constraints that keep institutional power in check simply don't apply anymore. How Trillionaire-Scale Power Actually Works There's a clean way to understand the difference. A billionaire can fund political candidates, buy media, lobby aggressively. Another billionaire can fund the opposition. It's expensive, but the system has a counter. A trillionaire doesn't have a counter. They are the counter. They can simultaneously build the communications infrastructure (Starlink), the transportation layer (SpaceX), the compute stack (through xAI), and the political attention economy (via platform ownership). No single democratic institution was designed to regulate someone who owns the pipes that the institution runs on. Arnab Ray's piece in today's Times of India puts it directly: a trillionaire's thoughts and algorithms will shape planetary outcomes. That's not hyperbole. When Musk eventually lands people on Mars, the governance frameworks, the property rights, the social contracts of that colony — those will be engineered by him and his companies, not negotiated through any existing democratic process. What Societies Are Actually Unprepared For Most of the policy debate around billionaires focuses on tax rates
AI 资讯
I Tried to Fix a Vulnerability. A $1,400,000 AI System Said No. Twenty Days Later, That Vulnerability Cost $4,200,000.
This story was shared by a fellow developer on DEV who asked to remain anonymous. If you've got a story to tell — come find me. Your name won't appear anywhere. Based on real microservice security design patterns. About an engineer whose PR got blocked by an AI security system — he thought he was fixing a vulnerability. Turns out, someone had a vested interest in that vulnerability staying open. 1. $1,400,000 All-hands meeting. CTO James stood at the front, a number on the screen: $1,400,000 "This is what we're spending on security this year." He pointed at the number. "The biggest piece — right here." He clicked the remote. VoidSentinel's architecture topology appeared on screen. "VoidSentinel — an AI security platform. Integrated into our CI/CD pipeline. Starting today, every PR involving internal service-to-service calls — it reviews them automatically." The CEO didn't show up today. James didn't mention it. He looked straight at Mark — VP of Security. Mark took the mic. "VoidSentinel has been running in our pre-production environment for three weeks. It's caught 47 high-risk patterns. Zero false positives." He paused. " — Of course, some people might feel uncomfortable when their PR gets blocked. But this isn't personal. This is the security standard. " He wasn't looking at me. But I knew who he was talking about. 2. High Risk. Denied. The story started three weeks earlier. We had a payment service and a user service that talked to each other internally. They shared an old API key — one key across thirty-plus services, unchanged for five years. It wasn't that nobody knew. It just never made it to the top of the backlog. On Day 1, I opened a PR: add independent service-to-service auth between the payment and user services. Not much code — a new token exchange module, three call sites modified. Five minutes later, VoidSentinel's automated comment hit: "High-risk alert: Unauthorized internal access pattern change detected. This PR has been automatically rejected. C
AI 资讯
Two Devs and a Copilot Created ClassifierAI: A Prototype Chrome Extension that Automatically Detects AI-Generated Content on DEV!
This is a submission for the GitHub Finish-Up-A-Thon Challenge Note: AI is currently a Hot Topic in...
AI 资讯
I Have 7 Years of Experience as a Software Engineer. DSA Still Kicked My Ass.
I build RESTful APIs for a living. I've designed event-driven architectures, set up CI/CD pipelines, containerized applications on Azure, mentored junior developers. 7 years of this. Then I opened LeetCode and stared at a medium problem for 45 minutes and closed the tab. Working as a backend engineer for this long means you just never touch advanced DSA. My day to day is .NET, Azure, SQL, clean architecture. EF Core handles the data layer, Azure handles the scaling. I haven't needed to implement a graph traversal or think about tree balancing since university. So when I decided to start interviewing at bigger companies I figured I just needed a quick refresher. I studied this stuff in college. It would come back. It didn't. 7 years is a long time and most of it was gone. What I Tried I went through the usual options. LeetCode grinding. Jumping into random problems with no structure just kept reminding me how much I'd forgotten without actually helping me relearn any of it. YouTube. Watched hours of Abdul Bari, freeCodeCamp, various bootcamp videos. I'd finish a video convinced I understood it, then open my editor and draw a complete blank. Watching someone solve a problem and solving it yourself are not the same thing at all. Books. CLRS is great if your fundamentals are still intact. Mine weren't. None of these were bad resources. The problem was I kept jumping between them with no thread connecting them. A video here, a problem there, a random chapter somewhere else. After years away from this stuff I needed to go back to basics and build up properly, and nothing was set up for that. What Actually Helped Eventually I just mapped out what a proper learning order looked like and started going through it myself. Big O → Arrays → HashMaps → Linked Lists → Stacks & Queues → Recursion → Trees → Graphs → Dynamic Programming For me, order mattered. Going back to Big O first made Arrays click properly. Arrays made HashMaps make sense again. I couldn't get Trees to stick un
AI 资讯
Dev Opportunity Radar #2: A Fully-Funded Residency in Finland, AI Research Program, and a $60K Hackathon
TL;DR Welcome back to Dev Opportunity Radar. This is a weekly series where I share opportunities,...
AI 资讯
Modern AI Landscape - My Understanding
Lets start our discussion from 2010 . Timeperiod 2010 - 2020 we have predictive AI models such as Recommendation systems , customer segmentation etc .. From 2020 the when the generative models were introduced to the world then the landscape was completely changed . We have this generative era till 2022 . Then industry was stepped into a new era called "Augumentation" models like AI Copilot . This was continued from 2022-2024 . Then came AI Agents—one of the most transformative innovations of the modern AI era. Unlike traditional AI systems that primarily generate responses, agents can reason, plan, use tools, and execute tasks autonomously. Today, the industry is rapidly evolving toward Autonomous Systems, where multiple specialized agents collaborate through orchestration frameworks to solve complex real-world problems. The best AI Timeline : Traditional ML ↓ Deep Learning ↓ Transformers (2017) ↓ Foundation Models ↓ LLMs (GPT Era) ↓ Prompt Engineering ↓ Embeddings ↓ Vector Databases ↓ RAG ↓ Function Calling ↓ AI Agents ↓ Agent Frameworks ↓ Multi-Agent Systems ↓ MCP ↓ Agentic AI ↓ Autonomous AI Organizations Just in the span of 6 years we saw a drastic change in the evolution of AI. Can't imagine how this AI is going to be in the next few years. ai #machinelearning #python
开发者
I Took the Keyboard Back From an Agent Mid-Task - Here's What the New PMP Can't Test
A few weeks back I had an agent reconciling a vendor list. It ran clean. No error, no crash, output...