# entry

guid: CCAL-118hcal-2024-12-16
title: House Calendars, DAILY - House Calendars for December 16, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118hcal-2024-12-16
hash: c*K����-zV�Ɯ?�
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-16/pdf/CCAL-118hcal-2024-12-16.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-16/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-16/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-16.zip">ZIP</a>


guid: yt:video:758NdysJa5I
title: Friday Symposium: Why Poetry Supersedes Information
author: ;Diane Sare
link: https://www.youtube.com/watch?v=758NdysJa5I
hash: Jz9~�o��� �g���
attributes:
{"enclosures":[{"url":"https://www.youtube.com/v/758NdysJa5I?version=3","title":"Friday Symposium: Why Poetry Supersedes Information","type":"application/x-shockwave-flash","height":390,"width":640,"thumbnails":["https://i4.ytimg.com/vi/758NdysJa5I/hqdefault.jpg"]}]}


guid: https://alexkrainer.substack.com/p/syria-will-it-prove-to-be-the-empires
title: Syria: will it prove to be the empire's final quagmire?
author: ;Alex Krainer
link: https://alexkrainer.substack.com/p/syria-will-it-prove-to-be-the-empires
hash: �7���� ���'
content:
<p>On Sunday morning we woke up to the most surreal news: the regime of <strong>Bashar al-Assad</strong> in Syria is no more. From the day the new-and-improved Jabhat al-Nusra, now renamed Hayat Tahrir al-Sham (HTS), launched their attack on Syria (Wednesday, 27 November at 7:50 AM) to Sunday, 8 December 2024, only 11 days' time. In those 11 days,  Damascus fell and president Assad fled to Russia. The Syrian Arab Army (SAA) offered next to no resistance and HTS drove straight through Syria almost unopposed. </p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10334914-f502-4acf-8299-76c13def77f7_2115x1177.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10334914-f502-4acf-8299-76c13def77f7_2115x1177.png" width="1456" height="810" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/10334914-f502-4acf-8299-76c13def77f7_2115x1177.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":810,"width":1456,"resizeWidth":null,"bytes":3420611,"alt":"","title":null,"type":"image/png","href":null,"belowTheFold":false,"topImage":true,"internalRedirect":null,"isProcessing":false}' alt="" title="" fetchpriority="high" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">West’s moderate head choppers in action</figcaption></figure></div><p>All of a sudden and seemingly out of nowhere, the already strategically defeated Western empire suddenly scored a brilliant victory and everything changed. The media and social networks are chock-full of stories about how this happened and explanations of why it happened this way. Supposedly Syria was too week, its troops too poorly paid, its leadership too corrupt to withstand the onslaught from Idlib.</p><p>The same Syria and its army under the same Bashar Al-Assad fought a concerted attack by Al Qaeda, ISIS, al-Nusra, Khorasan and other moderate head choppers supported by Turkey, US, UK and the whole Arab league.  They resisted for four long years, from 2011 until 2015, when Russia finally came to their rescue. The same Bashar al-Assad refused to flee Damascus back then. Since 2016, Syria had 8 full years to regroup, rearm and reinforce their defenses against the incursion which was fully expected.</p><h2>Syria folded with a stronger hand</h2><p>Not only that, in those past 8 years the circumstances changed quite substantially: until last Sunday, Syria was facing a much weaker West, a fractured Arab street (the Arab League, with the exception of Qatar was at least overtly supportive of the Assad regime). In 2011, Russia and Iran had a cold-to-hostile relationship but today they are in a close alliance and both were fully supportive of Syria. Furthermore, Iran and Saudi Arabia are no longer enemies and Iran has largely consolidated its dominance in the region. </p><p>The insurgency brewing under Turkish protection in Idlib wasn't a secret either. Iranian intelligence warned Assad and Syrian leadership months in advance that an attack was being prepared. HTS's leader <strong>Mohammad al-Golani</strong> made no secret that HTS's objective was not only Aleppo but Damascus itself. According to US reports, HTS &amp; friends have been attacking Syrian positions almost constantly since 2022 and SAA had heavily fortified positions capable of containing attacks from Idlib towards Aleppo. But when the attack came, they offered almost no resistance.</p><p>Keep in mind, the jihadi forces from Idlib counted between 20,000 and 30,000 troops. Syrian army counted nearly 270,000 troops. An invading force would have to outnumber the defending forces by a factor of 3:1 to overcome their resistance. As it was, the defenders outnumbered the attackers almost 10:1, were well equipped and well armed in fortified positions. This is the reason why the Israeli intelligence thought that Idlib incursion was a suicide mission.  SAA's best forces were concentrated in Hama, but when HTS attacked, Hama fell without a fight. </p><h2>Four beers to die defending your country</h2><p>Why did all of Syria fall without a fight? I suspect that many of the knee-jerk explanations circulating at present will prove wrong. The stories about poorly paid soldiers and corrupt commanders make as much sense as office fires bringing down steel frame towers. This simply can’t happen that way. </p><p>I served in the army during war and I remember that my salary was good to pay four beers out in the city. Regardless, I don’t recall a single conversation about whether our pay was enough for us to obey our orders. How and why the Syrian army vanished in 11 days’ time requires a better explanation. Either way, if I were sitting on the (currently) winning side, I'd be very worried by now: the only place you walk into this easily is a trap.</p><h2>The big picture: Syria and Ukraine are two parts of the same war</h2><p>Time will tell, but here are a few dots that might make coherent sense if connected. First off, the conflict in Syria is part of the same conflict that's also being fought in Ukraine. On 29 November in Astana (two days after HTS launched their incursion into Syria), <strong>Vladimir Putin</strong> said the following with regards to war/peace in Ukraine:</p><blockquote><p>"Let me underscore the key point - the essence of our proposal is not a temporary truce or ceasefire, as the West might prefer, to allow the Kiev regime to recover, rearm, and prepare for a new offensive. I repeat: we are not discussing freezing the conflict, but its definitive resolution."</p></blockquote><p>And what is Putin's definitive resolution? It's nothing less than the creation of a new security architecture between the "heartland and the rimland" to use <strong>Halford Mackinder</strong>'s terminology. In other words, Putin is determined to end British geopolitics once and for all. The following section is an excerpt from my upcoming book about the conflict in Ukraine and I believe it is fully relevant to the recent events in Syria.</p><h2>Squashing British geopolitics</h2><p>Today’s wars are driven by the Western imperial oligarchy as they struggle to maintain their dominance and to impose their “rules-based” global order. The central element of their agenda is an overarching imperative to preserve their hegemony over the Eurasian landmass. This long-held obsession draws roots from the British Empire. It was explicitly articulated at the turn of the last century by the British scholar and statesman <strong>Sir Halford Mackinder</strong>.</p><p>Following an extensive study of world history and geography, in 1904 Mackinder published a seminal paper titled, “The Geographical Pivot of History” in which he argued that the Empire’s exclusive focus on sea power was misguided and that the destiny of the world would be shaped by land powers. Mackinder hypothesized that the long-term viability of states therefore critically depended on their space and location and concluded that optimum conditions of space and location were only to be found in the inner regions of Eurasia which he named the <em>Pivot Area</em>: a large expanse roughly encompassing Russia, the Caucasus region, Kazakhstan, Iran, and Afghanistan. </p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b18cba-c718-4534-988f-37f6d4b80239_1260x786.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b18cba-c718-4534-988f-37f6d4b80239_1260x786.png" width="1260" height="786" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/27b18cba-c718-4534-988f-37f6d4b80239_1260x786.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":786,"width":1260,"resizeWidth":null,"bytes":1032785,"alt":"","title":null,"type":"image/png","href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>In Mackinder’s framework, the Pivot Area is surrounded by the Inner or Marginal Crescent which includes Europe, Northern Africa, Asia Minor, the Arabian Peninsula, India, China and Japan, while the lands of the Outer, or Insular Crescent included the rest of the world. For Mackinder and the British imperial cabal, the Pivot Area was strategic because it was capable of emerging as an independently viable economic power that could spawn a powerful rival empire. </p><p>The introduction of Trans-Siberian railway in 1904, facilitating improvements in the region’s internal communications and transport which the railway made possible, was seen as a major catalyst of this development, as well as a cause of alarm for the imperial cabal in London. </p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fc4ca7-578c-4395-9057-2b562fba8d25_1217x829.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fc4ca7-578c-4395-9057-2b562fba8d25_1217x829.png" width="1217" height="829" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/c1fc4ca7-578c-4395-9057-2b562fba8d25_1217x829.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":829,"width":1217,"resizeWidth":null,"bytes":1029328,"alt":"","title":null,"type":"image/png","href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Russia was seen as the most likely nation to emerge as the pivot land power. Mackinder wrote as follows:</p><blockquote><p> “The spaces within the Russian empire and Mongolia are so vast, and their potentialities in population, wheat, cotton, fuel, and metals so incalculably great, that it is inevitable that a vast economic world, more or less apart, will develop inaccessible to oceanic commerce … In the world at large, [Russia] occupies the central strategical position held by Germany in Europe. She can strike on all sides, save the north. The full development of her modern railway mobility is merely a matter of time… The oversetting of the balance of power in favor of the <em>pivot </em>state, resulting in its expansion over the marginal lands of Euro-Asia, would permit of the use of vast continental resources for fleet-building, a<em>nd the empire of the world would then be in sight. This might happen if Germany were to ally herself with Russia.</em>”</p></blockquote><p>British Empire considered this to be an existential threat which had to be neutralized and destroyed. Mackinder proposed a solution to this challenge, which foreshadowed the century of British geopolitics:</p><blockquote><p>“The threat of such an event should, therefore, throw France into alliance with the over-sea powers, and France, Italy, Egypt, India and Korea would become so many <em>bridgeheads</em> where the outside navies would support armies to compel the pivot allies to deploy land forces and prevent them from concentrating their whole strength on fleets.”</p></blockquote><h2>Surrounding Russia with an arch of crises</h2><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63feaaae-e2fe-49b0-bb25-e10ff423b247_641x327.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63feaaae-e2fe-49b0-bb25-e10ff423b247_641x327.png" width="641" height="327" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/63feaaae-e2fe-49b0-bb25-e10ff423b247_641x327.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":327,"width":641,"resizeWidth":null,"bytes":172685,"alt":null,"title":null,"type":"image/png","href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">The empire’s arch of crises</figcaption></figure></div><p>In plain English, Mackinder suggested surrounding the Pivot Area with a crescent of crisis flashpoints and inducing nations like France, Italy, Egypt, India and Korea to bait the pivot power (Russia) into an unending series of exhausting, crippling quagmires. His suggestions were taken entirely seriously and have defined the foreign policy of the Western empire ever since. </p><p>Over the ensuing decades, the exact geography of the designated flashpoints shifted somewhat with the changing geopolitical opportunities and Mackinder’s language and ideas evolved. For example, in 1919 he published the paper, “Democratic Ideals and Reality,” in which he renamed the Pivot Area as “the Heartland,” and spelled out its significance: “<em>Who rules East Europe commands the Heartland; who rules the Heartland commands the World-island; who rules the World-island controls the world.</em>"</p><p>Today, Ukraine and Syria (and Israel) make part of the rimland, or the "arch of crises" which the empire arranged from the Mediterranean to the Koreas in order to keep Russia and its allied powers constantly at war. Weakening these pivot power and preventing the emergence of a rival empire on Eurasian continent is an absolute imperative for the Western oligarchy. They will pursue it even at the cost of nuclear war against Russia. </p><p>Taking this “big picture” context into account, from Russia’s point of view, it could make sense to draw the empire into its final quagmire in Syria. After all, this is how the West destroyed the Soviet Union in the 1980s: not through a frontal war, but by drawing the USSR into a quagmire in Afghanistan. It was a clever gambit, but not really rocket science. And it worked.</p><p>The brilliant victory the west is now busy celebrating might even sedate the panic in the ruling establishment, enough for them to draw their fingers away from nuclear triggers and to pile assets into Syria to secure and defend the unexpected prize. But if the past is prologue, they’ve only won a Pyrrhic victory and already lost the war. The track record of the West’s cunning plans and dirty tricks is very consistent and predictive.</p><h2>Of cunning plans and dirty tricks</h2><p>Western powers seem to revel in their duplicity and treachery. They long lost their moral compass if they ever had one. Supposedly they once did, in the good old days, but the more you know about events behind the headlines, they more you realize that the only thing that's changed since those good old days is that today we have a far more granular picture of events. Sanitized news and sanctimonious proclamations are no longer taken at face value quite as readily as they once were.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ad3376f-6e80-4af7-a407-7e14d4d7a3b9_480x208.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ad3376f-6e80-4af7-a407-7e14d4d7a3b9_480x208.jpeg" width="480" height="208" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/2ad3376f-6e80-4af7-a407-7e14d4d7a3b9_480x208.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":208,"width":480,"resizeWidth":null,"bytes":null,"alt":"","title":"","type":null,"href":null,"belowTheFold":true,"topImage":true,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" fetchpriority="high" data-sanitized-class="sizing-normal"></picture><div></div></div></a></figure></div><p>Many are now openly celebrating evil - because Putin bad, Iranians bad, Assad bad, etc. Syria fell, not to the forces of democracy and freedom, but to hastily scotched-up brigades of certified head-chopping jihadi terrorists - the same ones that have slaughtered Syria's Christians by their thousands between 2011 and 2015.</p><p> Before 2011, Syria was home to about 2 million Christians who lived there in peace; today there are only abpit 300,000 and most likely there will be none left before this year is out. And the jihadis are equal opportunity, inclusive head choppers: they harbor the same warm regards toward Shia Muslims, Alawites and the Jews. But hey, Assad fell so hooray, what a brilliant victory for our side!! So clever, so cunning, so triumphant!</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c82f49-3276-474d-86f5-1a172d5a980f_1512x780.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c82f49-3276-474d-86f5-1a172d5a980f_1512x780.png" width="1456" height="751" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/a6c82f49-3276-474d-86f5-1a172d5a980f_1512x780.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":751,"width":1456,"resizeWidth":null,"bytes":2182973,"alt":"","title":null,"type":"image/png","href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">Freedom and democracy under moderate head-choppers: so much to celebrate!</figcaption></figure></div><p>Incidentally, HTS - the new &amp; improved Al Nusra front - has been on the U.S. State Department's list of terrorist organizations since 2018. The organization's leader <strong>al-Jolani</strong> has been on the list of wanted terrorists since 2013 and still to this day has a $10 million bounty on his head. Now all of a sudden they're all jolly good fellows, and so say all of us!</p><h2>Mind the long-term trends!</h2><p>But even if our moral compass is irreparably broken, at least some vestige of practical common sense and a sensitivity to historical patterns should survive in sober minds. The U.S. once triumphantly entered Kabul, deposed the terrible, horrible, no good Taliban regime and took Afghanistan from them. Twenty years and $4 trillion later the invincible hegemon had to withdraw from there and surrender Afghanistan to the same terrible Taliban again. </p><p>In 2003 the U.S. triumphantly walked into Baghdad. Two decades later, U.S. troops are holed up in their bases like sitting ducks at the mercy of Iran and its proxies. Capturing and executing <strong>Saddam Hussein</strong> was also celebrated as some great milestone in the democratic transformation of the Middle East. In effect, the great hegemon handed Iraq over to the Iranians. Then in 2013 we celebrated the fall of the terrible, horrible, no good madman <strong>Ghaddafi </strong>in Libya. Yet another brilliant triumph of Western forces of democracy and freedom. Only, it blew back spectacularly.</p><p>Recall, one of the main sponsors of that project in addition to <strong>Lord David Cameron</strong> was French president <strong>Nicolas Sarkozy</strong>. Decapitating Libya was supposed to help secure French hegemony over her dependencies in north and west Africa. Today France barely has any dependencies there and now even Chad and Senegal are kicking them out. </p><p>And let’s not forget Ukraine! In February 2014 we overthrew Ukraine’s president Yanukovich, installed a proto-fascist junta, coerced them to launch the brutal Anti-Terror Operation against the Eastern oblasts and strung the Russians along with Minsk Agreements to gain time to weaponize the whole country for the coming war against Russia. So, so clever. So brilliantly cunning!</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07551ae-c33d-4d76-b2d9-4ac4d92330c7_440x320.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07551ae-c33d-4d76-b2d9-4ac4d92330c7_440x320.jpeg" width="440" height="320" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/d07551ae-c33d-4d76-b2d9-4ac4d92330c7_440x320.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":320,"width":440,"resizeWidth":null,"bytes":null,"alt":"","title":"","type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Sadly, a good chunk of the western audiences have come to regard bad faith craftiness, double-dealing and dirty tricks that score these short-term Pyrrhic victories as evidence of great strategic sophistication among the Western foreign policy establishments' ruling circles. Every uptick in geopolitics triggers loud cheering, trash talking and chest thumping while the long-term trendline is being conveniently ignored. </p><div data-attrs='{"url":"https://alexkrainer.substack.com/p/syria-will-it-prove-to-be-the-empires?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share","text":"Share"}' data-component-name="CaptionedButtonToDOM" data-sanitized-class="captioned-button-wrap"><div data-sanitized-class="preamble"><p data-sanitized-class="cta-caption">Thank you for reading! This post is public so feel free to share it.</p></div><p data-attrs='{"url":"https://alexkrainer.substack.com/p/syria-will-it-prove-to-be-the-empires?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share","text":"Share"}' data-component-name="ButtonCreateButton" data-sanitized-class="button-wrapper"><a href="https://alexkrainer.substack.com/p/syria-will-it-prove-to-be-the-empires?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share" data-sanitized-class="button primary"><span>Share</span></a></p></div><h2>The long descent from our unipolar moment</h2><p>So, what does that long-term trendline look like? Let's remember that in 1993 - more than 30 years ago - the U.S. adopted the Wolfowitz Doctrine named after its brilliant author, <strong>Paul Wolfowitz</strong>. The Doctrine was meant to enshrine and cement Western empire's unipolar moment, secure its "full spectrum dominance" and prevent any rival from emerging. It also inspired the "Project For the New American Century," (PNAC) which put forth essentially the same geopolitical objective: total dominance.</p><p>In 2004, another one of PNAC's brilliant alumni, <strong>Michael Ledeen</strong> suggested that, </p><blockquote><p>"every now and again the United States has to pick up a crappy little country and throw it against the wall just to prove we are serious." </p></blockquote><p>Lovely, but how'd that unipolar moment work out over the last 30 years? For all the crafty cunning, double dealing and dirty tricks, for all the cheating on NATO expansion, regime changes, Minsk Agreement deception, for all the invincibility of the finest fighting force in the history of the universe, and all the blinding brilliance of the West's strategic leadership, things didn't seem to work out all that good.</p><p>The unipolar moment is no more and Western powers have devolved to relying on certified terrorists to help them achieve their short-term Pyrrhic victories. Even while the loud cheering is still echoing, there is no reason to believe that the misadventure in Syria will be worth celebrating any more than Afghanistan, Iraq, Libya or Ukraine are. Sadly, rivers of blood will be spilled, all for opposite outcomes and unintended consequences.</p><div data-attrs='{"url":"https://alexkrainer.substack.com/subscribe?","text":"Subscribe","language":"en"}' data-component-name="SubscribeWidgetToDOM" data-sanitized-class="subscription-widget-wrap-editor"><div data-sanitized-class="subscription-widget show-subscribe"><div data-sanitized-class="preamble"><p data-sanitized-class="cta-caption">Alex Krainer's Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><div data-sanitized-class="fake-input-wrapper"><div data-sanitized-class="fake-input"></div><div data-sanitized-class="fake-button"></div></div></div></div><p><strong><a href="http://linkedin.com/in/alex-sasha-krainer-0b74ab1a">Alex Krainer</a> – <a href="https://twitter.com/NakedHedgie">@NakedHedgie</a></strong> is the creator of <strong><a href="https://isystem-tf.com/">I-System Trend Following</a></strong> and publisher of daily <strong><a href="https://isystem-tf.com/trendcompass/">TrendCompass</a></strong> investor reports which cover over 200 financial and commodities markets. One-month test drive is always free of charge, <strong>no jumping through hoops to cancel</strong>. To start your trial subscription, drop us an email at <a href="mailto:TrendCompass@ISystem-TF.com">TrendCompass@ISystem-TF.com</a></p><blockquote><h4>NEW: Check out <a href="https://trendcompass.substack.com/">TrendCompass on Substack</a>!</h4></blockquote><p>For<strong> <a href="https://isystem-tf.com/solutions/u-s-investors/">US investors</a></strong>, we propose a trend-driven inflation/recession resilient portfolio covering a basket of 30+ financial and commodities markets. Further information is at <a href="https://isystem-tf.com/solutions/u-s-investors/">link</a>.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09620c78-0881-42bb-8486-6af53ecdcc73_1027x553.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09620c78-0881-42bb-8486-6af53ecdcc73_1027x553.png" width="1027" height="553" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/09620c78-0881-42bb-8486-6af53ecdcc73_1027x553.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":553,"width":1027,"resizeWidth":null,"bytes":1140235,"alt":null,"title":null,"type":"image/png","href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p></p>

attributes:
{"enclosures":[{"url":"https://api.substack.com/feed/podcast/153121288/9eef6176c3a238f6edd480fae25c58b8.mp3","type":"audio/mpeg","length":0}]}


