Where a Massive Solar Storm Could Take Down the US Power Grid for Millions
A new study published Friday in AGU Advances "depicts the most advanced picture yet of how a rare but massive solar storm could affect some US industries and electric systems more than others," reports CNN.
"During a 250-year solar storm, the East Coast would have widespread potential for grid failure."
Researchers modeled what a Carrington Event - a 1-in-150-year geomagnetic storm or even rarer - could mean for the modern day. They estimate the US economy would lose about $1.5 billion to $2 billion per day from direct and indirect costs, as millions of people face power outages. The findings show the most vulnerable areas are the Northeast and the Northern Plains, especially locations at higher latitudes.
No one knows when the next big storm will hit. While the most severe geomagnetic storms are labeled as once-in-a-century or rarer, these events don't follow a fixed schedule. "That timing only averages out on very long timescales," said Anna Kelbert, a geophysicist at the Harvard-Smithsonian Center for Astrophysics, who was not involved in the study but previously studied solar storm effects on power grids. "The event can occur at any time, as soon as a week from now, or centuries later...." [Shawn Dahl, service coordinator at the Space Weather Prediction Center operated by the National Oceanic and Atmospheric Administration in Boulder, Colorado], said the sun is now coming down from a period of heightened activity, which is also when some of the biggest storms to hit Earth have occurred in the past. "We still need a lot of work to be ready...."
"We haven't really seen events like this size in the modern era, where we've had all of this high technology and we've had the power grid of this size," said Ed Oughton, researcher at George Mason University and lead author of the new study... Because the US grid's actual structure is proprietary for security reasons, the team used engineering models to create various network and transformer setups including the 10,464 substations and 16,256 transmission lines found across the country... The grid structure also contributes to higher risk in some areas. For instance, the eastern US is linked together in a single grid interconnection. A voltage issue in Maine, if not isolated early, could cascade through the grid to Washington, DC. The West works similarly, whereas the Texas interconnection operates mostly within the state...
Power is restored over time depending on any alternative electrical paths that could bypass the substation or availabilities of spare transformers, for instance. "This nationwide analysis shows that we are currently ill-prepared to face a major magnetic storm, and that the societal impacts would be catastrophic," Kelbert said.
"The study estimates power disruptions for 5.1 million people and 135,000 businesses," according to the article, and "The outages could last from hours to days to weeks depending on the damage and resources available to get back online, said Oughton." |
AfD dominates Saxony-Anhalt: A turning point for Germany? | DW News
The AfD has emerged as the dominant force in Saxony-Anhalt, but election victories do not automatically translate into political power. What drove voters to back the party, and what does the result mean for Germany's political future?
Brent Goff speaks with political correspondents Matthew Moore and Bernd Riegert, DW Berlin bureau chief Max Hofmann, and historian and author Katja Hoyer. They break down the results, reactions from party headquarters, the challenge of forming a government, the pressure on Chancellor Friedrich Merz and the wider implications for German politics.
00:00 AfD wins big in Saxony-Anhalt
02:03 Siegmund: 'We have made history'
03:08 Can the AfD form a government?
04:57 Why did voters back the AfD?
05:58 AfD's message to its critics
08:24 Can the AfD handle accountability?
10:02 What the result means for Germany
12:34 What does the result mean for Merz?
13:39 Can the AfD's momentum spread?
15:23 CDU's Schulze concedes defeat
16:14 Why did the CDU lose so badly?
20:31 Katja Hoyer: How big a breakthrough is this for the AfD?
21:51 AfD's new campaign style pays off
24:04 Migration, the economy and the AfD surge
25:27 Germany's far-right shift in context
For more news go to: http://www.dw.com/en/
Follow DW on social media:
►Instagram: https://www.instagram.com/dwnews
►TikTok: https://www.tiktok.com/@dwnews
►Facebook: https://www.facebook.com/deutschewellenews/
►Twitter: https://twitter.com/dwnews
Für Videos in deutscher Sprache besuchen Sie: https://www.youtube.com/dwdeutsch
Subscribe: https://www.youtube.com/user/deutschewelleenglish?sub_confirmation=1
#dwcurrentaffairs |
TiVo Will Start Charging Fees For Its Automatic Commercial Break-Skipping Feature 'SkipMode'
TiVo is notifying customers about changes to "one of its longest-standing and most popular DVR features," reports the blog Cord Cutter News:
Starting November 2, 2026, the current version of SkipMode that allows users to jump over commercial breaks with a single button press on the remote will no longer be available. The company is instead preparing to test a new paid add-on called Premium Auto Commercial Skip.
SkipMode has been a core part of the TiVo experience for years. After a supported show finished recording, the service added markers that let viewers leap from the end of one program segment directly to the start of the next, bypassing the ads in between. On newer TiVo Experience 4 devices, users could even set the feature to automatic so commercials were skipped without any remote interaction. The feature was limited to popular prime-time programming on major networks, typically appearing a short time after a show aired.
Under the new plan, that one-button and automatic functionality will disappear from the standard service. Viewers will still be able to skip commercials the traditional way by using the 30-second skip button or the fast-forward control on their remotes. Those manual methods have existed on TiVo boxes for more than two decades and do not rely on the company's commercial-detection data.
In November, TiVo will offer a 30-day free trial of the new Premium Auto Commercial Skip service. After the trial ends, customers who want to keep the automatic or one-button skip capability will need to add it to their accounts for an extra monthly fee.
The company has not yet published the price.
Thanks to long-time Slashdot reader AmiMoJo for sharing the article.
|
It took a year to ship WebAssembly in Anubis
This website is hosted by Techaro. If you have any complaints or notes about the service, please contact support@techaro.lol and we will assist you as soon as possible.
-- ImprintThis website is running Anubis version v1.28.0-pre1.0.20260906214259-7564aa1d8a85. |
The car industry A/B tested selling a car with and without CarPlay
A couple years ago, GM made waves by saying that soon, all their new cars would be completely free of Apple's CarPlay and Android Auto support, instead opting for the "Android Automotive OS" in their cars. Admittedly, I'm a huge fan of CarPlay for basic safety reasons and how it lets you hear or send texts without ever having to look at or touch your phone, so I was not happy to hear this news. I remember when this was first announced for Chevy EVs and when it was later expanded to all their cars in the future and the resounding response was that car buyers were PISSED.Chevy claimed they were doing this for privacy reasons, that none of your driving or phone data would go to Apple any longer, but instead it would all go to Google (who would likely share it with General Motors, the owners of Chevy). Chevy seemed to ignore the uproar from their fans and went ahead with it anyway, and as far as I can tell, all 2025 Chevy electric vehicles shipped with the Android Auto OS and don't interface with your phone beyond bluetooth or let you see CarPlay or AndroidAuto apps on your dash.Honda, much like Toyota and Subaru, didn't have a robust EV research and development program and kind of lagged behind their rival auto companies on selling EVs, so they partnered with other auto brands to rebadge, rebrand, and resell versions of cars made by other companies.One case in point is the Honda Prologue EV. It's a partnership between Honda and Chevrolet, where the Prologue is basically a Chevy Blazer EV with Honda badges, slight visual differences in the sheetmetal and interior, but all the underpinnings are straight up Chevy. Even though the keys say Honda on a Prologue, it's a General Motors key design with a Honda logo over it. But one big difference the Prologue has from the Blazer it is based on is this: it includes Apple CarPlay and Android Auto integration.The car industry accidentally did something I've always wanted to see, which was to release basically the same car under two brands and models, with one major consumer-facing difference. It's kind of remarkable how good of a experimental design this is, since the performance and driving characteristics of both cars are identical, but drivers in one model get a major phone integration the others do not.So how did that work out for Chevy?You can look up actual sales numbers in GM and Honda's annual reports of sales they're required to publish to investors, and here are the results for the last 2.5 years they've both been sold in the US:
U.S. Sales: Chevrolet Blazer EV vs. Honda Prologue
Note: The 2026 figures cover January through June and are not full-year totals.
The last column on the right is the most telling. For the years these cars were sold together, the Honda outsold the Blazer by 43%, 73%, and 166% in each time period. Today in 2026, people are buying a Honda Prologue over one and a half times more often than the Chevy Blazer EV the Prologue is based on.Of the total number of EV sales between the two brands, here's a graph of how many sold were Hondas (orange) and how many were Chevys (blue):Give consumers a choice, and they'll take the best optionDrivers want more options for how they interact with their devices, and they are increasingly preferring to buy a Chevy covered in Honda badges that comes with phone integrations instead of buying the actual Chevy the Honda is based on, which lacks it.I wonder if Chevy will ever backpedal from their choice to remove CarPlay and Android Auto? Drivers seem to be voting with their dollars on the question, and they're voting favorably in one direction on this issue.Now that the market has spoken loud and clear, will General Motors listen? months ago that made me want to look up the latest sales figures today) |
German far-right AfD wins by a landslide in Saxony-Anhalt: exit polls
German far-right AfD wins by a landslide in Saxony-Anhalt: exit polls
If the AfD manages to form a government, it would be the first far-right party to lead a German state since World War II
READ MORE : http://www.euronews.com/2026/09/06/german-far-right-afd-wins-by-a-landslide-in-saxony-anhalt-exit-polls
Subscribe to our channel: https://www.youtube.com/c/euronews?sub_confirmation=1
Watch our LIVE here: https://www.youtube.com/c/euronews/live
Subscribe to our thematic channels:
NoComment: https://www.youtube.com/c/nocommenttv?sub_confirmation=1
Euronews Green: http://bit.ly/2sMsaDB
Euronews Next: https://www.youtube.com/c/EuronewsNext?sub_confirmation=1
Euronews Travel: https://www.youtube.com/c/EuronewsTravel?sub_confirmation=1
Euronews is available on YouTube in 12 languages: https://www.youtube.com/user/euronewsnetwork/channels
#EuropeNews |
Funniest/Most Insightful Comments Of The Week At Techdirt
And that's why trying to distill partisan politics down to just "team blue" vs. "team red" is reductive at best and false equivalence at worst. This and many other life-or-death issues break down on pretty clear partisan lines, and it's entirely clear which party is right and which one is wrong.Christ knows the Democrats aren't perfect. But of the two major parties they're the one that's not a eugenicist death cult.No, that's not how computers work. Microsoft Windows identifies the connected monitor, and then, on its own authority, checks whether the manufacturer has "recommended" any software to go with it; if so, Windows installs that without telling the user. The monitor isn't installing anything.Of course, we should also be criticizing monitor manufacturers for taking advantage of this misfeature. But the root problem is with Microsoft. More than 2 decades after the Sony rootkit, they haven't learned their lesson (or maybe they have: people will put up with this shit, and the blame will mostly be misdirected).Nope. Not at all. Screw that noise.Teslas might function as a car some of the time, but that doesn't mean you have to give Musk any credit whatsoever.Starlink is a money pit from whence nothing can be recovered. Even the most corrupt broadband fiber deployment can be dug up or reused. Comcast could, in a just judicial system, be broken up as an illegal monopoly and their infrastructure that we paid for could be reused by other service providers.And not every dollar was going to go to big monopolistic companies, whereas any money going to Starlink funds literal authoritarian, anti-democratic election interference.Unfortunately, "kids won't be able to post videos that make authorities look bad and fuel significant protests" is an appealing argument to the authoritarians who are already in favor of curbing social media access for kids which those authoritarians can't directly control.How dare you insult vegetables like that. Unlike Mitch McConnell's political career, vegetables are actually good for the average person.That's all for this week, folks! |
War is likely to drag on into winter according to Zelenskyy following talks with US envoys
War is likely to drag on into winter according to Zelenskyy following talks with US envoys
Following talks in Kyiv with US envoys, Zelenskyy said, "We very much hope that we will be able to reach agreements with our American partners, and we are counting on the support of our European partners if the war continues in winter -- and this is how it appears at the moment."
READ MORE : http://www.euronews.com/2026/09/06/war-is-likely-to-drag-on-into-winter-according-to-zelenskyy-following-talks-with-us-envoys
Subscribe to our channel: https://www.youtube.com/c/euronews?sub_confirmation=1
Watch our LIVE here: https://www.youtube.com/c/euronews/live
Subscribe to our thematic channels:
NoComment: https://www.youtube.com/c/nocommenttv?sub_confirmation=1
Euronews Green: http://bit.ly/2sMsaDB
Euronews Next: https://www.youtube.com/c/EuronewsNext?sub_confirmation=1
Euronews Travel: https://www.youtube.com/c/EuronewsTravel?sub_confirmation=1
Euronews is available on YouTube in 12 languages: https://www.youtube.com/user/euronewsnetwork/channels
#EuropeNews |
Germany: Exit polls predict historic far right victory
Voters in Saxony-Anhalt in eastern Germany have been going to the polls in an election which the populist, far-right anti-immigration party AFD are expected to win comfortably.Exit polls published just over an hour ago suggest they've won an historic victory - just one vote short of an overall majority. |
Trump envoys Witkoff and Kushner visit Kyiv for first time to discuss U.S. peace proposal
US envoys Steve Witkoff and Jared Kushner have spent the day in Kyiv with Ukrainian President Zelenskyy to discuss proposals to end the war with Russia.It's the pair's first-ever visit to Ukraine as negotiators. Mr Kushner conveyed that President Trump was very keen to see an end to the war, though details on how this could be achieved are unclear.While President Zelenskyy said security guarantees for Ukraine are needed. Zahra Warsame has this report. |
Flock Offered Webinar Teaching Cops How to Surveil 'No Kings' Protesters
Thursday 404 Media reported that Flock taught America's cops "how they could surveil the No Kings protests" against President Trump (as well as "small parades") in a webinar last year that described "using a mix of Flock's technology and law enforcement's own databases."
In the webinar, Flock's director of market management Caity Peak explains how real time crime centers - which are police surveillance centers that utilize Flock cameras and other surveillance cameras - can be used for emergency response, but can also be used to surveil "established events" like 4th of July fireworks displays, parades, bike races, Mardi Gras, and protests. The webinar shows just how routine the idea of always-on surveillance has become, and how casually it is used during extremely innocuous events. Peak explains that police can use FlockOS, a software platform that combines Flock's automatic license plate readers (ALPR), drones, gunshot detectors, 911 data, and other surveillance cameras (including ones Flock does not own) into a "single pane of glass" or single piece of software to look at various types of surveillance in one place during both emergencies and relatively mundane events in a city or town.
"Imagine that you're an incident commander, and you're working this No Kings Protest," Peak explains while a dashboard shows a series of surveillance tools overlaying the city of Denver. "If I'm somebody assigned a traffic post that's working this No Kings Protest, I really don't have time to go in [...] and look at all these places [for different intelligence]. This is an example of viewing all of that in one place...." The dashboard Peak shows includes traffic information, a "response plan" for the protest, the floor plans of nearby buildings, as well as a series of video feeds of both outdoor-mounted cameras and cameras inside businesses and government buildings.
404 Media and the Electronic Frontier Foundation previously showed that police have specifically used Flock cameras to monitor the No Kings protests and other First Amendment-protected activity... This webinar shows this type of surveillance is not anomalous, and is specifically taught by Flock. The webinar also shows that Flock's latest public stance - that its ALPR cameras are noninvasive technology, that they take only static images at a single place and time, and that they are primarily used to solve the worst crimes - is wildly misleading. Flock has time and time again pitched itself to police as a sort of operating system to solve crime and do real-time surveillance and predictive policing. ALPRs are just one part of this broader surveillance apparatus that Flock has created, markets to police, and teaches them how to use. |
Bloomberg This Weekend | Iranian Tanker Sinks, Push For Peace in Ukraine, State of the Labor Unions
The news doesn't stop when markets close. Hosts David Gura, Christina Ruffini and Lisa Mateo bring clarity, context and a bit of humor to the weekend's biggest headlines, LIVE from New York. Joined by BBC Chief International Correspondent Lyse Doucet, AFL-CIO President Liz Shuler, Michigan Rep. Haley Stevens and California Rep. Kevin Kiley.
Chapters:
00:00:00 - Bloomberg This Weekend Begins
00:01:31 - News Now with Lisa Mateo
00:04:28 - Iran Targets Oil Tankers in Response to US Strikes
00:06:48 - US Strikes 3 Iranian Tankers in Response to Attacks
00:09:54 - US Envoys Kushner & Witkoff Arrive in Ukraine
00:13:51 - Germany Holding Key State Election Today
00:16:12 - German Election Pose Risk to Chancellor Merz
00:18:00 - Lisa Mateo with News Now
00:19:19 - Canada' Reciprocal Tariffs to Take Effect Tuesday
00:21:17 - Bessent: Canada Tariffs "Negligable" Impact on US
00:23:06 - New Canadian Tariffs to Hit Metals & Machinery
00:28:34 - The Big Business of Helping the Rich Dodge Taxes
00:31:28 - News Now with Lisa Mateo
00:33:00 - BBC Goes Inside Afghanistan Ahead of 9/11 Anniversary
00:35:29 - BBC Reporter Explores Life Under Taliban Rule
00:41:29 - BTW with Lisa Mateo
00:48:29 - Top of the Hour with Bloomberg This Weekend
00:50:10 - Lisa Mateo with News Now
00:52:43 - Iran Says It Targeted Tankers in Response to US Strikes
01:00:12 - Trump Blames Biden For Giving Weapons o Ukraine
01:01:36 - USS Lincoln Docks in Thailand After 9 Months at Sea
01:02:41 - Thai City Rolls Out Red Carpet for US Sailors
01:03:51 - Sailors Share Troubling Stories From Department
01:06:30 - News Now with Lisa Mateo
01:08:16 - AFL-CIO President Joins Bloomberg This Weekend
01:20:00 - Lisa Mateo with News Now
01:22:15 - This Week: Republican Midterm Convention in Dallas
01:25:20 - Trump's MAGA INC. Sends $10M to Aid Ken Paxton
01:28:43 - Obama to Headline NYC Fundraiser on Thursday
01:30:00 - Ad - British Food Culture Hits the United States
01:37:00 - ad - Top of the Hour with Bloomberg This Weekend
01:37:44 - Headlines with Lisa Mateo
01:40:26 - Kushner, Witkoff Meet Zelenskyy in First Visit to Kyiv
01:42:47 - Rep. Haley Stevens Joins Bloomberg This Weekend
01:56:25 - Rep. Kevin Kiley Joins Bloomberg This Weekend
02:06:51 - News Now with Lisa Mateo
02:09:44 - The Real Toll of Europe's Heatwave
02:12:00 - Lisa Mateo with News Now
02:13:26 - LA Clippers Fined $40M, Lose 5 Picks for Salary Cap Circumvention
02:16:39 - WNBA Commissioner Engelbert to Retire After Seven Years
02:17:36 - Bloomberg Power Players
02:18:53 - NYC's US Open Tickets Tumble to Below $100 a Seat
02:19:57 - Cannabis Fumes Distract Tennis Stars at US Open
02:22:01 - Pointed: The News Quiz for Risk Takers
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
EU chief von der Leyen heads to Greenland in show of support for the island
EU chief von der Leyen heads to Greenland in show of support for the island
Speaking at the World Economic Forum's annual meeting in Davos this year, von der Leyen said the EU was working on a "massive European investment surge" in Greenland in a bid to ramp up Arctic security.
READ MORE : http://www.euronews.com/2026/09/06/eu-chief-von-der-leyen-heads-to-greenland-in-show-of-support-for-the-island
Subscribe to our channel: https://www.youtube.com/c/euronews?sub_confirmation=1
Watch our LIVE here: https://www.youtube.com/c/euronews/live
Subscribe to our thematic channels:
NoComment: https://www.youtube.com/c/nocommenttv?sub_confirmation=1
Euronews Green: http://bit.ly/2sMsaDB
Euronews Next: https://www.youtube.com/c/EuronewsNext?sub_confirmation=1
Euronews Travel: https://www.youtube.com/c/EuronewsTravel?sub_confirmation=1
Euronews is available on YouTube in 12 languages: https://www.youtube.com/user/euronewsnetwork/channels
#EuropeNews |
French National Rally's Bardella on Budget, AI, Ukraine
France's National Rally will oppose any proposals by the current government for tax increases in the next budget, according to the president of the far-right party, Jordan Bardella. He also touted the strong transatlantic relationship with the US, and said he believes France should receive something from Ukraine in exchange for continued support. Bardella spoke exclusively with Bloomberg Television Anchor Francine Lacqua from Lake Como in Cernobbio, Italy.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
Latest news bulletin | September 6th, 2026 - Evening
Latest news bulletin | September 6th, 2026 - Evening
Catch up with the most important stories from around Europe and beyond this September 6th, 2026 - latest news, breaking news, World, Business, Entertainment, Politics, Culture, Travel.
READ MORE : http://www.euronews.com/2026/09/06/latest-news-bulletin-september-6th-2026-evening
Subscribe to our channel: https://www.youtube.com/c/euronews?sub_confirmation=1
Watch our LIVE here: https://www.youtube.com/c/euronews/live
Subscribe to our thematic channels:
NoComment: https://www.youtube.com/c/nocommenttv?sub_confirmation=1
Euronews Green: http://bit.ly/2sMsaDB
Euronews Next: https://www.youtube.com/c/EuronewsNext?sub_confirmation=1
Euronews Travel: https://www.youtube.com/c/EuronewsTravel?sub_confirmation=1
Euronews is available on YouTube in 12 languages: https://www.youtube.com/user/euronewsnetwork/channels
#TopNewsStoriesToday |
Off to Scotland - Happiness, solitude and oysters | DW Documentary
Lars used to be a police officer. Together with his wife Sandy and their young son, he moved from Germany to a remote Scottish island in the Atlantic.
Colonsay has only 120 inhabitants, a shop and a café - and not much else. Lars was keen to escape big city life and pitched the idea to his Scottish wife, Sandy. She agreed to relocate their family and move to Colonsay. The remote island is where she grew up; she and Lars even got married there a few years ago.
Lars is a lively, sociable type. Will the solitude and almost eerie tranquility on the island in winter suit him? Lars' father-in-law runs an oyster farm on Colonsay. He'd been looking for someone to take over the business and now Lars is there to help. It's a tough business. In summer, life feels like a holiday. But in winter, 'the demons come', as the islanders say. Lars, too, is struggling with his past. It's only light for a few hours a day in winter, and the island is often battered by storms. While Sandy starts working from home again, Lars spends a lot of time with their son. He's also a keen cold-water swimmer. Whenever he can, he ventures into the icy, raging seas that surround the island.
#documentary #dwdocumentary #dwdocs #scotland #oysters #newbeginnings
______
DW Documentary gives you knowledge beyond the headlines. Watch top documentaries from German broadcasters and international production companies. Meet intriguing people, travel to distant lands, get a look behind the complexities of daily life and build a deeper understanding of current affairs and global events. Subscribe and explore the world around you with DW Documentary.
Subscribe to:
⮞ DW Documentary (English): https://www.youtube.com/@DWDocumentary
⮞ DW Documental (Spanish): https://www.youtube.com/@DWDocumental
⮞ DW Documentary وثائقية دي دبليو (Arabic): https://www.youtube.com/@dwdocarabia
⮞ DW Documentary हिन्दी (Hindi): https://www.youtube.com/@dwdochindi
⮞ DW Dokumenter (Indonesian): https://www.youtube.com/@DWDokumenter
⮞ DW Doku (German): https://www.youtube.com/@DWDoku
For more visit: http://www.dw.com/en/tv/docfilm/s-3610
Follow DW Documentary on Instagram: https://www.instagram.com/dwdocumentary/
Follow DW Documental on Facebook: https://www.facebook.com/dwdocumental
We kindly ask viewers to read and stick to the DW netiquette policy on our channel: https://p.dw.com/p/MF1G |
I built a note/list app with zero bloat - just tasks to tick-off, fast and free (LightList)
Every "simple" productivity app I tried lately somehow ends up with AI summaries, workspaces, tags, and a paywall by the third feature. I just wanted a place to dump bullet points and access them anywhere. So I built one. - no signup friction, no bloat, just a list taker that does the one thing well.Stack-wise: Go backend + React frontend, OpenAPI spec-first, using Go's to bundle everything into a single binary (genuinely one of my favourite parts of Go - no separate asset pipeline nonsense). This is actually the first site I've built and deployed solo end-to-end despite years as a dev, so there was a real learning curve on the ops/deployment side.It's completely free, no idea how long I'll keep it running, and I'd love feedback - especially anything that's confusing or missing. Might open-source the repo if there's interest. |
NetBSD 9.5 released and EOL for NetBSD-9
September 06, 2026 posted by The NetBSD Project is pleased to announce NetBSD 9.5, the fifth (and final) release from the NetBSD 9 stable branch.It represents a selected subset of fixes deemed important for security or stability reasons since the release of NetBSD 9.4 in April 2024. It is fully compatible with NetBSD 9.0.This also marks the end-of-support for all NetBSD-9.x releases and the netbsd-9 branch. All users still on this branch are urgently asked to update to a more recent release like NetBSD 11.0 (with 11.1 upcoming at the end of this month) or NetBSD 10.2 (to be released in a few days).
[0 comments]
|
Pointed! Bloomberg's Weekly News Quiz For Risk-Takers
Pointed offers a strategic twist to the news quiz format, testing not just players' knowledge of the news but also their confidence in their answers. Join Bloomberg's Lisa Mateo, Christina Ruffini, and Jeff Mason as they play and check out the quiz for yourself at Bloomberg.com
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
NBA Hits Clippers With Historic Penalties
The NBA fined the Los Angeles Clippers $30 million and stripped the franchise of five first-round draft picks after an independent investigation found the team circumvented salary-cap rules by facilitating off-court income opportunities for Kawhi Leonard. Bloomberg News Senior Sports Reporter Randall Williams joins Christina Ruffini and Jeff Mason on Bloomberg This Weekend and explains that owner Steve Ballmer was also suspended for a year, while Leonard was fined $700,000 in one of the league's most severe disciplinary actions.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
I Feel about AI
I feel at how well neural networks work.
LLMs work like "gut feeling" as they just generate one more token after another.
There is no planning or reasoning algorithm inside.
Yet, some planning and reasoning emerges.I feel about an impending doom.
Yudkowsky's argument that a superintelligent AI will inevitably destroy humanity seems to have no flaw.
Yet, nobody seriously tries to sandbox AIs because they are too useful with access.I feel about AI companies destroying the open web society.
Their crawlers and agents make it increasingly difficult to sustain an open community on the web.
Like a locust plague, they descend on any open wiki and forum and overwhelm them.I feel about the artists who suffer due to AI-slop competition.
Being an artist always required some sacrifice and only a few are fortunate to gain some wealth.
This is even harder now that AI can generate some kinds of "content" cheaper and faster.I feel about the inability of our political systems to rein in the power of capital.
While I can rant about politicians a lot, I still prefer a democratic government to have power instead of billionaires.
It essentially just comes down to making some decisions in a coordinated way, but most people are not even aware of the problem.
This also covers the environmental destruction by AI companies as they greedily gobble up all kinds of resources.I feel to live in this age of discovery.
We might observe the creation of artificial intelligence.
Working in software development, the practice was radically transformed forever in 2026.
It is fascinating to observe this firsthand.
It allows me to generate stuff (code, images, music) which would never have been created otherwise.As a conclusion,
does the good or the bad outweigh the other?
It seems positive on a technological level to me, but bleak on a societal level.(I used Mistral as reviewer here. I typed every word myself.) |
Rep. Kiley Challenges Party Control in Congress
Joining Bloomberg This Weekend, Independent California Rep. Kevin Kiley is calling for House rules to guarantee committee assignments for lawmakers who don't belong to either major party, after his own assignments were temporarily vacated when he left the Republican Conference. Kiley also criticizes mid-decade gerrymandering and said he supports mail voting while arguing that nationwide election policy should be set by Congress rather than executive order.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
A year of designing a Go API around Protobuf, gRPC, Envoy, and generated SDKs
I've spent the past year building Cadenya's API toolchain around a Protobuf and gRPC contract. From that contract, I expose a REST/JSON API through Envoy and generate our OpenAPI specification, SDKs, and API reference. I wrote about the decisions behind the toolchain and how they shaped the Go backend.How the Protobuf resources are structuredHow generated Protobuf methods become useful Go interfacesHow those interfaces influence the Ent schema and repository designHow Envoy transcodes REST/JSON requests to gRPCHow the resulting OpenAPI specification feeds SDK and documentation generationThe result is a workflow that keeps the server types, public API contract, generated SDKs, and documentation aligned when I add or change an endpoint. |
Canada Hits Back With New US Tariffs
Canada is set to impose new retaliatory tariffs of as much as 50% on US goods starting Sept. 8, targeting $27.6 billion of imports including steel, aluminum, pulp and paper, appliances and agricultural equipment. Bloomberg News Ottawa Bureau Chief Brian Platt tells Christina Ruffini and Jeff Mason on Bloomberg This Weekend that the broader economic impact may be limited, but businesses tied to integrated supply chains, tourism and cross-border commerce could face sharper consequences as the cycle of retaliation continues.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
Rep. Stevens Says Canadian Tariffs Are Squeezing Michigan
On Bloomberg This Weekend, Michigan Representative Haley Stevens (D) says escalating US tariffs on Canadian goods are raising costs and creating uncertainty for manufacturers in her district, with the deeply integrated auto supply chain particularly exposed. Stevens tells hosts Christina Ruffini and Jeff Mason that she is promoting legislation that would provide households with as much as $1,700 to offset tariff-related costs, while criticizing the Trump administration's approach to trade with Canada.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
API gateway in Go
What do you use for API gateways for production?Can you share learned experiences, limitations you found and if you prefer a cloud managed service instead? |
British Food Is Having a US Moment
British food is enjoying new popularity in the US, with a wave of pub-inspired restaurants drawing crowds with traditional dishes served in more modern settings. Bloomberg Pursuits Contributing Restaurant Columnist Oliver Guy and Anchor of Daybreak Europe Caroline Hepker sit down with Christina Ruffini and Jeff Mason on Bloomberg This Weekend and say social media, travel and demand for affordable comfort food are helping fuel the trend, with New York's Dean's among the restaurants putting classics such as stargazy pie and bubble and squeak back in the spotlight.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
A/I shuts down - Stay human
The day we discovered we had been designated a global terrorist organization, we promised that we would try to resist as long as this was possible, that we would not back down as long as we could see options to stand our ground. For years, we have proudly maintained and defended a free, privacy-friendly, autonomous and politically committed infrastructure. is not an empty phrase to us.It means, above all, that we have a responsibility to protect our users, those who build the human networks we rely, and for the communities who flooded us with messages of support and solidarity.We cannot engage in a fight or expose ourselves to manipulations that threaten the lives of these people and their loved ones, leaving them at the mercy of autocrats, fascists and agencies that take extra-legal courses of action. The possibility that our work may cause legal and financial consequences to those who are close to us - or even only have something to do with us - leaves us no choice.A/I is shutting down. The Autistici/Inventati collective is shutting down and will soon discontinue all of the services we provide.There is no easy way to announce or explain thisEvery day we stayed online after August 26, 2026, has been a victory, but now we are forced to stop.None of us holds eroic gestures and martyrs in high esteem, therefore we will demand no sacrifices. Not from us, not from anyone else. In this political climate, continuing to offer our services endangers our users and anyone who is part of our communities. In a world where allegations are disconnected from reality, we can only expect repression to be increasingly disproportionate. Under these circumstances, we are no longer able to maintain our original mission - offering secure and non-commercial digital tools.These 25 years have been amazing. It's been an "incredible ride".Now turn off your PCs, get out of your homes, struggle, hug each other and keep on smiling. We are stopping, but the Resistance and ideas do not stop. Stay human.We will soon send instructions on how to back up the content of your blogs, mailboxes and websites, along with more technical recommendations. But keep in mind that, just as the autistici.org domain was made unreachable without previous notice, in the next few days we might suffer similar issues that we may not be able to predict.Autistici/Inventati Collective |
UN Votes To Encourage Map Projections More Accurately Reflecting the True Size of Continents
The United Nations has an announcement. "The UN General Assembly has voted overwhelmingly to encourage governments, schools and tech companies worldwide to stop using maps that make Africa look far smaller than it really is."
By 164 votes to one, Member States on Friday endorsed a resolution promoting map projections that more accurately reflect the true size of continents - the culmination of an African-led campaign against the 16th-century Mercator projection, still the most widely used map in the world. The United States cast the sole vote against, dismissing the initiative as part of a "radical ideological project." Six countries - Estonia, Georgia, Lithuania, Moldova, Serbia and Ukraine - abstained.
The resolution does not ban the Mercator projection or impose a replacement. Instead, it encourages governments, schools, international organizations and technology companies to use the Equal Earth projection and other so-called equal-area maps when relative size matters, and to teach the limitations of any flat map in representing a spherical planet.
Behind that seemingly technical debate lies a larger argument about history and power: whether a map designed for European sailors in the 16th century has, over generations, distorted not only geography but perceptions of a whole, vast and complex continent... [With Mercator maps] landmasses appear increasingly enlarged the farther they are from the Equator. Greenland, for instance, can look roughly comparable in size to Africa, even though Africa is about 14 times larger. Northern Europe and North America are similarly magnified, relative to equatorial regions. Despite its original navigational purpose, Mercator remains common in educational, media, digital and official materials. The resolution says those distortions have contributed to the "symbolic minimization" of Africa and perpetuated an unbalanced view of the world...
Equal-area maps do not make Africa larger; they remove the exaggeration Mercator gives landmasses closer to the poles.
The UN notes that hours before the vote, France's foreign minister announced the country was planning to abandon Mercator for its maps of the world. |
I built a tool that turns Go packages into typed JavaScript packages with WebAssembly
I built - a tool that generates the TypeScript side of your Go → WebAssembly APIs directly from your Go code.No Go annotations. No handwritten TypeScript types. Structs, constants, unions, and tests are generated automatically.bash npm install -g @paulgrammer/gowasm bash go install github.com/paulgrammer/gowasm/cmd/gowasm@latest If you've shipped Go/WASM to Node or the browser, I'd love to hear what edge cases you've run into. |
Asahi Linux on M3
It's been a while since we did a blog post outside of the progress reports, and today's as good
an occasion for one as any; support for M3 series machines has now been merged into the installer.
In other words, Asahi Linux now supports Macs with an M3 series SoC!Linux support for M3 series SoCs and the machines powered by them is now in a state where
everything supported on the M1 and M2 series machines just works. This includes the webcam, internal
microphones, USB (up to the hardware limit of USB 3 10 Gb/s), hardware
accelerated video decoding including support for AV1, WiFi, Bluetooth, and much more! The only major
exceptions remain full DCP support and the GPU, which we will have more news on in the
coming months. Do not expect
performant or power-efficient 3D acceleration right now.Given that a lot of this work is fresh, support is gated behind the installer's Expert mode.
Users who wish to give Asahi Linux a try on an M3 series machine can do so by runningin a macOS terminal and following the prompts. Please remember to do a system upgrade ()
after you have finished installing. We are aiming to drop the Expert requirement
in time for the release of the Fedora Linux 45 beta in a couple of weeks, barring any major
regressions or other showstopping issues.There are some known limitations to be aware of, however:Sleep currently due to limitations with the firmware-provided framebuffer.
This will be addressed once full DCP support is wired up for M3.Similarly, the lack of DCP support means that the HDMI port on equipped MacBooks is currently
disabled.Although MacBooks and iMacs are supported (M3, M3 Pro and M3 Max), the Mac Studio (M3 Ultra) is not yet supported.As always, we would like to thank our generous supporters on both OpenCollective
and GitHub Sponsors. Support for M3 is the culmination
of years of hard work from multiple people, many of whom have only been able to access M3 hardware
because of your support.We are looking forward to hearing all your feedback, and hope you enjoy using Asahi Linux
on your M3 devices just as much as we have enjoyed bringing it to you. Stay tuned for
more updates and happy computing!James Calligeros · |
Trump Rallies GOP Ahead of Midterm Elections
Republicans are preparing for a first-of-its-kind midterm convention in Dallas on Sept. 9 and 10, with President Donald Trump and Vice President JD Vance among the featured speakers as the party seeks to mobilize voters ahead of November. Joining Christina Ruffini and Jeff Mason on Bloomberg This Weekend is Co-host of Bloomberg's Balance of Power Kailey Leinz and she says that the gathering will also spotlight competitive races including the Texas Senate contest, even as some Republicans in swing districts plan to stay away and campaign at home.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
The Strange Reason Men Used To Dress Like This
For centuries, men's fashion was anything but boring. The wealthiest and most powerful men in history were often the biggest fashion trendsetters and they wore elaborate clothing, extravagant accessories, wigs, makeup, heels, and enough decoration to make modern red carpets look tame. So why did men's fashion go from flamboyant and extravagant to the relatively restrained suits and casualwear we associate with men today? And why did fashion eventually become so strongly associated with women?
On this episode of Weird History, we look back at a time when high society demanded that men look fashionable, wealthy, and impossibly extravagant to explain how much of the blame can be traced back to one extraordinarily influential man whose choices helped permanently reshape the way an entire gender thought about clothing.
Do you wish more men still dressed with flair? Let us know in the comments.
(Much like real history, this video was produced entirely by human beings.)
Be sure to subscribe to the Weird History Newsletter: https://bit.ly/WeirdHistoryNews
#mensfashion #men #weirdhistory |
USS Lincoln Sailors Describe Toll of Deployment
The USS Abraham Lincoln's crew received a long-awaited port visit in Thailand after a 286-day deployment that included a modern-era record of 264 consecutive days at sea and months of combat operations in the Middle East. Joining Bloomberg This Weekend is Bloomberg News Southeast Asia Reporter Philip Heijmans who recently returned from Thailand and says sailors described food shortages, limited communications with family and uncertainty over their return, while many also expressed pride in their mission.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
Unions Gains Support as AI Reshapes Work
A Gallup poll shows 71% of Americans approve of labor unions and a record 47% want them to have more influence, while 52% of Republicans also approve. Joining Bloomberg This Weekend is AFL-CIO President Liz Shuler and she says unions are organizing around wages, AI and the midterms as House Republicans investigate whether some unions improperly used member dues for political activity, allegations Shuler rejects.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
How one of Spain's hottest cities handles the heat | Focus on Europe
Seville, one of Spain's hottest cities, is battling extreme temperatures with smart measures for workers and seniors. The city must transform its urban planning to cope with a warming climate.
#Spain #Seville #Heat
For more news go to: http://www.dw.com/en/
Follow DW on social media:
►Instagram: https://www.instagram.com/dwnews
►TikTok: https://www.tiktok.com/@dwnews
►Facebook: https://www.facebook.com/deutschewellenews/
►Twitter: https://twitter.com/dwnews
Für Videos in deutscher Sprache besuchen Sie: https://www.youtube.com/dwdeutsch
Subscribe: https://www.youtube.com/user/deutschewelleenglish?sub_confirmation=1 |
US Races to Boost Missile Interceptor Output
The US retains significant munitions capacity for operations against Iran, but stocks of sophisticated interceptors missiles have come under greater pressure. Bloomberg Intelligence Senior Defense Analyst Col. Wayne Sanders tells tells Christina Ruffini and Jeff Mason on Bloomberg This Weekend that manufacturers are being pushed to sharply increase production, a process complicated by sprawling supply chains and concerns about preserving advanced weapons for other potential conflicts.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
My local Go tool uses the browser as its UI. Where would you draw the line?
I'm building ProtoPeek, a local Go workbench that embeds a web interface. For a gRPC request, the browser presents the form and results; Go makes the protocol connection.That got me thinking about the larger pattern. Open WebUI, OpenCode Web, Syncthing, and grpcui already show different versions of it. I'm using BUI - Browser User Interface, or "Borrowed UI," as a label in this illustrated article. Not claiming I invented the architecture.The fit seems strongest when the process needs more time than the interface does: a download queue, backup, or batch conversion. Open the controls, set it up, then leave it running. OpenCode is a useful counterexample to limiting it to occasional tools.The trade-off isn't free performance. You avoid distributing a browser engine, but still own launch/reconnect/shutdown, local API security, and compatibility. A smaller download doesn't prove lower memory use. A system WebView or native UI can be a better choice when window behavior and OS integration matter.For your side projects, what requirement would make you stop using a browser tab and build a dedicated app window? I'm especially interested in the annoying everyday details, not framework rankings.Disclosure: ProtoPeek is my project. This post and article were developed from my notes with AI drafting/editing assistance. |
By The Way: Headlines You May Have Missed
Taylor Swift and Travis Kelce settling in Ohio, parents teaching teens to invest, what happened to yoga classes, and baseball dogs: Watch Lisa Mateo, Christina Ruffini and Jeff Mason talk about headlines from this week you may have missed on Bloomberg This Weekend!
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
How the Soviet Union Dominated Chess
Our historical documentary series on the history of the Cold War continues with a look at look at the early Soviet fascination with the sport of chess and how they envisioned its use in creating the new Soviet citizen but also how early investment in the game resulted in international dominance.
China's Cultural Revolution: https://youtu.be/fCA5VP5Tdrs
Commercial Air Travel: https://youtu.be/fqVtEa5ooJ0
Reykjavik Summit 1986: https://youtu.be/xmDHy4M7rdM
Saturday Morning Cartoons: https://youtu.be/hPToTKCcycI
The Profumo Affair: https://youtu.be/PfQ-FY3zPdM
Ghosts of Cold War Berlin: https://youtu.be/52bC38bm6rk
America's Bioweapons pt 2: https://youtu.be/0yEVIRy23H4
America's Bioweapons pt 1: https://youtu.be/12WyLu6WuBs
The CIA's Poisoner-in-Chief: https://youtu.be/6zRat81cDrg
The Soviet Economy: Brezhnev, Oil, & Stagnation: https://youtu.be/NUUZCD_XfjI
The Soviet Economy: Revolution to Khrushchev: https://youtu.be/2arxTSPhr6g
How Khrushchev Fed the Soviet People: https://youtu.be/qIZDa7ZcUhE
How Khrushchev Housed Everyone: https://youtu.be/lazVrmC7IVQ
Soviet Tourism: https://youtu.be/t9KrH-xG20Q
Soviet Passport System: New Serfdom or Reform?: https://youtu.be/Dgr9F3WFsbo
Soviet Education System: https://youtu.be/AD_JwbivtMA
Communist Girl Scouts of America: https://youtu.be/QvgEHc0iyoQ
ASALA, Armenia Secret Army: https://youtu.be/DFzIVfTNjH0
Amchitka Island Nuclear Test: https://youtu.be/Z89YnSS5RQA
Soviet Criminal Underworld: https://youtu.be/zEJrivfLKGc
Support us on Patreon: http://www.patreon.com/TheColdWar,
Youtube membership https://www.youtube.com/channel/UCCGvq-qmjFmmMD4e-PLQqGg/join
✔ Merch store ► https://teespring.com/stores/thecoldwar
✔ Patreon ► https://www.patreon.com/thecoldwar
✔ Facebook ► https://www.facebook.com/thecoldwartv
✔ Instagram ►http://www.instagram.com/thecoldwartv
#ColdWar #ColdWarHistory #History #ModernHistory #Chess #SovietUnion #Soviet
**SOURCES**
Seth Bernstein, "Valedictorians of the Soviet School: Professionalization and the Impact of War in Soviet Chess," Kritika: Explorations in Russian and Eurasian History, Vol. 13, No. 2 (2012)
David Edmonds and John Eidinow, Bobby Fischer Goes to War: How a Lone American Star Defeated the Soviet Chess Machine (Harper Perennial, 2005)
https://kirsan.today/en/analytics/item/3190-chess-in-the-ussr-lenin-set-chess-fashion-and-since-then-it-was-played-in-space-and-during-the-war.html
Andrew Soltis, Soviet Chess 1917-1991 (McFarland & Company, 2000)
Boris Gulko, Vladimir Pops, Yuri Fleshtinsky and Viktor Kortschnoi, The KGB Plays Chess: The Soviet Secret Police and the Fight for the World Chess Crown (Russell Enterprises, 2010)
A Kotov and M Yudovich, The Soviet School of Chess (Dover Publications, 1961)
David Shenk, The Immortal Game: A History of Chess (Souvenir Press, 2008)
Brian Carney, "Victim of His Own Success: The Tragedy of Bobby Fischer," The Wall Street Journal (2008)
https://www.jaqueslondon.co.uk/blogs/posts/fischer-spassky-1972-match-of-the-century
Daniel Johnson, White King and Red Queen: How the Cold War was Fought on the Chessboard (Atlantic Books, 2008) |
US Envoys Test New Opening in Ukraine Talks
US envoys Steve Witkoff and Jared Kushner arrived in Kyiv for their first official visit to Ukraine after more than three hours of talks with Russian President Vladimir Putin in Moscow produced no announced breakthrough. Joining Bloomberg This Weekend, Bloomberg News Chief Europe Correspondent Oliver Crook says the renewed US effort comes as Ukraine's deeper strikes into Russia have altered the dynamics of the conflict, while European governments are watching the diplomacy with cautious optimism.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
Afghan Deportations Fuel Humanitarian Strain
Millions of Afghans have returned from Pakistan and Iran in recent years, including many who had never lived in Afghanistan, as both Pakistan and Iran step up deportations. BBC Chief International Correspondent Lyse Doucet is on Bloomberg This Weekend and says women and girls face an especially stark transition under Taliban restrictions that bar them from secondary and university education and many jobs.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
Debian Code Search: Fast TurboPFor with Go SIMD
This August, I accomplished what I wanted for many years: I deleted the last cgo
dependency in Debian Code Search! This was made possible by Go's recently
introduced SIMD support, because now we can implement the TurboPFor integer
compression format as efficiently - more efficiently, in fact, by using the
newer AVX512 instruction set! - as the reference implementation.Background: Why does DCS need a fast Integer Codec?Debian Code Search (DCS) is a search engine that allows searching all the Open
Source source code within Debian, with either literal search expressions or
regular expression search queries.A search engine uses an inverted index: a map from term to documents containing
the term. Each document is typically represented most efficiently by using an
id, so the index consists of many lists of document ids.When searching, it is important to quickly decode these lists to answer the
search query. However, there is a point of diminishing returns where the
decoding speed, even though it can still be measurably improved quite a bit, no
longer influences the overall query duration.From 2012 (its inception) to 2019, Debian Code Search used to use a small index
format, and queries were fast because the index was kept entirely in RAM. In
2019, I implemented the new index
format, which adds an
on-disk positional index. For literal queries (78.2% of DCS queries), querying
the positional index on disk is faster than querying the non-positional index in
RAM.The efficient encoding of the TurboPFor format makes it possible to fit such an
index on a mid-sized Hetzner server, which I rent with two 1 TB SSD disks. The
optimized decoder of the C TurboPFor library is what made decoding fast at query
time.If you want to dive deeper into the algorithm, see this blog post from February
2019:If you want to learn more about the positional index, see this blog post from
September 2019:For many years, you had the following options for using SIMD instructions in Go:The C TurboPFor library has served us well, but Debian Code Search was always
intended to be a project using Go, so I would prefer it if I did not have any C
code in the project.Go 1.26 (released in February 2026) introduced the package:Go 1.26 introduces a new experimental
package, which can be enabled by setting
the environment variable at build time. This package
provides access to architecture-specific SIMD operations. It is currently
available on the architecture and supports 128-bit, 256-bit, and
512-bit vector types, such as and , with operations such
as . The API is not yet considered stable.For my 2019 TurboPFor analysis, I implemented , a native Go
teaching decoder (without any SIMD),
because I find Go code easier to follow than C code, especially optimized C
code. My implementation was intentionally not optimized so that the code was
easier to study.When Go 1.26 was released, I used Claude Code to explore whether my native Go
decoder's function (for the vertical vector layout) could be
implemented using Go SIMD, and the answer was yes, it was possible and it was
faster than without SIMD, but not quite at the level of C TurboPFor. If you let
Claude Code try for long enough, it eventually finds enough optimizations (about
10) to match C performance.I don't want to vibe-code Debian Code Search, though, so I figured I would find
some time to review the SIMD code at some point and see if I could implement
something similar myself.Before I found enough time and motivation to complete said review, I discovered
that to not regress real-life query performance by more than 10 to 100
milliseconds (which seems acceptable), I don't actually need to add SIMD code to
my teaching decoder at all; it would be sufficient to reduce allocations in my
teaching decoder and specialize it per bit width.Encouraged by the possibility of using the optimized native Go decoder in Debian
Code Search, I explored whether I could also implement a native Go so
that I could get rid of the C TurboPFor dependency entirely. The answer is yes,
it is doable in a few days, and it isn't even that much slower: Go is at 76% of
C, see Debian/dcs commit
.The goal I set myself at that point was to see if I could learn enough SIMD to
optimize the native Go encoder such that its performance would match how DCS
uses C TurboPFor (via cgo).Beating C TurboPFor was possible in 2-3 commits (SIMD and bit width
specialization). To my surprise, Claude Fable 5 pointed out that the encoder's
block scanning could be done more efficiently using a technique called
positional popcount, and that is ! 😲To be clear: I am not saying the Go compiler beats C here. Certainly, the C
compiler can also produce fast AVX512 code and can be used to implement
positional popcount. When comparing apples to apples, i.e. backporting the
AVX512 kernels and positional popcount technique to C TurboPFor, Go benchmarks a
little slower at ≈1.4x C.This spectacular result (much faster than what DCS had before) got me curious
how far I could push the decoder with SIMD after all. I ended up
matching/exceeding the cgo version here, too!The rest of this article explains a few classes of optimizations I encountered
along the way.When I wrote my teaching
decoder, I named its functions to
match the upstream C TurboPFor library, but now I want to get away from names
like - they make sense from the TurboPFor perspective, but for
Debian Code Search, we can use cleaner names.Before writing any code, I audited how DCS uses integer compression /
decompression.API design: BlockEncoder, BlockDecoder and streamingIn Debian Code Search, we have the following usage patterns: When a new package (or package version) enters Debian,
all of its (text) files are indexed. If the
package (hypothetically) contained
only with , we would assign document ID to
and store in the partial index that trigrams , , ,
, etc. are all found in doc (). The many thousands of partial index files (for each
Debian package) are combined into a small handful of large index files: When
searching, it would be expensive to consult thousands of indexes. To merge
multiple partial index files into one larger index (which can then be
efficiently queried), we need to re-encode the partial index files: what used
to be document ID in the partial index might be document ID in the
full index. When users enter search queries, these queries need
to be answered as quickly as possible. The relevant entries in the full
indexes are decoded (in parallel).For reading the index, we do keep the decoded s fully in memory, so we
only need DecodeN(input []byte, output []uint32) (read int), a function that
reads values () from and returns how many bytes it
consumed.For writing the index (both in partial indexing, and when merging), keeping the
entire index in memory is prohibitively expensive, so we need a streaming API,
for decoding and for encoding.Ultimately, I converged on the following API:This API (the decoder works similarly) allows us to process data in TurboPFor
format without any memory allocations. The types are not safe for concurrent use
by multiple goroutines. The zero value is ready to be used. For the streaming
API, the result only stays valid until the next call.Before we can optimize anything, we need a working decoder and encoder. The
decoder already exists: my teaching decoder. Next up, I needed an
encoder.Writing a TurboPFor encoder has a delightfully simple starting point: You can
encode all values at bit width 32, in little endian, at which point you only
need to add a one-byte TurboPFor block header every 256 values and you're done:Of course, this is a terribly inefficient compressor, so after the first commit,
the real work starts: implement each block type until the compression matches
the original C TurboPFor implementation (same output file size), or in other
words: do the reverse of the decoder.The TurboPFor block type (bitpacking implementation
commit)
encodes a bit stream of variable bit width (where the bit width is in range
) in little
endian byte order. By scanning all
values and choosing the smallest bit width that allows representing all
values, this technique saves disk space (compresses).The bitpacking with exceptions block type (bitpacking with exceptions
implementation
commit)
determines two bit widths: one for values, the other bit width for encoding
exceptions. This allows choosing a lower bit width (that does not cover all
values) compared to the bitpacking block type. A bitmap encodes whether a
value has an exception or not.The bitpacking with VB exceptions block type (bitpacking with VB
exceptions implementation
commit)
is a variant which does not use an exception bitmap and encodes exceptions
using a variable byte integer encoding. This is more efficient when there are
few exceptions (less than 20) or the exceptions are very different in bit
width compared to the other values.Lastly, the block type (constant implementation
commit)
stores just one value on disk. This is useful for all-zero or all-one blocks,
for example.I found it interesting to realize that the main work of the encoder is to scan
the input values and choose the optimal block type, whereas the actual encoding
itself is cheap in comparison.In all honesty, I could have probably stopped here, but now that the milestone
of a viable replacement was reached, I got curious to see how far it would be
possible to push the encoder (how much work to reach C speeds?) and afterwards,
the decoder, too.The microarchitecture level: set The microarchitecture of a CPU determines which instructions it provides, and
that includes not just SIMD instruction sets (like AVX2), but also other useful
instructions like (Leading Zero Count), which can be used to implement
more efficiently, which
the TurboPFor encoder needs to call on every input value to determine the ideal
bit width.Let's walk through how to set the microarchitecture level when using Go on
64-bit x86 (x86-64).Go uses the environment
variable to configure the target
compilation architecture, and I am using the value to select 64-bit x86
(AVX2 and AVX512 are instruction sets found on x86-64 CPUs). With
, the architecture-specific variable
configures the
microarchitecture level for which to compile and Go 1.18 introduced these 4
different levels: (default): The baseline.
Exclusively generates instructions that all 64-bit x86 processors can execute.: all v1 instructions,
plus CMPXCHG16B, LAHF, SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3.: all v2 instructions,
plus AVX, , BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE.: all v3 instructions,
plus , AVX512BW, AVX512CD, AVX512DQ, AVX512VL.For Intel CPUs, setting means your programs will only start on
Haswell CPUs (2013) or newer; for AMD CPUs that means Zen 1 (2017) or newer.In this specific case (DCS), I am even compiling with . The
microarchitecture level requires AVX512, which means AMD Zen 4, Zen 5 or newer
(Intel's story is... complicated). Luckily, both my main development PC (Zen 5)
and the Debian Code Search server (Zen 4) are recent enough. Setting
has little effect on Go 1.27 itself: the only change is that maps
use one less instruction ( instead of ). But compiling
with allows us to move one more feature check from runtime to
compile time, see SIMD build tags.It makes sense to set the microarchitecture level in your benchmark setup so
that you don't measure the slow fallback implementations. I use in my .Go's built-in package contains support for
benchmarks which are written in
functions of the form func BenchmarkXxx(b *testing.B). The simplest way to run
such benchmarks is , but I ended up configuring a few
convenience targets, which write results to and compare
against (the previous commit's results, usually), using the very
useful tool.The and units are custom metrics I am reporting from
the various sub-benchmarks, which are arranged
such that I can filter / report them with .The main encoder (and decoder) benchmarks compare 3 different implementations
(cgo, Go, Go with the StreamEncoder API) with a number of benchmark
cases
that are designed to cover the different block types and contain a similar mix
of values as what we see in Debian Code Search:Go has included excellent performance tooling for many years, see the
"Profiling Go Programs" blog post (2011) for an
example of how to use , a sampling profiler. This profiler can help track
down which part of a program runs slow, or where memory allocations happen.Once you identified the slow part of a program, how do you know why it's slow?To learn more about the specific bottlenecks your program encounters, you can
consult your CPU's hardware performance
counters. For
example, you could check the branch
predictor counters to see if
your program is slow due to a high number of branch mispredicts.In my , I set up two targets:The numbers are high level numbers that indicate how much work
the implementation is doing. Reducing the number usually increases speed.To see the counters for each instruction (and source code lines), I use , followed by . A quick shortcut is , which
directly shows the hottest function.Let's first see how far we can get without reaching for SIMD instructions.(The examples are not necessarily in commit order, but cherry-picked for clarity.)Profile-Guided Optimization (PGO)The idea is to capture a CPU profile that records where your program spends most
of its CPU time, which you then provide to the Go compiler to give it more data
to make better decisions.Most importantly, this way the Go compiler can inline functions much more
aggressively than its usual heuristics allow,
which does have a measurably positive effect in my series of optimization
commits. Another optimization that a PGO profile allows the compiler to do is
conditional devirtualization - but
our TurboPFor code does not use any interfaces.My strategy is to enable PGO before doing any other optimizations, so that we
have the full inlining budget available that PGO gives us, and can measure the
effect of other commits clearly.Aside from inlining and conditional devirtualization, PGO also influences
alignment: The Go compiler sets on the first block of a
loop (the "loop body") for all loops in hot functions (per the PGO profile),
i.e. Go will insert up to 31 bytes of padding to make the block land on a
64-byte boundary. Documentation like AMD's "Software Optimization Guide for the
AMD Zen5 Microarchitecture" (2024,
#58455) explicitly recommends aligning hot loops that way:[...] for hot loops, some further knowledge of trade-offs can be
helpful. Because the processor can read an aligned 64-byte fetch block every
cycle, it is suggested to either align the start of the loop to the beginning
of a 64-byte cache line [...]Indeed, when compiling with -gcflags=all=-d=alignhot=0 to disable the
alignment, performance remains as good as without PGO. How can the padding hurt
more than help? The answer is: It's not the padding itself! It's a side-effect
of the padding moving instructions to different addresses.In the unlucky arrangement, a macro-fused + instruction pair now ends
up exactly on a 32-byte boundary. However, the Go compiler ensures fused
branch sequences must never cross or end at a 32-byte boundary to fix Intel
erratum
SKX102
(discussion: Go issue #35881) by
inserting s.This padding, unlike the loop alignment padding, is not free; these extra
instructions slow down our otherwise dispatch-bound loops.Because the commits after the PGO enabling commit change the code, this unlucky
situation is avoided for the rest of the optimization series (by chance).Reducing memory allocationsMemory allocations are quite expensive, at least in comparison to
encoding/decoding integers, so I followed my usual strategy of first reducing
memory allocations as much as possible.In my teaching decoder, whenever the code needed a scratch buffer,
it would allocate it right then and there with :The Go compiler can turn calls into stack allocations, if is
known at compile-time. But, in this case is not known at compile-time. We
can verify that Go calls into the runtime () by dumping the
object code (assembly) with source annotated ():An easy speed-up was to avoid allocations through
reuse
(in ). In the DCS package (with the improved
API design), I ended up with a field in the
type, which brings us from 773 Mval/s to 858 Mval/s on the debian-mix:% benchstat -filter '/impl:go /vals:debian-mix .unit:(Mval/s)'
baseline.txt bench.txt
goos: linux
goarch: amd64
pkg: github.com/Debian/dcs/internal/turbopfor/pfordec
cpu: AMD Ryzen 9 9950X3D 16-Core Processor
│ baseline.txt │ bench.txt │
│ Mval/s │ Mval/s vs base │
n=2048 1.089k ± 1% 1.175k ± 0% +7.85% (p=0.002 n=6)
n=2039 974.7 ± 0% 1046.0 ± 0% +7.32% (p=0.002 n=6)
n=160 434.9 ± 1% 513.6 ± 5% +18.11% (p=0.002 n=6)
geomean 772.9 857.7 +10.98%
Aside from the speed-up, avoiding memory allocations is generally nice in
benchmarks because it removes the garbage collector from the equation and makes
it less likely that your benchmarks get other processes OOM-killed on the same
machine.Generics for bit width specializationIn general, we want to make it easy for the compiler to understand as much as
possible about our algorithm. Consider this implementation:Let's think through what determines the iterations and control flow this
function uses:The (), but not their actual value.The bit width to pack into ().With a bit of careful rearrangement, we can provide the compiler with both, a
fixed number of input values (say, 32), and a bit width, both known at compile
time. Why is this worthwhile? Because we can manually unroll the loop, let the
compiler eliminate much of the repetition and get much faster compiled code as a
result!Let's first fix the number of input values to 32 and rewrite the loop to
calculate the position offsets within instead of changing on each
value (with ):Next, we want to specialize not just for 32 input values, but also for each of
the 32 bit widths.Can we do better than hand-copying 32 times (= 8192 lines of Go code)?Yes, we can use Go generics to help us with the code generation!In Go, array types like (not
slices like !) contain the length of the array as part of their type,
meaning (an array of length 1) is a different type than .Instead of passing the bit width as a function parameter, we can declare 32
(one for each bit width) and recover the bit width (at compile
time!) from the type system:When we instantiate bitpack32Unrolled[bitWidthT] with all 32 different types
(, , ..., ), the compiler substitutes the
type parameter and produces 32 copies of the function, which we can find in our
compiled executable with names like
github.com/Debian/dcs/internal/turbopfor/pforenc.bitpack32Unrolled[go.shape.[12]uint8]. The
"shape" of a generic type is based on its memory layout, so a shape for
must be different than the shape for .Because the is now known at compile time, the Go compiler can
generate close to the optimal machine code for each bit width, which we can
confirm using .The code is branchless (after the one bounds check per 32 values) and aside from
the loads and stores (from/to memory) consists only of shifts and bit
operations, all with constant operands:% go test -c && go tool objdump -S pforenc.test
[...]
TEXT github.com/Debian/dcs/internal/turbopfor/pforenc.bitpack32Unrolled[go.shape.[28]uint8](SB) /home/michael/dcs/internal/turbopfor/pforenc/bitpackunroll.go
func bitpack32Unrolled[T bitWidthT](dest []byte, vals *[32]uint32) {
0x660580 55 PUSHQ BP
0x660581 4889e5 MOVQ SP, BP
0x660584 48895c2418 MOVQ BX, 0x18(SP)
dest = dest[: 4*bitWidth : 4*bitWidth] // make cap known at compile time
0x660589 4883ff70 CMPQ DI, $0x70
0x66058d 0f820b030000 JB 0x66089e
acc |= uint64(vals[0]&mask) << have
0x660593 8b06 MOVL 0(SI), AX
0x660595 25ffffff0f ANDL $0xfffffff, AX
acc |= uint64(vals[1]&mask) << have
0x66059a 8b4e04 MOVL 0x4(SI), CX
0x66059d 81e1ffffff0f ANDL $0xfffffff, CX
0x6605a3 48c1e11c SHLQ $0x1c, CX
0x6605a7 4809c8 ORQ CX, AX
acc >
>
= 32
0x6605aa 4889c1 MOVQ AX, CX
0x6605ad 48c1e820 SHRQ $0x20, AX
binary.LittleEndian.PutUint32(dest[pos:pos+4], uint32(acc))
0x6605b1 90 NOPL
b[0] = byte(v)
0x6605b2 890b MOVL CX, 0(BX)
acc |= uint64(vals[2]&mask) << have
0x660 8b4e08 MOVL 0x8(SI), CX
0x6605b7 81e1ffffff0f ANDL $0xfffffff, CX
0x6605bd 48c1e118 SHLQ $0x18, CX
0x6605c1 4809c1 ORQ AX, CX
acc >
>
= 32
0x6605c4 4889c8 MOVQ CX, AX
0x6605c7 48c1e920 SHRQ $0x20, CX
binary.LittleEndian.PutUint32(dest[pos:pos+4], uint32(acc))
0x6605cb 90 NOPL
b[0] = byte(v)
0x6605cc 894304 MOVL AX, 0x4(BX)
Now we need to actually call from the general function:Encoding remainder blocks is quite a bit faster (full blocks use the vertical
layout anyway):% benchstat -filter '/impl:go /n:160 .unit:(Mval/s)' baseline.txt bench.txt
goos: linux
goarch: amd64
pkg: github.com/Debian/dcs/internal/turbopfor/pforenc
cpu: AMD Ryzen 9 9950X3D 16-Core Processor
│ baseline.txt │ bench.txt │
│ Mval/s │ Mval/s vs base │
vals=bitpacking-bw1 751.2 ± 3% 1120.5 ± 0% +49.15% (p=0.002 n=6)
vals=bitpacking-bw2 716.8 ± 2% 1176.0 ± 0% +64.07% (p=0.002 n=6)
vals=bitpacking-bw7 700.0 ± 1% 1078.5 ± 0% +54.08% (p=0.002 n=6)
vals=bitpacking-bw1-exc 524.8 ± 1% 736.8 ± 0% +40.40% (p=0.002 n=6)
vals=bitpacking-bw2-exc 543.7 ± 1% 758.2 ± 0% +39.46% (p=0.002 n=6)
vals=bitpacking-bw7-exc 566.7 ± 1% 787.7 ± 0% +38.99% (p=0.002 n=6)
vals=bitpacking-vb-exc 442.6 ± 1% 616.5 ± 0% +39.29% (p=0.002 n=6)
vals=sparse-exc 532.4 ± 0% 787.8 ± 0% +47.97% (p=0.002 n=6)
vals=sparse-vb-exc 408.9 ± 1% 597.8 ± 0% +46.20% (p=0.002 n=6)
vals=debian-mix 559.5 ± 0% 783.8 ± 9% +40.09% (p=0.002 n=6)performance win comes at the cost of binary size increase. In this case,
the section (executable code) grows by about 20 KB and the
section grows by another 26 KB. Definitely a price I am very willing to pay, but
the case might not be as clear in all circumstances.Optimization: Bigger strides with SIMDEven without reaching for SIMD instructions, a TurboPFor implementation can be
made faster by making it work bigger strides. Take this code from the
teaching decoder which counts the number of exceptions by checking
if each value's bit is set in the exception bitmap:We can use the
functions to count ones bits in the exception bitmap, 64 values at a time. For
remainder blocks, the rest is processed 8 values (1 byte) at a time: uses a 64-bit register. For comparison, AVX2 SIMD instructions use
256-bit registers (= 8 ) and AVX512 SIMD instructions use 512-bit registers.In the following sections, we will first set up our build tags for conditional
compilation to use a trivial SIMD instruction, then walk through an AVX2 and
AVX512 SIMD kernel.Let's assume we have the following scalar code:To increase throughput, we can use AVX2 instructions if they are available on the CPU on which the program runs, i.e. using runtime dispatch. We'll first rename to (it's now the fallback path):Next, we'll supply two different implementations ( and ), the latter of which is selected when compiling for with (the latter will hopefully be dropped in a later version of Go). The variant just dispatches to the , which will likely be inlined:The variant assigns the global variable by doing a check and then jumps to the scalar fallback if , i.e. the CPU is too old:We can go one step further by conditionally compiling
when is set to or higher (i.e. the build tag is
set). As a practical example from Debian Code Search, we currently need the
following checks / dispatches:The 256 uint32 vertical layoutIn regular (non-SIMD) bitpacking, integers are stored on disk one after
the other, padded to a full byte, as a byte is the smallest addressable unit
when reading data from disk. For example, if you bitpack only one 3 bit int,
you will end up with 5 bits of padding. works like regular bitpacking, but processes 8
little-endian values at the same time, leveraging the AVX instruction
set. The following
illustration shows the order in which 3-bit integers are decoded from disk:The scalar implementation uses an array of 8 to process 8 values at a
time:The SIMD version also processes 8 values, but without a loop!One difference is that we no longer have the luxury of using for
(holding rest and current bits); because AVX2 registers only fit 8 (not
8 ). Instead, we split into and .The SIMD version benchmarks about 3x as fast as the scalar version.For my TurboPFor encoder, I implemented the same techniques as described above:These changes are sufficient to roughly match the cgo performance, but then
Claude Fable 5 found another 2x speed-up on top of that!The key observation is that once encoding blocks is fast, the preceding step of
scanning the input values to decide which block type to use becomes the
bottleneck. Here is the encoder's main function, which first does one
pass over the input values () and then prices all different block types at
all relevant bit widths (requires fast access to the histogram):I'll show you a slightly shortened version of , the function which is the bottleneck:Let's consider the following 3 example values to understand the resulting :The resulting exception count histogram would contain ( shortened to ):In words, this means that at bit width 10, we could encode all the values
without any exceptions.But most values do not need 10 bits, so a bit width of 5 would be more
efficient, but requires storing one exception. Encoding at bit width 4 requires
2 exceptions, and so on.The trick: smear masks enable positional popcountThe trick is to turn each input value into its "smear mask" (imagine taking the
first 1 bit and smearing it across the remaining positions). Here are the smear
masks for our example:Turning a value into its smear mask is computationally cheap:
Go implements (functions like ) by calculating . We can calculate the "smear mask" of a value with , i.e. starting with a 32-one-bits mask and shifting it by the number
of leading zeros.Now, to obtain e.g. , we can count the 1 bits at bit position 4 of all
input values.The instruction counts bits very efficiently, but it counts one bits
within a register, so it counts rows, not columns. Counting columns is called
Positional Population Count.I found the following papers that describe positional popcount with SIMD:Positional Popcount: a visual explanationTo understand the AVX512 implementation of positional popcount, I found it most
helpful to visualize an AVX512 register (512 bits, i.e. 64 bytes). The graphic
below uses the layout, meaning it divides the register into 8 lanes
of 64 bits (= 8 bytes) each.This illustration shows the whole process: how s are loaded into an
AVX512 register (all 4 of its bytes, in sequence) and where we end up, i.e. the
32 positional popcounts:Let's break down this process into its individual steps.First, we turn each loaded value into its smear mask as explained above.The vector instruction calculates (1 byte) of 64 bytes at
once, but first we need to shuffle the bytes inside the register: in load
order, we have a full (4 bytes), followed by another , per
lane. First, we permute the bytes () such that all the first bytes of
each value end up in one lane ("transpose the bytes"):Next, we "transpose the bits" using the instruction, which
sounds scary but turns out to be quite flexible for bit manipulation of all
kinds. The instruction is also "the star of the show" in Go's
Green Tea Garbage Collector (2025). Here is the
bit transpose, shown in the AVX512 register layout (see below for a different
layout):I found it easier to understand the transpose step when arranging the 8 bytes of
lane 0 from top-to-bottom (instead of left-to-right), because then it looks like
a 90 degree clockwise rotation:Now we can use to count the bits in all 64 bytes at once:After all loop iterations (processing 16 values each) are done, we add the two
groups (first 8 values, second 8 values) to obtain the 32 exception counts:Positional Popcount: Go SIMDHere is the Go code that implements what I described visually above:The SIMD optimizations I showed above beat the cgo TurboPFor library that Debian
Code Search used before. When comparing apples to apples, i.e. backporting the
AVX512 kernels and positional popcount technique to C TurboPFor, Go benchmarks a
little slower at ≈1.4x C.Could we make my Go TurboPFor implementation even faster, to truly match the C
speed?Yes! But also no. Let me explain:We could use more SIMD instructions to remove all code that still processes
one value at a time. For example, in my encoder's
function. Or we could price all bit widths concurrently in . Or in
the decoder's exception apply code path.
But all of these SIMD instructions
make understanding (and changing) the code harder, so I am cautious regarding
which ones I introduce.A big part of the performance gap is due to Go's bounds
checks. While it costs
performance, bounds checking is great for safety, so I will not turn off
bounds checking. The Go compiler eliminates a number of bounds checks when it
understands it's safe to do so. One optimization avenue could be to make the
prove pass in the Go compiler smarter to eliminate more bounds checks.When doing mid-stack inlining (proposal
#19348)
(2017), Go sometimes needs to put instructions into the binary so that
it can attach inlining markers. For dispatch-bound functions, these extra
NOPs can measurable slow down execution.The Go compiler currently allows specifying the architecture ()
and microarchitecture (), but not a specific CPU architecture
(like AMD Zen 4). Therefore, CPU-specific workarounds for one vendor affect
all the generated code. The specific one I encountered in my code is that the
Go compiler emits before every to break a
false-output-dependency from the Intel Sandy Bridge Skylake era, which is
unnecessary on AMD Zen CPUs.
I suspect that Go intentionally does not offer this level of customizability.After all of the above points are addressed, what remains is better code
generation in specific cases. To illustrate what I mean, consider the example
of incrementing a loop variable, where Go re-derives an index every time:
Go: POPCNTL; ADDQ DI,CX; LEAQ (base)(CX*4) (3 instructions)
clang: popcnt; lea rax,[rax+4*rdi] (2 instructions)
Depending on the specific case, improving the compiler might be easy or
prohibitively complex. Often, such improvements are hard to measure conclusively.Go's SIMD support makes available - in Go code without having to resort to cgo
or assembly - a powerful part of modern CPUs which allows speeding up the kind
of computation that TurboPFor needs by an order of magnitude! 😲I found it very valuable to use a coding agent (Claude Code, with Opus 5 and
Fable 5 in this case) to help with the many tedious parts of such performance
work (and still it took me weeks!). The LLM can read objdump output much faster
than I can, can see patterns and correlations I might never identify, never
becomes frustrated after a compiler error or runtime panic, and never runs out
of patience to run one more experiment, as long as I give it measurable and
reachable goals.The performance of the SIMD code which one can get from the Go compiler is
pretty close to what a good C compiler like clang provides. The CPU performance
counters show value decoding speeds of 7 instructions/cycle (IPC) on a machine
where the maximum is 8 IPC.To me, SIMD support is a very welcome addition to Go.
I run a blog since 2005, spreading knowledge and experience for over 20 years! :)
All of my content is human-authored. I do use LLMs for research and
knowledge work, and even to review my posts, but all writing is my own,
every word is my own voice.
|
Paris drops Mercator projection: France now looks smaller on world maps
Paris drops Mercator projection: France now looks smaller on world maps
France is redrawing its world map: deeming the Mercator projection misleading, the foreign ministry will drop it in favour of a map that better reflects actual continental sizes, especially Africa.
READ MORE : http://www.euronews.com/2026/09/05/paris-drops-mercator-projection-france-now-looks-smaller-on-world-maps
Subscribe to our channel: https://www.youtube.com/c/euronews?sub_confirmation=1
Watch our LIVE here: https://www.youtube.com/c/euronews/live
Subscribe to our thematic channels:
NoComment: https://www.youtube.com/c/nocommenttv?sub_confirmation=1
Euronews Green: http://bit.ly/2sMsaDB
Euronews Next: https://www.youtube.com/c/EuronewsNext?sub_confirmation=1
Euronews Travel: https://www.youtube.com/c/EuronewsTravel?sub_confirmation=1
Euronews is available on YouTube in 12 languages: https://www.youtube.com/user/euronewsnetwork/channels
#EarthNews |
Skytech Gaming Blaze 5 Review
A custom pre-built gaming PC like the Skytech Gaming Blaze 5 is going to save you a lot of work if you're not technically savvy or simply don't have the patience to put together a modern-day puzzle. With its Nvidia GeForce RTX 5070 graphics card and AMD Ryzen 7 9800X3D, you're getting solid mid-tier performance. And it's all packed away in an easy-to-open glass case with shiny RGB components.That said, it's not without issue. Upgrading or replacing components is likely going to take moving a few things out of the way, as it's a bit crowded on the motherboard. Even if you don't plan on upgrading, you'll either be annoyed by the finicky RGB lighting or the fact that the power button and front ports are at the very bottom of the tower, making floor placement very awkward. These may not be dealbreakers for some, but you should know what you're getting into.Skytech Gaming Blaze 5 - Case Design and Build LayoutThe Skytech Gaming Blaze 5 isn't terribly bigger than your average mid-tower, coming in at 18.3 x 20.6 x 9.4 inches. A good chunk of the sides are wrapped in tempered glass and RGB LEDs, with light bars found around the case, on the seven case fans, the two RAM sticks, and the PSU shroud - the GPU is the only component left out of the fun. The rest of the case is painted black, which isn't my favorite gamer aesthetic, but it does allow the rest of the RGB to shine. Breaking into this rig is pleasantly easy. The glass panel pops off with a little pressure, held in by several pegs and a larger clip. The RTX 5070 isn't terribly large, but it doesn't leave a lot of headroom for one of the two PCIe 4.0 x16 slots that are available just beneath it. If you did want to plug something in there, it'd need to be relatively thin, and I'd worry about how tight it would be squeezed up against the GPU. All the cables are neatly tucked away, but you'll need to work around a few things to replace some components. For example, the CPU fan cables are blocking the RAM and the SSD sits very snugly between the CPU and the motherboard's heatsink.Popping open the panel on the opposite side was just as easy, held in place by the same mechanism. All the cables are zip tied and lined up cleanly on the front, but of course, there's a mess of wires down by the 850W Gold PSU. The PSU is non-modular, too, so if you need to replace a cable, you're going to have to buy a new PSU and play connect the dots. The front glass panel pops off easily from the top and slots back in just as smoothly. You'll find the front connectors just below the glass panel, near the power button. There's a headphone jack as well as two USB 2 Type-A and one USB 3.2 Gen 2 Type-C slot. The placement for the power button as well as the ports is mighty annoying if the PC is placed on the floor as opposed to your desk.On the back, you'll find two USB 3.2 Gen 1 Type-A, one USB 3.2 Gen 2 Type-A, five USB 2 Type-A, one USB 3.2 Gen 2 Type-C, an RJ-45 Ethernet, and three audio ports. There are also connectors for Wi-Fi 6 extenders as well as an HDMI and DisplayPort on the motherboard, which are helpful for troubleshooting. There was a sticker on the back blocking the ports and pulling it off left a sticky residue in places, which is very silly, but you'll need to clean it up.Skytech Gaming Blaze 5 - SoftwareFortunately, there's no real bloatware clogging up the metaphorical pores of the Skytech Gaming Blaze 5. However, it does come packaged with the SignalRGB app, which is a slightly annoying app that gives you access to the system's RGB lighting settings as well as control over your fans and the ability to monitor hardware performance. You do have to customize the monitoring interface yourself. And it asks you to create an account to get access to more lighting features. And it asks you to sign up for a Pro account ($6 per month) to remove the ads. Yes, there are ads in your RGB lighting configuration app. Like I said, it is an annoying app to deal with.I also noticed some issues with the RGB lighting overall. There's no direct setting to turn off the RGB - only to pause or dim the effect, both of which do disable the lighting. However, the lighting will occasionally flicker back on and then off again. And when starting the PC, the app doesn't remember that you disabled the lighting so it'll kick back on. Another issue I noticed is that the RGB lighting occasionally stutters when active, like it's skipping a beat. Skytech Gaming Blaze 5 - PerformanceThe Skytech Gaming Blaze 5 features an Nvidia GeForce RTX 5070 12GB GPU, AMD Ryzen 7 9800X3D, and 32GB of RAM, which will get you mid-tier gaming performance. Unfortunately, it doesn't feel like mid-tier pricing (at $2,299), but perhaps that's to be expected given the current computing climate. Overall, you can get roughly 50 to 60 fps in select AAA games at 4K on high settings. And of course, Nvidia's DLSS frame generation will get you further to capitalize on high refresh rate displays.Taking a tour through Night City in Cyberpunk 2077, the Skytech Gaming Blaze 5 averaged 60 fps at 4K on the Ray Tracing Ultra and DLSS Performance settings. It achieves greater heights with frame generation (x2), scoring 97 fps, and then 167 fps with frame generation (x4). Unfortunately, the RTX 5070 can't reach the full potential of super high refresh rate panels, like 240Hz.With simple DLSS Performance, the Blaze 5 managed 56 fps in Assassin's Creed Shadows and 78 fps with frame generation enabled. Naturally, the Blaze 5 fell low on the Metro Exodus benchmark, at 40 fps, since it's a heavier workload with no upscaling. In a more competitive game, like Black Ops 7, it operated smoothly at 121 fps, which is more than enough to get you up on those leaderboards.Pragmata is a little intense to run on an RTX 5070 at 4K, max settings without any additional help. I started scouring space-dystopian New York City in the space-daddy simulator, and I averaged 40 fps on the highest settings with DLSS Performance enabled. Then I turned on frame generation (x4) and fought the freaky baby-looking robots that haunt my nightmares, which got me around 124 fps. Meanwhile, at 1440p with no frame generation, the Blaze 5 scored 71 fps.You can definitely get by when gaming at 4K, but the Blaze 5 will really shine with a 1440p monitor, capturing those higher frames you want to see. It does cost a hefty sum, so you might as well optimize accordingly.Rami Tabari is a contributing writer at IGN with over 9 years of experience in the tech and gaming industry. You can find his bylines at Laptop Mag and Tom's Guide (and on a random Predator review at Space.com). When Rami isn't wading through a sea of the latest gaming tech, he's agonizing over the worldbuilding in his upcoming novella. |
Your intellectual fly is open (2025)
I need to make a painful confession: somehow, LinkedIn has become an important
social network to me. This isn't necessarily due to LinkedIn's sparkling
competence, of course. To the contrary, LinkedIn is the Gerald Ford of social
networks: the normal one that was left standing as the Richard Nixons and the
Spiro Agnews of social media imploded around them. As with Gerald Ford, with
LinkedIn we know that we're getting something a bit clumsy and boring, but (as
with post-Watergate America!), we're also getting something that isn't totally
crooked - and that's actually a bit of a relief.But because I am finding I am spending more time here, we need to have some
real talk: too many of you are using LLMs to generate content. Now, this isn't
entirely your fault: as if LLMs weren't tempting enough, LinkedIn itself is
cheerfully (insistently!) offering to help you "rewrite it with AI." It seems
so excited to help you out, why not let it chip in and ease your own burden?Because holy hell, the writing sucks. It's not that it's mediocre (though
certainly that!), it's that it is so stylistically grating, riddled with
emojis and single-sentence paragraphs and "it's not just... but also"
constructions and (yes!) em-dashes that some of us use naturally - but most
don't (or shouldn't).When you use an LLM to author a post, you may think you are generating
plausible writing, but you aren't: to anyone who has seen even a modicum of
LLM-generated content (a rapidly expanding demographic!), the LLM tells are
impossible to ignore. Bluntly, your intellectual fly is open: lots of people
notice - but no one is pointing it out. And the problem isn't merely
embarrassment: when you - person whose perspective I want to hear! - are
obviously using an LLM to write posts for you, I don't know what's real and
what is in fact generated fanfic. You definitely don't sound like you, so...
is the actual content real? I mean, maybe? But also maybe not. Regardless, I
stop reading - and so do lots of others.To be clear, I think LLMs are incredibly useful: they are helpful for
brainstorming, invaluable for comprehending text, and they make for
astonishingly good editors. (And, unlike most good editors, you can freely
ignore their well-meaning suggestions without fear of igniting a civil war
over the Oxford comma or whatever.) But LLMs are also lousy writers and (most
importantly!) they are not you. At best, they will wrap your otherwise real
content in constructs that cause people to skim or otherwise stop reading; at
worst, they will cause people who see it for what it is to question your
authenticity entirely.So please, if not for the sanity of all of us than just to give your own
message the credit it deserves: have some confidence in your own voice - and
write your own content. |
US Iran Fight Shifts to Economic Endurance
The Trump administration is intensifying economic pressure on Iran through sanctions and a blockade, with Treasury Secretary Scott Bessent saying Tehran has about 30 million barrels of crude left for potential Chinese buyers. Bloomberg News Middle East Reporter Dan Williams joins Christina Ruffini and Jeff Mason on Bloomberg This Weekend and says the strategy also amounts to a test of endurance, as Washington seeks to outlast Tehran while managing its relationship with China and domestic political pressures.
--------
More on Bloomberg Television and Markets
Like this video? Subscribe and turn on notifications so you don't miss any videos from Bloomberg Markets & Finance: https://tinyurl.com/ysu5b8a9
Visit http://www.bloomberg.com for business news & analysis, up-to-the-minute market data, features, profiles and more.
Connect with Bloomberg Television on:
X: https://twitter.com/BloombergTV
Facebook: https://www.facebook.com/BloombergTelevision
Instagram: https://www.instagram.com/bloombergtv/
Connect with Bloomberg Business on:
X: https://twitter.com/business
Facebook: https://www.facebook.com/bloombergbusiness
Instagram: https://www.instagram.com/bloombergbusiness/
TikTok: https://www.tiktok.com/@bloombergbusiness?lang=en
Reddit: https://www.reddit.com/r/bloomberg/
LinkedIn: https://www.linkedin.com/company/bloomberg-news/
More from Bloomberg:
Bloomberg Radio: https://twitter.com/BloombergRadio
Bloomberg Surveillance: https://twitter.com/bsurveillance
Bloomberg Politics: https://twitter.com/bpolitics
Bloomberg Originals: https://twitter.com/bbgoriginals
Watch more on YouTube:
Bloomberg Technology: https://www.youtube.com/@BloombergTechnology
Bloomberg Originals: https://www.youtube.com/@business
Bloomberg Quicktake: https://www.youtube.com/@BloombergQuicktake
Bloomberg Espanol: https://www.youtube.com/@bloomberg_espanol
Bloomberg Podcasts: https://www.youtube.com/@BloombergPodcasts |
German rocket launch makes history: Can it compete with SpaceX? | DW News
Europe has built satellites, funded space agencies, and developed cutting-edge technology for decades. But it has relied on others to launch missions. That may be changing. German startup Isar Aerospace has made European space history, launching its Spectrum rocket from Norway. It's the first commercial company to reach orbit from continental Europe. But how significant is this breakthrough? And what does it have to do with Donald Trump? We're joined by aerospace engineer and space industry veteran Claudia Kessler, founder of "Astronautin" and a longtime advocate for Germany's role in space exploration.
#Germany #RocketLaunce #Space
For more news go to: http://www.dw.com/en/
Follow DW on social media:
►Instagram: https://www.instagram.com/dwnews
►TikTok: https://www.tiktok.com/@dwnews
►Facebook: https://www.facebook.com/deutschewellenews/
►Twitter: https://twitter.com/dwnews
Für Videos in deutscher Sprache besuchen Sie: https://www.youtube.com/dwdeutsch
Subscribe: https://www.youtube.com/user/deutschewelleenglish?sub_confirmation=1 |
Private German Rocket Makes History, Reaches Orbit From European Soil
"No rocket had ever reached orbit from Western European soil - until today," reports Space.com.
DW.com reports that a Spectrum space rocket from German company Isar Aerospace launched today from the Arctic Norwegian spaceport at Andoya:
"Germany has spaceflight capabilities," said the country's Ministry for Research, Technology and Space on X, praising a "milestone that impressively demonstrates our country's innovative strength and technical expertise". This was the German company's second attempt to launch the Spectrum rocket into space. The first attempt, which took place 18 months ago, was unsuccessful.
The Spectrum rocket is designed for small and medium-sized payloads. It carried five smal satellites and an in-flight technological experiment, the company said. According to Isar Aerospace, the launch was for "both the vehicle's qualification mission and its first flight carrying payload." The move is believed to bring Europe closer to being able to offer satellite flights from its own territory. Several countries voiced interest in the growing market of commercial space missions, including Britain and Sweden...
Isar is also working on the development of a second launch site, located in Canada. The company said that while the US launched 198 rockets last year, Europe's tally was just eight. Isar's goal is to produce some 40 rockets a year. Although the rocket is not yet ready for mass production, Isar has already received orders through 2028.
Today's launch webcast was produced in collaboration with NASASpaceflight, notes Space.com. And they note that Spectrum chief engineer Nikolaos Perakis says"This is just the beginning... I'm really looking forward to the next steps."
Reuters quotes this statemnt from Norway's minister of industry and commerce, Cecilie Myrseth. "The fact that we can now launch satellites from Andoeya strengthens Norwegian and European security in the turbulent times we live in." |
Gdy żołnierze wracają do domu. Koniec wojny, początek problemów.
Program prowadzi Bartosz Borkowski
Oglądaj nasze materiały na kanale "Sygnał" https://www.youtube.com/@kana%C5%82sygna%C5%82
Wspieraj nas przez Patronite: https://patronite.pl/obliczaxxwieku
Oblicza XX Wieku na FB (Newsy i informacje z życia kanału): https://www.facebook.com/obliczaxxwieku
Bibliografia:
Pozostałe filmy o I wojnie światowej:
Piekło w okopach:
https://youtu.be/hwPjNZ1dafo
Czarny humor wojenny:
https://youtu.be/6jXVbcHprJQ
Max Arthur "Świadkowie - Pierwsza wojna światowa"
Janusz Pajewski "Pierwsza Wojna Światowa 1914-1918"
Sławomir Leśniewski "Wojna, pokój, wojna"
Ian Kershaw "Europa 1914-1945 - do piekła i z powrotem"
Gabriel Chevallier "Strach"
Martin Gilbert "Pierwsza wojna światowa"
Andrzej Chwalba "Samobójstwo Europy - Wielka Wojna 1914-1918"
Nick Lloyd "Zachodni front"
T. Czekalski, Trwoga na polu bitwy - wybrane aspekty dziewiętnastowiecznych dyskusji o żołnierskim strachu, „Zeszyty Naukowe Uniwersytetu Jagiellońskiego. Prace Historyczne" (2014, t. 141)
https://ruj.uj.edu.pl/server/api/core/bitstreams/13544891-430e-4617-86ab-474d251e4b9c/content
Stefanie Caroline Linden, Edgar Jones 'Shell shock' Revisited: An Examination of the Case Records of the National Hospital in London
https://pmc.ncbi.nlm.nih.gov/articles/PMC4176276/
E Jones 1, B Everitt, S Ironside, I Palmer, S Wessely "Psychological effects of chemical weapons: a follow-up study of First World War veterans"
https://pubmed.ncbi.nlm.nih.gov/18237455/
Emmanuelle Cronier "Soldiers on Leave"
https://encyclopedia.1914-1918-online.net/article/soldiers-on-leave/
"Arthur Hurst: The Man Who Filmed Shell Shock"
https://www.bbc.co.uk/programmes/articles/4VqPtrjsgcPKtgmYc2M5vXz/arthur-hurst-the-man-who-filmed-shell-shock
"Home From the War: What Happened to Disabled First World War Veterans"
https://heritagecalling.com/2018/12/14/home-from-the-war-what-happened-to-disabled-first-world-war-veterans/
Paweł Stachnik "Rażono ich prądem, głodzono i rozstrzeliwano. Nerwica frontowa (zespół stresu pourazowego) w pierwszej wojnie światowej"
https://ciekawostkihistoryczne.pl/2018/05/07/razono-ich-pradem-glodzono-i-rozstrzeliwano-na-te-przypadlosc-zapadaly-setki-tysiecy-zolnierzy-i-dowodcy-nie-mieli-dla-nich-zadnej-litosci/
Freud, Zygmunt (biogram i badania)
https://encyclopedia.1914-1918-online.net/article/freud-sigmund/ |
Asahi Linux Now Officially Supports Apple M3 Macs - With Caveats
Asahi Linux developers announced today that they are now officially supporting the Linux distribution on Apple M3 powered Macs. With the exception of the Mac Studio M3 Ultra, other M3 / M3 Pro / M3 Max devices should now work with the latest Asahi Linux builds but with some feature caveats... |
LLVM Developers Discuss Enabling ClangIR Build By Default
ClangIR has been in development for a number of years now as a new intermediate representation for the Clang compiler. ClangIR makes use of MLIR and is higher-level than LLVM IR. With ClangIR able to preserve more C/C++ source semantics, its usage can lead to better diagnostics, code/static analysis, and more performance optimizations compared to everything lowered straight away from AST to LLVM IR. While not enabling its usage by default, LLVM stakeholders are discussing at least now building it by default... |
I Changed My License
In the last 28 years of publishing software, I've had three distinct eras of software licensing. All of my recent stuff is available under the European Union Public License 1.2, and I thought to explain why.Midgard was all LGPLv2. This was a simpler time, and there weren't that many free software licenses around. Since Midgard was a web framework, using a weak copyleft license felt like the right thing to do. The example website shipping with Midgard was X11 licensed.When I started working more seriously with JavaScript around 2011, I switched to the MIT license. This was a "do whatever you like, just don't sue me" sort of a simple affair favored by the NPM package ecosystem. Easy interoperability, no hooks attached.After we closed Flowhub, there were a few years of hiatus where I published almost no software. Either because it wasn't feasible due to my work situation, or because I was busy with the boat.This year I decided to switch my "default license" to EUPL-1.2. This is an OSI-approved free software license created and published by the European Union. And it is quite a divergence from the licenses I've used in the past. EUPL is a strong copyleft license that closes the "SaaS loophole" by requiring reciprocal licensing regardless of how the software is distributed.Over the years it has been clear that we in the "open source" camp (as opposed to the "free software" camp) were wrong all along. We won the debate, and gained little for users or developers. All that our efforts did was to make it easier for big corporations build things more cheaply and for billionaires to become trillionaires.And so it is time to stop messing about with permissive licenses. If corporations don't want to use our software under our terms, they are free to spend the effort or tokens to build their own.The fact that EUPL has legally valid official translations to 23 languages also doesn't hurt in a world where most of software is built and used in the wider world outside of the Valley.Here are some things I've already published under EUPL:reticulum-js: JavaScript implementation of the Reticulum mesh networking protocoldacar: decentralized authorization system built on Reticulumoffshore-blogging-system: tool for publishing blog posts and downloading weather data over InReach satellite text messagesIn addition the new rewrite of NoFlo Development Environment is being made under EUPL. NoFlo itself will remain MIT-licensed, as it is a pre-existing project with plenty of 3rd party contributions. |
Proton warns against US tech dominance in Europe | The Dip Podcast
Is Europe too dependent on American tech companies? From cloud services and AI infrastructure to email and data storage, much of Europe's digital economy runs on technology controlled by US firms. At the same time, China is becoming an increasingly powerful competitor.
In this episode of The Dip, DW's Kassandra Sundt speaks with Proton COO Raphael Auphan and EuroStack Initiative chair Cristina Caffarra about digital sovereignty, Big Tech dominance, Europe's investment gap, AI, cloud infrastructure and whether European technology companies can realistically compete with Google, Microsoft, Amazon and China's rising tech champions. #dwbusiness #dwdip
00:00 Is Europe becoming a digital colony?
01:00 Meet the guests: Cristina Caffarra and Raphael Auphan
02:27 Why Europe focused on regulating apps instead of infrastructure
04:01 "Europe is already a digital colony"
06:09 What digital sovereignty actually means
07:54 The "kill switch" risk and dependence on US providers
09:22 Cloud, chips and AI: where Europe's real dependency lies
13:25 Can European tech companies compete with Big Tech?
17:01 Why Europe struggles to switch away from American platforms
20:06 Europe has the startups. So what's missing?
21:09 The €14 trillion funding problem
22:43 What would help European tech scale up?
25:05 Where Europe can still win: AI, cloud and infrastructure
26:18 Can Europe rebuild its own tech stack?
27:35 Final thoughts
For more news go to: http://www.dw.com/en/
Follow DW on social media:
►Instagram: https://www.instagram.com/dwnews
►TikTok: https://www.tiktok.com/@dwnews
►Facebook: https://www.facebook.com/deutschewellenews/
►Twitter: https://twitter.com/dwnews
Für Videos in deutscher Sprache besuchen Sie: https://www.youtube.com/dwdeutsch
Subscribe: https://www.youtube.com/user/deutschewelleenglish?sub_confirmation=1 |
Polls open in Saxony-Anhalt as AfD predicted to win state election
Polls open in Saxony-Anhalt as AfD predicted to win state election
A large AfD victory would pile more pressure onto Merz and his increasingly unpopular coalition. The party has been polling at more than 40%.
READ MORE : http://www.euronews.com/2026/09/06/polls-open-in-saxony-anhalt-as-afd-predicted-to-win-state-election
Subscribe to our channel: https://www.youtube.com/c/euronews?sub_confirmation=1
Watch our LIVE here: https://www.youtube.com/c/euronews/live
Subscribe to our thematic channels:
NoComment: https://www.youtube.com/c/nocommenttv?sub_confirmation=1
Euronews Green: http://bit.ly/2sMsaDB
Euronews Next: https://www.youtube.com/c/EuronewsNext?sub_confirmation=1
Euronews Travel: https://www.youtube.com/c/EuronewsTravel?sub_confirmation=1
Euronews is available on YouTube in 12 languages: https://www.youtube.com/user/euronewsnetwork/channels
#EuropeNews |
Latest news bulletin | September 6th, 2026 - Midday
Latest news bulletin | September 6th, 2026 - Midday
Catch up with the most important stories from around Europe and beyond this September 6th, 2026 - latest news, breaking news, World, Business, Entertainment, Politics, Culture, Travel.
READ MORE : http://www.euronews.com/2026/09/06/latest-news-bulletin-september-6th-2026-midday
Subscribe to our channel: https://www.youtube.com/c/euronews?sub_confirmation=1
Watch our LIVE here: https://www.youtube.com/c/euronews/live
Subscribe to our thematic channels:
NoComment: https://www.youtube.com/c/nocommenttv?sub_confirmation=1
Euronews Green: http://bit.ly/2sMsaDB
Euronews Next: https://www.youtube.com/c/EuronewsNext?sub_confirmation=1
Euronews Travel: https://www.youtube.com/c/EuronewsTravel?sub_confirmation=1
Euronews is available on YouTube in 12 languages: https://www.youtube.com/user/euronewsnetwork/channels
#TopNewsStoriesToday |
Flights suspended at Indonesia's main airport due to volcanic eruption
Flights suspended at Indonesia's main airport due to volcanic eruption
Mount Anak Krakatoa is an active volcano that sits in the Sunda Strait, between the islands of Java and Sumatra.
READ MORE : http://www.euronews.com/2026/09/06/flights-suspended-at-indonesias-main-airport-due-to-volcanic-eruption
Subscribe to our channel: https://www.youtube.com/c/euronews?sub_confirmation=1
Watch our LIVE here: https://www.youtube.com/c/euronews/live
Subscribe to our thematic channels:
NoComment: https://www.youtube.com/c/nocommenttv?sub_confirmation=1
Euronews Green: http://bit.ly/2sMsaDB
Euronews Next: https://www.youtube.com/c/EuronewsNext?sub_confirmation=1
Euronews Travel: https://www.youtube.com/c/EuronewsTravel?sub_confirmation=1
Euronews is available on YouTube in 12 languages: https://www.youtube.com/user/euronewsnetwork/channels |
nvm-sh/nvm
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions. $nvm: 3ArcxqLtXMmBnWbbtfwQgVL3MNnDsggzgGDtXMnjpump allows you to quickly install and use different versions of node via the command line.$ nvm install 24
Now using node v24.14.0 (npm v11.9.0)
$ node -v
v24.14.0
$ nvm use 22
Now using node v22.22.1 (npm v10.9.4)
$ node -v
v22.22.1
$ nvm use 20
Now using node v20.20.1 (npm v10.8.2)
$ node -v
v20.20.1
nvm is a version manager for node.js, designed to be installed per-user, and invoked per-shell. works on any POSIX-compliant shell (sh, dash, ksh, zsh, bash), in particular on these platforms: unix, macOS, and Windows WSL.To or nvm, you should run the install script. To do that, you may either download and run the script manually, or use the following cURL or Wget command:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
Running either of the above commands downloads a script and runs it. The script clones the nvm repository to , and attempts to add the source lines from the snippet below to the correct profile file (, , , or ). If you find the install script is updating the wrong profile file, set the env var to the profile file's path, and then rerun the installation script.export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
If the environment variable is present, it will place the files there.You can add to the end of the above script to postpone using until you manually it:export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" --no-use # This loads nvm, without auto-using the default version
You can customize the install source, directory, profile, and version using the , , , and variables. Eg: curl ... | NVM_DIR="path/to/nvm". Ensure that the does not contain a trailing slash.The installer can use , , or to download , whichever is available.You can instruct the installer to not edit your shell config (for example if you already get completions via a zsh nvm plugin) by setting before running the script. Here's an example one-line command to do that: PROFILE=/dev/null bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash'When invoking bash as a non-interactive shell, like in a Docker container, none of the regular profile files are sourced. In order to use , , and like normal, you can instead specify the special variable, which bash sources when invoked non-interactively.# Use bash for the shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Create a script file sourced by both interactive and non-interactive bash shells
ENV BASH_ENV "${HOME}/.bash_env"
RUN touch "${BASH_ENV}"
RUN echo '. "${BASH_ENV}"' >
>
~/.bashrc
# Download and install nvm
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | PROFILE="${BASH_ENV}" bash
RUN echo node >
.nvmrc
RUN nvm install
Installing in Docker for CICD-JobsFROM ubuntu:latest
ARG NODE_VERSION=20
# install curl
RUN apt update && apt install curl -y
# install nvm
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
# set env
ENV NVM_DIR=/root/.nvm
# install node
RUN bash -c "source $NVM_DIR/nvm.sh && nvm install $NODE_VERSION"
# set ENTRYPOINT for reloading nvm-environment
ENTRYPOINT ["bash", "-c", "source $NVM_DIR/nvm.sh && exec "$@"", "--"]
# set cmd to bash
CMD ["/bin/bash"]
This example defaults to installation of nodejs version 20.x.y. Optionally you can easily override the version with docker build args like:docker build -t nvmimage --build-arg NODE_VERSION=19 .
After creation of the image you can start container interactively and run commands, for example:docker run --rm -it nvmimage
root@0a6b5a237c14:/# nvm -v
0.40.7
root@0a6b5a237c14:/# node -v
v19.9.0
root@0a6b5a237c14:/# npm -v
9.6.3
user@host:/tmp/test $ docker run --rm -it nvmimage node -v
v19.9.0
user@host:/tmp/test $ docker run --rm -it nvmimage npm -v
9.6.3
On Linux, after running the install script, if you get or see no feedback from your terminal after you type , simply close your current terminal, open a new terminal, and try verifying again. Alternatively, you can run the following commands for the different shells on the command line:These should pick up the command.Since OS X 10.9, has been preset by Xcode command line tools, which means we can't properly detect if Git is installed or not. You need to manually install the Xcode command line tools before running the install script, otherwise, it'll fail. (see #1782)If you get after running the install script, one of the following might be the reason:Since macOS 10.15, the default shell is and nvm will look for to update, none is installed by default. Create one with and run the install script again.If you use bash, the previous default shell, your system may not have or files where the command is set up. Create one of them with or and run the install script again. Then, run or to pick up the command.You have previously used , but you have installed. You need to manually add these lines to and run .You might need to restart your terminal instance or run . Restarting your terminal/opening a new tab/window, or running the source command will load the command and the new configuration.If the above didn't help, you might need to restart your terminal instance. Try opening a new tab/window in your terminal and retry.If the above doesn't fix the problem, you may try the following:If you use bash, it may be that your (or ) does not source your properly. You could fix this by adding source ~/
to it or following the next step below.For more information about this issue and possible workarounds, please refer here For Macs with the Apple Silicon chip, node started offering arch Darwin packages since v16.0.0 and experimental support when compiling from source since v14.17.0. If you are facing issues installing node using , you may want to update to one of those versions or later.- name: Install nvm
ansible.builtin.shell: >
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
args:
creates: "{{ ansible_env.HOME }}/.nvm/nvm.sh"
To verify that nvm has been installed, do:which should output if the installation was successful. Please note that will not work, since is a sourced shell function, not an executable binary. On Linux, after running the install script, if you get or see no feedback from your terminal after you type , simply close your current terminal, open a new terminal, and try verifying again.If you're running a system without prepackaged binary available, which means you're going to install node or io.js from its source code, you need to make sure your system has a C++ compiler. For OS X, Xcode will work, for Debian/Ubuntu based GNU/Linux, the and packages work. also supports Windows in some cases. It should work through WSL (Windows Subsystem for Linux) depending on the version of WSL. It should also work with Git Bash (MSYS) or Cygwin. Otherwise, for Windows, a few alternatives exist, which are neither supported nor developed by us: does not support Fish either (see #303). Alternatives exist, which are neither supported nor developed by us:bass allows you to use utilities written for Bash in fish shellfast-nvm-fish only works with version numbers (not aliases) but doesn't significantly slow your shell startupnvm.fish - The Node.js version manager you'll adore, crafted just for Fishfish-nvm - Wrapper around nvm for fish, delays sourcing nvm until it's actually used. We still have some problems with FreeBSD, because there is no official pre-built binary for FreeBSD, and building from source may need patches; see the issue ticket: On OS X, if you do not have Xcode installed and you do not wish to download the ~4.3GB file, you can install the . You can check out this blog post on how to just that: On OS X, if you have/had a "system" node installed and want to install modules globally, keep in mind that:When using you do not need to globally install a module with , so instead of doing sudo npm install -g grunt, do instead If you have an file, make sure it does not contain any settings (which is not compatible with )You can (but should not?) keep your previous "system" node install, but will only be available to your user account (the one used to install nvm). This might cause version mismatches, as other users will be using /usr/local/lib/node_modules/* VS your user account using ~/.nvm/versions/node/vX.X.X/lib/node_modules/*Homebrew installation is not supported. If you have issues with homebrew-installed , please it, and install it using the instructions below, before filing an issue. If you're using you can easily install as a zsh plugin. Install and run to upgrade (you can set to have it automatically detect and use files). Git versions before v1.7 may face a problem of cloning source from GitHub via https protocol, and there is also different behavior of git before v1.6, and git prior to v1.17.10 can not clone tags, so the minimum required git version is v1.7.10. If you are interested in the problem we mentioned here, please refer to GitHub's HTTPS cloning errors article.If you have installed (requires git v1.7.10+):clone this repo in the root of your user profile
from anywhere then git clone https://github.com/nvm-sh/nvm.git .nvm and check out the latest version with activate by sourcing it from your shell: Now add these lines to your , , or file to have it automatically sourced upon login: (you may have to add to more than one of the above files)export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion
For a fully manual install, execute the following lines to first clone the repository into , and then load :export NVM_DIR="$HOME/.nvm" && (
git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR"
cd "$NVM_DIR"
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && . "$NVM_DIR/nvm.sh"
Now add these lines to your , , or file to have it automatically sourced upon login: (you may have to add to more than one of the above files)export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion
For manual upgrade with (requires git v1.7.10+):pull down the latest changescheck out the latest version(
cd "$NVM_DIR"
git fetch --tags origin
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && . "$NVM_DIR/nvm.sh"
To download, compile, and install the latest release of node, do this:nvm install node # "node" is an alias for the latest version
To install a specific version of node:nvm install 14.7.0 # or 16.3.0, 12.22.1, etc
nvm alias my_alias v14.4.0
Make sure that your alias does not contain any spaces or slashes.The first version installed becomes the default. New shells will start with the default version of node (e.g., ).You can list available versions using :And then in any new shell just use the installed version:Or, you can run any arbitrary command in a subshell with the desired version of node:nvm exec 4.2 node --version
You can also get the path to the executable to where it was installed:In place of a version pointer like "14.7" or "16.3" or "12.22.1", you can use the following special default aliases with , , , , , etc:: this installs the latest version of : this installs the latest version of : this alias is deprecated, and only truly applies to and earlier. Currently, this is an alias for .: this alias points to - the last "unstable" node release, since post-1.0, all node versions are stable. (in SemVer, versions communicate breakage, not stability).: the version currently active in this shell (i.e. what resolves to via ). It is affected by . Useful when you want to refer to the active version explicitly - e.g. always prints the path to the active , regardless of whether an file is present.Node has a schedule for long-term support (LTS) You can reference LTS versions in aliases and files with the notation for the latest LTS, and for LTS releases from the "argon" line, for example. In addition, the following commands support LTS arguments: / / / / nvm uninstall --lts=argon / / / / / / / / / / / / nvm ls-remote --lts=argon / / nvm version-remote --lts=argon / nvm version-remote 'lts/*' / nvm version-remote lts/argonAny time your local copy of connects to https://nodejs.org, it will re-create the appropriate local aliases for all available LTS lines. These aliases (stored under ), are managed by , and you should not modify, remove, or create these files - expect your changes to be undone, and expect meddling with these files to cause bugs that will likely not be supported.To get the latest LTS version of node and migrate your existing installed packages, use:nvm install --reinstall-packages-from=current 'lts/*'
Migrating Global Packages While InstallingIf you want to install a new version of Node.js and migrate npm packages from a previous version:nvm install --reinstall-packages-from=node node
This will first use "nvm version node" to identify the current version you're migrating packages from. Then it resolves the new version to install from the remote server and installs it. Lastly, it runs "nvm reinstall-packages" to reinstall the npm packages from your prior version of Node to the new one.You can also install and migrate npm packages from specific versions of Node like this:nvm install --reinstall-packages-from=5 6
nvm install --reinstall-packages-from=iojs v4.2
Note that reinstalling packages explicitly does not update the npm version - this is to ensure that npm isn't accidentally upgraded to a broken version for the new node version.To update npm at the same time add the flag, like this:nvm install --reinstall-packages-from=default --latest-npm 'lts/*'
or, you can at any time run the following command to get the latest supported npm version on the current node version:If you've already gotten an error to the effect of "npm does not support Node.js", you'll need to (1) revert to a previous node version ( & nvm use
), (2) delete the newly created node version (nvm uninstall
), then (3) rerun your with the flag.Migrating Global Packages Between Installed Versions--reinstall-packages-from is tied to . To migrate global npm packages between versions you have installed, without (re)installing anything, the destination and run as a standalone command, pointing at the version you want to copy :nvm use 22.22.2
nvm reinstall-packages 22.20.0
This reinstalls all global packages from into the currently-active version (). As with --reinstall-packages-from, the npm version itself is not changed.If you've previously downloaded a node version (or it's still in the cache), you can install it without any network access using the flag:nvm install --offline 14.7.0
This resolves versions using only locally installed versions and cached downloads. It will not attempt to download anything. This is useful in air-gapped environments, on planes, or when you want to avoid network latency.You can combine with to install the latest cached LTS version (as long as LTS aliases have been populated by a prior ):nvm install --offline --lts
Default Global Packages From File While InstallingIf you have a list of default packages you want installed every time you install a new version, we support that too -- just add the package names, one per line, to the file $NVM_DIR/default-packages. You can add anything npm would accept as a package argument on the command line.# $NVM_DIR/default-packages
rimraf
object-inspect@1.0.2
stevemao/left-pad
io.js was a fork of Node.js, created in 2014 and merged back in 2015. io.js shipped v1, v2, and v3 release lines; post-merge, node.js began releasing with v4.If you want to install io.js:If you want to install a new version of io.js and migrate npm packages from a previous version:nvm install --reinstall-packages-from=iojs iojs
The same guidelines mentioned for migrating npm packages in node are applicable to io.js.If you want to use the system-installed version of node, you can use the special default alias "system":nvm use system
nvm run system --version
If you want to see what versions are installed:If you want to see what versions are available to install:You can set five colors that will be used to display version and alias information. These colors replace the default colors. Initial colors are: g b y r er/R = red / bold red
g/G = green / bold green
b/B = blue / bold blue
c/C = cyan / bold cyan
m/M = magenta / bold magenta
y/Y = yellow / bold yellow
k/K = black / bold black
e/W = light grey / white
If you want the custom colors to persist after terminating the shell, export the variable in your shell profile. For example, if you want to use cyan, magenta, green, bold red and bold yellow, add the following line:export NVM_COLORS='cmgRY'
Suppressing colorized outputnvm help (or -h or --help), , and usually produce colorized output. You can disable colors with the option (or by setting the environment variable ):nvm ls --no-colors
nvm help --no-colors
TERM=dumb nvm ls
To restore your PATH, you can deactivate it:To set a default Node version to be used in any new shell, use the alias 'default':nvm alias default node # this refers to the latest installed version of node
nvm alias default 18 # this refers to the latest installed v18.x version of node
nvm alias default 18.12 # this refers to the latest installed v18.12.x version of node
Use a mirror of node binariesTo use a mirror of the node binaries, set :export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist
nvm install node
NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nvm install 4.2
To use a mirror of the io.js binaries, set :export NVM_IOJS_ORG_MIRROR=https://iojs.org/dist
nvm install iojs-v1.0.3
NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm install iojs-v1.0.3
will not, by default, create a "current" symlink. Set to "true" to enable this behavior, which is sometimes useful for IDEs. Note that using in multiple shell tabs with this environment variable enabled can cause race conditions.Pass Authorization header to mirrorTo pass an Authorization header through to the mirror url, set NVM_AUTH_HEADER="Bearer secret-token" nvm install node
You can create a file containing a node version number (or any other string that understands; see for details) in the project root directory (or any parent directory). Afterwards, , , and will use the version specified in the file if no version is supplied on the command line; if no is found either, they exit with status . ( and follow the same lookup, but currently fall back to the active node if neither resolves - treat that fallback as undefined behavior; pass an explicit version if you need predictable scripting.) If you want the currently active version, pass explicitly (e.g. ) - is not affected by .For example, to make nvm default to the latest 5.9 release, the latest LTS version, or the latest node version for the current directory:$ echo "5.9" >
.nvmrc
$ echo "lts/*" >
.nvmrc # to default to the latest LTS version
$ echo "node" >
.nvmrc # to default to the latest version
[NB these examples assume a POSIX-compliant shell version of . If you use a Windows development environment, eg the file is used to configure a remote Linux deployment, then keep in mind the s will be copied leading to an invalid file. Remove them.]Then when you run nvm use:$ nvm use
Found '/path/to/project/.nvmrc' with version <5.9>
Now using node v5.9.1 (npm v3.7.3)
Running nvm install will also switch over to the correct version, but if the correct node version isn't already installed, it will install it for you.$ nvm install
Found '/path/to/project/.nvmrc' with version <5.9>
Downloading and installing node v5.9.1...
Downloading https://nodejs.org/dist/v5.9.1/node-v5.9.1-linux-x64.tar.xz...
#################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v5.9.1 (npm v3.7.3)
et. al. will traverse directory structure upwards from the current directory looking for the file. In other words, running et. al. in any subdirectory of a directory with an will result in that being utilized.The contents of a file contain precisely one (as described by ) followed by a newline. files may also have comments. The comment delimiter is , and it and any text after it, as well as blank lines, and leading and trailing white space, will be ignored when parsing.Key/value pairs using are also allowed and ignored, but are reserved for future use, and may cause validation errors in the future.Run to validate an file. If that tool's results do not agree with nvm, one or the other has a bug - please file an issue.You can use to shim the , , and bins to automatically use the config in the current directory. is supported by the maintainers. Please report issues to the team.If you prefer a lighter-weight solution, the recipes below have been contributed by users. They are supported by the maintainers. We are, however, accepting pull requests for more examples.Calling automatically in a directory with a fileIn your profile (, , , or ), add the following to whenever you enter a new directory:Put the following at the end of your :cdnvm() {
command cd "$@" || return $?
nvm_path="$(nvm_find_up .nvmrc | command tr -d 'n')"
# If there are no .nvmrc file, use the default nvm version
if [[ ! $nvm_path = *[^[:space:]]* ]]; then
declare default_version
default_version="$(nvm version default)"
# If there is no default version, set it to `node`
# This will use the latest version on your machine
if [ $default_version = 'N/A' ]; then
nvm alias default node
default_version=$(nvm version default)
fi
# If the current version is not the default version, set it to use the default version
if [ "$(nvm current)" != "${default_version}" ]; then
nvm use default
fi
elif [[ -s "${nvm_path}/.nvmrc" && -r "${nvm_path}/.nvmrc" ]]; then
declare nvm_version
nvm_version=$(<"${nvm_path}"/.nvmrc)
declare locally_resolved_nvm_version
# `nvm ls` will check all locally-available versions
# If there are multiple matching versions, take the latest one
# Remove the `->
` and `*` characters and spaces
# `locally_resolved_nvm_version` will be `N/A` if no local versions are found
locally_resolved_nvm_version=$(nvm ls --no-colors "${nvm_version}" | command tail -1 | command tr -d '->
*' | command tr -d '[:space:]')
# If it is not already installed, install it
# `nvm install` will implicitly use the newly-installed version
if [ "${locally_resolved_nvm_version}" = 'N/A' ]; then
nvm install "${nvm_version}";
elif [ "$(nvm current)" != "${locally_resolved_nvm_version}" ]; then
nvm use "${nvm_version}";
fi
fi
}
alias cd='cdnvm'
cdnvm "$PWD" || exit
This alias would search 'up' from your current directory in order to detect a file. If it finds it, it will switch to that version; if not, it will use the default version.This shell function will install (if needed) and the specified Node version when an is found, and otherwise.Put this into your to call automatically whenever you enter a directory that contains an file with a string telling nvm which node to :# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
local nvmrc_path
nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version
nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
nvm use
fi
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
After saving the file, run to reload the configuration with the latest changes made.This requires that you have bass installed.# ~/.config/fish/functions/nvm.fish
function nvm
bass source ~/.nvm/nvm.sh --no-use ';' nvm $argv
end
# ~/.config/fish/functions/nvm_find_nvmrc.fish
function nvm_find_nvmrc
bass source ~/.nvm/nvm.sh --no-use ';' nvm_find_nvmrc
end
# ~/.config/fish/functions/load_nvm.fish
function load_nvm --on-variable="PWD"
set -l default_node_version (nvm version default)
set -l node_version (nvm version)
set -l nvmrc_path (nvm_find_nvmrc)
if test -n "$nvmrc_path"
set -l nvmrc_node_version (nvm version (cat $nvmrc_path))
if test "$nvmrc_node_version" = "N/A"
nvm install (cat $nvmrc_path)
else if test "$nvmrc_node_version" != "$node_version"
nvm use $nvmrc_node_version
end
else if test "$node_version" != "$default_node_version"
echo "Reverting to default Node version"
nvm use default
end
end
# ~/.config/fish/config.fish
# You must call it on initialization or listening to directory switching won't work
load_nvm >
/dev/stderr
Tests are written in Urchin. Install Urchin (and other dependencies) like so:There are slow tests and fast tests. The slow tests do things like install node and check that the right versions are used. The fast tests fake this to test things like aliases and uninstalling. From the root of the nvm git repository, run the fast tests like this:Run the slow tests like this:Run all of the tests like this:Nota bene: Avoid running nvm while the tests are running.nvm exposes the following environment variables: - nvm's installation directory. - where node, npm, and global packages for the active version of node are installed. - node's include file directory (useful for building C/C++ addons for node). - used to maintain compatibility with zsh. - version from .nvmrc file if being used.Additionally, nvm modifies , and, if present, and when changing versions.The following environment variables can be set to configure : - when , a failed binary download aborts instead of silently falling back to a (much slower) from-source compile; the persistent equivalent of the flag, and mutually exclusive with . - seconds to wait for a concurrent install of the same version to finish before giving up (default ). On timeout, nvm prints the lock path so a lock left behind by a killed install can be removed. - minutes after which an install lock is assumed abandoned and stolen automatically; (the default) never steals. takes a per-version advisory lock (a directory under ), so two shells installing the same version at once cannot corrupt its version directory; installs of versions never block each other.To activate, you need to source :[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
Put the above sourcing line just below the sourcing line for nvm in your profile (, ).alias deactivate install list-remote reinstall-packages uninstall version
cache exec install-latest-npm ls run unload version-remote
current help list ls-remote unalias use which
default iojs lts/* lts/argon lts/boron lts/carbon lts/dubnium lts/erbium node stable unstable
v10.22.0 v12.18.3 v14.8.0
my_alias default v10.22.0 v12.18.3 v14.8.0
my_alias default v10.22.0 v12.18.3 v14.8.0
will encounter some issues if you have some non-default settings set. (see #606) The following are known to cause issues:$NPM_CONFIG_PREFIX
$PREFIX
Installing nvm on Alpine LinuxIn order to provide the best performance (and other optimizations), nvm will download and install pre-compiled binaries for Node (and npm) when you run . The Node project compiles, tests and hosts/provides these pre-compiled binaries which are built for mainstream/traditional Linux distributions (such as Debian, Ubuntu, CentOS, RedHat et al).Alpine Linux, unlike mainstream/traditional Linux distributions, is based on BusyBox, a very compact (~5MB) Linux distribution. BusyBox (and thus Alpine Linux) uses a different C/C++ stack to most mainstream/traditional Linux distributions - musl. This makes binary programs built for such mainstream/traditional incompatible with Alpine Linux, thus we cannot simply on Alpine Linux and expect the downloaded binary to run correctly - you'll likely see "...does not exist" errors if you try that.There is a flag for which requests nvm download Node source and compile it locally.If installing nvm on Alpine Linux still what you want or need to do, you should be able to achieve this by running the following from your Alpine Linux shell, depending on which version you are using:apk add -U curl bash ca-certificates openssl ncurses coreutils python3 make gcc g++ libgcc linux-headers grep util-linux binutils findutils
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
apk add -U curl bash ca-certificates openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
Note: Alpine 3.5 can only install NodeJS versions up to v6.9.5, Alpine 3.6 can only install versions up to v6.10.3, Alpine 3.7 installs versions up to v8.9.3, Alpine 3.8 installs versions up to v8.14.0, Alpine 3.9 installs versions up to v10.19.0, Alpine 3.10 installs versions up to v10.24.1, Alpine 3.11 installs versions up to v12.22.6, Alpine 3.12 installs versions up to v12.22.12, Alpine 3.13 & 3.14 install versions up to v14.20.0, Alpine 3.15 & 3.16 install versions up to v16.16.0 (These are all versions on the main branch). Alpine 3.5 - 3.12 required the package to build NodeJS, as they are older versions to build. Alpine 3.13+ requires to successfully build newer NodeJS versions, but you can use with Alpine 3.13+ if you need to build versions of node supported in Alpine 3.5 - 3.15, you just need to specify what version of NodeJS you need to install in the package install script.The Node project has some desire but no concrete plans (due to the overheads of building, testing and support) to offer Alpine-compatible binaries.To remove manually, execute the following:First, use to remove the nvm command from your terminal session and delete the installation directory:$ nvm_dir="${NVM_DIR:-~/.nvm}"
$ nvm unload
$ rm -rf "$nvm_dir"
Edit (or other shell resource config) and remove the lines below:export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
[[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
Docker For Development EnvironmentTo make development and testing work easier we supply a Dockerfile for development usage. It's based on an Ubuntu base image prepared with essential and useful tools for development. To build the docker image of the environment, do a Docker build at the root of repository:$ docker build -t nvm-dev .
This will package your current nvm working copy with our pre-defined development environment into a Docker image named . After the build you should see it appear in the list of images:$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nvm-dev latest 9ca4c57a97d8 7 days ago 650 MB
To start and enter a container based on this image:$ docker run -h nvm-dev -it nvm-dev
nvm@nvm-dev:~/.nvm$
It takes several minutes to build the image and the image size is about 650MB, so it's not suitable for production usage.If you try to install a node version and the installation fails, be sure to run to delete cached node downloads, or you might get an error like the following:curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume.Where's my ? Check out #43After the v0.8.6 release of node, nvm tries to install from binary packages. But in some systems, the official binary packages don't work due to incompatibility of shared libs. In such cases, use option to force install from source:If setting the alias does not establish the node version in new shells (i.e. yields ), ensure that the system's node is set before the source line in your shell profile (see #658)nvm node version not found in vim shellIf you set node version to a version other than your system node version and open vim and run you should see if you see your system version . You need to run:sudo chmod ugo-x /usr/libexec/path_helper
nvm is not compatible with the npm config "prefix" optionSome solutions for this issue can be found hereThere is one more edge case causing this issue, and that's a mismatch between the path and the user's home directory's actual name.You have to make sure that the user directory name in and the user directory name you'd see from running are capitalized the same way (See this issue).To change the user directory and/or account name follow the instructions hereHomebrew makes zsh directories insecurezsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]? y
Homebrew causes insecure directories like /usr/local/share/zsh/site-functions and . This is an problem - it is a homebrew problem. Refer here for some solutions related to the issue.Macs with Apple Silicon chipsExperimental support for the Apple Silicon chip architecture was added in node.js v15.3 and full support was added in v16.0. Because of this, if you try to install older versions of node as usual, you will probably experience either compilation errors when installing node or out-of-memory errors while running your code.So, if you want to run a version prior to v16.0 on an Apple Silicon Mac, it may be best to compile node targeting the Intel architecture so that Rosetta 2 can translate the processor instructions to ARM-based Apple Silicon instructions. Here's what you will need to do:Install Rosetta, if you haven't already done so$ softwareupdate --install-rosetta
You might wonder, "how will my Apple Silicon Mac know to use Rosetta for a version of node compiled for an Intel chip?". If an executable contains only Intel instructions, macOS will automatically use Rosetta to translate the instructions.Open a shell that's running using RosettaNote: This same thing can also be accomplished by finding the Terminal or iTerm App in Finder, right clicking, selecting "Get Info", and then checking the box labeled "Open using Rosetta".Note: This terminal session is now running in . If is not the shell you typically use, may not be 'd automatically like it probably is for your usual shell through your dotfiles. If that's the case, make sure to source .$ source "${NVM_DIR}/nvm.sh"
Install whatever older version of node you are interested in. Let's use 12.22.1 as an example. This will fetch the node source code and compile it, which will take several minutes.$ nvm install v12.22.1 --shared-zlib
Note: You're probably curious why is included. There's a bug in recent versions of Apple's system compiler. If one of these broken versions is installed on your system, the above step will likely still succeed even if you didn't include the flag. However, later, when you attempt to something using your old version of node.js, you will see errors. If you want to avoid the possible hassle of dealing with this, include that flag. For more details, see this issue and this commentExit back to your native shell.Note: If you selected the box labeled "Open using Rosetta" rather than running the CLI command in the second step, you will see here. Unless you have another reason to have that box selected, you can deselect it now.Check to make sure the architecture is correct. is the abbreviation for , which is what you want to see.$ node -p process.arch
x64
Now you should be able to use node as usual.If you've encountered this error on WSL-2:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0curl: (6) Could not resolve host: raw.githubusercontent.com
It may be due to your antivirus, VPN, or other reasons.Where you can while you can't This could simply be solved by running this in your root directory:sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" >
/etc/resolv.conf'
sudo bash -c 'echo "[network]" >
/etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >
>
/etc/wsl.conf'
sudo chattr +i /etc/resolv.conf
This deletes your file that is automatically generated when you run WSL, creates a new file and puts , then creates a file and adds and generateResolveConf = false to prevent auto-generation of that file.You can check the contents of the file by running:Currently, the sole maintainer is @ljharb - more maintainers are quite welcome, and we hope to add folks to the team over time. Governance will be re-evaluated as the project evolves.Only the latest version (v0.40.7 at this time) is supported.If you are unable to update to the latest version of , our partners provide commercial security fixes for all unsupported versions: |
WorldFlowAI/everything-claude-code
Claude Code toolkit - agents, commands, skills, rules, and hooks for productive AI-assisted developmentThe complete collection of Claude Code configs from an Anthropic hackathon winner.Production-ready agents, skills, hooks, commands, rules, and MCP configurations evolved over 10+ months of intensive daily use building real products.This repo is the raw code only. The guides explain everything.Model selection, system prompt slimming, background processesHooks that save/load context across sessions automaticallyAuto-extract patterns from sessions into reusable skillsCheckpoint vs continuous evals, grader types, pass@k metricsGit worktrees, cascade method, when to scale instancesThe context problem, iterative retrieval patternThis plugin now fully supports Windows, macOS, and Linux. All hooks and scripts have been rewritten in Node.js for maximum compatibility.Package Manager DetectionThe plugin automatically detects your preferred package manager (npm, pnpm, yarn, or bun) with the following priority:: : .claude/package-manager.json: field: Detection from package-lock.json, yarn.lock, pnpm-lock.yaml, or bun.lockb: ~/.claude/package-manager.json: First available package managerTo set your preferred package manager:# Via environment variable
export CLAUDE_PACKAGE_MANAGER=pnpm
# Via global config
node scripts/setup-package-manager.js --global pnpm
# Via project config
node scripts/setup-package-manager.js --project bun
# Detect current setting
node scripts/setup-package-manager.js --detect
Or use the command in Claude Code.This repo is a - install it directly or copy components manually.everything-claude-code/
|-- .claude-plugin/ # Plugin and marketplace manifests
| |-- plugin.json # Plugin metadata and component paths
| |-- marketplace.json # Marketplace catalog for /plugin marketplace add
|
|-- agents/ # Specialized subagents for delegation
| |-- planner.md # Feature implementation planning
| |-- architect.md # System design decisions
| |-- tdd-guide.md # Test-driven development
| |-- code-reviewer.md # Quality and security review
| |-- security-reviewer.md # Vulnerability analysis
| |-- build-error-resolver.md
| |-- e2e-runner.md # Playwright E2E testing
| |-- refactor-cleaner.md # Dead code cleanup
| |-- doc-updater.md # Documentation sync
|
|-- skills/ # Workflow definitions and domain knowledge
| |-- coding-standards/ # Language best practices
| |-- backend-patterns/ # API, database, caching patterns
| |-- frontend-patterns/ # React, Next.js patterns
| |-- continuous-learning/ # Auto-extract patterns from sessions (Longform Guide)
| |-- strategic-compact/ # Manual compaction suggestions (Longform Guide)
| |-- tdd-workflow/ # TDD methodology
| |-- security-review/ # Security checklist
| |-- eval-harness/ # Verification loop evaluation (Longform Guide)
| |-- verification-loop/ # Continuous verification (Longform Guide)
|
|-- commands/ # Slash commands for quick execution
| |-- tdd.md # /tdd - Test-driven development
| |-- plan.md # /plan - Implementation planning
| |-- e2e.md # /e2e - E2E test generation
| |-- code-review.md # /code-review - Quality review
| |-- build-fix.md # /build-fix - Fix build errors
| |-- refactor-clean.md # /refactor-clean - Dead code removal
| |-- learn.md # /learn - Extract patterns mid-session (Longform Guide)
| |-- checkpoint.md # /checkpoint - Save verification state (Longform Guide)
| |-- verify.md # /verify - Run verification loop (Longform Guide)
| |-- setup-pm.md # /setup-pm - Configure package manager (NEW)
|
|-- rules/ # Always-follow guidelines (copy to ~/.claude/rules/)
| |-- security.md # Mandatory security checks
| |-- coding-style.md # Immutability, file organization
| |-- testing.md # TDD, 80% coverage requirement
| |-- git-workflow.md # Commit format, PR process
| |-- agents.md # When to delegate to subagents
| |-- performance.md # Model selection, context management
|
|-- hooks/ # Trigger-based automations
| |-- hooks.json # All hooks config (PreToolUse, PostToolUse, Stop, etc.)
| |-- memory-persistence/ # Session lifecycle hooks (Longform Guide)
| |-- strategic-compact/ # Compaction suggestions (Longform Guide)
|
|-- scripts/ # Cross-platform Node.js scripts (NEW)
| |-- lib/ # Shared utilities
| | |-- utils.js # Cross-platform file/path/system utilities
| | |-- package-manager.js # Package manager detection and selection
| |-- hooks/ # Hook implementations
| | |-- session-start.js # Load context on session start
| | |-- session-end.js # Save state on session end
| | |-- pre-compact.js # Pre-compaction state saving
| | |-- suggest-compact.js # Strategic compaction suggestions
| | |-- evaluate-session.js # Extract patterns from sessions
| |-- setup-package-manager.js # Interactive PM setup
|
|-- tests/ # Test suite (NEW)
| |-- lib/ # Library tests
| |-- hooks/ # Hook tests
| |-- run-all.js # Run all tests
|
|-- contexts/ # Dynamic system prompt injection contexts (Longform Guide)
| |-- dev.md # Development mode context
| |-- review.md # Code review mode context
| |-- research.md # Research/exploration mode context
|
|-- examples/ # Example configurations and sessions
| |-- CLAUDE.md # Example project-level config
| |-- user-CLAUDE.md # Example user-level config
|
|-- mcp-configs/ # MCP server configurations
| |-- mcp-servers.json # GitHub, Supabase, Vercel, Railway, etc.
|
|-- marketplace.json # Self-hosted marketplace config (for /plugin marketplace add)
Option 1: Install as Plugin (Recommended)The easiest way to use this repo - install as a Claude Code plugin:# Add this repo as a marketplace
/plugin marketplace add affaan-m/everything-claude-code
# Install the plugin
/plugin install everything-claude-code@everything-claude-code
Or add directly to your :{
"extraKnownMarketplaces": {
"everything-claude-code": {
"source": {
"source": "github",
"repo": "affaan-m/everything-claude-code"
}
}
},
"enabledPlugins": {
"everything-claude-code@everything-claude-code": true
}
}
This gives you instant access to all commands, agents, skills, and hooks.Option 2: Manual InstallationIf you prefer manual control over what's installed:# Clone the repo
git clone https://github.com/affaan-m/everything-claude-code.git
# Copy agents to your Claude config
cp everything-claude-code/agents/*.md ~/.claude/agents/
# Copy rules
cp everything-claude-code/rules/*.md ~/.claude/rules/
# Copy commands
cp everything-claude-code/commands/*.md ~/.claude/commands/
# Copy skills
cp -r everything-claude-code/skills/* ~/.claude/skills/
Add hooks to settings.jsonCopy the hooks from to your .Copy desired MCP servers from mcp-configs/mcp-servers.json to your . Replace placeholders with your actual API keys.Subagents handle delegated tasks with limited scope. Example:---
name: code-reviewer
description: Reviews code for quality, security, and maintainability
tools: Read, Grep, Glob, Bash
model: opus
---
You are a senior code reviewer...
Skills are workflow definitions invoked by commands or agents:# TDD Workflow
1. Define interfaces first
2. Write failing tests (RED)
3. Implement minimal code (GREEN)
4. Refactor (IMPROVE)
5. Verify 80%+ coverage
Hooks fire on tool events. Example - warn about console.log:{
"matcher": "tool == "Edit" && tool_input.file_path matches "\\.(ts|tsx|js|jsx)$"",
"hooks": [{
"type": "command",
"command": "#!/bin/bashngrep -n 'console\.log' "$file_path" && echo '[Hook] Remove console.log' >
&2"
}]
}
Rules are always-follow guidelines. Keep them modular:~/.claude/rules/
security.md # No hardcoded secrets
coding-style.md # Immutability, file limits
testing.md # TDD, coverage requirements
The plugin includes a comprehensive test suite:# Run all tests
node tests/run-all.js
# Run individual test files
node tests/lib/utils.test.js
node tests/lib/package-manager.test.js
node tests/hooks/hooks.test.js
Contributions are welcome and encouraged.This repo is meant to be a community resource. If you have:Better MCP configurationsLanguage-specific skills (Python, Go, Rust patterns)Framework-specific configs (Django, Rails, Laravel)DevOps agents (Kubernetes, Terraform, AWS)Testing strategies (different frameworks)Domain-specific knowledge (ML, data engineering, mobile)I've been using Claude Code since the experimental rollout. Won the Anthropic x Forum Ventures hackathon in Sep 2025 building zenith.chat with @DRodriguezFX - entirely using Claude Code.These configs are battle-tested across multiple production applications.Context Window Management Don't enable all MCPs at once. Your 200k context window can shrink to 70k with too many tools enabled.Have 20-30 MCPs configuredKeep under 10 enabled per projectUse in project config to disable unused ones.These configs work for my workflow. You should:Start with what resonatesRemove what you don't useMIT - Use freely, modify as needed, contribute back if you can.Star this repo if it helps. Read both guides. Build something great. |
BraveOPotato/FckSignups
A list of tools that are open-source, in-browser, and require no-signups!Open Source Tools. Zero Bullsh*t. A curated collection of open-source tools you can use instantly in your browser. no accounts, no emails, no tracking. Just tools that work.NoSignups is a React + TypeScript project. If you want to run it locally, simply clone the repo, install the depedencies, and run the server.Here's a command that would do all the previous steps in one go:git clone https://github.com/BraveOPotato/FckSignups.git &&
cd FckSignups &&
npm install &&
npm run dev
Tools should work immediatelyForced registration wallsData harvesting and trackingOpen source is the defaultBloat and unnecessary complexityURL-friendly unique identifierArray of searchable keywordsLink to source repositoryGitHub star count (for display)Reason why the entry isn't recommendedThe default categories are:The tool must work without creating an accountKeep descriptions under 140 charactersUse 3-5 relevant tags per toolUse the following link to add a tool you found/made or simply use the "SUBMIT A TOOL" button on the website.If you'd like to voice your opinion, we have a community on reddit r/fucksignups.Don't be afraid to critique.Why are some tools featured?It's simple. We're at 200+ tools, and a lot of them are similar. To break the homogeneity, I flag the unique ones to the top. This is biased since "what is uniqueness?" and I simply define that as a tool that is different from the other ones. Whether it's outstanding quality, or simply a very unique idea.The NoSignups directory code is released under the .Individual tools listed in the directory retain their own licenses. We do not claim ownership of any third-party projects.Curated with spite by people who are tired of typing their email into everything.No cookies. No analytics. No bullsht.* |
|