AWS Weekly Roundup: Claude Sonnet 5 on AWS, Amazon WorkSpaces for AI agents, AWS service availability updates, and more (July 6, 2026)

Post Syndicated from Daniel Abib original https://aws.amazon.com/blogs/aws/aws-weekly-roundup-claude-sonnet-5-on-aws-amazon-workspaces-for-ai-agents-aws-service-availability-updates-and-more-july-6-2026/

A couple of editions ago I wrote about what I find so energizing about working with startups. Last week I got a fresh dose of it: I spent a few days with the AWS Startups team, listening to stories of founders talking about the problems they’re actually solving. One story that stayed with me came from Marco Negreiros, founder of EyeCare Health, a Brazilian healthtech expanding access to eye care. He shared a striking fact: more than 70% of Brazilian municipalities don’t have a single ophthalmologist. His answer was to put a vision test on the one device almost everyone already carries, the smartphone, so a basic eye screening no longer depends on living near a clinic. Watching a founder turn a gap that big into something that concrete is exactly why I love this space.

AWS Startups team get-together with founders in Brazil

This week, I’ll take a closer look at some key launches, and then cover the quarterly AWS Service Availability updates.

Last week’s launches
Here are some of the launches covered from this past week in the AWS News Blog:

Here are some launches and updates that caught my attention:

For a full list of AWS announcements, be sure to keep an eye on the What’s New with AWS page.

AWS Service Availability Updates
When the availability of an AWS service or feature changes, we provide customers guidance in AWS Product Lifecycle Changes on available alternatives and support for migration so that disruptions to your operations are minimized. The following lifecycle changes were updated on June 30, 2026.

Services moving to Maintenance (no longer accessible to new customers starting July 30, 2026):

Services entering Sunset:

Services reaching End of Support (as of June 30, 2026):

  • Amazon Chime SDK – Carrier Voice Focus
  • Amazon SageMaker AI – Ground Truth Plus

We understand that changes in availability can impact your operations. For specific guidance, consult the relevant service documentation or contact AWS Support.

Upcoming AWS events
Check your calendar and sign up for upcoming AWS events:

  • AWS Summits – AWS Summits are free events that bring the cloud and AI community together to connect, learn, and explore the latest technologies. Browse the full calendar to find a Summit near you in the second half of 2026.
  • AWS Community Days – Community-led conferences where content is planned, sourced, and delivered by community leaders. If you’re in Latin America, don’t miss AWS Community Day Belo Horizonte on August 22. Registration is open at awscommunityday.com.br.

Join the AWS Builder Center to connect with builders, share solutions, and access content that supports your development. Browse here for upcoming AWS-led in-person and virtual events and developer-focused events.

That’s all for this week. Check back next Monday for another Weekly Roundup!

– Daniel Abib

This post is part of our Weekly Roundup series. Check back each week for a quick roundup of interesting news and announcements from AWS!

[$] The kernel’s iomap layer

Post Syndicated from corbet original https://lwn.net/Articles/1079415/

Conversations about the kernel’s filesystem implementations often involve a
layer called “iomap”, but relatively few people can reliably say what iomap
actually is. That is just the kind of gap that LWN exists to fill. In
short, iomap handles the mapping between data in the filesystem space
(identified by a file of interest, and an offset within that file) and in
the storage space (which may be a memory location, or a set of blocks on a
storage device). Using that mapping, iomap handles a long list of common,
filesystem-related tasks, allowing a lot of boilerplate code to be removed
from individual filesystem implementations.

A Day With Your Vector Command Red Team Pod

Post Syndicated from Trevor Christiansen original https://www.rapid7.com/blog/post/so-ditl-day-with-your-vector-command-red-team-pod

Anyone trying to understand continuous red teaming usually gets the same high-level explanation: it is ongoing, attacker-informed, and designed to uncover risk between formal assessments. Useful as that description is, it still leaves most people with the same question, which is what the service actually looks like when a team is working against a real environment day after day.

A Vector Command pod answers that question more clearly than a list of features ever could. Five dedicated operators work against a customer environment continuously, each bringing a different specialty, while the pod as a whole simulates the range, coordination, and persistence of a real adversary. Over time, that gives the customer far more than a periodic snapshot. It gives them a team that keeps learning the environment, keeps pressure on the attack surface, and keeps surfacing the kinds of changes that can turn into incidents if no one catches them quickly.

Because the environment keeps changing, the value of the model shows up in motion rather than in theory. New services appear, controls drift, patching gaps open, and fresh advisories create short windows of risk. Working continuously allows the pod to validate whether those changes matter while they are still actionable, which is what makes the service useful to teams that want more than another point-in-time assessment.

How the Red-Teaming pod works across a normal day

Every day begins with a 30-minute standup, where operators compare notes on what is in motion, what has already been found, and where handoff is needed. That routine may sound simple, but it is what turns five specialists into a coordinated attack team instead of a set of separate testing tracks.

While one operator follows a foothold on a build server, another may be preparing a social engineering campaign tied to a real business event. At the same time, someone else is watching the external footprint for fresh exposures, an emerging threat specialist is validating a new advisory against active customer technology, and the customer interface lead is already helping a security team understand what yesterday’s compromise means in practical terms. The customer is not seeing isolated tasks. They are seeing multiple attack paths, exposure checks, and validation efforts develop at once, with the work feeding into a single picture of risk.

Because the pod works across multiple attack paths at once, the value comes through in more than the sheer volume of activity. Familiarity builds over time, and that accumulated knowledge changes the quality of the work by grounding the findings in how the customer’s environment actually behaves.

What customers are actually getting tested

One of the clearest examples in the draft comes from the lead operator, who receives a callback from a beacon on a customer’s build server and begins exploring what that foothold could reach. Because the build server holds CI/CD credentials, the question is no longer whether the server can be compromised. The more important question is whether that compromise could extend into the deployment pipeline and what persistence would look like from there. For the customer, that kind of work shows how a technical foothold could become a business problem, which is much more useful than a simple proof that access was achieved.

The social engineering work gives a different kind of visibility. Domains are warmed, pretexts are built around real events, target lists are researched carefully, and emails are tested against spam controls before launch. That means the customer is not just testing whether an employee clicks a link. They are testing the full defensive chain, including email filtering, web controls, endpoint visibility, and SOC response.

Continuous external testing tends to make the value especially obvious. In the draft, the network and vulnerability operator identifies two RDP endpoints that are brand new to a customer’s environment and gets them in front of the customer the same day they appear. He also finds a Confluence instance several versions behind and confirms unauthenticated remote code execution. Those are the kinds of issues that often emerge between scheduled assessments and create risk precisely because no one expected them to be there.

When a fresh advisory lands against an exposed technology, the value of the service becomes even clearer. Broad awareness of an industry issue only goes so far. What changes the customer’s decision is knowing whether the exposure is exploitable in their own environment and what an attacker could reach from there.

Where the customer benefit becomes tangible

A service like this becomes much easier to understand when the output is viewed through the customer’s side of the experience. Early visibility into configuration drift, newly exposed services, lagging systems, and fresh exploit windows helps teams focus on changes that are real rather than theoretical. Validation tied to the customer’s own environment gives them a stronger basis for deciding what needs immediate attention. Attack-path testing shows how one weakness could become a wider compromise. Practical remediation guidance helps leadership and technical teams respond while the timing still matters.

Because the customer interface lead is also an operator, the translation from technical finding to leadership action is grounded in hands-on work rather than abstract summary. When a foothold, exposed service, or confirmed compromise needs to be explained, the conversation can move quickly from what happened to what the customer should prioritize next.