guid: https://htmhell.dev/adventcalendar/2024/15/
title: The Gift You Do NOT Want: A Div in a Button's Clothing
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/15/
hash: lx�$�]_�N��Vs�B
attributes: {"enclosures":[]}
content:
by Corina Murg<br><p>With the right CSS makeup and a click event, almost anything can pretend to be a button. In accessibility work, we spot these fakes and fix them, but teaching others why and how to do it is just as important. It’s not just about correcting a single mistake; it’s about introducing developers to accessibility concepts and approaches that they can comfortably return to and reuse across all their projects. More importantly, it encourages them to think beyond the sighted user with a mouse and consider the needs of those who rely on assistive technologies.</p>
<h2 data-sanitized-id="really-how-bad-can-a-fake-button-be?!">Really, How Bad Can a Fake Button Be?!</h2>
<p>So, how do we answer this question? I used to demo the problems using a screen reader, but I've found that it can be overwhelming for developers new to accessibility. I prefer now a different approach, using simpler tools: the keyboard and the accessibility tree. They are easy to pick up and give developers a good feel for what’s really going on.</p>
<p>No, the message is not to avoid screen readers, but to start with tools that have a gentler learning curve. The tree itself gives developers plenty of clues about how each node may (or may not!) be recognized by assistive tech like screen readers or voice recognition software. And for whatever the tree can’t reveal, keyboard testing can fill in some of the gaps.</p>
<p>Of course, no tool is perfect, and the accessibility tree does have its limitations. It’s important that we remind developers of them as well. So, what exactly does this approach entail?</p>
<h2 data-sanitized-id="build-a-genuine-button-with-a-lessbuttongreater">Build a Genuine Button with a <code>&lt;button&gt;</code></h2>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>button</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>button<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>button one<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    Change Color ONE</span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<pre data-sanitized-class="language-javascript"><code data-sanitized-class="language-javascript"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token keyword">function</span> <span data-sanitized-class="token function">changeColor</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token parameter">event</span><span data-sanitized-class="token punctuation">)</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token keyword">const</span> element <span data-sanitized-class="token operator">=</span> event<span data-sanitized-class="token punctuation">.</span>currentTarget<span data-sanitized-class="token punctuation">;</span> </span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token keyword">const</span> currentColor <span data-sanitized-class="token operator">=</span> <span data-sanitized-class="token function">getComputedStyle</span><span data-sanitized-class="token punctuation">(</span>element<span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">.</span>backgroundColor<span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line">    element<span data-sanitized-class="token punctuation">.</span>style<span data-sanitized-class="token punctuation">.</span>backgroundColor <span data-sanitized-class="token operator">=</span> currentColor <span data-sanitized-class="token operator">===</span> <span data-sanitized-class="token string">'rgb(0, 128, 0)'</span> <span data-sanitized-class="token operator">?</span> <span data-sanitized-class="token string">'rgb(58, 58, 242)'</span> <span data-sanitized-class="token operator">:</span> <span data-sanitized-class="token string">'rgb(0, 128, 0)'</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span><br><span data-sanitized-class="highlight-line"></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token keyword">const</span> buttonOne <span data-sanitized-class="token operator">=</span> document<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">querySelector</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">'.button.one'</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line">buttonOne<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">addEventListener</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">'click'</span><span data-sanitized-class="token punctuation">,</span> changeColor<span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span></code></pre>
<p>First, we create a genuine button using the <code>&lt;button&gt;</code> tag, and then examine how it appears in the accessibility tree. We focus on the attributes and properties exposed for this node, discussing what each one means in terms of interaction with assistive technologies. At every step, we also test with a keyboard.</p>
<p>Note: I regularly work on a Windows computer and am familiar with the accessibility tree in both Firefox and Chromium browsers. For this exercise, I’ll mostly use Firefox since it offers some clues about the shortcomings of fake buttons.</p>
<img src="https://htmhell.dev/adventcalendar/2024/15/images/Firefox-SemanticButton.jpg" alt="accessibility tree within Firefox's developer tools, highlighting the properties of a button element built with a button tag" width="500" aspect-ratio="658/693" loading="lazy">
<p>So, what is the view from the accessibility tree revealing?</p>
<ul>
<li>
<p>The node has the role <code>button</code>, which comes with some privileges: it will be announced as a button by a screen reader, and since buttons support name from content, its text becomes its <code>accessible name</code>. So, a screen reader will announce it as <code>Change Color ONE, button</code>. Users relying on voice recognition software can activate it by voice command, such as saying <code>Click Change Color One</code>.</p>
</li>
<li>
<p>The <code>states</code> array shows that the button is focusable, so we know we can reach it via the <code>tab</code> key.</p>
</li>
</ul>
<p>But where does the keyboard come in? It helps us confirm the <code>focusable</code> property by allowing us to navigate to the button with the <code>tab</code> key. Plus, it confirms that we can activate the button using the <code>Enter</code> key or the <code>Space</code> bar, another built-in perk of genuine buttons that is not immediately obvious from the accessibility tree.</p>
<p>Next step: build a fake button.</p>
<h2 data-sanitized-id="build-a-fake-button-with-a-lessdivgreater">Build a Fake Button with a <code>&lt;div&gt;</code></h2>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>button two<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    Change Color TWO</span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<pre data-sanitized-class="language-javascript"><code data-sanitized-class="language-javascript"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token keyword">const</span> buttonTwo <span data-sanitized-class="token operator">=</span> document<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">querySelector</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">'.button.two'</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line">buttonTwo<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">addEventListener</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">'click'</span><span data-sanitized-class="token punctuation">,</span> changeColor<span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span></code></pre>
<p>We simply attach a click event to a <code>div</code>, and with nearly the same CSS as we’d use for a genuine button, we create something a sighted user will recognize as a button.</p>
<p>Here’s the view from Firefox’s accessibility tree:</p>
<img src="https://htmhell.dev/adventcalendar/2024/15/images/Firefox-FakeButtonNotFixed.jpg" alt="accessibility tree within Firefox's developer tools, highlighting the properties of a div element used as a button" width="500" aspect-ratio="660/729" loading="lazy">
<p>What should we be looking or testing for? The same attributes and behaviors we found for the genuine button:</p>
<ul>
<li>role,</li>
<li>name,</li>
<li>focusable property, and</li>
<li>keydown and keyup events.</li>
</ul>
<p>The node’s role defaults to <code>generic</code> since the building block is a <code>div</code>. It also remains unnamed because generic nodes don’t have naming privileges, despite containing text. Keyboard users will not reach it, let alone activate it, and we don’t even have to test with a keyboard to prove it. We simply notice that the <code>states</code> array does not list the <code>focusable</code> property.</p>
<p>Once we make it focusable by adding a <code>tabindex="0"</code> we notice something else: we can't activate it with the <code>Enter</code> key or the <code>Space</code> bar. Is this lack of functionality reflected in the accessibility tree as well? Sort of. The genuine button lists a <code>Press</code> event under the <code>actions</code> property, while the fake button only shows <code>Click</code>. But more on that later.</p>
<p>Firefox is also explicitly warning us about the lack of focus and "interactive semantics", and it's connecting us to MDN for more information. So, what are we still missing? We need:</p>
<ul>
<li>a <code>keydown</code> event for activation via <code>Enter</code>,</li>
<li>a <code>keyup</code> event for activation via <code>Space</code>, and</li>
<li>a <code>button</code> role to have it announced properly by screen readers, and also to assign it a name based on its content.</li>
</ul>
<p>Here's what the HTML would look like with all the additions:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>button two<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">role</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>button<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">tabindex</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>0<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    Change color TWO</span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>while the JavaScript would have to include the following as well:</p>
<pre data-sanitized-class="language-javascript"><code data-sanitized-class="language-javascript"><span data-sanitized-class="highlight-line">buttonTwo<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">addEventListener</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">'keydown'</span><span data-sanitized-class="token punctuation">,</span> <span data-sanitized-class="token keyword">function</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token parameter">event</span><span data-sanitized-class="token punctuation">)</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token keyword">if</span> <span data-sanitized-class="token punctuation">(</span>event<span data-sanitized-class="token punctuation">.</span>key <span data-sanitized-class="token operator">===</span> <span data-sanitized-class="token string">'Enter'</span><span data-sanitized-class="token punctuation">)</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">        event<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">preventDefault</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line">        <span data-sanitized-class="token function">changeColor</span><span data-sanitized-class="token punctuation">(</span>event<span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token punctuation">}</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"></span><br><span data-sanitized-class="highlight-line">buttonTwo<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">addEventListener</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">'keyup'</span><span data-sanitized-class="token punctuation">,</span> <span data-sanitized-class="token keyword">function</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token parameter">event</span><span data-sanitized-class="token punctuation">)</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token keyword">if</span> <span data-sanitized-class="token punctuation">(</span>event<span data-sanitized-class="token punctuation">.</span>key <span data-sanitized-class="token operator">===</span> <span data-sanitized-class="token string">' '</span><span data-sanitized-class="token punctuation">)</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">        event<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">preventDefault</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line">        <span data-sanitized-class="token function">changeColor</span><span data-sanitized-class="token punctuation">(</span>event<span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token punctuation">}</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span></code></pre>
<p>For developers it might seem tempting to add these missing features one by one. The advice, of course, is that the simpler and more robust solution is to replace the <code>&lt;div&gt;</code> with a <code>&lt;button&gt;</code>. However, for the sake of exploring what the accessibility tree reveals — or fails to! — and the importantce of manual testing, we’ll go ahead and add all the necessary code to make this <code>div</code> fully functional.</p>
<h2 data-sanitized-id="the-accessibility-tree-can-only-do-so-much">The Accessibility Tree Can Only Do So Much</h2>
<p>Is the retrofitted <code>div</code> recognized as a button now? Yes. It has the role <code>button</code>, it has a name, and it's focusable.</p>

<img src="https://htmhell.dev/adventcalendar/2024/15/images/Firefox-FakeButtonFixed.jpg" alt="accessibility tree within Firefox's developer tools, highlighting the properties of button built with a div tag" width="500" aspect-ratio="658/693" loading="lazy">
<p>Is the retrofitted button's tree view different in any way from the one of the genuine button? Yes again.</p>
<p>First, the <code>DOMNode</code> property reminds us that we started with a div. Next, something curious happens within the <code>actions</code> array.</p>
<p>Since we’ve added the <code>keydown</code> and <code>keyup</code> events we would not expect any differences between the <code>actions</code> arrays of the two buttons, right? Wrong. The updated view still shows <code>Click</code> instead of <code>Press</code>. It seems that manually adding the keyboard events does not change the action keyword. But is this a Firefox oversight, or just a subtle dig at fake buttons? Just kidding!</p>
<p>It's worth noting that the Chromium browsers also take the approach of differentiating between the two buttons. They do not display this information as part of the accessibility tree, but separately, under the <code>Event Listeners</code> tab in DevTools. For the genuine button, their keyword of choice is <code>click</code> and not <code>Press</code>, but then, just like Firefox, they treat the div button differently. When keyboard events are explicitly added, Chromium’s event listeners include <code>click</code> along with <code>keydown</code> and <code>keyup</code>.</p>
<img src="https://htmhell.dev/adventcalendar/2024/15/images/Chrome-FakeButtonFixedEvents.jpg" alt="accessibility tree within Chrome's developer tools, highlighting a button built with a div tag. Click, keydown and keyup are listed under event listeners" width="500" aspect-ratio="670/258" loading="lazy">
<p>The Chromium behavior makes sense: when we attach a click handler to a native button, it automatically works for all input methods (mouse, touch, keyboard). That's why it only shows one <code>click</code> listener linking to one particular function. For the div button, since we manually added separate keyboard handlers, DevTools shows links to all three function implementations - one for click and two for keyboard events.</p>
<p>But enough nerding over keywords and browser inconsistencies, as interesting as this detective work might be. The point to make is that on keyboard interactions the browsers send mixed signals, and that testing, in this case keyboard testing, is irreplaceable. (Is this my subtle way of turning your attention away from the fact that I don't have (yet!) an explanation about these inconsistencies? Totally! I've spent time poking around the Firefox and Chromium codebases, but so far the answer remains a mystery.)</p>
<p>Let's end with a keyboard interaction anomaly that only keyboard testing could reveal: while theoretically both buttons are now fitted with proper keyboard support, there's an important difference in how they handle the <code>keyup</code> event. The benefit of a <code>keyup</code> event is that the user can cancel the action on a button. They can press <code>Space</code>, change their mind, move focus away with <code>Tab</code>, and release <code>Space</code> without triggering the button. When we build our own button from a div, we need extra code to track whether the <code>Space</code> key was initially pressed while focused on that button. Without this check, it would <a href="https://codepen.io/Cor-Ina/pen/OPLJYry">incorrectly activate when receiving focus</a> while <code>Space</code> is being released, even if <code>Space</code> was originally pressed on a different element. And while we add more code to our creation, the browsers will, of course, take good care of the genuine button and gracefully ignore Space keyup events that don't belong to it.</p>


<h3 data-sanitized-id="takeaways-for-developers">Takeaways for Developers</h3>
<ol>
<li>
<p>Semantic HTML is powerful. Always consider it first.</p>
</li>
<li>
<p>No tool is perfect, and the accessibility tree and the DevTools in general are no exception. Testing is key. In our particular case, testing with the keyboard is enough, but in other scenarios testing with a screen reader will be necessary. In general, accessibility requires a holistic approach and that we select tools and tests based on the specific functionality we are assessing.</p>
</li>
</ol>
<h2 data-sanitized-id="wrapping-up">Wrapping Up</h2>
<p>Does this approach work? At the minimum, it introduces developers to the accessibility tree and reinforces the usefulness of a familiar tool, the ubiquitous keyboard. If it ends with "Now I know I shouldn't just add a click event to a div" then yes, it does work.</p>
<p>From experience, it can sometimes make developers nervous about their ability to choose the right tools or worry about overlooking crucial details. This is still a win. It shows that they care. If you've had any accessibility mishaps in your past, this might be actually a good moment to reveal them, and prove that progress is possible. If you've had none, feel free to use one of mine: before I started using screen readers, I used to add a <code>tabindex</code> to headings.</p>
<p>What should we encourage developers to focus on, no matter their initial reaction? Know their HTML, consider the needs of different types of users, lean into testing. And ask questions.</p>


guid: https://htmhell.dev/adventcalendar/2024/16/
title: You don’t need the isOpen class
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/16/
hash: �&�`14�l�50'��.
attributes: {"enclosures":[]}
content:
by Maureen Holland<br><p>Don’t get me wrong. You can keep it if you like it. But you don’t <em>need</em> it.</p>
<p>A class selector can allow us to visually show or hide content for disclosure widgets, like a custom select component or dropdown navigation menu. But a disclosure widget is made of two parts:</p>
<ol>
<li>A button that controls show/hide behaviour</li>
<li>Related content that is shown or hidden <em>depending on the button state</em></li>
</ol>
<p>Whether the <code>isOpen</code> class is applied or not, a screenreader would announce this button as <strong>"Click me!, button"</strong>.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span>Click me!<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>p</span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>isOpen<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Content that displays depending on a conditionally applied class.<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>One of the principles of web accessibility is to be perceivable. That means not relying exclusively on one sense, like sight, to provide information. In the above case, if I can’t see the content being shown or hidden, how do I know my button click did anything?</p>
<p>We <em>need</em> a corresponding semantic update to indicate what happened. This is what the <code>aria-expanded</code> attribute provides.</p>
<p>The following button would read: <strong>"Click me!, expanded, button"</strong>.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>button</span> <span data-sanitized-class="token attr-name">aria-expanded</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>true<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Click me!<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span>Content that displays depending on button's expanded state.<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>This one would be <strong>"Click me!, collapsed, button"</strong>.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>button</span> <span data-sanitized-class="token attr-name">aria-expanded</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>false<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Click me!<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span>Content that displays depending on button's expanded state.<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>The <code>aria-expanded</code> attribute also provides a ready-made CSS selector for collapsed and expanded states. So, we don’t need to add an <code>isOpen</code> class at all.</p>
<p>If you’ve used the <code>:checked</code> pseudo-class before, you’ll be familiar with the idea of styling scoped to a particular state. It’s a good idea. As a bonus, you get a mini accessibility test in your CSS! The styles only apply if the semantics are correct.</p>
<pre data-sanitized-class="language-css"><code data-sanitized-class="language-css"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token selector">button[aria-expanded="false"] + *</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line"> <span data-sanitized-class="token comment">/* collapsed content styles here */</span></span><br><span data-sanitized-class="highlight-line"> <span data-sanitized-class="token property">display</span><span data-sanitized-class="token punctuation">:</span> none<span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span><br><span data-sanitized-class="highlight-line"></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token selector">button[aria-expanded="true"] + *</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line"> <span data-sanitized-class="token comment">/* expanded content styles here */</span></span><br><span data-sanitized-class="highlight-line"> <span data-sanitized-class="token property">display</span><span data-sanitized-class="token punctuation">:</span> block<span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span></code></pre>
<p>I first learned of this technique through <a href="https://inclusive-components.design/collapsible-sections/">Heydon Pickering’s Inclusive Components</a> and have been using it ever since. It’s simple, effective, and a great way to keep accessibility in mind at every stage of development.</p>
<p data-sanitized-class="highlight">
<strong>Note:</strong> You will not need <code>aria-expanded</code> on the HTML <code>details</code> element. Stateful information is automatically provided through its <code>open</code> attribute. <a href="https://www.scottohara.me/blog/2022/09/12/details-summary.html">See Scott O’Hara for more details on <code>details</code></a>.
</p>


guid: https://odysee.com/peace-roundtable-8-the-world-in-review:c77fb88469c5ef1dd714789645de0411f44f1bc8
title: Peace Roundtable #8: The World in Review f. Harley Schlanger, Alex Krainer and Larry Johnson
author: ;Rising Tide Foundation
link: https://odysee.com/peace-roundtable-8-the-world-in-review:c77fb88469c5ef1dd714789645de0411f44f1bc8
hash: �Q~����Nn�3c5y$
content:
<p><img src="https://thumbnails.lbry.com/glHb_6-Azkg" width="480" alt="thumbnail" title="Peace Roundtable #8: The World in Review f. Harley Schlanger, Alex Krainer and Larry Johnson"></p>Dr. Edward Lozansky and Matt Ehret host The Academy for International Cooperation's Peace Roundtable #8 featuring critical insights on the nature of the existential crises facing humanity as we end 2024 and both the dangers and opportunities going into 2025.<br><br>Special guests include: Harley Schlanger (representative of The Schiller Institute), Alex Krainer (Founder, Trend Compass) and Larry Johnson (former CIA Analyst and member of Veteran Intelligence Professionals for Sanity).<br><br>Here's Cynthia's study with links to the original text by Schiller https://cynthiachung.substack.com/cp/152052946<br><br>An introduction to the Verona Eurasian Forum can be found here:<br>https://pluralia.forumverona.com/en/a/verona-eurasian-economic-forum-freedom-of-expression-tolerance-mutual-respect/<br><br>Visit Pluralia here: https://pluralia.forumverona.com/en/<br><br>Support the Rising Tide Foundation in the following ways:<br><br>1) Make a donation <br>https://risingtidefoundation.net/support-the-work/<br>2) Subscribe to Matt and Cynthia's Substack<br>matthewehret.substack.com<br>cynthiachung.substack.com<br>3) Buy some books!<br>https://canadianpatriot.org/untold-history-of-canada-books/<br><br>and follow us on www.risingtidefoundation.net and t.me/risingtidefoundation<br>...<br>https://www.youtube.com/watch?v=glHb_6-Azkg

attributes:
{"enclosures":[{"url":"https://player.odycdn.com/api/v3/streams/free/peace-roundtable-8-the-world-in-review/c77fb88469c5ef1dd714789645de0411f44f1bc8/5a6005.mp4","type":"video/mp4","length":814724354}]}


title: Les communautés du Nord sur la ligne de front des changements climatiques : sénatrice Anderson
hash: é�Z�d��K�i�~i�
attributes: {"enclosures":[]}
guid:
/fr/sencaplus/opinion/les-communautes-du-nord-sur-la-ligne-de-front-des-changements-climatiques-senatrice-anderson/

link:
https://sencanada.ca//fr/sencaplus/opinion/les-communautes-du-nord-sur-la-ligne-de-front-des-changements-climatiques-senatrice-anderson/


guid: https://alexkrainer.substack.com/p/the-magic-essence-of-economic-development
title: The magical essence of economic development
author: ;Alex Krainer
link: https://alexkrainer.substack.com/p/the-magic-essence-of-economic-development
hash: ����vљ��.K,��
content:
<p>The ongoing decline of Germany is gradually reversing one of the world's most remarkable economic success stories. The standard explanations of this sad development usually include criticism of the incompetent government, pursuit of net zero policies and sustaining collateral damage in the empire's war against Russia. All these explanations contain an element of truth, but what's usually missing from such discussions are the secrets of Germany's success.</p><p>Up until about ten years ago, Germany was the world's No. 1 exporting superpower. But contrary to what one might assume, most of Germany's exports were not products of known and recognized brands like Bosch, Mercedes or BMW. More than 50% of German exports were products and services developed by her (once) burgeoning small and medium-sized enterprises, most of them companies you may have never heard of. But such businesses were the engine of German industrial dynamism.</p><h2>Home of the hidden champions</h2><p>In a YouTube video titled, "<a href="https://www.youtube.com/watch?v=8FT-zyTX2nE&amp;pp=ygUnY29udmVyc2F0aW9ucyB3aXRoIHByb2YuIHJpY2hhcmQgd2VybmVy">Conversation with Professor </a><strong><a href="https://www.youtube.com/watch?v=8FT-zyTX2nE&amp;pp=ygUnY29udmVyc2F0aW9ucyB3aXRoIHByb2YuIHJpY2hhcmQgd2VybmVy">Richard Werner</a></strong>," Dr. Werner explains the phenomenon. Germany was the home base of the world's largest number of hidden "champions" - market leaders that occupied either first, second or third spot in terms of the global market share of whatever product or service they produced. Some 1,500 German firms qualified as market champions. </p><p>For perspective, the distant second in terms of number of market champions was the U.S.A. which has about 300 such companies. So, how did Germany create fully 1,500 market champions? We always heard stories about the excellence of German engineering and the well educated and disciplined workforce, etc. But those are children's tales that miss the mark and explain nothing.</p><h2>Banking as a public utility</h2><p>Rather, as Werner explained it, the secret of Germany's success, which has had a 200-year continuity in spite of suffering through biblical crises over this period, is in her banking system which Werner said was the best in the world. American economist Michael Hudson also wrote extensively about German industrial banking. Germany had the largest number of banks in Europe: about 1,500 small, local banks. </p><p>Fully 70% of these banks were non-profit community banking institutions. Their core business was funding local small and medium-sized enterprises. They tended to have close relationships with their clients and actively participated in their business development, helping them fund and organize their operations and finances, break into new markets and network with other, similar businesses. It was not uncommon in Germany for local banking institutions to extend 100-year loans to their clients.</p><h2>The magic is us (+ credit)</h2><p>I think I’m not alone when I say that I must have witnessed dozens, perhaps hundreds of enthusiastic conversations among friends about this or that business idea – something that would make sense and be successful; something they knew they could do if they had the money to get it off the ground… Sadly, all too often that entrepreneurial spark is extinguished for the lack of funding.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13c05542-b49d-41f3-9188-109c44a3a084_2575x1189.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13c05542-b49d-41f3-9188-109c44a3a084_2575x1189.png" width="1456" height="672" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/13c05542-b49d-41f3-9188-109c44a3a084_2575x1189.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":672,"width":1456,"resizeWidth":null,"bytes":6485950,"alt":null,"title":null,"type":"image/png","href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>But with ample credit at favorable terms, family businesses could develop their products and services and find markets for them. The family's second and third generations, educated with advanced degrees in engineering, design, chemistry or biotechnology could refine and perfect the company's offerings and thus gain a competitive advantage over their worldwide rivals who did not benefit from such a fertile and beneficial environment and could not confidently make long-term commitments to the development of their business. </p><p>Ultimately, creating a favorable environment for the development of small banking institutions and incentivizing them to provide long-term funding for the development of SMEs in their own regions is what policy makers could and should do to kick-start the engine of economic development. It amounts to simply empowering the individuals with the <em>will to do and a soul to dare</em> with the support they need to get started.</p><p>This is actually a fairly well understood concept and should be pursued by any sovereign democracy. This principle is consistent across the world. In a 2019 article, <strong>Eric Peters</strong> of One River Asset Management recounted a discussion with a Japanese colleague and a former central banker. He said that, “The dynamism in Japan’s economy is not to be found in the conglomerates. To find the really interesting companies you must look at the small and mid-sized firms that supply the large players – they’re the ones where you find the creativity, the risk takers, the innovators.”</p><p>The world over, based on the data from some 70 different nations, it emerges that SMEs are the main job creators: up to 80% of all jobs are created by SMEs. They also create the right kind of economic dynamism because, unlike large systems, SMEs create the needed, productive jobs and foster efficiency, innovation and competitive advantage. Collectively, they generate a nation's wealth. By contrast, the large, zombified corporations tend to generate state dependency, kill innovation and dynamism and create what <strong>David Graeber</strong> called, "bullshit jobs." </p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c8d878-62fc-4551-8c12-d55c9f72c9bb_960x587.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c8d878-62fc-4551-8c12-d55c9f72c9bb_960x587.jpeg" width="960" height="587" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/15c8d878-62fc-4551-8c12-d55c9f72c9bb_960x587.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":587,"width":960,"resizeWidth":null,"bytes":null,"alt":"Picture background","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="Picture background" title="Picture background" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Having a large number of successful SMEs also gives an economy a certain resilience through economic or financial crises: even in tough times, commitment at family owned SMEs remains high, downsizing limited and cohesion strong. Family-owned SMEs don't slave to quarterly earnings statements and they won't move their operations to another nation as readily as large corporations will. Regional rootedness of SMEs also creates the local wealth effect. </p><p>Their owners and workers tend to have roots in their own communities; they eat food and drink water locally; travel on local roads, send their children to local schools, sports clubs and cultural centers, use local doctors and local dentists and frequent local social events. This all fortifies a community spirit and the commitment to creating safe and beautiful living spaces and continuously improving the life of that community</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09f93e4-6721-44ef-960f-96dd546aa6df_2143x1225.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09f93e4-6721-44ef-960f-96dd546aa6df_2143x1225.png" width="1456" height="832" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/f09f93e4-6721-44ef-960f-96dd546aa6df_2143x1225.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":832,"width":1456,"resizeWidth":null,"bytes":6489979,"alt":null,"title":null,"type":"image/png","href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">Why shouldn’t everywhere we live be beautiful?</figcaption></figure></div><p>This could have a real and durable effect, as opposed to hollow corporate virtue signalling for PR-purposes while every other consideration is subordinated to the tyranny of quarterly income statements (and therefore not a penny can be spent on anything that could reduce the corporation's profits and clip its share price).</p><p>Given that we actually know all this (not that it is being widely discussed), and that we know that our developed economies are phenomenally productive, it becomes harder to explain why Germany should now be in an economic decline. Indeed, why should any nation be in economic decline? The answers point to the global economic predator class, the moneylending oligarchy controlling the GSIBs, or Global Systemically Important Banks. </p><h2>Sovietization of Europe’s banking industry</h2><p>In the case of Germany, beyond the current government's misadventure with Project Ukraine and their commitment to Global Goals and net zero policies, the foundations of German economic success have been under a deliberate and sustained attack by the European Central Bank which has been on a mission of consolidating the banking industry and destroying small local and regional banks. </p><p>Across the EU, the ECB has thus far culled some 6,000 small banks, in many cases depriving Europe's SME's of their financial lifeline. We might also ask why the IMF's structural adjustments consistently move their client economies farther away from sustainable economic development and prosperity.</p><p>These are not accidents of incompetent leadership. The principles I summarized above are well understood by top level policy makers - or they should be. What we are experiencing is a deliberate demolition of Germany’s and Europe's economy. Our next question should be, why? To what end? Unfortunately, because they won't tell us, we have to try to deduct an explanation ourselves. The conversation continues…</p><div data-attrs='{"url":"https://alexkrainer.substack.com/subscribe?","text":"Subscribe","language":"en"}' data-component-name="SubscribeWidgetToDOM" data-sanitized-class="subscription-widget-wrap-editor"><div data-sanitized-class="subscription-widget show-subscribe"><div data-sanitized-class="preamble"><p data-sanitized-class="cta-caption">Alex Krainer's Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><div data-sanitized-class="fake-input-wrapper"><div data-sanitized-class="fake-input"></div><div data-sanitized-class="fake-button"></div></div></div></div><h2>A worthy project in search of support</h2><p>Speaking of funding investment projects and of predatory oligarchs, journalist and author <strong>Roman Latković</strong> has asked for help with his documentary project, <em>Kenya’s Roots of Love: Orphans, Elephants, and Trees.</em> Set in Kenya, it highlights the recovery of orphans and baby elephants, reforestation efforts, and the resilience of the Maasai community. Kibera, Nairobi’s largest slum—and the hometown of award-winning cinematographer <strong>Timothy Mwaura</strong>—reveals the toll oligarchs take, draining a nation’s wealth and energy. Roman is seeking investors and partners passionate about social impact and powerful storytelling. For anyone inclined to explore further or contribute to this project, please see below:</p><p><a href="https://elephantrees.com/">Project Overview</a><br><a href="https://elephantrees.com/investors.pdf">Investor Proposal</a></p><p>The project is supported by a 501(c)(3) fiscal sponsor, offering U.S. contributors tax-deductible options. For PayPal or wire transfer details, contact Roman directly.</p><p></p><p><strong><a href="http://linkedin.com/in/alex-sasha-krainer-0b74ab1a">Alex Krainer</a> – <a href="https://twitter.com/NakedHedgie">@NakedHedgie</a></strong> is the creator of <strong><a href="https://isystem-tf.com/">I-System Trend Following</a></strong> and publisher of daily <strong><a href="https://isystem-tf.com/trendcompass/">TrendCompass</a></strong> investor reports which cover over 200 financial and commodities markets. One-month test drive is always free of charge, <strong>no jumping through hoops to cancel</strong>. To start your trial subscription, drop us an email at <a href="mailto:TrendCompass@ISystem-TF.com">TrendCompass@ISystem-TF.com</a></p><blockquote><h4>NEW: Check out <a href="https://trendcompass.substack.com/">TrendCompass on Substack</a>!</h4></blockquote><p>For<strong> <a href="https://isystem-tf.com/solutions/u-s-investors/">US investors</a></strong>, we propose a trend-driven inflation/recession resilient portfolio covering a basket of 30+ financial and commodities markets. Further information is at <a href="https://isystem-tf.com/solutions/u-s-investors/">link</a>.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac091333-6cda-4dbc-8a55-6726bca3079a_1456x912.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac091333-6cda-4dbc-8a55-6726bca3079a_1456x912.png" width="1456" height="912" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/ac091333-6cda-4dbc-8a55-6726bca3079a_1456x912.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":912,"width":1456,"resizeWidth":null,"bytes":686512,"alt":null,"title":null,"type":"image/png","href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p></p>

attributes:
{"enclosures":[{"url":"https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13c05542-b49d-41f3-9188-109c44a3a084_2575x1189.png","type":"image/jpeg","length":0}]}


guid: https://htmhell.dev/adventcalendar/2024/17/
title: How I gained a new perspective on ARIA
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/17/
hash: ���0�cogf?LUa
attributes: {"enclosures":[]}
content:
by Marco Bretschneider<br><p>Can you remember the day you first learnt about ARIA? Maybe the first fact you learnt about <a href="https://www.w3.org/TR/using-aria/#NOTES">ARIA was the first rule</a> “Don't use ARIA, use native HTML instead“ - and so did I.</p>

<p>As someone who has been able to speak native HTML for many years, I always thought that ARIA is not relevant for a developer like me.<br>
How incredibly wrong I was...</p>
<h2 data-sanitized-id='my-"wait-a-minute"-moment'>My “Wait a minute” moment</h2>
<p>With the entry into force of the <a href="https://employment-social-affairs.ec.europa.eu/policies-and-activities/social-protection-social-inclusion/persons-disabilities/union-equality-strategy-rights-persons-disabilities-2021-2030/european-accessibility-act_en">European Accessibility Act</a>, accessibility has also become more important in our products, which are mainly used internally by banks.<br>
For this reason, we have subjected our products to an accessibility audit.<br>
One thing that really surprised me was that the auditor found fault with the following code.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>nav</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>ul</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">      <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>a</span> <span data-sanitized-class="token attr-name">href</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>#<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>First navigation link<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>a</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">      <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>a</span> <span data-sanitized-class="token attr-name">href</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>#<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>active<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Second navigation link<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>a</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token comment">&lt;!-- more navigation links --&gt;</span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>ul</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>nav</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<pre data-sanitized-class="language-css"><code data-sanitized-class="language-css"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token selector">.active</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token comment">/* Highlight the selected navigation entry */</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span></code></pre>
<p>When it comes to supporting people with visual impairments, it is our job as developers to convey as much information as possible that we also display to sighted people.<br>
People with visual impairments usually use a screen reader to consume the information on a page or application. A screen reader in turn obtains its information from the accessibility tree, which - together with the DOM tree - is generated in the browser.</p>
<figure data-sanitized-class="u-mb">
  <img src="https://htmhell.dev/adventcalendar/2024/17/a11y-tree-1-1.png" alt="The second linked selected in Firefox Dev Tools showing its accessible properties" loading="lazy" width="693" height="793">
  <figcaption>The code example above represented in the accessibility tree
  </figcaption>
</figure>
<p>The information that the second entry in the navigation references the currently active page is not transported - unlike for sighted people.</p>
<h2 data-sanitized-id="a-better-approach">A better approach</h2>
<p>By using ARIA, we can influence how the browser builds the accessibility tree. Specifically, ARIA provides the <code>aria-current</code> attribute for highlighting the currently active page.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>nav</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>ul</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">      <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>a</span> <span data-sanitized-class="token attr-name">href</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>#<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>First navigation link<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>a</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">      <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>a</span> <span data-sanitized-class="token attr-name">href</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>#<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">aria-current</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>page<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Second navigation link<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>a</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token comment">&lt;!-- more navigation links --&gt;</span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>ul</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>nav</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<pre data-sanitized-class="language-css"><code data-sanitized-class="language-css"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token selector">[aria-current="page"]</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token comment">/* Highlight the selected navigation entry */</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span></code></pre>
<p>Now, the information that the second navigation entry references the currently displayed page is also transferred to the accessibility tree and can be used by screen readers.</p>
<p><img src="https://htmhell.dev/adventcalendar/2024/17/a11y-tree-2-1.png" alt="Firefox Dev Tools: Besides focusable, linked and more, the link now has an additional 'current' state in the accessibility tree"></p>
<p>In addition, the <code>aria-current</code> attribute can also be used as a CSS hook for styling for sighted users. The <code>active</code> class initially used for this has therefore become obsolete.</p>
<h2 data-sanitized-id="other-examples">Other examples</h2>
<p>There are other examples where we can enrich the accessibility tree using ARIA attributes, such as error messages for form fields.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>email<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>E-Mail<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>e-mail<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>email<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>error<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span>Enter a valid e-mail address<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>The class <code>error</code> is used here to indicate fields that have been filled in incorrectly. For sighted users, the field is then styled accordingly using the class. Unfortunately, this information is not available in the accessibility tree.<br>
There is also an error message, but it is only visually linked to the input field and not programmatically (e.g., the label is linked to the input field).<br>
Unfortunately, we cannot enhance the accessibility tree with pure HTML. With ARIA, however, we can.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>email<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>E-Mail<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>e-mail<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>email<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">aria-invalid</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>true<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">aria-describedby</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>e-mail-error<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>e-mail-error<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Enter a valid e-mail address<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p><img src="https://htmhell.dev/adventcalendar/2024/17/a11y-tree-3.png" alt="Firefox Dev Tools: Besides focusable, editable and more, the input field now has an additional 'invalid' state in the accessibility tree"></p>
<p>In the accessibility tree, we can see that the input field is marked as invalid and a relation to the error message is created.<br>
Once again, we can use the <code>aria-invalid</code> attribute as a CSS hook for styling. An <code>error</code> class is not required anymore.</p>
<h2 data-sanitized-id="conclusion">Conclusion</h2>
<p>By using ARIA, we can influence the accessibility tree and enrich it with information that the browser cannot derive from native HTML. Screen reader vendors can use the information to create a better user experience for people who rely on assistive technologies.</p>
<p>The accessibility tree is built up of nodes that are typified by ARIA roles. The <a href="https://www.w3.org/TR/wai-aria-1.2/#roles_categorization">WAI ARIA specification</a> recognises around 90 different ARIA roles. They were defined because there is a sensible use for each of them.  By using native HTML, however, only half of these roles are met.  We can use the <code>role</code> attribute to influence the types of the nodes in the accessibility tree and achieve the entire spectrum - if it is appropriate for the use case.  Ignoring ARIA and ‘only’ using native HTML means that we are only using just under half of the richness that the accessibility tree provides.</p>
<p>I still don't know exactly when I heard about ARIA for the first time. But I can name the exact day when I had my wait a minute moment. Today, I know that the <a href="https://www.w3.org/TR/using-aria/#rule1">first rule of ARIA</a> is often abbreviated and a crucial detail of the rule is lost. Certain things cannot be expressed semantically in HTML at all and if ARIA offers a possibility here, we should make use of it.</p>
<p>Perhaps we should see ARIA as a counterpart to CSS. While we use CSS to enrich our HTML document for sighted users (progressive enhancement), we can use ARIA to enrich the accessibility tree for non-sighted users.</p>


guid: CCAL-118hcal-2024-12-17
title: House Calendars, DAILY - House Calendars for December 17, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118hcal-2024-12-17
hash: �S9�J��� ~#�
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-17/pdf/CCAL-118hcal-2024-12-17.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-17/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-17/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-17.zip">ZIP</a>


title: Il est temps pour le Canada de revoir sa stratégie pour l’Arctique : sénatrice Marty Deacon
hash: [Tx�E���I|D�`z�
attributes: {"enclosures":[]}
guid:
/fr/sencaplus/opinion/il-est-temps-pour-le-canada-de-revoir-sa-strategie-pour-l-arctique-senatrice-marty-deacon/

link:
https://sencanada.ca//fr/sencaplus/opinion/il-est-temps-pour-le-canada-de-revoir-sa-strategie-pour-l-arctique-senatrice-marty-deacon/


guid: CCAL-118scal-2024-12-17
title: Senate Calendars, DAILY - Senate Calendars for December 17, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118scal-2024-12-17
hash: ]�<"��N3�J9���
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-17/pdf/CCAL-118scal-2024-12-17.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-17/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-17/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-17.zip">ZIP</a>


