Preloader

Olympus Blog

In the Olympus blog you'll find the latest news about the community, tutorials, helpful resources and much more! React to the news with the emotion stickers and have fun!

Fixing the Portobello Police Station Clock

I got a message from a friend today which read along the lines of "I know we were going to meet in Edinburgh today, but do you fancy meeting in Portobello instead and trying to fix the clock in the old police station with me?"

I don't know about you, but clambering around the dusty nineteenth century clock tower of an abandoned police station sounds an ideal way to spend a Saturday afternoon to me, so I jumped at the chance.

The rather grand Portobello Police Station building.

This was in response to a message from Action Porty:

"Can you help keep Portobello on time? Action Porty has recently bought the Police Station for the community, but we can't work out how to change the time on the clock tower! We wondered if there was anyone in the community with expertise that could advise us of the details for changing the time? Or who best to contact for help?"

The bit I hadn't figured out was that clocks are high up. If we were to fix the clock we would be next to it and so we would also be high up. And being high up involves heights, and steep long ladders are needed to get up high.

I suppressed my whimpers at climbing up the rather high, steep ladder into the likely spider-infested darkness and was rewarded with an explore of the attic, which lead to another set of steps which went to the clock tower itself.

Once there we were rewarded with the magnificent sight of the clock mechanism and its three clock faces:

Construction of the building apparently started in 1877 and it seems quite feasible that this was an original mechanism. Modifications had been made – electric motors powered the mechanism and a control box allowed the clock chime to be turned off overnight.

The building was built to house meeting, administration and courts for Portobello burgh council. After Portobello was absorbed into Edinburgh the building became a library, and then a police station.

The Scottish Land Fund has since enabled it to be purchased for community ownership and when I went there many volunteeers were removing the 1970s polystyrene ceiling tiles and wood-chip wallpaper to reveal the original grandeur of the building.

The first step was to figure out how to set the time. This is probably easy to someone in the know, but we weren't.

We figured that the clock is driven from the small motor, through a series of gears onto a shaft which rotates once per hour. This shaft is split into three – one for each face, and drives the minute hand directly. A gear on each clock face derives the hour hand. If we could disconnect the motor maybe we could turn the shaft directly and set the time.

Sure enough – we found a pawl on one of the gears which could be lifted out of the way. Once this was done the shaft turned easily and we could set the time. Each hand had a counterweight on the clock face and we could set the time by imagining the hand we couldn't see opposite to each counterweight.

We had a slightly stupid moment when we thought we'd got it wrong, and the clock was running backwards – only to realise we were inside the clock and so were looking at it the wrong way. Doh. We had to head down to the ground to check that the time was correct – but – phew – time was OK and not running backwards.

Figuring out the chime was more difficult. The original mechanism had been modified, and switches and a motor had been added. These led to a box containing a circuit board which definitely was not from 1877. It contained a PIC 16F628 microcontroller which had a suspected date-code of 2001. There were a number of relays, a power supply and a battery charging circuit to charge the included lead-acid battery. I assume this box would be getting on for 1/4 century old, but it still seemed to work. No idea how good the battery was; maybe this should be tested another time.

We have idea who designed and built this box; there were no obvious description markings. Is it a standard thing, or just a one-off for this clock?

A mystery unmarked circuit board, ripe for deciphering.

This box didn't have much of a user interface, other than a non-obvious button marked "advance". The only problem was that pressing it did nothing. How did this thing work? Surely you had to set the time somehow.

A summary after more head scratching, measuring and fiddling:

I had hoped we could do a "test" by letting the clock chime thirteen (or even just strike continuously), but I was up in the tower with a bunch of spoilsports who wouldn't let me. Oh well, next time when they're not around.

