Skip to content
Frontend Feeds
  • Today
  • Archive
  • Sources
  • Categories
    • The Giants6 Sources
    • Multi Author Blogs18 Sources
    • Top Front-end Bloggers25 Sources
    • More Front-end Bloggers77 Sources
    • Browsers, engines, etc.11 Sources
    • Libraries, Frameworks, etc.12 Sources
    • Company/Startup Blogs12 Sources
    • Developer/Designer News4 Sources
    • YouTube Channels13 Sources
    • Podcasts7 Sources

Today

Front-end, in one read.

The latest from the sources worth following, newest first.

Thursday, 12 November 2026

  • Web Tools WeeklyMulti Author Blogsread at source

    Web Tools Weekly Issue #695

    CSS/HTML, Testing, Media Tools

  • DEV CommunityThe Giantsread at source

    87,094 lines of C++ GUI code, in under three minutes

    I wrote a GUI toolkit from scratch — window creation, message loop, GPU rendering, widgets, layout, text and IME, all in one static library. No Qt, no SDL, no GLFW. Then I counted the lines. 87,094. And wrote down where the time actually went. What Zekit is One static library. Downstream projects link a single file. No FreeType install, no Vulkan SDK, no third-party setup. Hand-written window layers. Win32 and X11 directly. No SDL, no GLFW, no Qt. Three render backends. D3D12, Vulkan and OpenGL on Windows; OpenGL (EGL) and Vulkan on Linux. All of them consume the same display list, so the same UI looks the same everywhere. Value-semantic widget tree. Widgets are stack locals. win.AddWidget(btn) hands them over; no new , no delete . Real IME. IMM32 integration, composition drawn in place, candidate window following the caret. The four things that actually cost time 1. The same concept, three APIs, three lifetime models. In OpenGL you can delete a texture whenever you like; the driver synchronizes for you. Vulkan and D3D12 do not. You maintain fences, frame slots and a deferred release queue. "Learning three APIs" really means maintaining three non-equivalent resource lifetimes and making them look like one DrawFrame . 2. Visual consistency is pixel-level, not API-level. SDF anti-aliasing has to fade over exactly one pixel, to match the hardware MSAA transition width. I once wrote three pixels, and every shape in the library went soft. Bandwidth, gradient math and geometry padding are one set of coupled invariants — change one and the other two must follow. 3. Platform cost is a difference set, not a constant. Win32's window layer is 2,146 lines. X11's is 3,370 — 55% larger, not smaller. Twenty EWMH atoms, and missing one makes the window manager misbehave in ways you will never see on your own machine, because your WM happens to be forgiving. 4. The IME. Not D3D12. Where the composition is drawn, which window the candidates follow, when it counts as a commit, where backspace goes. A state machine with nothing to do with the GPU that eats half your debugging time, because the bugs are "sometimes". The ledger Part Lines Win32 window layer 2,146 X11 window layer 3,370 D3D12 / Vulkan / OpenGL 4,823 Software rasterizer 792 FreeType + IME 1,582 Widgets, layout, theme, events ~74,000 Total 87,094 Fewer than 7% of those lines touch the GPU. Honest status Windows 10/11 x64 is primary: D3D12, OpenGL 4.6, Vulkan 1.0+. Linux x64 is supported: EGL OpenGL and Vulkan, X11 only — no Wayland yet. macOS, iOS, Android and HarmonyOS have source in the tree and are not offered as working targets. The layering made them cheap to write; it did not finish them. Build it cmake --preset windows-msvc cmake --build --preset windows-msvc-release Output is x64\Release\Zekit.lib . On Linux, cmake --preset linux-release . #include #include int main ( ) { Kit :: Window win ; Kit :: Button btn ( "OK" ) ; btn . SetSize ( 220 , 60 ) ; btn . SetOnClick ( [ ] { /* ... */ } ) ; win . AddWidget ( btn ) ; win . Show ( ) ; return win . exec ( ) ; } MIT licensed. If you only want a button that clicks, use Qt or Dear ImGui — this breakdown is for people who want to know how the bottom layer actually turns. Z-ze489 / Zekit Self-contained C++20 desktop GUI toolkit for Windows and Linux. One static library: window, D3D12/OpenGL/Vulkan renderer, 80+ widgets, layout, themes, IME. No SDKs to install. Zekit A self-contained C++20 desktop GUI toolkit for Windows and Linux. Window creation, message loop, GPU rendering, widgets, layout, text and IME are all in one static library. Downstream projects link a single file — no FreeType install no Vulkan SDK, no third-party setup. Control Gallery — every widget in the library, in one window. Light and dark themes, switched at run time. Ships in examples/gallery . Highlights Value-semantic widget tree. Widgets are plain values: build them on the stack hand them to the window with win.AddWidget(btn) , done. No new , no delete , no keeping a member alive. Destruction unregisters automatically. GPU rendering, three backends. Windows defaults to D3D12 (auto-falls back to OpenGL 4.6 Core) and can switch to Vulkan 1.0+. Linux runs OpenGL (EGL) or Vulkan All backends share the same widget layer and display list, so the same UI looks the same everywhere. The backend is… View on GitHub

  • DEV CommunityThe Giantsread at source

    Why "npm run build" is not QA for AI-generated frontend code (8 browser traps and 72 UI craft rules)

    AI coding agents are very good at making npm run build go green. They are much worse at noticing that the page they just built is broken in a real browser, or that it looks like every other AI-generated page on the internet. I build and maintain three small open-source tools for this problem, so a disclosure first: everything below is about my own projects, and I wrote this with AI assistance. All three are MIT licensed and free. What a green build actually tells you tsc and npm run build answer one question: does this code compile and bundle? They say nothing about what happens when a browser runs it. In my experience, agent-written frontends fail in two ways that a compiler cannot see. 1. Runtime browser regressions. React hydration mismatches, where the server HTML and the first client render disagree. Horizontal overflow on a 375px wide phone viewport. Touch targets smaller than 44x44px. Text that is readable in light mode and nearly invisible in dark mode. API calls that return a silent 500 while the UI renders an empty state, so nothing looks "broken" in the code. 2. Generic "AI slop" defaults. Purple to indigo gradients, three centered feature cards, cards nested inside cards, arbitrary spacing values that break the scale, hardcoded colors instead of tokens, and marketing copy like "Unleash the power". None of it is a bug. All of it makes the product look interchangeable. The agent says "done" because the only check it ran was the build. So I wanted to give it two more checks that it can run itself, plus a third one for security. ghost-qa: a headless browser that checks what the browser experienced ghost-qa launches headless Playwright Chromium against your running dev server, crawls the internal routes, and records what actually happened. It checks every page at three viewports (Desktop 1440x900, Tablet 768x1024, Mobile 375x812) in both light and dark color schemes. npm run dev npx playwright install chromium # one-time npx -y ghost-qa@latest test http://localhost:3000 The engine is organized as eight traps, each one watching a different failure class: Console and framework runtime: uncaught exceptions, unhandled promise rejections, React hydration mismatches, duplicate key warnings and CSP violations. Network and asset integrity: 5xx and 4xx responses, failed fetches, CORS failures, broken images and oversized assets. Layout and geometry: horizontal overflow (with the offending elements named), overlapping interactive elements, touch targets under 44x44px and zero-size controls. Accessibility and keyboard focus: missing accessible names, images without alt text, inputs without labels, computed contrast ratios and simulated Tab order. Performance: Core Web Vitals estimates (TTFB, FCP, LCP, CLS), slow loads, large payloads and excessive DOM size. Links and interactive integrity: placeholder links, dead anchors and buttons inside forms with no type. SEO and metadata: title, description, canonical, OpenGraph tags and duplicate ids in the live DOM. Theme parity: every page is also rendered under dark and light emulation, and computed contrast is re-evaluated per scheme, so dark-on-dark text gets caught. Each trap starts at 100 and loses points per finding, and the overall result is a QA Health Score with a letter grade. The part that matters for agents is the output: a structured report with exact selectors and bounding boxes, plus a patch prompt the agent can act on. ghost-qa compare before.json after.json then diffs two runs, so the agent can prove a fix worked without introducing regressions. It also runs as an MCP server, so Claude Code, Cursor or Cline can call it as a tool instead of shelling out. Some limits, because I would rather you know them: it is meant for localhost dev servers, its interaction runner only clicks ordinary controls and refuses destructive-looking ones (that is a word list, not magic), it is not a full WCAG audit, and it does not replace your own test suite. unslop: 72 deterministic rules for UI craft The second failure mode is harder to test, because "looks generic" is a taste problem. unslop takes the position that a lot of that taste can be written down as rules and checked deterministically. npx -y unslop-mcp audit . npx -y unslop-mcp refactor-plan . --report UNSLOP-REPORT.md It audits 72 rules across seven pillars: color and contrast, typography, layout and spatial rhythm, surface and elevation, copy, interaction and motion, and theme and token architecture. Every finding has a file:line:column location, and the result is a 0 to 100 craft score with a per-pillar scorecard. You can gate CI or an agent loop with --fail-under 95 . The refactor plan turns findings into concrete replacements, for example from-purple-500 via-pink-500 to-indigo-500 into a surface token, p-[13px] into a spacing token, and transition-all into transition-colors motion-reduce:transition-none . It also installs one of ten built-in design archetypes (or extracts design DNA from CSS or a URL) and exports the tokens as a Tailwind v4 @theme block, a Tailwind v3 config fragment, plain CSS custom properties, or W3C design tokens JSON, so the agent builds on a token contract instead of inventing colors per component. The honest limit: this is static analysis. It checks the source, not the rendered page, and the rules encode my own opinions about craft. A good score is not a good design, which is why the two tools are meant to be used together. vibe-shield: the static security check The third tool covers the part neither of the above looks at. vibe-shield is a static security scanner for AI-written code: server secrets behind NEXT_PUBLIC_ variables, mutation routes without a session check, IDOR shapes, tables without row level security, and poisoned MCP or skill configuration. npx -y @vibefoundry/vibe-shield@latest scan . It is heuristic, so a clean score is not a security guarantee, but it catches the exact shapes agents tend to produce. Putting them together The loop I use with an agent is simple: after it writes a feature, it runs the static checks ( unslop audit , vibe-shield scan ), starts the dev server, runs ghost-qa test , fixes what comes back, and only then reports completion. Each tool exits non-zero on blocking findings, so "done" becomes an exit code instead of an opinion. init for each tool installs the instructions and MCP config for Claude Code, Cursor, Codex, Windsurf, Copilot, Cline and Zed. The repos avivgerz-hue / ghost-qa Autonomous headless browser QA & self-healing verification loop for AI coding agents 👻 ghost-qa Autonomous headless browser QA & self-healing verification loop for coding agents. v2.1.1 — the 8-Trap Deep Browser Inspection Engine: 3 viewports × light/dark, QA Health Score (A+…F), interactive HTML dashboard, and regression diffing. = 20"> ⭐ If this tool helps your AI coding workflow, please give this repository a Star! It helps more developers discover the project. 🧰 The VibeFoundry Agent Suite One command each — star all three and keep the whole suite free & maintained: 🎨 unslop — UI Design DNA & Anti-Slop Engine ( npx -y unslop-mcp@latest init ) 🛡️ vibe-shield — Security Scanner for AI Code ( npx -y @vibefoundry/vibe-shield@latest scan . ) 👻 ghost-qa — Autonomous Headless Browser QA ( npx -y ghost-qa@latest test http://localhost:3000 ) npx -y ghost-qa@latest test http://localhost:3000 Coding agents (Claude Code, Codex, Cursor, Windsurf) write code blind — then declare victory while the actual browser has React hydration errors, broken buttons… View on GitHub avivgerz-hue / unslop Studio-grade UI design systems, Design DNA extractor & Anti-Slop MCP server for AI coding agents (Claude Code, Codex, Cursor, Windsurf). unslop v2.1.1 ⭐ If this tool helps your AI coding workflow, please give this repository a Star! It helps more developers discover the project. VibeFoundry Agent Suite: 🎨 unslop — UI Design DNA & Anti-Slop Engine ( npx -y unslop-mcp@latest init ) · 🛡️ vibe-shield — Security Scanner for AI Code ( npx -y @vibefoundry/vibe-shield@latest scan . ) · 👻 ghost-qa — Autonomous Headless Browser QA ( npx -y ghost-qa@latest test http://localhost:3000 ) npx -y unslop-mcp@latest init Your agent can write the code. unslop gives it a measurable design engineering protocol. unslop is a zero-runtime-dependency UI/UX Design Engineering CLI, native MCP Server, and AI Agent Skill . It audits 72 rules across seven design craft pillars, installs ten studio-grade archetypes, extracts Design DNA, exports four token formats, and turns every finding into an exact, prioritized transformation blueprint for JSX/TSX, HTML, Vue, Svelte, CSS, and Tailwind codebases. Works natively with Claude … View on GitHub avivgerz-hue / vibe-shield 60-rule static security scanner, MCP server & skill poisoning auditor for AI-generated codebases (Claude Code, Codex, Cursor). 🛡️ vibe-shield The security gate for AI-written code. Find exposed secrets, unguarded routes and missing RLS before you ship. ⭐ If this tool helps your AI coding workflow, please give this repository a Star! It helps more developers discover the project. npx -y @vibefoundry/vibe-shield@latest scan . Illustrative two-file scan; fixes are applied manually. Results vary by project. A clean score is not a security guarantee. VibeFoundry Agent Suite 🎨 unslop — UI Design DNA & Anti-Slop Engine · npx -y unslop-mcp@latest init 🛡️ vibe-shield — Security Scanner for AI Code · npx -y @vibefoundry/vibe-shield@latest scan . 👻 ghost-qa — Autonomous Headless Browser QA · npx -y ghost-qa@latest test http://localhost:3000 vibe-shield is a static security scanner plus an Agent Skill that helps Claude Code, Codex, Cursor and Windsurf audit before they say “done” . v2.0.0: eight defensive vectors The v2 catalogue covers client exposure; auth and route protection; database/RLS; AI and… View on GitHub If you try any of them on a real project, I would especially like to hear about false positives. Those are the most useful bug reports I can get.

  • DEV CommunityThe Giantsread at source

    What is a marketing mix model, and does your team need one?

    Your CFO wants to know which marketing spend works. You have a last-touch report you half trust, a "how did you hear about us" field, and buyers who used an AI assistant during their research before they reached your site. None of those answers the budget question on its own. A marketing mix model is built to answer that question. TL;DR An MMM fits weekly spend per channel against an outcome and splits that outcome into baseline and the part media drove. Google's open-source MMM package, Meridian, asks for three years of weekly data for a national model. Teams with less should collect that history first, then run MMM. In 2026 Google's Meridian and the open-source PyMC-Marketing shipped major releases, and both added ways to calibrate with experiments. AI-assistant answers have no spend line, so we think they need their own measurement. What is a marketing mix model? Your marketing mix is everything you spend on to win customers: search ads, LinkedIn ads, events, sponsorships, email. A marketing mix model (MMM) is a statistical method that reads your history and works out how much each of those channels moved a result you care about, such as sign-ups or revenue. AI Digital defines it as " a statistical approach that quantifies how marketing activities and broader business factors influence revenue ." The method is not new: it was born in packaged goods. An MMM works from aggregated totals and never follows a single buyer. As NoGood puts it, " MMM does not track individual users or require personal data. " The model reads totals: how much you spent in each channel each week, and how many sign-ups you got that week. A simple example This example uses made-up numbers. Say you run search ads, LinkedIn ads, and two conferences a year. You have three years of weekly records: spend per channel, and sign-ups per week. In some weeks LinkedIn spend went up. In some weeks search was paused. In two weeks a conference ran. The model asks one question across all those weeks. When spend in a channel rose or fell, how much did sign-ups move, once you account for things that move sign-ups anyway, such as seasonality or a price change? Its answer has three parts: A share of sign-ups would have happened with no marketing at all. That share is the baseline. The rest is incremental, and the model splits it by channel. For each channel, you get its return per dollar and the point where more spend stops paying. With those answers you can test a budget on paper before you spend it. What happens if you move part of the conference budget into search? An MMM lets you " simulate how different budgets would perform before any money is committed ." How MMM differs from attribution Attribution tools follow individual buyers. They record the ad someone clicked and the pages they visited, then give credit to those touchpoints. MMM works from the top down, with totals. NoGood describes the difference this way: " If MMM is our wide angle lens, attribution is our zoom lens on one customer's path. " Because it never tracks people, MMM can weigh offline channels such as sponsorships next to online ones, and it needs no cookies or consent banners . Why MMM is worth a second look now User-level tracking got weaker: since iOS 14.5, Apple requires apps to get permission through App Tracking Transparency before they track a user, and without it the advertising identifier "will be all zeros." The software got cheaper too, because Google, Meta, and PyMC Labs publish MMM packages as open source. That removes the license fee, though staff and time still cost money. Chrome is the exception: Google said it will keep offering users a third-party cookie choice . How a marketing mix model works Under the hood, an MMM is a regression over time: a statistical method that estimates how much each input moves an outcome. Google's Meridian lists its inputs: a KPI (the outcome you measure, such as sign-ups), " media spending per channel and time span ," and control variables, the things that move both your KPI and your media spend, such as competition or Google search volume. The model then estimates three effects at once. Baseline and incremental results, as in the example above. Adstock. An ad keeps working after the week it ran, so the model carries part of each week's effect into later weeks. Saturation. Each extra dollar in a channel buys less than the one before, so the response curve flattens. The output is each channel's contribution and return, plus where more spend stops paying. Dreamdata, a B2B attribution vendor, warns that MMM " reveals correlations but doesn't prove causation ." That is why experiments now sit next to the model. How teams use MMM, and who owns what NoGood frames it this way: MMM sets quarterly budget envelopes and attribution tunes campaigns inside them. Improvado's guide splits the roles like this: Finance and the CFO approve the quarterly budget envelope. Finance and marketing science refresh the model together. Performance marketers make weekly shifts inside the envelope. Incrementality tests settle disputes between the model and attribution. These include geo holdouts and conversion lift studies, which hold back ads from some regions or some people and compare the results. As the marketing leader, you bring the question and the decisions it should change. AI Digital's guide adds a warning: a model never tested against experiments is " an opinion with a confidence interval ." How MMM changes marketing decisions and daily work The budget conversation moves from "which campaign got the last click" to "how much should each channel get next quarter, and where does it saturate." Google lists " Advanced scenario and projection planning " under Meridian-Powered Budgeting in Google Analytics 360. Performance marketers still optimize with attribution, but tests become routine. Meridian can now be tuned with experiment results, such as tests from GeoX, its regional testing tool, which " strictly requires daily time-series data ." Meridian also warns that too little variation in spend hurts national models. We think teams running MMM should plan spend changes as deliberate tests, because flat spend gives the model nothing to learn from. What's new in 2026 Date Development What it changes for you Dec 19, 2024 Meta's Robyn publishes v3.12.0, its last tagged release so far No tagged release in almost two years; the repo is not archived Feb 2, 2026 IAB launches Project Eidos A multi-year push toward MMM results you can compare May 20, 2026 Google says it is bringing Meridian into Google Analytics 360 MMM inside Google Analytics 360; no ship date given Aug 7, 2026 PyMC-Marketing 1.0.0 A stable API after two years of 0.x releases, so analysts can build on it Aug 2026 IAB publishes Measuring Visibility in the AI Era A framework for brand presence in AI answers Sep 2, 2026 Meridian 2.0.0 Your analysts can tune the model with your own experiment results Oct 22 and Nov 9, 2026 PyMC-Marketing 1.3.0 and 1.4.0 More ways to tune the model with lift-test and ROAS results Nov 5, 2026 Meridian 2.2.0 Calibration charts for reviewing the model Google says Meridian has passed one million downloads within 18 months of its debut. That is a vendor claim on an undated page. Meta's README still calls Robyn "experimental." Where MMM is heading Google is moving MMM inside its own analytics. It says predictive signals from Qualified Future Conversions will eventually feed into Meridian , and lists time-varying media effects on its future roadmap . Calibration is also becoming a standard part of the model in both Meridian and PyMC-Marketing. And the industry wants comparable numbers. Project Eidos aims at " a modern, comparable approach to MMM built on standardized, privacy-ready inputs ." The IAB also plans a forthcoming attribution framework . The IAB says that framework will cover attribution as more buyers find products through AI answers. Is your team ready? MMM for B2B and developer tool companies The strongest objection: we are too small and too B2B for MMM, and last-touch plus self-reported attribution is good enough. The objection has two parts. The first, that you lack the data, is largely right. Meridian asks for at least two years of weekly data for geo-level models, three years for national models, and three years minimum with monthly data. Take a single-country company with two years of weekly history. That is 104 data points. In Google's example national model, that is about four data points for each value the model estimates, and Google says: " This sample size is too low to estimate the model reliably ." Experiments have a floor too. GeoX needs at least 10 regions for the simplest test design, and for stratified designs the docs recommend 50 to more than 100. Long sales cycles and small deal counts widen the uncertainty further . Use this readiness check: You have three years of weekly national data, or two years of weekly data by region. Your spend varies from week to week across several channels. You can run experiments with daily data across at least 10 regions. Your offline spend is above 30% of the total, or your sales cycles run over 30 days. This is Improvado's rule of thumb, which also requires at least 100 weeks of history. If you can't tick most of these, the answer is "not yet." The other half of the objection holds up less well. Powered by Search, a B2B SaaS agency, argues that self-reported attribution " assumes that leads are better at remembering your marketing than they may be in reality ," and is of little use taken alone. Pravin Kumar, who works on getting brands into AI answers (answer engine and generative engine optimization), describes a small-team setup that pairs one tracked model with a required "how did you hear about us" field, because tracking alone misses " an AI answer that never sends a referrer ." That field still depends on buyers' memory. What to measure in the meantime: Read tracked attribution and the self-reported field side by side. Log weekly spend per channel and your KPI now, so the history an MMM needs builds up. Run holdout or lift tests wherever your regions and volume allow. Measure AI-assistant answers as their own channel, starting with how much they vary. The channel your MMM cannot credit Forrester reports that 94% of business buyers report using AI during their buying process , from its 2025 survey of nearly 18,000 buyers. We think the next step follows, though no study states it. An MMM credits what has a spend line. A recommendation from ChatGPT or Claude has no spend line, often sends no referrer, and changes from run to run. The IAB notes that " AI platforms do not produce deterministic outputs ." So whatever an assistant's answer does for your pipeline lands in the model's baseline, unnamed. How EkLine measures AI recommendations The free AI report writes 15 questions a buyer would ask an AI assistant about products like yours. It asks each question 10 times on each of ChatGPT, Claude, Perplexity and Gemini, with web search on: 600 answers in all. Ten runs per question show how much answers vary, the kind of benchmark for normal variation that the IAB says to set before acting on period-over-period change. Before, an assistant's influence sat unnamed in your baseline. After, you know for each buyer question whether assistants recommend you. Journeys grades every answer and marks each question "You win," "Split," or "You lose." When you re-run a collection, the report compares each buyer question with the collection's first run , so you see whether your changes moved the answers. Someone on your team starts each run. EkLine measures what assistants say and cite about you. It does not estimate revenue or channel ROI, and it does not feed your MMM. Assistants reach you through public web search and the pages they open, so what you publish is what they can recommend. Before you decide whether to build an MMM, find out what AI assistants tell your buyers today. Get your free AI report ; each organization gets one. FAQ Does MMM work for B2B? It can, with enough history. Meridian asks for three years of weekly data for a national model, and long B2B sales cycles and small deal counts widen the uncertainty. Teams with less should collect that history first. Sources Apple Developer: User Privacy and Data Use Google: Update on Plans for Privacy Sandbox Technologies Google: Google Analytics 360 helps you turn data into decisions Google: The Next Era of Meridian Google: Enhanced budgeting tools in Google Analytics powered by Meridian Meridian changelog on GitHub Meridian: Collect and organize your data Meridian: Amount of data needed Meridian: GeoX FAQs PyMC-Marketing releases on GitHub Robyn repository on GitHub IAB: IAB Announces Project Eidos IAB: Measuring Visibility in the AI Era Forrester: The State Of Business Buying Pravin Kumar: Marketing attribution for a small B2B team Powered by Search: Self-reported attribution Improvado: Multi-Touch Attribution vs Marketing Mix Modeling AI Digital: What is Marketing Mix Modeling (MMM) and How It Works Dreamdata: Marketing Mix Modelling NoGood: Marketing Mix Modeling vs. Attribution EkLine: Get your first AI report EkLine: Journeys EkLine: Track results over time

  • DEV CommunityThe Giantsread at source

    I collected 10,926 sites to get free backlinks. Fifteen links are live.

    Between 20 October and 12 November 2026 I tried to earn backlinks for a small B2B software site without paying for any of them. I kept a log of every site I looked at and why I rejected it. Here is what the log says. The funnel 10,926 domains collected. They came from searches, from "free dofollow backlink" lists, and from looking at where similar products are listed. This is my exclusion list, so I never look at the same site twice. Roughly 260 got a written verdict in my log , with the reason and the page I checked. 15 domains carry a live link today that is followed and sits on a page search engines may index. I re-fetched every one of them on 12 November before writing this. My rule for "live" was strict. The link had to be on a real public page. Its rel attribute could not contain nofollow , ugc or sponsored . The page could not carry noindex . I checked the page source every time, because the directory's own promise was often wrong. Why sites failed The reasons repeat. In rough order of how often I wrote them down: The link is nofollow. Many lists label a site "dofollow" when it is not. One startup directory gave me a followed link on day one and changed it to nofollow ugc three days later. The page is noindex. My profile existed, the link was clean, and the page told search engines to stay away. A newsletter platform's About page and a European tech directory both did this. Free means a link back. The free tier asked for their badge or a footer link on my site. Google's spam policy names this directly: "Excessive link exchanges ('Link to me and I'll link to you') or partner pages exclusively for the sake of cross-linking". The link goes through a redirect such as /go/yoursite , so nothing points at your domain. Paid only , or free with a queue of several months. The form wants a local identity. A US phone format or a street address in one country. I do not have those and I will not invent them. The site is dead. Last entry months ago, or the domain has expired. What a paid press release buys I also looked at paid press release distribution, where prices start around 195 US dollars. One service shows its own sample article on a major business news site. I fetched that sample. Every link to the customer's site was rel="nofollow" , and the page itself carried NOINDEX,NOFOLLOW . Two other samples blocked my request, so I can only speak for the one I saw. For that one, the purchase is a logo for your "as seen on" row. It is not a link that search engines count. Where the 15 came from Nine are listings: software directories, review platforms and one industry buyers guide. One is a conference speaker profile. Five came from writing. A weekly Azure newsletter included two of my articles after I wrote to its editors. One nomination form led to the same article appearing in two newsletters about Microsoft technology. A community blog accepted a post through a pull request. A community aggregator follows my feed. I wrote those articles anyway. The links were a side effect. The link I did not ask for The strongest signal came from a company I had no contact with. Its article lists sources for a point about Copilot data protection, and my article on the same subject is one of them, next to a Microsoft community discussion. Bing reports 38 links from that domain. No directory on my list comes close. What search engines see so far On 12 November I exported the link reports. Google lists 31 linking sites, up from 29 on 19 October. Bing lists 13. Of my 15 live domains, Google's report shows one and Bing's shows three. I do not know yet whether the rest are late or will never be counted. I will export both reports again in a month. What I do now I stopped searching for directories. Each new article goes to the few newsletters and community blogs that take submissions, and I try to put numbers in it that someone else may want to cite. A list of sites cannot do that for you. Drafted with AI assistance, checked against my own log and the live pages, and approved by Kaspars Jurjāns.

  • DEV CommunityThe Giantsread at source

    Metrics for AI-generated code: measure impact, not people

    Metrics for AI-generated code are a touchy subject in many teams right now. Management wants to know whether the licenses pay off. The team senses that something is changing but finds it hard to pin down. And as soon as someone says “dashboard”, the first developers look skeptical, because they suspect that people will end up being compared after all. This question keeps me busy because I understand both sides. Without numbers, all you have is gut feeling, and with AI that feeling is wrong surprisingly often. With the wrong numbers, however, you do more harm than with none. In this article I show you a small set of four metrics that tell you something about the impact of AI on your team, ground rules so that nobody feels watched, and a script that pulls the numbers from GitHub. My article Automation bias: when teams trust AI blindly was about the problem. This one is about making it visible. In short Acceptance rates and lines of code say little about whether AI helps your team. Follow-up defects after the merge, rework in review, review time in risky areas and a short team pulse check are far more telling. The biggest pitfall is evaluating these numbers per person: from that moment on, you only measure how well people hide. What you will learn in this article Why perceived and measured AI impact often diverge Which four metrics for AI-generated code actually mean something Which popular numbers you should ignore How to collect the metrics at team level with the GitHub CLI How to discuss the numbers in a retro without creating distrust Why do you need metrics for AI-generated code? The honest answer: because our gut feeling about AI tools is unreliable. In early 2025, the research organization METR ran a controlled study with 16 experienced open-source developers. They worked on 246 real tasks from their own large repositories, randomly split into “AI allowed” and “AI not allowed”. With AI, they took 19 percent longer on average. At the same time, they estimated afterwards that AI had made them 20 percent faster. Before anyone passes the study around as proof against AI: the authors themselves stress that it is a snapshot of early-2025 tools, in a specific setting, with few participants. Their page now even notes that the results are out of date. My takeaway is a different one. The gap between feeling and measurement was huge. That probably applies to your team as well, just in a direction you don’t know yet. The 2025 DORA report on AI-assisted software development shows a similar pattern from another angle. Around 90 percent of the nearly 5,000 respondents use AI at work, and more than 80 percent feel more productive because of it. According to the report, AI adoption is now positively related to throughput, but still negatively related to delivery stability. DORA therefore describes AI as an amplifier that magnifies an organization’s existing strengths and weaknesses. If your tests are weak and your feedback loops long, AI mainly gets you more changes that blow up later. That is exactly why you need metrics for AI-generated code. Whether the licenses pay off is the smaller question. More important is seeing early whether your team is actually getting faster or just more hectic. Which numbers you should not measure The most convenient numbers come from the tools themselves. For Copilot, for example, GitHub shows active users, the acceptance rate of inline suggestions and lines of code suggested or accepted. These numbers answer one question well: is the tool being used? They say little about its impact. A high acceptance rate can mean that the suggestions are good. It can just as well mean that nobody looks closely anymore, and then we are right in the middle of automation bias. It gets worse when such numbers become targets. Goodhart’s law sums it up: once a measure becomes a target, it stops being a good measure. If you demand that 40 percent of the code be AI-generated, you will get 40 percent AI code. Whether it is any good, you will know less than before. My list of numbers I don’t use to judge the impact of AI: Lines of code , whether written, accepted or deleted. More lines are rarely the goal. Acceptance rate per person. It rewards accepting suggestions uncritically. Number of pull requests per person. It invites people to chop work into artificial pieces. Share of AI code as a target. It measures the path, not the result. The SPACE framework by Nicole Forsgren and colleagues explicitly warns against using activity metrics in isolation to reward or penalize developers. It recommends several metrics from different dimensions, at least one of them from surveys, and reporting only aggregated results at team or group level. The set I am about to show you follows that advice. Four metrics for AI-generated code that mean something The basic idea is simple. Pull requests in which AI played a significant role get a label. Then you compare three metrics between pull requests with and without this label and add a short pulse check in the team. Everything stays at team level, without names. Four metrics, always compared between pull requests with and without the AI label 1. Follow-up defects after the merge How many merged changes have to be reverted or fixed later? This is the team version of the DORA metric “change fail rate”, which measures the share of deployments that need immediate intervention afterwards, such as a rollback or hotfix. To compare with and without AI, you need a link between the defect and its cause. Two conventions make this easy: when you revert, GitHub automatically writes “Reverts owner/repo#42” into the description, and for fixes you agree on the phrase “Follow-up defect of #42”. This metric matters most to me because it measures what DORA describes as the weak spot: more speed, less stability. If it rises clearly for AI pull requests, that is a signal about your tests and reviews, not about the people who use AI. 2. Rework in review What share of pull requests gets “Changes requested” at least once? This number cuts both ways, which is exactly what makes it valuable. If it is clearly higher for AI code, the review is apparently thorough but costs time. If it is conspicuously low for AI code, you should ask whether reviews are still as critical as for handwritten code. So a low number is not automatically good here. 3. Review time by risk zone This is the time from opening to merge, split into normal areas and risk zones such as infrastructure, payments or authentication. You may know the idea of risk zones from my article on the pull request template for AI-generated code . In normal areas, AI code may well move faster. In risk zones I would get suspicious if AI pull requests were suddenly merged faster than the rest, because that is where people are supposed to look more closely. 4. The team pulse check The fourth metric doesn’t come from GitHub but from people’s heads. SPACE recommends at least one perceptual measure, and with AI this is especially important because the workload often shifts: less typing, more reading, checking and doubting. I would ask three anonymous questions once a month, each on a scale from 1 to 5: How confident do you feel when you approve AI-generated code in a review? How much time did AI save you this month after subtracting checking and rework? How well do you understand the code that has recently landed in your area? The third question is my favorite. When understanding of your own code drops, the team pays the bill at the next incident at two in the morning at the latest. How do you measure without people feeling watched? The best metric is worthless if the team distrusts it. People simply stop setting the “ai-assisted” label, and your numbers only measure who is honest. That is why I have a few fixed ground rules, and I discuss them with the team before the first number is collected. Ground rules for team metrics Team level only. The script below doesn’t even read the authors. What isn’t collected can’t be misused. Minimum size. Groups with fewer than five pull requests are not evaluated. Otherwise it is too easy to work out who is meant. The team owns the numbers. They are discussed in the team first, not in management reporting. No targets. The metrics serve as conversation starters, not as goals. Goodhart sends his regards. Honesty is never punished. Whoever sets the AI label helps the team learn. As a leader, you have to model that too. Involve the works council early In Germany there is one more point that many leaders notice too late. Under Section 87 (1) No. 6 of the Works Constitution Act, the works council has a right of co-determination over the introduction and use of technical systems designed to monitor employees’ behavior or performance. As a non-lawyer I can’t judge whether an evaluation script falls under this, and it depends on your agreements. My advice is pragmatic: talk to the works council before you start and show exactly what is collected and what isn’t. If your country has similar rules, the same applies. A script that doesn’t read any names makes that conversation much more relaxed. Step by step: metrics for AI-generated code with the GitHub CLI Now it gets practical. You need no analytics tool and no database. The GitHub CLI exports merged pull requests as JSON, and a small TypeScript script turns them into a table. The example is a fictional online bookshop with the repository acme/bookshop . Prerequisites The GitHub CLI ( gh ), logged in with read access to the repository Node.js 22.18 or newer. From this version on, Node runs TypeScript files directly, without a build step. A few weeks of lead time in which the team sets the label Step 1: Create the label and agree on a convention Create the label once in the repository. Agree in the team to set it when AI wrote a significant part of the change, meaning more than individual completions. There is no perfect definition. What matters more is that everyone interprets it similarly. gh label create "ai-assisted" --repo acme/bookshop --color F97316 --description "AI wrote a significant part of this change" In addition, you agree on the phrase “Follow-up defect of #NUMBER” in the description of every pull request that fixes a defect from an earlier pull request. The script detects reverts automatically. Step 2: Export pull requests After four to eight weeks, you export the merged pull requests. Note that the author field is deliberately missing. gh pr list --repo acme/bookshop --state merged --limit 500 \ --search "merged:>=2026-09-01" \ --json number,title,body,createdAt,mergedAt,labels,reviews,files > prs.json Step 3: The evaluation script The script splits the pull requests into two groups, looks for references to follow-up defects, counts reviews with “Changes requested” and calculates the median time to merge. I use the median instead of the average because otherwise a single pull request that sat around for three weeks distorts everything. Adjust the risk zone paths to your repository. // ai-metrics.mts // Evaluates merged pull requests at team level: with and without the "ai-assisted" label. // Usage: node ai-metrics.mts prs.json import { readFileSync } from "node:fs" ; type Review = { state : string } ; type PullRequest = { number : number ; title : string ; body : string ; createdAt : string ; mergedAt : string | null ; labels : { name : string } [ ] ; reviews : Review [ ] ; files : { path : string } [ ] ; } ; const AI_LABEL = "ai-assisted" ; const RISK_PATHS = [ "infra/" , "src/payment/" , "src/auth/" ] ; // adjust to your repo const MIN_GROUP_SIZE = 5 ; // smaller groups are not evaluated // "Reverts acme/bookshop#42" (GitHub revert) or "Follow-up defect of #42" (team convention) const REFERENCE = / ( ?: Reverts [ \ w . - ] + \ / [ \ w . - ] + # | Follow - up defect of # ) ( \ d + ) / g ; function median ( values : number [ ] ) : number { const s = [ . . . values ] . sort ( ( a , b ) => a - b ) ; const m = Math . floor ( s . length / 2 ) ; return s . length % 2 ? s [ m ] : ( s [ m - 1 ] + s [ m ] ) / 2 ; } function percent ( part : number , whole : number ) : string { return `${Math.round((part / whole) * 100)} %` ; } export function evaluate ( prs : PullRequest [ ] ) : string [ ] { const merged = prs . filter ( ( pr ) => pr . mergedAt ) ; // Which PRs were later reverted or named as the cause of a follow-up defect? const withDefect = new Set number > ( ) ; for ( const pr of merged ) { for ( const match of `${pr.title}\n${pr.body}` . matchAll ( REFERENCE ) ) { withDefect . add ( Number ( match [ 1 ] ) ) ; } } const groups = { "with AI" : merged . filter ( ( pr ) => pr . labels . some ( ( l ) => l . name === AI_LABEL ) ) , "without AI" : merged . filter ( ( pr ) => ! pr . labels . some ( ( l ) => l . name === AI_LABEL ) ) , } ; const rows = [ "| Group | PRs | Follow-up defects | Rework in review | Median to merge (normal) | Median to merge (risk zone) |" , "|---|---|---|---|---|---|" , ] ; for ( const [ name , list ] of Object . entries ( groups ) ) { if ( list . length MIN_GROUP_SIZE ) { rows . push ( `| ${name} | ${list.length} | not enough data | – | – | – |` ) ; continue ; } const defects = list . filter ( ( pr ) => withDefect . has ( pr . number ) ) . length ; const rework = list . filter ( ( pr ) => pr . reviews . some ( ( r ) => r . state === "CHANGES_REQUESTED" ) ) . length ; const hours = ( pr : PullRequest ) => ( Date . parse ( pr . mergedAt as string ) - Date . parse ( pr . createdAt ) ) / 3_600_000 ; const isRisk = ( pr : PullRequest ) => pr . files . some ( ( f ) => RISK_PATHS . some ( ( path ) => f . path . startsWith ( path ) ) ) ; const normal = list . filter ( ( pr ) => ! isRisk ( pr ) ) . map ( hours ) ; const risk = list . filter ( isRisk ) . map ( hours ) ; const time = ( w : number [ ] ) => ( w . length >= MIN_GROUP_SIZE ? `${median(w).toFixed(1)} h` : "not enough data" ) ; rows . push ( `| ${name} | ${list.length} | ${percent(defects, list.length)} | ${percent(rework, list.length)} | ${time(normal)} | ${time(risk)} |` , ) ; } return rows ; } if ( process . argv [ 2 ] ) { const prs = JSON . parse ( readFileSync ( process . argv [ 2 ] , "utf8" ) ) as PullRequest [ ] ; console . log ( evaluate ( prs ) . join ( "\n" ) ) ; } Step 4: Run the evaluation and read the result node ai-metrics.mts prs.json rm prs.json With test data, the output looks like this. The table is Markdown, so you can paste it straight into a retro page or an issue. | Group | PRs | Follow-up defects | Rework in review | Median to merge (normal) | Median to merge (risk zone) | |---|---|---|---|---|---| | with AI | 20 | 5 % | 20 % | 5.0 h | 5.0 h | | without AI | 22 | 5 % | 18 % | 4.0 h | 6.0 h | How do you read this? In this example, follow-up defects and rework are similar in both groups. The risk zone stands out: there, AI pull requests get through faster than the others. That is no proof of sloppy reviews, but it is a good question for the next retro. Common mistakes in the evaluation Too short a period. With 20 pull requests per group, a single revert changes the rate by five percentage points. Compare trends over several months instead of single values. Forgetting the limit. Without --limit , gh pr list returns only 30 entries. Then you only evaluate the last few days. Setting the label after the fact. Someone asked after a revert whether AI was involved answers differently than before. The label belongs in the pull request template. Comparing different kinds of work. If AI is mainly used for tests and docs, you are comparing apples and oranges. That is no reason not to measure, but a reason to interpret with care. Privacy of the JSON file. Titles and descriptions can contain customer names. Delete the export file after the evaluation and keep it out of the repository. How do you discuss the numbers with the team? Numbers alone change nothing. I would hold a retro of about 45 minutes on this topic once a quarter. First, the team spends ten minutes silently looking at the table and the pulse check results. Everyone writes down what surprised them and what they expected. Then you talk about these questions: Where did AI really help us in the last few weeks, with a concrete example? Which follow-up defect could a different test or a different review have prevented? Do the review times in the risk zones match what we set out to do? Are there areas where we should deliberately use less AI? You end with a single experiment for the next quarter, for example a second review for AI code in infrastructure or a new kind of test. Afterwards you compare whether the metric has moved. If you want to record decisions about this, architecture decision records work for team rules too. As a leader, your main job here is to listen and not to look for culprits. If someone in this round says “That was so-and-so’s PR”, that is the moment to repeat the ground rules, kindly but clearly. My take I don’t believe in proving the impact of AI with a single number, whether it speaks for or against AI. The tools change so quickly that every study is history after six months. What remains are the questions: Do we deliver reliably? Do we still understand our code? Are people doing well with it? Four metrics and an honest conversation are enough for that. I would push back on anyone who wants to build rankings from such numbers, even with good intentions. The moment a developer considers leaving off the AI label is the moment your entire measurement system breaks. Trust is not a soft extra here; it is the precondition for the data being right at all. People first applies to metrics too. FAQ How do you measure the productivity of AI tools in software development? Preferably not with a single productivity number. A small set of outcome metrics such as follow-up defects and review rework works better, combined with a regular anonymous survey and evaluated at team level. Is the Copilot acceptance rate a good metric? It shows whether the tool is used and whether the suggestions generally fit. It says nothing about quality and stability, and as a target it rewards accepting suggestions uncritically. Can I evaluate AI metrics per developer? I advise against it because it destroys trust and with it the quality of the data. In Germany, the works council also has co-determination rights over technical systems for monitoring performance or behavior. Clarify this with them beforehand and, if in doubt, with your legal department. How long should I measure before drawing conclusions? At least several weeks, and preferably a quarter. In small teams, individual pull requests shift the rates considerably, so trends over several periods are more meaningful than a single value. Your next step Create the label this week and bring the ground rules to your next retro. Let the team decide which paths count as risk zones. In six weeks you will have enough data for a first table. And I’m curious: which metric do you use today to assess the impact of AI on your team, and how much do you trust it? Feel free to share in the comments. Sources METR: Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity DORA: State of AI-assisted Software Development 2025 Google Cloud Blog: Announcing the 2025 DORA Report DORA: Software delivery performance metrics Forsgren et al.: The SPACE of Developer Productivity (ACM Queue, 2021) GitHub Docs: GitHub Copilot usage metrics GitHub CLI Manual: gh pr list German Works Constitution Act, Section 87 (gesetze-im-internet.de, German) This post was created with AI assistance. 👉 Next step: More for team leads: my cheat sheets put the essentials on one printable page. 📬 Stay updated: New articles on serverless, AI and leading tech teams via RSS, browser push or the weekly newsletter (in German) . Originally published on sascha-ms.de . More articles on serverless, AI in everyday development and leading tech teams: sascha-ms.de/en

  • Hacker News: Show HNLibraries, Frameworks, etc.read at source

    Show HN: Travel Alerts API – travel disruptions alerts from 80 sources

    Comments

  • Hacker News: Show HNLibraries, Frameworks, etc.read at source

    Show HN: I built a calendar app that gives each event its own to-do list

    Comments

  • Hacker News: Show HNLibraries, Frameworks, etc.read at source

    Show HN: Inches TV – Inspiring Moments, 24/7

    Comments

  • Hacker News: Show HNLibraries, Frameworks, etc.read at source

    Show HN: Senku, an AI agent that can control your phone in background

    Comments

  • Hacker News: Show HNLibraries, Frameworks, etc.read at source

    Show HN: Agent-roast – Catches coding agents that weaken tests to get CI green

    Comments

  • Hacker News Front PageThe Giantsread at source

    PostgreSQL 18.7, 17.12, 16.16, 15.20, 14.25, and 19 RC 2 Released

  • Hacker News Front PageThe Giantsread at source

    Abandoned Quake 4 expansion finished by modders and now playable

  • Hacker News Front PageThe Giantsread at source

    Talking Zen 6 with Mike Clark at AMD In-Depth

  • Hacker News Front PageThe Giantsread at source

    Libreagi – Save OSS Models

  • Hacker News Front PageThe Giantsread at source

    Electric Ship Batteries Promise Compact, Cooler Power

  • Flavio CopesMore Front-end Bloggersread at source

    How to try open-weight models through OpenRouter

    Compare open-weight models from JavaScript through OpenRouter, inspect current prices and token usage, and decide what deserves a local download.

  • The Mozilla BlogBrowsers, engines, etc.5 min read

    An open letter to every family’s designated IT support

    Almost every family has one. They’re the only ones who know which remote turns on the TV and which controls the volume and channels. They know what an HDMI cable actually does and where to plug it in. They’ve even fixed multiple phone issues within seconds through a little-known, well-kept secret procedure (turning it off […] The post An open letter to every family’s designated IT support appeared first on The Mozilla Blog .

  • Net NinjaYouTube ChannelsVideoWatch on YouTube

    "Anti-Slop" Designs with Impeccable (a Crash Course) #2 - Critique Current Designs

  • DXDMore Front-end Bloggersread at source

    O design como proposta de valor de uma startup

    A Web Summit como mostra também do papel que o design nas suas mais variadas vertentes pode ter no crescimento do negócio de uma startup. O conteúdo O design como proposta de valor de uma startup aparece primeiro em DXD .

  • Flavio CopesMore Front-end Bloggersread at source

    AWS Emulator: a local AWS for you and your coding agents

    AWS Emulator runs the AWS APIs on your machine, with no account. How to run it on a Mac, and why it's a good test loop for coding agents.

  • Flavio CopesMore Front-end Bloggersread at source

    What's defensible for small builders now that AI labs ship apps

    Anthropic and OpenAI now ship the apps their customers build. What a small builder can still defend: niche data, workflows, trust and distribution.

  • Flavio CopesMore Front-end Bloggersread at source

    Muse Ember vs Claude Haiku 5.5 vs GPT-6 Luna on a real app job

    Three small AI models at the same price, $0.10 and $0.50 per million tokens, tagging 200 blog posts. Accuracy, latency and cost compared, with the script.

  • Smashing MagazineThe Giants15 min read

    Should You Actually Add AI To That? A Four-Question Audit For Product Teams

    An AI feature can save users time on a task, only for them to spend it checking the results. This practical audit helps product teams decide where AI earns its place and what users need to verify its output.

  • SitePointThe Giantsread at source

    7 Best Accounts Receivable (AR) Software Platforms for Automating Invoice-to-Cash

    The best accounts receivable software depends on where your cash leaks. Compare 7 AR platforms for invoice delivery, collections and cash application. Continue reading 7 Best Accounts Receivable (AR) Software Platforms for Automating Invoice-to-Cash on SitePoint .

  • HeyDesignerDeveloper/Designer Newsread at source

    Design is a search problem

    Building interfaces that understand what we want to do, From code to Figma and back, Making a website in 2026.

  • Adam ArgyleTop Front-end Bloggersread at source

    Animation Evolution

    animation? where how why now

Wednesday, 11 November 2026

  • AbduzeedoMulti Author Blogsread at source

    GRKit Adds Film Looks and XPan Crops to Ricoh GR Cameras

    GRKit by Yuexun Jiang adds live film looks, XPan 65:24 crops, halation glow, and GR1s date stamps to Ricoh GR cameras from the SD card. Take the SD card out of a RICOH GR III, GR IIIx, or GR IV runnin...

  • AbduzeedoMulti Author Blogsread at source

    How Studio Dumbar Crafted 3D Footwear Branding for Zellerfeld

    Studio Dumbar/DEPT® builds Zellerfeld’s 3D-printed footwear branding around lattice type, serif contrast, and co-branded parcel tape. Single-material 3D printing strips away almost everything traditio...

  • AbduzeedoMulti Author Blogsread at source

    How DesignStudio Refreshed the DNEG Brand Identity

    DesignStudio rebuilt the DNEG brand identity around motion, with a custom DNEG Script typeface and the line Start with Impossible. The idea is simple to state and hard to fake: a visual effects compan...

  • AbduzeedoMulti Author Blogsread at source

    Web Design: HBO’s The Alabama Solution by tubik studio

    tubik studio structures six years of prison reporting into documentary web design and a 1,377-profile archive for HBO’s The Alabama Solution. Six years of prison reporting anchor thealabamasolution.co...

  • Flavio CopesMore Front-end Bloggersread at source

    How to use the Gemini Decisions API

    The Gemini Decisions API answers yes/no, choice and score questions with probabilities instead of text. Here's how to call it from Node.js and branch on the result.

  • Flavio CopesMore Front-end Bloggersread at source

    What's new in Grok Bot 1.0

    Grok Bot 1.0 adds Team Bots you publish and share, Slack and Microsoft Teams, meetings on Meet and Zoom, shared connectors and reviewed learnings.

  • SitePointThe Giantsread at source

    The Design Workflow Is Broken. Here Is How Vitalii Khomenko Thinks It Should Be Fixed

    Principal Designer Vitalii Khomenko argues the real bottleneck in AI-accelerated product teams isn't engineering anymore, it's the Figma-to-code handoff, and here's his fix. Continue reading The Design Workflow Is Broken. Here Is How Vitalii Khomenko Thinks It Should Be Fixed on SitePoint .

  • Engineering at MetaCompany/Startup Blogs9 min read

    Intelligent Delivery: Making Every Unit of Compute Serve Better Ads

    Ads ranking models are growing toward LLM scale faster than the hardware to run them can keep up. An extra unit of compute has more impact on some ad requests, models, and chips than on others. The challenge is deciding where to allocate it to get the best outcome for the entire system. We built [...] Read More... The post Intelligent Delivery: Making Every Unit of Compute Serve Better Ads appeared first on Engineering at Meta .

  • AbduzeedoMulti Author Blogsread at source

    Bass X Machina: Inside BUCK's New Title Sequence

    BUCK built the Bass X Machina title sequence as a fever dream of propaganda posters, bold silhouettes and fractured red, white and blue. The sequence opens inside Bass's mind. BUCK calls it a fever dr...

  • Go Make ThingsMulti Author Blogs2 min read

    For and against

    Yesterday, good internet friend Baldur Bjarnason shared a series of shorts he made on why he doesn’t use generative AI, and it got me thinking about how much of my career has spent being against things. Early in my career, I was for web performance and accessibility and building cool things. But as JavaScript frameworks became increasingly ubiquitous, we saw the things I was for start to degrade rapidly. Sites got slower and harder to use.

  • Frontend Masters BlogMore Front-end Bloggers11 min read

    Creating Diagrams and Graphs Using Modern CSS

    The final part of the connectors series: dynamic connections that pick the closest sides, static connections that always leave from the same edge, and some bendy, zig-zag, and spring connectors, all built with anchor positioning, border-shape, shape(), and if().

  • AbduzeedoMulti Author Blogsread at source

    Better Half’s Arcade Graphic Design for Brex’s Fiscal Mania

    Better Half / Cult Holdings builds a bullet-hell simulator and acrylic cabinet in its arcade graphic design for Brex’s Fiscal Mania. Destroying an unpaid invoice in Fiscal Mania would count as financi...

  • SitePointThe Giantsread at source

    Top 6 AI Text to Speech Tools in 2026: Features, Strengths and Limits

    null Continue reading Top 6 AI Text to Speech Tools in 2026: Features, Strengths and Limits on SitePoint .

  • SitePointThe Giantsread at source

    5 Best AI Anime Video Generators in 2026, and Are AI Anime Videos Worth Making?

    null Continue reading 5 Best AI Anime Video Generators in 2026, and Are AI Anime Videos Worth Making? on SitePoint .

  • SitePointThe Giantsread at source

    How to Use IP Geolocation to Stop Bots and Fraud (Without Hurting UX)

    null Continue reading How to Use IP Geolocation to Stop Bots and Fraud (Without Hurting UX) on SitePoint .

  • Dan DaviesMore Front-end Bloggers9 min read

    Media Officer Role Breakdown

    The work behind the posts in Welsh football I do the vast majority of the things listed below as part of my role at Holywell Town. Social media, graphics, photography, video, interviews, website updates and the requests that come in around them. Individually, some might seem like small jobs. Put them together over a week […]

  • CSS WizardryTop Front-end Bloggersread at source

    Web-Perf Wednesday 017 – Prebid Stops Re-downloading Its Manifest

    Prebid 11.48 makes its jsDelivr manifest cacheable, removing 67 KB of repeat downloads for sites that use the web bundler.

  • SyntaxPodcastsAudioListen

    1055: What the hell is going on with GitHub?

    Scott and Wes sit down with GitHub’s Kyle Daigle to ask what the hell is going on with GitHub: the downtime, the agent traffic spike, and the infrastructure overhaul decoupling storage from compute. Plus Copilot Fusion’s cascade and critique modes, npm supply chain security, and…

  • Jeffrey Zeldman PresentsMore Front-end Bloggersread at source

    Better Day, Sunshine

    I haven’t driven a car in decades (New Yorker). But from my pre-New York life, I remember how sun glare could turn a pleasant road trip into a blinding gauntlet. Enter “Sunward,” a uniquely specific demo app my Automattic colleague Peter Westwood just whipped up in Spacefast. Spacefast – for your next idea Sunward – […] The post Better Day, Sunshine appeared first on Jeffrey Zeldman Presents .

  • Flavio CopesMore Front-end Bloggersread at source

    Letting an agent edit my videos

    How a coding agent edits my Borumi recordings through its MCP server: pause cuts, a word-by-word caption check, and the two checks I keep for myself.

  • Flavio CopesMore Front-end Bloggersread at source

    Why I replaced an MCP server with a CLI

    My Things MCP server made macOS ask for permission on every agent session. I replaced its 22 tools with a 598-line CLI and a skill, and here's what changed.

  • Net NinjaYouTube ChannelsVideoWatch on YouTube

    "Anti-Slop" Designs with Impeccable (a Crash Course) #1 - Getting Started

  • AbduzeedoMulti Author Blogsread at source

    Graphic Design: Adobe MAX 2026 Brings Play Back to the Canvas

    At Adobe MAX 2026 in Miami Beach, Adobe brought genuine joy back to graphic design with local Model Context Protocol integrations and playful tools. Design is supposed to feel good, but for the past t...

  • CSS Articles by Temani AfifMore Front-end Bloggersread at source

    Creating Diagrams and Graphs Using Modern CSS

    Creating Diagrams and Graphs Using Modern CSS Read the full article online

  • Frontend FocusMulti Author Blogsread at source

    Responsive design is more than resizing a window

    🚀 Frontend Focus #​766 — November 11, 2026 | Read on the web Beyond the Viewport: Introducing Site Seeing — Making a design responsive means tackling more than just resizing, with real users often having on-screen keyboards, split views, docked DevTools, and other things open, or even using oddly sized in-app browsers. Ahmad's new, free browser-based tool is designed to preview your layouts in these awkward contexts. Ahmad Shadeed Run AI Coding Models on Your Own Machine — Local models are now good enough for everyday coding. Learn to run them on your own Mac or GPU, wire them into your editor and terminal agents, and keep your code private with no per-token bill. Master.dev sponsor 🤖 Modern Web Guidance 1.0: Web Expertise for AI Agents — Coding agents can write good code, but tend to fall behind on Web standards and best practices. Chrome's skills for steering agents toward modern, Baseline-aware HTML/CSS are now stable, and it's not just Google: Lea Verou, Patrick Brosset (Edge), and Jake Archibald (Firefox) are among the project's owners. Philip Walton (Google) The Web is More Than Enough — An encouraging reminder of the immense power of the Web platform and how advanced use of WebAssembly, Web Crypto, WebGL, and Web Audio is increasingly within the reach of developers to build apps you'd once never have imagined in the browser. Paul Ford ⚡️ IN BRIEF 🗳️ The State of JS survey for 2026 is open now and seeking responses . 🦊 Firefox 160 is now stable. On-device speech recognition via the Web Speech API arrives on desktop, and you can experiment with blocking="render" and lazy loading for video and audio behind flags. ♿ GitHub now recognizes an ACCESSIBILITY.md file and surfaces it on a repository's overview page. 🦓 Zigzag is a new lightweight browser for macOS , coming in at just 18MB. 📙 Articles, Opinions & Tutorials Computing with CSS Layout — How much can CSS 'compute' on its own? Leaning on the behavior of CSS grid, flexbox, and more, this interactive piece shows how to read CSS's 'calculations' back as numbers and put them to practical use, including drawing animated charts. Agustin Capeletto System Colors Need to Work Together — You might expect paired CSS system colors like HighlightText and Highlight to be readable together, but in Chrome on Android's dark mode they manage a contrast ratio of only 1.98:1. Aaron's cross-browser study shows which pairs hold up. Aaron Gustafson How to Build Your Own Automated Debugging Workflow — Connect your coding agent to Sentry and turn errors into fix PRs. See the guides and recipes in the resource hub. Sentry sponsor Is 'Using Declarations Just Once' Still Effective in CSS? — This classic optimization technique merges repeated declarations under one grouped selector. Jens built a tool to test it on 30 real sites and found it can still cut uncompressed file size, if applied selectively. Jens Oliver Meiert Local Visual Regression Testing for Agents with Playwright — A look at using Playwright's toHaveScreenshot matcher to give coding agents a consistent local visual-feedback loop. Paolo Ricciuti Building Interfaces That Understand What Users Want to Do — A look at using small AI 'decision models' to pick from options you define, including via Chrome's experimental, on-device Decisions API. Agustin Barrientos CSS-Tricks, Version 20 — Now under new ownership, the site is getting JavaScript cleanup, a Sass reorganization, and more, which Geoff explains in detail. Geoff Graham A Groundbreaking Upgrade to SVG is Approaching: Linked Parameters are Almost Here Roman Komarov Making Immersive LLM Chat Experiences More Accessible Eric Bailey Re-Implementing :nth-child() with Modern CSS Temani Afif 🧰 Tools, Code & Resources Britecharts 3.0: Ready-Made, Accessible D3 Charts — A long-awaited major release for this library of reusable D3 charts makes them accessible by default, with screen reader data tables and keyboard navigation. Also adds dark mode, TypeScript types, and a treemap. The docs are really good. Marcos Iglesias The “Export CSV” Button Shouldn’t Time Out — Exports scan every row in the range and slow as data grows. TimescaleDB keeps them fast. $1000 credit on Tiger Cloud . Tiger Data (creators of TimescaleDB) sponsor 🎨 This Hue Shall Pass: A Contrast Checker That Fixes Failing Color Pairs — Paste in a palette to get a grid of every foreground and background pairing, graded against WCAG AA or AAA. It doesn't just flag failures, you can also nudge near-misses into passing while keeping the hue intact. More background here . Clearleft Liquid Glass Forge: Refraction Behind Native HTML Controls — An experimental WebGL2 and CPU rendering engine for glass refraction, a la Apple's Liquid Glass. You can see a demo here . Nami Poursafargholi 🔡 Tinkerfont: A Font Inspection and Switching Tool for Chrome & Firefox — Install this extension and you get a quick way to inspect fonts on the current page (and their properties), and try alternative fonts directly on the page. Mighil BagUI: Components & Blocks for Building SaaS Landing Pages — A free collection that includes clean, customizable marketing pages, app pages, blocks, and templates for React and shadcn/ui users. Source code . Anelka Bagalane Master CSS 2.0: A Markup-Driven CSS Language — A utility-class framework where one class can carry a value, selector and condition (e.g. fg-blue-70:hover@sm ). v2 adds design tokens defined in your own CSS, a wide-gamut color palette, and linting and editor tooling. Aoyue Design 📰 Classifieds 🔁 Your agent checks web work with a refresh. On mobile it needs a device. Expo Simulators gives it one in the cloud. 📅 Booking forms without a backend : Real availability, live totals and deposits via your own Stripe or PayPal. CraftForms, from €6/month . ✍️ Foxit : Still redirecting users to a signing portal? 6 eSignature APIs compared on embedded signing, pricing and integration effort. 🛑 Finally, if you want to keep the bots out … A Blunt Banhammer Blocks Basic Bots Ballistically — Terence Eden's site was plagued by bots using up his bandwidth, so he built an interesting honeypot that lures the robots.txt -ignoring bots in and hands out a ban. It works, with an almost 90% drop in bandwidth used, but there are some tradeoffs. If you're happy to lean on the cloud for protection, Nick Gray recounts his year of fighting scrapers with Cloudflare , including his firewall rules and failed experiments. Meanwhile, with a more… 'creative' approach, Utku Sen filled a test site's code with taboo phrases and found AI agents refused to touch it . This may be more useful if you want to prevent casual reverse engineering/vulnerability hunting, though. Finally, even if you welcome crawlers, they can make your analytics misleading. Hugo Attal looked into his server logs and found 90% of his 'human' visitors were bots . Till next time…

  • Lea Verou’s blogTop Front-end Bloggers5 min read

    Candidate Statement for the 2026 W3C TAG Election

    Group photo of the W3C TAG in July 2022 with me to the left of Sir Tim Berners-Lee (inventor of the Web and TAG chair emeritus). Photo credit: Dan Appelquist I had the great honor of being elected to the TAG by the W3C membership in 2020 and again in 2022 , serving two terms…

  • Twilio BlogMulti Author Blogsread at source

    PHP2Shell. What is it and What Do You Need to Do?

    You don't need to be a PHP developer or a systems administrator to have heard about the PHP2Shell exploit. In this post, learn what it is and what you need to do going forward.

  • Twilio BlogMulti Author Blogsread at source

    7 questions to ask a customer engagement platform before you commit

    You rarely find lock-in during evaluation. It's usually at renewal. We recommend these 7 questions—they surface exit costs while you still have leverage.

  • Twilio BlogMulti Author Blogsread at source

    Transitioning Your Communications: How to Keep Customer Messages Flowing Seamlessly

    Learn how to transition your messaging workflows from Tyntec to Twilio without interruption while maintaining data privacy, WhatsApp reputation, and more.

Tuesday, 10 November 2026

  • AbduzeedoMulti Author Blogsread at source

    Soft Labor: Tactile SVG Web Design by Other Means

    Other Means pairs fuzzy SVG typography with hover-triggered focus in its editorial web design for Soft Labor, featured on Hover States. Landing on Soft Labor, the cultural research publication written...

  • Mux BlogCompany/Startup Blogs5 min read

    How a designer learned to unsee Will Smith eating spaghetti

    How Mux’s Creative Director designed and built a custom Video.js v10 skin himself, using Figma to design, Claude Code to build, and the browser to review.

  • SitePointThe Giantsread at source

    How to Improve Email Deliverability Rates

    null Continue reading How to Improve Email Deliverability Rates on SitePoint .

  • Adrian RoselliMore Front-end Bloggers4 min read

    My Interop 2027 Picks

    Interop 2027 is gathering votes and the deadline is 19 November 2026. For the second year now, Firefox made a page to let you rank your Interop 2027 choices. Which I’ve now done. I narrowed it down to fifteen, though getting there was oddly difficult. It seems the top three…

See everything from the last 30 days →

Articles belong to their publishers. This site only collects what their feeds provide.

Updated 12 November 2026 at 15:53