guid: https://htmhell.dev/adventcalendar/2024/18/
title: Microdata for books
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/18/
hash: ���Q����W|A�,�
attributes: {"enclosures":[]}
content:
by Alan Dalton<br><h2 data-sanitized-id="dive-into-marking-up-books">Dive into marking up books</h2>
<p>Books are the best Christmas presents, especially for us web geeks. (I hope you’ll find a <a href="https://accessibility-cookbook.com/">Web Accessibility Cookbook</a> in your Christmas stocking, gentle reader.) Unfortunately, <a href="https://abookapart.com/pages/about/">A Book Apart closed</a> this year. Fortunately, the authors reacquired the rights to their books.</p>
<p>To track the authors’ preferred ways of making their books available, I created an <a href="https://alandalton.github.io/Authors-Apart/">“Authors Apart” webpage</a>. For the HTML, I recalled the <a href="https://diveinto.html5doctor.com/extensibility.html">“‘Distributed,’ ‘Extensibility,’ &amp; Other Fancy Words” chapter</a> of Mark Pilgrim’s seminal <a href="https://diveinto.html5doctor.com/">Dive Into HTML5</a>, which explains <a href="https://html.spec.whatwg.org/multipage/microdata.html#microdata">HTML’s microdata features</a>. Mark wrote that article 13 years ago with a focus on Google Rich Snippets, and so I also referred to his <a href="https://web.archive.org/web/20110607011745/http://diveintomark.org/archives/2011/06/02/schema-org">unofficial guide to migrating Google Rich Snippets to schema.org</a> and the more recent <a href="https://schema.org/Book">“Book” schema from Schema.org</a>. Armed with that knowledge, here’s how I structured the HTML for each book to convey the name, URL, author’s name, author’s URL, original publishing date, date when the book was updated (if any), and whether it’s available for free:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>li</span> <span data-sanitized-class="token attr-name">itemscope</span> <span data-sanitized-class="token attr-name">itemtype</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>https://schema.org/Book<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>name<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">		<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>a</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>url<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">href</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>https://html5forwebdesigners.com/<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>abbr</span> <span data-sanitized-class="token attr-name">title</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>HyperText Markup Language<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>HTML<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>abbr</span><span data-sanitized-class="token punctuation">&gt;</span></span>5 for Web Designers<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>a</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>author<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">itemscope</span> <span data-sanitized-class="token attr-name">itemtype</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>https://schema.org/Person<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">		<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>span</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>name<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">			<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>a</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>url<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">href</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>https://adactio.com/<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Jeremy Keith<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>a</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">		<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>span</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>author<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">itemscope</span> <span data-sanitized-class="token attr-name">itemtype</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>https://schema.org/Person<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">		<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>span</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>name<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">			<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>a</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>url<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">href</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>https://x.com/rachelandrew/<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Rachel Andrew<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>a</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">		<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>span</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>time</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>datePublished<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>2010<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>time</span><span data-sanitized-class="token punctuation">&gt;</span></span>, </span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>time</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>dateModified<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>2016<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>time</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">itemprop</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>isAccessibleForFree<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">content</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>true<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>🆓<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>li</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<h2 data-sanitized-id="why-i-like-this-html">Why I like this HTML</h2>
<p>I like this HTML because it conveys so much programmatically determinable information — check out the <a href="https://validator.schema.org/#url=https%3A%2F%2Falandalton.github.io%2FAuthors-Apart%2F">structured data</a>! — using only 13 elements, and without compromising accessibility. In 2022’s <a href="https://www.htmhell.dev/adventcalendar/2022/17/">Modern HTML as a foundation for progressive enhancement</a>, Gaël Poupard asked, “What if we could improve the HTML stack […], making the markup step more resilient?” I consider microdata, like <a href="https://www.w3.org/WAI/standards-guidelines/aria/">WAI-Aria</a>, a valuable enhancement to HTML.</p>
<p>Mark’s article asked the reader to pay attention to each word in this sentence: “Microdata annotates the DOM with scoped name/value pairs from custom vocabularies.” The annotation is the enhancement: microdata won’t interfere with your usual best practices for HTML, and — as Doug Abrams explained in <a href="https://www.tpgi.com/mind-the-remediation-gap/">Mind The (Remediation) Gap</a> — “The vast majority of accessibility lives in the markup.” Getting the name/value pairs right can involve some trial and error, but Mark’s book includes a helpful table that shows <a href="https://diveinto.html5doctor.com/extensibility.html#property-values">where microdata property values come from</a>. You can probably spot those pairs in the HTML above. For example, <code>itemprop="url"</code> and <code>href="https://html5forwebdesigners.com/"</code> specify the URL for the HTML5 for Web Designers book, inside the <code>a</code> element. Notice how nicely this microdata plays with the existing HTML: I was also able to include an <code>abbr</code> element to explain the HTML abbreviation. For whatever content your webpage includes, you can probably find a useful schema in the surprisingly comprehensive <a href="https://schema.org/docs/full.html">full schema hierarchy</a>. <a href="http://schema.org/">Schema.org</a>’s <a href="https://schema.org/docs/gs.html">Getting started with schema.org using Microdata</a> is a useful, concise guide, and that site’s <a href="https://validator.schema.org/">validator</a> will instantly show you the structured data that you’ve added to your webpage with microdata.</p>
<h2 data-sanitized-id="a-brief-note-on-laziness">A brief note on laziness</h2>
<p>Christmas is a time for relaxing. <a href="https://www.oreilly.com/library/view/programming-perl-4th/9781449321451/">Programming Perl</a> names laziness, impatience, and hubris as the three great virtues of a programmer, and this code offers us a good opportunity to practice those. Using microdata schemas from <a href="http://schema.org/">Schema.org</a> means that you probably won’t need to spend time thinking up class names or IDs to use in your CSS; instead, you can just write <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors">attribute selectors</a> based on the microdata that you’ve added, like so:</p>
<pre data-sanitized-class="language-css"><code data-sanitized-class="language-css"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token selector">[itemtype="https://schema.org/Book"] &gt; [itemprop="name"]</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token property">font-weight</span> <span data-sanitized-class="token punctuation">:</span> bold<span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token property">font-size</span> <span data-sanitized-class="token punctuation">:</span> large<span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token property">margin-bottom</span> <span data-sanitized-class="token punctuation">:</span> 1em<span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span></code></pre>
<h2 data-sanitized-id="how-microdata-could-help-your-users">How microdata could help your users</h2>
<p>I got ahead of myself there; the <a href="https://www.w3.org/TR/html-design-principles/#:~:text=consider%20users%20over%20authors">HTML design principles</a> say to “consider users over authors”. So, here are some ways in which microdata can benefit your users:</p>
<h3 data-sanitized-id="microdata-could-help-users-when-they-search-the-web">Microdata could help users when they search the web</h3>
<p>Mark Pilgrim’s <a href="https://diveinto.html5doctor.com/extensibility.html">“‘Distributed,’ ‘Extensibility,’ &amp; Other Fancy Words” chapter</a> concluded with a hypothetical search result in which the search engine shows not only an excerpt of the text from the webpage, but also some of the microdata that he added. That does seem useful: it lends some credibility to the search result, and so should allow users to more easily find what they’re looking for. This has persisted: Google Search Central’s <a href="https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data#:~:text=Adding%20structured%20data%20can%20enable%20search%20results%20that%20are%20more%20engaging%20to%20users%20and%20might%20%20encourage%20them%20to%20interact%20more%20with%20your%20website">Introduction to structured data markup in Google Search</a> says that “Adding structured data can enable search results that are more engaging to users and might encourage them to interact more with your website […]”. To prove the point, Google Search Central’s <a href="https://developers.google.com/search/case-studies?hl=en">case studies</a> show how well-known organisations have used these techniques to improve search experiences for their users. However, the search engines may or may not show your webpage’s microdata. It doesn’t seem to have happened for my “Authors Apart” webpage yet, and I’m not suprised; Mark qualified his hypothetical example by saying, “And here (modulo the whims of Google, the phase of the moon, and so on and so forth) is what my review might look like in a search result listing”.</p>
<h3 data-sanitized-id="microdata-could-help-users-when-they-use-artificial-intelligence-tools">Microdata could help users when they use Artificial Intelligence tools</h3>
<p>Similarly to Mark’s point about the whims of Google, Jono Alderson’s recent <a href="https://www.jonoalderson.com/conjecture/what-if-schema-org-is-just-labels/">What if Schema.org is just… Labels?</a> describes Google’s use of microdata as feeling “limited, selective, inconsistent, and often frustratingly opaque”. Jono goes on to highlight how the relationships that we define through microdata can help users who use AI tools. Of course, you might not consider this to be a net benefit: Molly White’s <a href="https://www.citationneeded.news/ai-isnt-useless/">AI isn't useless. But is it worth it?</a> weighs up the costs and benefits of these new tools.</p>
<h3 data-sanitized-id="microdata-could-help-your-users-by-making-html-more-prevalent">Microdata could help your users by making HTML more prevalent</h3>
<p>This is my favourite benefit of using microdata, even if it’s indirect. See, personally, I agree with the National Center on Disability and Access to Education’s <a href="https://www.ncdae.org/resources/factsheets/principles.php#:~:text=HTML%20is%20still%20the%20most%20accessible%20format%20for%20almost%20every%20type%20of%20content.">Principles of Accessible Design</a> when they said in 2007, “HTML is still the most accessible format for almost every type of content”. So, it seems to me that the more we use HTML, the more accessible our content is for our users. My favourite recent example of this is Knut Hühne’s <a href="https://blog.k-nut.eu/leaflet-microdata-html-webcomponent">microdata-enhanced HTML Webcomponent for Leaflet</a>. (<a href="https://leafletjs.com/">Leaflet</a> is “an open-source JavaScript library for mobile-friendly interactive maps”.) In a nice piece of progressive enhancement, Knut uses microdata to mark up geographical data from an API, so that basic address information is available to everyone on every browser, and graphical maps are available too.</p>
<p>To quote Mark Pilgrim one more time, “Angle brackets don’t impress me much, but I have to admit, that’s pretty cool.’</p>


guid: CCAL-118hcal-2024-12-18
title: House Calendars, DAILY - House Calendars for December 18, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118hcal-2024-12-18
hash: 7w]�g ��8��R�&
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-18/pdf/CCAL-118hcal-2024-12-18.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-18/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-18/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-18.zip">ZIP</a>


guid: CCAL-118scal-2024-12-18
title: Senate Calendars, DAILY - Senate Calendars for December 18, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118scal-2024-12-18
hash: D~P��6��%��# [�
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-18/pdf/CCAL-118scal-2024-12-18.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-18/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-18/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-18.zip">ZIP</a>


guid: /fr/sencaplus/personnalites/faire-de-mon-mieux-jusquau-bout-le-senateur-cotter-prend-sa-retraite/
title: « Faire de mon mieux, jusqu’au bout » : Le sénateur Cotter prend sa retraite
hash: e �KQ�i2�?�
attributes: {"enclosures":[]}
link:
https://sencanada.ca//fr/sencaplus/personnalites/faire-de-mon-mieux-jusquau-bout-le-senateur-cotter-prend-sa-retraite/


guid: 6165d5e4ab2c8b5f79b5d82e:6165f805cc4a70035862ada3:67631e47bb9d5725ff2152bb
title: Dred Scott, politics, and the “living” constitution
author: ;Lisa P
link: https://www.rightsprobe.org/read/dred-scott-politics-and-the-living-constitution
hash: @ �� *�_K�N�͡�,
content:
<p data-sanitized-class="">By Wanjiru Njoya | Published by Lew Rockwell.com</p><p data-sanitized-class="">In a 2022 article <a href="https://penncapital-star.com/commentary/we-dont-want-to-say-it-but-165-years-later-dred-scott-is-alive-and-well-michael-coard/" target="_blank"><span>titled</span></a> “Will the U.S. Supreme Court ever get around to overruling the shame of Dred Scott?” the surprising proposition is advanced that the 1857 Dred Scott case is “still precedent” in the United States, and that “racist lawyers and racist judges can (blatantly or discreetly) rely on it in their arguments and rulings.” Like President Biden’s <a href="https://www.congress.gov/bill/117th-congress/house-bill/55#:~:text=Specifically%2C%20the%20bill%20imposes%20criminal,an%20attempt%20to%20commit%20aggravated" target="_blank"><span>Antilynching Act of 2021</span></a>, we are asked to believe that the injustices of past centuries are still in operation and new laws are needed to eradicate them.</p><p data-sanitized-class=""><span data-sanitized-class="sqsrte-text-color--accent">Summary</span></p><p data-sanitized-class="">The Walter E. Williams Research Fellow for the Mises Institute, Wanjiru Njoya looks at the ongoing debate between originalists, who interpret the Constitution based on its original meaning, and those who view it as a "living" document that evolves with societal changes. </p><p data-sanitized-class="">Her argument against judicial activism and the "living tree" doctrine is exemplified by Canadian law professor <span data-sanitized-class="sqsrte-text-color--accent">Bruce Pardy</span>'s <a href="https://nationalpost.com/opinion/bruce-pardy-rosalie-abella-was-shameless-in-making-up-the-law-and-mainstreaming-judicial-activism" target="_blank">critique</a> of Supreme Court justices like Rosalie Abella. Professor Pardy points out that the "living tree" justification for judicial activism, where judges resolve contested moral and social values, is comparatively recent. For centuries, the role of judges was to interpret the law as it is, not as they think it ought to be.</p><p data-sanitized-class="">Pardy observes:</p><blockquote><p data-sanitized-class="">Justice Brian Dickson, later the Supreme Court’s chief justice, in a 1978 decision, rejected the notion that the court should weigh political and socio-economic issues, which would necessarily reflect judges’ personal beliefs. He cited U.S. Supreme Court Justice Benjamin Cardozo, who wrote in 1921 that a judge “is not to innovate at pleasure. He is not a knight errant, roaming at will in pursuit of his own ideal of beauty or of goodness.”</p></blockquote><p data-sanitized-class="">This was one of the key issues in the Dred Scott case. The legal issue was not whether slavery is morally abhorrent, but whether it was prohibited by the Constitution. </p><p data-sanitized-class="">Njoya discusses the historical context of the 1857 Dred Scott case, which culminated in a Supreme Court ruling that reflected the original meaning of the Constitution at the time, which did not consider slaves as citizens. The majority opinion, led by Chief Justice Roger B. Taney, argued that the Constitution's original intent must be upheld, despite the moral abhorrence of slavery. </p><p data-sanitized-class="">Njoya critiques the notion that courts should disregard the Constitution when addressing past injustices, as seen in the push for new laws such as President Biden’s Antilynching Act of 2021. She emphasizes the importance of constitutional interpretation and the rule of law, rather than allowing judges to impose their personal beliefs. A principled approach to constitutional interpretation, she argues, is needed to distinguish between moral opposition to past injustices and the legal framework that governs such issues:</p><blockquote><p data-sanitized-class="">Abolitionists like Lysander Spooner had a more principled position than contemporary hypocritical neo-Puritans. While Spooner regarded slavery as morally wrong, it did not follow that he agreed with the subsequent war of Northern aggression. Spooner regarded it as morally wrong to wage wars of aggression, regardless of the alleged good motives of the aggressor. Other libertarians, including Murray Rothbard, take the same view as Spooner. Moral wrongs are not “total” in the sense that once a wrong has been established it justifies the perpetration of further wrongs, otherwise injustice would merely precipitate further and more egregious injustices. This explains why Spooner did not simply argue that slavery was morally wrong, but rather sought to show that it was also unconstitutional. He made the effort, which is the only approach compatible with the rule of law, to distinguish his moral opposition to slavery and his opposition to the majority view of its constitutionality, from the question of the justice of Lincoln’s war.</p></blockquote><p data-sanitized-class=""><a href="https://www.lewrockwell.com/2024/12/no_author/dred-scott-politics-and-the-living-constitution/" target="_blank">For the original, full-text version of this opinion piece, see the publisher’s website here</a>.</p><p data-sanitized-class=""><strong>Further Reading</strong></p><p data-sanitized-class=""><a href="https://nationalpost.com/opinion/bruce-pardy-rosalie-abella-was-shameless-in-making-up-the-law-and-mainstreaming-judicial-activism" target="_blank">Rosalie Abella was shameless in making up the law and mainstreaming judicial activism</a></p>





















  
  



<hr>


  <p data-sanitized-class="">Follow our journey.</p><p data-sanitized-class="">Subscribe to our newsletter: <a href="mailto:rightsprobe@protonmail.com?" target="_blank">rightsprobe@protonmail.com</a></p>

attributes:
{"enclosures":[{"url":"https://images.squarespace-cdn.com/content/v1/6165d5e4ab2c8b5f79b5d82e/1734550472977-HQ7AX1K4FKJKNLVI33SQ/33345428818_d343a001d0_b.jpg?format=1500w","title":"Dred Scott, politics, and the “living” constitution","type":"image/jpeg","medium":"image","height":1024,"width":662}]}