So – we waited until 4pm and the clock had advanced and we checked outside and the time was good. Come 4pm and the bell chimed 4 times. Dongggggg. (Bells are loud when you're next to them. Oops again.) This was perfect timing – 4pm was the time we had to leave.

We decided our mission was a success. Some local residents may have decided that the chime reinstatement was not a success, so we disconnected the chime motor to disable the chime.

After a quick visit to check out the police cells we decided to head across the road to the Portobello tap for a beer and one of their burgers to celebrate our success. Lucy the dog came to join us and she was very quick to point out how starved she was, and really a little chip would just tide her over until she got her dinner, as she had bad owners who just never fed her. She isn't a labrador really.

After our beer we thought of some "enhancements":

It was a fun afternoon, and thank you for the invite. I'm looking forward to seeing what becomes of the police station now it is community owned – it has the potential to be such a fun place! Maybe I can go back and become more involved.


Source: Hacker News

Radicle: Disclosure of Vulnerability in the Network Protocol


Radicle is a peer-to-peer, local-first code
collaboration stack built on Git.

Summary

What happened?

Two critical security vulnerabilities in the network protocol used by Radicle nodes were reported.

Which versions are affected?

All versions of Radicle that were released to date are vulnerable.

What is the issue?

Network traffic between nodes is not encrypted and not authenticated.
Authentication of repository contents via Signed References still detects if attackers along the network path between two nodes modify objects in transit.
Thus, the main concern is information leakage, i.e., attackers along the network path between two nodes reading objects in transit.
For public repositories, information leakage is less of a concern.
However, encryption in transit is crucial for private repositories.

What should users do?

We recommend to stop using private repositories until a fix is released.

When will the fixed version be released?

Due to a lack of version negotiation features, combined with the fix being incompatible on the wire, a backward compatible mitigation is not feasible; that means the release to fix this issue will be breaking, thus bump the major version number.
Work towards this is under way.
With this disclosure, our goal is, first and foremost, to be honest and clear about the situation, so that users can assess and act accordingly, while we are working on a resolution.

The vulnerabilities

  1. The network protocol used by Radicle does not give the confidentiality it was expected to give. Anyone who can observe the network path between two nodes can read the data they exchange as the data is sent in plain text. This was reported to us by Konstantinos Maninakis on 2026-06-24. You can read his post about the issue at https://maninak.com/blog/radicle-cleartext-transport-vulnerability/. We reported upstream, see this issue.
  2. Peer authentication in the connection handshake is broken and allows impersonation. An attacker can connect to your node and present a Node ID that is not its own. Private repositories are shared only with allow-listed Node IDs. An attacker who fakes an allow-listed Node ID can fetch a private repository directly, without being on the network path. This was reported to us by cryptocode on 2026-08-12. We proposed a fix upstream, see this pull request.

The second flaw is harder to exploit on its own than it sounds. To impersonate an allow-listed Node ID, an attacker must first know one. The allow-list is not public, so an attacker who is not on the network path has to guess.

In practice, the two flaws are most useful when they can be exploited together: an attacker on the path sees the Node IDs at both ends of a connection, and both are normally on the allow-list.
That attacker can read whatever is exchanged while they watch, and can then use a Node ID they saw to fetch the whole repository on demand.
The realistic threat is anyone on the path between your node and node it syncs with, and no setting or allow-list protects against them.

We are publishing this before the security update is available. You can act on it today, and no fix we release later can undo an exposure that has already happened.

Workaround

  • Stop using private repositories (over the network) until the security update is released.
    Stop seeding private repositories, as described below.
    However, you may want to keep your private repositories in storage, i.e., not delete them entirely, so that you may start seeding them again once a fixed version is released.
  • Consider every private repository you have transmitted over the network to another node leaked.
    If it contained unencrypted credentials, keys, or tokens, rotate them.
  • Using additionally encrypted transports, such as Tor, I2P, or other overlay networks or VPN solutions are not sufficient to protect your data.
    They hide network traffic from an attacker along the network path between two nodes.
    Even though that limits the attack surface, this does not prevent peer impersonation, and a targeted, sophisticated attack might lead to exfiltratation of the contents of private repositories.

How to stop seeding private repositories

List the private repositories in storage:

rad ls --private --all

Change the seeding policy of very individual repository to “block”:

rad block <RID>

Note: We recommend to use rad block instead of rad unseed, in case the seeding policy of your node is set to allow.

rad unseed removes the seeding policy for a repository, and your node then falls back to its default policy.
The default is block, so on a default configuration rad unseed is enough.
If you changed the default seeding policy to allow, your node keeps serving the repository after you unseed it.
rad block sets an explicit block, which the node checks first, so it works either way.

To stop the node completely:

rad node stop

Three limits on what this achieves:

  • It stops your node from serving the repository.
    It does not delete your local copy. The copy stays in $(rad path)/storage/<RID without the rad: prefix>.
    Remove that directory only if you understand you are deleting the repository and every fork of it that you hold.
    If in doubt, do not delete from storage.
  • It does not reach copies that authorized peers already fetched.
    Those peers still hold the data, and their nodes have the same flaws.
    Ask them to block the repository too.
  • It does not undo past exposure. Data that has already synced over the network should be treated as disclosed.

What is affected

Both flaws are in the node transport layer, not in the repository data model. Git objects and signed references are verified at the storage layer as before. An attacker cannot forge code or identities.

The confidentiality flaw has been present in every Radicle version released to date.

Resolution

We are actively working on a resolution.

The resolution involves replacing Radicle’s networking protocol (currently a custom protocol using Noise) with iroh, an open source peer-to-peer networking stack built on open standards. We already shared out plans to migrate, and the vulnerabilities have given us all the more reason to move forward with this. Beyond addressing the vulnerabilities, iroh brings additional features like NAT traversal which improve the reliability and resilience of the Radicle network.

Such a change to the network transport is by its nature backwards-incompatible. As such, it causes the network to partition into the upgraded and non-upgraded clusters that can not communicate with each other.

Even though this means a major release, we are working to make the upgrade path as smooth as possible, by focusing breakage on the network end, keeping storage layout compatible.

Acknowledgements

We would like to thank Konstantinos Maninakis and cryptocode for responsibly disclosing these vulnerabilities to us and staying in touch.

If you would like to report a security issue, please refer to https://radicle.dev/.well-known/security.txt.


Source: Hacker News

U.S. embassy calls Australia's proposed social media law censorship

Sept. 23 (UPI) — The United States criticized a proposed law in Australia that would give users the ability to opt out of social media algorithms, calling it censorship.

The new law, called the Digital Duty of Care, would require tech firms to give users the option to turn off the algorithms and failing to do so would result in fines.

The law will also require companies to limit harmful content. They will have to block content that promotes self-harm or eating disorders, limit their artificial intelligence chatbots, and limit addictive features in online games and apps.

The U.S. Embassy in Canberra issued a statement saying that it had “serious concerns” about the law and said it could allow the government to “enforce vague definitions of ‘harm'” and would lead to “viewpoint-based censorship.”

“We ask that Australia clarify how exactly ‘harm’ and ‘risks’ shall be determined … ensuring these definitions do not encroach on protected speech,” the embassy’s statement said.

Prime Minister Anthony Albanese responded, saying the law would not allow government control but would empower the users to choose what they see.

“It’s not about giving government control,” Albanese told the media in New York, where he is attending the United Nations General Assembly. “It’s about giving people back control over what they receive on their devices.”

The embassy also said the laws may risk “reducing the reach of independent journalists or other voices whose content touches on sensitive or controversial topics.”

The opt-out would “allow regulators to impose rigid, one-size-fits-all platform design requirements” on tech firms, which could affect users outside of Australia, it said.

“Mandated platform design features, especially when applied to algorithms, may affect what users see, say, and hear not just in or from Australia, but globally.”

It also said the laws could affect Australia’s “reputation as a jurisdiction that enables innovation.”

Australia also introduced a social media ban for children younger than 16 last December, sparking other countries to follow suit.

Dali Kaafar, a professor at Macquarie University and executive director of its Cyber Security Hub, told The New York Times that it was unusual for the United States to intervene so directly using “language this strong.”

“These platforms operate globally, but the algorithms governing what Australians see, what is amplified to them and how their attention is shaped are largely designed and controlled overseas,” Kaafar said. “Australia has a legitimate interest in deciding what protections and choices should apply to people using those systems in Australia.”

Tama Leaver, a professor of Internet studies at Curtin University in Perth, told The Times that most users likely won’t opt out and said, “it is strange for the administration to take such a strong position on this when the likelihood is that even if it was implemented, it wouldn’t do much damage to the company’s bottom line,” Leaver told The Times.

This week in Washington

President Donald Trump speaks to more than 100 hunters and fisherman at a dinner in the Rose Garden of the White House on Thursday. Photo by Jim Lo Scalzo/UPI | License Photo

Source: U.S. News

Gemini 3.8 text-to-speech

Gemini 3.8 text-to-speech says hello

Sep 23, 2026

|

Gemini 3.8 Flash TTS and Gemini 3.8 Flash-Lite TTS are our most expressive audio generation models yet. Generate custom character voices and direct scene dialogue across Google AI Studio, Gemini API, Gemini Enterprise, Gemini Notebook, and Google Vids.


Leland Rechis

Group Product Manager

Alan Cowen

Director, Research Science, on Behalf of the Gemini Audio Team

Share


a text card image reading "Introducing Gemini 3.8 Flash TTS and 3.8 Flash-Lite TTS"

Today, we’re introducing two new text-to-speech models to the Gemini family, transforming voice generation from static presets into a dynamic creative studio. These models enable creators, developers, and enterprises to create richer, more expressive audio experiences, while enabling improved user experiences in products like Gemini Notebook and Google Vids.

  • Gemini 3.8 Flash TTS: Built for deep creative direction and character design. Create entirely new voices from scratch using natural language prompts to bring characters to life across gaming, immersive audiobooks, podcasts, and interactive media. Direct every performance line by line with granular control over acting cues, pacing, dialect shifts, and backchanneling.
  • Gemini 3.8 Flash-Lite TTS: Built for high-volume, cost-efficient scale. Optimized for high-volume dubbing, audio content creation, and expressive voice agents with fine-grained control over tone, pacing, and expressive nuance.

These models complement our fast-growing Gemini Audio family, following 3.5 Live Translate, 3.5 Transcribe, 3.8 Live, and 3.8 Live Extended Thinking.

Create and customize your own voices

Scale up from 30 original voices to an infinite library. Whether you need an entirely original character voice or a consistent brand ambassador, our 3.8 Flash TTS model powers a full vocal studio. This enables you to create and use expressive, natural-sounding voices for every moment, while empowering developers and enterprises to easily build custom audio experiences.

  • Generative voice design: With Gemini 3.8 Flash TTS, create bespoke voices from scratch by customizing role, accent and voice characteristics across more than 100 languages and dialects using natural language prompting — whether you’re bringing a dramatic, fire-breathing dragon to life or crafting a charismatic narrator with a distinct regional cadence.

  • Expansive voice library: Access 2,000+ production-ready voices with broad language coverage — including regional varieties like Mexican Spanish, Quebec French, and Scots English.
  • Voice replication: Recreate consistent vocal profiles from just a 30-second audio sample of your voice or a voice you have the rights to use, backed by built-in consent verification, SynthID watermarking, and C2PA credentials to protect both developers and their vocal talent.
  • Save and scale: Save and manage the custom voices you designed to ensure consistent performance and minimal drift across ongoing projects.
  • Voice remixing: Coming soon, pick a voice from our voice library and fine-tune timbre, pitch, pace, and accent. Use prompts to dial in characteristics (e.g. “add subtle Southern US accent” or “soften the delivery”).

Direct the performance, line by line

Once you’ve selected your voices, both TTS models give you precise control over how each line is delivered.

  • Direct performance line by line: Write your own stage directions or let Gemini steer delivery with natural script cues — from a calm customer service agent to a whispered suspense scene.

  • Long-form generation: Maintain high voice quality, natural pacing, and character timbre across hours of continuous audio with minimal speaker drift — ideal for podcasts and audiobooks.
  • Native two-speaker scene staging: Direct multi-turn conversations seamlessly from a single script —whether for a podcast or dramatic storytelling—while keeping both voices distinctly separated with natural conversational turn-taking.
  • Scripted vocal bursts & backchanneling: Add realistic conversational texture using non verbal cues (like <laughs>, <sigh>, <gasp> and active-listening interjections (like |mhm| or|yeah|) for precise comedic timing and reaction beats.

Get expressive high-quality speech generation built for global scale

Gemini 3.8 Flash TTS delivers leading voice customization capabilities, securing the #1 overall spot on Hume AI’s Voice Design Benchmark (71.4) and also leading in accent modeling (60.8).

Gemini 3.8 Flash TTS and Gemini 3.8 Flash-Lite TTS enable truly expressive performances without sacrificing reliability, also securing the #1 and #2 spots respectively on Hume AI’s Overall Quality Index. The model shows major improvements on a wide range of use cases such as long-form content and dual-speaker screenplay control compared to Gemini 3.1 Flash TTS.

In blind human preference evaluations on Voice Arena, Gemini 3.8 Flash and Flash-Lite TTS secure top positions amongst competitors in key global languages, including Japanese, Brazilian Portuguese, Vietnamese, Modern Standard Arabic (MSA), Mexican Spanish and Hindi. With support for over 100 languages, these models empower creators, developers, and enterprises to build high-quality, multilingual voice experiences worldwide.

Build with trust, consent, and transparency

We built our voice creation and replication capabilities with strict safeguards to help protect voice talent, respect identity, and ensure content transparency. For voice replication our system leverages consent verification: users must provide a verbal consent recording from the voice owner that matches the reference speaker before a voice can be created.

More broadly, every audio clip generated by our Gemini Audio models is watermarked with SynthID. This imperceptible watermark is woven directly into the audio output, ensuring AI-generated speech remains detectable to help prevent misinformation. For more details on our approach to safety and responsibility, review the model card.

Try our new Google AI Studio audio playground

Starting today, developers can experience these new speech generation capabilities in Google AI Studio. Built like a voice design workspace, you can prompt entirely new vocal identities from scratch or replicate your own voice

1
, then bring them directly into a dual-speaker screenplay editor to direct line-by-line delivery.

Try voice replication in Google AI Studio.

Deploy high-performance voice interfaces with ease

By using the Gemini API, developer platforms such as Agora, LiveKit, Pipecat, Vercel enable developers to build and deploy high-performance speech generation experiences with ease.

We’re partnering with companies like Figma, HeyGen, Linguana, Wondercraft, 99.co, and Ollang, who are integrating our latest TTS models to help accelerate global dubbing, localize media with nuanced regional accents, and power conversational voice agents at scale.

Start using our latest Gemini Audio models:

Gemini 3.8 Flash TTS is rolling out starting today:

Gemini 3.8 Flash-Lite TTS is rolling out starting today:

Get the latest news from Google in your inbox

Sign up for our newsletters with product updates, event information, special offers, and more.

Your information will be used in accordance with Google’s privacy policy. You may opt out at any time.


Source: Hacker News

UK military jamming other nations' satellites to defend itself, BBC told

UK military jamming other nations’ satellites to defend itself, BBC told

Getty Images Stock image of the UK Space Command badge stitched onto the arm of a soldierGetty Images
It comes as the UK unveils a new unit dedicated to defending the UK’s satellites in space – named the Space Effects Squadron

The British military has been jamming or blocking satellites from other countries in order to defend itself from hostile threats, the BBC has been told.

The RAF has been using a ground-based system for the past year, which a defence source said had already been used “to deter our adversaries”.

It is understood the system could be used to prevent a hostile nation’s satellites from tracking the movement of the UK’s nuclear armed submarines or other sensitive military operations, such as those involving special forces.

It comes as the head of the RAF said the UK faced “unprecedented threats” from adversaries in space, coinciding with the creation of a new RAF unit set up to defend Britain’s satellites.

The Ministry of Defence (MoD) said the new Space Effects Squadron will be focused on “disrupting, degrading and denying hostile threats in space”.

The squadron will protect British satellites used to warn of incoming missile attacks, provide communications and help guide ships, the MoD said.

In a speech on Wednesday, Defence Secretary Wes Streeting said daily lives depend on satellites that power everyday technologies like mobile phones and banking apps, adding the loss of GPS would cost the UK economy £1.4bn a day.

“Our dependency on space is precisely why it is increasingly under threat from our adversaries.” he said.

“We depend on them for everything from weather forecasts, energy supplies, and financial transactions to sat-navs, mobile phone connections, and Amazon deliveries,” said Streeting, adding that the loss of “everyday conveniences would undermine our daily freedoms, and trust in our institutions.”

Speaking at the UK Space Conference, Streeting said that threat from Britain’s adversaries was growing in “scale, speed and sophistication”, adding that the “challenges in space increasingly mirror the geopolitics on Earth”.

A number of nations are believed to have similar ground-based systems against satellites. Last year the then head of the UK’s Space Command said Russia was trying to jam UK satellites with ground based systems “every week”.

The defence source described the UK’s terrestrial electronic warfare capability as “world leading, and more”.

Last week US confirmed for the first time that it had also deployed an unspecified “weapon” in space to defend its own satellites.

Both China and Russia condemned the move – warning of an arms race in space.

However, Washington has already accused both Russian and China of developing their own space weapons – ranging from electronic jammers, lasers to blind other satellites and even projectiles that can be fired from satellites in orbit.

Getty Images Mid-shot of Air Chief Marshal Sir Harvey Smyth taken in July 2026. He is looking off-camera and speaking behind a podium with a microphone. He is wearing a navy blue military uniform with golden tassels across his shoulder.
Getty Images
Air Chief Marshal Sir Harvey Smyth said there were “more and more irresponsible and provocative actions” from the UK’s adversaries.

In May, the RAF tracked a series of “dangerous manoeuvres” by five Russian satellites moving close to two Finnish commercial satellites. The RAF’s Air Chief Marshal Sir Harv Smyth said in June that a Russian satellite constellation had caused disruptions to GPS signals across Europe and Canada.

The UK has a handful of military satellites in orbit for surveillance and military communications. But it works closely with the US Space Force – which has many more.

In a separate speech at the space conference, ACM Smyth added that “unfortunately we are seeing more and more irresponsible and provocative actions from our adversaries”.

ACM Smyth warned that without satellites, some of the technologies people take for granted would be lost and would make every sector “less efficient, less prosperous and less secure”.

“Sat-nav systems would fail, congestion on our roads would be severe and our emergency services would take longer to help those in need,” he said, adding that satellites are also needed to monitor the weather and the effects of climate change.


Source: Hacker News

Making Tailscale Faster

Blog|productSeptember 22, 2026

We’re making Tailscale faster

Authors

Kabir SikandKabir Sikand
Headshot of Kevin PurdyKevin Purdy

Contributors

Alex Valiushko
Claus Lensbøl
Michael J. Fromberger
Jordan Whited

Two black app grids with 9 circular buttons each connected by a lightning bolt icon on an orange and brown gradient background, representing data transfer between devices.

If you’ve been following Tailscale at all, you know we’re really just a bunch of geeks who care a lot about internet connectivity. One thing we love to talk about is NAT Traversal. That’s one of the core value-adds with Tailscale: we tamed NAT. Not every network is friendly, but Tailscale can still find a path in a wide range of conditions. That’s not the only important thing for an internet protocol: the data plane also has to be performant.

Over the years we’ve been investing in making Tailscale fast. We started by increasing TCP throughput on Linux devices. Then we made significant breakthroughs in wireguard-go to surpass 10Gb/s on bare metal. We later leveraged segmentation offloads to increase throughput over 4x for UDP-based applications. Alongside these improvements to our data plane, we built primitives like Tailscale Peer Relays, which can improve network performance in tricky conditions.

All of this has made Tailscale practical for more performance-sensitive workloads. It means you can use Tailscale for continuous integration, agentic workflows, remote development environments, robotic edge devices, heavy data and telemetry workloads, and more. Tailscale helps those devices connect across a wide range of network conditions.

So yeah, we think Tailscale is fast. But we also think we can make it faster.

Today we’ll detail how we’re boosting throughput for app connectors, subnet routers, and exit nodes, with some multi-queue technology (landing in the second half of 2026). We’ll also preview some throughput and memory overhead improvements we’re deploying in upcoming stable client releases. And we’ll look at some performance tooling issues we want to solve for our customers.

Less memory overhead for small packets

Most network packets are tiny, like 1 KiB. But to use Linux’s most efficient throughput tools, like Generic Receive Offload (GRO), Tailscale has to be ready to accept 64 KiB of traffic at once. It’s a bit like container shipping: the ports, ships, and trucks are built for one container shape, however full it happens to be.

Tailscale has to unpack those containers—every packet gets decrypted and delivered on its own. The wireguard-go implementation that informs Tailscale’s cryptography and networking essentials, only offers one 64 KiB buffer size to unpack into. So a 1 KiB packet is copied into its own 64 KiB buffer, every time. That’s a rich optimization target.

On Linux and Android, Tailscale now leaves those packets where they landed. It identifies where each one starts and ends inside the single large read instead of copying it somewhere new. Small packets stay small in memory, many share one allocation, and they spend less time being copied. In itself, this led to a roughly 5% speed-up in many network configurations.

Diagram comparing packet buffer allocation before and after optimization. Before: three packets each copied into separate 64 KiB buffers with unused space. After: three packets sized and tagged for destination, consolidated into a single buffer with dividers.

Separately, we shortened packet queues—the lines packets wait in between stages of the pipeline. The queues are there to absorb bursts of traffic. Testing showed that most of that depth went unused, while shorter queues meant less waiting time and less memory overhead.

What do we do with all that freed-up memory space? We passed the savings on to some of the hardest-working nodes: subnet routers and app connectors.

Multi-queue for subnet routers, app connectors, and exit nodes

Subnet routers can look completely different across different tailnets. For someone running a small homelab network, a subnet router can easily handle a small set of 192.168.x.y non-Tailscale devices. A subnet router that fronts a cloud deployment, one with hundreds of peers, will carry substantially more traffic.

Until recently, subnet routers, app connectors, and exit nodes processed packets for multiple independent streams in one ordered, single-thread pipeline. That meant a single lane was shared across many connections, because a receiving application must never see its own packets arrive out of order.

Having reduced our memory footprint, we had capacity to implement a multi-queue system: several lanes instead of one, scaled to the machine’s resources rather than the number of peers. Each stream of packets gets a lane and stays there, while the lanes run in parallel, allowing work to spread across CPU cores.

Diagram comparing single pipeline vs multi-queue processing architecture. Before: packets flow through one Reader to four Crypto stages then Writer to Devices. After: packets distributed across four parallel Reader-Crypto-Writer pipelines to Devices.

It results in higher aggregate capacity and lower delay between receiving and forwarding packets for subnet routers and app connectors. Hardware you already have gets used more efficiently. App connectors and exit nodes, typically serving many users with short-lived connections, get a particularly noticeable boost.

“This translates into lower latency, essentially faster processing of data from the moment we read it off the wire to the moment we send it to the OS,” said Alex Valiushko, member of technical staff at Tailscale.

Throughput gains with writev

Taking advantage of Linux’s writev capabilities in the Tailscale client, Tailscale can pass multiple pieces of packet data to the Linux kernel in one operation, rather than having to copy and combine those pieces before passing them to the kernel. The v in writev stands for “vector”: Tailscale can describe separate pieces of data that need to be moved, without moving them. It means fewer copies of packet data in memory, fewer write operations, and higher throughput.

Faster startup with netmap caching

For now, these speed-ups are available only on Linux and, where applicable, Android systems. But we’ve also been working on features that apply to other systems. Tailscale clients will soon be able to use netmap caching to start more quickly in many conditions.

A machine connecting to Tailscale usually starts by connecting to Tailscale’s control plane, in something like 100 milliseconds on a typical network. The machine authenticates and gets a “network map” (netmap) describing the devices it can reach and how to reach them. This startup process should feel fast, maybe instantaneous, and with a good network connection, it typically does.

But when you’re on bad airplane Wi-Fi, or inside a hotel with aggressive filtering, or other not-great connectivity setups, it can take a while for the machine to reach the control plane—and sometimes you may not be able to reach it at all. It’s often not obvious where the problem is, but the effect is that you can’t reach other devices.

Even under ideal network conditions, 100 milliseconds of startup latency may be too much for some latency-sensitive workloads.

Netmap caching helps machines get connected when the control plane is not quickly reachable. When it’s enabled, each device on your tailnet stores a copy of the netmap on disk. When a device starts up, it can use that cached copy to establish connections with other devices on the tailnet, until it’s able to contact the control plane to get the latest info. (These connections are negotiated between the devices directly, and Tailscale does not see any of the traffic, as usual).

“Bad network conditions—that’s really the space where people can get a lot of utility out of netmap caching,” said Claus Lensbøl, member of technical staff. “[A device client says], ‘You know what? We haven’t talked to control yet. We’ll probably get there soon. In the meantime, you can still start doing something.’”

There are a few limitations. Caching can only work if the device has previously connected to the tailnet at least once, to fetch a network map from the control plane. In addition, netmap caching requires the device to have persistent disk space to store the cache. We’ve taken care to minimize unnecessary disk writes, but in some cases you may not want to enable it. For example, on exceptionally large tailnets, updating a cache may require a lot of disk traffic. Likewise, devices that use slow or wear-sensitive storage like SD cards may prefer not to enable netmap caching.

For most devices on most tailnets, though, this feature can notably speed up how quickly devices can establish contact with each other at startup. We’ve seen tailnets with poor control plane reachability start sending through the data plane, on a “warm” cache start, one to two orders of magnitude faster than from a “cold” start. For devices facing variable startup latency, or far away from a DERP server or the control plane, the benefits are particularly tangible.

When you can see all these speed-ups

  • Memory reduction via buffer changes (Linux/Android) is expected in the v1.104 client.
  • Multi-queue to benefit subnet routers and app connectors is planned for a release after v1.104.
  • Throughput gains (Linux/Android) were partially implemented in spring 2026; leveraging the additional gains in memory and throughput is planned for a release after v1.104.
  • Netmap caching is available as a feature flag in the current Tailscale client; it is expected to arrive by default in v1.104, following further testing. Mobile clients are expected to have the feature in a release after v1.104.

Performance is still difficult to diagnose and test

Sure, we think Tailscale is fast. But you shouldn’t have to trust us on that. That’s why we’re exploring a Tailscale-aware monitoring and testing toolkit. We want to give our customers the tooling they need to test, diagnose, and understand their network configuration, in a way that’s Tailscale-native.

Here are the gaps we see in modern performance testing:

  • Distribution tax: Most performance tooling is point-to-point, and requires you to install something on every endpoint.
  • Workflows are rigid: It’s pretty easy to run the wrong test, get the wrong output, and chase a problem that’s not there.
  • Protocol support: Many tools don’t support newer protocols, such as QUIC and HTTP/3.
  • Tailscale-awareness: General-purpose tooling is not Tailscale-native. It can’t tell you if a connection is using DERP or is direct, whether a peer relay might help, or how the connection path changes over time.

Existing tooling doesn’t understand Tailscale-native paths and states. So we’re exploring tooling that does. Help us shape the future of performance testing at Tailscale.

Share

Loading…


Source: Hacker News

Harvey Weinstein sentenced to 15 years for assault of production assistant

Sept. 23 (UPI) — A Manhattan court sentenced disgraced film producer Harvey Weinstein to 15 years in prison Wednesday for sexually assaulting Miriam Haley, a former production assistant on Project Runway.

The punishment came after a New York jury found Weinstein, 74, guilty in June 2025 of committing a sexual act against the woman in his SoHo apartment in 2006. Prosecutors sought 20 years in the case, while Weinstein’s lawyers requested nine years, The New York Times reported.

Both Haley and Weinstein spoke in court Wednesday morning ahead of the sentencing. Haley said she has been ridiculed in the media in the years since she came forward with the allegations against Weinstein. She said she’s also been diagnosed with post-traumatic stress disorder.

“It’s a life sentence for me,” she said, adding that the backlash has left her “questioning every encounter I have.”

Weinstein said he was innocent but offered an apology to those he hurt, CBS News reported.

“I really do have remorse for Miriam Haley,” he said.

The Manhattan Supreme Court jury that found Weinstein guilty for assaulting Haley also acquitted him of the same charge related to a case involving another woman, Kaja Sokola.

A 2020 jury trial found Weinstein guilty on all charges against him, but an appellate court in 2024 overturned the verdict, leading to a retrial.


Source: U.S. News

A brief history of Windows scroll bar shortcuts

For the two decades of Windows, the scroll bar control had just a few basic operations. (For expository purposes, let’s assume that the scroll bar is vertical.) There are five mouse targets: The arrows at the ends of the scroll bar scroll by a line. The regions between the thumb and the arrows scroll by a page. And the thumb itself lets you drag the scroll bar to a specific position.

Windows 7 added a right-click menu to the scroll bar. This menu gave you four options that matched existing mouse operations, two operations that matched existing keyboard operations, and a new operation.

Menu option Mouse Keyboard
Scroll Here Drag thumb to position  
Top Drag thumb to start Home
Bottom Drag thumb to end End
Page Up Click in upper gutter PgUp
Page Down Click in lower gutter PgDn
Scroll Up Click on up-arrow ↑
Scroll Down Click on down-arrow ↓

The interesting new one is “Scroll Here”: You can right-click directly on the spot you want to scroll to, and then pick “Scroll Here”. This is much more convenient if you want to scroll a long distance, since you don’t have to grab the scroll bar thumb and then drag it all the way to where you want to go. You can just focus on where you want to go and not where you are coming from.

I used this context menu a lot when I needed to jump long distances.

An even-more-hidden shortcut was added at the same time: Holding Shift while clicking on the scroll bar jumps the thumb directly to the spot where you clicked.

I didn’t know about this shortcut until recently. I had always used my trusty context menu.

Sadly, almost nobody uses Win32 scroll bars any more. Everybody uses frameworks that provide their own custom scroll bars.

Electron and other Web apps use the Chromium scroll bar, which doesn’t implement the context menu, but at least it does implement the Shift+click shortcut.

The WPF XAML framework appears to implement both the context menu Shift+click.

The WinUI XAML framework frustratingly has neither the context menu nor the Shift+click shortcut. (Though at least one person has requested it.)

The Qt framework has multiple customization points, so it’s really up to each app’s developer. You can enable context menus with SH_Scroll­Bar_Context­Menu, you can enable “left-click to jump to a position” with SH_Scroll­Bar_Left­Click­Absolute­Position, and you can enable “middle-click to jump to a position” with SH_Scroll­Bar_Middle­Click­Absolute­Position.

Great, so by the time I learn about a shortcut for scroll bars (Shift+click), the ecosystem has fragmented so much that I can’t even rely on it working.



Source: Hacker News

Claude discovers a novel enzyme system with CRISPR-like repeats

Science

Claude discovers a novel enzyme system with CRISPR-like repeats

Sep 23, 2026

We’re introducing a new life sciences research group and laboratory at Anthropic. Our focus is on fundamental biology research using Claude: exploring datasets of DNA to identify uncharacterized protein families, generating hypotheses at scale, and testing them through experiments in the lab. This post introduces the team behind this work and shares early results in which Claude discovered a novel enzyme system with properties reminiscent of CRISPR, with only high-level direction from our scientists.

Many discoveries that have revolutionized biology and medicine started with a scientist noticing something odd in the staggering diversity of molecular machines found in nature. Restriction enzymes, proteins that cut DNA at specific short sequences, were found in bacterial immune systems, where they destroy the DNA of invading viruses. Researchers realized they could use these enzymes to cut DNA at chosen places and splice genes from one organism into another, which launched the biotechnology industry. Taq polymerase, an enzyme that copies DNA at high temperatures, was identified in a bacterium in a Yellowstone hotspring. It became the basis for PCR, the DNA-copying method used in much of modern diagnostics. CRISPR was first noticed as an unusual repeat sequence in the DNA of certain bacteria, and is now the foundation of gene editing-based medicines.

In the spring of 2026, we formed a research group to see whether general AI models can systematize and accelerate such discoveries. We believe that this acceleration will come from establishing a new way of doing biology research, in which agents collaborate with humans in every step of the process. Developing this new way of working required that we build our own lab and a single team working on everything from training Claude in biology to running experiments in the lab.

Today, we’re sharing early results from one of our first research programs, in which Claude autonomously discovered a novel enzyme system that is associated with an array of DNA repeats, a pattern reminiscent of CRISPR. Although we don’t yet know its function, the system that Claude discovered has a set of characteristics that have only ever been found together in a handful of other systems, all of which are programmable and perform operations like cutting, copying, and pasting DNA. Beyond CRISPR, which has already transformed science and medicine, several other such systems are now in development as promising tools.

The system that Claude found is based on a reverse transcriptase (RT), enzymes that copy RNA into DNA. While this underlying RT, found in a jumbo phage, had been identified in previous studies, Claude appears to be the first to notice the system’s defining features—an associated array of non-coding DNA sequences and an additional accessory protein of unknown function.

After reviewing the pre-print, Feng Zhang, one of the pioneers of CRISPR genome editing and a professor at MIT and the Broad Institute said:

This is an exciting example of how AI agents can contribute to biological discovery. The identification of RNA-repeat arrays associated with reverse transcriptases is genuinely intriguing and merits further investigation. I hope this work encourages more scientists to explore how AI can support their research.

We gave Claude a prompt to search through a massive database of DNA sequences for interesting new examples of RTs. Our involvement was limited to the initial prompt and the lab work, while Claude agents combed through the database, investigated the distinct RT families, and used their own judgement to identify interesting candidates. After 21 hours spent searching this data by roughly 950 agents using 210 million tokens, one of the agents spotted something remarkable: a repeating pattern of DNA sequences that occurs next to the gene for an odd-looking RT. After further analysis and testing in our lab, we recognized that this pattern marked a previously uncharacterized enzyme system found in bacteriophages (the viruses that infect bacteria) that we call array-associated reverse transcriptases (ART).

Our work to understand the primary function of ARTs is ongoing. However, we think it is important to share such findings early, both to demonstrate Claude’s capabilities and to give the broader community insight into what we’re working on. We have released a pre-print (here) that discusses this in more detail.

About our lab

We are a team of scientists who have spent our careers exploring unusual proteins, and specialize in using computational approaches to systematically read DNA, interpret its evolution, and pick out biological systems for further characterization. Our research prior to joining Anthropic has helped to better understand the evolution and regulation of CRISPR systems, discover new enzymes for next-generation cell and gene therapies, and build tools for accelerating the identification of anomalies in DNA, such as human pathogenic variants. We are part of Anthropic’s life sciences organization, alongside teams whose work includes drug discovery, and training Claude in biology and chemistry.

Our lab, located in the Bay Area, looks like a typical molecular biology lab. We do research that involves only the lower-levels of the biosafety risk level (BSL-1 and BSL-2) and we do not handle pathogens that can infect humans. All of the lab work is performed by human scientists. Although we’ve experimented with using AI to accelerate lab work with initiatives like the Model Hardware Standard, this approach is less conducive to the sort of ad hoc workflows that are involved in our molecular biology research.

How we work

Many of our workflows involve having Claude search through the vast collection of DNA sequences associated with proteins without a known function. One typical pattern begins with a survey of a given protein family. Claude reads the relevant literature and reproduces the established results from public data to check its methods. It then searches for family members or genomic neighbors that fit no described system, and writes a short, human-readable report for each candidate that proposes a function and describes the evidence supporting its claims. In follow-up analyses, Claude critically evaluates the evidence—typically most candidates are eliminated at this stage. A survey may end with a single candidate worth testing, or with none.

When a candidate survives our review, we test it in the laboratory, expressing the protein in standard laboratory strains and characterizing it biochemically and structurally, with Claude helping to interpret the data. We do our work in Claude Science and Claude Code, the same tools available to any scientist, and sometimes with a harness of our own that coordinates many Claude sessions running in parallel.

Because Claude produces hypotheses so prolifically, the hypotheses themselves have become an object of study for us. With hundreds to thousands of candidate reports from a single campaign, we have been asking what distinguishes the proposals we judge worth testing from those we set aside. What we learn goes back into the instructions we give Claude and teaches it to mimic our own scientific taste.

Claude finds ART

In the past few years, researchers have discovered many more reverse transcriptases (RTs), most of them in bacteria, where they act as part of the immune system. Nearly all RT families were found by genomic analysis, or genome mining, which requires researchers to search sequence databases for genes that no one has characterized, notice the unusual ones, and work out what they do.

Claude agents gathered over 200,000 RTs, picked out 3,500 new candidate systems, and narrowed those to the 20 most-compelling candidates that they analyzed to produce human-readable reports. For an expert scientist, this type of analysis can take weeks to months of work.

During the course of its research, Claude noticed an unusual RT family and decided to examine it in greater detail. While combing through the raw DNA sequence near the RT, the agent exclaimed: “[The DNA next to the RT] is spectacular: I can see by eye a tandem repeat array … that’s a CRISPR-like … repeat array?!”

A graphic of Claude identifying patterns in DNA
The raw DNA Claude was reading when it detected a repeat pattern that no one had noticed


It then proceeded much as a human scientist would when faced with a potential discovery. It counted the repeats and measured their spacing, compared the layout with the known RT systems, and searched the literature for any previous report of the pattern. After a thorough analysis it was convinced that it had found a new biological system, and filed a report for human review.

The system it found, ART, is found mainly in bacteriophages and consists of three parts: the RT, a partner gene beside it, and a long array of evenly spaced DNA repeat sequences. The repeat layout resembles a CRISPR array, which holds a bank of different RNA sequences that make CRISPR-Cas systems programmable biotechnological tools. Our first experiments show that the ART array is also expressed as a set of distinct short RNAs, suggesting that something analogous may be at play for this system.

Further experiments are underway to determine how ART works, and we are sharing these early findings to show the community that Claude can autonomously detect anomalies and drive analyses to initiate biological discoveries.

You can find more detail in our technical report (here).

Work with us

We hope this work demonstrates the value of AI-driven hypothesis generation to the wider scientific community, and we would like to work with other scientists to extend this approach to a broad range of problems, in genomics and in other fields. If you have a proposal for a research question, we would like to hear from you.

Related content

Partnering with Accenture on embedded evaluation

Read more

Introducing the Life Sciences Verification Program

The Life Sciences Verification Program (LSVP) gives life science professionals access to Claude Mythos, Opus, and Sonnet models with a refined set of safeguards more permissive for biology-related work.

Read more

Developing Enterprise Frontier Safeguards with our customers

Read more

Subscribe to Anthropic Science

Features on AI-assisted discoveries, practical workflows, and field notes across the sciences.


Source: Hacker News

Swap, ZRAM, Zswap and Hibernate on NixOS

I pulled this out of my non-obvious nixos config piece into its own post.

Oh no, I’m going to talk about swap, zram, zswap…

Whether to use swap is a perennial fight online. The conversation is often muddled when people conflate recommendations for servers with recommendations for workstations. In my case, I’m going to focus on desktops and laptops.

I use swap because I like suspend-then-hibernate, or “Standby, then hibernate” in the KDE settings:
![[Pasted image 20260917120542.png]]

This will first ACPI S3 suspend to RAM, then after a delay go into S4 Hibernate. I think this strikes a nice balance: if I step away for a bit I don’t have to wait for things to start up, but I don’t have to worry if I forget to fully power off my machine.

To use hibernate you need swap to save your system state to disk.


Let’s add even more fuel to the fire

There are also arguments over swap files vs swap partitions. I mostly want to note that swap files can complicate hibernate. That is because when you resume from hibernate initramfs needs to know the location of the swap space before the file systems are mounted. On a UEFI system the details are saved into an EFI variable when hibernation starts.

I set up my desktop with a simple swap partition:

  swapDevices = [
    {device = "/dev/disk/by-uuid/f2fc399a-9703-450b-88df-5671b776fc71";}
  ];

I set up my laptop with LUKS encryption and a swap file:

  fileSystems."/.swapvol" = {
    device = "/dev/disk/by-uuid/33682d1d-87c4-4166-8d3b-66d900387e42";
    fsType = "btrfs";
    options = ["subvol=swap"];
  };
  
  ...
    swapDevices = [
    {
      device = "/.swapvol/swapfile";
      size = 32 * 1024;
    }
  ];

This is based on the disko luks-btrfs-subvolumes template.

The good news is that for a while now NixOS understands the nuances of hibernate on swap files and can handle figuring out the offsets.


The config I currently use

If I’m going to use swap I want to make sure I use it right. The piece In Defence of Swap and the followup Debunking zswap and zram myths provide a lot of important context. As a starting point, Chris Down recommends using zswap with disk-backed swap.

So my current configuration is simply:

  boot.zswap.enable = true;
  boot.kernel.sysctl."vm.swappiness" = 100;

Yes, literally just that. I like the fact that the config is not long and complicated. Just because it’s a couple of lines does not make it any less important.

Why that particular swappiness value? Swappiness controls the relative cost of swapping and filesystem paging so it will depend on your particular hardware. Chris suggests that a swappiness of 100 works well on systems with SSDs, but that it’s “non-trivial to tune this value based on instinct alone” and you should test different values. The kernel docs agree and say you can even go higher on SSDs.

However, I haven’t found clear instructions anywhere on how to test and compare different swappiness values, especially for workstation usage. If you have any recommendations, I would appreciate hearing about them. For now, 100 is serving me well with my SSDs.


The mistakes I made along the way

Before I read Chris’s second article I was using zramSwap.enable since I thought this was what he advocated. However, I had that wrong and it was actually the opposite. I didn’t realize this until April of this year when boot.zswap was added. So to clarify, zramSwap is what is normally just referred to as zram. It is likely not what you want when using disk based swap. In my case I wanted hibernation so this was the wrong choice.

After my realization I removed zramSwap.enable and started using boot.zswap:

  boot.initrd.systemd.enable = true;
  boot.zswap = {
    enable = true;
    compressor = "lz4";
  };
  boot.kernel.sysctl."vm.swappiness" = 100;

You’ll notice that the compression algorithm for zswap can be controlled through boot.zswap.compressor. The Linux kernel defaults to lzo since it strikes a good balance of speed and compression. Whereas NixOS defaults to zstd with the reasoning that it has the best compression ratio and is good for Nix builds.

Up until recently I was running lz4 which has the fastest compression and lowest latency. I made the decision after reading around the ArchWiki which primarily uses that as the compressor. Realistically though compression speed is often not the limit when you are dealing with memory spilling over to disk. A better compression ratio lets you fit more pages into the compressed pool in memory, so you use the disk less.

So now I use the NixOS default of zstd. Also, when I added that config lz4 required boot.initrd.systemd.enable. That setting now defaults to true so I can drop that line as well. That leaves us with just two lines of config.

I write about a variety of projects, events and thoughts, but they all share one aspect: I learned something and want to share my experience with others.

No spam, no sharing to third party. Only you and me.


Source: Hacker News

LensVLM: Compressing long context as images, expanding only relevant pages

<!–>

]–>

<!–>

[-1–>

]–><!–>

[0–>

<!–>
[-1–>





LensVLM-9B

LensVLM is a 9B Vision Language Model (VLM) that scans compressed images of text,
then selectively expands only the relevant pages to their uncompressed form via
learned tools.





License

All ML model files in this repository, including Apple’s modifications to the Qwen
model, are provided under the terms of the
Apple Machine Learning Research Model License.

The source code that accompanies this model is distributed separately and is provided
under the terms of the Apple Sample Code License.





Usage

Install the LensVLM code and run inference:

git clone https://github.com/apple-aiml-research/ml-lensvlm
cd ml-lensvlm
pip install -r requirements.txt
python scripts/run_demo.py --model apple/LensVLM-9B

For a custom document:

python demo.py 
    --model apple/LensVLM-9B 
    --text_file document.txt 
    --question "What is the main finding?" 
    --compression 10x

Compression options: 5x, 10x, 15x. See the
repository README for data preparation
and evaluation.





Citation

@article{xie2026lensvlm,
  title={LensVLM: Selective Context Expansion for Compressed Visual Representation of Text},
  author={Xie, Roy and Friedman, Dan and Yu, Donghan and Pan, Bowen and Fifty, Christopher and Kim, Jang-Hyun and Du, Xianzhi and Gan, Zhe and Rathod, Vivek and Dhingra, Bhuwan},
  journal={arXiv preprint arXiv:2605.07019},
  year={2026}
}

<!–>

–>

Downloads last month
233

<!–>Safetensors–>
Model size
9B params
Tensor type
<!–>BF16

·

]–>

]–>

]–>