Over time, customers get more than a stream of findings because the pod is building familiarity with the environment as it works. That continuity gives the team a stronger basis for identifying which exposures deserve urgent attention, which attack paths are credible, and which changes are likely to matter most if an adversary finds them first.

Why this model gives customers more than a snapshot

Point-in-time testing still has value, but it will always be limited by the fact that the environment keeps moving after the engagement ends. A continuous pod keeps pace with that reality more effectively because it maintains pressure on the environment as it changes, rather than returning periodically to rediscover what is there.

Customers who want a clearer view of what continuous red teaming looks like in practice are really looking for evidence that the model changes the quality of what they get back. A dedicated pod does that by combining sustained offensive pressure, environment familiarity, rapid validation, and practical remediation guidance in a way that helps teams act on real risk while the timing still matters.

For organizations exploring how to test more continuously against the way attackers actually operate, Rapid7’s Continuous Red Team Service offers a closer look at how Vector Command helps uncover attack paths, validate exposures, and strengthen resilience over time.

Security updates for Monday

Post Syndicated from jzb original https://lwn.net/Articles/1081495/

Security updates have been issued by AlmaLinux (container-tools:rhel8, grafana, grafana-pcp, kernel, ruby:2.5, and ruby:3.3), Debian (bird3, chromium, kernel, linux-6.1, mediawiki, nginx, openvpn, php-phpseclib, php8.2, php8.4, and sympa), Fedora (7zip, buildah, chromium, clamav, freerdp, leptonica, mariadb10.11, mariadb11.8, nextcloud, nsd, openqa, openvpn, os-autoinst, pdns, pdns-recursor, perl-Crypt-ScryptKDF, podman, python-jupyter-server, and python-streamlink), Mageia (mariadb and yt-dlp), Slackware (libevent, libseccomp, mozilla, mutt, and php82), SUSE (apache2, containerd, dnsmasq, docker, dracut, firewalld-legacy, gimp, glibc, golang-github-docker-libnetwork, google-guest-agent, gstreamer-plugins-bad, helm, kernel, kernel-devel, keybase-client, kitty, krb5, libarchive, libnfs, libslirp, nilfs-utils, openCryptoki, openQA, openssl-3, pacemaker, pcr-oracle, perl-DBI, perl-List-SomeUtils-XS, podman, python-pip, python-pydata-sphinx-theme, python-tornado6, python3-lxml, python311-mistune, python313-joserfc, rmt-server, sg3_utils, systemd, tracker-miners, and xdg-dbus-proxy), and Ubuntu (cifs-utils, linux-nvidia, linux-nvidia-6.17, linux-raspi-realtime, and ncurses).

Your Worker can now have its own cache in front of it

Post Syndicated from Dan Lapid original https://blog.cloudflare.com/workers-cache/

Today we are launching Workers Cache: a tiered cache that sits in front of your Worker, configured by a single line of Wrangler config and the same Cache-Control headers you already know.

When Workers Cache is enabled, every cacheable request to your Worker hits Cloudflare’s cache first. If there’s a fresh cached response, Cloudflare returns it directly — your Worker doesn’t run, and you don’t pay CPU time for it. On a miss, your Worker runs, and if your response is cacheable, Cloudflare stores it for the next request. The next request from anywhere on Earth can be served straight from cache.


The whole thing is one config block:

{
  "name": "my-worker",
  "main": "src/index.ts",
  "compatibility_date": "2026-05-01",
  "cache": {
    "enabled": true
  }
}

After that, you control caching the way HTTP has always wanted you to — by setting headers on your responses:

return new Response(body, {
  headers: {
    "Cache-Control": "public, max-age=300, stale-while-revalidate=3600",
    "Cache-Tag": "products,product:123",
  },
});

And when content changes, your Worker purges its own cache:

await ctx.cache.purge({ tags: ["product:123"] });

That’s the whole API. There is no zone to configure, no rules engine to set up, no separate cache to provision, and no second product to log into. The Worker’s code is the configuration surface, and the cache follows the Worker wherever it runs — on a custom domain, on workers.dev, behind a service binding, in a preview, in a Workers for Platforms tenant. One Worker, one cache, configured once.

That’s the surface area. There’s a lot underneath: tiered caching across our entire network, full support for stale-while-revalidate so stale responses never block a user, content negotiation via Vary, multi-tenant-safe cache keys via ctx.props, programmatic purges by tag or path prefix, and — the part we think is the biggest unlock — a cache that sits in front of every Worker entrypoint, not just the public one, with per-entrypoint control over which ones cache and which don’t. That last piece means you can compose caching directly into the structure of your app: a chain of entrypoints with cache stages slotted in wherever you want them, configured by the code on either side. We’ll walk through all of it below.

Workers Cache is available today to every Worker on any plan, enabled in Wrangler.

This is the caching API we’ve always wanted Workers to have. Here’s why it took us this long, what becomes possible because of it, and what’s coming next.

Why server-rendered apps need a cache in front

When we introduced Workers in 2017, the pitch was that you could run code on Cloudflare’s network to transform requests on their way to your origin. The Worker sat in front of the cache and the origin:


This was the right model for the use cases we were targeting. If you wanted to add a header to every request, rewrite a URL, do an A/B split, or filter traffic before it reached your origin, putting the Worker in front of the cache and the origin gave you full control over what got cached and what didn’t. Customers built incredible things with it.

But the world changed. Workers stopped being a thing you bolted onto an origin and started being the origin. Frameworks like Astro, TanStack Start, Next.js, Remix, and SvelteKit all ship a Cloudflare adapter that builds your app as a Worker. There’s no origin behind them. The Worker is the server.

When the Worker is the origin, the original architecture has nothing to cache. Every request runs your code, even when the response would be byte-for-byte identical to the one you returned a second ago. The Workers runtime is fast enough that this works — it routinely handles tens of millions of requests per second without breaking a sweat — but “fast enough to render every request” still costs you latency on every page load and CPU time on every invocation. And on a server-rendered app, every page load is, by definition, a render.

Workers Cache flips the architecture. Cloudflare’s cache now sits in front of the Worker:


On a cache hit, your Worker doesn’t run at all. Cloudflare returns the cached response and your CPU billing stays at zero. On a miss, your Worker runs once, populates the cache, and the next request — from anywhere — gets served from cache without invoking your code.

This is what was missing for server-side rendering on Workers. You used to have to choose between two unsatisfying options:

  • Prerender everything at build time (“static site generation”). Fast page loads, but every change requires a full rebuild and redeploy. For a docs site with a few thousand pages, that’s 5–10 minutes. For a large e-commerce site, it’s worse — and the build runs every single time you touch anything.

  • Render every page on every request. Up-to-date content, but every page load pays the rendering cost and every visitor pays the latency.

Workers Cache gives you a third option: server-render on demand, cache the rendered response, refresh it on a time-to-live (TTL) you choose. The first request to a new page still renders. Every subsequent request, until the cache expires, is served as if the page were static. When the cache expires, the next request triggers a re-render — and with stale-while-revalidate, even that one doesn’t wait.

You get the speed of a static site without the build time, and the freshness of server rendering without the cost. No framework-specific machinery like Incremental Static Regeneration. Just HTTP caching, working the way it was designed to work, in front of code that was designed to be the origin.

stale-while-revalidate is the part that makes it feel instant