guid: https://htmhell.dev/adventcalendar/2024/19/
title: Getting Oriented with HTML Video
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/19/
hash: �<���9�9��[���
attributes: {"enclosures":[]}
content:
by Scott Jehl<br><p>A couple years back, I was in a window seat on a flight from Amsterdam to New York. The weather was gray and drizzly as the plane took off, but as it punched through the clouds a very different scene revealed itself. Out my window, it looked like a <a href="https://en.wikipedia.org/wiki/Maxfield_Parrish">Maxfield Parrish</a> painting brought to life. And the plane's speed made it appear to scroll by with this uncanny effect, like a parallax effect that used the wrong easing function. Mesmerizing! I pulled out my phone and recorded a couple of videos.</p>
<p>One in landscape:</p>
<video controls="controls" playsinline="" muted="" loop="" data-sanitized-class="u-mb" preload="none">
    <source src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-1080.mp4">
</video>
<p>And one in portrait:</p>
<video controls="controls" playsinline="" muted="" loop="" preload="none">
    <source src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-1080.mp4">
</video>
<p>I didn't realize at the time that those video orientations would come in handy for a little post on this website.</p>
<p>Let's jump ahead a year to mid 2023. For years, many of us had been advocating for a simple, HTML-based way to serve video files in different sizes and formats using media queries—essentially how the <code>picture</code> element handles images. I won't rehash the entire history here, but that concept wasn't new or mine to claim. In fact, we once had exactly such a feature. It was a web standard, supported by all browsers, and it even inspired the design of the <code>picture</code> element—not the other way around. However, just as <code>picture</code> was on track to land, the <code>video</code> features that inspired it were removed from the HTML spec and supporting browsers (except WebKit). Many of us believed this was a mistake, as it left developers without an HTML-only solution to serve responsive, art-directed video content. Finally, sometime mid 2023, representatives from Chrome and Firefox agreed and expressed interest in reintroducing the feature, and "responsive video" was back on the standards track.</p>
<p>Jump forward to today: responsive video is once again part of the HTML standard and built back into browsers as well (<a href="https://scottjehl.com/posts/responsive-video/">I was able to contribute the commits to Firefox</a>)! Now that it's back, we can use <code>media</code> attributes on HTML <code>source</code> elements within HTML <code>video</code>, which allow us to describe the conditions in which a particular version or format of a static video file should be downloaded and displayed. It's not meant to solve every video use case, but it's nice for many of them; particularly if you just want to serve an appropriate video file and can't be bothered (or aren't able) to set up HLS streaming.</p>
<p>In today's post, I want to show you how to use this feature to deliver my airplane video so that it's optimized for any viewport it happens to land on.</p>
<p>Let's start with the HTML: a <code>video</code> element with some <code>source</code>s. Below, I'm offering one video orientation or the other using media queries (check those <code>media</code> attributes on the <code>source</code> elements)!</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>video</span> <span data-sanitized-class="token attr-name">autoplay</span> <span data-sanitized-class="token attr-name">controls</span> <span data-sanitized-class="token attr-name">playsinline</span> <span data-sanitized-class="token attr-name">muted</span> <span data-sanitized-class="token attr-name">loop</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(orientation: landscape)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-landscape-1080.mp4<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-portrait-1080.mp4<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>video</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>Nice. We can do better, though. A 1080px-wide video is a large file to send smaller screens and mp4 isn't the smallest format we can offer for a high-quality video of any resolution. Let's use more media queries to offer some smaller video sizes for each orientation and a webm format for each source too, which I put first so that supporting browsers will pick it over the heavier mp4 alternative.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>video</span> <span data-sanitized-class="token attr-name">autoplay</span> <span data-sanitized-class="token attr-name">controls</span> <span data-sanitized-class="token attr-name">playsinline</span> <span data-sanitized-class="token attr-name">muted</span> <span data-sanitized-class="token attr-name">loop</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(min-width:721px) and (orientation: landscape)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>video/webm<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-landscape-1080.webm<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(min-width:721px) and (orientation: landscape)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-landscape-1080.mp4<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(min-width:721px) and (orientation: portrait)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>video/webm<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-portrait-1080.webm<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(min-width:721px) and (orientation: portrait)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-portrait-1080.mp4<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(min-width:481px) and (orientation: landscape)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>video/webm<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-landscape-720.webm<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(min-width:481px) and (orientation: landscape)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-landscape-720.mp4<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(min-width:481px) and (orientation: portrait)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>video/webm<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-portrait-720.webm<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(min-width:481px) and (orientation: portrait)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-portrait-720.mp4<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(orientation: landscape)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>video/webm<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-landscape-480.webm<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(orientation: landscape)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-landscape-480.mp4<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(orientation: portrait)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>video/webm<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-portrait-480.webm<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>source</span> <span data-sanitized-class="token attr-name">media</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>(orientation: portrait)<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>sunset-portrait-480.mp4<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>video</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>Nice! That's a hefty chunk of HTML to be fair, but it does demonstrate the power we're afforded through these features. The video below uses that exact markup, so depending on the size and shape of your viewport when you load this page, you'll be delivered an appropriate video:</p>
<video controls="controls" playsinline="" muted="" loop="" preload="none">
    <source media="(min-width:721px) and (orientation: landscape)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-1080.webm">
    <source media="(min-width:721px) and (orientation: landscape)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-1080.mp4">
    <source media="(min-width:721px) and (orientation: portrait)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-1080.webm">
    <source media="(min-width:721px) and (orientation: portrait)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-1080.mp4">
    <source media="(min-width:481px) and (orientation: landscape)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-720.webm">
    <source media="(min-width:481px) and (orientation: landscape)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-720.mp4">
    <source media="(min-width:481px) and (orientation: portrait)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-720.webm">
    <source media="(min-width:481px) and (orientation: portrait)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-720.mp4">
    <source media="(orientation: landscape)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-480.webm">
    <source media="(orientation: landscape)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-480.mp4">
    <source media="(orientation: portrait)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-480.webm">
    <source media="(orientation: portrait)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-480.mp4">
</video>
<p>It's worth reiterating a caveat here: responsive video works as you'd expect when you first load the page, but it does not reevaluate sources again after that, so you won't see sources adapt as you resize your browser for example. This is intentional: unfortunately, this first pass of reinstated responsive video support needed to match the behavior it formerly had, which only selected an appropriate video source at page load time. As far as I'm concerned, this is a bug that should be addressed. <a href="https://scottjehl.com/posts/rwd-video/">I've written about it and a few others here</a> if you're interested.</p>
<p>Anyway, for now the native implementation falls a little short, but it handles the hard parts and we can make it a little better if we want to anyway!</p>
<p>Below, I'm wrapping the video in <a href="https://scottjehl.com/posts/even-responsiver-video/">a little HTML Web Component I made called <code>responsive-video</code></a>, which will cause the browser to reevaluate its sources when media conditions change, and also keep the video timecode sync'd properly should a source video change. Markup-wise, it works like this, by wrapping the video and referencing a script:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>responsive-video</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>video</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    ...sources go here</span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>video</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>responsive-video</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>script</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>module<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">src</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>responsivevideo.js<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span><span data-sanitized-class="token script"></span><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>script</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>And here it is in action!</p>
<responsive-video>
    <video controls="controls" playsinline="" muted="" loop="" preload="none">
        <source media="(min-width:721px) and (orientation: landscape)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-1080.webm">
        <source media="(min-width:721px) and (orientation: landscape)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-1080.mp4">
        <source media="(min-width:721px) and (orientation: portrait)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-1080.webm">
        <source media="(min-width:721px) and (orientation: portrait)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-1080.mp4">
        <source media="(min-width:481px) and (orientation: landscape)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-720.webm">
        <source media="(min-width:481px) and (orientation: landscape)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-720.mp4">
        <source media="(min-width:481px) and (orientation: portrait)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-720.webm">
        <source media="(min-width:481px) and (orientation: portrait)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-720.mp4">
        <source media="(orientation: landscape)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-480.webm">
        <source media="(orientation: landscape)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-landscape-480.mp4">
        <source media="(orientation: portrait)" type="video/webm" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-480.webm">
        <source media="(orientation: portrait)" src="https://htmhell.dev/adventcalendar/2024/19/sunset-portrait-480.mp4">
    </video>
</responsive-video>

<p>With that little helper component, our video adapts its size and orientation not only at load, but continuously through a session. <em>Somebody tell YouTube Shorts and TikTok!</em></p>
<p>So now you know how to serve a video in portrait or landscape orientation declaratively with HTML. Happy Holidays.</p>


guid: CCAL-118hcal-2024-12-19
title: House Calendars, DAILY - House Calendars for December 19, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118hcal-2024-12-19
hash: <B��N�����?�*
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-19/pdf/CCAL-118hcal-2024-12-19.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-19/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-19/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-19.zip">ZIP</a>


guid: CCAL-118scal-2024-12-19
title: Senate Calendars, DAILY - Senate Calendars for December 19, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118scal-2024-12-19
hash: ���z�p��o �!�F�
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-19/pdf/CCAL-118scal-2024-12-19.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-19/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-19/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-19.zip">ZIP</a>


guid: https://htmhell.dev/adventcalendar/2024/20/
title: My favourite colour is Chuck Norris red
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/20/
hash: ���n:4����(�� ��
attributes: {"enclosures":[]}
content:
by Declan Chidlow<br><p>Setting the colour of text on a webpage is usually a simple affair involving whipping it out the good ol' CSS <code>color</code> property. But this is HTMHell, dammit. None of that wishy-washy CSS nonsense here. No siree. We use HTML as the good lord intended and shalln't stray into the sins of cascading sheets lest we end up some non-HTML variant of hell where they define page structure with JavaScript vars.</p>
<p>But HTML isn't great for defining styles -- or at least, it isn't anymore. If we wind back the clocks a few years to HTML versions of old, we find the colour attribute. If you've been around for a while, you've no doubt seen it. Something like this:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>font</span> <span data-sanitized-class="token attr-name">color</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>#d72b2b<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>HTMHell rules!<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>font</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>HTMHell rules!</p>
<p>If we render that in a browser, we get some text in the lovely HTMHell red. That's great. That's what we'd expect. Next we'll choose another colour. Something a bit different. Let's try 'chucknorris'.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>font</span> <span data-sanitized-class="token attr-name">color</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>chucknorris<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>But... Chuck Norris isn't a colour.<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>font</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>But... Chuck Norris isn't a colour.</p>
<p>If you go through the effort of loading <em>that</em> up in a browser, you might notice it makes the text red. Why?</p>
<h2 data-sanitized-id="some-funny-character-parsing">Some funny character parsing</h2>
<p>HTML generally doesn't have an error state, at least not one akin to what would happen if writing something like invalid JavaScript. Browsers are very forgiving when parsing HTML (which explains how people have gotten away with the crimes documented throughout this website) and generally do their best to make up for user error. If you leave a dangling <code>&lt;div&gt;</code>, the browser will do its best to close it up and render it out.</p>
<p>This forgiveness is the reason behind the funkiness. Browsers simply try to forge ahead with the invalid value and hope it'll work. In the past web browsers all handled invalid values a bit differently, but now it's all outlined in the <a href="https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#rules-for-parsing-a-legacy-colour-value">"rules for parsing a legacy color value" part of the HTML spec</a>. A surmised version of the parsing outlined there is as follows:</p>
<ol>
<li>
<p>Initial Cleanup:</p>
<ul>
<li>If an octothorpe (#) is located at the start of the value, it's removed.</li>
<li>The colour attribute only accepts hexes, so there isn't a point keeping it.</li>
<li>Example: "#FF0000" becomes "FF0000".</li>
</ul>
</li>
<li>
<p>Replace Invalid Characters:</p>
<ul>
<li>Any non-hexadecimal characters (anything not 0-9 or A-F/a-f) are removed and replaced with '0'.</li>
<li>Example: 'abcxyz123' becomes 'abc000123'.</li>
</ul>
</li>
<li>
<p>Standardise Length:</p>
<ul>
<li>While the string's length is 0 or not divisible by 3, append '0'.</li>
<li>Examples:
<ul>
<li>"F" becomes "F00" (padded to length 3).</li>
<li>"FFFF" becomes "FFFF00" (padded to length 6).</li>
<li>"FFFFFF0" becomes "FFFFFF000" (padded to length 9).</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Split into Red, Green, and Blue:</p>
<ul>
<li>The first third becomes the red value.</li>
<li>The second third becomes the green value.</li>
<li>The last third becomes the blue value.</li>
<li>Example: "FFFFFF000" becomes ["FFF", "FFF", "000"].</li>
</ul>
</li>
<li>
<p>Handle Length:</p>
<ul>
<li>If any component is longer than 8 characters, remove the characters from the left until it's 8 characters long.
<ul>
<li>Example: "123456789" → "23456789"</li>
</ul>
</li>
<li>While the length is greater than 2, and all components start with '0', remove the leading '0' from each component.
<ul>
<li>Example: ["000F", "000F", "000F"] becomes ["00F", "00F", "00F"] which then becomes ["0F", "0F", "0F"].</li>
</ul>
</li>
<li>If length is still greater then 2 keep only the first 2 characters of each component.
<ul>
<li>Example: ["ABC", "DEF", "123"] becomes ["AB", "DE", "12"].</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Putting It Together:</p>
<ul>
<li>Get the final red, blue, and green components, then put them together in that order to create the colour.</li>
<li>Example: ["AB", "DE", "12"] becomes ABDE12.</li>
</ul>
</li>
</ol>
<p>I've written a small tool over on CodePen that will take any inputted value, break down the processing step by step, and output the colour as it would be handled. Go have a bit of fiddle!</p>
<p data-height="300" data-default-tab="result" data-slug-hash="yLmKBpN" data-pen-title="Legacy HTML Colour Parsing Demo" data-user="OuterVale" data-sanitized-class="codepen">
  <span>See the Pen <a href="https://codepen.io/OuterVale/pen/yLmKBpN">
  Legacy HTML Colour Parsing Demo</a> by Declan Chidlow (<a href="https://codepen.io/OuterVale">@OuterVale</a>)
  on <a href="https://codepen.io/">CodePen</a>.</span>
</p>

<h2 data-sanitized-id="some-fun-examples">Some fun examples</h2>
<p>So, we know this happens and why. The next task is obviously to have some fun with it. Finding words whose computed colours correlate with them is great fun. For example, 'Sonic' gives us a lovely blue like the hedgehog. I've put together a little table of some of these coincidental match ups:</p>
<p data-height="300" data-default-tab="result" data-slug-hash="wvLbjpZ" data-pen-title="Word Correlations With HTML Colour Parsing" data-user="OuterVale" data-sanitized-class="codepen">
  <span>See the Pen <a href="https://codepen.io/OuterVale/pen/wvLbjpZ">
  Word Correlations With HTML Colour Parsing</a> by Declan Chidlow (<a href="https://codepen.io/OuterVale">@OuterVale</a>)
  on <a href="https://codepen.io/">CodePen</a>.</span>
</p>

<h2 data-sanitized-id="interesting-parsing-in-the-modern-era">Interesting parsing in the modern era</h2>
<p>So, that's all well and good, but it's old news. The <code>color</code> and <code>bgcolor</code> attributes that permitted our parsing adventures are relics of HTML 4. They're obsolete (though still in active use on a disturbingly high number of websites). That isn't to say quirks like that have disappeared completely though. CSS has its own set of fascinating peculiarities when it comes to handling invalid colour values. Most modern browsers will clamp values rather than reject them outright -– throw rgb(300, -50, 1000) at a browser and it won't fail; it'll helpfully transform it into rgb(255, 0, 255).</p>
<p>The web's foundational principle of forgiveness -– the inherent flexibility that allows "chucknorris" to be parsed as red, even though the reason it does so is old, silly, and unsupported –- hasn't gone anywhere. Modern browsers still bend over backward to make our code work, even when we throw nonsense at them. It doesn't take long to see this forgiveness in action within the cursed examples held within the pages of HTMHell. Each horrifying snippet, each questionable hack, each "it works but why" moment exists because browsers simply refuse to give up on rendering our 'mistakes'.</p>
<p>The web is built on this foundation of resilience, both in technology and <a href="https://www.w3.org/blog/2022/a-letter-from-our-ceo-the-web-as-the-ultimate-tool-of-resilience-for-the-world">ethos</a>. It's what allows a website from 1996 to still render in a modern browser. It's what lets a page load even when half the CSS is invalid. It's what makes it magic.</p>
<p>I've heard people quip that browsers should be less forgiving and enforce perfection. That allowing jank makes the web somehow 'bad'. I think a perfect web would be a boring web. I certainly wouldn't be here writing were it 'perfect'. It's about making the web work, no matter what we throw at it, and I wouldn't have it any other way.</p>
<p>After all, in a perfect web, "chucknorris" would just be another error message -– and where's the fun in that?</p>
<h2 data-sanitized-id="resources">Resources</h2>
<ul>
<li><a href="http://scrappy-do.blogspot.com/2004/08/little-rant-about-microsoft-internet.html">Sam's Place - A little rant about Microsoft Internet Explorer's color parsing</a></li>
<li><a href="https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#rules-for-parsing-a-legacy-colour-value">HTML Standard</a></li>
<li><a href="https://stackoverflow.com/q/8318911">Why does HTML think "chucknorris" is a color?</a></li>
</ul>


title: A Republic If You Can Keep It Or Phoenix It w/Cynthia and Courtenay Turner
author: ;Rising Tide Foundation
hash: �s=ki�v����r��K
guid:
https://odysee.com/a-republic-if-you-can-keep-it-or-phoenix:9386073cd3496139d996810228129c723f7386ba

content:
<p><img src="https://thumbnails.lbry.com/eYLdrc1ldUc" width="480" alt="thumbnail" title="A Republic If You Can Keep It   Or Phoenix It  w/Cynthia and Courtenay Turner"></p>Cynthia Chung joins Courtenay Turner to discuss her new film Like a Phoenix: The Death and Rebirth of America <br><br>Watch the full film<br>https://www.youtube.com/watch?v=U3EamfkiBTc<br><br>Support the Rising Tide Foundation in the following ways:<br><br>1) Make a donation <br>https://risingtidefoundation.net/support-the-work/<br>2) Subscribe to Matt and Cynthia's Substack<br>matthewehret.substack.com<br>cynthiachung.substack.com<br>3) Buy some books!<br>https://canadianpatriot.org/untold-history-of-canada-books/<br><br>and follow us on www.risingtidefoundation.net and t.me/risingtidefoundation<br>...<br>https://www.youtube.com/watch?v=eYLdrc1ldUc

link:
https://odysee.com/a-republic-if-you-can-keep-it-or-phoenix:9386073cd3496139d996810228129c723f7386ba

attributes:
{"enclosures":[{"url":"https://player.odycdn.com/api/v3/streams/free/a-republic-if-you-can-keep-it-or-phoenix/9386073cd3496139d996810228129c723f7386ba/a34682.mp4","type":"video/mp4","length":237540076}]}


guid: /fr/sencaplus/opinion/au-canada-les-sols-sont-un-bien-national-meconnu-senatrice-simons/
title: Au Canada, les sols sont un bien national méconnu : sénatrice Simons
hash: ��=@PE�4���_�
attributes: {"enclosures":[]}
link:
https://sencanada.ca//fr/sencaplus/opinion/au-canada-les-sols-sont-un-bien-national-meconnu-senatrice-simons/


guid: CCAL-118hcal-2024-12-20
title: House Calendars, DAILY - House Calendars for December 20, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118hcal-2024-12-20
hash: ;h���m�����~zD
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-20/pdf/CCAL-118hcal-2024-12-20.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-20/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-20/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-20.zip">ZIP</a>


guid: CCAL-118scal-2024-12-20
title: Senate Calendars, DAILY - Senate Calendars for December 20, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118scal-2024-12-20
hash: �� �q�ֆW�"7P
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-20/pdf/CCAL-118scal-2024-12-20.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-20/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-20/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-20.zip">ZIP</a>


guid: yt:video:QUEji8Kjlls
title: The Senate of Canada Toy Drive 2024
author: ;Senate of Canada | Sénat du Canada
link: https://www.youtube.com/watch?v=QUEji8Kjlls
hash: G=�M�Ĥ;��>�
attributes:
{"enclosures":[{"url":"https://www.youtube.com/v/QUEji8Kjlls?version=3","title":"The Senate of Canada Toy Drive 2024","description":"The Honourable Raymonde Gagné, Speaker of the Senate, invited senators and Senate employees to donate toys in support of the Toys for Tots campaign.\n \nThis year’s toy donations will be distributed to St. Joe’s Women’s Centre, a daytime shelter for homeless women, to Minwaashin Lodge, an Indigenous women’s support centre, and to Tewegan Housing, a transitional home for young Indigenous people who are homeless or at risk of becoming homeless. \n-----------------\nLike the Senate of Canada on Facebook http://ow.ly/dSjS307h4in\r\nFollow the Senate of Canada on Xhttp://ow.ly/JRDm307h4lF\r\nFollow the Senate of Canada on Instagram http://ow.ly/UDUy307h4oG\r\nVisit the Senate’s website https://sencanada.ca/","type":"application/x-shockwave-flash","height":390,"width":640,"thumbnails":["https://i2.ytimg.com/vi/QUEji8Kjlls/hqdefault.jpg"]}]}


guid: yt:video:XYiq3GW11QA
title: La collecte de jouets du Sénat du Canada 2024
author: ;Senate of Canada | Sénat du Canada
link: https://www.youtube.com/watch?v=XYiq3GW11QA
hash: n����Z����/I�
attributes:
{"enclosures":[{"url":"https://www.youtube.com/v/XYiq3GW11QA?version=3","title":"La collecte de jouets du Sénat du Canada 2024","description":"L’honorable Raymonde Gagné, Présidente du Sénat, a invité les sénateurs et sénatrices, ainsi que le personnel du Sénat à faire des dons de jouets en soutien à la campagne Toys for Tots.\n\nCette année, les jouets seront distribués au Centre pour femmes St. Joe’s, un refuge de jour pour les femmes sans-abri, au Minwaashin Lodge, un centre de soutien pour femmes autochtones, et au Tewegan Housing, une maison de transition pour les jeunes autochtones qui sont sans abri ou qui risquent de le devenir.\n-----------------\r\nAimez la page du Sénat du Canada sur Facebook http://ow.ly/dSjS307h4in\r\nSuivez le Sénat du Canada sur X http://ow.ly/6TTa307h4vw\r\nSuivez le Sénat du Canada sur​ Instagram http://ow.ly/UDUy307h4oG\r\nVisitez le site web du Sénat https://sencanada.ca","type":"application/x-shockwave-flash","height":390,"width":640,"thumbnails":["https://i1.ytimg.com/vi/XYiq3GW11QA/hqdefault.jpg"]}]}


title: Matt on Inforwars: Revenge of the Mystery Cult Special
author: ;Canadian Patriot Press
hash: "��� ����#}ʛ�-�
guid:
https://odysee.com/matt-on-inforwars-revenge-of-the-mystery:0c1ac524c57a1ea59288756eab8d6a80fc20bac2

content:
<p><img src="https://thumbnails.lbry.com/_Dc3aiLs38g" width="480" alt="thumbnail" title="Matt on Inforwars: Revenge of the Mystery Cult Special"></p>In this episode of American Journal on Infowars, Host Harrison Smith talks to Matt about his new book series 'Revenge of the Mystery Cults' and the connection between ancient mystery religions of ancient times, to gnosticism, Templars, Assassins, Edgar Poe, Jack the Ripper and today's Greater Israel geopolitical mess<br><br>Purchase Revenge of the Mystery Cults here <br>https://canadianpatriot.org/purchase-revenge-of-the-mystery-cults-vol-1-3/<br><br>Follow Harrison's show on Infowars here<br>https://theinfowar.tv/channel/the-american-journal<br><br>Get Science Unshackled here<br>https://matthewehret.substack.com/p/my-new-book-has-now-hit-the-press<br><br>Matt and Cynthia's books:<br>https://canadianpatriot.org/untold-history-of-canada-books/<br><br>Watch The Hidden Hand Behind UFOs series here:<br>https://canadianpatriot.org/2023/11/01/the-hidden-hand-behind-ufos-episode-1-lifting-the-esoteric-veil/<br><br>Support the Canadian Patriot Review in the following ways:<br><br>1) Make a donation to the Canadian Patriot<br>https://www.patreon.com/canadianpatriot<br>https://canadianpatriot.org/support-us/<br><br>2) Subscribe to Matt and Cynthia's Substack<br>https://matthewehret.substack.com/<br>https://cynthiachung.substack.com/<br><br>3) Buy some books!<br>https://canadianpatriot.org/untold-history-of-canada-books/<br><br>4) Subscribe to our Telegram Channels<br>https://t.me/CanadianPatriotPress<br><br>Since it is likely just a matter of time before this Youtube channel (https://www.youtube.com/@canadianpatriotpress3573) gets suspended again or taken down entirely, check out our alternative platforms:<br><br>On Rumble<br>https://rumble.com/user/MattEhret<br><br>On Bitchute:<br>https://www.bitchute.com/channel/FPD8fbk6o541/<br><br>On Odysee<br>https://odysee.com/@canadianpatriotpress3573:4<br><br>On Soundcloud:<br>https://soundcloud.com/mattehret<br>...<br>https://www.youtube.com/watch?v=_Dc3aiLs38g

link:
https://odysee.com/matt-on-inforwars-revenge-of-the-mystery:0c1ac524c57a1ea59288756eab8d6a80fc20bac2

attributes:
{"enclosures":[{"url":"https://player.odycdn.com/api/v3/streams/free/matt-on-inforwars-revenge-of-the-mystery/0c1ac524c57a1ea59288756eab8d6a80fc20bac2/49f772.mp4","type":"video/mp4","length":521029773}]}


guid: https://htmhell.dev/adventcalendar/2024/21/
title: Grouping form fields
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/21/
hash: c ����E��"��
attributes: {"enclosures":[]}
content:
by Matthias Kittsteiner<br><p>When I first stumbled upon <code>fieldset</code> and <code>legend</code>, I didn’t know much about HTML and especially not about accessibility. Everything I noticed was the special way a <code>legend</code> is displayed inside a <code>fieldset</code> – or rather: alongside the border of a <code>fieldset</code>.</p>
<p>Fast forward to (kind of) today: while working on a contact form, I first could get my hands on this element and learned more about it.</p>
<h2 data-sanitized-id="what-is-a-fieldset?">What is a <code>fieldset</code>?</h2>
<p>Every so often I’m surprised how well chosen names in HTML are. <code>fieldset</code> is no exception here. It’s basically a list of form fields (inputs, selects, textareas). It groups all fields inside of it, and makes it a set of fields. And the <code>legend</code> is used as caption of the <code>fieldset</code> (and ultimately it becomes a caption for all of the grouped form fields).</p>
<p>A simple example of a <code>fieldset</code> looks like this:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>fieldset</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>legend</span><span data-sanitized-class="token punctuation">&gt;</span></span>Date<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>legend</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date-month<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Month<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date[month]<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>number<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date-month<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date-day<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Day<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date[day]<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>number<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date-day<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date-year<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Year<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date[year]<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>number<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>date-year<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>fieldset</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>Which results in this:</p>
<p><img src="https://htmhell.dev/adventcalendar/2024/21/fieldset-example.png" alt="A fieldset with the group name “Date” and three fields for month, day and year"></p>
<p>In the image you see the default design for a <code>fieldset</code>: It has a border, that is partly interrupted by the <code>legend</code>. Something, that is not the easiest to achieve with other elements with CSS only. However, in the wild, you won’t often see it like this.</p>
<h2 data-sanitized-id="why-does-it-matter?">Why does it matter?</h2>
<p>While for users capable of browsing websites visually, a <code>fieldset</code> often stays hidden, since the default styling usually is changed. Only the <code>legend</code> is visible as caption for a group of fields. For screen reader users, it’s a whole different story if they use it to navigate through the content via keyboard. For every field inside the <code>fieldset</code>, the screen reader announces that it is part of a group as well as the caption. It makes sure that the user is always aware of the context of the group and that the current active field is part of a specific group.</p>
<p>VoiceOver for example will announce the <code>fieldset</code> as “Date, group”:</p>
<p><img src="https://htmhell.dev/adventcalendar/2024/21/fieldset-voiceover-group.png" alt="VoiceOver announcing a fieldset as “Date, group”"></p>
<p>When navigating to the first form field “month”, VoiceOver will announce it as “Month, incrementable edit text number field, Date, Date, group”</p>
<p><img src="https://htmhell.dev/adventcalendar/2024/21/fieldset-voiceover-group-input.png" alt="VoiceOver announcing a field “month” inside a fieldset as “Month, incrementable edit text number field, Date, Date, group”"></p>
<p>Additionally, by using the <code>disabled</code> attribute, you can easily disable a whole group of fields within the <code>fieldset</code>. Feels a little bit like magic. Such disabled fields are neither editable (they ignore user inputs completely), nor will they be submit in a form.</p>
<p>One note though: think about it first before using it. That is also true for a <code>fieldset</code> as a whole.</p>
<p>Ensure fields inside a <code>fieldset</code> are actually connected to each other and even require an identical context. Otherwise, it just makes the announcement more verbose as it should be, since the value of the <code>legend</code> will always be announced to screen reader users (in case of VoiceOver users often even twice). Use it only if the connected fields are not self-explaining if they are used alone, if you can’t properly edit a field the right way without knowing about the context of the group. While connecting multiple fields to enter a date with month/day/year actually will tell you (by a properly set <code>legend</code>) that you’re about to fill out a date, connecting two fields for first and last name won’t have any positive effect, since they can be filled correctly by their own without knowing that the other field exists.</p>
<h2 data-sanitized-id="usage-examples">Usage examples</h2>
<p>Having multiple choice questions, e.g. in a survey, is an ideal example in grouping form fields. You can use the <code>legend</code> as question and radio buttons as the answers:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>fieldset</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>legend</span><span data-sanitized-class="token punctuation">&gt;</span></span>When did you hear about fieldsets the first time?<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>legend</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	</span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>radio<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>before-2000<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>eyes-opened<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">value</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>before 2000<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>before-2000<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Before 2000<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>br</span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	</span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>radio<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>between-2000-2009<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>eyes-opened<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">value</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>2000 – 2009<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>between-2000-2009<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Between 2000 and 2009<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>br</span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	</span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>radio<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>between-2010-2019<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>eyes-opened<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">value</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>2010 – 2019<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>between-2010-2019<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Between 2010 and 2019<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>br</span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	</span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>radio<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>today<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>eyes-opened<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">value</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>2020 – today<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line">	<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>today<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Between 2020 and today<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>br</span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>fieldset</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>It could also be used to connect fields for a day, a month and a year for individual input fields to select a specific date (as seen in the first example), as well as hours and minutes to select a time (if native date and time pickers aren't an option). Or you could have different fields for a credit card number by splitting them into four digits each. You see, there are many possibilities to use <code>fieldset</code> elements, just don’t overuse them – because with many possibilities comes great responsibility – or so.</p>
<p>Make also sure to always test your <code>fieldset</code> elements with a screen reader to see whether adding a context in such a way is useful. This will make it easier to distinguish whether you should use a <code>fieldset</code> or better use non-connected single form fields.</p>


guid: CCAL-118hcal-2024-12-24
title: House Calendars, DAILY - House Calendars for December 24, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118hcal-2024-12-24
hash: ~��"�4q�-ἣ��ȱ
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-24/pdf/CCAL-118hcal-2024-12-24.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-24/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118hcal-2024-12-24/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118hcal-2024-12-24.zip">ZIP</a>


guid: CCAL-118scal-2024-12-23
title: Senate Calendars, DAILY - Senate Calendars for December 23, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118scal-2024-12-23
hash: s0_ª� s�hŎ�
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-23/pdf/CCAL-118scal-2024-12-23.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-23/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-23/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-23.zip">ZIP</a>


guid: yt:video:GJJ1nJbZ1zQ
title: Friday Symposium: The Strategic Importance of the LaRouche Case Today
author: ;Diane Sare
link: https://www.youtube.com/watch?v=GJJ1nJbZ1zQ
hash: ���x� ���4� �7�
attributes:
{"enclosures":[{"url":"https://www.youtube.com/v/GJJ1nJbZ1zQ?version=3","title":"Friday Symposium: The Strategic Importance of the LaRouche Case Today","description":"In a 1995 letter to Janet Reno, former U.S. Attorney General Ramsey Clark stated unequivocally that “I believe [the LaRouche case] involves a broader range of deliberate and systematic misconduct and abuse of power over a longer period of time in an effort to destroy a political movement and leader, than any other federal prosecution in my time or to my knowledge.”\r\n\r\nIn his August 1995 testimony to an independent hearing on Department of Justice corruption, Lyndon LaRouche issued an ominous warning that “...until we remove from our system of government a rotten permanent bureaucracy which acts like contract assassins using the authority of the justice system to perpetrate assassination, this country is not free nor anyone in it.”\r\n\r\nAlthough most thinking Americans are now quite familiar with many of the more recent such abuses by the F.B.I., DOJ, and the legacy news media in the array of attacks on former President Donald Trump as well as on many other Americans of lesser notability, far fewer Americans are aware of the actual precedent that created this state of affairs, namely the years-long attacks on Lyndon LaRouche at the hands of a coordinated “Get LaRouche” task force.\r\n\r\nThis week, join myself and EIR editor Dennis Small (one of the original targets of the &quot;Get LaRouche&quot; operation)  and learn exactly why the Anglo-American war party believed that such a heavy-handed deployment to crush LaRouche and his ideas was so central to their deadly world agenda, and why a full exoneration of LaRouche has  become a vital strategic issue today.","type":"application/x-shockwave-flash","height":390,"width":640,"thumbnails":["https://i4.ytimg.com/vi/GJJ1nJbZ1zQ/hqdefault.jpg"]}]}


guid: https://canadianpatriotreview.substack.com/p/davos-billionaires-want-to-save-the
title: Davos Billionaires Want to Save the Planet… Why Don’t Developing Countries Trust Them?
author: ;Canadian Patriot Review
link: https://canadianpatriotreview.substack.com/p/davos-billionaires-want-to-save-the
hash: �y,���n��^b J)��
content:
<h2>By Matthew Ehret</h2><p>A miracle appears to be happening, as the multibillionaires of the World Economic Forum (WEF) appear to have grown consciences.</p><p>As if by magic, it appears that these gold collar elites no longer yearn for profit and power as they once had. As COP26 closes up its 12 day annual ceremonies, leading WEF-connected figures like Prince Charles, Jeff Bezos, Mario Draghi, Mark Carney and Klaus Schwab have announced a new system of economics that is based on virtue over profit!</p><p>According to the COP26 website, <em>“95 high profile companies from a range of sectors commit to being ‘Nature Positive,’ agreeing to work towards halting and reversing the decline of nature by 2030.”</em></p><p>Prince Charles has boasted that he has coordinated 300 companies representing over $60 trillion to get on board with a global green transition, and after <a href="https://www.hola.com/us/royals/20211103306098/prince-william-prince-charles-meet-jeff-bezos-scotland/">meeting with the Prince on November 2</a>, Jeff Bezos announced his new $2 billion Earth Fund to protect nature’s ecosystems with a focus on Africa. Even Mario Draghi has joined Mark Carney on this new green path, as both men have moved beyond their old Goldman Sachs money worshipping days and embraced a better destiny. </p><p>The Prince himself (who also happens to be the nominal <a href="https://www.dailymail.co.uk/femail/article-8384549/Prince-Charles-launches-Great-Reset-project-amid-coronavirus-pandemic.html">creator of the Great Reset Agenda launched</a> in 2020), spoke as an enlightened statesman saying to the world’s leaders <em>“as the enormity of the climate challenge dominates peoples’ conversations, from news rooms to living rooms, and as the future of humanity and Nature herself are at stake, it is surely time to set aside our differences and grasp this unique opportunity to launch a substantial green recovery by putting the global economy on a confident, sustainable trajectory and, thus, save our planet.”</em></p><p>Among the new array of financial mechanisms which we see being brought online in this war against humanity involve Bezos’ new Earth Fund, and Sir Robert Watson’s Living Planet Index (unveiled in 2018 at the World Economic Forum) and the new Rockefeller Foundation-sponsored Intrinsic Exchange Group (IEG) which seeks to turn global ecosystems worth an estimated $4 quadrillion into financial equity controllable by new private corporations (dubbed “natural asset companies”).</p><p><a href="https://www.intrinsicexchange.com/">On its website</a>, the IEG stated: <em>“In partnership with the New York Stock Exchange, IEG is providing a word-class platform to list these companies for trading, enabling the conversion of natural assets into financial capital. The NAC’s equity captures the intrinsic and productive value of nature and provides a store of value based on the vital assets that underpin our entire economy and make life on earth possible… In 2021, we began seeking regulatory approval to bring the first natural asset transactions to the capital markets. Our vision is to bring to market hundreds of Natural Asset Companies representing several trillion dollars’ worth of natural assets.”</em></p><p>These new companies will become the stewards of new protected zones across the globe which the UN demands encapsulate 30% of the earth’s surface by 2030 and much more by 2050.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc82d3e0d-4161-4de4-b311-cab1fa1649e9_1200x756.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc82d3e0d-4161-4de4-b311-cab1fa1649e9_1200x756.jpeg" width="1200" height="756" data-attrs='{"src":"https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/c82d3e0d-4161-4de4-b311-cab1fa1649e9_1200x756.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":756,"width":1200,"resizeWidth":null,"bytes":null,"alt":"","title":"","type":null,"href":null,"belowTheFold":true,"topImage":true,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" fetchpriority="high" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Is this time to rejoice, or is something darker at play?</p><p>To answer this question it is worth asking: Does this new virtue-driven order have anything to do with lifting people out of poverty or ending economic injustice?</p><p>Sadly, it is designed to do very much the opposite.</p><p>As we are coming to see, and as statesmen around the world are beginning to point out, this new order has more in common with oligarchical obsessions with controlling human cattle, and less to do with actually preserving the environment. The thousands of tons of CO2 <a href="https://thebiblefiles.com/2021/11/02/bezos-and-prince-charles-fly-in-private-jets-to-meet-for-a-cup-of-tea-and-complain-about-you-emitting-too-much-co2/">emitted by private jets</a> at Davos and COP26 represents on small aspect of this disingenuity.</p><h3><strong>Obrador Calls out the Rigged Game</strong></h3><p>On October 30, 2021 Mexico’s Former President Lopez Obrador called out this new virulent form of colonialism while presiding over a ceremony in celebration of the ongoing construction of the $6.7 billion high-speed Maya Train now being built in the southern regions of Mexico. </p><p>The project which would dramatically uplift living standards in Mexico by driving the growth of industrial and infrastructure production has fallen far behind schedule due in large part <a href="https://www.macaubusiness.com/court-halts-mexicos-maya-train-over-indigenous-health-rights/">to vast legal battles</a> led by indigenous groups who have been used as proxies by foreign interests to defend Mexico’s ecosystems. In many of the legal cases opposing the project, the argument has made that since several species of insect, fauna and even some leopards will be affected by the new railways, then the project must be ground to a halt and buried.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e64776-a082-4a6b-9e57-779b03907031_1127x848.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e64776-a082-4a6b-9e57-779b03907031_1127x848.jpeg" width="1127" height="848" data-attrs='{"src":"https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a1e64776-a082-4a6b-9e57-779b03907031_1127x848.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":848,"width":1127,"resizeWidth":null,"bytes":null,"alt":"","title":"","type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>In his remarks to a journalist inquiring into the rail project, Obrador <a href="https://www.arout.net/feminism-environmentalism-and-animal-protection-were-created-by-neoliberals-to-hide-looting-amlo/">said</a>:</p><p><em>“One of the things which they [the neoliberals] promoted in the world, in order to loot at ease, was the creation or promotion of the so-called new rights. So, feminism, ecologism, the defense of human rights, the protection of animals was much promoted, including by them. All these causes are very noble, but the intent was to create or boost all these new causes so that we don’t remedy—so that we don’t turn around and see that they were looting the world, so the subject of economic and social inequality would be kept out of the center of debate….The international agencies which supported the neoliberal model, which is a model of pillage where corporations grab national property, the property of the people—these same corporations financed, and continue to finance, environmentalist groups, defenders of ‘liberty.’ ”</em></p><p>Many people have been confused over these remarks since they cannot conceptualize how neoliberal monetarists that have parasitically driven the new age of pillage under globalization would also support such ‘new rights’ groups outlined by Obrador.</p><p>For nations of the global south who feel resentment that their rights to support their people by having their lands and resources kept off limits, they are told not to worry, since streams of money will be showered upon them from on high. Hundreds of billions of dollars worth of monopoly money will be sprayed onto the developing sector as rewards for remaining undeveloped. If that isn’t sufficient, then carbon exchange markets will be set up so that poor nations can sell their un-used carbon quotas to private polluting companies (perhaps the same companies controlling the African cobalt mines which seek a monopoly in controlling the renewable energy sector). That is another way they can make money which at least can keep them warm at night as kindling since the world’s poor will not have to worry about having nature-killing hydro electric dams mucking up their pristine environments.</p><p>As President Obrador has alluded to, today’s billionaire-funded conservation movement simply seeks to take earth’s ecosystems out of bounds of any human economic activity under a new global feudal system of controls.</p><p>Even the indigenous populations which such billionaires profess to admire as role models for global “good behavior” are being monetized by these new green indices, with monetary values being placed not only on keeping land and water untouched, but also the very cultural ecosystems of indigenous groups around the world receiving dollar values which wealthy green financiers will somehow be able to invest into. To the degree that such immutably fixed patterns of indigenous lifestyles remain unchanged by the toxic pollution of modern technology or infrastructure, the more these eco-assets will be worth for whomever professes to invest in them. This may not be scientific but it is sick.</p><p>The term ‘feudal’ is in no way used for hyperbolic purposes, as we can see a stark parallel to the 12th century Europe, except that today’s aspiring feudal lords manage such companies as Blackrock, Vanguard, Google, Microsoft, Amazon and State Street and seek to punish all serfs from infringing on properties which only the nobility may control. Blackrock alone manages over $9 trillion in assets and $21.6 trillion in technology platforms and along with Vanguard <a href="https://strangesounds.org/2021/07/blackrock-is-buying-up-us-homes-like-no-tomorrow-real-estate-market-housing.html">is fast becoming</a> one of the largest real estate owners in the USA with Bill Gates having recently become the largest owner of American farmland.</p><h3><strong>The Deeper Imperial Roots of Conservationism</strong></h3><p>With this vast imperial land grab in mind, one should not be surprised to discover that the modern conservation movement actually finds its origins not in Greenpeace activists fighting poachers as myth makers have cooked up, but rather in the bowels of the British Empire. It was this empire that innovated “nature conservation” regions in India during the late 19th century specifically to keep the poor of India under control after having destroyed India’s once powerful textile sector. The practice was applied across India during the greatest density of famines struck southern India in 1876 killing tens of millions. It was amidst this darkness that British Imperial overlords took the opportunity to create “The Imperial Forestry Department’ in 1876 putting two fifths of India’s lands under “protection” and off limits to humans. This ensured no starving subject could use the protected zones which they had relied upon for survival for decades for food, or water.</p><p>The Nazi embrace of both Anglo-American funded science of eugenics on the one side and the Reich’s embrace of nature conservationism were also not unconnected. Herman Goring, who served as Minister for German Forests believed in a poisonous worldview that held that: 1) nature is pure and thus good due to its pure unchanging natural order while 2) humanity is impure and thus un-natural due to our aspirations for progress. This dangerous equation resulted in seemingly innocent programs launched by the Fuhrer and Goring to cleans the German ecosystems of all foreign and thus un-natural fauna and flora in order to return the forests of Germany to their supposedly pure pre-industrial states. The worship of nature was an integral part of the new master race and the weeding out of impurities extended itself to human genetics following racial theories advanced by British eugenicists and anthropologists.</p><h3><strong>Julian Huxley’s New Eugenics Revolution</strong></h3><p>Upon Hitler’s defeat, the repackaging of eugenics took the form of British Eugenics Society Vice President Julian Huxley’s outline in the founding Manifesto for UNESCO <a href="https://ia801704.us.archive.org/25/items/huxley-unesco-its-purpose-and-philosophy/huxley%20unesco%20its%20purpose%20and%20philosophy.pdf">where he said</a>:</p><p><em>“At the moment, it is probable that the indirect effect of civilization is dysgenic instead of eugenic, and in any case it seems likely that the dead weight of genetic stupidity, physical weakness, mental instability and disease proneness, which already exist in the human species will prove too great a burden for real progress to be achieved. Thus even though it is quite true that any radical eugenic policy will be for many years politically and psychologically impossible, it will be important for UNESCO to see that the eugenic problem is examined with the greatest care and that the public mind is informed of the issues at stake so that much that is now unthinkable may at least become thinkable.”</em></p><p>Putting this new eugenics into practical action <a href="https://www.strategic-culture.org/news/2021/05/24/how-the-unthinkable-became-thinkable-eric-lander-julian-huxley-and-the-awakening-of-sleeping-monsters/">took on many heads of a hydra</a> in the post WWII years. The particular hydra head most relevant to the thrust of this article took the form of another project Julian created in 1948 called the International Union for the Conservation of Nature (IUCN) followed soon thereafter by the World Wildlife Fund (WWF) in 1961 which he co-founded alongside two misanthropic princes named Philip Mountbatten and Bernhardt of the Netherlands.</p><p>Between 1959 and 1962 Julian had risen to become president of the British Eugenics Society and had put the finishing gloss on a new field of scientific misanthropic theology which he dubbed ‘Transhumanism’ alongside a Jesuit collaborator <a href="https://www.strategic-culture.org/news/2021/10/26/pierre-teilhard-de-chardins-transhumanism-and-the-cult-of-the-fourth-industrial-revolution/">named Pierre Teilhard de Chardin.</a></p><p>If you haven’t guessed, Transhumanism was merely another form of re-packaged eugenics serving the spiritual needs of a new priesthood of elitist social engineers that would be expected to manage the gears of a new technocratic feudal machine. This neo-paganism is not intrinsically different from the cultish beliefs of the <a href="https://www.encyclopedia.com/science/encyclopedias-almanacs-transcripts-and-maps/thule-society">Nazi Thule society</a> of the past which gave spiritual direction to the members of Hitler’s government.</p><p>The neo-Malthusian revival that these eugenicists would spearhead through the end of the 1960s took the form of a new array of international <a href="https://www.strategic-culture.org/news/2021/05/31/from-russell-and-hilbert-to-wiener-and-harari-the-disturbing-origins-of-cybernetics-and-transhumanism/">organizations which incorporated systems analysis, and cybernetics</a>, which aimed to control nation states and ecosystems alike. This took the form of the World Economic Forum’s early embrace of the Club of Rome’s computer models outlined by Aurelio Peccei (<a href="https://www.weforum.org/agenda/2019/12/world-economic-forum-davos-at-50-history-a-timeline-of-highlights/">and incorporated into Schwab’s second official Davos meeting in 1973</a>). These new models aimed to impose fixed immutable limits to humanity’s growth potential beyond which no technology or scientific discovery could ever penetrate. The fact that these same multibillionaires managing the overhaul of the world economy as it transitioned into a neo-liberal looting operation were simultaneously funding the growth of this new array of “new rights” groups led by a growing armada of non-governmental organizations, ecology protection and human rights groups is not a coincidence.</p><p>Today’s involvement of both Julian Huxley’s WWF and IUCN (no renamed Conservation International) as partners with the Intrinsic Exchange Group should not make any honest lover of nature in any way comfortable.</p><p>Much more obviously remains to be said both about the history of conservationism, and how it is being used once again to conduct a new age of population control, or how it has been used to disrupt large scale infrastructure projects across the world for over 120 years, or how nature reserves across the global south have supported <a href="https://www.discovermagazine.com/environment/study-shows-colombian-guerrillas-were-guardians-of-the-forest">narco terrorist groups</a>.</p><p>However, for the time being, it is sufficient to note that the world’s developing sector is generally not going to accept being sacrificed on the altar of a new Gaia cult managed by a priesthood of Davos billionaires. </p><p>Based on the momentum we see being driven by the Greater Eurasian Partnership, the Belt and Road Initiative and ambitions from Latin American and African leaders to finally break free of centuries of imperial manipulation, it is becoming increasingly obvious that COP26’s utopic computer models are increasingly breaking down when confronted with the reality of humanity’s creative power to leap outside of the fixed rules of imperial games when a true crisis moves us into action.</p><p>The author delivered a presentation on this topic which <a href="https://youtu.be/HXAfP2-iyPU">can be viewed here.</a></p>

attributes:
{"enclosures":[{"url":"https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc82d3e0d-4161-4de4-b311-cab1fa1649e9_1200x756.jpeg","type":"image/jpeg","length":0}]}


guid: https://htmhell.dev/adventcalendar/2024/22/
title: PSA: Stop using the title attribute as tooltip!
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/22/
hash: �0�im��݂��F�
attributes: {"enclosures":[]}
content:
by Daniela Kubesch<br><p>It's almost 2025, so it's time to stop using the <code>title</code> attribute everywhere. Images, text, buttons, ... you name it, devs really like to put it on any element in sight. Most of the time, people actually want to create a tooltip. You know, that little bubble of information designed to clarify the purpose of otherwise unclear elements, that pops up attached to an element when its receives focus or a user hovers their mouse over it.</p>
<p>The identifying thing about tooltips is that they contain no interactive elements (aka. only plain text), and are always attached to existing interactive elements.<br>
Whenever you want to add interactive elements inside your information bubble, it's not called <em>tooltip</em>, but <em>toggletip</em>. Toggletips can contain semantic markup, rich content and interactive elements, and usually only appear when an element is clicked. The great thing about toggletips is that they're accessible on touchscreens and easier to find and recognise for users with low vision.</p>
<p>So depending on your use case, you need to implement a tooltip or a toggletip.</p>
<p>But let's circle back to the <code>title</code> attribute. Often, people use it to create a tooltip. However, this is not the recommended way to go.</p>
<h2 data-sanitized-id="but-why-i-love-my-title!?">But why, I love my <code>title</code>!?</h2>
<p>It's simple. The <code>title</code> attribute is inaccessible. Users of mobile phones and tablets, users of assistive technologies, and keyboard only users cannot interact with it.<br>
If you want a tooltip, a much better, and accessible, option is using the <code>popover</code> attribute.</p>
<p><strong>Note:</strong> The only place where you should (&amp; must) use the <code>title</code> attribute is on an <code>iframe</code>! See <a href="https://html5accessibility.com/stuff/2021/08/26/named-and-framed/">Steve Faulkner's post</a> for more information.</p>
<h2 data-sanitized-id="how-to-use-popover">How to use <code>popover</code></h2>
<p>Firstly, before we get started, it is always better to display clear, permanently visible information. So, if space permits, do not use tooltips. Instead, provide clear labels and sufficient text. This is particularly important for forms!</p>
<p>However, if you wanna go down that path, the <code>popover</code> attribute provides a starting point for building popover-like interactions on the web. Its purpose is simply to add 'popover/tooltip behaviour'. So we'll use it to create our custom plain-text tooltip.</p>
<p>To start, we just need an interactive element (like a button) which is used to trigger the tooltip, even when navigating with a keyboard only, and a <code>&lt;div&gt;</code> containing the tooltip content.</p>
<p>The <code>&lt;button&gt;</code> is linked to the tooltip with <code>aria-describedby</code>.<br>
The <code>&lt;div&gt;</code> receives the <code>popover</code> attribute and an <code>id</code>.<br>
As the <code>popover</code> attribute just adds behaviour, not semantics, we need to <a href="https://hidde.blog/popover-semantics/">add our own role when it makes sense</a>. Therefore we add <code>role='tooltip'</code> to the <code>&lt;div&gt;</code>.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  There is a</span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>button</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>button<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">aria-describedby</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>tooltip<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>secret<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span> to accessible</span><br><span data-sanitized-class="highlight-line">  HTML!</span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">popover</span> <span data-sanitized-class="token attr-name">role</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>tooltip<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>tooltip<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span>a div is not a button ✨<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<h3 data-sanitized-id="lets-make-it-interactive">Let's make it interactive</h3>
<p>If we would want to create a <em>toggletip</em>, which opens <code>onClick</code>, we could simply add <code>popovertarget="ID"</code> to the <code>&lt;button&gt;</code>, with the <code>id</code> of the toggletip.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line">There is a </span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>button</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>button<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">aria-describedby</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>toggletip<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">popovertarget</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>toggletip<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  secret</span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">to accessible HTML!</span><br><span data-sanitized-class="highlight-line"></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">popover</span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>toggletip<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span>a div is not a button ✨<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<div data-sanitized-class="demo-toggletip">
<p>There is a <button type="button" aria-describedby="toggletip" popovertarget="toggletip" data-sanitized-class="popoverbutton togglebutton">secret</button> to accessible HTML!</p>
<div popover="" data-sanitized-id="toggletip">
  <div data-sanitized-class="tooltip-content">a div is not a button ✨</div>
</div>
</div>
<p>However, if we want our <em>tooltip</em>, that is triggered when the interactive element is hovered or focused, we need JavaScript.<br>
We can display the tooltip by using <code>.hidePopover()</code> and <code>.showPopover()</code>.<br>
If <code>showPopover()</code> is called on an element with the popover attribute that is currently hidden, the element is added to the top rendering layer.</p>
<p>A tooltip usually disappears when hitting the Escape key or when the mouse is moved away from the interactive element.<br>
But it's also important to make sure that the tooltip content is reachable with the mouse pointer. That way, users can copy the text or read it with magnification software.<br>
That's why, with the help of JavaScript, we show the tooltip on <code>mouseover</code> of the interactive element and keep it visible when the tooltip itself is hovered (by also listening to <code>mouseover</code>).<br>
With <code>mouseout</code> we can hide the tooltip as soon as the mouse leaves either the tooltip or the interactive element that triggered it.</p>
<p>To open or close the tooltip with keyboard navigation, we must listen to the <code>focusin</code> and <code>focusout</code> events of the button.<br>
The tooltip must be easy to dismiss (e.g. by pressing the Escape key).<br>
It's also worth noting that tooltips don't actually get the focus themselves. The focus stays on the element that triggered the tooltip.<br>
However, it's content is still read to screen reader users and is accessible by the screen readers virtual cursor.<br>
But remember, in general, if we're showing content automatically when an element receives focus, it's important not to suddenly change context and confuse users.</p>
<h4>Wait, is this new attribute supported?</h4>
<p>Good news! The <code>popover</code> attribute is <a href="https://caniuse.com/?search=popover">supported by all modern browsers</a> with versions released between mid-2023 and 2024 (starting with Safari 17.0, Firefox 125, Chrome 114 and Edge 114).</p>
<h3 data-sanitized-id="looks-bad-though">Looks bad though</h3>
<p>That's why the last thing to do is use CSS to style the tooltip.<br>
If you want to change how the tooltip looks when it's displayed, you can use the <code>:popover-open</code> pseudo-class.</p>
<p>We also need to make sure the tooltip is correctly positioned.<br>
We can use <code>position-anchor</code> and <code>position-area</code> for Chrome and Edge, but they're still in the experimental phase, so we need an alternative for other browsers. The simplest option would be to use a library like <a href="https://floating-ui.com/">Floating UI</a>.</p>

<p>
  There is a
  
  <button type="button" aria-describedby="tooltip" data-sanitized-class="popoverbutton js-button">
      secret
  </button> to accessible HTML!
</p>

<div popover="" role="tooltip" data-sanitized-id="tooltip" data-sanitized-class="js-content">
  <div data-sanitized-class="tooltip-content">
    a div is not a button ✨
  </div>
</div>

<p>And that's it, you just created a custom tooltip!<br>
Find the detailed code in this <a href="https://codepen.io/dnikub/pen/PwYqwJE">CodePen</a>.</p>


guid: yt:video:IBFeM-sa2YY
title: The Hardest Thing: Building and Running the UNIX Kernel from Original Sources
author: ;Dave's Garage
link: https://www.youtube.com/watch?v=IBFeM-sa2YY
hash: ��k �1ͪ�2 ���Mk
attributes:
{"enclosures":[{"url":"https://www.youtube.com/v/IBFeM-sa2YY?version=3","title":"The Hardest Thing: Building and Running the UNIX Kernel from Original Sources","description":"Dave takes you on an adventure where he builds and deploys the 2.11 BSD Kernel on a PDP-11/83.  Free Sample of my Book on the Spectrum: https://amzn.to/3zBinWM\n\nDo you use X?  Follow me on X, where I post frequently!  https://x.com/davepl1968\nAre you old like me?  Follow me on Facebook!  https://www.facebook.com/davepl\n\nCheck out the weekly viewer Q&amp;A, ShoptTalk!:  https://www.youtube.com/@UCtb6a_CnmGbSns9G8W2Ny0w","type":"application/x-shockwave-flash","height":390,"width":640,"thumbnails":["https://i2.ytimg.com/vi/IBFeM-sa2YY/hqdefault.jpg"]}]}


guid: https://htmhell.dev/adventcalendar/2024/23/
title: The devil is in the &amp;lt;details&amp;gt;
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/23/
hash: ��f��jI��W�uF8
attributes: {"enclosures":[]}
content:
by J. Pedro Ribeiro<br><p>Not too long ago, building an accordion component would require you to use a combination of JavaScript and CSS. If you've been around for as long as I have, you might have used a library like <a href="https://jqueryui.com/accordion/">jQuery</a> or <em>Mootools</em>.<br>
If you went <em>"vanilla"</em>, your code would look something like this:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>my-js-accordion<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>span</span><span data-sanitized-class="token punctuation">&gt;</span></span>Learn more about accordions<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>span</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>p</span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>hidden<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Accordions encapsulate content under a heading.<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>span</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<pre data-sanitized-class="language-css"><code data-sanitized-class="language-css"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token selector">.hidden</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token property">display</span><span data-sanitized-class="token punctuation">:</span> none<span data-sanitized-class="token punctuation">;</span> </span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span></code></pre>
<pre data-sanitized-class="language-js"><code data-sanitized-class="language-js"><span data-sanitized-class="highlight-line">document<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">querySelectorAll</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">".my-js-accordion"</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">forEach</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token parameter">accordion</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token operator">=&gt;</span><span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">  accordion<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">querySelector</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">"span"</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">addEventListener</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">"click"</span><span data-sanitized-class="token punctuation">,</span> <span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token parameter">e</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token operator">=&gt;</span><span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">    accordion<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">querySelector</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">"p"</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">.</span>classList<span data-sanitized-class="token punctuation">.</span><span data-sanitized-class="token function">toggle</span><span data-sanitized-class="token punctuation">(</span><span data-sanitized-class="token string">"hidden"</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token punctuation">}</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span><span data-sanitized-class="token punctuation">)</span><span data-sanitized-class="token punctuation">;</span></span></code></pre>
<p>And it would work as you expected:</p>




<div data-sanitized-class="my-js-accordion ex1-js">
  <span>→ Learn more about accordions</span>
  <p data-sanitized-class="hidden">Accordions encapsulate content under a heading.</p>
</div>
<div data-sanitized-class="my-js-accordion ex1-js">
  <span>→ This one was built with JS and CSS</span>
  <p data-sanitized-class="hidden">We needed JavaScript and CSS to make this work. Click the heading again to close it.</p>
</div>
<div data-sanitized-class="my-js-accordion ex1-js">
  <span>→ Each accordion on this example works independently</span>
  <p data-sanitized-class="hidden">For any other advanced feature, more JavaScript will be needed.</p>
</div>

<p>The more adventurous would hack together some <code>input</code> and <code>label</code> elements together. With the help of <code>:checked</code> and some clever<br>
CSS selectors, you could achieve the same visual representation as the one above but without the need for JavaScript.</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>my-css-accordion<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>checkbox<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>accordion1<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>accordion1<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>→ Learn more about accordions<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span>Accordions encapsulate content under a heading.<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<pre data-sanitized-class="language-css"><code data-sanitized-class="language-css"><span data-sanitized-class="token selector">.my-css-accordion input[type="checkbox"],<br>.my-css-accordion p</span> <span data-sanitized-class="token punctuation">{</span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token property">display</span><span data-sanitized-class="token punctuation">:</span> none<span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span><br><span data-sanitized-class="highlight-line"></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token selector">.my-css-accordion input[type="checkbox"]:checked + label + p</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token property">display</span><span data-sanitized-class="token punctuation">:</span> block<span data-sanitized-class="token punctuation">;</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span></code></pre>
<p>And it would be visually the same as the previous example:</p>



<div data-sanitized-class="my-css-accordion my-js-accordion">
  
  <label for="accordion1">→ Learn more about accordions</label>
  <p>Accordions encapsulate content under a heading.</p>
</div>
<div data-sanitized-class="my-css-accordion my-js-accordion">
  
  <label for="accordion2">→ This one was built without JavaScript</label>
  <p>Only CSS and HTML!</p>
</div>
<div data-sanitized-class="my-css-accordion my-js-accordion">
  
  <label for="accordion3">→ Same looks, same behaviour</label>
  <p>However, the code is slightly harder to maintain</p>
</div>
<p>These techniques work but there have some disadvantages: not only they're hard to maintain, they're also not accessible, and their reliance on JavaScript makes them not the ideal candidate for a modern web application.<br>
In summary, another case of <a href="https://www.htmhell.dev/">HTMLHell</a>.</p>
<h2 data-sanitized-id="here-comes-a-new-challenger">Here comes a new challenger</h2>
<p>Since 2020, all major browsers <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details#browser_compatibility">support</a> the <code>&lt;details&gt;</code> and its companion <code>&lt;summary&gt;</code> elements. Combined, they replace the need for JavaScript and CSS hacks to create an accordion component.<br>
We use the following syntax:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>details</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>summary</span><span data-sanitized-class="token punctuation">&gt;</span></span>Your heading goes here<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>summary</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span>Any content you like goes below the summary tag.<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span>As many elements as you need.<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>p</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>details</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>And it will work just like the previous examples, but with some added benefits:</p>
<ul>
<li>Less code ✅</li>
<li>Fully accessible ✅</li>
<li>Works without JavaScript ✅</li>
<li>No need for hacks ✅</li>
<li>Fully stylable ✅</li>
</ul>
<p>As seen below:</p>



<details data-sanitized-class="styled">
  <summary>Your heading goes here</summary>
  <p>Any content you like goes below the summary tag.</p>
  <p>As many elements as you need.</p>
</details>
<details data-sanitized-class="styled">
  <summary>This is the second heading</summary>
  <p>Any content you like goes below the summary tag.</p>
  <p>As many elements as you need.</p>
</details>
<details data-sanitized-class="styled">
  <summary>And the third entry it's here</summary>
  <p>Any content you like goes below the summary tag.</p>
  <p>As many elements as you need.</p>
</details>
<p>On the example above, each <code>&lt;details&gt;</code> element works independently of each other. But what if you want them to behave like true accordions, where only one can be opened at a time?</p>
<h2 data-sanitized-id="one-more-thing-exclusive-accordions">One More Thing... Exclusive Accordions</h2>
<p>Not too long ago, the <code>name</code> attribute was added to the <code>details</code> element.<br>
Similarly to the usage in the <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio">radio input</a>, it allows you to group multiple elements together. This means we can have <em>exclusive</em> accordions: when only one can be opened at a time.</p>
<p>Here is an example of the usage:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>details</span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>my-accordion-group<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>...<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>details</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>details</span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>my-accordion-group<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>...<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>details</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>details</span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>my-accordion-group<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>...<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>details</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>Give the same <code>name</code> attribute to all the <code>details</code> elements you want to group together and they'll work as expected:</p>



<details name="group" data-sanitized-class="styled">
  <summary>3 separate entries</summary>
  <p>First block content.</p>
  <p>End of first block.</p>
</details>
<details name="group" data-sanitized-class="styled">
  <summary>Only one can be opened at a time</summary>
  <p>Second block content.</p>
  <p>End of second block.</p>
</details>
<details name="group" data-sanitized-class="styled">
  <summary>Still, no JS needed!</summary>
  <p>Third block content.</p>
  <p>End of third block.</p>
</details>
<p><strong>Note</strong>: It's worth highlighting that exclusive accordion come with some <em>drawbacks</em>, including poor UX on keyboard navigation and reduced usability for screen readers. Eric Eggert wrote about <a href="https://yatil.net/blog/exclusive-accordions">these issues</a>, offering some solutions and insights that are worth reading.</p>
<h2 data-sanitized-id="take-it-to-the-next-level">Take it to the next level</h2>
<p>Recently, Chrome 131 <a href="https://developer.chrome.com/blog/styling-details">added support</a> to new ways you can style both <code>&lt;details&gt;</code> and <code>&lt;summary&gt;</code> elements. Still early days but the future looks bright!<br>
Combine these features with some creative styling and you can create really complex components with accessibility and scalability built-in.</p>
<p>Further reading and examples:<br>
<a href="https://codepen.io/jpedroribeiro/pen/YzmxNYx">Code snippets</a> | <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details">MDN</a> | <a href="https://caniuse.com/details">Can I use</a> | <a href="https://web.dev/learn/html/details">web.dev</a></p>


guid: 6165d5e4ab2c8b5f79b5d82e:6165f805cc4a70035862ada3:67697efab1fe3a469fdf00a2
title: The new Alberta Bill of Rights won't protect much
author: ;Lisa P
link: https://www.rightsprobe.org/read/the-new-alberta-bill-of-rights-wont-protect-much
hash: �_a�.K����2�d�
content:
<p data-sanitized-class="">By Bruce Pardy | Special to the National Post</p><p data-sanitized-class="">In late November, the Alberta legislature <a href="https://www.assembly.ab.ca/assembly-business/bills/bill?billinfoid=12046&amp;from=bills"><span>passed</span></a> its newly improved Bill of Rights. The bill is a signature <a href="https://x.com/ABDanielleSmith/status/1851011932087783519"><span>plank</span></a> of Premier Danielle Smith’s United Conservative government. New provisions purport to guarantee rights to hold property, own firearms and prohibit vaccine mandates. Unfortunately, the bill may not do any of those things. In the end, it’s not likely to amount to a hill of beans.</p><p data-sanitized-class="">First enacted in 1972, the Alberta Bill of Rights has never been a bulwark against state action. Much like the Canadian Bill of Rights, courts have largely <a href="https://www.canlii.org/en/ab/abkb/doc/2023/2023abkb453/2023abkb453.html"><span>sidelined</span></a> it. Contrary to what some Albertans may expect, their newly amended Bill of Rights does not grant ironclad rights. At least four problems stand in the way.</p><p data-sanitized-class="">First problem: Like the Canadian Bill of Rights, the Alberta Bill of Rights is a statute and not a constitutional enactment like the Charter of Rights and Freedoms. No statute can limit the power of the legislature to pass new legislation that overrides, amends or repeals it. Future governments can explicitly breach the Bill of Rights. In fact, that’s what it <a href="https://docs.assembly.ab.ca/LADDAR_files/docs/bills/bill/legislature_31/session_1/20230530_bill-024.pdf#page=6"><span>says</span></a>: “The Legislature may expressly declare in an Act that a law of Alberta operates notwithstanding this Act.”</p><p data-sanitized-class="">That could at least pose a political impediment. Governments don’t like to announce that they are breaching rights. But transparency might not even be required. Under the Canadian Bill of Rights, courts have upheld statutes merely on the grounds that they had a “<a href="https://www.canlii.org/en/ca/scc/doc/1986/1986canlii24/1986canlii24.html"><span>valid federal objective</span></a>,” which is not a difficult threshold to meet. Only constitutions can “entrench” rights against future legislative action.</p><p data-sanitized-class="">The UCP could have made the provincial Bill of Rights part of the Alberta Constitution. Under Canada’s <a href="https://laws.justice.gc.ca/eng/Const/page-13.html#h-59"><span>Constitution Act of 1982</span></a>, provincial legislatures can amend their constitutions unilaterally. (Yes, Canadian provinces have their own constitutions.) A future Alberta legislature, of course, could amend it in turn, so nothing can be written in stone. But it would be trickier to legislate around a provincial constitution than a mere statute.</p><p data-sanitized-class="">Second problem: Some of the amendments don’t mean much. Rights protect against the law’s interference. But one section says that people have the right to possess firearms “in accordance with the law.” What’s the point of that? Not to mention that the federal government, to which the Alberta Bill of Rights does not apply, has jurisdiction to impose restrictions on guns. Another section says that people have the right to property “except to the extent authorized by law and except by due process of law.” That is, you have property rights until the law takes them away, which isn’t saying much.</p><p data-sanitized-class="">During COVID, courts held that measures like lockdowns and vaccine requirements did not violate Charter rights — or if they did, that they were permissible under the Charter’s reasonable limits clause. Smith has <a href="https://www.cbc.ca/news/canada/edmonton/proposed-changes-to-alberta-bill-of-rights-would-prohibit-vaccinations-without-consent-1.7366062"><span>said</span></a> that the unvaccinated were “the most discriminated-against group” she had seen in her lifetime. She had proposed to amend the <a href="https://calgary.ctvnews.ca/alberta-s-premier-wants-vaccine-status-to-be-a-human-right-critics-concerned-about-problems-it-could-pose-1.6113308"><span>Alberta Human Rights Act</span></a> (not the Bill of Rights) to prohibit private businesses and the government from discriminating on the grounds of vaccination status. But the UCP instead decided to amend the Bill of Rights, which applies to government only. They may have gotten cold feet about preventing discrimination in the private sector.</p><p data-sanitized-class="">The Alberta Bill of Rights includes a section on vaccines, but it may not change much. It <a href="https://docs.assembly.ab.ca/LADDAR_files/docs/bills/bill/legislature_31/session_1/20230530_bill-024.pdf#page=6"><span>says</span></a> that everyone has the right “not to be subjected to, or coerced into receiving, a vaccine without the consent of that individual.” The right to refuse medical treatment already exists, along with the right to give informed consent. “Not to be subjected to” doesn’t add anything. If you went to get a vaccine, signed the page and stuck out your arm, you gave legal consent. You may have done so reluctantly, but that does not vitiate your consent. (Whether your consent was informed is another question, but that is between you and the health-care practitioner who gave the shot.)</p><p data-sanitized-class="">What does “coerced into receiving” mean? Does it mean that governments can’t create vaccine requirements for spaces, services, schools or employment? Maybe, but maybe not. Coercion means being made to do something by force or the threat of force. Imprisonment is coercive. Being held down on a gurney is coercive. COVID authorities insisted that vaccine mandates and passports were not coercive because people had choices, even if those choices were bad. At best, the section is not clear. Even Alberta Justice Minister Mickey Amery, at a <a href="https://x.com/TrueNorthCentre/status/1851307491088290107"><span>press conference</span></a> in late October, was unwilling to say whether under the Bill of Rights no one would be required to get a vaccine. The bill could instead have said that everyone has a right to be unvaccinated to access any space, service, school or employment. Of course, even if it had, future governments could still get around it because the Bill of Rights is a statute, not part of a constitution.</p><p data-sanitized-class="">Third problem: The UCP chose to subject all rights protected by the Bill of Rights to “reasonable limits.” They included a clause that resembles the infamous “reasonable limits” clause in the <a href="https://laws.justice.gc.ca/eng/Const/page-12.html"><span>Charter</span></a>, upon which courts have relied in numerous cases to uphold legislation that breaches Charter rights.</p><p data-sanitized-class="">Fourth problem: Courts, not legislatures, control what rights mean. Bills of rights appear to give rights to the people, but what they really do is give power to courts. The rights have “internal limits” not identified in the text, especially where language is sparse and vague. No one knows where the line is in practice until the courts say. If the experience with the Charter is any indication, the rights set out in the Alberta Bill of Rights may not mean what its drafters intended.</p><p data-sanitized-class="">Smith deserves credit for her aspiration to give Albertans rights to resist state intrusions. But the proof of the pudding is in the eating. In this era of the hyperactive administrative state, keeping government at bay requires bold action that disrupts the prevailing order. The new Alberta Bill of Rights is more likely to be just one more signpost on the road to perdition.</p><p data-sanitized-class=""><a href="https://nationalpost.com/opinion/bruce-pardy-the-new-alberta-bill-of-rights-wont-protect-much" target="_blank">For the original version of this commentary, see the publisher’s website here</a>.</p>





















  
  



<hr>


  <p data-sanitized-class=""><em>Bruce Pardy is the executive director of </em><a href="https://www.rightsprobe.org/" target="_blank"><span><em>Rights Probe</em></span></a><em> and a professor of law at Queen’s University.</em></p><p data-sanitized-class="">Follow our journey.</p><p data-sanitized-class="">Subscribe to our newsletter: <a href="mailto:rightsprobe@protonmail.com?" target="_blank">rightsprobe@protonmail.com</a></p>

attributes:
{"enclosures":[{"url":"https://images.squarespace-cdn.com/content/v1/6165d5e4ab2c8b5f79b5d82e/1736778920033-27F1DFST91UEILN3BWCR/52828504356_c104623d98_c.jpg?format=1500w","title":"The new Alberta Bill of Rights won't protect much","type":"image/jpeg","medium":"image","height":593,"width":800}]}


guid: https://htmhell.dev/adventcalendar/2024/24/
title: The search input: They almost got it right
author: ;Manuel Matuzovic
link: https://htmhell.dev/adventcalendar/2024/24/
hash: mȍ�g���5�<xbP�a
attributes: {"enclosures":[]}
content:
by Steve Frenzel<br><p>This example is a classic - in a bad way - and can cause quite some confusion for users of assistive technology (AT). But it's also very easy to fix! It's the <code>&lt;input&gt;</code> element missing its dear friend, the <code>&lt;label&gt;</code>... 😭</p>
<h2 data-sanitized-id="bad-code">Bad code</h2>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">placeholder</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>Search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span></code></pre>
<p>It's not relevant for this article, but here's the "button" to submit the content of the <code>&lt;input&gt;</code>:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>div</span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>_icon_1f3oz_44<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>span</span> <span data-sanitized-class="token attr-name">title</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span><span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>gl-icon__wrapper<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">role</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>img<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>svg</span> <span data-sanitized-class="token attr-name">class</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>gl-icon<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">      <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>use</span> <span data-sanitized-class="token attr-name"><span data-sanitized-class="token namespace">xlink:</span>href</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>#search<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>use</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">    <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>svg</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>span</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>div</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>The cherry on top: It's not even wrapped inside a <code>&lt;form&gt;</code> element, so it's very likely that the submit is handled via JavaScript. 🍒</p>
<p>So what's the issue with this <code>&lt;input&gt;</code> element? In theory, having a <code>placeholder</code> instead of a <code>&lt;label&gt;</code> element is only a temporary solution! Once you've typed something, the placeholder gets replaced with whatever you've typed.</p>
<p>This could be a big issue for screen reader users. Let's check how different screen readers handle this kind of situation with different browsers.</p>
<p>You can do it yourself here: <a href="https://codepen.io/stvfrnzl/pen/jENPqxb">The search input: They almost got it right (bad code example)</a></p>
<p>What I checked was if the placeholder value still gets announced after typing something. I tested with macOS Sequoia 15.1.1 on December 1, 2024 using the latest versions of screen readers and browsers.</p>
<table>
<thead>
<tr>
<th></th>
<th>Google Chrome</th>
<th>Mozilla Firefox</th>
<th>Microsoft Edge</th>
<th>Apple Safari</th>
</tr>
</thead>
<tbody>
<tr>
<td>JAWS</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>n/a</td>
</tr>
<tr>
<td>NVDA</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>n/a</td>
</tr>
<tr>
<td>Narrator</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>n/a</td>
</tr>
<tr>
<td>VoiceOver</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
</tr>
</tbody>
</table>
<p>Only VoiceOver had issues announcing announcing the <code>placeholder</code> attribute (except when using Firefox), which might be a bug! This issue has been mentioned back in 2017 for iOS at <a href="https://bugs.webkit.org/show_bug.cgi?id=170334">WebKit Bugzilla</a> and I wonder how long it's been present again on MacOS since then...</p>

<h2 data-sanitized-id="advantages-of-using-lesslabelgreater-instead-of-placeholder">Advantages of using <code>&lt;label&gt;</code> instead of <code>placeholder</code></h2>
<p>Even though almost all screen readers in this list seem to handle a missing <code>&lt;label&gt;</code> and a present <code>label</code> attribute well, there are still many reasons why you should do it the other way around:</p>
<h3 data-sanitized-id="reduce-cognitive-load">Reduce cognitive load</h3>
<p>Having a form with many inputs, no labels and only placeholders will make it very hard to remember the required information. This lacking clarity can place a huge burden on people having trouble to recall many things at once.</p>
<p>It will also make it harder to check against the requirements of the inputs, as the placeholder acting as a hint has been replaced with what you've typed. Therefore errors will be harder to fix, as you can't easily check against the requirement anymore.</p>
<p>Using a descriptive <code>&lt;label&gt;</code> can avoid these issues, as it's persistent.</p>
<h3 data-sanitized-id="avoid-flaky-browser-and-screen-reader-support">Avoid flaky browser and screen reader support</h3>
<p>Some older browsers might hide the placeholder text once the input is focused. And as you read earlier, some screen readers might have issues with a <code>placeholder</code> instead of a <code>&lt;label&gt;</code>.</p>
<p>Using a descriptive <code>&lt;label&gt;</code> can avoid these issues, as it has <a href="https://caniuse.com/mdn-html_elements_label">great browser support</a> and will be <a href="https://a11ysupport.io/tech/html/label_element">recognized by screen readers</a> as well.</p>
<h3 data-sanitized-id="increase-touch-target-size">Increase touch target size</h3>
<p>A <code>placeholder</code> is inside the text input. When using a mouse, this will be the only area you can click to focus this input. People with tremors might have a hard time doing that, depending on the size of the inputs and how close they're to each other.</p>
<p>Using a descriptive <code>&lt;label&gt;</code> can avoid these issues, as clicking it will focus the input.</p>
<p>For more reasons why, check out Adam Silver's article listed under <a href="https://htmhell.dev/adventcalendar/2024/24/#further-reading">Further reading</a>.</p>
<p>Enough of the theory, let's check out some working examples! You can find them here: <a href="https://codepen.io/stvfrnzl/pen/VYZLjLR">The search input: They almost got it right (good code examples)</a></p>
<h2 data-sanitized-id="1-good-code-with-explicit-label">1. Good code with explicit label</h2>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Search:<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span></code></pre>
<p>This common approach provides a visual cue for the <code>&lt;input&gt;</code> element and can be processed by AT.</p>
<p>The <code>&lt;input&gt;</code> is now of <code>type="search"</code>, which should expose it as "searchbox" in the <a href="https://developer.mozilla.org/en-US/docs/Glossary/Accessibility_tree">accessibility tree</a>.</p>
<p>Clicking the label will also focus the input. This is a nice helper for sighted users and people with motor disabilities, as the target area for clicking has been increased.</p>
<p>Additionally, you can target this input now with CSS! This way you can check yourself that you implemented semantic and accessible HTML:</p>
<pre data-sanitized-class="language-css"><code data-sanitized-class="language-css"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token selector">input[type="search"]</span> <span data-sanitized-class="token punctuation">{</span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token comment">/* Your code */</span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token punctuation">}</span></span></code></pre>
<p><code>for="search-input"</code> of <code>&lt;label&gt;</code> is referencing <code>id="search-input"</code> of <code>&lt;input&gt;</code>, so they're now "connected", if you will. AT should always announce the label of this input, no matter what you've typed.</p>
<p>The <code>name</code> attribute is useful when submitting the form, so you know which <code>&lt;input&gt;</code> contains what information.</p>
<p>If, for whatever reason, you don't want to show the visual label, you could also do it this way:</p>
<h2 data-sanitized-id="2-good-code-using-aria-label">2. Good code using <code>aria-label</code></h2>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">aria-label</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>Search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>button</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>submit<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Search<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>There's no direct connection between <code>&lt;input&gt;</code> and <code>&lt;button&gt;</code>, but it is still of <code>type="search"</code> and has the accessible name "Search", which should give enough clues for AT users.</p>
<p>However, the only visual clue here is the button. So make sure it's close to the input, in order for people to make the mental connection. Not a fan of it though, as I would rather connect the two elements with each other:</p>
<h2 data-sanitized-id="3-good-code-using-aria-labelledby">3. Good code using <code>aria-labelledby</code></h2>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">aria-labelledby</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>button</span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>submit<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Search<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>button</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>Still no visual cue, but whenever we change the <code>&lt;button&gt;</code> name, the accessible name of the <code>&lt;input&gt;</code> will change accordingly. The power of the <code>aria-labelledby</code> attribute! 💪 There's one more approach:</p>
<h2 data-sanitized-id="4-ok-code-with-implicit-label">4. OK code with implicit label</h2>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  Search:</span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>As the <code>&lt;input&gt;</code> is wrapped inside the <code>&lt;label&gt;</code> element, they are both connected now. However, AT support for this solution might not be as good as an explicit label (see <a href="https://www.w3.org/WAI/tutorials/forms/labels/#associating-labels-implicitly">Associating labels implicitly</a>).</p>
<h2 data-sanitized-id="going-the-extra-mile-using-landmarks">Going the extra mile using landmarks</h2>
<p>To make it even easier for AT users to access the search functionality on your website, you could add <code>role="search"</code> to your <code>&lt;form&gt;</code> element, or wrap it inside the <code>&lt;search&gt;</code> <a href="https://developer.mozilla.org/en-US/blog/aria-accessibility-html-landmark-roles/">landmark</a>:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>form</span> <span data-sanitized-class="token attr-name">role</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Search:<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>form</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>This should announce the container as "search" in the accessibility tree, same goes for this approach:</p>
<pre data-sanitized-class="language-html"><code data-sanitized-class="language-html"><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>search</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>label</span> <span data-sanitized-class="token attr-name">for</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span><span data-sanitized-class="token punctuation">&gt;</span></span>Search:<span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>label</span><span data-sanitized-class="token punctuation">&gt;</span></span></span><br><span data-sanitized-class="highlight-line">  <span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;</span>input</span> <span data-sanitized-class="token attr-name">id</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search-input<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">name</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token attr-name">type</span><span data-sanitized-class="token attr-value"><span data-sanitized-class="token punctuation attr-equals">=</span><span data-sanitized-class="token punctuation">"</span>search<span data-sanitized-class="token punctuation">"</span></span> <span data-sanitized-class="token punctuation">/&gt;</span></span></span><br><span data-sanitized-class="highlight-line"><span data-sanitized-class="token tag"><span data-sanitized-class="token tag"><span data-sanitized-class="token punctuation">&lt;/</span>search</span><span data-sanitized-class="token punctuation">&gt;</span></span></span></code></pre>
<p>When people are traversing the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model">DOM</a> using landmarks, this could help them find the search input on your website much quicker. And even if it's not announced as "search", you'd still have a very descriptive <code>&lt;label&gt;</code> element and a user input of <code>type="search"</code>.</p>
<h2 data-sanitized-id="conclusion">Conclusion</h2>
<p>All in all, this wasn't a very complex or time consuming fix and it will help people a lot to locate and use the search input on your website. Different approaches are possible, like using an implicit or explicit label, or even no visual label at all!</p>
<p>I personally like to use an explicit label, as it's a common pattern AND it's something you could target with CSS. Don't use an <code>&lt;input&gt;</code> element without a <code>&lt;label&gt;</code> or <code>aria-label</code>, as it comes with plenty of benefits for you and your users.</p>
<p>And wrapping an input inside a <code>&lt;form role="search"&gt;</code> or the <code>&lt;search&gt;</code> landmark will provide an extra hint for them, which could make it even easier to get there. So don't forget to always pair <code>&lt;input&gt;</code> with a <code>&lt;label&gt;</code>, they belong together and are the ultimate couple! ❤️</p>
<h2 data-sanitized-id="further-reading">Further reading</h2>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/search"><code>&lt;input type="search"&gt;</code></a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input"><code>&lt;input&gt;</code>: The HTML Input element</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/search"><code>&lt;search&gt;</code>: The generic search element</a></li>
<li><a href="https://a11ysupport.io/">Accessibility Support: Will your code work with assistive technologies?</a></li>
<li><a href="https://adamsilver.io/blog/the-problem-with-placeholders-and-what-to-do-instead/">The problem with placeholders and what to do instead</a></li>
</ul>


guid: CCAL-118scal-2024-12-26
title: Senate Calendars, DAILY - Senate Calendars for December 26, 2024 - 118th Congress, 2nd Session
link: https://www.govinfo.gov/app/details/CCAL-118scal-2024-12-26
hash: � �32@8b���8|n
tags: #Proceedings of Congress and General Congressional Publications
attributes: {"enclosures":[]}
content:
<h2>Content Files</h2>
 <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-26/pdf/CCAL-118scal-2024-12-26.pdf">PDF</a><br>
 
 
 
 
 <h2>Metadata download</h2>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-26/mods.xml">Descriptive Metadata (MODS)</a><br>
 <a href="https://www.govinfo.gov/metadata/pkg/CCAL-118scal-2024-12-26/premis.xml">Preservation Metadata (PREMIS)</a><br>
 <h2>All Content and Metadata files, including granules</h2> <a href="https://www.govinfo.gov/content/pkg/CCAL-118scal-2024-12-26.zip">ZIP</a>


guid: https://canadianpatriotreview.substack.com/p/anglotopian-dreams-the-ideational
title: Anglotopian Dreams: The Ideational Relationship Between Science Fiction and the Anglophile Milieu
author: ;Canadian Patriot Review
link: https://canadianpatriotreview.substack.com/p/anglotopian-dreams-the-ideational
hash: �~s��M6"�(��Ǥ
content:
<h2>By Paul &amp; Phillip Darrell Collins</h2><h2><strong>The Waking Dreams of Sci-fi “Prophets” and Sociopolitical Utopians</strong></h2><p>There is an interesting ideational nexus where sociopolitical Utopianism and the science fiction literary genre intersect. While science fiction has not always been taken seriously as a literary genre, it has acted as a repository for several of the ideas espoused by serious sociopolitical Utopians. The ideational relationship has been largely a reciprocal one where Utopian theoreticians influence sci-fi authors and vice versa. This ideational relationship is partially attributable to a shared spiritual heritage. Nowhere is this shared heritage more demonstrable than with Cecil Rhodes’ Anglophile network and the “prophets” of British science fiction.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c0a288-4d82-44f9-b3f7-7b4a1d7a88c8_389x303.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3c0a288-4d82-44f9-b3f7-7b4a1d7a88c8_389x303.jpeg" width="389" height="303" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/c3c0a288-4d82-44f9-b3f7-7b4a1d7a88c8_389x303.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":303,"width":389,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":false,"topImage":true,"internalRedirect":null,"isProcessing":false}' alt="" title="" fetchpriority="high" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">Cecil Rhodes</figcaption></figure></div><p>Both were deeply tinctured by a Gnostic cosmological resentment and autotheism. Dissatisfied by the established facts of reality, both inhabited dream worlds where their Utopian fictions reigned supreme. While the likes of Wells, Stapledon, and Clarke rendered this dream world as attainable with colorful prose, the Anglophile network invested its vast reservoirs of political, financial, and social capital in the tangible enactment of that world. Ultimately, both the Anglophile network and the British sci-fi “prophets” maintained the same eschatological hope: an Anglotopia.</p><h2><strong>Fiction’s Revolt Against Fact</strong></h2><p>Traditionally, the binary of fact and fiction has been understood as a dichotomy. On the simplest level, fact can be defined as “that which is” while fiction can be defined as “that which is not.”</p><p>The two conditions are mutually exclusive and never shall the twain meet. Yet, there are those who are so thoroughly seduced by the enticements of their Utopian fictions that they actually attempt to re-sculpt reality to reflect their fantasies. These fantasies are inspired by a virulent cosmological resentment. The fantasizers conflate the cosmos with the postlapsarian ills that afflict it, thereby maligning the created order and lapsing into the same docetistic cosmological attitude espoused by the ancient Gnostics. They only deviate from their ancient antecedents in regards to how they deal with their present habitation.</p><p>Where the ancient Gnostics sought to escape the world, the new Gnostics seek to recreate it. They intend to supplant the facts of established reality with the fictions of their docetistic minds. Because these new Gnostics loathe the cosmos, they reject facts in favor of Utopian fictions. They actively demolish “that which is” in hopes of enshrining “that which is not” as the ultimate reality. They have no desire to believe what they see. Instead, they see what they believe, which is a vaporous schematic for their Utopia. Such a revolt against reality is exemplified by the principles of Hegel’s dialectical logic. Herbert Marcuse condensed these principles into a single relativistic aphorism: “That which is cannot be true” (qutd. in Katsiaficas and Emery, “Critical Theory and the Limits of Sociological Positivism”). Elaborating upon this dictum, Marxist academicians George Katsiaficas and Mary Lou Emery write:</p><p>“In other words, our existing society of racism, genocide, and possible nuclear holocaust cannot be the “truth” of human existence. Truth must lie somewhere else, not in the facts of the given reality, but in the negation or transcendence of those facts. Truth lies in the attempt to go beyond this reality to a better world. Thus, truth lies in our attempt to change the world, in our critique of the established reality.” (Ibid)</p><p>Just as the ancient Gnostics confused the consequences of the Fall with the very act of creation, Katsiaficas and Emery erroneously conflate “racism, genocide, and possible nuclear holocaust” with reality. Instead of recognizing “racism, genocide, and possible nuclear holocaust” as the products of man’s own disordered will, they ascribe such evils to the cosmic order itself. This Gnostic proclivity to associate extraneous evils with the otherwise good creation underpins the Marxist attempt to “go beyond this reality to a better world.” Instantiation of the Marxist fiction, namely a classless Utopia, stipulated the negation of the “facts of the given reality.” Because the “facts” (genocide, racism, and nuclear holocaust) were allegedly inseparable from reality, all that constituted reality had to be negated. The negation of reality typically entailed the imprisonment and/or extermination of any opposition. Again, the Hegelian aphorism declares: “That which is cannot be true.” On the Hegelian view, truth could be found not in established reality, but in the “attempt to change the world.” Once established reality was negated, the Marxists were free to populate the world with simulacra, bodied forth by grotesque parodies of once legitimate institutions.</p><p>This anti-reality crusade also underpins the massive Utopian project of the global oligarchical establishment, which, incidentally, created communism as an instrument for the consolidation of their power. Like their Marxist progenies, the global oligarchs uphold the Hegelian mandate: “That which is cannot be true.” For the global oligarchs, that which is (a world of sovereign nation-states) cannot be true. On the globalist view, evil is imputed not to man’s disordered will, but to the social cosmos. Because the sovereign nation-state is the chief unit by which the social cosmos is ordered, it must be swept away. Truth is found in the globalist attempt to change the world, which involves amalgamating nations into a single supra-national entity. Such a global arrangement has been euphemistically dubbed a New World Order.</p><p>It is a foregone conclusion that such anti-reality crusades are doomed to failure. After all, the crusaders reject the structure of reality. This rejection compels the crusaders to create a second reality or, as Eric Voegelin has called it, a “dream world.”</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26770e15-cef2-444d-8207-eda15bf14a6a_750x281.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26770e15-cef2-444d-8207-eda15bf14a6a_750x281.jpeg" width="750" height="281" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/26770e15-cef2-444d-8207-eda15bf14a6a_750x281.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":281,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">Eric Voegelin</figcaption></figure></div><p>The dream world is a Utopian schematic that the anti-reality crusader strives to impose upon reality through various forms of activism and political programs. For the globalists, building the dream world includes the enacting of economically deleterious trade agreements, reversing growth in industrialized nations, culling “surplus populations” through various Malthusian schemes, imposing technological apartheid on developing nations, and eroding national sovereignty through dubious international treaties. It is the globalist’s eschatological conviction that these programs operating in an alchemical synergy will expunge this ontologically deficient world’s chief aberration: heterogeneity.</p><p>Charlie Skelton summarizes the globalist aversion to heterogeneity: “The ideology of globalization perceives otherness as an evil to be overcome. Constantly merging and acquiring, dominating and consolidating, to the point of singularity” (“Silicon Assets”).</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d92327a-35bd-4174-a99d-a8f678e57e9d_750x374.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d92327a-35bd-4174-a99d-a8f678e57e9d_750x374.png" width="750" height="374" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/0d92327a-35bd-4174-a99d-a8f678e57e9d_750x374.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":374,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>The dream world envisioned by the globalists is one bereft of differentiated beings. For the globalist, “otherness” is a corruption. Whether conveyed tacitly or explicitly, this animus toward differentiation stems from a distinctly monistic normative conviction: All must be one. Through the eyes of the oligarchs, differentiation is symptomatic of a cosmic corruption. The Eschaton envisioned by humanity’s aspirant hegemons is “pure” because it is undifferentiated. It is, in essence, an immanentized version of the Gnostic <em>Pleroma</em>.</p><p>On the globalist view, an outward expression of the cosmic corruption allegedly afflicting humanity is political and economic differentiation. Differing political and economic systems confound the elite’s efforts to amalgamate nation-states into a single, interdependent system. For the elite, such a world order would constitute a new Eden. Supposedly, under such Utopian conditions, man will undergo a glorious transfiguration and achieve apotheosis. To that end, the globalists have created several organizations and agencies devoted to promoting world government.</p><h2><em><strong>Pax Britannia</strong></em><strong>: The Dream World of Cecil Rhodes</strong></h2><p>Arguably, this crusade was, to a sizable extent, inspired by a 19<sup>th</sup>-century Anglophile network. In support of this contention, one needs only to cite the origins of one particular globalist think tank. Chief among the various globalist organizations actively pursuing the homogenization of otherwise disparate political and economic systems is the Council on Foreign Relations (CFR).</p><p>The CFR was merely a stateside branch of the Royal Institute for International Affairs (RIIA) (Quigley 132-33). In turn, the RIIA was founded by the Round Table Groups (132-33). These Round Table Groups owed their existence to a directive presented in the last will and testament of British imperialist Cecil Rhodes. This directive mandated the formation of a secret network committed to the imperialist objectives of the British Empire. Rhodes’ <em>Weltanschauung</em> was inspired by a speech delivered by John Ruskin at Oxford in 1870.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de0d6c-e4cd-4195-bd55-08adbc9e1d74_750x445.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03de0d6c-e4cd-4195-bd55-08adbc9e1d74_750x445.png" width="750" height="445" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/03de0d6c-e4cd-4195-bd55-08adbc9e1d74_750x445.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":445,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Embedded within the body of this speech was the clarion call of a new imperialism. This new imperialism, unlike earlier imperialist models, possessed a foundation of pseudo-morality and social reform. Ruskin was a true believer in this new imperialism and preached its tenets with the fervor of a missionary evangelizing on behalf of the Gospel. Ruskin used his professorship chair of fine arts at Oxford as a pulpit for his evangelization effort. Carroll Quigley elaborates:</p><p><em>“The new imperialism after 1870 was quite different in tone from that which the Little Englanders had opposed earlier. The chief changes were that it was justified on grounds of moral duty and social reform and not, as earlier, on grounds of missionary activity and material advantage. The man most responsible for this change was John Ruskin.</em></p><p><em>Until 1870 there was no professorship of fine arts at Oxford, but in that year, thanks to the Slade bequest, John Ruskin, was named to such a chair. He hit Oxford like an earthquake, not so much because he talked about fine arts, but because he talked also about the empire and England’s downtrodden masses, and above all because he talked about all three of these things as moral issues. Until the end of the nineteenth century the poverty-stricken masses in the cities of England lived in want, ignorance, and crime very much as they have been described by Charles Dickens. Ruskin spoke to the Oxford undergraduates as members of the privileged, ruling class. He told them that they were the possessors of a magnificent tradition of education, beauty, rule of law, freedom, decency, and self-discipline but that this tradition could not be saved, and did not deserve to be saved, unless it could be extended to the lower classes in England itself and to the non-English masses throughout the world. If this precious tradition were not extended to these two great majorities, the minority of upper-class Englishmen would ultimately be submerged by these majorities and the tradition lost. To prevent this, the tradition must be extended to the masses and to the empire.”</em> (130)</p><p>For a group of Oxford undergraduates, Ruskin’s message was a source of inspiration, similar to the way the Torah, the Koran, and the Bible inspired their respective devotees. For better or worse, Ruskin’s new imperialism won disciples.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20a917b-8180-45b9-a188-479ec0dc80cb_750x972.png" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20a917b-8180-45b9-a188-479ec0dc80cb_750x972.png" width="750" height="972" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/d20a917b-8180-45b9-a188-479ec0dc80cb_750x972.png","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":972,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">“Race Patriot” Cecil Rhodes from Punch Magazine lording over Africa</figcaption></figure></div><p>Undergraduate Cecil Rhodes appears to have been the most fanatically devoted of these disciples. Just as the Pope is regarded as the head bishop over the church by Roman Catholics, Quigley regards Rhodes as Ruskin’s chief disciple and the primary minister of the new imperialism. Ruskin’s message of salvation, which permeated the ruling class tradition, inspired Rhodes to undertake several imperialist projects. The fortune generated by these projects would serve as the early financial backbone of the new imperialism. By realizing Ruskin’s utopian vision, Rhodes hoped to see the creation of a world dominated by the English ruling class. Quigley writes:</p><p><em>“Ruskin’s message had a sensational impact. His inaugural lecture was copied out in longhand by one undergraduate, Cecil Rhodes, who kept it with him for thirty years. Rhodes (1853-1902) feverishly exploited the diamond and goldfields of South Africa, rose to prime minister of the Cape Colony (1890-1896), contributed money to political parties, controlled parliamentary seats both in England and in South Africa, and sought to win a strip of British territory across Africa from the Cape of Good Hope to Egypt and to join these two extremes together with a telegraph line and ultimately with a Cape-to-Cairo Railway. Rhodes inspired devoted support for his goals from others in South Africa and in England. With financial support from Lord Rothschild and Alfred Beit, he was able to monopolize the diamond mines of South Africa as DeBeers Consolidated Mines and to build up a great gold mining enterprise as Consolidated Gold Fields. In the middle 1890’s Rhodes had a personal income of at least a million pounds sterling a year (then about five million dollars) which was spent so freely for his mysterious purposes that he was usually overdrawn on his account. These purposes centered on his desire to federate the English-speaking peoples and to bring all the habitable portions of the world under their control. For this purpose Rhodes left part of his great fortune to found the Rhodes Scholarships at Oxford in order to spread the English ruling class tradition throughout the English-speaking world as Ruskin had wanted.”</em> (130-31)</p><p>Rhodes was not the only convert to Ruskin’s Anglophilic evangel. Several other adherents became associated with Rhodes. This network of Ruskin disciples would establish a secret society devoted to the cause of British imperialism and, ultimately, global government. Quigley elaborates:</p><p><em>“Among Ruskin’s most devoted disciples at Oxford were a group of intimate friends including Arnold Toynbee, Alfred (later Lord) Milner, Arthur Glazebrook, George (later Sir George) Parkin, Philip Lyttelton Gell, and Henry (later Sir Henry) Birchenough. These were so moved by Ruskin that they devoted the rest of their lives to carrying out his ideas. A similar group of Cambridge men including Reginald Baliol Brett (Lord Esher), Sir John B. Seeley, Albert (Lord) Grey, and Edmund Garrett were also aroused by Ruskin’s message and devoted their lives to the extension of the British Empire and uplift of England’s urban masses as two parts of one project which they called “extension of the English-speaking idea.” They were remarkably successful in these aims because of England’s most sensational journalist William Stead (1849 – 1912), an ardent social reformer and imperialist, brought them into association with Rhodes. This association was formally established on February 5, 1891, when Rhodes and Stead organized a secret society of which Rhodes had been dreaming for sixteen years. In this secret society Rhodes was to be leader; Stead, Brett (Lord Esher), and Milner were to form an executive committee; Arthur (lord) Balfour, (Sir) Harry Johnston, Lord Rothschild, Albert (Lord) Grey, and others were listed as potential members of a “Circle of Initiates;” while there was to be an outer circle known as the “Association of Helpers” (later organized by Milner as the Round Table organization). Brett was invited to join this organization the same day and Milner a couple of weeks later, on his return from Egypt. Both accepted with enthusiasm. Thus the central part of the secret society was established by March 1891. It continued to function as a formal group, although the outer circle was, apparently, not organized until 1909-1913. This group was able to get access to Rhodes’ money after his death in 1902 and also to funds of loyal Rhodes supporters like Alfred Beit (1853-1906) and Sir Abe Bailey (1864-1940). With this backing they sought to extend and execute the ideals that Rhodes had obtained from Ruskin and Stead. Milner was the chief Rhodes Trustee and Parkin was Organizing Secretary of the Rhodes Trust after 1902, while Gell and Birchenough, as well as others with similar ideas, became officials of the British South Africa Company. They were joined in their efforts by other Ruskinite friends of Stead’s like Lord Grey, Lord Esher, and Flora Shaw (later Lady Lugard). In 1890, by a stratagem too elaborate to describe here, Miss Shaw became Head of the Colonial Department of the Times while still remaining on the payroll of Stead’s Pall Mall Gazette. In this past she played a major role in the next ten years in carrying into execution the imperial schemes of Cecil Rhodes, to whom Stead had introduced her in 1889.” (131-32)</em></p><p>When Rhodes died, the continuation of his imperialistic mission fell upon the shoulders of chief Rhodes Trustee Alfred Milner. It is with this development that the Anglophilic origins of the CFR come into focus. Under Milner’s coordination, the Rhodes network would establish the stateside surrogate organization that would adopt the appellation of the CFR. Quigley continues:</p><p><em>“As governor-general and high commissioner of South Africa in the period 1897-1905, Milner recruited a group of young men chiefly from Oxford and from Toynbee Hall, to assist him in organizing his administration. Through his influence these men were able to win influential posts in government and international finance and become the dominant influence in British imperial and foreign affairs up to 1939. Under Milner in South Africa they were known as Milner’s Kindergarten until 1910. In 1909-1913 they organized semisecret groups, known as Round Table Groups, in the chief dependencies and the United States… In 1919 they founded the Royal Institute of International Affairs (Chatham House) for which the chief financial supporters were Sir Abe Bailey and the Astor Family (owners of The Times). Similar Institutes of International Affairs were established in the chief British dominions and in the United States (where it is known as the Council on Foreign Relations) in the period of 1919-1927.” </em>(132-33)</p><p>The CFR would eventually transmogrify itself into a <em>de facto</em> appendage of the United States government in 1939 with a project known as the War and Peace Studies Project. James Perloff describes this penetration of the halls of officialdom:</p><p><em>“In September 1939, Hitler’s troops invaded Poland. Britain and France declared war on Germany; World War II had begun.</em></p><p><em>Less than two weeks later, Hamilton Fish Armstrong, editor of Foreign Affairs, and Walter Mallory, the CFR’s executive director, met in Washington with Assistant Secretary of State George Messersmith. They proposed that the Council help the State Department formulate its wartime policy and postwar planning. The CFR would conduct study groups in coordination with State, making recommendations to the Department and President. Messersmith (a Council member himself) and his superiors agreed. The CFR thus succeeded, temporarily at least, in making itself an adjunct of the United States government. This undertaking became known as the War and Peace Studies Project; it worked in secret and was underwritten by the Rockefeller Foundation. It held 362 meetings and prepared 682 papers for FDR and the State Department.”</em> (64)</p><p>The CFR used its temporary position as a government adjunct to spread its members throughout the government. The State Department was particularly infested. In fact, the CFR’s influence over State led to what can only be described as the privatization of foreign policy. American foreign policy became little more than a vehicle for the agendas of bankers, corporations, globalists, and elitists. Thus, the origins of this major purveyor of globalism were distinctly Anglophilic.</p><p>This Anglophile network may have found its origins in the pages of fiction. Duncan Bell, the University of Cambridge Professor of Political Thought and International Relations, observes that Rhodes’ “most innovative contribution to racial utopian discourse” was the suggestion “that a secret society was necessary to undertake the epic task” of uniting the world under Anglo-Saxon rule (Bell 134). This secret society, of course, became a reality and produced the Anglophile constellation described earlier. Bell describes the secret society envisioned by Rhodes:</p><p><em>“[Rhodes’] model was the Society of Jesus. Its members scattered throughout the Anglo-Saxon world, such a society would spread the gospel of racial superiority, recruiting the best and the brightest of each generation to further the unionist cause. It would have two interwoven objectives: bringing the “whole uncivilized world under British rule” and the “recovery of the United States.”</em> (134)</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0eabc2b-983a-4ccb-9202-50ea6aca6323_750x481.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0eabc2b-983a-4ccb-9202-50ea6aca6323_750x481.jpeg" width="750" height="481" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/a0eabc2b-983a-4ccb-9202-50ea6aca6323_750x481.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":481,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Where did Rhodes derive the idea of such a secret society? The source of inspiration may have been identified in a recommendation made by Rhodes to fellow Anglophile network participant and journalist W.T. Stead. Bell writes:</p><p><em>“Rhodes encouraged Stead to read An American Politician, an1884 novel by the popular American writer F. Marion Crawford. The reason is clear. Very loosely based on the election of Rutherford B. Hayes in 1877, the tale focuses on a politician driven by an overriding sense of duty and aided by an Anglo-America secret society.” </em>(134)</p><p>According to Bell, Crawford “was best known as a writer of ghost stories” (134). Crawford, however, demonstrated a knowledge of how covert power works in his 1897 novel <em>Corleone</em>, which has been called “the first major treatment of the Mafia in literature” (Francis Marion Crawford”). Crawford also concluded his 1900 novel <em>Rulers of the South</em> with a chapter about the Sicilian Mafia (ibid). Given Crawford’s comfort with topics such as secret societies and organized crime, it seems fitting that his literary work would inspire Rhodes to establish covert political circles dedicated to the realization of Anglotopia.</p><h2><strong>Envisioning Anglotopia: Rhodes’ Dream World Distilled as Sci-fi</strong></h2><p>The very same Anglophile milieu that gave rise to the CFR also carried on a reciprocal exchange of ideas with the science fiction literary genre. For several years, science fiction authors would draw inspiration from Anglophile theoreticians and vice versa. It is difficult to determine with whom this exchange began. Did it begin with the Anglophile theoreticians or the science fiction authors? While the answer remains elusive, it is a well-established fact that the progenitor of the Anglophile network, Rhodes, was inspired by a “universal history” penned by William Windwood Reade. Reade authored <em>The Martyrdom of Man</em>, a secular theodicy advancing the neo-Darwinian contention that man could be perfected through the painful, yet necessary evolutionary process. Robert Rotberg synopsizes <em>The Martyrdom</em> as follows:</p><p><em>“William Windwood Reade, the then-obscure British Darwinian, influenced Rhodes’ search for understanding. An unsuccessful novelist, Reade visited West Africa twice in the 1860s, the second time while Rhodes was in Natal, and published The Martyrdom of Man in 1872. Begun as an attempt to revise England’s accepted and critical view of the contribution of Africans to human civilization, The Martyrdom became a universal history of mankind, with long sections on Rhodes’ favorite mysteries: ancient Egypt, Rome, Carthage, Arab Islam, and early Christianity. The Martyrdom consisted of the kind of late nineteenth-century pseudo-science that appealed to Rhodes. It was larded with philosophically impressive arguments about the true “meaning” of man based on the post-Hegelian as well as neo-Darwinian notion that man’s suffering on earth (his martyrdom) was essential (and quasi-divinely inspired) in the achievement of progress. Man was perfectable, but only by toil. He could not be saved, nor would his rewards be heavenly, for Reade was a pre-Tillichean Gnostic who believed in God’s existence but, at the same time, not in deism and certainly not in the accessibility of an anthropomorphic Christian God. The rewards of man were in continuing and improving the human race. “To develop to the utmost our genius and our love, that is the only true religion,” </em>wrote Reade. (99-100)</p><p>While <em>The Martyrdom</em> doesn’t quite qualify as a piece of science fiction, Rotberg does liken Reade to Jules Verne because he:<em> “prophesied a locomotive force more powerful than steam, the manufacture of flesh and flour chemically, travel through space, and the discovery by science of a destructive force which would be so horrible as to end all wars” </em>(100). Such “prophesying” would become commonplace among science fiction authors. James Herrick explains:</p><p><em>“In a Saturday Review interview, influential science-fiction editor John Campbell argued that the genre’s principal social role was as “prophecy”—by which he did not mean simply foretelling the future, but also preparing its audiences to embrace a particular vision for the future. The man who shaped the careers of such science-fiction greats as Asimov, Heinlein, van Vogt, and Doc (E.E.) Smith assigned to science fiction an essentially moral or spiritual role.</em> (<em>Scientific Mythologies: How Science and Science Fiction Forge New Religious Beliefs</em> 30)</p><p>Campbell’s contention that “prophecy” constituted science fiction’s chief social role underscores the genre’s imposing normative potential. Affirmation of this potential can be found in a May 2005 <em>New York Times</em> article entitled “Sci-Fi Synergy.” Therein, author Edward Rothstein states:<em> “A genre that 80 years ago was on the margins is now, at least in its cinematic incarnations, at the very center of culture”</em> (qutd. in Herrick, <em>Scientific Mythologies: How Science and Science Fiction Forge New Religious Beliefs </em>22). Elaborating on the normative impact that the sci-fi genre wields in its cinematic incarnations, Herrick writes: <em>“Science fiction has emerged as a formidable social force with a worldwide reach and an international audience in the hundreds of millions. Seven of the twenty most profitable movies ever produced fall within the science fiction genre”</em> (22). Given its undeniable influence upon culture, science fiction clearly possesses the potential to affect audiences in a normative capacity.</p><p>In her essay over science fiction’s normative power, Martha A. Bartter makes it clear that science fiction does not necessarily “make people behave in ways they otherwise would not” (Bartter 169). This perception of science fiction typically engenders “either the tacit justification for propaganda, or the reverse, the explicit justification for censorship” (169). However, it is through the presentation of possibilities that the normative power of science fiction is most effectively demonstrated. Bartter explains:</p><p><em>“[F]iction can represent possibilities for action to a large number of people in such a way that they can more clearly perceive possible choices and the various socio-cultural sanctions attached to those choices. The very act of considering choices irrevocably alters our assumptions about ways we may act, and since actions derive from assumptions (in the sense that both doing and choosing not to do must be considered actions), fiction can indeed endanger the status quo. The censors are right—for the wrong reasons.”</em> (169)</p><p>Indeed, considering various choices and their concomitant socio-cultural sanctions can call the <em>status quo</em> into question. The propositional content of a fictional work can either partially or completely conflict with the dominant cultural conventions of any given society. Audiences that are exposed to such propositional content will invariably consider choices that could potentially revise the <em>status quo</em>. A prescription can be rendered more tenable within the body of an imaginative narrative. Once fiction starts making such prescriptions, it becomes normative in character.</p><p>Yet, Bartter discerns an “inherent ambiguity” to normative fiction (169). As products of specific time periods, fictional tales tend to uphold some of the cultural norms of their respective historical eras. Yet, simultaneously, fictional tales can present possibilities that are rendered feasible through elements such as characters, settings, themes, etc. When audiences are presented with these fictional devices, they tend to suspend their critical faculties and accept fantastical propositions. In so doing, audiences entertain alternative ideas and values. Propositions are tangibly enacted and a “new consensus” is considered. Bartter elaborates:</p><p><em>“On the one hand, every fiction arises from a particular time and place; it demonstrates to its hearers/readers a tacit consensus regarding cultural norms. On the other hand, and at the same time, it can introduce to its readers possibilities that they previously did not know or had not considered, and make these possibilities vividly “real” by fictional devices such as plot, character, setting, etc. Through a “willing suspension of disbelief,” readers conduct socio-cultural gedankenexperimente: they test how such ideas might work out in reality and what effects they might produce, and consider the possibility of a new consensus.” </em>(169)</p><p><em>Gedankenexperimente</em> is the German word for “thought experiment.” The famous science fiction writer and editor John W. Campbell proposed that sci-fi presented an “unparalleled opportunity for socio-cultural thought experiments” (183). Through such experiments, the ideas of a particular fiction are tested and aspects of the current culture are called into question. As the experiment progresses, revisions in the <em>status quo</em> might be entertained or even enacted. If certain cultural norms happen to be amended or jettisoned along the way, then the dominant culture could witness the emergence of a “new consensus.” Thus, the question is not whether science fiction can change society, but how? The nature of the cultural shifts induced by sci-fi depends upon the nature of the normative claims that inspired them. The more dubious an author’s normative claims, the more ominous their existential consequences.</p><p>While <em>The Martyrdom</em> is not really considered a work of science fiction, the book is replete with the same sort of fanciful technology forecasts that one finds in the pages of the fantastical genre. More significantly, it explored a theme that pervaded British science fiction: humanity’s inexorable evolutionary advancement toward perfection. Of this theme, Herrick writes:</p><p><em>“Inevitable human progress through evolutionary processes is a theme in some of the most imaginative and persuasive science fiction. It is particularly important to the works of three pillars of British science fiction: H.G. Wells (1866-1946), Olaf Stapledon (1886-1950), and Arthur C. Clarke (b. 1917). That Wells would have devoted attention to human evolutionary advancement is not surprising considering that he was a student at Huxley’s London School of Science</em>. (<em>The Making of the New Spirituality: The Eclipse of the Western Religious Tradition </em>145)”</p><p>Arguably, Reade is responsible for popularizing the evolutionary theme that would preoccupy the “three pillars of British science fiction.” Yet, it is with Sir Arthur Conan Doyle that one finds the clearest example of Reade’s influence upon British sci-fi scribes.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc69aedd7-b855-46a7-b84c-4c1ca356b002_750x549.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc69aedd7-b855-46a7-b84c-4c1ca356b002_750x549.jpeg" width="750" height="549" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/c69aedd7-b855-46a7-b84c-4c1ca356b002_750x549.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":549,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Doyle wrote several pieces of science fiction, including <em>The Lost World</em> and his Professor Challenger stories. Doyle’s second Sherlock Holmes novel, <em>The Sign of Four</em>, features a glowing reference to Reade’s <em>The Martyrdom</em>. While discussing the literary quality of some letters with Watson, Holmes states: “Let me recommend this book, —one of the most remarkable ever penned. It is Winwood Reade’s ‘Martyrdom of Man.’” Clearly, Doyle was familiar with Reade and he may have even expressed some affinity for <em>The Martyrdom</em> vicariously through the beloved character of Holmes.</p><p>As for Rhodes, the impact of <em>The Martyrdom</em> upon the Ruskinite imperialist was unmistakable. Rotberg states: <em>“Rhodes read Reade only shortly after its publication and later said that it was a ‘creepy book.’ He also said, mysteriously, that it had ‘made me what I am’” </em>(99-100). <em>The Martyrdom’s</em> impact on Rhodes makes a great deal of sense when one considers its anthropological proposition that humanity is perfectible. This was a commonly held anthropological assumption among sociopolitical Utopians. After all, changing the world stipulated a fundamental change within man first. Evolutionary theory dignified the anthropological assumption of perfectibility. Darwinism was the theoretical outgrowth of an older belief system known as transformism. On transformism, organisms were infinitely mutable and could alter themselves on the essential level through a mere act of will. Pat Shipman explains:</p><p>“<em>Transformism was a rather Lamarckian view of the mutability of species that preceded Darwinian evolution in Germany, France, and elsewhere. What connected the two theories was the essential belief that life-forms had changed over time; what separated them was the proposed mechanism, which for Darwin was natural selection and for transformists was a vaguely described will or yearning of the organism for self-improvement. However, transformism was the scientific equivalent of the French Revolution: a dangerous doctrine of the possibility of change in social as well as biological spheres. (91-92) “</em></p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5aed5a-3485-4cf7-9595-0409f2aac415_750x422.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5aed5a-3485-4cf7-9595-0409f2aac415_750x422.jpeg" width="750" height="422" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/1f5aed5a-3485-4cf7-9595-0409f2aac415_750x422.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":422,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Indeed, such a view could be compared to the French Revolution, which was also underpinned by the anthropological proposition of human perfectibility. That which transformism advanced in the sociological sphere would be affirmed in the realm of biology by Darwinism. Darwinism is a variety of transformism that challenges the ontological fixity of species by advancing a process in which simple life-forms metamorphose into complex life-forms through random mutations. Suddenly, organisms were divested of any determinate properties and rendered as boundlessly malleable.</p><p>This was especially true for humanity, which the Darwinian transformist believed to be just an intermediary species migrating towards a glorious developmental terminus. Nick Bostrom reiterates:<em> “After the publication of Darwin’s Origin of Species (1859), it became increasingly plausible to view the current version of humanity not as the endpoint of evolution but rather as an early phase”</em> (“A History of Transhumanist Thought” 3).</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad7643bb-0f5e-4048-ad2e-c2172aecd819_750x422.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad7643bb-0f5e-4048-ad2e-c2172aecd819_750x422.jpeg" width="750" height="422" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/ad7643bb-0f5e-4048-ad2e-c2172aecd819_750x422.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":422,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>For Rhodes, such a biological <em>tabula rasa</em> could be eventually shaped into the sort of citizen suitable for his dream world.</p><p>Darwinism also advanced the distinctly Manichean binary of the fit and the unfit, which accommodated Rhodes’ brutal enslavement of Africans in his quest to monopolize the continent’s diamonds. In this regard, Darwinism shares more in common with Gnosticism than its chronocentric proponents care to admit. John C. Wright states: <em>“Ancient Gnosticism shares a contempt for the Benighted that modern Darwinians share for those races of mankind fated to fail the test of the survival of the fittest” </em>(“C.S. Lewis, H.G. Wells and Arthur C. Clarke”).</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35545cf-a5f2-4e7e-920f-3fe29b29db2a_750x410.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35545cf-a5f2-4e7e-920f-3fe29b29db2a_750x410.jpeg" width="750" height="410" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/d35545cf-a5f2-4e7e-920f-3fe29b29db2a_750x410.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":410,"width":750,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">Arthur C. Clarke</figcaption></figure></div><p>In fact, Dr. Wolfgang Smith has characterized Darwinism as a “Gnostic myth” because it dignifies the soteriological claim of self-salvation with the metaphysical claim of self-creation (242-43). Of course, the metaphysical claim of self-creation inexorably segues into autotheism, which is the tacitly espoused religion of Rhodes’ globalist progenies. Yet, in a world ruled by earthbound gods, not everyone can be a deity. Such was the case with Rhodes’ Africa, where those whom Darwinism had declared “unfit” were either enslaved or eugenically expunged through colonial warfare. For Rhodes and his imperialist adherents, the categories of deity and mortal were demarcated according to race.</p><p>Notions of a deific race were tacitly promoted through British science fiction, as is evidenced by the work of English occultist Baron Edward Bulwer-Lytton. Baron Lytton “practiced ceremonial magic and was claimed by Madame Blavatsky to be a Theosophist” (Sklar 65).</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe761cd-808f-4953-9dd5-33b94ee1b3c9_519x362.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe761cd-808f-4953-9dd5-33b94ee1b3c9_519x362.jpeg" width="519" height="362" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/cbe761cd-808f-4953-9dd5-33b94ee1b3c9_519x362.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":362,"width":519,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a><figcaption data-sanitized-class="image-caption">Baron Edward Bulwer-Lytton and his book ‘The Coming Race’</figcaption></figure></div><p>Presumably, Baron Lytton believed that he was the keeper of a psychic energy dubbed “vril” (65). Supposedly, vril was an “electricity whose properties were the same as ‘the one great fluid’ with which all of life was pervaded” (65). According to Baron Lytton’s racial myth, an elite race of “Vril people” harnessed this divine energy through physical and mental practices similar to yoga (65). Baron Lytton promulgated this racial myth with the publication of the novel <em>The Coming Race</em>, which Dusty Sklar synopsizes as follows:</p><p><em>“Written in the nineteenth century, The Coming Race details a superhuman subterranean race of beings living in huge caves in the bowels of earth, who have developed a kind of psychic energy—vril—with which they are made the equals of the gods. They plan, one day, to take control of the earth and bring about a mutation among the existing human elite, subjugating, of course, the rest of slavish humanity.”</em> (65)</p><p><em>The Coming Race</em> inspired a transcontinental movement devoted to studying and harnessing Lord Lytton’s chimerical psychic energy. In fact, some elements of that movement would play a role in the development and rise of the Nazis.</p><div data-sanitized-class="captioned-image-container"><figure><a target="_blank" href="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd321d2b9-82c6-473f-8913-2d6623697d73_575x307.jpeg" data-component-name="Image2ToDOM" data-sanitized-class="image-link image2 is-viewable-img"><div data-sanitized-class="image2-inset"><picture><source type="image/webp"><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd321d2b9-82c6-473f-8913-2d6623697d73_575x307.jpeg" width="575" height="307" data-attrs='{"src":"https://substack-post-media.s3.amazonaws.com/public/images/d321d2b9-82c6-473f-8913-2d6623697d73_575x307.jpeg","srcNoWatermark":null,"fullscreen":null,"imageSize":null,"height":307,"width":575,"resizeWidth":null,"bytes":null,"alt":"","title":null,"type":null,"href":null,"belowTheFold":true,"topImage":false,"internalRedirect":null,"isProcessing":false}' alt="" title="" loading="lazy" data-sanitized-class="sizing-normal"></picture><div data-sanitized-class="image-link-expand"><div data-sanitized-class="pencraft pc-display-flex pc-gap-8 pc-reset"><div data-sanitized-class="pencraft pc-reset icon-container restack-image"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></div><div data-sanitized-class="pencraft pc-reset icon-container view-image"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></div></div></div></div></a></figure></div><p>Ominously enough, Lord Lytton referred to the deific race who mastered vril as “Aryans,” thereby adopting an appellation “already employed in European intellectual circles to identify a supposed master race of the past” (Herrick, <em>Scientific Mythologies: How Science and Science Fiction Forge New Religious Beliefs </em>170). Commenting on the transcontinental influence of <em>The Coming </em>Race, Herrick writes:</p><p><em>“George Edward Bulwer-Lytton used The Coming Race as a forum in which to advance his theory of a spiritually evolved master race destined to rule or destroy all other races. And his theories proved quite popular with his Victorian reading audience. Vril societies formed in England and on the European Continent, lasting well into the twentieth century. The Vril Society of Munich attracted several members who would later become prominent figures in Hitler’s National Socialist Party.”</em> (<em>The Making of the New Spirituality: The Eclipse of the Western Religious Tradition </em>147)</p><p>Baron Lytton’s <em>The Coming Race</em> “cemented 1 May 1871 as the formative moment of British science fiction” (Bell 207). Bulwer-Lytton’s literary work influenced many writers who used their fiction to promote global Anglo-Saxon dominion. Among them was Arthur Bennett. In his 1893 work <em>Dream of an Englishman</em>, Bennett provides a fictional account of the United States’ reabsorption into a revived British Empire, referred to as the United Empire of Great Britain (Bell 225). The rest of the world’s geopolitical power blocs eventually realize that they are inferior to the United Empire of Great Britain and submit to its rule, resulting in the creation of a world federation ruled by the Anglo-Saxons (226). Bennett then tips his hat to Bulwer-Lytton, asserting that the boldest members of “the coming race” were fixing their gaze upon the stars, preparing to expand Anglo-Saxon rule beyond the planet’s boundaries (226).</p><p>Of course, a world federation ruled by Anglo-Saxons would stipulate the reconciliation of the British with their racial cousins in the United States. Needless to say, there had been a considerable amount of ill will between the British and Americans since the Thirteen Colonies had achieved independence in 1783. However, an attitudinal reorientation towards the United States would eventually result in the mending of this racial rift. The attitudinal shift is literally written into the pages of British and American science fiction. The thematic shift, according to Duncan Bell, occurred in the1890s (211). Before the shift, American literature largely voiced the hostility Americans felt towards their former British rulers. Bell elaborates:</p><p><em>“The American choice of enemy was…. revealing. Numerous texts published during the 1880s and early 1890s portrayed a war between the United States and the British Empire, dramatizing the simmering animosity between the two countries and reflecting the deep-seated Anglophobia of large swathes of the population.”</em> (210)</p><p>The 1890s witnessed writers radically rethinking the relationship between America and the British Empire. A drastic overhaul to the roles of villain and hero took place in order to accommodate a desire for reconciliation and reunion among the Anglo-Saxons. Many British writers envisioned an Anglo-Saxon world power where the Americans were junior partners. American writers tended to imagine the inverse, with the United States taking the reins of an Anglo-Saxon world order while the British played a secondary role. These two styles of science fiction writing share the theme of a racial union leading to a worldwide racial utopia. Bell explains:</p><p><em>“Many novels, both British and American, imagined the United States and the British Empire as cooperative partners, allies, or parts of a reintegrated racial-political community. They supplied cultural currency to the push for rapprochement, though symptomatic differences remained, perhaps above all in the way that the way that the relationship between the two powers was emplotted. Unlike [Andrew] Carnegie and Stead, many British authors were unwilling to yield leadership of the Angloworld – and hence the planet – to Washington, and the kin across the sea” were typically cast as an enthusiastic though immature junior partner. This attitude was mirrored across the Atlantic, where in an act of familial role-reversal Britain was usually granted a supporting role alongside a newly dominant United States. This signified both a transformation in the balance of geopolitical power and an intraracial transfer of authority, with the old idea of translatio imperii given new science fictional form.” </em>(211; italics in original)</p><p>In his work <em>Dreamworlds of Race: Empire and the Utopian Destiny of Anglo-America</em>, Bell looks at a number of literary works that exhibit the unionist and Anglotopian thematic threads, starting with Frank Stockton’s successful 1889 novel, <em>The Great War Syndicate</em>. In Stockton’s popular tale, a heated argument regarding fishing rights touches off a war between Britain and the United States (211). A group of 23 “great capitalists” intervene in the conflict, sidelining impotent politicians who have failed to bring peace between the belligerent parties (211). Stockton’s capitalistic cabal calls to mind both plutocracy and technocracy. It will not the last time that these concepts emerge in Anglotopian science fiction.</p><p>Stockton’s story includes a plot device found in many Anglotopian science fiction pieces: destructive weapons that are used to coerce one or more belligerent parties into accepting a universal peace imposed by the Anglo-Saxons (211). In this case, the superweapons are used to force the British into surrender (211). The British are defeated, but not vanquished. The war facilitates the reunion between racial cousins, the British and the Americans (211). Bell explains:</p><p>“In an age of privatized warfare, the business leaders devise fearsome weapon systems capable of pulverizing the British, but rather than fighting their racial kin, the Americans instead demonstrate to them this newfound destructive power. Suitably apprised of their diminished status in the Anglo-American relationship, the shocked and awed British agree to serve as loyal lieutenants in “The Anglo-American Syndicate of War,” an alliance that eventually pacifies the Earth”. (211)</p><p>Stockton’s novel would become the source of inspiration for British author George Griffith’s <em>The Pirate Syndicate</em> (212). Griffith’s work ends with the establishment of an Anglo-Saxon federation (212). George Danyer’s 1894 novel entitled <em>Blood Is Thicker Than Water: A Political Dream</em> concludes with a similar union between the Americans and the British (212). The theme of racial union was taken up yet again by James Barnes’ <em>The Unpardonable War</em> (212). Barnes’ literary offering presents readers with yet another war between the British and Americans (212). An American victory is secured by the work of a character described by Bell as an “Edisonian inventor” (212).</p><p>The end result is an Anglo-American union (212). Roy Norton’s work <em>The Vanishing Fleet</em> possesses many of the unionist themes employed by Stockton, Griffith, Danyer, and Barnes. Norton imagines the Americans ushering in an Anglo-Saxon world through the deployment of superweapons, which swiftly defeat British, Japanese, and Chinese adversaries (212). The Americans, however, do not seek the total destruction of their racial kin.</p><p>Instead, the Americans extend an olive branch to the British and ask them to assist in establishing world peace (212). This results in the two Anglo-Saxon powers “pledging their formidable combined power to a new commission established to maintain international order” (212). All of these stories seemed to capture a burning desire held by Anglophile political circles. That desire was to see the divorce of 1775 successfully reversed. Bell writes: “Such texts fictionalized the debate over the possible benefits of an Anglo-American union being played out in the journals and clubrooms of the North Atlantic world” (212).</p><p>All cultural trends reach their zenith, and American science fiction with Anglotopian and unionist themes is certainly no exception to that rule. Bell states: “The American literature of racial union reached a crescendo of sorts in 1898” (212). The crescendo coincided with America’s war with the Spanish, a conflict that many regard to be a manifestation of American imperialism (212). This period of time produced Benjamin Rush Davenport’s <em>Anglo-Saxons Onward!,</em> a work whose title makes no attempt to hide its author’s unbridled Anglophilia (212). In Davenport’s novel, America spearheads “a ‘semi-alliance’ of the Anglo-Saxon nations to crush the Spanish empire and ultimately control the world” (212). Davenport, it seems, was exploiting the animosity that existed between America and Spain to promote Anglo-Saxon dominance. Another work authored during this time period was S.W. Odell’s <em>The Last War; or, the Triumph of the English Tongue,</em> which “identified genocide as a means to racially purify the earth” (212). Odell’s offering takes place in the 26<sup>th</sup> century and casts the Russians as the villains, thus capturing the anti-Slavic sentiments that seem to permeate Anglophile circles (213). An Anglo-American alliance determines that it is necessary to conduct a war of extermination against the Russian Czar and his racially intermingled empire (213). Bell writes: “Fusing racial millenarianism with the pornography of violence, millions of people are slaughtered before Anglo-American triumphs, completing the conquest of the planet” (213).</p><p>The year 1898 saw the publication of <em>Armageddon: A Tale of Love, War and Invention</em> (213). The novel was written by Stanley Waterloo, described by Bell as “the most famous American writer to pen a future-war narrative” (213). The novel follows the pattern found in most racial union literature, with an unprecedented crisis facilitating and alliance between America and Great Britain. Bell writes:</p><p><em>“Like so many novels of the future, it opens with a telescopic account of geopolitical turmoil, the Spanish-American war heralding the predestined entry of the United States onto the world stage. Yet confusion reigned and the nineteenth century, we are informed, “flickered out in something like racial warfare.” It was as if Charles Pearson’s grim predictions of global race conflict had come true. As the planet is engulfed by violence, the Americans and the British recognize their true affinities and shared interests: “the idea of an Anglo-Saxon alliance had grown and broadened.” This vision had been “fostered by thinking men of both Great Britain and America,” those who could “best foresee the future of races.” Ultimately, though, “a tentative alliance, at least, it was evident, must come.” It would form the basis of a majestic racial order.”</em> (213)</p><p>A war ensues, with the reunited Anglo-Saxons fighting alongside the Japanese and Northern European states “against a combination of the southern ‘Latin’ races, dominated by the French and Italians (with lukewarm German support), and the ‘Slavs,’ directed by Russia” (215). Again, the old Slavic bogeyman of Anglo-Saxon fever dreams rears its ugly head.</p><p>The Anglo-Saxon alliance secures a decisive victory during “a great naval battle in the Atlantic” (215). They are assisted in their endeavor by a brilliant inventor who hails from “an isolated farm on the Illinois prairie” (213). According to Bell, this Illinois-based inventor creates “a flying machine, a cigar-shaped aluminum tube able to mount a devastating array of weapons” (213-14). Employment of this new weapon results in the destruction of the enemy armada (215). Victory is followed by a Peace Conference in Amsterdam, where the “French, Spanish, and Portuguese empires are dissolved, their territories transferred to the more deserving Anglo-Saxons” (216).</p><p>Many writers of science fiction with racial union themes entertained the notion of an imperial federation ushering in a racial utopia. Julius Vogel, asserts Bell, “wrote the most interesting novel on the subject” (218). Regarding Vogel, Bell writes:</p><p><em>“Vogel was an ardent supporter of the imperial federation movement, arguing that without formal consolidation the British Empire would ultimately dissolve, reducing the mother-country to the status of a second-rate power and leaving the colonies at the mercy of larger predatory states”</em> (218).</p><p>Vogel’s 1889 work, <em>Anno Domini 2000</em>, reflects the desire of some Anglophile circles to facilitate the rise of an Anglotopia through imperial federation. In Vogel’s literary universe, a waning British Empire’s very existence is imperiled in the 1920s by a dispute centered around Ireland (221). The empire resolves the problem through the federation of the empire (221). There is a reconfiguration of the empire “as power drains away from the old imperial center without precipitating the dissolution of the whole” (221). Bell elaborates:</p><p><em>“Decline is followed by rebirth rather than Fall. Vogel’s Anglo-imperium is figured immune to traditional causes of degeneration, at once too large for external assault and too internally robust for corruption to corrode it from within. Imperial federation thus allows the reconciliation of grandezza and libertas – imperium could permanently escape the vicissitudes of historical time. Vogel can present London as partially corrupted by luxury, its inhabitants “chartered sybarites” and “luxurious to the verge of effeminacy,” but rather than serving its classical role as the primary agent of decline, such hedonism is rendered harmless, even comic, because of the dispersal of political authority and economic might. The British dominions have been consolidated into the empire of United Britain; and not only is it the most powerful empire on the globe, but at present no sign is shown of any tendency to weakness or decay.”</em> (221-22)</p><p>Vogel’s Anglo-Saxon empire is also strengthened through the adoption of technocratic practices. This transformation of the empire into a technocracy leads to unprecedented technological progress and the ascendancy of the Anglo-Saxon race. Bell writes:</p><p>“Political unity was predicated on technoscientific progress. Following the wise intervention of the Prince of Wales, the citizenry is no longer distracted by having to learn useless dead languages, but are instead given an intense practical scientific training, with the result that “each person was more or less an engineer.” More typically American than British, this Wellsian mode of subject formation further accelerated technological progress. The novel is studded with inventions – “phonograms,” force fields, aluminum air cruisers. At one point, people are rendered immobile by a mysterious but devastating weapon that harnesses the power of electricity. Portable silent “hand telegraphs” allow journalists to stream live accounts of political debate across the polity, creating a powerful sense of instantaneity and communal identity. Vogel’s novel exemplifies the fascination with infrastructural space, racial informatics, and communications systems that suffused the discourse of Angloworld unification. It imagines the Anglo-Saxon race as a cyborg assemblage, knitted together by a dense communications network pulsating with information. The transformative potential of communications technology is reinforced by new modes of aerial transport. Global geography is rewritten. “A journey from London to Melbourne was looked upon with as much indifference as one from London to the Continent used to be.” Confined to use by the government – in contrast to many American novels of the era – this airpower underwrites British military superiority over other states. We are informed that these mighty sentinels “made easily a hundred miles an hour” across the skies of the future.” (222)</p><p>Vogel pits the British Empire, reinvigorated by a federation model of management and technocratic practices, against the United States (223). This conflict is touched off by “dynastic dispute between the British Empire and the United States” (223). Vogel’s fictional war, however, is not meant to bring about the destruction of America. It, instead, acts almost like a Hegelian dialectic, synthesizing the two belligerent parties and giving rise to a reunified federated empire. Bell provides a summary of the contest between racial cousins and the end result:</p><p>“The Americans launch an impetuous attack on Canada only to be swatted aside like flies, before a vast British armada is sent across the Atlantic to punish them. The expeditionary force captures Washington and proceeds to outflank the American army in Canada. They demonstrate their abiding sense of kinship by refusing to massacre the brave but ineffectual American soldiers – presumably a fate reserved for the hapless “natives” that the empire continues to govern. The forlorn President is whisked aboard the advanced air-cruiser <em>The British Empire</em>, and the British celebrate “a triumph which amply redeemed the humiliation of centuries back, when the English colonies of America won their independence by force of arms.” The injustice of history redressed, the door is opened to reuniting Anglo-America. The terms of the subsequent peace deal include a plebiscite in New England, where the inhabitants vote overwhelmingly to (re)join the British Empire, with New York anointed the new capital city of the Dominion of Canada. The democratic empire is extended democratically. In a mirror image of many American tales, the United States – or at least the authentic “Anglo-Saxon” element – is simultaneously reincorporated into the Angloworld and assigned a subordinate position within it. It has been transfigured from a powerful independent state to a region within British imperial jurisdiction.” (223)</p><p>Vogel and scores of other unionist science fiction writers emphasized the reunification of racial cousins and the revival of empire. Other writers in the bizarre Anglotopian genre, however, stressed a supposed racial salvation found in the Anglo-Saxon race. Authors like George Chetwynd Griffith and Louis Tracy “posited the Anglo-Saxons as redemptive saviors of civilization” (226). In <em>The Angel of the Revolution</em>, Griffith envisioned the Anglo-Saxons saving humanity with “socialist Anglo-future” (227). Tracy, on the other hand, wrote <em>The Final War</em> in 1896, which saw the Anglo-Saxons’ salvific power wrapped in “the existing imperial capitalist order” (227). Through the medium of literature, Anglo-Saxons acquired a messianic mystique. The apotheosis of the Anglo-Saxon elite had been realized through the power of the pen.</p><h2><strong>Fact Abolished and Fiction Made Flesh</strong></h2><p>It is not surprising that the sociopolitical Utopians of Rhodes’ tradition carried on such an extensive reciprocal relationship with British sci-fi authors. Both adhered to a hermeneutical tradition steeped in a cannibalizing epistemic incredulity. The British sci-fi authors were deeply mistrustful of the cosmos because, according to the Baconian formulation of modern science, the universe was nothing more than a standing reserve of malleable material (<em>Bestand </em>as Heidegger put it). Ergo the cosmos was an ontologically suboptimal simulacrum. Meanwhile, Rhodes’ imperialist progenies were deeply suspicious (and forthrightly contemptuous) of the social cosmos because its inherent heterogeneity violently conflicted with their dream world of political, economic, and racial homogeneity. Ergo the social cosmos was an ontologically suboptimal simulacrum. This shared hermeneutical tradition was merely an echo of the cosmological resentment espoused by the ancient Gnostics.</p><p>Yet, Rhodes’ disciples and their fellow travelers in the literary world parted ways with their ancient antecedents concerning their response to the cosmos. While the ancient Gnostics sought to escape the world, Rhodes’ imperialist progenies sought to transform it. Envisioning an Eschaton in history, Rhodes and his Anglophilic crusaders adopted the Hegelian rallying call: “That which is cannot be true.” The facts of established reality had to be abolished so that the Utopian fiction of Rhodes’ mind could be made flesh. British sci-fi scribes merely committed Rhodes’ Utopian fiction to paper. Years later, the globalist offspring of Rhodes would continue to incarnate some variant of that Utopian fiction. Predictably, many modern science fiction authors continue the tradition of their British precursors by rendering the globalist dream world as an inescapable inevitability. Jutta Weldes elaborates:</p><p>“The neo-liberal discourse of globalization dominating public discussion is a self-fulfilling prophecy that rests on a well-rehearsed set of narratives and tropes, including an Enlightenment commitment to progress, the wholesome role of global markets, a rampant technophilia, the trope of the “global village,” and the interrelated narratives of an increasingly global culture and an expanded pacific liberal politics… this discourse displays striking homologies to American techno-utopian SF [science fiction]… These homologies help to render neo-liberal globalization both sensible and seemingly “inexorable.” (Weldes, “Popular Culture, Science Fiction, and World Politics” 3)</p><p>In light of these homologies, it is not difficult to understand why the popularization of certain sci-fi myths is so advantageous to the global oligarchical establishment. These myths both propagate and affirm “a well-rehearsed set of narratives and tropes” that undergirds global governance. Through the sci-fi literary genre, the power elite’s fanatical eschatological vision for world order is not only rendered tenable, but inexorable. Yet, the globalist dream world is neither tenable nor inexorable because it does not comport with the structure of reality. Reality will continue to relentlessly assert itself, rudely awaking the inheritors of Rhodes’ Anglotopian dreams.</p><h2><strong>Sources Cited</strong></h2><p>Bartter, Martha A. “Normative fiction.” <em>Science Fiction, Social Conflict, and War</em>, Philip John Davies, ed. Manchester: Manchester UP, 1990, 169-85.</p><p>Bell, Duncan. <em>Dreamworlds of Race: Empire and the Utopian Destiny of Anglo-America</em>. New Jersey: Princeton UP, 2020.</p><p>Bostrom, Nick. “A History of Transhumanist Thought.” <em>Nick Bostrom’s Home Page</em> 21 February 2006 &lt;<a href="http://www.nickbostrom.com/papers/history.pdf">http://www.nickbostrom.com/papers/history.pdf</a>&gt;</p><p>Doyle, Arthur Conan. <em>The Sign of Four</em>. 1890. Project Gutenberg. Web. Aug. 2023 &lt;<a href="https://www.gutenberg.org/files/2097/2097-h/2097-h.htm#chap02">https://www.gutenberg.org/files/2097/2097-h/2097-h.htm#chap02</a>&gt;</p><p>“Francis Marion Crawford.” <em>Wikipedia: The Free Encyclopedia</em> 29 April 2024 &lt;<a href="https://en.wikipedia.org/wiki/Francis_Marion_Crawford">https://en.wikipedia.org/wiki/Francis_Marion_Crawford</a>&gt;</p><p>Herrick, James A. <em>The Making of the New Spirituality: The Eclipse of the Western Religious Tradition. </em>Downer’s Grove, IL: Intervarsity Press, 2003.</p><p>—. <em>Scientific Mythologies: How Science and Science Fiction Forge New Religious Beliefs</em>. Downer’s Grove, IL: Intervarsity Press, 2008.</p><p>Katsiaficas, George and Mary Lou Emery. “Critical Theory and the Limits of Sociological Positivism.” <em>Transforming Sociology Series</em>. 1978. Red Feather Institute 2008 &lt;<a href="http://www.tryoung.com/archives/176krkpt.htm">http://www.tryoung.com/archives/176krkpt.htm</a>&gt;</p><p>Quigley, Carroll. <em>Tragedy and Hope: A History of the World in our Time</em>. New York: Macmillan, 1966.</p><p>Rotberg, Robert. <em><a href="http://www.amazon.com/exec/obidos/ASIN/0195049683/conspiracyarc-20/102-5485159-1789706?%5Fencoding=UTF8&amp;camp=1789&amp;link%5Fcode=xm2">The Founder: Cecil Rhodes and the Pursuit of Power</a></em>. New York: Oxford UP, 1988.</p><p>Shipman, Pat. <em>The Evolution of Racism</em>. New York: Simon and Schuster, 1994.</p><p>Skelton, Charlie. “Silicon Assets.” <em>Flaunt Magazine</em> 22 September 2015 &lt;<a href="http://www.flaunt.com/content/art/silicon-assets&amp;gt">http://www.flaunt.com/content/art/silicon-assets&amp;gt</a>;</p><p>Sklar, Dusty. <em>The Nazis and the Occult</em>. New York: Dorset Press, 1977.</p><p>Smith, Wolfgang. <em>Teilhardism and the New Religion: A Thorough Analysis of the Teachings of Pierre Teilhard de Chardin</em>. Illinois: TAN Books, 1988.</p><p>Weldes, Jutta. “Popular Culture, Science Fiction, and World Politics.” <em>To Seek Out New Worlds: Science Fiction and World Politics</em>, Jutta Weldes, ed. NY: Palgrave, 2003, 1-27.</p><p>Wright, John C. “C.S. Lewis, H.G. Wells and Arthur C. Clarke.” <em>Live Journal </em>21 April 2009</p><p>&lt;<a href="http://johncwright.livejournal.com/243016.html">http://johncwright.livejournal.com/243016.html</a>&gt;</p><h2><strong>About the Authors</strong></h2><p><strong>Phillip D. Collins</strong> acted as the editor for <em><a href="http://www.amazon.com/exec/obidos/ASIN/140336799X/conspiracyarc-20/">The Hidden Face of Terrorism</a></em> and co-authored the books <em><a href="http://www.amazon.com/exec/obidos/ASIN/1419639323/conspiracyarc-20/">The Ascendancy of the Scientific Dictatorship</a></em> and <em>Invoking the Beyond: The Kantian Rift, Mythologized Menaces, and the Quest for the New Man</em>. Both books are available at </p><p>http://www.amazon.com</p><p>. Phillip has also written articles for <em>News With Views</em>, <em>Conspiracy Archive</em>, and the <em>Vexilla Regis Journal</em>.</p><p>In 1999, Phillip earned an Associate degree of Arts and Science from Clark State Community College. In 2006, he earned a bachelor’s degree with majors in communication studies and liberal studies along with a minor in philosophy from Wright State University.</p><p>Phillip worked as a staff writer for a weekly news publication, the <em>Vandalia Drummer</em>, between late 2007 and 2011. During his tenure with the paper, he earned several accolades.</p><p>In 2011, he was inducted into the Media Honor Roll by the Ohio School Board Association for his extensive coverage of the Vandalia-Butler School District. That very same year, the Ohio Newspaper Association bestowed an Osman C. Hooper Newspaper Award upon Phillip for Best Photo. In addition, the City of Vandalia officially proclaimed that November 7, 2011 would be known as “Phillip Collins Day.” This honor was bestowed upon Phillip for his tireless coverage of the City and community.</p><p>Shortly after bringing his journalism career to a close, Phillip received another Osman C. Hooper Newspaper Award in the category of In-depth Reporting. This award was given to Phillip for his investigative work over the death of U.S. Marine Maria Lauterbach and the resultant Department of Defense reforms concerning sexual assault and rape. The case drew national attention and received TV coverage by major media organs.</p><p><strong>Paul David Collins</strong> is the author of <em><a href="http://www.amazon.com/exec/obidos/ASIN/140336799X/conspiracyarc-20/">The Hidden Face of Terrorism</a> </em>and the co-author of<a href="http://www.amazon.com/exec/obidos/ASIN/1419639323/conspiracyarc-20/"> </a><em><a href="http://www.amazon.com/exec/obidos/ASIN/1419639323/conspiracyarc-20/">The Ascendancy of the Scientific Dictatorship</a> and Invoking the Beyond: The Kantian Rift, Mythologized Menaces, and the Quest for the New Man</em><strong>.</strong> In 1999, he earned his Associate of Arts and Science degree from Clark State Community College. In 2006, he received his bachelor’s degree with a major in Liberal Studies and a minor in Political Science from Wright State University. He worked as a professional journalist for roughly four years.</p><p>From 2008 to 2012, Paul covered local news for several Times Community News publications, including the<em>Enon Messenger, the New Carlisle Sun, the Tipp City Herald, the Kettering/Oakwood Times, the Beavercreek News Current, the Vandalia Drummer, the Springboro Sun, the Englewood Independent, the Fairborn Daily Herald</em>, and the <em>Xenia Daily Gazette.</em></p><p>Paul also wrote for other local papers, including the <em>Enon Eagle</em>, the <em>New Carlisle News</em>, and the Lusk Herald. In addition to his work in the realm of mainstream, Paul has published several articles concerning the topics of deep politics and elite deviancy. Those articles have appeared in Terry Melanson’s online <em>Conspiracy Archive, Paranoia magazine, Vexilla Regis Journal</em>, and <em>Nexus magazine</em>.</p>

attributes:
{"enclosures":[{"url":"https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe761cd-808f-4953-9dd5-33b94ee1b3c9_519x362.jpeg","type":"image/jpeg","length":0}]}


