Today
Front-end, in one read.
The latest from the sources worth following, newest first.
DEV CommunityThe Giantsread at source
Make your n8n workflows prove they did their job: six patterns for silent failures
A green execution in n8n means the nodes ran. It does not mean any work happened. Three failure shapes stay perfectly green: the source returned zero rows, every row got filtered out somewhere in the middle, or the workflow fired twice and sent the same message twice. Nobody clicks anything in a scheduled workflow, so nobody notices until a customer does. I maintain a pack of seven n8n workflows for salons and clinics. Reminder bands, waitlist backfill, fee recovery, a weekly KPI digest. Six of them message a real customer's phone on a schedule, so a silent failure is not an inconvenience, it is a missed appointment or a double message. These are the six patterns that came out of hardening them. They are small, they cost nothing, and each one turns one silent failure into a visible row. 1. Validate rows where they enter, and carry the reason The first Code node in most of my workflows does not transform anything. It validates. Every row gets two extra fields, row_valid and row_error , and the error says exactly what is wrong: const items = $input . all (); const out = []; for ( const item of items ) { const r = item . json ; let rowError = null ; if ( ! r . appointment_id ) rowError = ' appointment_id missing ' ; else if ( ! r . starts_at || isNaN ( new Date ( r . starts_at ). getTime ())) rowError = ' starts_at not parseable ' ; else if ( r . revenue_eur !== undefined && isNaN ( Number ( r . revenue_eur ))) rowError = ' revenue_eur not numeric ' ; out . push ({ json : { ... r , row_valid : ! rowError , row_error : rowError } }); } return out ; The next node is an IF on row_valid . Valid rows continue. Invalid rows go to a dedicated log node that emits {error, appointment_id, reason, seen_at} and, in production, writes to an errors sheet. The point is the reason. "6 rows rejected" teaches you nothing at 2 AM. "starts_at not parseable on APT-2002" fixes itself. 2. Zero items stops an IF chain without telling you An IF node evaluates per item. If the node before it returns zero items, there is nothing to evaluate, and the flow just stops there. Green. No branch taken, no error, no output. If your source is a sheet somebody renamed, this is how your automation dies for a week. The fix is a sentinel. My digest workflow's prepare node ends with: if ( out . length === 0 ) { out . push ({ json : { empty_week : true , row_valid : true } }); } return out ; Now the empty case is a real item that flows into real branches instead of evaporating. 3. "Nothing this week" is a message, not an absence Once the sentinel exists, give it its own branch. My weekly digest has a Digest: empty week node that skips the aggregation entirely and sends the owner one honest line: no completed appointments found this week, check that the source is filled. No ratios are computed, so no division by zero, and the owner learns the pipeline is alive precisely because it said "nothing". That is the heartbeat idea. A weekly report that only exists when there is data teaches you nothing about the weeks when the data quietly stopped. A report that always arrives, even to say "empty", proves the whole chain ran. The same workflow guards this with a once-per-week send log, so the heartbeat itself cannot double-fire. 4. A send log in staticData, keyed by the thing you want once Double sends come from double triggers: a manual rerun, a webhook retry, two overlapping schedules. The guard is a log in workflow staticData, keyed by a natural key, checked before anything is sent: // Once-per-key send log, in workflow staticData. const staticData = $getWorkflowStaticData ( ' global ' ); staticData . sendLog = staticData . sendLog || {}; const KEEP_MS = 8 * 7 * 24 * 3600 * 1000 ; // keep 8 weeks of keys const out = []; for ( const item of $input . all ()) { const key = item . json . appointment_id + ' : ' + item . json . stage ; const alreadySent = staticData . sendLog [ key ] !== undefined ; if ( ! alreadySent ) staticData . sendLog [ key ] = Date . now (); out . push ({ json : { ... item . json , send_key : key , already_sent : alreadySent } }); } for ( const k of Object . keys ( staticData . sendLog )) { if ( Date . now () - staticData . sendLog [ k ] > KEEP_MS ) delete staticData . sendLog [ k ]; } return out ; Then an IF on already_sent splits fresh from repeated. Two details matter. Key it on the natural identity, appointment_id plus stage in my reminders, the plain week in the digest, the normalized phone number in booking intake, never the row position. And prune it, or the log grows forever. My intake workflow uses the same pattern as a 30-minute duplicate guard: a repeated POST from a double-clicked form gets the same 200 answer as the first one, marked duplicate_ignored , instead of a second booking. 5. Skip arms write rows too Every filter branch deserves a terminal that says what happened. Rows outside the send window in my rescue workflow land in a Skip (not due) node that emits {skipped: true, appointment_id, minutes_until, skipped_at} . In production that feeds a log, so at any moment you can count how many rows flowed, how many were skipped and why, and how many were sent. The failure mode this kills is specific and common: a window gate that is too narrow silently filters everything, the workflow stays green, and the only symptom is that nobody got messaged. With skip rows, that condition shows up as a one-glance count. 6. Reply with the right status code If a webhook workflow answers errors with HTTP 200 and an error message in the body, every caller learns to ignore failures. My intake and reply workflows each carry a Respond invalid node wired to a real 422, with the field-level reasons in the body. The caller's own monitoring sees the failure. The errors also land in a rejected-request log first, so a form that keeps sending one broken field is visible on my side too, not just the caller's. Test the gates both ways The last pattern is a test habit, not a node. Gate logic fails in the direction your tests never look at. The worst bug my first harness missed: a send-window IF built by cloning an existing condition, so both bounds ended up gte . gte 20 and gte 30 together let everything through, and every row escalated. The harness fed hours_ago directly, so it never exercised the arithmetic or the operators. The fix in my builders and tests: push one real timestamp, three hours old, through the prepare node and assert the result is about 3.0 assert window operators literally, gte on the low bound and lte on the high leak checks both ways: the row that must be filtered never appears past the gate, and the row that must pass does Feed gates real time values, never precomputed ones, or the test skips exactly the line that converts them. Where these ship All six patterns run in every workflow of the appointment pack I sell (€29, Afspraakpack for n8n ): validation gates with Dutch error logs, empty-week heartbeats, keyed send logs, skip arms, 422 responders, and the test harnesses that leak-check both directions. The reminders flagship is here , the weekly digest that puts the heartbeat idea into a Monday report is here , and the companion piece on measuring what your AI workflows cost, with its ledger pattern, is here . The free calculators for the scheduling side live at no-show cost , waitlist fill-rate and AI workflow cost . A green run is a claim. These patterns are how the workflow backs it up.
DEV CommunityThe Giantsread at source
Publishing a docs site with Thally in an afternoon: what worked, what didn't
I needed a small documentation site for a workflow I know well: building and debugging subgraphs on The Graph. I used Thally , an open-source docs engine with a managed host, and the whole thing took a bit under two hours including the detours. This is the path I would take if I had to do it again, with the detours called out so you can skip them. The result is live at yashpersonal.thally.app and the source is at github.com/yash251/yashpersonaldocs . What Thally is, in one paragraph Thally is a Next.js docs framework. Pages are MDX files in src/content/ , navigation is one JSON file, and branding is one TypeScript file. The same source renders HTML for people and Markdown, llms.txt , and a read-only MCP endpoint for AI tools, without any extra configuration. Thally Cloud hosts the site, builds on every push to main , and gives you a *.thally.app address. The free tier allows one managed site and needs no card. Prerequisites A GitHub account. Thally creates the docs repository for you and needs to install a GitHub App on your account. Node.js 20 or newer, for running checks locally. You can skip this and edit on GitHub, but you will want the local preview. Something to document. Pick one workflow you can explain end to end. I chose "deploy a subgraph and debug it when it fails" because I have answered that question hundreds of times in support. Step 1: Create the site in Thally Cloud Sign in at app.thally.io with GitHub. The first sign-in starts a 7-day trial of the paid tier; it drops to the free tier afterwards and your site stays up. Select Create a site . Enter a name, an optional description, and the thally.app subdomain you want. Thally checks availability inline. On Where do your docs live? , choose Create a new docs repository . Detour 1: don't use "Import from a docs URL". The wizard offers to import an existing public docs site by URL. I pointed it at thegraph.com/docs/en/ out of curiosity. It reported "0 pages imported; 14 pages failed" and offered no per-page reason beyond "contact support". That site is a client-rendered Next.js app behind Cloudflare, so a crawler gets empty shells. Importing someone else's docs was never the right move for this exercise anyway, but the error message would not have helped me if it had been. Install the Thally Labs GitHub App when prompted. It asks for All repositories with read and write access to administration, code, pull requests, and workflows. Detour 2: that scope is broader than you want. Thally needs administration access to create the repo, and GitHub only lets an App reach a repo it creates if it was installed on all repositories. Install it, and then once the site is live, go to GitHub Settings > Applications > Thally Labs > Configure and switch to Only select repositories with just the docs repo. Thally keeps working because that is the only repo it touches. Skip Product sources and Knowledge surfaces . Both are for Thally's change-tracking feature and are not needed for a first site. On Ready to publish , check the repo name. Mine was yash251/yashpersonaldocs . Select Publish site . Detour 3: the repo is created private, and you cannot change that here. The review screen shows "New repository from the Thally template · private" with an Edit button, but Edit restarts the repository step instead of offering a visibility toggle. I published anyway and flipped it afterwards: gh repo edit yash251/yashpersonaldocs --visibility public --accept-visibility-change-consequences The first deployment took a few minutes from pressing Publish to the template site responding at the thally.app address. Step 2: Clone and look around gh repo clone yash251/yashpersonaldocs cd yashpersonaldocs npm install npx thally dev The dev server runs on port 3040 and prints the local /llms.txt and /api/mcp endpoints. The files you will actually edit: File What it controls src/content/*.mdx Pages. Frontmatter needs title and description . docs.json Tabs, sidebar groups, page order, navbar button. src/data/site.ts Site name, description, repo URL, header links, brand colours. Everything else in the repo is the Thally runtime, synced in as a pinned snapshot. Leave it alone; thally starter update manages it. The template ships with example pages (components, customisation, an API reference tab wired to an openapi.yaml , three Thally guides). I deleted all of them. A docs site for one tool does not need a tab explaining Thally. Step 3: Decide the shape before writing I kept it to three pages plus the changelog: Introduction , home layout: what a subgraph is, who the site is for, two cards pointing at the other pages. Quickstart : install the Graph CLI, create a subgraph in Subgraph Studio, scaffold with graph init , build, deploy, and verify with a query. One concrete contract (Gravity on mainnet) so the steps are reproducible and the result is checkable. Guide: Debug a failed subgraph : how to query the index node for status, a table mapping error messages to causes, a fix for each, and a troubleshooting accordion for the cases that look like failures but are not. The quickstart ends by linking to the guide. The guide assumes the quickstart. That is the whole journey. Step 4: Write the content One thing about writing MDX for Thally that is worth knowing up front. The components are good and you do not need many. / for sequences, / for npm-vs-yarn, for the thing that will bite people, for detail most readers can skip, on the home page. Plain Markdown tables render well and I used them for prompt-to-answer mappings and error-to-cause lookups. The icon names on are Lucide names ( rocket , bug , book-open ). Here is the navigation for the finished site: { "navbar" : { "primary" : { "label" : "Deploy your first subgraph" , "href" : "/quickstart" } }, "tabs" : [ { "tab" : "Get started" , "groups" : [{ "group" : "Get started" , "pages" : [ "introduction" , "quickstart" ] }] }, { "tab" : "Guides" , "groups" : [{ "group" : "Operate" , "pages" : [ "guides/debug-a-failed-subgraph" ] }] }, { "tab" : "Changelog" , "href" : "/changelog" } ] } And the only part of src/data/site.ts that matters: export const siteConfig : SiteConfig = { ... templateSiteConfig , name : " Subgraph Handbook " , description : " A practical guide to building, deploying, and debugging subgraphs on The Graph. " , repoUrl : " https://github.com/yash251/yashpersonaldocs " , links : [ { label : " Quickstart " , href : " /quickstart " }, { label : " Debug a failed subgraph " , href : " /guides/debug-a-failed-subgraph " }, { label : " GitHub " , href : " https://github.com/yash251/yashpersonaldocs " }, { label : " Changelog " , href : " /changelog " }, ], }; Step 5: Check before you push npx thally check npm run build thally check lints frontmatter, validates every link and every page referenced from docs.json , and scores the site for AI readability. It caught nothing on my content, which I take as a sign the rules are sensible rather than that I am perfect. npm run build is the real test; an MDX syntax error only shows up here. While the dev server is running, curl localhost:3040/api/agent-readiness returns a scored JSON report. Mine said 98 out of 100, with the one deduction being a changelog description under 50 characters. I fixed it. That report is a nice touch: it tells you exactly which page and why. Step 6: Publish git add -A git commit -m "docs: replace template with Subgraph Handbook" git push origin main That is the whole publishing step. Thally Cloud builds on push to main , and the dashboard's Deployments page shows the build. Confirm the live site before you call it done; a successful push is not a successful deploy. Detour 4: the dashboard name wins. I set name: "Subgraph Handbook" in src/data/site.ts , and that is what my local build showed. The live site showed "yashpersonal", the name I typed into the wizard. Thally Cloud injects the dashboard's site name and description at build time over whatever is in the repo, and nothing in the file or the docs says so. The comment above the block reads "Managed by Thally Cloud onboarding", which in hindsight is the hint. Fix it in Site settings in the dashboard, not in Git. Detour 5: Renovate. Shortly after the repo was created, a bot opened a "Configure Renovate" pull request. It comes with the template. It is harmless, but if you are watching CI for your own commit it is confusing to see a run against a branch you did not push. What I'd tell a colleague Budget 15 minutes for the wizard and GitHub App, 10 minutes to delete the template content, and the rest for writing. The tool gets out of the way quickly. Write the quickstart against one real, verifiable example. "Replace with your contract" is not a quickstart. Run npm run build locally before every push. The content check is fast but it is not a compile. Narrow the GitHub App scope as soon as the site is live. Keep the page count low. The template invites you to fill tabs; resist.
DEV CommunityThe Giantsread at source
SlothMind AI
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady What I Built I built SlothMind AI , a privacy-first productivity hub designed for the "Slow and Steady" challenge. It automates tedious, repetitive daily tasks using open-source AI models running completely inside the browser via WebAssembly ( @xenova/transformers ). Key features include: 💬 Chat & Email Tidier: Summarizes long, chaotic group chats or email threads into a 2-line executive overview and action checklist. 🗂️ Lazy Note & File Organizer: Instantly cleans up and categorizes messy notes into structured Markdown. 🧊 Fridge-to-Recipe Generator: Turns leftover ingredients into fast, effortless recipe ideas. 🛏️ Wind-Down Companion: Generates calming bedtime stories and ambient soundscapes offline. Because it runs 100% locally in the browser need nothing. Demo https://myapp31.lovable.app How I Built It Tech Stack: HTML5, Tailwind CSS, JavaScript (ES6+), Lucide Icons AI Framework: @xenova/transformers (Transformers.js) running in the browser via WebAssembly (ONNX Runtime) Deployment: GitHub Pages / Vercel Development Process Local-First Architecture: The entire app runs directly in the client's browser. It uses WebAssembly to execute quantized open-source AI models without sending data to any external server. UI & UX: Designed with a dark glassmorphism theme using Tailwind CSS. Built for maximum sloth-like convenience, featuring pre-loaded sample data so users can test every feature in a single click. Execution Pipeline: Text processing tasks (chat summarizing, file tidying, recipe matching) are executed instantly using light, browser-compatible open-weight models. Outputs are structured automatically into actionable lists and Markdown cards with zero manual sorting required. ## Why Does Open Innovation Matter? Running open-source AI locally in the browser provides total data privacy because personal messages and notes never leave the user's device. It eliminates expensive API fees, runs completely free forever, and functions seamlessly without an internet connection while avoiding vendor lock-in.
DEV CommunityThe Giantsread at source
uv vs pip vs Poetry: Which Python Package Manager
Originally published on DevToolHub . uv replaces pip, pip-tools, pipx, Poetry, pyenv, twine, and virtualenv with one Rust binary — Poetry replaces pip and virtualenv with its own resolver and lockfile, but keeps you inside a single tool's opinions about project structure. pip, on its own, does neither: no lockfile, no virtual environment management, just package installation. Picking between them is really a question of how much you want one tool to own, not which one is "faster" — though uv, on its own warm-cache benchmark, is up to 10-100x faster. What Each Tool Actually Replaces pip (currently 26.2.2) installs packages. That's the whole scope — it doesn't manage virtual environments, doesn't lock dependency versions on its own, and doesn't install Python itself. Poetry (currently 2.5.1) bundles a dependency resolver, a lockfile ( poetry.lock ), and virtual environment management into one tool. Since Poetry 2.0, it supports the standard PEP 621 [project] table in pyproject.toml directly — before 2.0, you had to declare dependencies in Poetry's own [tool.poetry.dependencies] section, which a lot of older comparisons still get wrong. uv goes further: it explicitly markets itself as a replacement for pip, pip-tools, pipx, poetry, pyenv, twine, and virtualenv — one binary instead of five-plus tools. It manages Python interpreter installs too. Lockfiles: uv.lock vs poetry.lock vs Nothing pip has no native lockfile. pip freeze > requirements.txt is the closest equivalent, and it's not the same thing — it captures what's currently installed, not a resolved, reproducible dependency graph with hashes. Poetry's poetry.lock is a real lockfile: resolved versions, hashes, and a reproducible install across machines. The tradeoff is resolution speed — with large or loosely-pinned dependency sets, resolution can take time to find a valid solution because of incomplete metadata on PyPI. uv's uv.lock does the same job, generated by uv's own resolver. uv sync --locked fails the install outright if the lockfile and pyproject.toml have drifted. The Speed Numbers You Can Actually Trust uv's own documentation claims 10-100x faster installs than pip, benchmarked on a warm-cache install of Trio's dependency set. That number is real for what it measures, but it's a best-case benchmark, not what a typical CI run sees. A more honest framing: uv's GitHub repository has about 91,000 stars against Poetry's about 34,300 as of this writing — a real adoption signal, and one that reflects nearly three years of teams migrating off both pip-based workflows and Poetry specifically. Project Structure: How Much Does Each Tool Want to Own pip owns nothing beyond installation. Maximum flexibility, maximum manual wiring. Poetry wants to own your whole project lifecycle through pyproject.toml and its own CLI. If you're already comfortable with that model, there's no urgent reason to migrate off it. uv wants to own the same lifecycle Poetry does, plus Python interpreter management and tool installation, through uv.lock and standard PEP 621 pyproject.toml . Migrating: What Actually Moves Moving from pip to uv is close to a drop-in replacement — uv pip install accepts the same syntax as pip install . Moving from Poetry to uv means converting poetry.lock to uv.lock (no automatic translator) and, if your project predates Poetry 2.0, migrating [tool.poetry.dependencies] to the standard [project.dependencies] table first. Which One to Pick For a new project with no existing tooling baggage: uv . For an existing Poetry project that works: no urgent reason to migrate. For a project that only needs an installer: plain pip inside a venv is still the least tooling to reason about. Frequently Asked Questions Q: Is uv a drop-in replacement for pip? A: Mostly — uv pip install mirrors pip's own command syntax. Q: Does Poetry support standard pyproject.toml now, or still only its own format? A: Both. Since Poetry 2.0, the standard PEP 621 [project] table works directly. Q: Is uv's "10-100x faster" claim accurate? A: Accurate for a warm-cache benchmark. Real CI migrations typically see 1.4-1.6x. Q: Can I migrate a Poetry lockfile directly to uv.lock? A: No — you regenerate uv.lock from your pyproject.toml . Q: Does uv manage Python versions like pyenv? A: Yes — uv python install handles interpreter installation. Quick Summary: pip only installs packages; Poetry and uv both add lockfiles and venv management uv replaces pip, pip-tools, pipx, Poetry, pyenv, twine, and virtualenv with one binary Poetry 2.5 supports standard PEP 621 pyproject.toml directly since version 2.0 uv's real-world CI speedup is closer to 1.4-1.6x than the 10-100x benchmark figure For a new project, uv is the easiest default; for an existing working Poetry setup, no urgent reason to migrate
DEV CommunityThe Giantsread at source
EU Opens Booking.com DSA Investigation Into Scam Risks: What Hotels and Hosts Should Watch
The European Commission has opened formal proceedings to assess how Booking.com handles systemic risks linked to fraud and scams under the Digital Services Act (DSA) . The inquiry puts phishing attempts, fraudulent listings and the platform’s risk-management measures under scrutiny, with potential consequences for hotels, hosts and other businesses that rely on Booking.com to reach customers. Reporting published on October 21, 2026, including MarketScreener’s report on the EU inquiry into Booking.com , says the Commission is conducting an in-depth examination after a preliminary probe. The review draws on risk-assessment materials that Booking.com submitted to EU authorities in 2025 and 2026. The proceedings do not mean that the Commission has found Booking.com in breach of the DSA. They do, however, move the matter into a formal enforcement process focused on whether the company properly identified relevant risks, assessed them adequately and took effective action to mitigate them. What the Booking.com DSA proceedings examine The central issue is platform risk management . The Commission is assessing Booking.com’s handling of fraudulent listings, phishing and other scams disseminated through its service. That includes the quality of the company’s risk assessments and the controls it uses to reduce harm to users. Under the DSA enforcement framework, the Commission and national Digital Services Coordinators can seek information and conduct fact-finding. If non-compliance is ultimately established, an inquiry may result in binding corrective measures, ongoing monitoring or penalties. At this stage, the reporting does not establish what outcome the Commission will reach or what specific changes, if any, Booking.com will be required to make. The case concerns the DSA, not Booking.com’s separate designation as a gatekeeper under the Digital Markets Act (DMA), which dates to 2024. The distinction matters because the two laws address different issues. EU framework Relevant focus for Booking.com What the current proceedings concern Digital Services Act Risk assessment, risk mitigation and transparency in online intermediation Handling of systemic risks associated with fraud, phishing and scams Digital Markets Act Gatekeeper obligations and competition-related rules Not the subject of this investigation This is also part of a wider European enforcement pattern. The supplied reporting identifies X, Shein and Temu among major platforms facing DSA scrutiny, signalling that fraud prevention and user protection are important channels for enforcement. The Booking.com case is notable because marketplace safety is not confined to social media or retail platforms. Travel platforms can also become routes for deceptive listings and messages that attempt to extract payment details or personal information. What Booking.com partners should monitor For accommodation providers, the immediate practical point is not to assume new obligations before Booking.com or EU authorities communicate them. Instead, businesses should monitor official partner updates and be prepared for potential changes to the information, checks or reporting expected by the platform. Possible areas to watch include: Verification processes for property, business or account information. Payment and messaging safeguards designed to reduce phishing and fraudulent payment requests. Partner reporting processes for suspicious listings, messages or account activity. Transparency communications explaining platform controls and how partners should use them. These are potential implications, not confirmed requirements from the investigation. Still, businesses that maintain accurate listing information, use established platform payment channels and give staff clear procedures for handling suspicious guest communications will be better placed to respond if Booking.com changes its controls. The inquiry may also affect the visibility of risk information. Clearer disclosures about how fraud controls work could help partners understand when a platform has taken action and what evidence it may need from a property owner. Conversely, any new verification or reporting steps could add operational work for small accommodation teams that already manage bookings, guest communication and payments with limited capacity. The most useful preparation is therefore operational rather than legalistic. Review who can edit property information, how employees validate payment-related messages, where suspicious activity is recorded and who is responsible for escalating it. Those internal steps cannot replace Booking.com’s DSA responsibilities, but they can reduce avoidable exposure to impersonation and scam attempts. Platform policy changes can expose weak spots in a business’s own booking, identity and customer-support workflows. Scalevise helps teams assess where AI can reduce manual triage , standardize risk signals and connect operational data without treating automation as a substitute for platform controls. A practical AI implementation consultation can turn emerging partner requirements into a focused workflow plan that protects staff time and customer trust. Request a consultation to identify the highest-value next step. Frequently Asked Questions What is the European Commission investigating at Booking.com? The Commission is assessing Booking.com’s management of systemic risks related to fraud and scams, including fraudulent listings and phishing attempts, under the Digital Services Act. Has the EU found that Booking.com violated the DSA? No. Formal proceedings have been opened, but the reported inquiry has not established non-compliance or announced a final outcome. Does this case concern Booking.com’s DMA gatekeeper status? No. Booking.com has been designated a DMA gatekeeper since 2024, but the current proceedings concern DSA duties on risk assessment, risk mitigation and transparency. What should hotels and hosts using Booking.com do now? They should watch for official communications from Booking.com and EU authorities, keep listing and account information accurate, and maintain clear internal processes for identifying and escalating suspicious messages or activity. Conclusion The Commission’s formal DSA proceedings place Booking.com’s fraud and scam controls under closer examination without determining the outcome in advance. For hotels and hosts, the case is a reason to watch for platform guidance and to strengthen the everyday processes that help staff recognize suspicious listings, messages and payment requests.
Hacker News: Show HNLibraries, Frameworks, etc.read at source
Show HN: Timeminator – Self-hosted open-source time tracker (PHP, Docker)
Comments
Hacker News Front PageThe Giantsread at source
9 Mothers (YC P26) Is Hiring in Austin, TX
CSS WizardryTop Front-end Bloggersread at source
Web-Perf Wednesday 014 – Performance Budgets Need a Representative Worst
Performance budgets need a representative worst, while Safari changes identity resolution and Chrome improves module recovery and memory debugging.
SyntaxPodcastsAudioListen
1049: WTF is a Software Factory?
Scott and Wes talk with Adam Jacob about software factories: what they actually are, why they’re unique to each team, and how to build trust in agent-generated code. They dig into Swamp Club, black box testing, domain driven design, adversarial review for accessibility, and…
Hacker News: Show HNLibraries, Frameworks, etc.read at source
Show HN: Self-hosted Omnivore-fully self-hosted, open-source Read-it-Later app
Comments
freeCodeCamp.orgYouTube ChannelsVideoWatch on YouTube
PostgreSQL Hybrid Search Course – Keyword (BM25) + Vector Retrieval
Hacker News Front PageThe Giantsread at source
Whatever Happened to Fire Escapes
Flavio CopesMore Front-end Bloggersread at source
Vite toolchain: Cloudflare, vinext, and shared web tooling
Vite is becoming shared infrastructure for frameworks, runtimes, and developer tools. What vinext, Cloudflare's new tooling, and DevTools show.
W3C NewsBrowsers, engines, etc.1 min read
W3C and the State of the Web in the AI Era
This W3C paper from the Strategy Team is intended to foster discussion in the technical community at TPAC — the most important W3C community event of the year — about how the W3C technical agenda for the web needs to evolve based on the rise of AI agents. It is part of building a consistent, coherent shared vision for evolving the web, starting with AI.
HeyDesignerDeveloper/Designer Newsread at source
Design and engineering are the same thing (video)
Scaling the design process, Everyone is starting over, On alignment that looks wrong, The future of CSS.
Hacker News Front PageThe Giantsread at source
Eight Bits of Trust; eMudhra's CA keys cracked in milliseconds
Hacker News Front PageThe Giantsread at source
The 1.5°C goal of the Paris Agreement is no longer viable
W3C BlogBrowsers, engines, etc.3 min read
Web of Things Working Group recharter: New momentum for IoT interoperability
The Web of Things (WoT) Working Group rechartered for two years to improve IoT interoperability and address physical AI use cases. WoT counteracts fragmentation in IoT by providing building blocks that enable seamless device integration across smart buildings, industrial automation, and energy management. Drawing on Plugfest insights, the new charter focuses on enhancing Thing Description expressiveness, introducing protocol bindings, and guiding AI agents.
Hacker News: Show HNLibraries, Frameworks, etc.read at source
Show HN: A retro arcade style tower climber where your only weapon is a shield
Comments
Flavio CopesMore Front-end Bloggersread at source
SPA vs server-side rendering: which should you choose?
Choose between a single-page app, server-rendered pages, and interactive islands by looking at navigation, shared state, loading, and maintenance.
Robin WieruchMore Front-end Bloggersread at source
Testing AI-Generated Code: Lint the Pattern, Test the Decision
Testing AI-generated code without the noise: lint the patterns coding agents follow, share one test harness, and add tests only where a file leaves its pattern.
SitePointThe Giantsread at source
Vibe Coding to Production: A Developer’s Checklist for Building Reliable Web Apps
null Continue reading Vibe Coding to Production: A Developer’s Checklist for Building Reliable Web Apps on SitePoint .
Hacker News: Show HNLibraries, Frameworks, etc.read at source
Show HN: Inca – a free, open-source 3D app that works like Maya 2020
Comments
Hacker News Front PageThe Giantsread at source
Using Claude to reduce the attack surface of code
AbduzeedoMulti Author Blogsread at source
Visual Identity: Montreal Jazz Festival Concept
A bold visual identity concept for Montreal Jazz Festival pairs generative TouchDesigner trumpet forms with agile jazz typography. Designing for an institution like the Montreal Jazz Festival means gr...
Hacker News: Show HNLibraries, Frameworks, etc.read at source
Show HN: Wellbody [Body Health Tamagotchi]
Comments
Ben FrainMore Front-end Bloggersread at source
Colour variants from base colours with OKLCH, CSS relative color, and CSS functions
Many others have covered the manipulation of colour in CSS. This is me documenting what has worked for me, practically, 'in the wild'. It is a common requirement to need a variant of an existing colour. Think about the borders for a visual pod/component; it may have a background colour but you need some variant […]
Level AccessCompany/Startup Blogs11 min read
What Is a VPAT? A Guide to VPATs and ACRs
A Voluntary Product Accessibility Template (VPAT®) is a standard form for reporting product accessibility. Once completed, it becomes an accessibility conformance report (ACR) The post What Is a VPAT? A Guide to VPATs and ACRs appeared first on Level Access .
SitePointThe Giantsread at source
Debugging CSS Layout Issues: A Practical Guide to Browser DevTools
null Continue reading Debugging CSS Layout Issues: A Practical Guide to Browser DevTools on SitePoint .
SitePointThe Giantsread at source
Progressive Enhancement in Web Forms: Building Reliable Experiences with HTML, CSS, and JavaScript
null Continue reading Progressive Enhancement in Web Forms: Building Reliable Experiences with HTML, CSS, and JavaScript on SitePoint .
AbduzeedoMulti Author Blogsread at source
How EVERLAND Reimagined Urban Kind Branding
EVERLAND built Urban Kind branding on a single device: the shield. Saturated color, script product names, and raw amber-glass packaging. Skincare is a crowded shelf, and most of it whispers. EVERLAND ...
AbduzeedoMulti Author Blogsread at source
Inside COLLINS’s Branding for Crane Stationery
Explore the Crane branding by COLLINS, pairing 250 years of American cotton papermaking with engraved crests and cloth-bound keepsake boxes. Paper has real weight here. Stephen Crane founded his Massa...
SitePointThe Giantsread at source
Build a Startup Runway Calculator in JavaScript (and Stress-Test Your Plan)
null Continue reading Build a Startup Runway Calculator in JavaScript (and Stress-Test Your Plan) on SitePoint .
AdactioTop Front-end Bloggersread at source
This year’s FFConf is shaping up to be genuinely unmissable. So …um, you know …don’t miss it: https://2026.ffconf.org/ I’ll see you there!
HTML All The ThingsPodcastsAudioListen
10 Easy SEO Wins You're Probably Overlooking
Improving your website's SEO doesn't always mean writing more blog posts, investing in expensive tools, or launching a massive content strategy. Sometimes the biggest opportunities are hiding in the pages you've already published. In this episode, Matt and Mike explore 10…
SitePointThe Giantsread at source
Next.js Hydration Errors from localStorage: 3 Ways to Fix Them
localStorage access during SSR causes ReferenceErrors and hydration mismatches in Next.js. Compare three fixes: effects, useSyncExternalStore, and cookies. Continue reading Next.js Hydration Errors from localStorage: 3 Ways to Fix Them on SitePoint .
SitePointThe Giantsread at source
Codebase Design for AI Agents: Types, Lint Rules, and CI Gates
Structure TypeScript repos to constrain AI coding agents with compile-time branded types, AST-based ESLint rules, CI gates, and focused AGENTS.md files. Continue reading Codebase Design for AI Agents: Types, Lint Rules, and CI Gates on SitePoint .
Frontend Masters BlogMore Front-end Bloggersread at source
“I Redesigned VLC After 25 Years”
I watched this whole video by Juxtaposed, assuming it was a real redesign of the VLC player, but alas, it is not official. Nevertheless, it should be, and it’s a wonderful example of how much real human brainpower it takes to design something well.
SitePointThe Giantsread at source
Next.js ISR Transient Errors: Prevent notFound from Caching 404s
Prevent transient outages from caching valid Next.js ISR pages as 404s. Separate infrastructure errors from missing records and recover fast. Continue reading Next.js ISR Transient Errors: Prevent notFound from Caching 404s on SitePoint .
HeyDesignerDeveloper/Designer Newsread at source
Taste is not a design methodology
Craft: A collection of design engineering concepts, Design systems directory, Inside Anthropic’s design team, Pure UI in the agentic era, and more.
AbduzeedoMulti Author Blogsread at source
Kössen Wayfinding: Inside Andrea Gassner's Stitched Sign System
Atelier Andrea Gassner's Kössen wayfinding stitches copper cross-stitch lettering into warm plaster at the new Education Center Kössen. Walk the corridors of the new Education Center Kössen in Tyrol a...
David BushellMore Front-end Bloggers2 min read
How not to migrate from Cloudflare DNS
So you’ve been shamefully using US Big Tech giant Clownflare for DNS? It’s time to find an inopportune time to migrate away to a “European alternative” . You absolute must not follow these steps on a busy weekend when you must leave for hours on short notice. […]
Flavio CopesMore Front-end Bloggersread at source
A deep dive into tsrs
Understand tsrs, the Rust port of TypeScript. Try the compiler, compare benchmarks, explore its architecture, and build a browser-based type checker.
Go Make ThingsMulti Author Blogs1 min read
Documentation-Driven Development
Last week, I needed to make some pretty major updates to a web component in a design system I use for clients. I’m a big fan of TDD, but I wasn’t mentally in a place to write my tests first. I decided the easiest thing to do was document how the new component would work… before actually writing any code to implement the updates. It was an entirely ADHD-driven decision, but it unlocked something for me!
AbduzeedoMulti Author Blogsread at source
Address 338 Architecture Studio Branding and Visual System
Address 338 is a clean architecture studio branding project by Quang Nguyen featuring crisp grids and tactile paper goods. Designed by Quang Nguyen, Address 338 brings order to studio branding. The de...
Josh Comeau's blogMore Front-end Bloggersread at source
The Future of CSS ✨
Every year, browser vendors collaborate via the Interop project to synchronize their efforts on new HTML/CSS/JS features. This year, there’s a ton of super exciting features being considered! In this blog post, we’ll explore the CSS of the future, to get a glimpse of what we’ll soon be able to do.
AbduzeedoMulti Author Blogsread at source
TDC 43rd Annual — Editorial Design by Tereza Bettinardi
Tereza Bettinardi crafts the editorial design for The 43rd Annual of the Type Directors Club, turning expanded counterforms into a bold book. Designing an awards annual for the Type Directors Club of ...
CodePenCompany/Startup Blogs1 min read
445: CodePen AI is Here
Chris and Alex are talking this week about CodePen’s biggest release since the 2.0 drop. It’s live! We’ll be working on CodePen AI forever, since it’s a fast-changing technology that regularly adds new abilities. That sounds like a trite thing to say, but we lived it as we were building this. We started out playing […]
Flavio CopesMore Front-end Bloggersread at source
How to update all global npm packages
Update all global npm packages with npm update -g, check outdated tools, update one package, and understand which Node installation you are changing.
Flavio CopesMore Front-end Bloggersread at source
Cloudflare Pages vs Workers: which should you choose?
Compare Cloudflare Pages and Workers for static sites and full-stack apps, with request diagrams, pricing examples, and advice on when to migrate.
Jeffrey Zeldman PresentsMore Front-end Bloggersread at source
Figma Tips and Shortcuts
℅ Automattic Design: The post Figma Tips and Shortcuts appeared first on Jeffrey Zeldman Presents .
SitePointThe Giantsread at source
9 Browser-Based Checks That Make Design-to-Development Handoffs More Reliable
null Continue reading 9 Browser-Based Checks That Make Design-to-Development Handoffs More Reliable on SitePoint .
Flavio CopesMore Front-end Bloggersread at source
AI-assisted code migration: how to switch frameworks safely
Coding agents can handle repetitive migrations, but switching costs also include design drift, production behavior, deployment, and future maintenance.
Smashing MagazineThe Giants15 min read
Embracing Playful Imperfection With The CSS `random()` Function
Design systems thrive on consistency, so where does randomness fit in? Through playful demos of organic typography, bouncing letters, and splayed cards, Brecht De Ruyte shows how the new CSS `random()` function brings a little imperfection to the web without JavaScript libraries or preprocessor loops that generate hundreds of lines of static CSS.
HeyDesignerDeveloper/Designer Newsread at source
No more icons in every menu by default
The language we never agreed on, A design system is what it does, Paper Mono, Agentic verification.
Flavio CopesMore Front-end Bloggersread at source
How AI agents make existing software more useful
Agents can help us combine existing tools and improve the details of our apps. That makes dependable behavior and clear interfaces worth paying attention to.
The Mozilla BlogBrowsers, engines, etc.4 min read
Why is the CMA asking us to choose the furniture before the house? The UK’s search choice screens need browser choice screens alongside them
Mobile browsers are a key gateway to the internet for 56 million people in the UK. Smartphone users spend around half an hour a day in these apps, and opening a browser is the most common way they look up information online. Yet most people are using a smartphone browser that was preinstalled and set […] The post Why is the CMA asking us to choose the furniture before the house? The UK’s search choice screens need browser choice screens alongside them appeared first on The Mozilla Blog .
W3C NewsBrowsers, engines, etc.read at source
First Public Working Draft: Animation Triggers
Defines CSS properties and an API for creating mechanisms that affect animation playback, based on DOM events resulting from user interaction, or on entry/exit of ranges on animation timelines.
Auth0 BlogCompany/Startup Blogsread at source
Securing AI Agents with Auth0 CIMD and Token Exchange
AI agents break static authorization. Learn how Auth0 Strict Mode, CIMD, and Token Exchange keep a permission ceiling and a verifiable user-to-agent delegation chain.
Auth0 BlogCompany/Startup Blogsread at source
ID-JAG, Explained: The New OAuth Grant for Cross-App Access
Learn what an ID-JAG (Identity Assertion JWT Authorization Grant) is, the cross-app access problem it solves, and how the flow works between a requesting app, resource app, and enterprise IdP.