<!–>

]–>

<!–>

]–>

<!–> Model tree for apple/LensVLM-9B –>

<!–>

[0–>

Qwen/Qwen3.5-9B<!–>

]–>

<!–>

[0–>

(866)

this model

<!–>

]–>

Quantizations

2 models

<!–>

]–>

<!–> Space using apple/LensVLM-9B 1

[0–><!–>

]–>

<!–> Paper for apple/LensVLM-9B

<!–>

–>

<!–>

–><!–>

–>


Source: Hacker News

USDA: Meat recalled for lack of inspection, false labels

Sept. 23 (UPI) — A meat distributor in North Carolina recalled about 167,639 pounds of raw pork, beef and goat products that weren’t inspected by the U.S. Department of Agriculture, the department announced Wednesday.

The USDA said the meat products from Star Meat Delivery Inc. have false inspection labels on them. It’s not clear why they have false labels.

Any product bearing the false establishment number “EST. 1363” should be considered misbranded and unsafe to eat, the USDA said.

The raw pork, beef, and goat items were produced on various dates before Sept. 22. The products were vacuum-sealed and packed into cardboard boxes for shipment; individual consumer packages may not bear this labeling, as retail stores may have applied their own stickers with pricing and safe handling instructions.

The products subject to recall have false marks of inspection with establishment number “EST. 1363,” which does not have a federal grant of inspection. These items were shipped to A&D Foods, a distributor in Georgia, for further distribution to retail and restaurant locations nationwide.