The stale-while-revalidate directive tells Cloudflare that when a cached response expires, it’s allowed to serve the stale copy immediately while it refreshes the response in the background. Cloudflare shipped full support for stale-while-revalidate earlier this year, and it’s the directive that turns “we cache your Worker” into “your Worker’s site feels static.”

Without it, the first request after a cache entry expires has to wait for the Worker to render the page from scratch. The user sees that latency. With it, the first request after expiration gets the stale page immediately (with a Cf-Cache-Status: UPDATING header), and the Worker runs in the background to refill the cache. Every user, including the one who triggered the refresh, gets a cache-speed response.


In practice, this looks like:

 export default {
  async fetch(request) {
    const html = await renderPage(request);
    return new Response(html, {
      headers: {
        "Content-Type": "text/html; charset=utf-8",
        // Treat as fresh for 5 minutes; serve stale for up to an hour
        // while a background refresh runs.
        "Cache-Control": "public, max-age=300, stale-while-revalidate=3600",
      },
    });
  },
};

The mental model that makes this click:

  • Fresh window (max-age): Cloudflare serves the cached response. Your Worker doesn’t run.

  • Stale window (stale-while-revalidate): Cloudflare serves the cached response. Your Worker runs in the background to refresh it. No user waits.

  • Outside both windows: Cloudflare runs your Worker to generate a fresh response, and the user waits for that one render.

You pick the windows. For a product catalog that updates every few minutes, max-age=300, stale-while-revalidate=3600 means visitors basically never wait, and your Worker still runs often enough to keep content fresh. For a blog archive that almost never changes, max-age=86400, stale-while-revalidate=2592000 means your Worker runs once a day per page.

The first request to a brand-new page is the only one that pays the full render cost. After that, the page behaves like static output for visitors, while your Worker still owns how the page gets generated.

One URL, many representations: Vary works

Real apps rarely return the same bytes to every client. The same product page might be HTML for a browser and JSON for an API client. The same image might be WebP for clients that support it and JPEG for the ones that don’t. The same homepage might come back in English, French, or Japanese depending on the user.

Doing this without a cache is easy — your Worker just reads the request header and returns the right thing. Doing it with a cache is where it usually gets ugly. Most caches give you two bad options: cache nothing on URLs that have multiple representations, or cache one representation and serve it to everyone.

Workers Cache supports the standard HTTP Vary header, which is the right way to solve this. When your Worker returns a response with Vary: Accept-Encoding (or Accept, or Accept-Language, or any other request header), Cloudflare stores a separate cached variant per distinct combination of those headers — and only returns a variant whose stored values match the incoming request.

export default {
  async fetch(request) {
    const accept = request.headers.get("Accept") ?? "";
    const wantsWebp = accept.includes("image/webp");

    const body = wantsWebp ? await fetchWebpImage() : await fetchJpegImage();

    return new Response(body, {
      headers: {
        "Content-Type": wantsWebp ? "image/webp" : "image/jpeg",
        "Cache-Control": "public, max-age=3600",
        // Cache a separate variant per distinct Accept header value.
        Vary: "Accept",
      },
    });
  },
};

