VoidZero, the company behind Vite, Vitest, Rolldown, Oxc, and Vite+, is joining Cloudflare. As part of this change, all team members of VoidZero are joining Cloudflare, too
submitted by /u/magenta_placenta [link] [留言]
找到 1799 篇相关文章
submitted by /u/magenta_placenta [link] [留言]
This is too cool to gate-keep, I’ve decided to open-source Munder Difflin. Munder Difflin a local multi-agent harness that allows you to run the office with as many agents as you want. To put simply it completes ambitious tasks autonomously(almost) by running a cluster of your own claude code agents performing various activities in a controlled environment with inter agent connectivity and one of the top benchmarked memory layer. You can choose to only talk to Michael the god orchestrator which will automatically distribute the asks among other agents. It has gives your agents one of the top bench marked memory layer, gives you full orchestration access with a GOD agent(Michael), schedule repeated instructions that your agents will perform, integrate with slack and much more. (Link in comments) submitted by /u/chaitanyagiri [link] [留言]
I've spent years trying to organize reusable code. I've tried: ● snippet managers ● internal libraries ● private repositories ● documentation systems Everything works initially. Then projects evolve, code diverges, and suddenly there are multiple versions of the same utility everywhere. At this point I'm wondering if perfect organization simply isn't realistic. How are experienced developers handling this? submitted by /u/Unhappy-Pepper- [link] [留言]
Starting this year, I’ve been receiving fake inquiries through the form on my website—about one or two a month. The name, company, and email address are correct, but the message wasn’t sent by the people listed. Either they don’t respond to my reply, or they write back saying they never contacted me. This is frustrating because it reflects poorly on my business. What can I do about it? submitted by /u/Weekly-Month-9323 [link] [留言]
For years I saw "open source contributions" on job descriptions and just... nodded along. Typed it into Google once, got overwhelmed, closed the tab. It always seemed like something other people did. People who actually knew what they were doing. People who weren't me. Then I started looking into it properly. And honestly? It still seemed big. Like I'd need to understand an entire codebase, find a complex bug, write some genius fix that the maintainers would applaud. Turns out that's not it at all. I found some resources that changed how I saw it completely. The bar to start is embarrassingly low, and that's intentional. The open source community built it that way on purpose. So I did it. Was it a few lines of code? Yes. Did I do it directly in the browser like a person who has no idea what they're doing? Also yes. Do I care? Absolutely not. Where to actually start: goodfirstissue.dev — filters repos by good first issue label up-for-grabs.net — same idea, different interface Docs you already use — if you read something and think "that's oddly worded," you're already there GitHub search — label:"good first issue" is:open and filter by language Here's the thing though, this isn't just about open source. Everything seems big and intimidating at first. So you start small. One tiny contribution. Not because it's impressive but because it's real, and it's yours, and it builds something. Confidence mostly. Then you do a slightly bigger thing. Then a bigger thing after that. You don't level up by waiting until you're ready. You level up by starting small and not stopping. My first contribution exists now. That's enough for today.
A meta tag audit is a pile of binary checks. Title present, yes or no. Title in range, yes or no. Description present. One H1. og:image set. Canonical present. Run them all and you get a few dozen booleans. The problem is that a wall of green and red checkmarks does not motivate anyone. People glance at it, feel vaguely bad, and close the tab. A single number does motivate. "You are at 62" is a thing a person will act on. But a number only works if it is honest, and a number is only honest if it is explainable. So we set one hard constraint before writing any scoring code: every point a page loses has to trace back to a named check with a specific fix. No mystery deductions. If you are at 62 and not 100, the tool can point at the exact items that cost you the other 38. That constraint shaped every decision that followed, and it is the reason the rubric looks the way it does. This is the write-up of how we got from a pile of booleans to a number we are willing to defend. Choosing the dimensions and the weights The first decision was how to group the checks. We landed on five dimensions, each with a fixed weight, and the overall score is their weighted average: Basic meta, 30 percent. Title tag and meta description. Headings, 20 percent. H1 count and heading-level hierarchy. Open Graph, 20 percent. og:title, og:description, og:image, og:url. Twitter Card, 15 percent. twitter:card, twitter:title, twitter:description, twitter:image. Technical, 15 percent. Canonical, html lang, viewport, robots. The weights are the opinionated part, and they encode what we actually believe about how pages get found now. Basic meta gets 30 percent, the largest slice, because the title and description are the strings an AI engine quotes when it summarizes or cites a page. They are the highest-value characters on the whole page, so a gap there should cost the most. Technical gets the smallest slice at 15 percent, but for a subtler reason than "it matters least." Technical failures are rarer
We run an app where you describe a task and an AI agent does it. The first step after you hit submit is a planning call: POST /api/web/tasks/plan, which turns your free text into a structured plan the agents can pick up. One submit should mean one plan. While testing locally I noticed two plan requests going out per submit. Same payload, fired back to back. The agents handled it fine because the second plan just overwrote the first, but it bothered me. A doubled write is a doubled write, and the next one might not be idempotent. First wrong guess: a double-click My first assumption was the obvious one. The user double-clicks, or the button is not disabled during the request, so two clicks sneak through. I added the disabled state, watched the network tab, and got two requests from a single click. So it was not the button. The thing I had stopped seeing The submit logic lived in an effect. When the form phase flipped to submitting, the effect ran and fired the plan call. There was a second effect too: when the user changed the tier or output format mid-flow, a matching effect re-planned, because a different tier means a different plan. Neither effect had any guard against running twice. And in development, React StrictMode mounts every component, unmounts it, and mounts it again, on purpose, to surface effects that are not safe to re-run. My plan effect was exactly the kind of effect StrictMode is built to expose. The double mount fired it twice. The detail that made it click: I built the app for production and watched the network tab there. Exactly one request. The double was a development-only artifact of StrictMode doing its job. The bug was never in production traffic, but the fact that StrictMode could double it meant my effect was not safe, and an unsafe effect is a latent bug waiting for a real remount. The fix: ref guards set before the await, not reset in cleanup The instinct is to reach for a boolean. The catch is where you reset it. If you reset the guard
I don’t know if the adoption of 7.0 is just too low for this to become widespread or if I’m just a weirdo and most people don’t use their arrow keys to navigate the editor but this used to work perfectly and is now completely broken. Before 7.0 if you had a set of nested blocks, let’s say a group block with columns and then heading, paragraphs, images etc in the individual columns, you could use your arrow keys to move through the layers. For example if I was in the heading tag at the top of a column and clicked the up arrow it would make the column block the active selected block. Press it again and you’re on the columns container. One more time and you’re at your parent group. Now if I’m in that exact same scenario and click up from the heading block it will jump me to the lowest nested child block of the next highest root level block or if I’m already in the highest root level block it will take me to the page title. There is absolutely no way to use the keyboard to navigate between layout block layers anymore and it’s infuriating. This functionality is so engrained into my brain that it’s muscle memory at this point and I keep flying all over the page when I just want to adjust my column gaps or something. Forcing me to point and click around to the breadcrumbs or expanding the document overview sidebar is such a pain and takes so many steps. I have to imagine this is also absolutely horrible for accessibility, not being able to even get to certain blocks without a mouse. I just have no clue why they would change something that was so logical and just worked exactly as expected since the inception of the block editor. Was this just a mistake or did someone intentionally do something this stupid? I truly can’t see any value to how the keyboard navigation works now and see no point in why someone would choose for it to behave this way over the old way. Is there something I’m missing? Am I just a stubborn old developer who hates change? I feel like this is not unre
i'm having a hard time deciding which approach i should implement. i'm developing a Laravel api which is consumed by Vue & Nuxt and i didn't noticed that i actually implemented two approaches of the returned response: [1] return ArticleResource::collection($articles); this returns a JSON like this: { "id": 1, "title": "My Article" } [2] return response()->json([ 'data' => new ArticleResource($article), 'success' => true, 'message' => 'OK', ]); JSON: { "data": { // output of ArticleResource transformed $article }, "success": true, "message": "OK" } considering that the API and frontend are private repositories. does wrapping all of the response inside 'data' makes sense or should i just stick on [1] for less nesting? what do you guys think what do you usually do with your years of experience? submitted by /u/Totoro-Caelum [link] [留言]
[ Removed by Reddit on account of violating the content policy . ] submitted by /u/allenaa3 [link] [留言]
Yesterday, I read a blog by Shubham on how Generative UI is changing entire frontend space. The frontend has always been something you build ahead of time and ship. The agent just works inside it. For 30 years that was the deal. What's actually shifting: the interfaces shipping in 2026 are drawn partly by the agent itself, in real time, from what the user actually asked for. He breaks down the different approaches (A2UI, MCP Apps, AG-UI) via CopilotKit and where each one actually falls apart depending on how deep in the app you go.. along with the token tax - how typical tool description with its JSON schema runs around 400 tokens. 25 components are 10,000 tokens on every turn, you pay that tax per request. worth a read especially the declarative generative UI pattern where you hand the agent a catalog and let it assemble layouts you didn't pre-build. blog link: https://x.com/Saboo_Shubham_/status/2062220865643982875 repo: https://github.com/CopilotKit/copilotkit do you think it's just marketing hype or actually the future of UI? submitted by /u/allenaa3 [link] [留言]
I am a full time trader and part time developer based in Karachi, Pakistan. A year ago I sat down to research how to properly compare brokers on the Pakistan Stock Exchange. Three hours later I had 11 browser tabs open, two of which had broken links, one had data from 2019, and none of them had everything I needed in one place. So I built PSX Pulse. What PSX Pulse Is PSX Pulse is a free stock market education platform for Pakistani retail investors. Everything a beginner needs to start investing in Pakistan's stock market — in one place. What is live right now: 35 verified SECP-licensed brokers with full contact details Complete mutual funds directory across 15 AMCs DCA calculator with realistic return scenarios 30-day beginner learning path Islamic investing guide PSX sector guide covering 12 sectors IPO tracker 100-term searchable glossary Weekly market recap every Friday All free. No login required. Live at: https://psxpulse.xwen.com.pk/ The Stack React + Tailwind CSS for the frontend. Vercel for hosting — free tier handles everything comfortably. No backend for most features — localStorage and static data keeps it fast and simple. Newsletter handled via a serverless Vercel function writing to a private GitHub CSV. What I Learned Building This Solo 1. The information gap in emerging markets is enormous Pakistani investors are not underserved because nobody cares. They are underserved because nobody with the technical skills to build tools also has the market knowledge to know what those tools should do. Being both a trader and a developer turned out to be the actual unfair advantage. 2. Free tools beat content for SEO My DCA calculator and broker directory pages get more consistent Google clicks than any article I have written. Tools solve a specific search intent that AI overviews do not replace — people still need to interact with a calculator, not just read about one. 3. Building in public is uncomfortable but worth it Sharing what you are building before it i
As a developer who frequently switches between competitive FPS titles like CS2 and Valorant, re-tuning mouse sensitivity is always a hassle. I wanted a fast, ad-free tool to translate my aim perfectly across titles, so I built a clean Game Sens Converter . The Approach I built this using 100% Vanilla JS. It’s a simple utility, so there was absolutely no need for a backend or heavy frameworks. It loads instantly and calculates right in the browser. Here is a quick look at the core logic handling the sensitivity conversion multipliers: function convertSensitivity ( gameFrom , gameTo , currentSens ) { // Standardized multipliers relative to CS2 / Source engine const multipliers = { ' cs2 ' : 1 , ' valorant ' : 3.181818 , ' overwatch ' : 0.3 , ' apex ' : 1 }; if ( ! multipliers [ gameFrom ] || ! multipliers [ gameTo ]) return null ; // Convert to base (CS2), then to the target game const baseSens = currentSens * multipliers [ gameFrom ]; const convertedSens = baseSens / multipliers [ gameTo ]; return convertedSens . toFixed ( 3 ); } Try it out You can use the live tool for free here: Game Sens Converter Let me know what your main game is or if you'd add any other FPS titles to the list in the comments!
Here is the situation of the website. If someone in Canada enters www.example.com they are redirected to www.example.com/ca and ALL the mention of "USA" is hidden and replaced with "Canada"! For example in Canada, instead of people seeing "Home Improvement in the USA and Canada", people in Canada just see "Home improvement in Canada", and vice versa; someone in USA and everywhere other than Canada on the globe does NOT see Canada on the website pages . My question is: Shouldn't a website have unified info and list BOTH USA and Canada, because with current situation someone accessing the homepage in Canada would NOT know that the company can also do Home improvement in the USA and vice versa . Even for AIs, I asked Chatgpt where is the company located and did NOT see Canada. P.S. The only mention of both countries is in the contact page. submitted by /u/RadiantQuests [link] [留言]
submitted by /u/enador [link] [留言]
Marketing wants an A/B landing page by Friday. Product wants to gracefully deprecate a legacy API without breaking old mobile clients. Growth wants ten thousand short links, and Ops does not want ten thousand Nginx edits. At some point, a single return 301 in your CDN stops being a configuration problem and becomes a routing product . Someone has to answer, on every HTTP request: Given this host, path, query, and method—where does this visitor go, and with which status code? I built that answer as a pipeline at LinkShift . Not a pile of special cases, but a fixed sequence of steps that runs the exact same way for real visitors and for the tools you use to test rules before rollout. Here is how I designed a deterministic redirect engine, the pipeline that powers it, and the edge cases that kept me up at night so they don't have to keep you up. Why "Usually Works" Is Not Enough A redirect engine fails quietly. The browser follows a broken 302 and nobody files a ticket. The damage shows up days later in analytics: wrong campaign, wrong locale, or an infinite loop that only appears when two rules on the same host point at each other. What I wanted early on was boring, bulletproof reliability: Same inputs → same decision. Two engineers simulating the same request against the same rule set should get the same target URL. Same resolution logic everywhere. Matching and destination resolution must not diverge between the "Test Rule" button in the dashboard and an actual click on a custom domain. Guards before cleverness. Rate limits and access checks run before anyone evaluates a ternary conditional in a destination string. Expressiveness is easy. Ordering is what saves you in production. The Pipeline, Told as a Story Picture a request hitting a hostname. Before the engine asks "which rule wins?", the request walks through a strict corridor of gates. Only then does it enter the rule loop. Gate 1: The Host Has to Exist If the hostname does not resolve to a domain or LinkShift
Liquid syntax error: Variable '{{% raw %}' was not properly terminated with regexp: /\}\}/
Welcome to our weekly digest, where we unpack the latest in account and chain abstraction and the broader infrastructure shaping Ethereum. This week: Base ships its first independent upgrade with a TEE+ZK multiproof system and confirms native AA is next; Biconomy turns the ERC-8211 smart batching standard into a TypeScript SDK; LI.FI launches an enterprise intents engine for stablecoin and RWA flows; and Vitalik steps back from technical essays to write fiction. Base Launches Azul, Bringing Multiproofs to Coinbase's L2 Biconomy Ships Smart Batching SDK for ERC-8211 LI.FI Launches Intents Engine for Enterprise Cross-Chain Flows Vitalik Pivots to Fiction and Floats a "Trust Dependency" Framework Please fasten your belts! Base Launches Azul, Bringing Multiproofs to Coinbase’s L2 Base activated Azul on mainnet on May 28, its first network upgrade built entirely on its own stack. The headline feature is a multiproof system that pairs Trusted Execution Environment (TEE) proofs with Zero-Knowledge (ZK) proofs, advancing the Coinbase-incubated L2 toward Stage 2 decentralization. Either proof type can finalize a withdrawal independently, but when both agree, finality drops to as little as one day, far faster than the typical multi-day optimistic rollup wait. Crucially, permissionless ZK proofs can override permissioned TEE proofs if the two conflict, a design Base says meaningfully improves censorship resistance. The upgrade also makes base reth the sole execution client and introduces a new consensus client, phasing out older software. Node operators must migrate to the new stack to stay in sync. For AA and chain abstraction builders, the more important signal is what comes next: Base confirmed its end-of-June upgrade will include native account abstraction, an enshrined token standard and Flashblock Access Lists. The largest L2 by activity moving toward native AA is a meaningful pull on the whole ecosystem. Biconomy Ships Smart Batching SDK for ERC-8211 Biconomy released t
Internal note to the team, we need to improve test coverage and keep shipping, which means we should treat AI as a helper in the workflow, not as a replacement for testing discipline. AI-assisted development changes the shape of our risk. It can produce more code faster, but it also increases the chance that small logic mistakes, brittle selectors, and shallow test cases slip through review. The answer is not to add more manual checking everywhere. The answer is to be more deliberate about what we review, what we automate, and where we let AI help. What changes when AI writes part of the code The first thing that changes is review. When a developer uses AI to draft a feature, a test, or a refactor, the reviewer is no longer only checking intent and style. The reviewer also needs to check whether the generated code matches the product rule, whether it introduced a hidden dependency, and whether it quietly weakened coverage. That does not mean every AI-assisted change deserves extra ceremony. It means our review checklist should shift from "does this look correct" to "what did the model assume, and did we verify those assumptions?" That is especially important for test code, because generated tests often look plausible even when they do not prove much. Coverage should move from volume to signal AI tends to produce more test cases, but more cases are not the same as better coverage. If a generated test suite repeats the same happy path under slightly different names, the team gets a false sense of safety. Coverage should answer a more practical question, where are we most likely to break the user experience, and where will a test actually catch it? For chat and other AI features, prompt-by-prompt manual checks are a trap. They do not scale, and they encourage a habit of eyeballing output instead of verifying behavior. A better pattern is to build assertions around expected properties, create eval sets for representative prompts, and add regression coverage for failure
I built 24 browser-based tools. Here is the complete technical guide for building your own and selling PRO licenses on Gumroad. Architecture: One HTML File + GitHub Pages + Gumroad No frameworks, no backend, no monthly costs. One HTML file on GitHub Pages. Gumroad handles payments. The PRO Flow User hits free limit → PRO modal Buy button → Gumroad popup ( window.open , NOT target=_blank ) Payment → Gumroad postMessage with license key message listener catches key Key verified via Gumroad API ( /v2/licenses/verify ) localStorage saves PRO (in try-catch!) Gotchas From 24 Tools postMessage security: Check d.success && d.purchase , never just d.license_key . I had this bug in 17 files. localStorage: Wrap in try-catch . Uncaught throws crash the whole page. CDN scripts: Always <script defer> . Without it, slow CDN blocks rendering. Gumroad publish: curl returns false every time. Use PowerShell. Buy button: Popup connects the page to Gumroad. Redirect breaks postMessage . Packed 5 templates with everything pre-configured: Browser Tools Starter Kit ($19)