The problem was discovered during Food Safety and Inspection Service surveillance activities.

There have been no confirmed reports of illness or injury from those who have eaten these products. Anyone concerned about an illness or injury should contact a healthcare provider.

Food produced without inspection may contain undeclared allergens, harmful bacteria, or other contaminants that put consumer health and safety at risk. FSIS is concerned that some products may be in the refrigerators or freezers of consumers, restaurants or retailers. Consumers who bought these products are urged not to consume them. Retailers and restaurants are urged not to sell or serve these products. These products should be thrown away or returned.

The retail distribution lists will be on the FSIS website at www.fsis.usda.gov/recalls.

The recalled items are various weight cardboard boxes containing individually vacuum-packed A&D Foods:

  • “GOAT CUT 1-1/2″ 10.00 LBS”
  • “GOAT BURN SKIN ON CUT 1-1/2″ 10.00 LBS”
  • “SLICE RIBEYE 4oz 10.00 LBS”
  • “BEEF CHUCK THIN SLICED KBQ 4 MM 20.00 LBS”
  • “BEEF OXTAIL CUT 10.00LBS”
  • “BEEF SHORT RIBS SLD 3/8″ REGULAR 10.00 LBS”
  • “SHANKS BONE IN CUT 1.5 10.00 LBS”
  • “PORK GROUND 10.00LBS”
  • “PORK CHORIZO 10.00 LBS”
  • “PORK CHOP B/I 10.00 LBS”
  • “PORK FEET CUT 8 PCS 10.00 LBS”
  • “PORK FEET CUT 6 PCS 10.00 LBS”
  • “PORK RIB PIECES PREM 1″ 10.00 LBS”
  • “PORK BOSTON DICED 10.00 LBS”
  • “PORK BOSTON SLICE 1 INCH 20.00 LBS”
  • “Menudo Mix 30.00 LBS”
  • “PORK BOSTON THIN SLICED 3.5MM 20.00 LBS”
  • “PORK HOCK SLICED 10.00 LBS”
  • Beef Ribs 4Bone 2″ C. Cut P/Caldo
  • Beef Short Rib Thin Sliced
  • Pork Boston Butt Sliced 4MM
  • Beef Short Ribs SLD 3/8″ Premium C. Cut
  • Beef Feet Cut

Source: U.S. News

Latest Posts