One URL, two cached variants. A browser that sends Accept: image/webp,*/* gets the WebP. A browser that sends Accept: image/jpeg gets the JPEG. Both come from cache. Your Worker writes both variants on the first request to each, and then runs zero times for either after that.

This is the well-trodden HTTP standard for content negotiation, and Workers Cache implements it the way RFC 9110 and RFC 9111 describe. There’s no allowlist of what headers you can Vary on. You list whatever you need, and Cloudflare keys variants on the verbatim values. The docs go through the edge cases — how to keep variant fan-out under control by normalizing headers in a gateway Worker, why purges invalidate all variants of a URL together, and the one case (Vary: *) that disables caching entirely.

This is your Worker’s cache, not your zone’s

Before we get to what becomes possible with all this, there’s a conceptual shift worth naming.

Cloudflare has had a cache forever. It’s configured at the zone level: Cache Rules, Page Rules, the cached-file-extensions list, Cache Reserve, Tiered Cache topology, custom cache keys. All of it is set per zone, and historically a Worker had to either fit into that zone’s configuration or work around it.

Workers Cache is different. It’s your Worker’s cache — it belongs to the Worker, not to a zone. This has a bunch of consequences that turn out to matter:

  • There is no zone configuration to manage. Cache Rules, cache level settings, the file-extensions list, Page Rules — none of them apply to Workers Cache. The Worker’s Cache-Control headers are the configuration.

  • The cache follows the Worker, not the hostname. A Worker that’s bound to api.example.com, api.example.net, and invoked over a service binding shares one cache across all three. A request to /users/42 hits the same cached entry regardless of which way in it came.

  • The cache works on workers.dev. It works in preview URLs (each preview gets its own cache, so testing a change doesn’t poison production). It works in Workers for Platforms (each user Worker has its own cache, isolated from the dispatcher and from other tenants). All of these used to be second-class citizens for caching. They aren’t anymore.

  • Purges are scoped to the Worker’s entrypoint. When you call ctx.cache.purge({ purgeEverything: true }), you’re only purging your Worker entrypoint’s cache. No risk of nuking your zone’s other content. No risk of one Worker’s deploy invalidating another’s data.

What you configure about caching, you configure in code: which paths get longer TTLs (branch on the path and set a different max-age), which requests bypass the cache (return Cache-Control: private), how the cache key is shaped (control what gets into ctx.props, normalize the URL in a gateway Worker before dispatching). The Worker you already wrote is the configuration surface.

The full docs go deep on this in Workers Cache: your Worker’s cache.

Two tiers, every Worker, no configuration

Workers Cache is regionally tiered by default. There are two layers:

  • A lower tier in the Cloudflare data center closest to the user. Every data center that receives traffic for your Worker has its own lower-tier cache.

  • An upper tier that aggregates fills across the whole network. There are fewer of these, and every lower tier consults the upper tier on a miss.

A request hits the lower tier first. On a hit, the response is served and that’s the end of it. On a miss, the lower tier asks the upper tier. On a hit there, the response is returned and also stored in the lower tier on the way back. Only if both tiers miss does your Worker actually run — and the response from that run gets stored in both tiers.


The reason this matters is that the first request anywhere in the world populates the upper tier. Every subsequent request, from any data center, can be served from the upper tier without your Worker running — even if the lower tier at that data center has never seen the request before. Cache hit ratios are dramatically higher than they would be with a single flat cache layer, which is exactly what you want when your Worker is the origin.

This is the same topology that powers Tiered Cache for zones today, except you don’t configure it. There is no dialog for “turn on tiered cache for my Worker.” Every Worker that has caching enabled gets tiering for free.

If your Worker uses Smart Placement, the cache composes cleanly with it: tiers are consulted first, and only if both miss does Smart Placement route execution close to your origin. We have more to say about how those layers interact, including a few rough edges we’re planning to smooth out, in the docs.

Run your app near the user and near the data

There’s a recurring tension in web performance that nobody has fully resolved: you want your code to run close to the user (because the round-trip between user and server is on the critical path), and you want your code to run close to the data (because every database query is also a round-trip). Pick one, and the other gets slow.

We’ve spent years chasing both. Our network puts us within ~50ms of about 95% of the world’s Internet users. Smart Placement and Placement Hints let you keep your code close to your data without ever having to think about cloud regions. But until now, the two pieces didn’t fully compose. You could do “near the user” or “near the data,” and if you wanted both halves of your app to be in the right place at the same time, you had to be a Cloudflare expert. We knew we could do better.

Workers Cache is the piece that closes the gap. Because the cache belongs to the Worker (not the zone), and because service bindings and ctx.exports calls between Workers go through the cache, you can build an app as a chain of Workers — each one running where it should run — with the cache as the seam between them.

The architecture looks like this:


  • Worker A runs near the user. It handles the cheap, latency-sensitive parts of every request: authentication, rate limiting, routing, header normalization, rendering the outer “shell” of an HTML page that doesn’t depend on data.

  • Worker B runs near the data, courtesy of Smart Placement or an explicit Placement Hint. It does the heavy work: server-rendering pages that fetch data, reading product catalogs, generating search results, aggregating APIs, expensive transforms.

  • Workers Cache sits in front of Worker B. When Worker A calls Worker B over a service binding, Cloudflare checks Worker B’s cache first. On a hit, Worker A receives the response and Worker B doesn’t run at all — no data-center hop, no database query, no rendering work.

The cache hit path becomes: user → Worker A near the user → cache hit for Worker B → response. The data hop is paid only on a miss. Your hot pages run at the speed of code-in-front-of-the-user, and your cold pages still benefit from running near the data when they do execute.

You don’t have to architect anything special to get this. Write your app as two Workers, point one at the other with a service binding, turn caching on in Worker B’s wrangler.jsonc file, and you’re done.


Multi-tenant by default, with ctx.props

If you’re caching a Worker that returns user-specific data — say, an API that serves different content per logged-in user — you need a way to make sure one user can never see another user’s cached response. The standard solution is “don’t cache authenticated requests,” and Cloudflare’s automatic bypass for Authorization headers does exactly that. But “don’t cache anything” gives up the entire performance win.

Workers Cache solves this by making the caller’s ctx.props part of the cache key. When one Worker calls another over a service binding and passes ctx.props with a user ID, tenant ID, or any other identifier, callers with different props get separate cache entries. One user’s response can never leak into another user’s cache.

import { WorkerEntrypoint } from "cloudflare:workers";

interface Props { userId: string; }

export default class Backend extends WorkerEntrypoint<Env, Props> {
  async fetch(request: Request): Promise<Response> {
    // ctx.props.userId is part of the cache key. User A and User B
    // requesting the same URL get separate cached entries.
    const { userId } = this.ctx.props;
    const data = await loadUserData(userId);

    return new Response(JSON.stringify(data), {
      headers: {
        "Content-Type": "application/json",
        "Cache-Control": "public, max-age=300",
      },
    });
  }
}

The typical pattern is to authenticate the request in a gateway Worker, strip the Authorization header, set the authenticated user’s ID into ctx.props, and then call the cached backend Worker. The gateway runs on every request (it has to, to authenticate), but the expensive backend only runs when there’s no cache entry for that user yet. Auth’d APIs go from “uncacheable” to “cached per user with full safety,” and the cache key does the isolation for you. The docs walk through this in detail in Multi-tenant safety with ctx.props and the example in Per-user authenticated responses.

Other CDNs make you choose between correctness and hit ratio: key the cache by each user’s token, or send every request back to origin for authorization. Workers Cache lets you share cached API responses at the edge while preserving per-request authorization boundaries. We don’t know of another CDN that offers this as a built-in model for authenticated, multi-tenant APIs. We’re pretty proud of it.

A cache between every Worker entrypoint

Here is the part of Workers Cache that we think is the biggest unlock, and it’s the part that’s hardest to see if you’re thinking about it as “a CDN cache that happens to work in front of Workers.”

Workers Cache sits in front of every Worker entrypoint — the default export, every named WorkerEntrypoint, and every call between entrypoints in the same Worker via ctx.exports. That last clause is the one that changes what you can build.

When one entrypoint calls another via ctx.exports, the cache evaluates that call the same way it would evaluate a request from a browser. A hit returns the cached response and the callee never runs. A miss runs the callee and stores its response under its own cache key — keyed by the callee’s entrypoint, path, query string, and ctx.props. The caller still runs on every request, but anything it hands off to the callee is memoized independently.

You decide, per entrypoint, which ones cache. In your Wrangler config, the exports map lets you turn caching on or off for each entrypoint by name ("default" is the default export). Opt an entrypoint in to cache the responses it produces; opt one out to keep it running on every request. A gateway or router entrypoint — anything that authenticates, normalizes, or dispatches — should be opted out, so it always runs, and its own output is never served from cache.

That gives you a primitive you can compose. You can author a Worker as a chain of small entrypoints — auth, normalization, routing, the expensive read, the data layer — and let Workers Cache slot in wherever you want it. Each cached entrypoint is a unit of memoization with its own key, its own TTL, and its own tag namespace for purging. Anything you would want to configure about caching — when it runs, what it keys on, when it invalidates — is expressed as ordinary Worker code: which entrypoint you call, what request you forward, what ctx.props you pass, what Cache-Control you set.

To make this concrete, here’s a single Worker that does three things you couldn’t easily do together on any other platform: it authenticates every request, caches the expensive backend behind a multi-tenant-safe cache key, and invalidates that cache when data changes.

Caching is configured per entrypoint. The gateway must run on every request — both to authenticate and because a cached gateway response would skip that auth check — so we disable caching on the default entrypoint and enable it only on the inner one:

{
  "name": "my-worker",
  "main": "src/index.ts",
  "compatibility_date": "2026-05-01",
  "cache": { "enabled": true },
  "exports": {
    // The gateway runs on every request — don't cache it.
    "default": { "type": "worker", "cache": { "enabled": false } },
    // Cache the expensive inner entrypoint.
    "CachedBackend": { "type": "worker", "cache": { "enabled": true } }
  }
}
import { WorkerEntrypoint } from "cloudflare:workers";

interface Env { API_TOKEN: string; }
interface Props { userId: string; }

// Inner entrypoint: the expensive work. Workers Cache sits in front
// of this — on a hit, this code never runs.
export class CachedBackend extends WorkerEntrypoint<Env, Props> {
  async fetch(request: Request): Promise<Response> {
    // ctx.props.userId is part of the cache key, so this is cached
    // separately for every user.
    const { userId } = this.ctx.props;
    const data = await loadExpensiveData(userId);

    return new Response(JSON.stringify(data), {
      headers: {
        "Content-Type": "application/json",
        "Cache-Control": "public, max-age=300, stale-while-revalidate=3600",
        "Cache-Tag": `user:${userId}`,
      },
    });
  }

  // Invalidate a user's cached response. purge() is scoped to the
  // entrypoint that calls it, so it must run inside CachedBackend —
  // the entrypoint that owns the cached response.
  async invalidate(userId: string): Promise<void> {
    await this.ctx.cache.purge({ tags: [`user:${userId}`] });
  }
}

// Outer entrypoint: runs on every request to authenticate and route.
// Caching is disabled for it in Wrangler config (above), so it always
// runs and the auth check is never skipped by a cache hit.
export default {
  async fetch(request, env, ctx): Promise<Response> {
    const userId = await authenticate(request, env);
    if (!userId) return new Response("Unauthorized", { status: 401 });

    // Invalidate this user's cache on writes, from the entrypoint that
    // owns it.
    if (request.method === "POST") {
      await handleWrite(request, userId);
      await ctx.exports.CachedBackend.invalidate(userId);
      return new Response("OK");
    }

    // For reads: strip Authorization (otherwise Cloudflare's automatic
    // bypass fires and nothing caches), then dispatch to the cached
    // backend with the authenticated user's identity in ctx.props.
    const forwarded = new Request(request);
    forwarded.headers.delete("Authorization");

    return ctx.exports.CachedBackend.fetch(forwarded, {
      props: { userId },
    });
  },
} satisfies ExportedHandler<Env>;

The whole thing is one Worker. One source file. One deploy. But there are two execution stages — caching is turned off for the gateway and on for the backend in one small exports block — and a cache sits between them, keyed per user, invalidated by the write path, and serving stale during background refreshes. The cache stage isn’t something you bolted on. It’s a layer of the program, written in code.

The patterns this composes into are open-ended. The same shape works for:

  • Caching a Durable Object. Wrap the Durable Object behind an entrypoint, set Cache-Control on the response, and reads stop touching the Durable Object on a hit. Writes go to the DO directly and purge the cache by tag. The DO stays unaware that caching is happening.

  • Normalizing Accept-Encoding before Vary. The outer entrypoint restores the original encoding from request.cf.clientAcceptEncoding (Cloudflare’s front line normalizes it for cache efficiency) and forwards to a cached entrypoint that varies on the real value. Hit ratios stay high; clients get the right encoding.

  • Stripping tracking parameters before caching. The outer entrypoint canonicalizes the URL — or sets a custom cache key with cf.cacheKey on the ctx.exports call — so the cached inner entrypoint sees only the canonical form, and ?utm_source=anything collapses to a single cache entry.

Stack them. A single Worker can have an outer entrypoint that authenticates and routes, a normalization entrypoint that strips tracking parameters and restores encoding headers, a cached entrypoint that fronts a Durable Object, and a separate cached entrypoint for an unauthenticated public API — each connected by a cache stage you didn’t configure, just decided where to put. The Examples page in the docs walks through several of these end-to-end.

We don’t know of another platform where you can do this. CDN caches sit in front of an origin. Function platforms run functions. We don’t know of another platform that gives you a cache that sits inside a single deployable unit, between the parts of your application, with each cache stage configured by the code on either side of it. That’s what Workers Cache is. And because it composes with everything else the platform already gives you — Smart Placement, Durable Objects, service bindings, ctx.props, ctx.exports — the patterns you can build are open-ended. We’ve barely scratched the surface in this post.

First-class support in your framework

If you’re building with Astro, the Cloudflare adapter wires up Workers Cache for you. Just add the cacheCloudflare provider to your configuration:

// astro.config.mjs
import { defineConfig } from "astro/config";
import cloudflare from "@astrojs/cloudflare";
import { cacheCloudflare } from "@astrojs/cloudflare/cache";

export default defineConfig({
  adapter: cloudflare(),
  output: "server",
  experimental: {
    cache: { provider: cacheCloudflare() },
    routeRules: {
      "/products/*": { maxAge: 300, swr: 3600, tags: ["products"] },
      "/blog/*":     { maxAge: 60,  swr: 86400, tags: ["blog"] },
    },
  },
});

The adapter enables the cache, sets the right headers on the responses Astro generates, attaches Cache-Tag values for invalidation, and gives you a cache.invalidate() helper for purging tags when content changes. Astro pages that opt into server rendering automatically get the “render once, cache, refresh in the background” flow described above — no per-route configuration required, no framework-specific runtime layer to learn.

We’re working with the maintainers of other frameworks to ship the same integration. If you build a framework adapter for Cloudflare, the Workers Cache APIs are exactly what you’d want them to be — header-driven configuration, programmatic purges, no platform-specific concepts to model.

See your cache on the same dashboard as your Worker

Caching is only useful if you can see what it’s doing. The Workers Observability dashboard now surfaces cache hit information per invocation:


You can see, per Worker:

  • Cache hit ratio over time. The number you want trending up after you enable caching.

  • Hits, misses, updates, bypasses broken down. If your hit ratio is low, this is where you find out why — too many BYPASS responses (because something is setting a cookie?), too many MISS responses (because the cache key is partitioning more than you thought?), too many UPDATING responses (because max-age is shorter than your traffic interval?).

Because all of this lives on the same dashboard as your Worker’s other observability — logs, exceptions, CPU time, request counts — you don’t have to context-switch between looking at your zone and your Worker to understand what’s happening.

Billing

Cache hits don’t run your Worker, and they don’t bill CPU time. They do count as a request at the standard Workers request rate, the same as any other invocation. Cache misses and bypasses bill normally — request + CPU time, exactly as they would without caching.

Outcome

Request charge

CPU time charge

Cache HIT (Worker does not run)

Standard rate

Not billed

Cache MISS (Worker runs)

Standard rate

Billed

Cache BYPASS (Worker runs)

Standard rate

Billed

Static asset request

Standard rate

Not billed

Worker-to-worker invocation

Standard rate

Billed if the Worker runs

There’s no separate Workers Cache SKU and no per-GB cache storage fee. Tiered caching, purges, stale-while-revalidate, and the analytics described above are all included.  If a request would have run your Worker and Workers Cache serves it as a hit instead, you still pay the standard request rate, but you pay no CPU time for that request. Because of this, that cache hit costs less than rendering the same response in your Worker.

One thing to watch: when caching is enabled, requests that are normally free — static asset requests and worker-to-worker invocations through service bindings or ctx.exports — are billed at the standard request rate, because each one now consults the cache in front of your Worker.

What’s next

Things we know we want to do next:

  • Smarter co-location with Smart Placement. Today, Cloudflare chooses the upper-tier cache and Smart Placement target separately. On a full miss, the request may travel between Cloudflare locations twice: once to check the upper tier, and again to run your Worker near its data. We’re working to coordinate those choices, so a miss only makes that long-distance trip once.

  • Larger response size limits. At launch, all responses follow the Free plan’s cacheable size limit (512 MB), regardless of your account. That’s temporary — the standard per-plan cache limits will apply once we finish a few rollout steps.

  • More framework integrations. Astro has built-in integration with Workers Cache. We’re working with maintainers to add similar integrations to other frameworks, including TanStack Start and Next.js via Vinext.

  • An API to mark cached responses stale. ctx.cache.purge() removes matching responses from cache. We’re looking at a ctx.cache.invalidate() API that makes matching responses behave as expired, so the next request can still get a fast stale response with stale-while-revalidate while your Worker refreshes the cache in the background.

Try it

Workers Cache is available today to every Worker on any plan.

To get started, add "cache": { "enabled": true } to your wrangler.jsonc, redeploy, and start setting Cache-Control headers. The Workers Cache documentation walks through the full feature surface — including the quickstart, cache keys, purging, composition patterns and examples, and debugging.

Workers used to run in front of the cache. Now they can also run behind it. Use whichever side you need — or, with service bindings, both at once.

We can’t wait to see what you build.

France to Stop Certifying Non-Quantum-Safe Encryption

Post Syndicated from Bruce Schneier original https://www.schneier.com/blog/archives/2026/07/france-to-stop-certifying-non-quantum-safe-encryption.html

France is accelerating its transition to post-quantum encryption:

France’s cybersecurity agency ANSSI said on Tuesday it would stop certifying security products that lack quantum-resistant encryption, a move that will force government bodies and critical operators to shift away from older systems.

Samih Souissi, ANSSI’s chief of staff, said at the France Quantum conference that the agency would halt such certifications from 2027, and that businesses should be buying only quantum-safe products by 2030.

ANSSI approval is required for use in French government agencies and critical infrastructure, making the policy a de facto phase-out of older encryption.

Какво знаем и какво не за връщащите се в България

Post Syndicated from Боян Юруков original https://yurukov.net/blog/2026/migranti/

В доста статии и интервюта се споменава, че все повече хора се връщат в България. Коментирал съм го и аз на няколко пъти, макар и по-резервирано. Виждам, че се обсъжда често колко са се върнали всъщност, какво образование имат и от къде идват. Видимо за някои хора е по-важен тона на кожата, а не какъв потенциал могат да донесат обратно сънародниците ни от чужбина.

Затова реших да внеса малко яснота относно тези твръдения. Ето какво знаем и какво не от наличните данни.

През 2020 за пръв път от доста години броят напуснали страната е по-малък от тези заселили се в България. Между 2020 и 2025-та има от 12 до 42 хиляди механичен прираст всяка година. Общо по данни на НСИ това означава, че 186717 души в повече са се нанесли в България. От тях 34257 от тях са родени в България. Още 17824 имат българско гражданство, но не са родом от България. За последните има три хипотези. Първата са натурализираните българи пренесли се в България в някакъв етап след като са получили гражданство. Втората са български мигранти върнали се от чужбина заедно с децата си, които са се родили междувременно там. Третата са наследниците на насилствено изселените в Турция българи през 80-те. По мое мнение тези почти 18 хиляди са смесица от тези групи с най-голяма тежест втората.

За същия период (2020-2025) 89606 души са получили българско гражданство. 28% от тях са родом от Македония. 14% са от Украйна, 11% са от Турция и 9% са от Молдова. Не знаем дали тези почти 90 хиляди са сред 271-те хиляди нанесли се в България. Не знаем дори дали са стъпвали въобще в страната или директно са заминали някъде по света. Съдейки по анекдотни впечатления от опашките пред консулствата, повечето получили гражданство го използват като възможност да отидат в Германия, Белгия и Австрия. Нямаме конкретни данни за това обаче.

Нямаме публични данни от къде са родом онези върнали се в страната, какъв етнос имат и други социални характеристики. Споменавам го единствено, защото изглежда занимава огромна част от обсъждащите темата. Нямаме данни не защото някой ги крие, а защото подобно на преброяването, етническата принадлежност е въпрос на самоопределяне. Давал съм многократно примери за това със себе си. Отделно най-често данните за образование, доход, продължителност на работа, размер на домакинството и прочие са на база социологически допитвания, т.е. самооценка по въпросници, а не обективни данни от регистри. Същото обясних за микропреброяването в Германия, например. Най-вече подобни въпроси не се задават когато някой се мести в България. Има въпроси за образование и съжителство при смяна на настоящ адрес, но често не се попълват и не се извеждат като справки от ГРАО.

Според същите тези данни на НСИ, едва 4062 лица са променили настоящия си адрес от Германия към България. Тук е важно да се посочи, че това далеч не са всички за които НСИ има данни, че са се върнали от там. Както обясних в статиите ми за избирателните списъци и реалните данни за раждаемостта в страната, статистиката не следи само справките на ГРАО за настоящ адрес, а редица други показатели, по които преценяват, че някой не е постоянно в България. Отделно доста хора не променят настоящия си адрес като заминават или се връщат, което прави такива косвени показатели особено важни. Резултатът е, че отклонението от преценката на НСИ за населението при преброявания е аналогично на това на немската статистическа служба Destatis за Германия. Последните, например, намалиха с 10% оценката си за българските граждани в Германия след последното си преброяване.

Данните на Destatis показват шарена картина от числа за диаспората ни, но общото е, че има голямо намаление по всички показатели. Писах през февруари подробно за това. Тези дни излязоха данните от адресните регистрации и само за 2025-та г. има намаление с 13368 български граждани или 3.7%. За 2024 и 2025 общо са 22075 или 6%. Отделно според грубата оценка от микропреброяването тези в Германия, за които се знае, че или те, или родителите им са родени в България, също намаляват, макар и с под 2%. Според данните за движението на хората, 21 хиляди български граждани в повече са напуснали Германия през 2024 и 2025 без да знаем накъде са заминали. 24300 души в повече са се преместили от Германия в България без да е уточнено място на раждане или гражданството. Тук е важно пак да се спомене, че немската статистика не отчита за български гражданин някого, когато има също немско гражданство.

Събрани тези данни по мое мнение показват, че мнозинството от българите напуснали Германия са се преместили в България. Също, че изглежда са значителен дял от 74-те хиляди души, които са се нанесли в повече у нас.

Това е всичко, което знаем от данните на Германия. Както писах в последната си статия за данните за диаспората ни там, има оценка за месторождението, колко хора са с двойно гражданство, колко деца са родени и навярно нямат българско гражданство въпреки правото си на такова и колко са получили. Знаем за социалния статус, доходите, образованието и как свързват двата края българите там.

Всякакви упражнения и квалификации за българите в чужбина извън описаното тук, както и опитите за разделение на групи обаче не стъпват на измерими факти. Още по-безсмислени са изказванията какви са българите върнали се в страната като произход, етнос, образование или опит. Безсмислени, най-вече защото не би трябвало да има значение – имаме нужда от всеки независимо какъв е в сегашната си ситуация. Безсмислени също, защото гарантирам, че никой няма данни за това и предимно си измисля. Давам Германия като пример, защото познавам методологията и проблемите на тяхната статистика, както и защото са най-голямата българска диаспора в света.

Трябва да спрем да спорим кой какъв е и да се опитаме да разберем по-добре какво стои зад тези положителни числа, да работим да се превърнат в тенденция и да търсим начини да се възползваме от опита на тези хора. За целта трябва да се работи много срещу предразсъдъците в обществото ни не само срещу миграцията, а и често собствените ни деца заминали в чужбина, но и срещу мигранти от страни извън Европа, от които имаме жестока нужда предвид липсата на работна ръка. Желаещи видимо има, но от нас зависи дали ще ги отпратим, дали ще работим с тях или в другата крайност ще ги изолираме в гета както направиха белгийците с предвидим ефект. Същото, впрочем, важи и са сънародниците ни връщащи се в страната. Техните действия ще са индикатор и присъда дали България има някакво бъдеще.

Как социалните мрежи измориха Gen Z

Post Syndicated from Димитри Захов original https://www.toest.bg/kak-sotsialnite-mrezhi-izmoriha-gen-z/

Как социалните мрежи измориха Gen Z

Когато бях малък, баба ми често ме съветваше да ограничавам времето си пред екраните и ме предупреждаваше, че ще съжалявам след време. Но за мен всякакъв вид софтуер и хардуер беше вълнуващ – от конзолите за игри до касата на кварталния магазин и как работи скенерът за баркодове. През годините, когато израствах, всеки нов смартфон беше светлинни години пред миналогодишния, а тепърва навлизащите приложения преобръщаха индустрии като музиката и киното. Исках да прекарвам възможно повече време в интернет пространството, което сякаш беше безкрайно и задоволяваше любопитството ми за всичко. Най-често гледах видеа и четях Wikipedia с часове. Смятах да се занимавам с техника, когато порасна. Та препоръките на баба ми най-често оставаха игнорирани.

Обаче се оказва, че между моето поколение и това на баба вече има нещо общо. 

Според проучване по поръчка на Financial Times от края на 2025 г. при Gen Z и бейбибумърите се наблюдава най-значителен спад в потреблението на социални мрежи. Данните показват, че в развития свят хората прекарват общо с 10 процентни пункта по-малко време от деня си в тях в сравнение с пика на тази статистика през 2022 г. Растеж в потреблението се наблюдава само в групата между 35 и 44 години. Изненадващо или не, негативната тенденция се води най-младите анкетирани – между 16 и 25 години.

За част от нас интернет средата започна да изглежда прекалено изтощителна. 

През 2026 г. най-новият iPhone е почти идентичен с предходния, а социалните мрежи са неразпознаваеми. Във все повече младежки кръгове се забелязва любопитен феномен: мои връстници експериментират със завръщане към dumbphones („глупави телефони“, както сега наричаме „старческите“ джиесеми) за уикенда, слушат музика на MP3 вместо в Spotify, изключват известията си за по-дълги периоди или изтриват самите приложения. Да приемеш аналоговото се превръща в тенденция, дори и не толкова силна към момента. Gen Z започва тих бунт срещу онова, с което израсна. Броят на пазаруващите онлайн в България също спада през 2025 г. 

Но защо?

Основният парадокс, пред който са изправени технологичните гиганти, е защо потребителите отказват да бъдат постоянно онлайн, при положение че платформите стават все по-пристрастяващи. Отговорът се крие в самия модел на мрежите. Колкото по-съвършени стават механизмите за задържане на вниманието, толкова по-ясно потребителят осъзнава безсмислието на процеса. 

Пристрастяването към безкрайното скролване стига до психологически таван, след което се задейства естествена обратна реакция. Когато съдържанието е моделирано единствено с цел изкуствено улавяне на погледа, но не дава истинска стойност на зрителя, той го усеща. Пространството е пълно с видеа, лишени от смисъл и създадени да губят време; голяма част от тях са генерирани с ИИ. Потребителят получава по-голям обем от информация, но по-малко от онази същност, която първоначално го е привлякла. А това води до изтощение и усещане за изгубено време.

Magnifica Humanitas, или за кожата на един изкуствен интелект

Изкуственият интелект вече е история не за машини, а за власт. За достъп. За граници. И за хората, които ще решават как изглежда бъдещето. От нас зависи дали искаме да сме сред тях. От Йовко Ламбрев.

Прекарвам часове на ден в социалните мрежи – гледам съдържание, а също така разработвам собствено. Занимавам се със създаване на видеа за интернет от няколко години. В повечето свои клипчета дискутирам анимационни сериали и новините около тях, като съм натрупал комбинирана аудитория от над 50 000 последователи. И въпреки че интернет е важна част от живота ми, осъзнавам, че той деградира и се превръща в нещо различно от онова, което дълго време познавах. 

Причините се коренят в два основни структурни проблема. 

Първият е свръхкомерсиализацията, която превърна социалните мрежи от пространства за споделяне на идеи в агресивни дигитални молове, където всеки сантиметър от интерфейса е монетизиран, алгоритмите приоритизират платеното съдържание, а потребителят е третиран единствено като импресия. 

Вторият проблем е ерозията на автентичността. В стремежа си да угодят на платформите авторите масово уеднаквиха продукцията си, а навлизането на ИИ допълнително унищожава човешкия елемент.

Първоначално тези приложения бяха инсталирани с цел поддържане на контакт с приятели и проследяване на лични интереси. Днес обаче потребителите се оказват подложени на постоянна бомбардировка от нежелана информация и изкуствено стимулирани емоции. 

Комерсиализирането на интернет беше неизбежно. Той е нашият нов градски площад, а на площадите има търговци.

Проблемът е, че когато основната метрика за успех – при всяка платформа, при всеки създател – е средното време за гледане, следва точно определена логика: съдържанието трябва да прихваща вниманието и да го задържа максимално дълго. Колкото по-дълго аудиторията стои в приложението, толкова повече реклами поглъща и толкова повече пари генерира. Създателите знаят това и работата им е съобразена с него. Самото правене на пристрастяващи видеа е пристрастяващо: когато публикацията ти получи повече гледания от обичайното, YouTube Studio гърми с конфети, TikTok ти изпраща поздравителен имейл. Целият процес е геймифициран. Създателят получава награда, когато генерира приходи както за платформите, така и за себе си, а не когато изгради истинска връзка със зрителя.

С навлизането на ИИ бариерата между идея и изпълнение изчезна, което създаде непрекъснат поток от ненужни никому постове, създадени с цел да събират ангажираност, която после се продава като евтино рекламно пространство. Те често се опитват да накарат потребителя да изпита силна емоция – гняв, погнуса, изненада. Битката за привличането на вниманието може да бъде спечелена от създатели без лице само ако съдържанието им е радикално. Така обаче тези, които застават с лицето си, биват избутани от челните места на фийдовете и имат чувството, че трябва да правят повече за по-малко. Само така могат да се конкурират със свръхпродуцирания slop.

ИИ: Първородният грях

Ако и на вас е омръзнало да четете екзалтирани или дистопични статии за изкуствения интелект и се чувствате загубени в понятията и темата, един умерен, информативен и критичен поглед върху развитието на тези технологии към днешна дата ви предлага Йовко Ламбрев. От човеколюбива гледна точка.

Тази игра унищожава нещо, което преди имаше реална стойност: усещането, че инфлуенсърите са алтернатива на традиционните медии.

Сега в голяма степен те са просто друг вид рекламен носител. Всяко видео, всяко постче сякаш цели да продаде нещо. Да бъдеш „известен“ в интернет за младите е нещо, което сякаш е едновременно „готино“, но и сравнително лесно за постигане. Ето защо има свръхизлишък от хора с много последователи и viral видеа, готови да рекламират всеки, който им предложи адекватна сума.

Водещите на популярния подкаст The Colin and Samir Show, които от години изследват икономиката на създателите на съдържание, наричат настоящия момент „епоха на изобилие“. В своите анализи те отбелязват радикална промяна в поведението на потребителите: хората в лични разговори вече все по-рядко споделят кои са конкретните създатели, които следят с интерес. Масовият отговор вече е: „Гледах едно клипче в Instagram.“ Човек вече не избира активния си кръг от авторитети; той просто консумира това, което алгоритъмът на съответната платформа е преценил, че ще задържи погледа му за още няколко секунди.

Това пасивно поведение е своеобразен защитен механизъм. Доскоро интернет се крепеше на т.нар. парасоциални връзки – едностранното усещане за близост, приятелство и общност между създателя и неговата аудитория. Днес голяма част от хората си научиха урока. Тази връзка е компрометирана и се акцентира върху едностранността ѝ. Когато в четири от пет случая даден инфлуенсър е готов да осребри гласуваното доверие, потребителите подсъзнателно се научават да държат дистанция. 

Когато всеки е „известен“ и аудиториите са толкова фрагментирани, че изчезването ти от фийда минава незабелязано, отговорността изчезва заедно с вниманието. 

Хората те помнят между скролванията, но често дори не поглеждат името на профила ти, а ако твоето съдържание спре да достига до тях, веднага те забравят, тъй като всеки ден виждат още хиляда като теб. Заради тази липса на чувство за отговорност в България може да видим автори с детска целева аудитория да рекламират хазарт. Примерите за неуместно съдържание не са изолирани и сред продукцията, насочена изрично към деца. Инфлуенсърският детски сериал „Русалки“ е критикуван от зрители заради хумора, който често е твърде сексуализиран за целевата си аудитория, и за визуалния стил на героите, който също поражда въпроси. Въпреки тези критики сериалът не само не среща обществено отхвърляне, но се радва на търговски успех – игрален филм по него стигна и до българските кина. 

За изкривяването на ценностите онлайн донякъде е виновно навлизането на краткоформатните видеа – много по-трудно е да покажеш себе си, това, в което вярваш, своите позиции в рамките на едната минута внимание, която повечето зрители ти отделят.

Ако искаш да отправиш истинско послание, то следва да е сведено до нещо, което може да се обясни за секунди. 

Трябва да изкажеш мнението си по даден въпрос в текст, който може да се събере на картичка. Така вместо към нюанси и дълга дискусия хората се стремят да казват само крилати фрази и да ги повтарят често с надеждата повече хора да ги чуят.

Инфлуенсърите и отговорността

За отговорността на един инфлуенсър говорих с Мартин Георгиев – Кралски, чийто канал има над 115 000 абонати в YouTube. Той се опитва по хумористичен начин да обсъжда проблемите, създавани от българските инфлуенсъри, и лошия пример, който дават. Във видеата си показва как колегите му често откровено лъжат, заблуждават или промотират опасни зависимости на феновете си.

Как социалните мрежи измориха Gen Z
Снимка на Мартин Георгиев в студиото му © Кралски

Според Кралски се наблюдава фундаментална промяна в мотивацията, породена от факта, че интернет пространството стана доходоносно. Попитан защо според него някои български инфлуенсъри не изпитват чувство за отговорност пред аудиторията си, той отговори:

Фокусът се измести от задоволяване и грижа за зрителя към задоволяване просто на финансовите нужди на инфлуенсъра. Накратко, той не изпитва чувство за отговорност, защото започна да гледа на YouTube като на бизнес вместо като на комуникация със зрителите си.

В своето преживяване като зрител на YouTube видеа Кралски споделя, че вижда деградация:

Със сигурност бих могъл да кажа, че през последните години се чувствам все повече и повече отблъснат. Става все по-трудно да се намери нещо качествено и стойностно за гледане.

Доказателство за комерсиализацията вижда в изпълването на интернет пространството с видеа, които таргетират аудитории от деца:

Нямаше да има нищо лошо, ако го правеха искрено. Но им личи, че го правят само защото децата са най-масовата публика, най-лесно и безкритично консумират съдържание и са най-предразположени да купят всеки твой продукт, който им предложиш. Това ме кара да се чувствам доста неприятно, защото аз съм в един бранш с тези хора.

Усещането му за отблъскване от платформата съвпада с масовата тенденция. Става все по-трудно да откриеш нещо качествено, когато всичко е оптимизирано за лесна монетизация на гърба на най-наивните.

Попитах го дали вижда решение на този проблем в западната „кенсъл култура“, която така и не се наложи успешно в България. 

Кенсъл културата със сигурност е нещо полезно. Така хем инфлуенсърите няма да се чувстват толкова свободни да правят каквото си искат, мислейки си, че няма да има последствия, хем ще се стимулира критичното мислене на зрителите.

Като създател в нишата на коментарните видеа Кралски е един от проводниците на нов опит за кенсъл култура, била тя и различна от западната. Но голямата отговорност според него остава в нашия собствен клик.

Най-важният фактор според мен е зрителят да се научи да не е консуматор. Ако той не е такъв, тези „лоши инфлуенсъри“ изобщо няма да могат да си намерят публика и няма да могат да се развият. Така няма да се налага те да бъдат „кенсълвани“, защото изобщо няма да могат да се развият толкова, че да стигнат до този етап.

Кралски според мен е най-изявеният критик в българския YouTube на лицемерието, което колегите му проявяват, щом започне разговор за достойнство и ценности. Мартин акцентира върху казуси като този как инфлуенсър, основал асоциация с цел „да въведе ред и правила в съдържанието в социалните мрежи“ и „създаване на етични правила и регулация на съдържанието“, публично дружи с хора, които са антипод на тези цели

Чрез социалните мрежи можеш лесно да насадиш несигурност у хората. 

Някои се възползват от това – първо преекспонират важността на определени проблеми, а после продават решенията им. Голяма част от тийнейджърите признават, че престоят в интернет ги кара да се чувстват по-зле

Момчета на 14 години сравняват физиката си с 30-годишни бодибилдъри на стероиди. Мислят си, че това е абсолютният необходим минимум, за да получат внимание от хората, които харесват. Така им е казал някой, който се удря с чук по главата за по-издут вид на челюстта. Може да звучи комично, но когато си подрастващ, някак си намираш тези неща за смислени.

Обективните данни също са ясни – повечето време пред екран води до влошено психическо здраве. Повишава се рискът от депресия и тревожност.

Ехо, има ли някой?

Много интернет потребители вече не са сигурни каква част от съдържанието, което виждат, е създадено от хора. И в случая не става въпрос само за видеа и постове, направени с ИИ. Популярна е „теорията за мъртвия интернет“, според която в днешното интернет пространство преобладава фалшивата активност.

Преди няколко месеца разследване на WIRED документира как дигитална маркетингова агенция е създала хиляди фалшиви фен профили, за да симулира масов ентусиазъм около индирок групата Geese. Те са пресподеляли видеа на бандата, взаимно са харесвали и коментирали постовете си. По този начин агенцията се е опитала да създаде усещане, че съществува по-голяма и развълнувана фен база на групата. (За протокола, харесвам музиката им, но бих предпочел да знам, че и другите им почитатели са истински хора.) Когато дори ентусиазмът на феновете може да е симулация, доверието – главното нещо, което винаги е свързвало създател и зрител, се срива.

Живеем в реалност на агресивен, денонощен интензитет онлайн, а новините от последните години често звучат по-скоро като абсурдна пародия, отколкото като истина. Част от Gen Z, които тепърва навлизаме в живота си като възрастни, чувстваме, че здравият разум се е загубил някъде между всички пропагандни, първоинстинктни и радикални постове, които виждаме. Когато всичко наоколо започне да изглежда изкуствено, усещането за безсмислие става неизбежно. 

Gen Z и промените в климата. Защо младите хора са все по-ангажирани със зелените политики

Как ще се почувства едно дете, ако в училище му кажат, че питейната вода на планетата ще свърши, преди да навърши 50 години? Теодора Станимирова познава усещането от личен опит. Днес тя разговаря с младежи от своето поколение, ангажирани със зелени политики, и ни разказва какво е научила.

Голяма част от преживяването в социалните мрежи в момента се усеща като продукт на sunk cost fallacy1.

Гледаме някакво видео до края, макар още по средата да сме осъзнали, че няма стойност. Така се оказва, че знаем цялата история на някакъв си генериран с ИИ герой със странно име. Продължаваме да скролваме с надеждата все някога да видим нещо, което наистина ни вълнува – измежду многото реклами и препоръчани постове.

Именно от този наложен дигитален абсурд се опитват да избягат доста млади хора. Нашето поколение първо усети кризата просто защото израснахме пред екраните и притежаваме дигиталната интуиция да разпознаем проблема. 

(И да, бабо, вероятно беше права.)

1 Заблуда на потъналите разходи (англ.) – психологически механизъм, при който човек продължава да влага време и ресурси в обречена кауза, защото вече е вложил много в нея. – Б.р.

Spotted at Computex 2026: Micron’s First PCIe Gen6 Data Center SSD, the 9650

Post Syndicated from Ryan Smith original https://www.servethehome.com/spotted-at-computex-2026-microns-first-pcie-gen6-data-center-ssd-the-9650/

Ahead of the launch of PCIe Gen6 CPUs, Micron was at Computex 2026 showing off their first PCIe Gen6 SSD for data centers, the 9650

The post Spotted at Computex 2026: Micron’s First PCIe Gen6 Data Center SSD, the 9650 appeared first on ServeTheHome.

The collective thoughts of the interwebz