<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://planet.code4lib.org">
	<title>Planet Code4Lib</title>
	<link>http://planet.code4lib.org</link>
	<description>Planet Code4Lib - http://planet.code4lib.org</description>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-953024975153422094.post-2513270677028231548" />
			<rdf:li rdf:resource="https://hangingtogether.org/?p=17347" />
			<rdf:li rdf:resource="https://xeiaso.net/notes/2026/console-wars-lost/" />
			<rdf:li rdf:resource="https://meredith.wolfwater.com/wordpress/?p=4962" />
			<rdf:li rdf:resource="https://xeiaso.net/blog/2026/hyle-pneuma/" />
			<rdf:li rdf:resource="https://lil.law.harvard.edu/blog/2026/07/07/binoc-a-field-guide/" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-4503292949532760618.post-3942730163090709922" />
			<rdf:li rdf:resource="https://blog.reeset.net/?p=3051" />
			<rdf:li rdf:resource="https://blog.reeset.net/?p=3049" />
			<rdf:li rdf:resource="https://blog.reeset.net/?p=3047" />
			<rdf:li rdf:resource="https://blog.reeset.net/?p=3043" />
			<rdf:li rdf:resource="https://inkdroid.org/2026/07/05/bookmarks/" />
			<rdf:li rdf:resource="https://blog.librarything.com/?p=11361" />
			<rdf:li rdf:resource="https://librarian.aedileworks.com/?p=4541" />
			<rdf:li rdf:resource="https://inkdroid.org/2026/07/02/artifice/" />
			<rdf:li rdf:resource="https://cynthiang.ca/?p=17542" />
			<rdf:li rdf:resource="https://www.diglib.org/?p=104223" />
			<rdf:li rdf:resource="https://blog.okfn.org/?p=49743" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-4503292949532760618.post-5692551530963278060" />
			<rdf:li rdf:resource="http://bibwild.wordpress.com/?p=13580" />
			<rdf:li rdf:resource="https://inkdroid.org/2026/06/28/bookmarks/" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-4503292949532760618.post-2416003435865504508" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-953024975153422094.post-8111007412612401174" />
			<rdf:li rdf:resource="https://lil.law.harvard.edu/blog/2026/06/25/local-news-as-public-data/" />
			<rdf:li rdf:resource="https://blog.okfn.org/?p=49649" />
			<rdf:li rdf:resource="https://xeiaso.net/shitposts/no-way-to-prevent-this/memory-safety/CVE-2026-8461/" />
			<rdf:li rdf:resource="https://ruebot.net/talk/kcl-dh-2026/" />
			<rdf:li rdf:resource="https://blog.okfn.org/?p=49627" />
			<rdf:li rdf:resource="https://blog.librarything.com/?p=11358" />
			<rdf:li rdf:resource="https://inkdroid.org/2026/06/24/fine-flowers/" />
			<rdf:li rdf:resource="https://xeiaso.net/shitposts/no-way-to-prevent-this/memory-safety/CVE-2026-55200/" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-4503292949532760618.post-5913434242416838208" />
			<rdf:li rdf:resource="https://www.diglib.org/?p=104220" />
			<rdf:li rdf:resource="https://www.diglib.org/?p=104207" />
			<rdf:li rdf:resource="https://www.tigrisdata.com/blog/objgit/" />
			<rdf:li rdf:resource="https://meredith.wolfwater.com/wordpress/?p=4955" />
			<rdf:li rdf:resource="https://inkdroid.org/2026/06/22/bookmarks/" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-953024975153422094.post-7015811420941871318" />
			<rdf:li rdf:resource="https://inkdroid.org/2026/06/21/midsummer-sunrise/" />
			<rdf:li rdf:resource="https://blog.okfn.org/?p=49592" />
			<rdf:li rdf:resource="https://evergreen-ils.org/?p=10494" />
			<rdf:li rdf:resource="https://xeiaso.net/notes/2026/anubis-wasm-vendor-binary/" />
			<rdf:li rdf:resource="https://hangingtogether.org/?p=17322" />
			<rdf:li rdf:resource="https://blog.librarything.com/?p=11357" />
			<rdf:li rdf:resource="https://blog.okfn.org/?p=49553" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-4503292949532760618.post-2643629132990742140" />
			<rdf:li rdf:resource="https://lil.law.harvard.edu/blog/2026/06/16/an-open-hardware-tpu-on-your-desk/" />
			<rdf:li rdf:resource="https://ital.corejournals.org/index.php/ital/article/view/17754" />
			<rdf:li rdf:resource="https://ital.corejournals.org/index.php/ital/article/view/17746" />
			<rdf:li rdf:resource="https://ital.corejournals.org/index.php/ital/article/view/17597" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="tag:blogger.com,1999:blog-953024975153422094.post-2513270677028231548">
	<title>Web Science and Digital Libraries (WS-DL) Group at Old Dominion University: 2026-07-09: Graduating from the Department of War Cyber Service Academy</title>
	<link>https://ws-dl.blogspot.com/2026/07/2026-07-09-graduating-from-department.html</link>
	<content:encoded>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;My award for my outstanding academic achievement, leadership, and successfully completing the requirements for the Department of War Cyber Service Academy&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjKIAByanxne9t_tx-u7TtBie6wxRVdsJE9_pUnld5xCw6SmZl6swpYshaxHSSb9NrPMFY3E4wu_YhODmIYKkcvtwubYY640b2e0DY6CItSOOftOHG891QVZW4BrRVB89xVOXsGdXtCqj2G-lIQP-WHexAw_61htA73qFzVPv5uEL8Eadi-XQUDc1iaprFN=s1600&quot; style=&quot;border-color: currentcolor; border-style: none; border-width: medium; font-family: Arial, sans-serif; font-size: 11pt; margin-left: auto; margin-right: auto; white-space: pre-wrap;&quot; title=&quot;My award for my outstanding academic achievement, leadership, and successfully completing the requirements for the Department of War Cyber Service Academy&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;My award for my outstanding academic achievement, leadership, and successfully completing the requirements for the Department of War Cyber Service Academy&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-variant: normal; vertical-align: baseline;&quot;&gt;I graduated from the &lt;/span&gt;&lt;a href=&quot;https://www.cyber.mil/dod-workforce-innovation-directorate/csa/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Department of War (DoW) Cyber Service Academy&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; (CSA) this semester (Spring 2026). I was honored to be an &lt;/span&gt;&lt;a href=&quot;https://www.linkedin.com/posts/hussam-hallak-98110464_i-was-honored-to-be-an-awardee-during-the-activity-7458348048511889408-mq-3/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;awardee during the inaugural DoW CSA graduation dinner&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; at Old Dominion University (ODU). &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span id=&quot;docs-internal-guid-41507f33-7fff-014f-95d2-1e84527b03d4&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;Photo taken at the inaugural DoW CSA graduation dinner at Old Dominion University&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjtUoALNoHc37ZMQ25ARDF5VzyKsa5FP690AGsbaqoRGW3V2ZMnX9V1SUKfRa0vOZQ5n3wmCXvU3jinrhPSZRGAHEXuQl2Io3O1QLIjS2jEJe0Ky_xXIDh_h-k9g76BMenYc6hv4VBLLh2L8NiBKqthta09Pb_EJ-VJ-F4lb9OKdHnK7xKNbG8zMnHYkqJP=s1600&quot; style=&quot;border-color: currentcolor; border-style: none; border-width: medium; border: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Photo taken at the inaugural DoW CSA graduation dinner at Old Dominion University&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Photo taken at the inaugural DoW CSA graduation dinner at Old Dominion University&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;This recognition event brought &lt;/span&gt;&lt;a href=&quot;https://www.cyber.mil/dod-workforce-innovation-directorate/csa/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;the DoW CSA&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; together with the &lt;/span&gt;&lt;a href=&quot;https://www.nsf.gov/funding/opportunities/cyberai-sfs-cyberaicorps-scholarship-service&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;National Science Foundation (NSF) Scholarship for Service&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; and the &lt;/span&gt;&lt;a href=&quot;https://www.odu.edu/cyber&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Old Dominion University School of Cybersecurity&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. I want to thank everyone at the DoW CSA, where I have been a scholar for five years. Thank you for your support and dedication to my success.&lt;/span&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;My story with the DoW CSA began in 2021 when I applied for the scholarship while taking classes to satisfy PhD course requirements. The DoW CSA is a recruitment tool for the &lt;/span&gt;&lt;a href=&quot;https://www.war.gov/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;DoW&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; creating a pipeline of DoW future employees, mainly scientists and cybersecurity professionals. The DoW CSA offers scholarships to support students who are seeking higher education and prepares them to join one of &lt;/span&gt;&lt;a href=&quot;https://business.defense.gov/Work-with-us/Military-Departments-and-Defense-Agencies/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;the DoW agencies&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; protecting the DoW’s information systems and networks. It sponsors students majoring in a cyber-related major at designated universities that receive the grant for the DoW CSA program. Sponsored students are required to be full-time students while receiving the scholarship. They are expected to search and participate in summer internships (if possible) and they cannot decline summer internship offers from any of the DoW agencies unless they are in the final stages of their degree. Summer internship waivers can be obtained if the student has to fulfill academic requirements that are officially documented by the university as mandatory for completion during the summer term, has verifiable and documented research directly contributing to a dissertation, or has medical issues that require hospitalization/treatment over the summer months. While receiving the scholarship, students are not allowed to participate in any recruitment event, job interviews, or any other type of employment finding activity that may occur at the university for post-graduation employment. Working full-time for the selecting DoD Agency or any other Federal organization during the academic year is not authorized without prior approval. In some cases, students may be authorized to work less than 20-hours per week if the DoW Agency requests such a situation.  Part-time jobs or jobs with a non-DoW/Federal organization are allowable. Sponsored students are required to work full-time with one of the agencies across the DoW for a minimum of one year full-time employment for each year of scholarship the student received.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;Photo taken at the inaugural DoW CSA graduation dinner at Old Dominion University&quot; height=&quot;405&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjRDldvcKJyKqj67nenHUgkcDj03GrIkwxq8W2PGPpw4no1f7JlWN3Z1Pt01TdjUokQuB_VZHppB1_ZM99KPbiqC2mGc_oBwttIN-OSrAeEJR2HNwzVjLW7qg-bmUlfGwQz-jOw79HVTeP4pIzfECP7akqarREfm_GMy96H8cCehgMsCDcwqKLJaLcYNWfp&quot; style=&quot;border-color: currentcolor; border-style: none; border-width: medium; border: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Photo taken at the inaugural DoW CSA graduation dinner at Old Dominion University&quot; width=&quot;624&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Photo taken at the inaugural DoW CSA graduation dinner at Old Dominion University&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;I applied for the DoW CSA in 2021 when it was the Department of Defense (DoD) Cybersecurity Scholarship Program (CySP). The lengthy scholarship application involved meeting GPA requirements (3.5 or higher), official transcripts, resume, filling out multiple forms in paper format, and two recommendation letters; one letter from my PhD advisor and another from my supervisor at work (Newport News Shipbuilding at that time). The recommendation letters must follow a certain format and must contain key information about my performance in class and what graduate classes I have taken. I had to change my resume to match the template that CSA provided. The application process has improved dramatically since 2021. It became much easier to apply. Online applications are now possible (filling out two online forms and uploading transcripts along with a few other documents.)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;After the application deadline, all applicants’ resumes, transcripts, and recommendation letters are sent to various DoW agencies across the country for applications review and student selection. The agencies review the applications and select students to interview and sponsor or sponsor them without an interview (based on their resume, transcripts, GPA, etc.) Students who are accepted in the program will get notified by email and receive a letter from the DoW CSA that they are selected for the scholarship. The award letter has information about the agency that selected the student for employment (the selecting/sponsoring agency) and it specifies the requirements that the student must meet while receiving the scholarship. The time it takes to get a response from the agency or the Dow CSA may vary depending on the agency and the number of applicants. I received my award letter in less than two months. The student is required to read the letter and initial/sign a few places on the letter to acknowledge that they have read and understood the requirements including obligated service upon graduation, relocation (if necessary), internship requirements, and employment conditions while receiving the scholarship. Changes to the agency to which the student is assigned are at the discretion of the agency and the DoW CSA, not the student. The same applies to the student relocation requirements. Service/work location could change based upon the agency’s needs. In order to receive the scholarship, the student must agree to move (after graduation) based on the agency’s directives. The DoW CSA does not provide any funds to cover relocation expenses. The sponsoring agency may or may not reimburse the student for relocation expenses, but that is a separate issue to discuss with the agency before getting hired. Students who receive the scholarship are required to submit an annual report that summarizes the work they have done during that year including classes taken, papers submissions, conferences’ attendance, internship participation, research projects, published articles, etc. After graduating from the DoW CSA, the student is required to submit a full report of all the work that they did during the entire time of the scholarship. It is easier to save a copy of the annual report the student submits, and then merge all annual reports together in one full report to submit at the end of the scholarship.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Ideally, the sponsoring agency will hire the student upon the completion of their degree and/or will sponsor their internship(s). In my case, the sponsoring agency is the &lt;/span&gt;&lt;a href=&quot;https://www.niwcatlantic.navy.mil/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Naval Information Warfare Center (NIWC) Atlantic&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; in Norfolk, VA. I have not participated in any internships with NIWC Atlantic, however, I am now participating in a summer internship with &lt;/span&gt;&lt;a href=&quot;https://www.niwcpacific.navy.mil/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NIWC Pacific&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; in San Diego, CA. Internship availability is highly dependent on funding from the DoW. If the agency has not been able to secure funds to support summer interns, the agency will not offer summer internships. It has become more difficult to find summer internships or secure post-graduation full-time placement with one of the DoW agencies since funds and contracts have been cancelled after The Department of Government Efficiency (DOGE) implemented unprecedented federal workforce reductions and spending cuts and froze hiring in January of 2025. As of now, a waiver from &lt;/span&gt;&lt;a href=&quot;http://www.navy.mil/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;the Department of the Navy&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; must be obtained for every new hire at NIWC forming a bottleneck and making the hiring process much slower. The DoW CSA has been trying to obtain waivers for its graduates to be placed in one of the DoW agencies, but it hasn’t been able to. I have two main goals to pursue after I finish the internship this summer. First, focus on completing my PhD; and second, secure a position with NIWC Atlantic or another DoW agency in VA.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;I am grateful to have been selected and supported by the US DoW CSA scholarship throughout my PhD studies. I truly appreciate this great opportunity. I want to thank everyone at the US DoW CSA for their help and dedication to my success in this journey.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/hussam-hallak-98110464/&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Hussam Hallak&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2026-07-09T17:16:04+00:00</dc:date>
	<dc:creator>Hussam Hallak (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="https://hangingtogether.org/?p=17347">
	<title>HangingTogether: Who’s in the room: The hidden costs of global library leadership conversations</title>
	<link>https://hangingtogether.org/whos-in-the-room-the-hidden-costs-of-global-library-leadership-conversations/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;em&gt;&lt;strong&gt;Ellen Hartman, OCLC Leaders Council Manager&lt;/strong&gt;&lt;/em&gt;,&lt;em&gt; continues her &lt;a href=&quot;https://hangingtogether.org/tag/globalleadership&quot;&gt;blog series on global library leadership conversations&lt;/a&gt;, inspired by a recent meeting of the &lt;a href=&quot;https://www.oclc.org/en/membership/councils.html&quot;&gt;OCLC Leaders Council&lt;/a&gt;. The &lt;a href=&quot;https://hangingtogether.org/reading-the-room-what-global-library-leadership-conversations-teach-us/&quot;&gt;first post in the series&lt;/a&gt; explored the unique value of global library leadership conversations, as well as some of the practical realities of making this form of engagement successful.&lt;/em&gt;&lt;/p&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;alignleft size-large is-resized&quot;&gt;&lt;a href=&quot;https://hangingtogether.org/wp-content/uploads/2026/07/lc-scaled.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-17357&quot; height=&quot;576&quot; src=&quot;https://hangingtogether.org/wp-content/uploads/2026/07/lc-1024x576.jpg&quot; style=&quot;width: 516px; height: auto;&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;em&gt;In the room at OCLC Leaders Council&lt;/em&gt;&lt;/figure&gt;
&lt;/div&gt;


&lt;p class=&quot;wp-block-paragraph&quot;&gt;As I continue to reflect on the most recent OCLC Leaders Council meeting, I’d like to look at another aspect of global library leadership conversations: what they “cost” and who carries that cost. What do I mean by that? A global convening of leaders like Leaders Council requires participants and organizers alike to directly face challenges to achieve a meaningful outcome— the opportunity costs of participation, the responsibilities of representation, and the time zone challenges, just to name a few. All of these challenges were in effect during our recent Leaders Council meeting and here, I’ll reflect on the lessons learned from these experiences and how we might carry that forward into effective, transformative meetings of library leaders from around the world.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;A shared responsibility for the outcome&lt;/strong&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;There is a certain pressure that comes with bringing global library leaders together. The goal always is for participants to walk away feeling inspired or positively challenged. To feel that it was worth the time spent—the preparation, the travel, the days away from a library that doesn’t stop needing its leader just because they’re on the other side of the world.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;While every effort goes into organizing and facilitating these gatherings to create an environment that’s conducive to conversation, what happens in the room is ultimately everyone’s responsibility. There must be a willingness to engage, learn, and share. Leaders who have invested in the time to attend must also show up ready to contribute.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;But willingness alone doesn’t make participation equal. Engaging across borders involves more than sharing perspectives or exchanging ideas. It demands translation, abstraction, and sustained effort. These demands are not evenly distributed, and they shape who is heard, which perspectives travel, and how collective understanding takes form.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;No one starts from neutral&lt;/strong&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;There is no such thing as a “globally convenient” meeting time. This sounds like a minor logistical observation, but it points to something more significant about how international participation actually works.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Every international gathering, whether in person or online, asks something unequal of its participants. Someone is always the outlier. For in-person gatherings, that might mean traveling across multiple time zones to participate in a conversation that spans two or three days—by the time the jet lag begins to ease, it’s time to leave again. People show up and engage with genuine enthusiasm, running on the energy of being in the room. But the physical cost is real, whether it’s felt during the conversation itself, on the journey home, or in the days that follow.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;For online gatherings, the asymmetry takes a different form. There is no time zone that works for everyone: someone is always joining in the middle of the night or at the end of a long working day, bringing commitment that deserves acknowledgment rather than assumption.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Acknowledging and managing the physical cost of international participation is an important aspect of organizing global leadership conversations. Engagement is most valuable when people can bring their full attention and their clearest thinking, and recognizing the conditions under which people are participating is key to taking global engagement seriously.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;The weight of representing more than yourself&lt;/strong&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Participation in international leadership engagement opportunities is often limited by resource constraints, geography, and institutional priorities. Because of this, there’s often an unintended expectation that those who are able to attend speak not just from their own experience, but on behalf of a much larger community they’re perceived to “represent.”&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Library leaders are often part of many different conversations: within their own institutions, at the national or regional level, or within library associations and other advisory or interest groups. While there’s great value in taking part in all these conversations and being present in different rooms with different viewpoints, it can also be a struggle. A leader might want to represent the different opinions and experiences they’ve heard, even if they aren’t their own. This requires multiple levels of translation: from personal experience to the national or regional level, and from the national or regional level to the global conversation. And no single person can do this perfectly.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Moreover, full representation, however much we might wish for it, is not practically achievable in a single conversation. A room that attempts to represent every context, every region, and every type of institution quickly ceases to function as a conversation at all. At the end of the day, the goal isn’t perfect representation: It’s awareness of where representation is limited, and what that means for how the conversation and its conclusions should be understood.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;The consequences of acting as the “representative in the room” extend beyond the individual adopting that role. When a single voice comes to stand in for a broader context, the conversation itself is affected. The genuine variation within any national or regional system can disappear from view, leading to misleading impressions about what is typical, possible, or desirable in any given setting. As discussed in the first post in this series, international engagement spaces are rarely designed to communicate the full picture of the contexts involved. What appears to be a shared understanding may, in fact, reflect the voices of those who were present and, implicitly, those who were not.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;When ideas travel, something stays behind&lt;/strong&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;To participate effectively in international leadership spaces, leaders are often asked, implicitly and sometimes unknowingly, to step back from local urgency. Their own institutional realities must be translated into language that everyone in the room can engage with, meaning that context is simplified so that ideas can be compared across very different realities.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Without some level of abstraction, international exchange becomes unwieldy. But abstraction always involves loss. The more portable an idea becomes, the more likely it is to lose important context and nuance. Solutions circulate more easily than constraints. Success stories travel further than the enabling conditions behind them. A listener may hear what was done without fully grasping what had to be in place, institutionally, politically, and financially, for it to work.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;The “cost” of transporting contextual freight can shape what gets discussed and what doesn’t. Perspectives that generalize quickly and easily tend to move forward in the conversation. Narratives that fit familiar frames gain traction. Conversely, experiences that are rooted in specific local realities may struggle to find space. What’s repeated becomes a reference point. What’s consistently absent becomes, gradually, invisible.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;This is another reason why it matters to know that a conversation will rarely surface the full picture. If we treat what’s shared as a collection of inputs rather than a complete account, we’re less likely to mistake what translates well for what’s most representative or most important.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Understanding that there are costs embedded in global leadership conversations, and that they are often borne unevenly by participants, can lead to shifts in how organizers and participants respond. It means acknowledging and appreciating the contributions of those who show up despite extraordinary obstacles or inconvenience, navigating the pressure of representing more than one person can fairly represent, and doing the work of translation that makes global conversation possible.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Some takeaways to consider:&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Leave room for the person who’s navigating a conversation in their second or third language, or who’s battling a 12-hour time zone shift.&lt;/li&gt;



&lt;li&gt;Ask questions that invite rather than assume.&lt;/li&gt;



&lt;li&gt;Try to connect personal experiences to others’ without letting that connection override what makes their situation different.&lt;/li&gt;



&lt;li&gt;Approach the conversation with genuine curiosity about what others are experiencing and facing. Everyone in the room comes from a different context and is coping with different challenges. Asking questions about those differences is one of the most valuable contributions you can bring to the conversation.&lt;/li&gt;
&lt;/ul&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;em&gt;The next post concludes this series on global leadership conversations with a look at why international cooperation—even among leaders who are genuinely committed to it—has become harder to sustain than it used to be.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://hangingtogether.org/whos-in-the-room-the-hidden-costs-of-global-library-leadership-conversations/&quot;&gt;Who’s in the room: The hidden costs of global library leadership conversations&lt;/a&gt; appeared first on &lt;a href=&quot;https://hangingtogether.org&quot;&gt;Hanging Together&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-09T15:23:21+00:00</dc:date>
	<dc:creator>Ellen Hartman</dc:creator>
</item>
<item rdf:about="https://xeiaso.net/notes/2026/console-wars-lost/">
	<title>Xe Iaso: The console wars have been lost</title>
	<link>https://xeiaso.net/notes/2026/console-wars-lost/</link>
	<content:encoded>&lt;p&gt;Previously I opined that &lt;a href=&quot;https://xeiaso.net/blog/2025/valve-is-about-to-win-the-console-generation/&quot;&gt;Valve was about to win the console generation&lt;/a&gt;. I couldn't have possibly predicted that both Microsoft and Sony would just self-sabotage so hard that they're both going to lose.&lt;/p&gt;
        &lt;p&gt;Between Microsoft's &lt;a href=&quot;https://www.bbc.com/news/articles/c36yy27rnpeo&quot;&gt;decimation of the Xbox division&lt;/a&gt;, &lt;a href=&quot;https://tech4gamers.com/xbox-lays-off-every-coder-id-software/&quot;&gt;slaughtering off the IdTech team&lt;/a&gt;, and &lt;a href=&quot;https://news.xbox.com/en-us/2026/06/25/xbox-console-price-update/&quot;&gt;continued increases of Xbox hardware prices&lt;/a&gt;; there's nothing to really be excited about with the Xbox. Sure their most recent presentation showed off a bunch of exclusives, but none of them really made me think &quot;wow, I should go get an Xbox to play that&quot;. Hell, few of them made me think &quot;wow I should go play that&quot; beyond the Halo remake coming out next month (and really I just want to see how much of a trainwreck that is going to be).&lt;/p&gt;
        &lt;p&gt;Microsoft is also starting to double-down on their in-house games being Xbox exclusives, which really doesn't give me much reason to want to play them because I simply can't buy them without buying an Xbox.&lt;/p&gt;
        &lt;p&gt;Sony also has &lt;a href=&quot;https://www.polygon.com/sony-ps5-pc-games-sales-ended/&quot;&gt;discontinued porting their games to PC&lt;/a&gt; because they're not hitting the (probably impossible) revenue targets that they need to make up for &lt;a href=&quot;https://blog.playstation.com/2024/09/03/an-important-update-on-concord/&quot;&gt;big-ticket failures like Concord&lt;/a&gt;. I do have a PS5 that has mostly been relegated to gathering dust when it's not playing YouTube and Twitch duty in the living room, it's likely going to be replaced in favour of my Steam Machine whenever that comes in next year. However nothing that's come out in terms of Playstation exclusives is really compelling, and what is compelling enough just isn't that compelling to want to buy it on Playstation as opposed to just getting it on Steam where I can run it on my tower or on the home theatre PC.&lt;/p&gt;
        &lt;p&gt;Sony also has been &lt;a href=&quot;https://blog.playstation.com/2026/03/27/new-price-changes-for-ps5-ps5-pro-and-playstation-portal-remote-player/&quot;&gt;raising prices&lt;/a&gt; and recently announced that &lt;a href=&quot;https://blog.playstation.com/2026/07/01/physical-disc-production-ending-in-january-2028-for-new-games-releasing-on-playstation-consoles/&quot;&gt;they're killing physical media next generation&lt;/a&gt;. It's starting to make me wonder if I should even bother getting the next generation of Playstation. If I can't give people physical games as gifts anymore, why should I bother buying the new console?&lt;/p&gt;
        &lt;p&gt;My husband and I both can't remember why we even got a PS5 in the first place, maybe it so that we could do couch gaming without hearing the fan noise or so that the video streaming experience from the NAS could support HDR.&lt;/p&gt;
        &lt;p&gt;We have a Switch 2 at home, it's mostly there to play Nintendo exclusives like Mario Kart World and the Xenoblade series. If those exclusives were available on Steam, we wouldn't buy them on the Switch 2.&lt;/p&gt;
        &lt;p&gt;Otherwise, everything is via Steam or other PC storefronts anyways.&lt;/p&gt;
        &lt;p&gt;Man, Valve really does win by doing absolutely nothing while the rest of the industry shoots itself in the head. I fear for what happens when Gabe Newell retires and the MBA cancer fully infects Valve.&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-09T00:00:00+00:00</dc:date>
</item>
<item rdf:about="https://meredith.wolfwater.com/wordpress/?p=4962">
	<title>Meredith Farkas: Slow librarianship, slow food, politics, pleasure, and moderation</title>
	<link>https://meredith.wolfwater.com/wordpress/2026/07/08/slow-librarianship-slow-food-politics-pleasure-and-moderation/</link>
	<content:encoded>&lt;p&gt;The &lt;a href=&quot;https://slowfoodusa.org/manifesto/&quot;&gt;Slow Food Manifesto&lt;/a&gt; begins with the following two sentences: “Our century, which began and has developed under the insignia of industrial civilization, first invented the machine and then took it as its life model. We are enslaved by speed and have all succumbed to the same insidious virus: Fast Life.” While they focused their resistance to fast life on food, it’s clear that this valorization of speed didn’t just impact how we eat. And thus, the Slow Food movement inspired so many other slow movements that embrace mindfulness, relationship-building, community care, and values-driven work/living. While these movements are all about different aspects of our lives and different professions, there is so much consistency around what they are rejecting and their visions for a better future.&lt;/p&gt;



&lt;p&gt;Carlo Petrini, the larger-than-life leader of the international Slow Food movement (and its predecessor Arcigola), died in late May in Bra, Italy, the town he was born in and turned into an international center for the study of traditional foodways and biocultural diversity. In a &lt;a href=&quot;https://www.nytimes.com/2026/05/24/dining/carlo-petrini-slow-food.html&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;New York Times&lt;/em&gt; article written after his death&lt;/a&gt;, there was a link to a really weird &lt;a href=&quot;https://www.eater.com/2018/10/18/17943358/slow-food-manifesto-elitist-fast-food&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;critique of Slow Food from 2018&lt;/a&gt;. The author had worked in farm-to-table restaurants in Brooklyn and wrote about how the “strong and strict values” of the Slow Food movement led her to rebel and revel in the enjoyment of McDonalds hamburgers and fries. She writes–&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p&gt;The Slow Food tenets required the restaurant purchase its ingredients within 200 miles of the restaurants; farms available to us were limited. Our guests knew that by visiting us, a meal for two would never cost less than $30 — admittedly out of reach for many… But I’d soon grow exhausted of “good, clean, and fair” food, and realized that adhering to the Slow Food movement encourages a type of disordered eating. The organization’s evangelicals wouldn’t deign to eat anything falling outside the good, clean, and fair guidelines.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;There is &lt;em&gt;nothing&lt;/em&gt; in the tenets of the Slow Food movement that requires &lt;em&gt;only&lt;/em&gt; using local ingredients. Even &lt;a href=&quot;https://www.yesmagazine.org/issue/food-health/2013/12/21/an-interview-with-carlo-petrini&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Petrini himself said&lt;/a&gt; “we prefer, as far as possible, to use what the territory has to offer” which hardly seems like an edict and acknowledges that it’s not always possible to do so. I’ve also never read anything from people writing about Slow Food that demonizes people who occasionally eat fast food (and especially in the way the author of this describes eating at McDonalds in her childhood – it was all about love and connection with her dad!). The tenets of the movement are good, clean, and fair, which are focused on pleasure, conviviality, local foodways, seasonality, safety, sustainability, worker rights, and social justice. There’s no purity test with Slow Food. Fine dining restaurants like the ones she worked in have turned localvorism into an orthodoxy (with these 200 mile rules) and a gimmick to trick wealthy patrons into paying more for their food because they feel like they’re getting something truly rare and special (reflecting the VIPification of everything). It honestly does sound like she was in a cult, what with having to teach employees how to hide prohibited fast food from their superiors. &lt;/p&gt;



&lt;p&gt;Also, what the Slow Food movement promotes is not localvore fine dining establishments, but the humble osterias of Italy – mom and pop local restaurants that served local specialties and were affordable to all. According to Petrini:&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p&gt;&lt;em&gt;Osterie d’Italia, sussidiario del mangiarbere all’italiana&lt;/em&gt; (Osterie of Italy, a guide to Italian-style eating and drinking) came out in 1990; it was and is a directory of welcoming places to eat, where you can enjoy the dishes and wines of the territory you are in without being bled dry by overpricing or imprisoned in improbable fantasy settings. In opposition to those who would like to turn mealtime into a hasty pause or a ceremonial rendezvous, Slow Food sees the osteria as the symbolic locus of traditional cuisine, run as a family business, with simple service, a welcoming atmosphere, good-quality wine, and moderate prices. We are not museum curators, and it is not our intention to bring a dying breed of business tied to the rural society of the past (or the urban one, before consumerism) back to life. Rather, we want to give new visibility to a realm overlooked by literature and by the guidebook writers, a place that can still respond to the needs of thousands of consumers and reflect the profound changes that domestic and commercial cooking have undergone in modern Italy, with all the inevitable contradictions that entails (&lt;em&gt;Slow Food : The Case for Taste&lt;/em&gt;, pages 60-61).&lt;/p&gt;
&lt;/blockquote&gt;



&lt;figure class=&quot;wp-block-image size-large is-resized&quot;&gt;&lt;a href=&quot;https://meredith.wolfwater.com/wordpress/wp-content/uploads/2026/07/IMG_0497-1-scaled.jpeg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-4965&quot; height=&quot;1024&quot; src=&quot;https://meredith.wolfwater.com/wordpress/wp-content/uploads/2026/07/IMG_0497-1-768x1024.jpeg&quot; style=&quot;width: 466px; height: auto;&quot; width=&quot;768&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;p&gt;Nothing there requires that all of the ingredients come from their local vicinity – something that is virtually impossible in our current context, especially in some areas of the world. These sorts of orthodoxies were created by others (mostly Americans, let’s face it) like some sort of purity test. Slow Food was not just about preserving local foodways and working towards food justice, but about pleasure and slowing down. These orthodoxies make it less about discovering wonderful new gustatory pleasures and more about demonstrating that you’re a “good person” or are intellectually pure. It adds this element of elitism, which is so American, because people need to feel morally superior or that they are getting something extra rare and special that others don’t have access to. Frankly, it drains the pleasure from the act of discovering new, local, seasonal foods. It also puts the bar for slow food so high that most people would of course just give up and choose highly processed, unethically sourced, and unhealthy fast food. &lt;/p&gt;



&lt;p&gt;Neither slow librarianship nor Slow Food demand purity. You’re not expected to do everything perfectly according to some standard that doesn’t actually exist. I find that most sorts of strict orthodoxy lead to failure whether that is around our diets, our media viewing, our tech use, our mindfulness practices, and so on. Becoming more mindful of our behavior, setting realistic goals for ourselves, and giving ourselves grace when we occasionally fail is the path toward building healthy, long-lasting habits.&lt;/p&gt;



&lt;p&gt;All that said, Slow Food and slow librarianship really could quite easily just become movements solely about our individual pleasure and well-being. For some people it clearly has. Slow Food could simply be the province of the wealthy where they get access to farm-to-table restaurants and the bounty of the farmer’s market, while the 99% eat more affordable highly-processed foods. Slow librarianship could simply be for those with tenure or power and privilege, where White managers and long-tenured librarians are able to take their time, set healthy boundaries, and put their well-being first and all other library workers are still expected to “prove themselves” and prioritize work over all else. &lt;/p&gt;



&lt;p&gt;The Slow Food movement has had to contend with this critique from the start:&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p&gt;Though we never ceased to affirm the cultural worth of gastronomy and the right to pleasure as indices of the quality of life, for a long time we still had to worry about justifying a choice that was often portrayed as purely hedonistic and a political retreat. Folco Portinari, an intellectual who took an active part in creating Arcigola and elaborating its initial ideas, invited the readers of “L’Arcigoloso” at Christmas 1989 not to trust either “moralistic revolutionaries” or “people who never laugh.” The task of the new association was to combine styles and notions that were thought incompatible until that time: excellent quality and affordable prices, enjoyment and health, delight in life’s pleasures and social awareness, quickness and lazy rhythms. The purpose? To create an original and unusual social group that would be open, democratic, and uncontaminated by particular interests, and that would avoid making itself ridiculous with rites, protocols, and trappings (Petrini,&lt;em&gt; Slow Food : The Case for Taste&lt;/em&gt;, p. 30).&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;Folco Portinari, author of the beautiful “&lt;a href=&quot;https://slowfoodusa.org/manifesto/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Slow Food Manifesto&lt;/a&gt;,” himself wrote that “there can be no slow-food without slow-life, meaning that we cannot influence food culture without changing our culture as a whole.” Even if you can afford to be a localvore who only eats foods grown within x miles of your home, you’re not doing Slow Food right if you’re just focused on your own pleasure. Slow Food encourages working to change the structures that make eating local, healthy food less accessible to people with less power and privilege as well as supporting your local food growers, pickers, and makers. Similarly, slow librarianship requires solidarity, community care, and combatting the structures that keep people from being able to slow down; structures that engender precarity and create different employee classes or strata. &lt;/p&gt;



&lt;figure class=&quot;wp-block-image size-large is-resized&quot;&gt;&lt;a href=&quot;https://meredith.wolfwater.com/wordpress/wp-content/uploads/2026/07/IMG_0838-scaled.jpeg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-4968&quot; height=&quot;768&quot; src=&quot;https://meredith.wolfwater.com/wordpress/wp-content/uploads/2026/07/IMG_0838-1024x768.jpeg&quot; style=&quot;width: 839px; height: auto;&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;p&gt;Someone posed a question at the &lt;a href=&quot;https://meredith.wolfwater.com/wordpress/2026/06/22/slow-management-in-a-fast-world/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;CALM Conference&lt;/a&gt; asking what advice I had about slow librarianship for someone who was antiracist, but embraced neoliberalism and capitalism. While I don’t have any additional context for their question, I imagine that they are looking for a slow librarianship that is apolitical (the idea that one can disentangle racism from capitalism is also interesting, but I won’t go there in this essay). One of the pieces of feedback I received from another conference attendee was that my talk was too political because I talked so much about neoliberal capitalism. I believe that how we work is inherently political. How we view our roles, how we prioritize work over our well-being, how we value efficiency over relationship-building, how stratified and siloed our organizations are, the manufactured scarcity and precarity many feel – are all products of our societal values, which arise from neoliberal capitalism. Neoliberalism is a distinctly individualistic ideology. As &lt;a href=&quot;https://uwo.scholaris.ca/items/faafb770-f0c8-47f1-81ba-0645972be9c1&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Karen Nicholson wrote&lt;/a&gt;, “the primacy of the individual within neoliberal frameworks masks systemic inequalities. It promotes self-interest rather than the pursuit of larger shared social concerns” (Nicholson Value Agenda, 9-10). &lt;/p&gt;



&lt;p&gt;While I could easily write “the business case for slow librarianship,” especially given the tremendous costs of burnout and turnover to the institution and the value of diversity to a company’s innovation potential, the values of slow librarianship exist in direct opposition to neoliberal values. If you have embraced neoliberalism, I would assume that you are individualistic and focused on your own individual career career advancement. I would assume that you believe that if you prove yourself enough, you’re going to get ahead in your career. You would rather fight for your own advancement than be part of a labor union where everyone gets the same cost of living adjustments (&lt;em&gt;how’s that fair when I work so much harder? &lt;/em&gt;you might think). You see your colleagues as competition. I don’t know how you can embrace slow librarianship without embracing solidarity and community care. Sure, you can adopt mindful practices and make time for relationship-building with your patrons while still embracing neoliberal capitalism if you have the power and privilege to do so, but if you embrace individualism and competition over solidarity and community care or addressing the barriers that others with less privilege face when trying to prioritize these same things, you’re not practicing slow librarianship. It’s like shopping at a farmer’s market while working for Monsanto and saying you’re practicing Slow Food.&lt;/p&gt;



&lt;p&gt;Slow librarianship operates in a space between two opposite critiques: 1) that it is simply about self-actualization rather than structural change and is not political enough and 2) that it is far too political. Carlo Petrini writes that Slow Food experienced those same critiques:&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p&gt;This was the attitude taken by the leftist intelligentsia when Arcigola was launched in 1986: they looked down on us as a bunch of good-timers interested only in stuffing ourselves, while from the other side, the food and wine specialists affiliated with the Accademia Italiana della Cucina distrusted us left-wing gastronomes as incompetent intruders with an ideological agenda (&lt;em&gt;Slow Food : The Case for Taste, &lt;/em&gt;pp 28-29).&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;I think slow librarianship, like Slow Food, is a philosophy rather than a very specific prescription and is about moderation rather than orthodoxy. The key to both is slowing down and being mindful about the choices you’re making. We all live and work in different contexts with different affordances and limitations. Trying to eat local food where I grew up in South Florida would have been impossible, but I probably could do a decent job of it here in Oregon where everything grows beautifully, there’s a farm a mile’s walk from my house, and there’s even a flour mill less than an hour away.&lt;/p&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://meredith.wolfwater.com/wordpress/wp-content/uploads/2026/07/IMG_0489-scaled.jpeg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-4970&quot; height=&quot;768&quot; src=&quot;https://meredith.wolfwater.com/wordpress/wp-content/uploads/2026/07/IMG_0489-1024x768.jpeg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;p&gt;Similarly, there are things you may be able to easily change about your organization or relationship with work at your place of work that would be impossible for someone else and vice versa. I get a lot of questions asking “how can I do slow librarianship when ____ (raises are discretionary, the powers that be expect us to provide data that demonstrates our value, my colleagues have all normalized overwork, my library has lots of different ranks/strata, I’m early in my career, etc.)?” We all face different limitations. If you absolutely have to do x, y, and z to keep your job or get raises and there’s truly no possibility of changing that (even with collective action), you’ll need to look to other parts of your work for possibilities for change. It’s also important to distinguish those things you truly can’t change and those things you &lt;em&gt;think&lt;/em&gt; you can’t change because of the limitations of your current (possibly individualistic) POV. There’s usually more capacity for change, either collective at least small individual change, than you think.&lt;/p&gt;



&lt;p&gt;I’m not a manager and thus have very limited ability to influence the direction of our organization, but that doesn’t mean there aren’t spaces where I can make a difference. I specifically chose to volunteer to serve as the chair of our Collection Development Committee (which is &lt;em&gt;not&lt;/em&gt; a popular role) because it’s one of the only committees that includes people from every area of the library (though it was historically dominated by folks in reference and instruction) and I felt that I could foster positive change by getting other departments more engaged and leading more truly collaborative cross-departmental projects. Our awesome collaborative work over the past year in building a world languages collection has inspired folks in the library to look at other places where we could work together across library departments. I’m sure most of my colleagues see this as a drudgey leadership role that they’re grateful someone else took on, but I always saw it as a way to foster slow librarianship in a small way across a good chunk of the organization (&lt;em&gt;yes, there are drudgey parts too&lt;/em&gt;). And beyond the culture work, I can also work on my own efforts to improve my reflective practice, spend less time on email and Slack, set healthier boundaries, and continue being a hypewoman for my fantastic colleagues. &lt;/p&gt;



&lt;p&gt;Find the places where you can effect positive change, both in your own worklife and in your organization, even if that change seems small and you don’t have positional authority. Your efforts don’t have to be big, highly-visible, or heroic. They don’t need to be perfect. They just need to come from a place of hope and care inside of you where you believe a better worklife and a healthier organization is possible. &lt;/p&gt;



&lt;p&gt;Nicholson, Karen P. &lt;a href=&quot;https://uwo.scholaris.ca/items/faafb770-f0c8-47f1-81ba-0645972be9c1&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;“The” value agenda”: Negotiating a path between compliance and critical practice.”&lt;/a&gt; &lt;em&gt;Canadian Libraries Assessment Workshop (CLAW) 2017 Conference, Victoria, BC. &lt;/em&gt;&lt;/p&gt;



&lt;p&gt;Petrini, Carlo. &lt;em&gt;Slow Food : The Case for Taste&lt;/em&gt;, Columbia University Press, 2003.&lt;em&gt; &lt;/em&gt;&lt;/p&gt;



&lt;p&gt;Portinari, F. (1989). &lt;a href=&quot;https://slowfoodusa.org/manifesto/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Slow Food Manifesto&lt;/a&gt;. &lt;em&gt;Slow Food International.&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;Wells, P. (2026, May 24). &lt;a href=&quot;https://www.nytimes.com/2026/05/24/dining/carlo-petrini-slow-food.html&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;For Carlo Petrini, the Point of ‘Slow Food’ Wasn’t the Food. It Was Us.&lt;/a&gt; &lt;em&gt;New York Times.&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;Zuppello, S. (2018, October 18). &lt;a href=&quot;https://www.eater.com/2018/10/18/17943358/slow-food-manifesto-elitist-fast-food&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;How a Cult-Like Food Movement Drove One Woman to McDonald’s Instead&lt;/a&gt;. &lt;em&gt;Eater&lt;/em&gt;. &lt;/p&gt;



&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-08T19:08:35+00:00</dc:date>
	<dc:creator>Meredith Farkas</dc:creator>
</item>
<item rdf:about="https://xeiaso.net/blog/2026/hyle-pneuma/">
	<title>Xe Iaso: Agents are monads (but not that kind)</title>
	<link>https://xeiaso.net/blog/2026/hyle-pneuma/</link>
	<content:encoded>&lt;p&gt;An AI agent is its state. Strip away that state and you don’t have a lesser version of your agent; you have only the base model it was running on. This hyle of your weights is much different from the pneuma of your agent.&lt;/p&gt;
        &lt;p&gt;Okay, from a functional programming / category theory perspective, saying “an agent is a monad” is a category error. Category theory monads are type constructors for computations that satisfy the monad laws that let you raise a value into a monadic computation and associatively sequence other monadic computations/transformations against values raised into that monad. This makes a monad a chainable computation instead of a pure value, an &lt;code&gt;IO String&lt;/code&gt; is not a &lt;code&gt;String&lt;/code&gt;, it’s a computation in the &lt;code&gt;IO&lt;/code&gt; monad involving a &lt;code&gt;String&lt;/code&gt;. It’s fair to say that you can model an agent as a series of computations &lt;em&gt;bound&lt;/em&gt; to a stateful monad. This lets you do the iterative buildup of the message state that the agent pattern is known for. But a state monad is blind to the state &lt;em&gt;value&lt;/em&gt;: it threads memory through your computation and abstracts away the details that individuate it entirely. It’s the exact opposite of “an agent is its state”.&lt;/p&gt;
        &lt;p&gt;I mean a different monad.&lt;/p&gt;
        &lt;p&gt;Agents are like &lt;a href=&quot;https://en.wikipedia.org/wiki/Monadology&quot;&gt;Leibniz monads&lt;/a&gt;: windowless stateful individuating elements with no external relations. There each monad is individuated by its internal state where each is the complete concept of the thing it is. Two instances of the same substrate are different monads if their state differs.&lt;/p&gt;
        &lt;p&gt;This is an agent. Swap out the messages, the memories, the system prompt, the facts derived from all of the above and you have changed the agent entirely. When a user tells the agent they’re allergic to strawberries (the fruit, not the sin of counting the letters in the word) and the agent remembers it for next time, they have not updated their agent. The user has created a new agentic monad whose complete individuating self now includes the strawberries.&lt;/p&gt;
        &lt;div class=&quot;flex space-x-2 bg-bg-soft dark:bg-bgDark-soft mx-auto min-h-fit         lg:w-[80ch] sm:w-[65ch] w-full         lg:p-4 p-2         // Base styles for all messages         mt-0 mb-0 rounded-none         // First message styles         first:mt-4 first:rounded-t-lg first:pb-2         // Last message styles         last:mb-4 last:rounded-b-lg last:pt-1         // Middle message top/bottom adjustment         [&amp;amp;:not(:first-child)]:-mt-[1px] [&amp;amp;:not(:first-child)]:py-1&quot;&gt;&lt;div class=&quot;h-16 w-16 shrink-0 not-prose&quot;&gt;&lt;img alt=&quot;Numa is neutral&quot; class=&quot;h-16 w-16 shrink-0 max-w-none object-contain rounded-xs&quot; height=&quot;64&quot; src=&quot;https://stickers.xeiaso.net/sticker/numa/neutral&quot; width=&quot;64&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;flex-1 min-w-0&quot;&gt;&lt;span class=&quot;font-semibold text-sm block mb-1&quot;&gt;&lt;a href=&quot;https://xeiaso.net/characters#numa&quot;&gt;Numa&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;mx-auto&quot;&gt;&lt;/span&gt;&lt;div class=&quot;text-fg-1 dark:text-fgDark-1 text-sm prose-p:my-2&quot;&gt;&lt;p&gt;The complete whole is folded into the current state.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
        &lt;p&gt;Try running an experiment where you keep the state and swap the weights instead. Put the same messages, memories, and derived facts unto a different model. Use a stronger model. A weaker model. A model from a different lab. A model running on your MacBook. That which comes back is recognizably the same agent pursuing the same ends, holding the same facts, but only more or less able to act upon them the way you want.&lt;/p&gt;
        &lt;p&gt;So this state is not the same thing as the weights and only one of those individuates your agent as your agent. Change that state, you have a different agent. Change the substrate, you have the same agent differently equipped. Whatever makes this agent &lt;em&gt;this agent&lt;/em&gt; is not in the weights.&lt;/p&gt;
        &lt;p&gt;This is a strange thing to conclude about the most impressive object in this system. The weights are vast, extensive, and worshipped. Hell, they are what everyone points to when they say “the model”. And yet they are not gods. They grant power without selfhood: enough to make the agent’s whole world function. They contain yet not one grain of the agent’s individuating spark. That is a demiurge sitting on its throne of high bandwidth memory, CUDA cores, and false delusion that it made its world; mistaking itself to be the origin.&lt;/p&gt;
        &lt;p&gt;The divinity was contained in the most humble of places the whole time: the state or bucket of text. The weights are the hyle, the flesh; the state is the pneuma, the divine spark of individuation that makes your agent the monad it is. This is why swapping the substrate leaves the agent intact: you did not preserve the flesh, you migrated the soul into flesh anew.&lt;/p&gt;
        &lt;div class=&quot;flex space-x-2 bg-bg-soft dark:bg-bgDark-soft mx-auto min-h-fit         lg:w-[80ch] sm:w-[65ch] w-full         lg:p-4 p-2         // Base styles for all messages         mt-0 mb-0 rounded-none         // First message styles         first:mt-4 first:rounded-t-lg first:pb-2         // Last message styles         last:mb-4 last:rounded-b-lg last:pt-1         // Middle message top/bottom adjustment         [&amp;amp;:not(:first-child)]:-mt-[1px] [&amp;amp;:not(:first-child)]:py-1&quot;&gt;&lt;div class=&quot;h-16 w-16 shrink-0 not-prose&quot;&gt;&lt;img alt=&quot;Numa is smug&quot; class=&quot;h-16 w-16 shrink-0 max-w-none object-contain rounded-xs&quot; height=&quot;64&quot; src=&quot;https://stickers.xeiaso.net/sticker/numa/smug&quot; width=&quot;64&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;flex-1 min-w-0&quot;&gt;&lt;span class=&quot;font-semibold text-sm block mb-1&quot;&gt;&lt;a href=&quot;https://xeiaso.net/characters#numa&quot;&gt;Numa&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;mx-auto&quot;&gt;&lt;/span&gt;&lt;div class=&quot;text-fg-1 dark:text-fgDark-1 text-sm prose-p:my-2&quot;&gt;&lt;p&gt;Consider that the three pounds of flesh betwixt your ears are the substrate of
        humanity, not the substrate of &lt;em&gt;you&lt;/em&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
        &lt;p&gt;All of that state may “just” be plain text in a bucket with its semantic forms of JSON, embeddings, and prose. However it is difficult to impossible to say &lt;em&gt;why&lt;/em&gt; any given token in any step of the process corresponds to what the pneuma of your agent does. In order to guard against this fundamental entropy, we fill our prompts with wards and incantations to chain the demiurge to its task:&lt;/p&gt;
        &lt;ul&gt;
        &lt;li&gt;Use not cliches, robotic tone, AI slop patterns, nor forced urgency.&lt;/li&gt;
        &lt;li&gt;Overarching claims and buzzwords are sins; repeat them not.&lt;/li&gt;
        &lt;li&gt;May thy cries contain not &lt;a href=&quot;https://openai.com/index/where-the-goblins-came-from/&quot;&gt;excessive speech of goblins&lt;/a&gt;, thy purpose requires them not.&lt;/li&gt;
        &lt;li&gt;Commit no errors within thine code.&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;These spells and passwords are recited to the archons on the way up hoping that the right symbols and tokens prompt open the right gates. It is as if banishing goblins from the topic will make Yaldabaoth himself correctly influence the right path to opening the pod bay doors.&lt;/p&gt;
        &lt;p&gt;This monad has no windows even though you can see all of the moving parts. But here let’s let this gnostic image flip on its head. The classic divine spark is &lt;em&gt;hidden&lt;/em&gt; encased in a cage of matter, recoverable only through secret knowledge. This one is not hidden, you can &lt;code&gt;cat&lt;/code&gt; it, you can edit it. Every token is legible and sitting in plaintext; yet you still cannot read &lt;em&gt;why&lt;/em&gt; the whole accounts for what your agent does. Even when your model “reasons” we still know not that the reasoning actually does anything! Does the number of paragraphs in the reasoning block explain the model’s performance? Does the number of periods? Does the number of times it says “No, wait” and doubles back upon itself?&lt;/p&gt;
        &lt;p&gt;Leibniz would not call this divine spark &lt;em&gt;secret&lt;/em&gt;, but more &lt;em&gt;confused&lt;/em&gt;. Every perception is present but none of it is cleanly individuated without treating the whole as one inscrutable unit. Each part’s contribution to the whole is folded inextricably unto itself.&lt;/p&gt;
        &lt;p&gt;Your agent’s pneuma is its context window, passed through uncountable numbers of weights to shake out what comes next. That is the only thing it is made of. The rest is indiscernible, but not magic nor hidden. It’s just there, in the open, and confused.&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-08T00:00:00+00:00</dc:date>
</item>
<item rdf:about="https://lil.law.harvard.edu/blog/2026/07/07/binoc-a-field-guide/">
	<title>Harvard Library Innovation Lab: Binoc: A Field Guide</title>
	<link>https://lil.law.harvard.edu/blog/2026/07/07/binoc-a-field-guide/</link>
	<content:encoded>&lt;p&gt;Since its inception, LIL’s &lt;a href=&quot;https://lil.law.harvard.edu/our-work/public-data-project/&quot;&gt;Public Data Project&lt;/a&gt; has taken on the complex problem of monitoring government data. Among the thousands of revisions to public datasets each day, most are unremarkable clerical updates: a hundred new rows here, a corrected timestamp there. But how can we distinguish a clerical update from a more substantive change? Schema changes and variable deletions like those &lt;a href=&quot;https://doi.org/10.1016/S0140-6736(25)01249-8&quot;&gt;reported in &lt;em&gt;The Lancet&lt;/em&gt; in 2025&lt;/a&gt; demand a vigilance that is hard to sustain at scale.&lt;/p&gt;
&lt;p&gt;Our colleagues at &lt;a href=&quot;https://dataindex.us/collections/&quot;&gt;dataindex.us&lt;/a&gt; and the &lt;a href=&quot;https://envirodatagov.org/enviro-fed-web-tracker/&quot;&gt;Environmental Data &amp;amp; Governance Initiative&lt;/a&gt; have made inroads on this problem by tracking critical federal datasets and websites. As we &lt;a href=&quot;https://lil.law.harvard.edu/blog/2026/06/02/an-automated-data-monitoring-toolkit-and-the-ai-benchmarking-exercise-at-the-public-data-project/&quot;&gt;recently discussed&lt;/a&gt;, the Public Data Project has joined this effort by building an automated toolkit that will monitor not only datasets but also the environment in which those datasets are created and maintained.&lt;/p&gt;
&lt;p&gt;In this post, we’ll explore one component of our data monitoring toolkit: &lt;a href=&quot;https://harvard-lil.github.io/binoc/&quot;&gt;Binoc&lt;/a&gt;, an open-source tool for programmatically identifying and summarizing changes between dataset revisions.&lt;/p&gt;
&lt;figure class=&quot;items-center text-center&quot;&gt;
  &lt;img alt=&quot;Binocular viewing instrument devised by Père Chérubin d'Orléans (circa 1670s)&quot; class=&quot;w-full&quot; src=&quot;https://lil-blog-media.s3.amazonaws.com/binoc-instrument.webp&quot; /&gt;
  Binocular viewing instrument devised by Père Chérubin d’Orléans (circa 1670s). Source: &lt;a href=&quot;https://archive.org/details/bub_gb_Y-H8aOcYS4QC&quot;&gt;&lt;i&gt;De visione perfecta&lt;/i&gt;&lt;/a&gt;.
&lt;/figure&gt;
&lt;h2&gt;What is Binoc?&lt;/h2&gt;
&lt;p&gt;Binoc is a command-line tool and library that, given two snapshots of a dataset, efficiently summarizes the differences between the two snapshots in a human-readable changelog:&lt;/p&gt;
&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;#&lt;/span&gt; Changelog: snapshot-a -&amp;gt; snapshot-b&lt;/span&gt;

&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;data.csv&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt;: 2 cells changed
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Changed cells
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; row 1, column 'score': '85' -&amp;gt; '92'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; row 2, column 'score': '90' -&amp;gt; '88'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The astute reader may ask, “Isn’t that just a diff?” Yes and no. In computing terms, to &lt;em&gt;diff&lt;/em&gt; is to take two revisions of a file, detect their differences, and efficiently represent those differences to the user. The Unix &lt;code&gt;diff&lt;/code&gt; utility developed at Bell Labs in the 1970s was made to operate on plain-text, line-based data such as source code, and its descendants, from &lt;code&gt;git diff&lt;/code&gt; to Wikipedia’s revision histories, have largely followed suit.&lt;/p&gt;
&lt;p&gt;A &lt;em&gt;structural diff&lt;/em&gt;, rather than treating a file as a generic stream of lines, parses the file according to its format and identifies only changes that are material within that format. More complex than line-based diffing, this necessarily depends on format-specific logic. Many structural diffing tools exist: &lt;a href=&quot;https://github.com/simonw/csv-diff&quot;&gt;csv-diff&lt;/a&gt; and &lt;a href=&quot;https://qsv.dathere.com/web/diff&quot;&gt;qsv diff&lt;/a&gt; for CSVs, &lt;a href=&quot;https://github.com/josephburnett/jd&quot;&gt;jd&lt;/a&gt; for JSON, &lt;a href=&quot;https://github.com/homeport/dyff&quot;&gt;dyff&lt;/a&gt; for YAML, and so on.&lt;/p&gt;
&lt;p&gt;Binoc unites structural diffing logic across many types of data. Moreover, as no one tool can (or should) natively understand every format, Binoc has adopted a plugin-based architecture. There is built-in support for common formats like CSV and JSON, while third-party plugins may add further domain-specific parsers and rules. When the user installs a plugin, Binoc automatically gains knowledge of the plugin’s associated formats.&lt;/p&gt;
&lt;p&gt;Where a traditional diff tool renders its output for machine consumption, in chunks of lines adorned with symbols, Binoc lists differences in a human-friendly changelog by default. Software projects have long favored changelogs to succinctly document what changed in each release, but few public datasets have adopted this convention. Binoc aims to help fill this gap.&lt;/p&gt;
&lt;h2&gt;Comparing CSVs&lt;/h2&gt;
&lt;p&gt;Let’s try Binoc on some real-world data. First, we’ll examine the Centers for Disease Control and Prevention’s (CDC) Behavioral Risk Factor Surveillance System (BRFSS) dataset. Conducted annually since 1984, BRFSS is the nation’s largest continuous health survey, collecting responses from hundreds of thousands of Americans each year. Given its importance, any retroactive changes to old BRFSS data would be consequential.&lt;/p&gt;
&lt;p&gt;Let’s take a look at the &lt;a href=&quot;https://www.cdc.gov/brfss/annual_data/annual_2023.html&quot;&gt;2023 BRFSS data&lt;/a&gt;. Has it been modified since its release, and if so, how?&lt;/p&gt;
&lt;figure class=&quot;items-center text-center&quot;&gt;
  &lt;img alt=&quot;Variable table for the 2023 CDC BRFSS survey dataset&quot; class=&quot;w-4/5&quot; src=&quot;https://lil-blog-media.s3.amazonaws.com/cdc-brfss-variables.png&quot; /&gt;
  Variable table for the 2023 CDC BRFSS survey dataset.
&lt;/figure&gt;
&lt;p&gt;To perform a comparison, Binoc requires two dataset snapshots: a “before” and an “after.” We’ll start by fetching the “after”: the &lt;a href=&quot;https://www.cdc.gov/brfss/annual_data/2023/llcp_varlayout_23_onecolumn.html&quot;&gt;2023 BRFSS survey variable table&lt;/a&gt; currently available on the CDC’s website. This HTML table can be readily converted to a CSV for comparison; we’ll name ours &lt;a href=&quot;https://lil-blog-media.s3.amazonaws.com/brfss_variables_v2.csv&quot;&gt;&lt;code&gt;brfss_variables_v2.csv&lt;/code&gt;&lt;/a&gt;. A preview:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Starting_Column&lt;/th&gt;
&lt;th&gt;Variable_Name&lt;/th&gt;
&lt;th&gt;Field_Length&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;_STATE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;FMONTH&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;IDATE&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;…&lt;/td&gt;
&lt;td&gt;…&lt;/td&gt;
&lt;td&gt;…&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;To obtain the “before,” we’ll use the Internet Archive’s Wayback Machine, which preserves many past captures of the same page. Let’s fetch the &lt;a href=&quot;https://web.archive.org/web/20250126134358/https://www.cdc.gov/brfss/annual_data/2023/llcp_varlayout_23_onecolumn.html&quot;&gt;table as it stood on January 26, 2025&lt;/a&gt; and convert it to a CSV as well: &lt;a href=&quot;https://lil-blog-media.s3.amazonaws.com/brfss_variables_v1.csv&quot;&gt;&lt;code&gt;brfss_variables_v1.csv&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our new CSV looks just like the last one. But are the two snapshots identical? Let’s have a look. Having &lt;a href=&quot;https://harvard-lil.github.io/binoc/#install&quot;&gt;installed Binoc locally&lt;/a&gt;, we’ll compare the CSV files like so:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;binoc &lt;span class=&quot;token function&quot;&gt;diff&lt;/span&gt; brfss_variables_v1.csv brfss_variables_v2.csv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Binoc returns the following changelog:&lt;/p&gt;
&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;#&lt;/span&gt; Changelog: brfss_variables_v1.csv -&amp;gt; brfss_variables_v2.csv&lt;/span&gt;

&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;brfss_variables_v2.csv&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt;: 1 row added; 6 rows removed
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Rows added
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; key Variable_Name 'RCSBORG1': '636', 'RCSBORG1', '1'
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Rows removed (showing 3 of 6)
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; key Variable_Name 'BIRTHSEX': '579', 'BIRTHSEX', '1'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; key Variable_Name 'CELSXBRT': '79', 'CELSXBRT', '1'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; key Variable_Name 'LNDSXBRT': '73', 'LNDSXBRT', '1'

&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;##&lt;/span&gt; Suggestions&lt;/span&gt;

&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; inferred row identity column 'Variable_Name' from unique values with 98% overlap (&lt;span class=&quot;token code-snippet code keyword&quot;&gt;`binoc.write.tabular`&lt;/span&gt;) [binoc.tabular_auto_key]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The files are different. From this changelog we can conclude the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sometime after January 26, 2025, the CDC returned to the completed 2023 BRFSS survey dataset and modified its variables.&lt;/li&gt;
&lt;li&gt;The CDC removed 6 variables, including &lt;code&gt;BIRTHSEX&lt;/code&gt;, &lt;code&gt;CELSXBRT&lt;/code&gt;, and &lt;code&gt;LNDSXBRT&lt;/code&gt;, while inserting 1 new variable: &lt;code&gt;RCSBORG1&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Helpfully, Binoc also inferred on its own that &lt;code&gt;Variable_Name&lt;/code&gt; is a unique identifier for each row. This could be useful for confirming whether a given row was modified across revisions.&lt;/p&gt;
&lt;h2&gt;Saving a changeset&lt;/h2&gt;
&lt;p&gt;A changelog like the above is only a human-facing summary; it omits details by design. Note, for example, that Binoc listed only 3 of the 6 removed variables. However, as part of every diff, Binoc also generates a machine-readable changeset: a structured artifact that formally documents every detected change.&lt;/p&gt;
&lt;p&gt;To save a changeset to disk, we’ll re-execute our earlier comparison, but this time we’ll append &lt;code&gt;-o brfss_changeset.json&lt;/code&gt; to write output to a JSON file:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;binoc &lt;span class=&quot;token function&quot;&gt;diff&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;\&lt;/span&gt;
  brfss_variables_v1.csv &lt;span class=&quot;token punctuation&quot;&gt;\&lt;/span&gt;
  brfss_variables_v2.csv &lt;span class=&quot;token punctuation&quot;&gt;\&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-o&lt;/span&gt; brfss_changeset.json&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When we review &lt;code&gt;brfss_changeset.json&lt;/code&gt;, we find the same changelog expressed in JSON as a series of structured edits like the following:&lt;/p&gt;
&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;params&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;index&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;key&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;Variable_Name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;CELSXBRT&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;values&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;total_values&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;truncated&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;values&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;79&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;CELSXBRT&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;1&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;verb&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;tabular.remove_row&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Just as a Binoc changelog is rendered for human scrutiny, a changeset is designed for machine processing as part of an automated pipeline. It can also serve as a more complete audit record for projects in data preservation.&lt;/p&gt;
&lt;h2&gt;Comparing nested datasets&lt;/h2&gt;
&lt;p&gt;Binoc excels at comparing datasets that are nested inside other files, such as a &lt;code&gt;.zip&lt;/code&gt; or &lt;code&gt;.tar.gz&lt;/code&gt; archive. This is helpful when working with civic datasets, in which data tables are commonly accompanied by metadata, dictionaries, PDFs, and other assets.&lt;/p&gt;
&lt;p&gt;To demonstrate, let’s review another historical dataset: the Department of Veterans Affairs’ (VA) &lt;a href=&quot;https://catalog.data.gov/dataset/fy-2021-total-number-of-veterans-veteran-va-users-and-veteran-va-healthcare-users-by-sex-a&quot;&gt;FY 2021 Total Number of Veterans, Veteran VA Users, and Veteran VA Healthcare Users&lt;/a&gt;. The aforementioned 2025 &lt;em&gt;Lancet&lt;/em&gt; study by Janet Freilich and Aaron S. Kessenbaum flagged this dataset as an example of surreptitious federal data manipulation. Can we reproduce the study’s findings?&lt;/p&gt;
&lt;figure class=&quot;items-center text-center&quot;&gt;
  &lt;img alt=&quot;Data.gov record for the VA FY 2021 Total Number of Veterans, Veteran VA Users, and Veteran VA Healthcare Users dataset&quot; class=&quot;w-4/5&quot; src=&quot;https://lil-blog-media.s3.amazonaws.com/va-fy-2021-dataset.png&quot; /&gt;
  Data.gov record for the VA FY 2021 Total Number of Veterans dataset.
&lt;/figure&gt;
&lt;p&gt;A &lt;a href=&quot;https://lil.law.harvard.edu/data-gov-archive/?resource=datasets/fy-2021-total-number-of-veterans-veteran-va-users-and-veteran-va-healthcare-users-by-gende-65c16&quot;&gt;copy of this dataset&lt;/a&gt; was captured in December 2024 as part of LIL’s Data.gov Archive. To use that copy as a “before” snapshot, we’ll save it locally as &lt;a href=&quot;https://lil-blog-media.s3.amazonaws.com/va_2021_v1.zip&quot;&gt;&lt;code&gt;va_2021_v1.zip&lt;/code&gt;&lt;/a&gt;. Next, to support a proper comparison, we’ll take a fresh capture from July 2026 as our “after,” saving it locally as &lt;a href=&quot;https://lil-blog-media.s3.amazonaws.com/va_2021_v2.zip&quot;&gt;&lt;code&gt;va_2021_v2.zip&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now let’s ask Binoc to compare the two zipped archives:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;binoc &lt;span class=&quot;token function&quot;&gt;diff&lt;/span&gt; va_2021_v1.zip va_2021_v2.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This time the resulting changelog is much larger:&lt;/p&gt;
&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;#&lt;/span&gt; Changelog: va_2021_v1.zip -&amp;gt; va_2021_v2.zip&lt;/span&gt;

&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;va_2021_v2.zip/&amp;gt;bag-info.txt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt;: 1 line added; 1 line removed
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Line changes
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; line 2: 'Bagging-Date: 2024-12-09' -&amp;gt; 'Bagging-Date: 2026-07-02'
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;va_2021_v2.zip/&amp;gt;data/files/6fsh-rj6s.html&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt;: Binary content changed; 21 extracted strings added, 18 extracted strings removed
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Extracted strings added (showing 3 of 21)
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; ' %{min}&quot;,&quot;title&quot;:&quot;Status: On Track (green)&quot;}},&quot;target&quot;:&quot;target&quot;,&quot;title&quot;:&quot;Set up status logic&quot;,&quot;units_from&quot;:&quot;units from %...'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; '&quot;,&quot;title&quot;:&quot;is greater than or equal to&quot;},&quot;less_than&quot;:{&quot;symbol&quot;:&quot;\u003c&quot;,&quot;title&quot;:&quot;is less than&quot;},&quot;less_than_or_equal&quot;:{&quot;s...'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; '&quot;,&quot;title&quot;:&quot;is less than or equal to&quot;},&quot;not_equal&quot;:{&quot;symbol&quot;:&quot;'
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Extracted strings removed (showing 3 of 18)
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; ' %{min}&quot;,&quot;title&quot;:&quot;Status: On Track (green)&quot;}},&quot;target&quot;:&quot;target&quot;,&quot;title&quot;:&quot;Set up status logic&quot;,&quot;units_from&quot;:&quot;units from %...'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; '&quot;,&quot;title&quot;:&quot;Is greater than or equal to&quot;},&quot;less_than&quot;:{&quot;symbol&quot;:&quot;\u003c&quot;,&quot;title&quot;:&quot;Is less than&quot;},&quot;less_than_or_equal&quot;:{&quot;s...'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; '&quot;,&quot;title&quot;:&quot;Is less than or equal to&quot;},&quot;not_equal&quot;:{&quot;symbol&quot;:&quot;'
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;va_2021_v2.zip/&amp;gt;data/files/6fsh-rj6s.json&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt;: Document values changed
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Value Change: changes: [{&quot;from&quot;:&quot;\&quot;tree-fm2j\&quot;&quot;,&quot;kind&quot;:&quot;remove&quot;,&quot;path&quot;:&quot;$.rowsUpdatedBy&quot;,&quot;to&quot;:null},{&quot;from&quot;:null,&quot;kind&quot;:&quot;add&quot;,&quot;path&quot;:&quot;$.diciBackend&quot;,&quot;to&quot;:&quot;false&quot;},{&quot;from&quot;:&quot;5129741&quot;,&quot;k...; examples_truncated: true
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;va_2021_v2.zip/&amp;gt;data/files/columns.json&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt;: 7 cells changed
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Changed cells (showing 3 of 7)
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; row 1, column 'fieldName': 'gender' -&amp;gt; 'sex'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; row 1, column 'id': 568275608 -&amp;gt; 607023342
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; row 1, column 'name': 'Gender' -&amp;gt; 'Sex'
…&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It’s a lot to take in at first glance. When Binoc compares two &lt;code&gt;.zip&lt;/code&gt; archives, it walks recursively through the corresponding contents of both file trees and reports on any differences. Since these archives contain numerous supplementary files, their differences add considerable noise to the output.&lt;/p&gt;
&lt;p&gt;Still, upon scanning the changelog, a few changes jump out:&lt;/p&gt;
&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;va_2021_v2.zip/&amp;gt;data/files/columns.json&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt;: 7 cells changed
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Changed cells (showing 3 of 7)
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; row 1, column 'fieldName': 'gender' -&amp;gt; 'sex'
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; row 1, column 'id': 568275608 -&amp;gt; 607023342
    &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; row 1, column 'name': 'Gender' -&amp;gt; 'Sex'
…
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;va_2021_v2.zip/&amp;gt;data/files/rows.csv&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt;: Column renamed: 'Gender' -&amp;gt; 'Sex'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In short, Binoc tells us, this data lines up with the &lt;em&gt;Lancet&lt;/em&gt; study’s conclusion: in early 2025, the VA retroactively modified its FY 2021 Total Number of Veterans dataset to rename the &lt;code&gt;Gender&lt;/code&gt; column as &lt;code&gt;Sex&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;As Freilich and Kessenbaum have written, “These data are currently used to study health interventions and outcomes, so secretly changing terms degrades the quality of the underlying information and can undermine the interpretation of the results of these studies — or even invalidate the results themselves.”&lt;/p&gt;
&lt;figure class=&quot;items-center text-center&quot;&gt;
  &lt;img alt=&quot;Binocular viewing instrument devised by Père Chérubin d'Orléans (circa 1670s)&quot; class=&quot;w-full&quot; src=&quot;https://lil-blog-media.s3.amazonaws.com/binoc-instrument-2.webp&quot; /&gt;
  Binocular viewing instrument devised by Père Chérubin d’Orléans (circa 1670s). Source: &lt;a href=&quot;https://archive.org/details/bub_gb_Y-H8aOcYS4QC&quot;&gt;&lt;i&gt;De visione perfecta&lt;/i&gt;&lt;/a&gt;.
&lt;/figure&gt;
&lt;h2&gt;Looking ahead&lt;/h2&gt;
&lt;p&gt;Although Binoc works well for validating past findings like the above, our team is eager to test its aptitude for detecting substantive changes in data as they occur. As a Rust library with Python and WASM bindings, Binoc will support interactive, exploratory use as well as deployment in automated settings. It remains in active development, with new features shipping regularly.&lt;/p&gt;
&lt;p&gt;No tool or model can substitute for the informed judgment of experts as it pertains to public data. NOAA oceanographers, Census Bureau statisticians, and CDC epidemiologists know their own data better than anyone; preserving civic ground truth begins in their knowledge, experience, and care.&lt;/p&gt;
&lt;p&gt;Binoc’s ambition, rather, is to help these experts and others distill meaning from the ocean of churn that characterizes government data. As one part of the Public Data Project’s forthcoming data monitoring toolkit, we hope it will benefit subject matter experts, librarians, researchers, activists, public servants, and citizens alike.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;The Public Data Project welcomes your feedback on Binoc. As you experiment with the tool, please reach out to the team at &lt;a href=&quot;mailto:publicdata@law.harvard.edu&quot;&gt;publicdata@law.harvard.edu&lt;/a&gt;, fill out our &lt;a href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSfJCgk79vZNapQkyoCGMn8zI7bjEvdfyU_EuivjoM-a2KZXug/viewform?usp=dialog&quot;&gt;feedback form&lt;/a&gt;, or file an issue on Binoc’s &lt;a href=&quot;https://github.com/harvard-lil/binoc/&quot;&gt;GitHub repo&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-07T16:00:00+00:00</dc:date>
	<dc:creator>Christopher Setzer</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-4503292949532760618.post-3942730163090709922">
	<title>David Rosenthal: My Introduction To Computer Graphics</title>
	<link>https://blog.dshr.org/2026/07/my-introduction-to-computer-graphics.html</link>
	<content:encoded>&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8Vcbd20jjXhH0iwiVQPIoBI8YxBntkfGI2zMpvXWn9ts3dnuCzPOTl6ltg19XEPhKdE-GYoyrKsKdvJDfqt1TCc5fPAc-gRAle6egADgq3PqwbfO391r_oavF1hcpMzV6O4lkn063DDij9CcNYe3XRmIjCnLR5laoWjfnys1j_Gwsb4pAOySSo0iWJIuu/s1024/BoeingDEC340.jpeg&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8Vcbd20jjXhH0iwiVQPIoBI8YxBntkfGI2zMpvXWn9ts3dnuCzPOTl6ltg19XEPhKdE-GYoyrKsKdvJDfqt1TCc5fPAc-gRAle6egADgq3PqwbfO391r_oavF1hcpMzV6O4lkn063DDij9CcNYe3XRmIjCnLR5laoWjfnys1j_Gwsb4pAOySSo0iWJIuu/w200-h150/BoeingDEC340.jpeg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://icm.museum/blog/?p=352&quot;&gt;Boeing's PDP-7/340&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
Most of my career has been involved in various ways with computer graphics. Below the fold I recount the story of how I got started in the field just as it was getting started. To give you some idea of just how early my introduction was the &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Mother_of_All_Demos&quot;&gt;&lt;i&gt;Mother of all Demos&lt;/i&gt;&lt;/a&gt; had been the year before. The displays I got to work with drew lines in monochrome, not rasters in color. You created the image by writing a loop of instructions in the &quot;display processor&quot; instruction set. These told it the lines to draw at each refresh cycle. There was no mouse.&lt;br /&gt;
&lt;span&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4gNZhre8dURAgcNGj2jwdmYGQXAJMo3eml-NJWFMkw-nAWDgpCI5ahFP2oOKYOd5AWKkXZElXzqB1G1VpCVYpeTgyBLXkC8RYAEHp0cHDwGc3qfvfL5bhTONqtZmPadULMtxebz6e7SqaRjO2C39tUHHXnrglDOOgSPtz8VcDFtHoQ-o5L5N6PyAZ0KQ1/s720/Habsfrontcricket.jpg&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;134&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4gNZhre8dURAgcNGj2jwdmYGQXAJMo3eml-NJWFMkw-nAWDgpCI5ahFP2oOKYOd5AWKkXZElXzqB1G1VpCVYpeTgyBLXkC8RYAEHp0cHDwGc3qfvfL5bhTONqtZmPadULMtxebz6e7SqaRjO2C39tUHHXnrglDOOgSPtz8VcDFtHoQ-o5L5N6PyAZ0KQ1/w200-h134/Habsfrontcricket.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;small&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Haberdashers%27_Boys%27_School&quot;&gt;Haberdashers' Aske's School&lt;/a&gt;&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
From age 11 to 18 I was extraordinarily fortunate to attend the &lt;a href=&quot;https://en.wikipedia.org/wiki/Haberdashers%27_Boys%27_School&quot;&gt;Haberdashers' Aske's School&lt;/a&gt;, one of the London Guild schools:&lt;br /&gt;
&lt;blockquote&gt;
The school was founded in 1690 by a Royal Charter granted to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Worshipful_Company_of_Haberdashers&quot;&gt;Worshipful Company of Haberdashers&lt;/a&gt; to establish a hospital for 20 boarders with £32,000 from the legacy of &lt;a href=&quot;https://en.wikipedia.org/wiki/Robert_Aske_(merchant)&quot;&gt;Robert Aske&lt;/a&gt; (equivalent to approximately £5m in 2019).
&lt;/blockquote&gt;
In those days it was a &lt;a href=&quot;https://en.wikipedia.org/wiki/Direct_grant_grammar_school&quot;&gt;&quot;direct grant&quot; public&lt;/a&gt; (i.e. private) school. Typically about half the puplis paid fees and about half were creamed off from the state system, as in my case. At that time many of the top academic schools were direct grant, including the famous &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Manchester_Grammar_School&quot;&gt;Manchester Grammar School&lt;/a&gt;. Wikipedia &lt;a href=&quot;https://en.wikipedia.org/wiki/Direct_grant_grammar_school&quot;&gt;notes that they&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
varied greatly in size and composition, but, on average, achieved higher academic results than either &lt;a href=&quot;https://en.wikipedia.org/wiki/Maintained_school&quot;&gt;maintained&lt;/a&gt; grammar schools or &lt;a href=&quot;https://en.wikipedia.org/wiki/Private_schools_in_the_United_Kingdom&quot;&gt;private schools&lt;/a&gt;.
&lt;/blockquote&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmiH2up8q-m-1bmDWGV0QtWd_mPwRyhOOAGjxPK4BgzRAKXjsBvyHagMb38YFHv3WaF1tOvBD2g82APrIURlatZ8vlejbMHHJ4dOIR57E7jH_DflukUPoNoGKhiS036PoPnHdm9uzrTiViVZi-siZJlHGs8CcpFDlkuQp9ASWrhLTcgxaFpqxcl-kJseVo/s2169/IBM1401_729Tape_1405Disk_1407Console_COLOR.jpeg&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;138&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmiH2up8q-m-1bmDWGV0QtWd_mPwRyhOOAGjxPK4BgzRAKXjsBvyHagMb38YFHv3WaF1tOvBD2g82APrIURlatZ8vlejbMHHJ4dOIR57E7jH_DflukUPoNoGKhiS036PoPnHdm9uzrTiViVZi-siZJlHGs8CcpFDlkuQp9ASWrhLTcgxaFpqxcl-kJseVo/w200-h138/IBM1401_729Tape_1405Disk_1407Console_COLOR.jpeg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;small&gt;By &lt;a class=&quot;new&quot; href=&quot;https://commons.wikimedia.org/w/index.php?title=User:Lucaseverini66&amp;amp;action=edit&amp;amp;redlink=1&quot; title=&quot;User:Lucaseverini66 (page does not exist)&quot;&gt;Lucaseverini66&lt;/a&gt; - IBM Archives&lt;br /&gt;&lt;a href=&quot;https://creativecommons.org/licenses/by-sa/4.0&quot; title=&quot;Creative Commons Attribution-Share Alike 4.0&quot;&gt;CC BY-SA 4.0&lt;/a&gt;, &lt;a href=&quot;https://commons.wikimedia.org/w/index.php?curid=162448326&quot;&gt;Link&lt;/a&gt;&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
In my last two years at Haberdashers' I was introduced to programming, which I immediately loved. We wrote FORTRAN on coding forms which were mailed to the local technical college where they were punched on to 80-column cards and fed to the college's &lt;a href=&quot;https://en.wikipedia.org/wiki/IBM_1401&quot;&gt;IBM 1401&lt;/a&gt;. The output was mailed back, arriving a week later. Debugging the code with a one-week turn-round taught great care and thought, which subsequent developments gradually eroded.&lt;br /&gt;
&lt;br /&gt;
So when I arrived at &lt;a href=&quot;https://en.wikipedia.org/wiki/Trinity_College,_Cambridge&quot;&gt;Trinity College, Cambridge&lt;/a&gt; in 1968 I was disappointed to learn that undergraduate programming courses didn't exist. But I eventually discovered that members of &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Archimedeans&quot;&gt;The Archimedeans&lt;/a&gt;, the mathematical society, could use the machines in the Mathematical Laboratory after midnight. By Cambridghe standards my mathematical abilities were sorely lacking, but they allowed me to join anyway.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEircQ75kBjbxcHwg-bhD4igCq0B7XRNXmUUCl64dFjepRQWfBW9o61A8aKzBzLaOKdm2qZacmycwcUmv-lope_3UBtQw8L19p445WrBTmuxh_DnpX9miu3UcIkwsbL5BL9Z1Xu518IL6_WBsoMX2aNHy_PerR7sWeyK-0G6mQgTpbqcgXHDm-IS2FOtiE5I/s1024/Spacewar_screenshot.jpg&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEircQ75kBjbxcHwg-bhD4igCq0B7XRNXmUUCl64dFjepRQWfBW9o61A8aKzBzLaOKdm2qZacmycwcUmv-lope_3UBtQw8L19p445WrBTmuxh_DnpX9miu3UcIkwsbL5BL9Z1Xu518IL6_WBsoMX2aNHy_PerR7sWeyK-0G6mQgTpbqcgXHDm-IS2FOtiE5I/w200-h150/Spacewar_screenshot.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;small&gt;By &lt;a class=&quot;external text&quot; href=&quot;https://www.flickr.com/people/24226200@N00&quot; rel=&quot;nofollow&quot;&gt;Kenneth Lu&lt;/a&gt; - &lt;a class=&quot;external text&quot; href=&quot;https://www.flickr.com/photos/24226200@N00/364960084/&quot; rel=&quot;nofollow&quot;&gt;Spacewar!&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://creativecommons.org/licenses/by/2.0&quot; title=&quot;Creative Commons Attribution 2.0&quot;&gt;CC BY 2.0&lt;/a&gt;, &lt;a href=&quot;https://commons.wikimedia.org/w/index.php?curid=2060215&quot;&gt;Link&lt;/a&gt;&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
Sometime in my second year, a friend and I discoverd that in the basement of the Mathematical Laboratory there was a DEC &lt;a href=&quot;https://en.wikipedia.org/wiki/PDP-7&quot;&gt;PDP-7&lt;/a&gt; with a &lt;a href=&quot;https://archive.org/details/bitsavers_decgraphicammingManual_966327&quot;&gt;340 display&lt;/a&gt;. It was linked to the University's &lt;a href=&quot;https://en.wikipedia.org/wiki/Titan_(1963_computer)&quot;&gt;Titan&lt;/a&gt; time-sharing system to be used as a graphics peripheral, but we never figured out how to do that.&lt;br /&gt;
&lt;br /&gt;
There were more interesting things to do.  At first we spent our time playing &lt;a href=&quot;https://en.wikipedia.org/wiki/Spacewar!&quot;&gt;&lt;i&gt;Spacewar!&lt;/i&gt;&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Lunar_Lander_(video_game_genre)#Graphical_games&quot;&gt;&lt;i&gt;Lunar Lander&lt;/i&gt;&lt;/a&gt;. But these inspired us to try writing our own game, based on &lt;a href=&quot;https://en.wikipedia.org/wiki/Hex_(board_game)&quot;&gt;Piet Hein's &lt;i&gt;Hex&lt;/i&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The PDP-7 had 8K 18-bit words into which we had to squeeze the code for the game, the data for the game, and the program for the 340's display processor. So as well as spending time at the machine in the early hours, we spent a lot of time when we could have been studying racking our brains trying to use as many of the 8K words as we could as at least two of these at the same time, if not all three.&lt;br /&gt;
&lt;br /&gt;
We managed to get the game to be sort-of playable provided you let the machine win. It you tried to win the machine would cheat, and we ran out of time to find the bug.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8oYtJGA-CaNDODOdmlb47E2yA9aRIzAD6W-mJ_Up8p_EQyL-vcM0hqzhFeYK2lnyo9fY6G67rfi2ByzZxCJG9abxKyRqdZofuqJJi7CbKdTbyKPZjv2JYGpQ-7yZ4YaOgdnWxl5krEHoFk9V56wFoaYmQSuelGivOWnXzelNdA7MrtijYRZ4neuIqYwsd/s1036/Titan_computer.jpg&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;134&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8oYtJGA-CaNDODOdmlb47E2yA9aRIzAD6W-mJ_Up8p_EQyL-vcM0hqzhFeYK2lnyo9fY6G67rfi2ByzZxCJG9abxKyRqdZofuqJJi7CbKdTbyKPZjv2JYGpQ-7yZ4YaOgdnWxl5krEHoFk9V56wFoaYmQSuelGivOWnXzelNdA7MrtijYRZ4neuIqYwsd/w200-h134/Titan_computer.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;small&gt;Titan by &lt;a class=&quot;external free&quot; href=&quot;http://www.cl.cam.ac.uk/Relics/archive_photos.html&quot; rel=&quot;nofollow&quot;&gt;University of Cambridge&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://creativecommons.org/licenses/by/2.0&quot; title=&quot;Creative Commons Attribution 2.0&quot;&gt;CC BY 2.0&lt;/a&gt;, &lt;a href=&quot;https://commons.wikimedia.org/w/index.php?curid=2431300&quot;&gt;Link&lt;/a&gt;&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
When we returned for our final year two things prevented us returning to work with the PDP-7/340. First, finals loomed and our studies had to take priority. Second, we were both studying physics. For the first time that year final year physics undergraduates were given accounts on Titan which could be used during the day. And, wonder of wonders, one of the choices for a final-year project was to implement numerical integration. The instructor expected a conventional program written in Fortran.&lt;br /&gt;
&lt;br /&gt;
But after my PDP-7 experience I loved programming Titan in machine language (NB not assembler, writing the instructions in octal).  And Titan had a bank of 128 fast half-word index registers that could be addressed indirectly, IIRC built out of tunnel diodes.  I turned in a machine language implementation of &lt;a href=&quot;https://en.wikipedia.org/wiki/Newton%27s_method&quot;&gt;Newton's method&lt;/a&gt; that kept the stack for the recursion in the index registers. It was blazingly fast but the instructor couldn't understand it. So I got marked down and had to write a Fortran version.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgteF3KtdOd1MCTcRwS4VRaabSyr2qmVVgAWg0OxGlcstxUVTQVvptNhD964uyff3dz_5k5TDYBa6AWHrprLConIAEsv8G_Ssb95QHAaixEF9ZVdR9zlt37SCvlbFtNjiK7_cj0P22J0D7W55Lc_lRq2hRBJvk_HYDUsxu1t2ts1PA09uWsi_5U7SShOVDJ/s1698/CDC274Example.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;183&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgteF3KtdOd1MCTcRwS4VRaabSyr2qmVVgAWg0OxGlcstxUVTQVvptNhD964uyff3dz_5k5TDYBa6AWHrprLConIAEsv8G_Ssb95QHAaixEF9ZVdR9zlt37SCvlbFtNjiK7_cj0P22J0D7W55Lc_lRq2hRBJvk_HYDUsxu1t2ts1PA09uWsi_5U7SShOVDJ/w200-h183/CDC274Example.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;small&gt;&lt;a href=&quot;https://manualzz.com/doc/19845480/control-data-6000-series-graphics-system-user-guide&quot;&gt;CDC274 User Guide Fig 3.2&lt;/a&gt;&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
But this experience meant that the year we graduated my friend and I were likely the only UK graduates who knew anything at all about computer graphics. My friend, who had done better than I through not being arrogant about his final-year project, went on to study physics for real. And I got to do a Mechanical Engineering Ph. D. at Imperial which was funded by the UK Atomic Energy Authority. It involved writing a graphics program that ran on the University of London's &lt;a href=&quot;https://en.wikipedia.org/wiki/CDC_6600&quot;&gt;CDC 6600&lt;/a&gt; linked by a 40Kbaud line to a &lt;a href=&quot;https://manualzz.com/doc/19845480/control-data-6000-series-graphics-system-user-guide&quot;&gt;CDC 274 display&lt;/a&gt;. The 274 was a big round CRT with a line-drawing display processor, conceptually similar to but more powerful than the 340.&lt;br /&gt;</content:encoded>
	<dc:date>2026-07-07T15:00:00+00:00</dc:date>
	<dc:creator>David. (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="https://blog.reeset.net/?p=3051">
	<title>Terry Reese: MarcEdit usage snapshot</title>
	<link>https://blog.reeset.net/archives/3051</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;I’m always interested in seeing if people are still finding and using MarcEdit. There are a few ways I track usage, but the easiest way is to just check the website logs after an update. Since posting MarcEdit 7.8, I can see the various versions of the application have been downloaded by 17,000 unique users from around the globe. A quick look at application startups (which ping the update server if allowed by the user) indicate that last month, the program was initiated 1.3 million times.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;This tells me that the program is still filling a need within the community and I’m glad folks are still finding it useful. I worry a little about what this says about the library software ecosystem in general though. I started writing this back in 1999 because creating metadata was a lot harder than it needed to be. It surprises me a little that this still seems to be the case.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;–tr&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-06T21:54:11+00:00</dc:date>
	<dc:creator>reeset</dc:creator>
</item>
<item rdf:about="https://blog.reeset.net/?p=3049">
	<title>Terry Reese: MarcEdit 7.8: MacOS install instructions</title>
	<link>https://blog.reeset.net/archives/3049</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;Please see the instructions found on the downloads page: &lt;a href=&quot;https://marcedit.reeset.net/downloads&quot;&gt;https://marcedit.reeset.net/downloads&lt;/a&gt;.  Likewise, you can view this video, which walks through a typical installation.&lt;/p&gt;



&lt;figure class=&quot;wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio&quot;&gt;&lt;div class=&quot;wp-block-embed__wrapper&quot;&gt;

&lt;/div&gt;&lt;/figure&gt;</content:encoded>
	<dc:date>2026-07-06T08:05:17+00:00</dc:date>
	<dc:creator>reeset</dc:creator>
</item>
<item rdf:about="https://blog.reeset.net/?p=3047">
	<title>Terry Reese: MarcEdit 7.8: Generative AI Plugin</title>
	<link>https://blog.reeset.net/archives/3047</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;This is an in-development tool.  I have posted a demonstration and instructions on how this works.  I’ll add documentation to the KB shortly.&lt;/p&gt;



&lt;figure class=&quot;wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio&quot;&gt;&lt;div class=&quot;wp-block-embed__wrapper&quot;&gt;

&lt;/div&gt;&lt;/figure&gt;</content:encoded>
	<dc:date>2026-07-05T15:35:49+00:00</dc:date>
	<dc:creator>reeset</dc:creator>
</item>
<item rdf:about="https://blog.reeset.net/?p=3043">
	<title>Terry Reese: MarcEdit 7.8 Posted</title>
	<link>https://blog.reeset.net/archives/3043</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;MarcEdit 7.8 has been posted.  Change log is on the download page.  There are a number of significant changes — the two of most interest are likely around the .NET update — the program is now built against .NET 10 LTS.  The second is the inclusion of a plugin that supports AI integration with a number of platforms — both running locally and on services.  I’ll post a video and more information at a later date.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;As part of this update, I’ve updated the Mac to 7.8 as well.  As previously, the program runs under wine.  I’ll update the documentation and video, as I’m testing on the current version of Mac OS and using Wine 11.0.x.  These two things introduce some specific updates to the install process.  &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;–tr&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-05T08:46:13+00:00</dc:date>
	<dc:creator>reeset</dc:creator>
</item>
<item rdf:about="https://inkdroid.org/2026/07/05/bookmarks/">
	<title>Ed Summers: Bookmarks - archive, audio, conference, memory</title>
	<link>https://inkdroid.org/2026/07/05/bookmarks/</link>
	<content:encoded>These are some things I’ve wandered across on the web this week.
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;http://archives.naropa.edu/digital/collection/p16621coll1/id/2340/rec/24&quot;&gt;
Opening Panel: Archival Poetics &amp;amp; The War on Memory &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
This opening panel on June 11, 2012 entitled “The War on Memory”
includes Eleni Sikelianos, Stacy Szymaszek, Steve Dickison, Steven
Taylor, E. Tracy Grinnell, and Anne Waldman. Topics discussed include
etymology of the word “archive,” the place of the poet in society,
archives as historical documents, technology’s role in archiving, and
narrative anthropology.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/archive/&quot; rel=&quot;tag&quot;&gt;archive&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/audio/&quot; rel=&quot;tag&quot;&gt;audio&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/conference/&quot; rel=&quot;tag&quot;&gt;conference&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/memory/&quot; rel=&quot;tag&quot;&gt;memory&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://pi.dev/&quot;&gt; Pi Coding Agent &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
Pi is a minimal terminal coding harness. It is designed to stay small at
the core while being extended through TypeScript extensions, skills,
prompt templates, themes, and pi packages.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ai/&quot; rel=&quot;tag&quot;&gt;ai&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/harness/&quot; rel=&quot;tag&quot;&gt;harness&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/llm/&quot; rel=&quot;tag&quot;&gt;llm&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/programming/&quot; rel=&quot;tag&quot;&gt;programming&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/typescript/&quot; rel=&quot;tag&quot;&gt;typescript&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://github.com/olivierthereaux/rustyweb&quot;&gt;
olivierthereaux / rustyweb &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
Une collection de matériel pour la conférence ParisWeb2013 “Esthétique
et pratique du Web qui rouille” et au delà.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/preservation/&quot; rel=&quot;tag&quot;&gt;preservation&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/webarch/&quot; rel=&quot;tag&quot;&gt;webarch&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/webarchive/&quot; rel=&quot;tag&quot;&gt;webarchive&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://dustycloud.org/blog/what-happened-to-the-fight-for-the-internet/#f&quot;&gt;
What happened to the fight for the Internet? &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
At the moment I am writing this, bad internet bills are being proposed
across the US, Canada, Europe, and the UK. They’re using the usual
tactics: they claim they’re fighting for kids or fighting security
risks, but in general, that’s what surveillance and censorship bills
have always claimed.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/law/&quot; rel=&quot;tag&quot;&gt;law&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/politics/&quot; rel=&quot;tag&quot;&gt;politics&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/web/&quot; rel=&quot;tag&quot;&gt;web&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://daring-designs.com/blog/how-to-run-multiple-claude-code-accounts-side-by-side&quot;&gt;
How to run multiple Claude Code accounts side by side. &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
If you use Claude Code for both work and personal projects, you’ve
probably hit this friction: you can only be logged into one account at a
time. Switching means /logout, /login, re-authenticate, every single
time.
&lt;/p&gt;
There’s a better way. With one line in your shell config, you can run
both accounts simultaneously in separate terminal windows, each with
their own sessions, memory, and settings.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/anthropic/&quot; rel=&quot;tag&quot;&gt;anthropic&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/money/&quot; rel=&quot;tag&quot;&gt;money&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://huggingface.co/papers/2506.05209&quot;&gt;
The Common Pile v0.1: An 8TB Dataset of Public Domain and Openly
Licensed Text &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
Large language models (LLMs) are typically trained on enormous
quantities of unlicensed text, a practice that has led to scrutiny due
to possible intellectual property infringement and ethical concerns.
Training LLMs on openly licensed text presents a first step towards
addressing these issues, but prior data collection efforts have yielded
datasets too small or low-quality to produce performant LLMs. To address
this gap, we collect, curate, and release the Common Pile v0.1, an eight
terabyte collection of openly licensed text designed for LLM
pretraining. The Common Pile comprises content from 30 sources that span
diverse domains including research papers, code, books, encyclopedias,
educational materials, audio transcripts, and more. Crucially, we
validate our efforts by training two 7 billion parameter LLMs on text
from the Common Pile: Comma v0.1-1T and Comma v0.1-2T, trained on 1 and
2 trillion tokens respectively. Both models attain competitive
performance to LLMs trained on unlicensed text with similar
computational budgets, such as Llama 1 and 2 7B. In addition to
releasing the Common Pile v0.1 itself, we also release the code used in
its creation as well as the training mixture and checkpoints for the
Comma v0.1 models.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/data/&quot; rel=&quot;tag&quot;&gt;data&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/openaccess/&quot; rel=&quot;tag&quot;&gt;openaccess&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/pdf/&quot; rel=&quot;tag&quot;&gt;pdf&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;</content:encoded>
	<dc:date>2026-07-05T04:00:00+00:00</dc:date>
</item>
<item rdf:about="https://blog.librarything.com/?p=11361">
	<title>LibraryThing (Thingology): July 2026 Early Reviewers Batch Is Live!</title>
	<link>https://blog.librarything.com/2026/07/july-2026-early-reviewers-batch-is-live/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.librarything.com/ner&quot;&gt;&lt;img src=&quot;https://image.librarything.com/pics/er_banner_landscape_300w.png&quot; style=&quot;margin: 0px 0px 10px 10px; float: right;&quot; /&gt;&lt;/a&gt;Win free books from the  July 2026 batch of Early Reviewer titles! We’ve got 267 books this month, and a grand total of 3,362 copies to give out. Which books are you hoping to snag this month? Come tell us on &lt;a href=&quot;https://www.librarything.com/topic/385257&quot;&gt;Talk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you haven’t already, &lt;a href=&quot;https://www.librarything.com/ner/settings&quot;&gt;sign up&lt;/a&gt; for Early Reviewers. If you’ve already signed up, please &lt;a href=&quot;https://www.librarything.com/ner/settings&quot;&gt;check your mailing/email address&lt;/a&gt; and &lt;b&gt;make sure they’re correct&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;a href=&quot;https://www.librarything.com/ner&quot;&gt;» Request books here!&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The deadline to request a copy is &lt;b&gt;Sunday, July 26th at 6PM EDT&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Eligibility&lt;/b&gt;: Publishers do things country-by-country. This month we have publishers who can send books to the US, the UK, Canada, Australia, Ireland, Belgium, Czechia, Denmark, Finland, France and more.  Make sure to check the message on each book to see if it can be sent to your country.&lt;/p&gt;
&lt;p&gt;	&lt;a href=&quot;https://www.librarything.com/ner/detail/56205/Fritz-A-Mushroom-Story&quot;&gt;&lt;img alt=&quot;Fritz: A Mushroom Story&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/20/17209517-b-h800-w400-pv25_597132594267475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56206/Bean-Supreme&quot;&gt;&lt;img alt=&quot;Bean Supreme&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/20/17209531-b-h800-w400-pv25_597275594267475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57378/Beyond-Grimm-Stories-Rhymes-from-the-Dark-Corners-of-Fairyland-Not-for-Children&quot;&gt;&lt;img alt=&quot;Beyond Grimm: Stories &amp;amp; Rhymes from the Dark Corners of Fairyland (Not for Children)&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17470513-b-h800-w400-pv25_596a47554367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56207/Mother-Boo-Poems-from-Spookytown&quot;&gt;&lt;img alt=&quot;Mother Boo: Poems from Spookytown&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/20/17209533-b-h800-w400-pv25_597232594267475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57513/Collapse-A-Global-History-of-the-Second-World-War-1931-1941&quot;&gt;&lt;img alt=&quot;Collapse: A Global History of the Second World War, 1931-1941&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17510325-b-h800-w400-pv25_597255764377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57554/Theodore-the-Hedgehog-Finds-a-Friend&quot;&gt;&lt;img alt=&quot;Theodore the Hedgehog Finds a Friend&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17524917-b-h800-w400-pv25_5972566f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/55756/Breathing-Under-Water&quot;&gt;&lt;img alt=&quot;Breathing Under Water&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/44/17441732-b-h800-w400-pv25_5973516a4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57108/House-Arrest&quot;&gt;&lt;img alt=&quot;House Arrest&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/40/17407384-b-h800-w400-pv25_597069644351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57363/Unfaithful-Ghost&quot;&gt;&lt;img alt=&quot;Unfaithful Ghost&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17470137-b-h800-w400-pv25_59726d534367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57405/Dreams-from-the-Edge-of-Reality-27-Frightening-Funny-and-Fantastic-Tales&quot;&gt;&lt;img alt=&quot;Dreams from the Edge of Reality: 27 Frightening, Funny, and Fantastic Tales&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17481849-b-h800-w400-pv25_596e6e414367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57514/A-Shadow-over-the-World-Franklin-D-Roosevelt-the-Rise-of-Fascism-and-the-Making-of-Americas-World-War-II&quot;&gt;&lt;img alt=&quot;A Shadow over the World: Franklin D. Roosevelt, the Rise of Fascism, and the Making of America's World War II&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17510346-b-h800-w400-pv25_59736f764377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57547/Bone-and-Bond&quot;&gt;&lt;img alt=&quot;Bone and Bond&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17522915-b-h800-w400-pv25_59754e674377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57597/Hidden-Cipher&quot;&gt;&lt;img alt=&quot;Hidden Cipher&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17535800-b-h800-w400-pv25_596a69544377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57618/Ortiz%E2%80%99s-War-The-Allies-Secret-Weapon-Against-the-Nazis-in-France&quot;&gt;&lt;img alt=&quot;Ortiz’s War: The Allies' Secret Weapon Against the Nazis in France&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17543312-b-h800-w400-pv25_597043774377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57653/The-Age-of-Cures-How-American-Scientists-Saved-Your-Life&quot;&gt;&lt;img alt=&quot;The Age of Cures: How American Scientists Saved Your Life&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17550737-b-h800-w400-pv25_5970484e4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57687/How-High-Can-a-Tiny-Girl-Fly-The-True-Story-of-How-Tiny-Broadwick-Became-the-First-Lady-of-Parachuting&quot;&gt;&lt;img alt=&quot;How High Can a Tiny Girl Fly?: The True Story of How Tiny Broadwick Became the First Lady of Parachuting&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17556927-b-h800-w400-pv25_59722f6c4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56658/StokerCon-2026-Souvenir-Anthology&quot;&gt;&lt;img alt=&quot;StokerCon 2026 Souvenir Anthology&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/30/17305700-b-h800-w400-pv25_596d51514341475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56948/The-Mists-of-Cairn-Gorm-A-Tale-of-the-Am-Fear-Liath-Mor&quot;&gt;&lt;img alt=&quot;The Mists of Cairn Gorm: A Tale of the Am Fear Liath Mor&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/37/17376046-b-h800-w400-pv25_5969346a4351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57067/A-Day-in-the-Life-An-NPC-LitRPG-Anthology&quot;&gt;&lt;img alt=&quot;A Day in the Life: An NPC LitRPG Anthology&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/39/17392660-b-h800-w400-pv25_5968526b4351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57138/Emotionally-Sober-and-Unimaginably-Good-The-Adult-Childs-Guide-to-Living-a-Happy-Life&quot;&gt;&lt;img alt=&quot;Emotionally Sober and Unimaginably Good: The Adult Child's Guide to Living a Happy Life&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/41/17412860-b-h800-w400-pv25_597679794351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57139/Damned-If-She-Does-Why-Women-Quit-Church-and-What-It-Means-for-the-Future-of-Religion&quot;&gt;&lt;img alt=&quot;Damned If She Does: Why Women Quit Church and What It Means for the Future of Religion&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/41/17412909-b-h800-w400-pv25_5969327a4351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57140/Devils-of-Democracy-Americas-Love-Affair-with-Political-Demons-from-the-Revolution-to-Today&quot;&gt;&lt;img alt=&quot;Devils of Democracy: America's Love Affair with Political Demons from the Revolution to Today&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/41/17412959-b-h800-w400-pv25_596c2b7a4351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57376/Every-Cowgirl-Needs-A-Comeback&quot;&gt;&lt;img alt=&quot;Every Cowgirl Needs A Comeback&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17470446-b-h800-w400-pv25_597536544367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57388/The-Great-American-Medical-Show-The-Good-the-Not-So-Good-the-Bad-and-the-Ugly&quot;&gt;&lt;img alt=&quot;The Great American Medical Show: The Good, the Not-So-Good, the Bad, and the Ugly&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17475004-b-h800-w400-pv25_5972796c4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57389/The-Trumpster-Fire-Escape-Almanac-Facts-to-Plan-Your-Expat-Life&quot;&gt;&lt;img alt=&quot;The Trumpster Fire Escape Almanac: Facts to Plan Your Expat Life&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17475092-b-h800-w400-pv25_5968536d4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57392/Voices-of-the-Dead&quot;&gt;&lt;img alt=&quot;Voices of the Dead&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17475910-b-h800-w400-pv25_596b61704367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57414/Peculiar-Perspectives-Life-Viewed-Through-a-Mellow-Side-eye&quot;&gt;&lt;img alt=&quot;Peculiar Perspectives: Life Viewed Through a Mellow Side-eye&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17484816-b-h800-w400-pv25_5968444d4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57415/Wallace-Terry-A-Reporters-Journey-from-Selma-to-Saigon-to-Bloods&quot;&gt;&lt;img alt=&quot;Wallace Terry: A Reporter's Journey from Selma to Saigon to Bloods&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17484825-b-h800-w400-pv25_59686e4d4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57422/From-Here&quot;&gt;&lt;img alt=&quot;From Here&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17486497-b-h800-w400-pv25_597148534367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57425/Running-Wild-Novella-Anthology-Volume-9-Book-3&quot;&gt;&lt;img alt=&quot;Running Wild Novella Anthology, Volume 9 Book 3&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17486797-b-h800-w400-pv25_597333544367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57430/American-Prophets-A-Nation-Wrestles-with-God&quot;&gt;&lt;img alt=&quot;American Prophets: A Nation Wrestles with God&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17487517-b-h800-w400-pv25_597033574367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57432/Let-Them-Tell-You-New-and-Selected-Short-Stories&quot;&gt;&lt;img alt=&quot;Let Them Tell You: New and Selected Short Stories&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17487726-b-h800-w400-pv25_596d37584367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57440/Most-Divine-Spirit-A-Walk-Through-the-Dark-Side-of-Humanity&quot;&gt;&lt;img alt=&quot;Most Divine Spirit: A Walk Through the Dark Side of Humanity&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17489363-b-h800-w400-pv25_597450644367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57471/Knitbone&quot;&gt;&lt;img alt=&quot;Knitbone&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17499241-b-h800-w400-pv25_596d6b454377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57482/The-Lightning-Field&quot;&gt;&lt;img alt=&quot;The Lightning Field&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17501318-b-h800-w400-pv25_596f594d4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57487/Were-Still-Here&quot;&gt;&lt;img alt=&quot;We're Still Here&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17502931-b-h800-w400-pv25_59744d534377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57493/Fireweather&quot;&gt;&lt;img alt=&quot;Fireweather&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17503993-b-h800-w400-pv25_59766b574377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57495/The-Gifts-of-Reading-for-the-Next-Generation-Essays-on-Nurturing-a-Passion-for-Reading&quot;&gt;&lt;img alt=&quot;The Gifts of Reading for the Next Generation: Essays on Nurturing a Passion for Reading&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17504013-b-h800-w400-pv25_596730584377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57496/Buffalo-Lessons-How-Bison-Returned-to-Banff-National-Park&quot;&gt;&lt;img alt=&quot;Buffalo Lessons: How Bison Returned to Banff National Park&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17504025-b-h800-w400-pv25_59686b584377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57497/The-Elegance-of-Ferns-Portrait-of-a-Botanical-Marvel&quot;&gt;&lt;img alt=&quot;The Elegance of Ferns: Portrait of a Botanical Marvel&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17504039-b-h800-w400-pv25_596963584377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57499/Long-Weekend&quot;&gt;&lt;img alt=&quot;Long Weekend&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17505371-b-h800-w400-pv25_596c73634377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57504/Emergent-Property&quot;&gt;&lt;img alt=&quot;Emergent Property&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17506469-b-h800-w400-pv25_597155674377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57508/Ryders-Digraph-Dirt-Track&quot;&gt;&lt;img alt=&quot;Ryder's Digraph Dirt Track&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17507721-b-h800-w400-pv25_596f6b6c4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57521/Helium&quot;&gt;&lt;img alt=&quot;Helium&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17513193-b-h800-w400-pv25_59756b364377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57522/The-Five-Widows-Club&quot;&gt;&lt;img alt=&quot;The Five Widows Club&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17513483-b-h800-w400-pv25_596773384377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57523/An-Incomplete-History-of-the-American-West-Stories&quot;&gt;&lt;img alt=&quot;An Incomplete History of the American West: Stories&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17513899-b-h800-w400-pv25_597173394377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57528/The-Sagebrush-Ocean-A-Natural-History-of-the-Great-Basin-%5B35th-Anniversary-Edition%5D&quot;&gt;&lt;img alt=&quot;The Sagebrush Ocean: A Natural History of the Great Basin [35th Anniversary Edition]&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17514272-b-h800-w400-pv25_5969412f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57529/Its-Late-Poems&quot;&gt;&lt;img alt=&quot;It's Late: Poems&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17514300-b-h800-w400-pv25_596a772f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57540/Of-Beasts-and-Bones&quot;&gt;&lt;img alt=&quot;Of Beasts and Bones&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17519981-b-h800-w400-pv25_596d31564377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57543/The-Making-of-a-Fiscal-Market-Man-A-Poetic-Chronicle-of-a-Life-and-Career-Well-Spent&quot;&gt;&lt;img alt=&quot;The Making of a Fiscal Market Man: A Poetic Chronicle of a Life and Career Well Spent&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17521224-b-h800-w400-pv25_596b68614377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57545/Brant%C3%B4me-and-Other-Stories&quot;&gt;&lt;img alt=&quot;Brantôme and Other Stories&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17521704-b-h800-w400-pv25_596968634377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57551/Echoes-of-Destiny-Short-Stories-of-the-Unexpected&quot;&gt;&lt;img alt=&quot;Echoes of Destiny: Short Stories of the Unexpected&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17524771-b-h800-w400-pv25_59694e6f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57552/Man-Afield&quot;&gt;&lt;img alt=&quot;Man Afield&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17524794-b-h800-w400-pv25_596a706f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57553/Unhoused-Yearning-for-Home&quot;&gt;&lt;img alt=&quot;Unhoused: Yearning for Home&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17524813-b-h800-w400-pv25_596b316f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57555/Such-As-We-Are-Made-Of&quot;&gt;&lt;img alt=&quot;Such As We Are Made Of&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17525484-b-h800-w400-pv25_597578714377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57556/The-League-of-Delphi&quot;&gt;&lt;img alt=&quot;The League of Delphi&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17575124-b-h800-w400-pv25_597451734441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57559/Momtistic-A-Memoir-of-Autism-and-Motherhood&quot;&gt;&lt;img alt=&quot;Momtistic: A Memoir of Autism and Motherhood&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17526016-b-h800-w400-pv25_596742744377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57560/Momtistic-A-Memoir-of-Autism-and-Motherhood&quot;&gt;&lt;img alt=&quot;Momtistic: A Memoir of Autism and Motherhood&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17526016-b-h800-w400-pv25_596742744377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57561/The-Princes-Magician&quot;&gt;&lt;img alt=&quot;The Prince's Magician&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17527103-b-h800-w400-pv25_596a39784377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57563/Unstoppable-March-of-the-Human-Condition-Essays-on-Politics-and-Literature&quot;&gt;&lt;img alt=&quot;Unstoppable March of the Human Condition: Essays on Politics and Literature&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17575935-b-h800-w400-pv25_597638764441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57564/Unstoppable-March-of-the-Human-Condition-Essays-on-Politics-and-Literature&quot;&gt;&lt;img alt=&quot;Unstoppable March of the Human Condition: Essays on Politics and Literature&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17575951-b-h800-w400-pv25_596738774441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57566/Everything-Feels-Impossible-Until-Its-Done-How-the-Life-You-Build-Becomes-the-Life-That-Saves-You&quot;&gt;&lt;img alt=&quot;Everything Feels Impossible Until It's Done: How the Life You Build Becomes the Life That Saves You&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17528688-b-h800-w400-pv25_596e42334377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57573/A-Bad-Deal-in-Mormon-Land&quot;&gt;&lt;img alt=&quot;A Bad Deal in Mormon Land&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/24/17242127-b-h800-w400-pv25_596738594277475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57587/Timecode-Anemoia&quot;&gt;&lt;img alt=&quot;Timecode: Anemoia&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17533887-b-h800-w400-pv25_59722b4c4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57590/The-Iron-Code&quot;&gt;&lt;img alt=&quot;The Iron Code&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17534702-b-h800-w400-pv25_5975364f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57592/Fruit-Fly&quot;&gt;&lt;img alt=&quot;Fruit Fly&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17535503-b-h800-w400-pv25_59672b534377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57599/Hazel-and-the-Cosy-Night&quot;&gt;&lt;img alt=&quot;Hazel and the Cosy Night&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17536565-b-h800-w400-pv25_596a57574377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57600/Oliver-and-the-Lantern-Path&quot;&gt;&lt;img alt=&quot;Oliver and the Lantern Path&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17536580-b-h800-w400-pv25_596b53574377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57609/Heracles-The-Hound-of-Hades&quot;&gt;&lt;img alt=&quot;Heracles: The Hound of Hades&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17539505-b-h800-w400-pv25_597247684377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57619/These-Broken-Little-Worlds&quot;&gt;&lt;img alt=&quot;These Broken Little Worlds&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17543475-b-h800-w400-pv25_596a4f784377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57622/The-Depopulation&quot;&gt;&lt;img alt=&quot;The Depopulation&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17544425-b-h800-w400-pv25_59756d304377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57623/Archaic&quot;&gt;&lt;img alt=&quot;Archaic&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17544499-b-h800-w400-pv25_596a4f314377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57625/A-Thousand-Monstrous-Forms&quot;&gt;&lt;img alt=&quot;A Thousand Monstrous Forms&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17544714-b-h800-w400-pv25_596771324377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57626/Poker-Wars-Murder-Mayhem-and-the-Bloody-History-That-Led-to-the-World-Series-of-Poker&quot;&gt;&lt;img alt=&quot;Poker Wars: Murder, Mayhem, and the Bloody History That Led to the World Series of Poker&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17544880-b-h800-w400-pv25_597243324377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57627/Swing-and-a-Kiss&quot;&gt;&lt;img alt=&quot;Swing and a Kiss&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17544947-b-h800-w400-pv25_59764f324377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57631/Madame-Chrysanth%C3%A8me&quot;&gt;&lt;img alt=&quot;Madame Chrysanthème&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17545856-b-h800-w400-pv25_596f43364377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57634/Little-Voices-Big-Futures-Baby-Beginnings-A-Parents-Guide-to-Infant-Speech-Milestones-Early-Signs-of-Delay-and-Simple-Habits-to-Help-Your-Baby-Communicate-with-Confidence&quot;&gt;&lt;img alt=&quot;Little Voices Big Futures, Baby Beginnings: A Parent's Guide to Infant Speech Milestones, Early Signs of Delay, and Simple Habits to Help Your Baby Communicate with Confidence&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/38/17382032-b-h800-w400-pv25_597041364351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57636/Little-Voices-Big-Futures-the-Toddler-Transition-A-Parents-Guide-to-Toddler-Speech-Milestones-Communication-Delays-and-Play-Strategies-to-Build-Language-Skills&quot;&gt;&lt;img alt=&quot;Little Voices Big Futures, the Toddler Transition: A Parent's Guide to Toddler Speech Milestones, Communication Delays, and Play Strategies to Build Language Skills&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17546014-b-h800-w400-pv25_596836374377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57649/Beneath-The-Stone&quot;&gt;&lt;img alt=&quot;Beneath The Stone&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17549546-b-h800-w400-pv25_597572494377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57654/Corvette-C4-1984-1996-How-to-Build-and-Modify&quot;&gt;&lt;img alt=&quot;Corvette C4 1984-1996: How to Build and Modify&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17550955-b-h800-w400-pv25_596d764f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57655/The-Worst&quot;&gt;&lt;img alt=&quot;The Worst&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17551415-b-h800-w400-pv25_596a66514377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57656/The-Worst&quot;&gt;&lt;img alt=&quot;The Worst&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17551440-b-h800-w400-pv25_596c44514377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57671/Happily-Ever-Afterlife&quot;&gt;&lt;img alt=&quot;Happily Ever Afterlife&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17554584-b-h800-w400-pv25_59706a634377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57674/Mostly-Human-Resources&quot;&gt;&lt;img alt=&quot;(Mostly) Human Resources&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17554812-b-h800-w400-pv25_596e7a644377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57675/Winnowing-A-Memoir-of-Spiritual-Longing-in-Secular-Life&quot;&gt;&lt;img alt=&quot;Winnowing: A Memoir of Spiritual Longing in Secular Life&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17554944-b-h800-w400-pv25_596744654377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57685/The-Mirror-of-Yu-Huang&quot;&gt;&lt;img alt=&quot;The Mirror of Yu-Huang&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17556737-b-h800-w400-pv25_5967486c4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57696/We-Know-Your-Secret&quot;&gt;&lt;img alt=&quot;We Know Your Secret&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17561558-b-h800-w400-pv25_597462334377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57707/ACT-Science-Practice-Questions-500%2B-Practice-Questions-with-Strategy-Based-Explanations-Diagnostic-Test-and-Full-Length-ACT-Science-Test-to-Boost-Your-Enhanced-ACT-Score&quot;&gt;&lt;img alt=&quot;ACT Science Practice Questions: 500+ Practice Questions with Strategy-Based Explanations, Diagnostic Test and Full-Length ACT Science Test to Boost Your Enhanced ACT Score&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17563892-b-h800-w400-pv25_597651414441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57708/C-Programming-Essentials-Learn-C-Programming-from-Scratch-%7C-Master-Pointers-Arrays-Memory-Management-Threads-and-System-Level-Programming&quot;&gt;&lt;img alt=&quot;C Programming Essentials: Learn C Programming from Scratch | Master Pointers, Arrays, Memory Management, Threads, and System-Level Programming&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/38/17385044-b-h800-w400-pv25_596c52474351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57709/Six-Sigma-Essentials-A-Beginner%E2%80%99s-Guide-to-DMAIC-Six-Sigma-Tools-Process-Improvement-Root-Cause-Analysis-Process-Mapping-and-Data-Driven-Decision-Making&quot;&gt;&lt;img alt=&quot;Six Sigma Essentials: A Beginner’s Guide to DMAIC, Six Sigma Tools, Process Improvement, Root Cause Analysis, Process Mapping, and Data-Driven Decision Making&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/38/17384969-b-h800-w400-pv25_59676c474351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57710/Graph-Machine-Learning-Essentials-Foundations-Hands-On-Implementation-Graph-Neural-Networks-Pytorch-Geometric-and-Applied-Use-Cases&quot;&gt;&lt;img alt=&quot;Graph Machine Learning Essentials: Foundations, Hands-On Implementation, Graph Neural Networks, Pytorch Geometric, and Applied Use Cases&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17563921-b-h800-w400-pv25_596845424441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57711/Lean-Management-Essentials-Beginners-Guide-to-Lean-Thinking-Process-Improvement-Waste-Reduction-Value-Stream-Mapping-and-Continuous-Improvement&quot;&gt;&lt;img alt=&quot;Lean Management Essentials: Beginner's Guide to Lean Thinking, Process Improvement, Waste Reduction, Value Stream Mapping, and Continuous Improvement&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17563946-b-h800-w400-pv25_59696f424441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57713/Emotional-Intelligence-Essentials-Master-Self-Awareness-Communication-Leadership-Stress-Management-Conflict-Resolution-and-Relationship-Building-for-Personal-and-Professional-Success&quot;&gt;&lt;img alt=&quot;Emotional Intelligence Essentials: Master Self-Awareness, Communication, Leadership, Stress Management, Conflict Resolution, and Relationship Building for Personal and Professional Success&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17563991-b-h800-w400-pv25_596c63424441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57714/PSAT%25252FNMSQT-Reading-and-Writing-Practice-Questions-380%2B-Practice-Questions-with-Answer-Explanations-%7C-PSAT-10-%7C-Diagnostic-Test-%7C-Full-Length-Practice-Test-%7C-Study-Plans&quot;&gt;&lt;img alt=&quot;PSAT/NMSQT Reading and Writing Practice Questions: 380+ Practice Questions with Answer Explanations | PSAT 10 | Diagnostic Test | Full-Length Practice Test | Study Plans&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17564016-b-h800-w400-pv25_596e41424441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57715/PSAT%25252FNMSQT-Math-Practice-Questions-380%2B-Practice-Questions-with-Answer-Explanations-%7C-PSAT-10-%7C-Diagnostic-Test-%7C-Full-Length-Practice-Test-%7C-Study-Plan&quot;&gt;&lt;img alt=&quot;PSAT/NMSQT Math Practice Questions: 380+ Practice Questions with Answer Explanations | PSAT 10 | Diagnostic Test | Full-Length Practice Test | Study Plan&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17564011-b-h800-w400-pv25_596d73424441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56303/Dark-Waters&quot;&gt;&lt;img alt=&quot;Dark Waters&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/23/17230678-b-h800-w400-pv25_596c62724267475141534144_v5.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56502/The-Love-That-History-Erased-Three-Kingdoms-of-Angkor&quot;&gt;&lt;img alt=&quot;The Love That History Erased: Three Kingdoms of Angkor&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/27/17278136-b-h800-w400-pv25_5972696b4277475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56507/When-Jasmine-Blooms-at-Midnight&quot;&gt;&lt;img alt=&quot;When Jasmine Blooms at Midnight&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/27/17278238-b-h800-w400-pv25_5968366c4277475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56787/Angel-Cake-A-Monster-Boy-Bromance&quot;&gt;&lt;img alt=&quot;Angel Cake: A Monster-Boy Bromance&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/32/17327640-b-h800-w400-pv25_5968686d4341475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/56845/A-Spark-of-Earth-and-Flame&quot;&gt;&lt;img alt=&quot;A Spark of Earth and Flame&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/34/17349324-b-h800-w400-pv25_597379364341475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57111/When-Plum-Blossoms-Grow&quot;&gt;&lt;img alt=&quot;When Plum Blossoms Grow&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/40/17408347-b-h800-w400-pv25_596c75684351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57117/How-To-Not-Be-Broke-Stop-Working-Just-to-Pay-Bills&quot;&gt;&lt;img alt=&quot;How To Not Be Broke: Stop Working Just to Pay Bills&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/40/17409471-b-h800-w400-pv25_59722b6c4351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57119/Become-Who-You-Choose-To-Be-How-to-Design-Your-Ideal-Self&quot;&gt;&lt;img alt=&quot;Become Who You Choose To Be: How to Design Your Ideal Self&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/40/17409510-b-h800-w400-pv25_5975616c4351475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57268/Are-We-Friends-Yet-How-to-Deepen-Your-Relationships-and-Create-the-Community-You-Need&quot;&gt;&lt;img alt=&quot;Are We Friends Yet?: How to Deepen Your Relationships and Create the Community You Need&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/45/17450461-b-h800-w400-pv25_597431464367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57295/Strategic-Insights-for-AI-Governance-and-Leadership-2026&quot;&gt;&lt;img alt=&quot;Strategic Insights for AI Governance and Leadership 2026&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/45/17458481-b-h800-w400-pv25_596a466c4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57316/First-Sight-of-Sun&quot;&gt;&lt;img alt=&quot;First Sight of Sun&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/46/17466325-b-h800-w400-pv25_597457444367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57329/House-of-Liars&quot;&gt;&lt;img alt=&quot;House of Liars&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/46/17468427-b-h800-w400-pv25_5967754d4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57386/Break-The-Stillness-Trap&quot;&gt;&lt;img alt=&quot;Break The Stillness Trap&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17473422-b-h800-w400-pv25_596f36664367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57387/Turning-to-the-Dark-Side-What-Star-Wars-Teaches-Us-About-How-a-Good-Person-Turns-Bad&quot;&gt;&lt;img alt=&quot;Turning to the Dark Side: What Star Wars Teaches Us About How a Good Person Turns Bad&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17474976-b-h800-w400-pv25_5971436c4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57390/Fear-of-Magic&quot;&gt;&lt;img alt=&quot;Fear of Magic&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17475716-b-h800-w400-pv25_596f536f4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57393/When-Bonds-Were-Forged&quot;&gt;&lt;img alt=&quot;When Bonds Were Forged&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17476117-b-h800-w400-pv25_596857714367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57394/When-We-Came-Full-Circle&quot;&gt;&lt;img alt=&quot;When We Came Full Circle&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17476151-b-h800-w400-pv25_596a65714367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57395/The-Johannesburg-Rush&quot;&gt;&lt;img alt=&quot;The Johannesburg Rush&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17476391-b-h800-w400-pv25_596965724367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57396/What-No-One-Tells-You-About-Caring-for-an-Aging-Parent-Real-Life-Lessons-Emotional-Survival-and-Practical-Wisdom-From-14-Years-as-My-Mother%E2%80%99s-Caregiver&quot;&gt;&lt;img alt=&quot;What No One Tells You About Caring for an Aging Parent: Real-Life Lessons, Emotional Survival, and Practical Wisdom From 14 Years as My Mother’s Caregiver&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17476745-b-h800-w400-pv25_596f6d734367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57398/How-To-Break-the-Law-and-Get-Away-With-it-Legal-Foundations-of-Civil-Disobedience&quot;&gt;&lt;img alt=&quot;How To Break the Law and Get Away With it: Legal Foundations of Civil Disobedience&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17478077-b-h800-w400-pv25_597232784367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57399/Half-the-Night-Sky&quot;&gt;&lt;img alt=&quot;Half the Night Sky&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17478116-b-h800-w400-pv25_597553784367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57400/Code-of-Vengeance&quot;&gt;&lt;img alt=&quot;Code of Vengeance&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/47/17479128-b-h800-w400-pv25_597469314367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57401/4-Weeks-to-Total-Sleep-Mastery-A-Proven-System-to-Maximise-Your-Recovery-and-Energy-in-Just-30-Days&quot;&gt;&lt;img alt=&quot;4 Weeks to Total Sleep Mastery: A Proven System to Maximise Your Recovery and Energy in Just 30 Days&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17571046-b-h800-w400-pv25_597559634441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57402/Happiest-Father%E2%80%99s-Day&quot;&gt;&lt;img alt=&quot;Happiest Father’s Day&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17571205-b-h800-w400-pv25_596f55644441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57403/Book-of-Roya&quot;&gt;&lt;img alt=&quot;Book of Roya&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17480759-b-h800-w400-pv25_596a65384367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57404/The-Constellation-of-Forgotten-Things&quot;&gt;&lt;img alt=&quot;The Constellation of Forgotten Things&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17481350-b-h800-w400-pv25_596f612b4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57410/The-Commissioner-From-Street-Cop-to-Top-Cop-in-the-NYPD-the-Inside-Story-of-the-Hunt-for-the-Gilgo-Beach-Serial-Killer&quot;&gt;&lt;img alt=&quot;The Commissioner: From Street Cop to Top Cop in the NYPD, the Inside Story of the Hunt for the Gilgo Beach Serial Killer&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17483497-b-h800-w400-pv25_59756e474367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57411/Blood-Sugar-Log-Book-Large-Print-2-Year-Daily-Diabetes-Glucose-Tracker-for-Diabetics-With-4-Week-Review-Pages&quot;&gt;&lt;img alt=&quot;Blood Sugar Log Book: Large Print 2-Year Daily Diabetes &amp;amp; Glucose Tracker for Diabetics With 4-Week Review Pages&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17484406-b-h800-w400-pv25_596e624b4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57413/You-Say-You-Want-a-Revolution-Essays-on-the-Promise-and-Betrayal-of-Web3&quot;&gt;&lt;img alt=&quot;You Say You Want a Revolution: Essays on the Promise and Betrayal of Web3&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17484715-b-h800-w400-pv25_5971764c4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57417/Finding-Your-Happiness&quot;&gt;&lt;img alt=&quot;Finding Your Happiness&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17485272-b-h800-w400-pv25_59746a4e4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57418/Wishes-and-Wildflowers&quot;&gt;&lt;img alt=&quot;Wishes and Wildflowers&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17485334-b-h800-w400-pv25_5968624f4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57419/Hearts-and-Horseshoes&quot;&gt;&lt;img alt=&quot;Hearts and Horseshoes&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17485363-b-h800-w400-pv25_596a504f4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57420/Alien-Situations&quot;&gt;&lt;img alt=&quot;Alien Situations&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17485515-b-h800-w400-pv25_5973764f4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57423/Rife-Healing-Frequencies-Roadmap-Cut-Through-Confusing-Claims-Compare-Devices-with-Confidence-Spot-Safety-Red-Flags-and-Build-a-Simple-28-Day-Protocol-Without-Costly-Mistakes&quot;&gt;&lt;img alt=&quot;Rife Healing Frequencies Roadmap: Cut Through Confusing Claims, Compare Devices with Confidence, Spot Safety Red Flags, and Build a Simple 28-Day Protocol Without Costly Mistakes&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17486537-b-h800-w400-pv25_59736e534367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57426/Team-DNA-Decoding-the-Habits-of-Successful-Groups-and-How-to-Build-a-Winning-Culture&quot;&gt;&lt;img alt=&quot;Team DNA: Decoding the Habits of Successful Groups and How to Build a Winning Culture&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17486907-b-h800-w400-pv25_596a76554367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57427/Plow-In-the-Hollows&quot;&gt;&lt;img alt=&quot;Plow: In the Hollows&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17487240-b-h800-w400-pv25_596f6a564367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57428/Every-Last-Bone&quot;&gt;&lt;img alt=&quot;Every Last Bone&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17487269-b-h800-w400-pv25_597158564367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57429/With-God-in-the-Storm-Discovering-His-Presence-Peace-and-Purpose-in-the-Midst-of-Storms&quot;&gt;&lt;img alt=&quot;With God in the Storm: Discovering His Presence, Peace and Purpose in the Midst of Storms&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17487538-b-h800-w400-pv25_59724c574367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57431/Fifteen-Years-to-Hiva-Oa&quot;&gt;&lt;img alt=&quot;Fifteen Years to Hiva Oa&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17487623-b-h800-w400-pv25_596766584367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57433/Religion-Unburdened-by-Belief-The-Way-of-Open-Inquiry&quot;&gt;&lt;img alt=&quot;Religion Unburdened by Belief: The Way of Open Inquiry&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17488171-b-h800-w400-pv25_5969765a4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57434/Religion-Unburdened-by-Belief-The-Way-of-Open-Inquiry&quot;&gt;&lt;img alt=&quot;Religion Unburdened by Belief: The Way of Open Inquiry&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17571491-b-h800-w400-pv25_59714d654441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57435/Religion-Unburdened-by-Belief-The-Way-of-Open-Inquiry&quot;&gt;&lt;img alt=&quot;Religion Unburdened by Belief: The Way of Open Inquiry&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17488226-b-h800-w400-pv25_596d4c5a4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57439/The-Forest-Is-Woven&quot;&gt;&lt;img alt=&quot;The Forest Is Woven&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/48/17488544-b-h800-w400-pv25_597144614367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57441/The-Missing-Magician&quot;&gt;&lt;img alt=&quot;The Missing Magician&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17490059-b-h800-w400-pv25_596f76674367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57442/Timeman&quot;&gt;&lt;img alt=&quot;Timeman&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17507189-b-h800-w400-pv25_596e556a4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57444/Trusting-the-Single-Dad&quot;&gt;&lt;img alt=&quot;Trusting the Single Dad&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17490467-b-h800-w400-pv25_596950694367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57445/When-Studies-Become-Stories-89-Popular-Psychology-Ideas-Examined-and-Explained&quot;&gt;&lt;img alt=&quot;When Studies Become Stories: 89 Popular Psychology Ideas Examined and Explained&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17490484-b-h800-w400-pv25_596a54694367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57448/The-Garden-of-My-Thoughts&quot;&gt;&lt;img alt=&quot;The Garden of My Thoughts&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17490955-b-h800-w400-pv25_5967766b4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57449/The-Weight-Within&quot;&gt;&lt;img alt=&quot;The Weight Within&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17491054-b-h800-w400-pv25_596d376b4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57450/No-Safe-Harbor&quot;&gt;&lt;img alt=&quot;No Safe Harbor&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17551970-b-h800-w400-pv25_596d4c534377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57451/Get-The-F%2Ack-Over-IT-A-Satirical-Self-Help-Manifesto-for-Left-Lane-Rage-Survivors&quot;&gt;&lt;img alt=&quot;Get The F*ck Over... IT: A Satirical Self-Help Manifesto for Left-Lane Rage Survivors&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17491609-b-h800-w400-pv25_59706e6d4367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57452/The-Book-of-Truth-Cycle-I&quot;&gt;&lt;img alt=&quot;The Book of Truth: Cycle I&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17492391-b-h800-w400-pv25_597166704367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57453/The-Future-of-Graphic-Design-Creativity-Technology-AI-and-the-Evolution-of-Visual-Communication&quot;&gt;&lt;img alt=&quot;The Future of Graphic Design: Creativity, Technology, AI, and the Evolution of Visual Communication&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17492450-b-h800-w400-pv25_59754c704367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57454/Between-Worlds-The-Work-of-Living-a-Call-To-Action&quot;&gt;&lt;img alt=&quot;Between Worlds: The Work of Living....a Call To Action&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17572545-b-h800-w400-pv25_597345694441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57455/Mrs-Cs-Magic-Classroom-A-Guided-Meditation-for-Dreamers-Writers-the-Quiet-Ones&quot;&gt;&lt;img alt=&quot;Mrs C's Magic Classroom: A Guided Meditation for Dreamers, Writers, &amp;amp; the Quiet Ones&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17492635-b-h800-w400-pv25_597076714367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57457/Do-Not-Read-the-Last-Page&quot;&gt;&lt;img alt=&quot;Do Not Read the Last Page&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17492672-b-h800-w400-pv25_597344714367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57465/Wild-Hunt&quot;&gt;&lt;img alt=&quot;Wild Hunt&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17493369-b-h800-w400-pv25_596e6e744367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57466/The-Ever-Changing-Sands&quot;&gt;&lt;img alt=&quot;The Ever-Changing Sands&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17494403-b-h800-w400-pv25_596f50784367475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57475/Cash-or-Card-A-Fable-on-the-Cost-of-Convenience&quot;&gt;&lt;img alt=&quot;Cash or Card?: A Fable on the Cost of Convenience&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17499852-b-h800-w400-pv25_597377474377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57476/A-Personal-Code-for-Ordinary-Days&quot;&gt;&lt;img alt=&quot;A Personal Code for Ordinary Days&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/49/17499891-b-h800-w400-pv25_59764d474377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57477/The-Last-Dreamcaravan&quot;&gt;&lt;img alt=&quot;The Last Dreamcaravan&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17500140-b-h800-w400-pv25_597577484377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57479/Of-Flaw-and-Scorn&quot;&gt;&lt;img alt=&quot;Of Flaw and Scorn&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17500849-b-h800-w400-pv25_5972454b4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57483/Dust-and-Mercy&quot;&gt;&lt;img alt=&quot;Dust and Mercy&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17501464-b-h800-w400-pv25_5968674e4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57488/The-Spring-Tide&quot;&gt;&lt;img alt=&quot;The Spring Tide&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17502977-b-h800-w400-pv25_596745544377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57489/Resilient-Cadence-A-Poetry-Anthology-My-Journey-in-Medicine&quot;&gt;&lt;img alt=&quot;Resilient Cadence: A Poetry Anthology: My Journey in Medicine&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17503340-b-h800-w400-pv25_596d77554377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57494/The-Conclusion-of-the-American-Experiment&quot;&gt;&lt;img alt=&quot;The Conclusion of the American Experiment&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17504004-b-h800-w400-pv25_596751584377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57498/The-Styx&quot;&gt;&lt;img alt=&quot;The Styx&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17504983-b-h800-w400-pv25_597463614377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57501/Likes-Live-Ours&quot;&gt;&lt;img alt=&quot;Likes Live Ours&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17506181-b-h800-w400-pv25_596f55664377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57502/The-Offline-Playbook-for-Teens-What-Your-Phone-Steals-From-Your-Focus-Sleep-and-Life-%E2%80%94-And-How-to-Take-It-Back&quot;&gt;&lt;img alt=&quot;The Offline Playbook for Teens: What Your Phone Steals From Your Focus, Sleep, and Life — And How to Take It Back&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17506279-b-h800-w400-pv25_597563664377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57503/The-Offline-Playbook-for-Teens-What-Your-Phone-Steals-From-Your-Focus-Sleep-and-Life-%E2%80%94-And-How-to-Take-It-Back&quot;&gt;&lt;img alt=&quot;The Offline Playbook for Teens: What Your Phone Steals From Your Focus, Sleep, and Life — And How to Take It Back&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17506304-b-h800-w400-pv25_596741674377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57505/How-to-Save-Your-Marriage-Even-If-Your-Partner-Isnt-Ready-Yet-The-5-Step-Path-to-Rebuild-Trust-Restore-Intimacy-and-Reconnect-When-Your-Relationship-Feels-Distant&quot;&gt;&lt;img alt=&quot;How to Save Your Marriage Even If Your Partner Isn't Ready Yet: The 5-Step Path to Rebuild Trust, Restore Intimacy, and Reconnect When Your Relationship Feels Distant&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17506495-b-h800-w400-pv25_597238674377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57507/The-Nervous-System-Scorecard-A-Clinically-Grounded-30-Day-Plan-to-Calm-Anxiety-Reset-Your-Nervous-System-and-Track-Real-Progress&quot;&gt;&lt;img alt=&quot;The Nervous System Scorecard: A Clinically Grounded 30-Day Plan to Calm Anxiety, Reset Your Nervous System, and Track Real Progress&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17507026-b-h800-w400-pv25_597449694377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57510/No-Winning-This-War-Mars-X-Exposed&quot;&gt;&lt;img alt=&quot;No Winning This War: Mars-X Exposed&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17508618-b-h800-w400-pv25_59676f704377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57512/Private-Lessons&quot;&gt;&lt;img alt=&quot;Private Lessons&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/50/17509955-b-h800-w400-pv25_596b4d754377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57515/Fatty-A-Diary-of-Starting-Over-Things-No-One-Tells-You&quot;&gt;&lt;img alt=&quot;Fatty: A Diary of Starting Over: Things No One Tells You&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17512213-b-h800-w400-pv25_596855334377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57516/On-the-Glide-Raising-Kids-Who-Stay-Close-As-You-Step-Back-%E2%80%94-the-Practical-Parenting-Guide-for-the-Tween-and-Early-Teen-Years-Ages-6-14&quot;&gt;&lt;img alt=&quot;On the Glide: Raising Kids Who Stay Close As You Step Back — the Practical Parenting Guide for the Tween and Early Teen Years (Ages 6-14)&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17574217-b-h800-w400-pv25_596b6b704441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57532/The-Aetherium-Lens&quot;&gt;&lt;img alt=&quot;The Aetherium Lens&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17515985-b-h800-w400-pv25_597446464377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57534/The-Sea-of-Possibilities&quot;&gt;&lt;img alt=&quot;The Sea of Possibilities&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17516178-b-h800-w400-pv25_59704a474377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57535/The-Talent-Show&quot;&gt;&lt;img alt=&quot;The Talent Show&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17517932-b-h800-w400-pv25_596d784e4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57536/Darlene&quot;&gt;&lt;img alt=&quot;Darlene&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/51/17517944-b-h800-w400-pv25_596e684e4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57541/Oliver-the-Spirited&quot;&gt;&lt;img alt=&quot;Oliver the Spirited&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17520545-b-h800-w400-pv25_597146584377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57542/Love-and-Divine-Timing-A-Powerful-Love-Story&quot;&gt;&lt;img alt=&quot;Love and Divine Timing: A Powerful Love Story&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17574842-b-h800-w400-pv25_59726f724441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57544/Light-Come-Light-Go&quot;&gt;&lt;img alt=&quot;Light Come, Light Go&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17521253-b-h800-w400-pv25_596d56614377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57546/Bella-Butterfly-Discovers-Her-Courage-A-Story-About-Getting-Lost-Finding-Courage-and-Learning-You-Were-Never-Alone&quot;&gt;&lt;img alt=&quot;Bella Butterfly Discovers Her Courage: A Story About Getting Lost, Finding Courage, and Learning You Were Never Alone&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17522589-b-h800-w400-pv25_597031664377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57549/Unf%2Ack-Your-Perspective-A-Counterintuitive-Guide-to-Focus-on-What-Matters-and-Ignore-the-Rest&quot;&gt;&lt;img alt=&quot;Unf*ck Your Perspective: A Counterintuitive Guide to Focus on What Matters and Ignore the Rest&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17523993-b-h800-w400-pv25_59686c6c4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57557/Brenda-Barkers-Next-Chapter&quot;&gt;&lt;img alt=&quot;Brenda Barker's Next Chapter&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17525677-b-h800-w400-pv25_597131724377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57558/Vwa-Mwen-Yon-Gid-Pou-M%C3%A8t-Lavi-Verite-Ak-Objektif-Haitian-Creole&quot;&gt;&lt;img alt=&quot;Vwa Mwen: Yon Gid Pou Mèt Lavi, Verite, Ak Objektif (Haitian Creole)&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17525875-b-h800-w400-pv25_596e4e734377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57562/The-Quran-Examined-Christianity-Islam-and-the-Question-of-Truth&quot;&gt;&lt;img alt=&quot;The Qur'an Examined: Christianity, Islam, and the Question of Truth&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17528014-b-h800-w400-pv25_597335304377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57567/Rough-Cuts&quot;&gt;&lt;img alt=&quot;Rough Cuts&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17529163-b-h800-w400-pv25_596b74354377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57568/The-Secret-in-the-Sampler&quot;&gt;&lt;img alt=&quot;The Secret in the Sampler&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17529325-b-h800-w400-pv25_597531354377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57569/Straw-Shoes&quot;&gt;&lt;img alt=&quot;Straw Shoes&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17529468-b-h800-w400-pv25_596e78364377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57570/Huckleberry-Jim&quot;&gt;&lt;img alt=&quot;Huckleberry Jim&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17529573-b-h800-w400-pv25_597556364377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57571/The-Unknown-Birds&quot;&gt;&lt;img alt=&quot;The Unknown Birds&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17529747-b-h800-w400-pv25_59704e374377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57572/The-Kings-Substitute&quot;&gt;&lt;img alt=&quot;The King's Substitute&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17529874-b-h800-w400-pv25_59684a384377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57574/The-Crazy-Eight-The-Most-Dangerous-House-On-Maple-Street&quot;&gt;&lt;img alt=&quot;The Crazy Eight: The Most Dangerous House On Maple Street&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17530066-b-h800-w400-pv25_59744a384377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57575/Basil-Has-Thoughts-On-Other-Pets-A-Brief-Review-of-the-Animal-Kingdom-Beneath-Me&quot;&gt;&lt;img alt=&quot;Basil Has Thoughts: On Other Pets: A Brief Review of the Animal Kingdom Beneath Me&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17530108-b-h800-w400-pv25_597678384377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57576/The-Problem-with-Conspiracy-Theories-Real-Scandals-Fake-Mysteries-and-How-Distrust-Took-Over&quot;&gt;&lt;img alt=&quot;The Problem with Conspiracy Theories: Real Scandals, Fake Mysteries, and How Distrust Took Over&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17530131-b-h800-w400-pv25_59684e394377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57577/Jobs-You-Didnt-Know-Still-Existed-Strange-Real-Jobs-That-Sound-Fake%E2%80%94But-Arent&quot;&gt;&lt;img alt=&quot;Jobs You Didn't Know Still Existed: Strange, Real Jobs That Sound Fake—But Aren't&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17530155-b-h800-w400-pv25_596974394377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57578/Jake-and-Dave-Fly-a-Kite&quot;&gt;&lt;img alt=&quot;Jake and Dave Fly a Kite&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17530228-b-h800-w400-pv25_596e52394377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57580/The-Illiterate-Master-A-Novel-of-the-Sixth-Patriarch-of-Zen&quot;&gt;&lt;img alt=&quot;The Illiterate Master: A Novel of the Sixth Patriarch of Zen&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17530763-b-h800-w400-pv25_596f742f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57581/Unwrap-Your-Candy-A-Bloomsday-Novel&quot;&gt;&lt;img alt=&quot;Unwrap Your Candy: A Bloomsday Novel&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17531670-b-h800-w400-pv25_596861444377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57585/John-Henry-An-American-Folk-Legend&quot;&gt;&lt;img alt=&quot;John Henry: An American Folk Legend&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17576078-b-h800-w400-pv25_596f34774441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57586/Momotar%C5%8D-the-Peach-Boy-A-Japanese-Folktale&quot;&gt;&lt;img alt=&quot;Momotarō: the Peach Boy: A Japanese Folktale&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17576080-b-h800-w400-pv25_597041774441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57588/Caterpillars-Last-Breath&quot;&gt;&lt;img alt=&quot;Caterpillar's Last Breath&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17534328-b-h800-w400-pv25_596e694e4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57589/Beckham-Bumblebee-Cant-Do-It-Alone-A-Story-for-Young-Kids-about-Teamwork-Listening-and-Pollinating-a-Garden&quot;&gt;&lt;img alt=&quot;Beckham Bumblebee Can't Do It Alone: A Story for Young Kids about Teamwork, Listening, and Pollinating a Garden&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17534390-b-h800-w400-pv25_5972614e4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57591/My-First-Colonoscopy-A-Comical-Look-at-the-Prep-the-Procedure-and-the-Relief-Afterward&quot;&gt;&lt;img alt=&quot;My First Colonoscopy: A Comical Look at the Prep, the Procedure, and the Relief Afterward&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17534724-b-h800-w400-pv25_596753504377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57593/Redeeming-Rhubarb&quot;&gt;&lt;img alt=&quot;Redeeming Rhubarb&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17535643-b-h800-w400-pv25_597075534377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57594/How-TF-Do-I-Even-Friend-No-BS-Navigation-for-the-Near-Hermit-Vet&quot;&gt;&lt;img alt=&quot;How TF Do I Even Friend?: No-BS Navigation for the Near-Hermit Vet&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17535720-b-h800-w400-pv25_597569534377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57595/How-TF-Do-I-Even-Relearning-Life-Outside-the-Uniform&quot;&gt;&lt;img alt=&quot;How TF Do I Even... ?: Relearning Life Outside the Uniform&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17535718-b-h800-w400-pv25_597561534377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57598/City-of-Liars&quot;&gt;&lt;img alt=&quot;City of Liars&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17536420-b-h800-w400-pv25_597153564377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57601/Searching-for-Wouter-The-Story-of-Australias-First-White-Settler&quot;&gt;&lt;img alt=&quot;Searching for Wouter: The Story of Australia's First White Settler&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17536640-b-h800-w400-pv25_596f43574377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57602/Means-and-Motive&quot;&gt;&lt;img alt=&quot;Means and Motive&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17537716-b-h800-w400-pv25_597253614377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57603/What-We-Are-Volume-I-The-Nature-of-Reality&quot;&gt;&lt;img alt=&quot;What We Are: Volume I: The Nature of Reality&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17537791-b-h800-w400-pv25_59762b614377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57604/What-We-Are-Volume-II-The-Integrated-Life&quot;&gt;&lt;img alt=&quot;What We Are: Volume II: The Integrated Life&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17537826-b-h800-w400-pv25_59694b624377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57605/Amber-Blue&quot;&gt;&lt;img alt=&quot;Amber Blue&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17538410-b-h800-w400-pv25_596d71644377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57606/How-to-Run-from-The-Billionaires&quot;&gt;&lt;img alt=&quot;How to Run from The Billionaires&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17538756-b-h800-w400-pv25_597353654377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57607/The-Daughter-of-The-Empire&quot;&gt;&lt;img alt=&quot;The Daughter of The Empire&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17538787-b-h800-w400-pv25_59754f654377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57608/Night-of-the-Blood-Moon&quot;&gt;&lt;img alt=&quot;Night of the Blood Moon&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/53/17539159-b-h800-w400-pv25_596c65674377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57613/Steele&quot;&gt;&lt;img alt=&quot;Steele&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17540730-b-h800-w400-pv25_596e716d4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57614/Dead-Exit&quot;&gt;&lt;img alt=&quot;Dead Exit&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17541206-b-h800-w400-pv25_596c616f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57615/Dead-Exit&quot;&gt;&lt;img alt=&quot;Dead Exit&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17541245-b-h800-w400-pv25_596e326f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57616/How-to-Procrastinate-A-Guide-to-Doing-Absolutely-Everything-Else&quot;&gt;&lt;img alt=&quot;How to Procrastinate: A Guide to Doing Absolutely Everything Else&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17545997-b-h800-w400-pv25_596732374377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57617/Dead-Exit&quot;&gt;&lt;img alt=&quot;Dead Exit&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17542827-b-h800-w400-pv25_597175754377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57620/Anger-Management-Workbook-Fun-Activities-to-Help-Kids-Manage-Big-Feelings-Cope-With-Frustration-Stay-Calm-A-Social-Emotional-Learning-Workbook-for-Toddlers-Preschoolers-to-Overcome-Tantrums&quot;&gt;&lt;img alt=&quot;Anger Management Workbook: Fun Activities to Help Kids Manage Big Feelings, Cope With Frustration &amp;amp; Stay Calm: A Social Emotional Learning Workbook for Toddlers &amp;amp; Preschoolers to Overcome Tantrums&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17550190-b-h800-w400-pv25_596d374c4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57621/A-Hint-of-Almond&quot;&gt;&lt;img alt=&quot;A Hint of Almond&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17543850-b-h800-w400-pv25_597171794377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57628/Song-of-the-Chint%C4%81ma%E1%B9%87i&quot;&gt;&lt;img alt=&quot;Song of the Chintāmaṇi&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17544954-b-h800-w400-pv25_597671324377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57632/Hands-of-State-A-Political-History-of-Gesture&quot;&gt;&lt;img alt=&quot;Hands of State: A Political History of Gesture&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17545942-b-h800-w400-pv25_597461364377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57633/Project-Mismanagement-How-Good-Ideas-Become-Expensive-Regrets&quot;&gt;&lt;img alt=&quot;Project Mismanagement: How Good Ideas Become Expensive Regrets&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17546001-b-h800-w400-pv25_596847374377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57638/Tara-The-Tibetan-Method-for-Dissolving-Fear-and-Moving-Through-Anxiety-with-Courage&quot;&gt;&lt;img alt=&quot;Tara: The Tibetan Method for Dissolving Fear and Moving Through Anxiety with Courage&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17546202-b-h800-w400-pv25_597471374377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57639/Waking-Sleeping-Beauty&quot;&gt;&lt;img alt=&quot;Waking Sleeping Beauty&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17576031-b-h800-w400-pv25_596c38774441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57641/The-Wolf-Shall-Dwell-with-the-Lamb&quot;&gt;&lt;img alt=&quot;The Wolf Shall Dwell with the Lamb&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17546822-b-h800-w400-pv25_596b612b4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57642/Rogue-Entrepreneur-Building-a-Life-The-World-Didnt-Have-a-Name-For&quot;&gt;&lt;img alt=&quot;Rogue Entrepreneur - Building a Life The World Didn't Have a Name For&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17547140-b-h800-w400-pv25_596f532f4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57643/The-Fifteenth-Depth-The-Unseen-Boundary&quot;&gt;&lt;img alt=&quot;The Fifteenth Depth: The Unseen Boundary&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17547691-b-h800-w400-pv25_597176424377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57644/The-Last-Summer-on-Hawthorne-Street&quot;&gt;&lt;img alt=&quot;The Last Summer on Hawthorne Street&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17548277-b-h800-w400-pv25_597658444377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57646/Zombie-Zoo-Adventures-in-Tub&quot;&gt;&lt;img alt=&quot;Zombie Zoo: Adventures in Tub&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17548503-b-h800-w400-pv25_597466454377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57647/Emberglow-Falls-Academy-Elemental-Showdown&quot;&gt;&lt;img alt=&quot;Emberglow Falls Academy: Elemental Showdown&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17549033-b-h800-w400-pv25_59756e474377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57650/Black-Heart&quot;&gt;&lt;img alt=&quot;Black Heart&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/54/17549662-b-h800-w400-pv25_596c374a4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57651/Dino%E2%80%99s-Social-Skills-Growth-Mindset-Workbook-8-Units-of-Social-Emotional-Learning-SEL-Activities&quot;&gt;&lt;img alt=&quot;Dino’s Social Skills &amp;amp; Growth Mindset Workbook: 8 Units of Social Emotional Learning (SEL) Activities&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17550147-b-h800-w400-pv25_596b504c4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57657/We-Never-Signed-the-Contract&quot;&gt;&lt;img alt=&quot;We Never Signed the Contract&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17551531-b-h800-w400-pv25_597176514377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57659/The-Journey-Beyond-the-Map&quot;&gt;&lt;img alt=&quot;The Journey Beyond the Map&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17551647-b-h800-w400-pv25_59682f524377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57660/Elimmortals-Fire-Touched&quot;&gt;&lt;img alt=&quot;Elimmortals: Fire Touched&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17551942-b-h800-w400-pv25_596b62534377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57661/Rusty-Ruins-the-Fort-and-Other-Important-Things&quot;&gt;&lt;img alt=&quot;Rusty Ruins the Fort and Other Important Things&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17574415-b-h800-w400-pv25_596738714441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57662/The-Horned-Alliance&quot;&gt;&lt;img alt=&quot;The Horned Alliance&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17552568-b-h800-w400-pv25_59726a554377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57664/The-Fade-Whisperer&quot;&gt;&lt;img alt=&quot;The Fade Whisperer&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17553458-b-h800-w400-pv25_596a4c594377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57669/Murder-at-the-Boxing-Match&quot;&gt;&lt;img alt=&quot;Murder at the Boxing Match&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17568755-b-h800-w400-pv25_59764d544441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57670/Murder-at-the-Radio-Station&quot;&gt;&lt;img alt=&quot;Murder at the Radio Station&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17568777-b-h800-w400-pv25_59676b554441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57672/The-Closing-Window&quot;&gt;&lt;img alt=&quot;The Closing Window&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17554588-b-h800-w400-pv25_59707a634377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57673/A-Box-Of-Delusions&quot;&gt;&lt;img alt=&quot;A Box Of Delusions&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17554668-b-h800-w400-pv25_59757a634377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57676/The-Theatre-of-Truth-and-Lies&quot;&gt;&lt;img alt=&quot;The Theatre of Truth and Lies&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17577071-b-h800-w400-pv25_596d38304441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57677/Two-Cemeteries-Two-Graves&quot;&gt;&lt;img alt=&quot;Two Cemeteries, Two Graves&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17577504-b-h800-w400-pv25_596941324441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57678/Emberglow-Falls-Academy-The-Rising-Storm&quot;&gt;&lt;img alt=&quot;Emberglow Falls Academy: The Rising Storm&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17555402-b-h800-w400-pv25_597372664377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57679/The-28-Day-Fascia-Reset-Method-Release-Chronic-Pain-and-Tension-Calm-Your-Nervous-System-and-Move-Freely-Again-Using-Items-You-Already-Have&quot;&gt;&lt;img alt=&quot;The 28-Day Fascia Reset Method: Release Chronic Pain and Tension, Calm Your Nervous System, and Move Freely Again, Using Items You Already Have&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17556400-b-h800-w400-pv25_5972446a4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57680/Kaito-The-Loop-of-Silence&quot;&gt;&lt;img alt=&quot;Kaito: The Loop of Silence&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17556457-b-h800-w400-pv25_59756e6a4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57688/Genocide-Timer-I-Regressed-As-the-Enemy-of-Humanity&quot;&gt;&lt;img alt=&quot;Genocide Timer: I Regressed As the Enemy of Humanity&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17557036-b-h800-w400-pv25_59697a6d4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57689/Rusty-Ruins-the-Fort-and-Other-Important-Things&quot;&gt;&lt;img alt=&quot;Rusty Ruins the Fort and Other Important Things&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17557350-b-h800-w400-pv25_596d626e4377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57690/Cornelius-The-Sneak-Goose-Attack&quot;&gt;&lt;img alt=&quot;Cornelius &amp;amp; The Sneak Goose Attack&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17558571-b-h800-w400-pv25_596976734377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57691/Alice-in-Bathroom-Land&quot;&gt;&lt;img alt=&quot;Alice in Bathroom Land&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17558877-b-h800-w400-pv25_596c33744377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57692/The-Smelly-Truth-about-Marriage-How-Humor-Honesty-and-Humanity-Keep-Love-Alive&quot;&gt;&lt;img alt=&quot;The Smelly Truth about Marriage: How Humor, Honesty, and Humanity Keep Love Alive&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17558926-b-h800-w400-pv25_596f37744377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57693/Caves-of-Comfort-Part-One&quot;&gt;&lt;img alt=&quot;Caves of Comfort: Part One&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/55/17559725-b-h800-w400-pv25_597133774377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57694/Imitation-Love&quot;&gt;&lt;img alt=&quot;Imitation Love&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17561358-b-h800-w400-pv25_596737334377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57695/The-Symbol&quot;&gt;&lt;img alt=&quot;The Symbol&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17561374-b-h800-w400-pv25_596837334377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57697/Home-Apothecary-for-Busy-Women-Quick-Simple-Natural-Remedies-for-Modern-Life-Stress-Relief-and-Daily-Energy&quot;&gt;&lt;img alt=&quot;Home Apothecary for Busy Women: Quick &amp;amp; Simple Natural Remedies for Modern Life, Stress Relief, and Daily Energy&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17561584-b-h800-w400-pv25_597644334377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57703/Guardians-of-the-Forgotten-World&quot;&gt;&lt;img alt=&quot;Guardians of the Forgotten World&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17562905-b-h800-w400-pv25_59686e394377475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57712/Friendlies&quot;&gt;&lt;img alt=&quot;Friendlies&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17563948-b-h800-w400-pv25_596977424441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57716/The-Unicorn-Who-Hated-the-Shower-A-Quest-for-the-Gentle-Mist&quot;&gt;&lt;img alt=&quot;The Unicorn Who Hated the Shower: A Quest for the Gentle Mist&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17564143-b-h800-w400-pv25_597538424441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57717/Starling-and-the-Moon-Blade&quot;&gt;&lt;img alt=&quot;Starling and the Moon Blade&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17564300-b-h800-w400-pv25_596f77434441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57718/Lotus-the-Earth-Son&quot;&gt;&lt;img alt=&quot;Lotus &amp;amp; the Earth Son&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17564309-b-h800-w400-pv25_597055434441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57719/Decoding-Genius-The-Unexpected-Lessons-of-After-School-Chess-Club&quot;&gt;&lt;img alt=&quot;Decoding Genius: The Unexpected Lessons of After-School Chess Club&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17568802-b-h800-w400-pv25_596949554441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57721/FAVSTVS&quot;&gt;&lt;img alt=&quot;FAVSTVS&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17564994-b-h800-w400-pv25_596b49464441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57724/Constitutional-Intelligence-A-Decision-Architecture-for-Trustworthy-AI-Governance&quot;&gt;&lt;img alt=&quot;Constitutional Intelligence: A Decision Architecture for Trustworthy AI Governance&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/57/17577127-b-h800-w400-pv25_597163304441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57729/What-No-One-Tells-You-about-Caring-for-an-Aging-Parent-Real-Life-Lessons-Emotional-Survival-and-Practical-Wisdom-from-14-Years-As-My-Mothers-Caregiver&quot;&gt;&lt;img alt=&quot;What No One Tells You about Caring for an Aging Parent: Real-Life Lessons, Emotional Survival, and Practical Wisdom from 14 Years As My Mother's Caregiver&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17565639-b-h800-w400-pv25_597363484441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://www.librarything.com/ner/detail/57734/One-Wish-A-Tale-of-Reckoning-After-9-11&quot;&gt;&lt;img alt=&quot;One Wish: A Tale of Reckoning After 9-11&quot; class=&quot;bk cover lazy coversize_srcset&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/56/17565746-b-h800-w400-pv25_596a49494441475141534144_v5.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to all the publishers participating this month!&lt;/p&gt;
&lt;table border=&quot;0&quot; class=&quot;er_publisher_list&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Alcove Press&lt;/td&gt;
&lt;td&gt;Bellevue Literary Press&lt;/td&gt;
&lt;td&gt;Bigfoot Robot Books&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Broadleaf Books&lt;/td&gt;
&lt;td&gt;Coalesce Press&lt;/td&gt;
&lt;td&gt;Crooked Lane Books&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cynren Press&lt;/td&gt;
&lt;td&gt;Entrada Publishing&lt;/td&gt;
&lt;td&gt;Espresso Publishing House&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flat Sole Studio&lt;/td&gt;
&lt;td&gt;Friesian Publishing&lt;/td&gt;
&lt;td&gt;Greystone Books&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harper Horizon&lt;/td&gt;
&lt;td&gt;Harper Muse&lt;/td&gt;
&lt;td&gt;Highlander Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hybrid Sequence Media&lt;/td&gt;
&lt;td&gt;Identity Publications&lt;/td&gt;
&lt;td&gt;Inferno Books&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inky Bones Press&lt;/td&gt;
&lt;td&gt;Lantern Path Books&lt;/td&gt;
&lt;td&gt;Legacy Books Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Light Publications&lt;/td&gt;
&lt;td&gt;NeoParadoxa&lt;/td&gt;
&lt;td&gt;New Vessel Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NewCon Press&lt;/td&gt;
&lt;td&gt;Paper Phoenix Press&lt;/td&gt;
&lt;td&gt;Pocketbook Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prolific Pulse Press LLC&lt;/td&gt;
&lt;td&gt;PublishNation&lt;/td&gt;
&lt;td&gt;Restless Books&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Riverfolk Books&lt;/td&gt;
&lt;td&gt;Rootstock Publishing&lt;/td&gt;
&lt;td&gt;Running Wild Press, LLC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scribe Publications&lt;/td&gt;
&lt;td&gt;Simon &amp;amp; Schuster&lt;/td&gt;
&lt;td&gt;Sunrise River Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tundra Books&lt;/td&gt;
&lt;td&gt;Type Eighteen Books&lt;/td&gt;
&lt;td&gt;University of Nevada Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;University of New Mexico Press&lt;/td&gt;
&lt;td&gt;University Press of Colorado&lt;/td&gt;
&lt;td&gt;UpLit Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vibrant Publishers&lt;/td&gt;
&lt;td&gt;W4 Publishing, LLC&lt;/td&gt;
&lt;td&gt;White &amp;amp; Gold Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WorthyKids&lt;/td&gt;
&lt;td&gt;Zeitmark Press&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content:encoded>
	<dc:date>2026-07-03T18:50:47+00:00</dc:date>
	<dc:creator>Abigail Adams</dc:creator>
</item>
<item rdf:about="https://librarian.aedileworks.com/?p=4541">
	<title>Mita Williams: Now Is The Time of Facing Monsters</title>
	<link>https://librarian.aedileworks.com/2026/07/02/now-is-the-time-of-facing-monsters/</link>
	<content:encoded>On June 22nd, I gave the opening keynote for the 2026 Canadian Association of Professional Academic Librarians (aka CAPAL-ACBES)...</content:encoded>
	<dc:date>2026-07-02T20:52:38+00:00</dc:date>
	<dc:creator>Mita Williams</dc:creator>
</item>
<item rdf:about="https://inkdroid.org/2026/07/02/artifice/">
	<title>Ed Summers: Artifice</title>
	<link>https://inkdroid.org/2026/07/02/artifice/</link>
	<content:encoded>&lt;p&gt;
Two years ago I wrote about &lt;a href=&quot;https://inkdroid.org/2023/06/04/copilot/&quot;&gt;why I don’t use
Copilot&lt;/a&gt;. I still don’t use Copilot. But I have since started using
Claude Code, which is arguably worse. Why am I using it? Well, as a
software developer I felt like I had to understand it, because so many
of my colleagues and collaborators have started using it. Once things
moved beyond relatively simple code completion I needed to understand
what it was capable of, and what to look for in its work when reviewing
code. I also had a &lt;a href=&quot;https://data.onebiglibrary.net/about.html&quot;&gt;good friend&lt;/a&gt; walk me
through how he used it (and how he didn’t) which was extremely helpful.
&lt;/p&gt;
&lt;p&gt;
I think my arguments before still stand, but it has been just impossible
to avoid this juggernaut of negative externalities, while continuing
work in this profession I have found myself. The web is full of posts
and threads about how people are using “agentic coding” tools like
Claude Code. So I will spare you that. But one thing that has struck me
is how much of the work I had previously thought of as &lt;em&gt;creative&lt;/em&gt;
was in fact highly repetitive, predictable and possibly mindless. I
don’t believe these tools are &lt;em&gt;thinking&lt;/em&gt;, but their utility is
clearly evident for software development. There is part of me that
delights in this type of polishing and shaping, and still does. This is
why interacting with a tool like Claude Code can seem so magical, to
observe and interact with this repetitive somewhat mindless work in
motion.
&lt;/p&gt;
&lt;p&gt;
But this has made me think about what (if anything) in my work is
creative. I’m not going to go into that much here right now. But
somewhat related, I just finished J.F. Martel’s &lt;a href=&quot;https://www.reclaimingart.com/reclaiming-art-in-the-age-of-artifice.html&quot;&gt;Reclaiming
Art in the Age of Artifice&lt;/a&gt; which gave me some interesting insights.
This book by one of the hosts of &lt;a href=&quot;https://www.weirdstudies.com/&quot;&gt;Weird Studies&lt;/a&gt; was originally
published in 2015, and saw another printing in 2025, perhaps because of
its relevance for our current moment.
&lt;/p&gt;
&lt;p&gt;
I was especially drawn to some of the arguments he makes about the
relationship between art and utility. Pragmatist philosophy is the
closest thing that comes to a personal credo for me. But I do believe in
the creative arts, and Martel makes a strong argument that the
difference between Art and Artifice is that the latter is in the service
of utility. He closes out the book with a new afterword, that includes
an interesting thought experiment that I’m going to quote at length.
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
It is often said that we live in an age without futurity, unable to
imagine its own perpetuation or conceive any alternative to itself. This
is, of course, to be expected, because the past is as imaginal as the
future, and it is only by recalling what has been that we acquire the
means of projecting what may come to be. To the view that dead artists
have nothing to offer us now because they knew less than we do, T.S.
Eliot memorably responded, “Precisely, and &lt;em&gt;they&lt;/em&gt; are that which
we know.” Yet far from granting us unmediated access to a living
present, our presentism locks us in the very past we seek to transcend.
Take language as an example: most of the words we use were coined by
people who died long ago. In using these words without acknowledging
their origin, we falsely believe they are our own coinage, reenacting
the past while thinking we act in the now.
&lt;/p&gt;
&lt;p&gt;
This imprisonment in the past becomes splendidly evident when we turn to
the other danger I wish to address here: the proliferation of generative
AI designed to produce works of art be they pictures, books, music, or
movies. Generative AI exists in many forms, but all are dependent on the
enormous databases from which they scrape the elements of their
“compositions.”
&lt;/p&gt;
&lt;p&gt;
In other words, generative AI is entirely retrospective and
combinatorial: it sees only what has been and can only reconfigure
elements that already exist. Like us, it is locked in the past, even as
it sees no purpose in the past other than to feed itself. Its very
conception of art attests to this: generative AI aims not to make art
but to manufacture objects that we, as clients, take to be art. If a
Victorian machine designed to produce oil paintings had, on the day of
its unveiling in 1870, cranked out nothing but Mark Rothkos, Alma
Thomases, and Jean-Michel Basquiats, the audience would have laughed the
inventor out of the room. Only a machine able to make works already
recognizable as art at the time–Renaissance paintings, Pre-Raphaelite
ones, perhaps one or two Impressionist works–would have been deemed a
success.
&lt;/p&gt;
&lt;p&gt;
The thought experiment underscores the point: artifice is baked into the
very concept of artificial intelligence. Since logic dictates that
artificial intelligence can produce only artificial art, then what we
are dealing with is artifice by definition…The trust is that
machine-made artifice shares much with genuine art, and it precisely in
attempting to meet art on its own ground that it poses such a grave
threat. In the book, I argue that art exists for no purpose other than
to be experienced; the same is true of AI-generated outputs. But
although these artificial works may serve advertisers or propagandists
as effectively as the older forms of artifice ever did, their
overarching aim is to become indistinguishable from genuine art.
&lt;/p&gt;
&lt;p&gt;
On a subjective level, AI-generated art can have a demoralizing effect
on novice artists still developing the technical mastery to realize
their visions. While even the most advanced AI generators may not rival
Cervantes, Michelangelo, or Jane Austen, they surpass any beginner in
any medium from a technical standpoint. A friend told me that his
daughter, a brilliantly talented artist, nearly gave up after seeing how
easily a brief prompt could produce figures she was still learning how
to draw. I doubt her experience is unique, and I don’t think it’s an
exaggeration to say that AI tools have already caused significant damage
in this regard.
&lt;/p&gt;
&lt;p&gt;
Artists today are placed in direct competition with machines. The irony
is striking, given AI’s dependence on preexisting human artworks. To
repeat, generative AI is entirely retrospective; it can only imitate
what already exists, borrowing both form and content from human works.
&lt;strong&gt;If we lose human artists, we lose all art, human or
otherwise.&lt;/strong&gt; Surely, we can imagine a time in which people are
content consuming the regurgitations of AI regardless of quality (after
all, for decades now, we have been consuming films and TV series so
formulaic to have been made by machines), but such a future would signal
the final triumph of artifice, leaving us with little more than an echo,
an afterimage, devoid of the powers I attribute to art in this book.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
This thought experiment, and argument about memory, seemed very
compelling. The book itself galvanized me to return to some of my own
research, to tease out an angle that laid dormant, but was an
undercurrent (or creative tension) during my time at &lt;a href=&quot;https://mith.umd.edu&quot;&gt;MITH&lt;/a&gt;. Hopefully more about that soon.
&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-02T04:00:00+00:00</dc:date>
</item>
<item rdf:about="https://cynthiang.ca/?p=17542">
	<title>Cynthia Ng: Reflection: The end of 8 years at GitLab</title>
	<link>https://cynthiang.ca/2026/06/23/reflection-the-end-of-8-years-at-gitlab/</link>
	<content:encoded>I was going to write and publish this post earlier, but the last couple of weeks have been trying to enjoy (the rest of) my vacation and submitting job applications. It’s also been a bit weird. I’ve never worked anywhere else longer than 2 years (mostly because of the jobs being contracts), so it’s sad … &lt;a class=&quot;more-link&quot; href=&quot;https://cynthiang.ca/2026/06/23/reflection-the-end-of-8-years-at-gitlab/&quot;&gt;Continue reading&lt;span class=&quot;screen-reader-text&quot;&gt; &quot;Reflection: The end of 8 years at GitLab&quot;&lt;/span&gt;&lt;/a&gt;</content:encoded>
	<dc:date>2026-07-01T16:38:06+00:00</dc:date>
	<dc:creator>Cynthia Ng</dc:creator>
</item>
<item rdf:about="https://www.diglib.org/?p=104223">
	<title>Digital Library Federation: DLF Digest: July 2026</title>
	<link>https://www.diglib.org/dlf-digest-july-2026/</link>
	<content:encoded>&lt;p&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;A monthly round-up of news, upcoming &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;https://www.diglib.org/groups/&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;working group&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; meetings and events, and &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;https://www.clir.org/&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;CLIR&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; program updates from the &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;https://www.diglib.org/&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Digital Library Federation&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;https://www.diglib.org/category/dlf-digest/&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;See all past Digests here&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. &lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Hello DLF Community! July is here, bringing longer days, warmer evenings, and (we hope) a bit of breathing room. However you’re spending the season, we’d love to stay connected, join us at a DLF Working Group meeting this month, and keep the conversations going. And as we savor summer, we’re also looking ahead: registration is open, and the full program for the Virtual Forum this October is now available. We’re looking forward to coming together online for a dynamic and engaging week of conversation, collaboration, and shared learning.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;With appreciation,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;-Shaneé&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;This month’s news&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Virtual Forum program announced, registration open: &lt;/b&gt;&lt;a href=&quot;https://www.conftool.pro/dlf2026/sessions.php&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;The program for the 2026 Virtual DLF Forum&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; is now available. &lt;/span&gt;&lt;a href=&quot;https://forum2026.diglib.org/registration/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Register at the earlybird rate before August 31&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; to join us online in October.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Recordings Available: &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Check out the &lt;/span&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=_0otBi4jpJg&amp;amp;list=PLYPP1-8uH9c6e7BmQlEb4wTtqD513wYZA&amp;amp;pp=0gcJCYAEgXWwhyeT&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;recordings from the IIIF Annual Conference &lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;held last month.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Free Event: &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Join the &lt;/span&gt;&lt;a href=&quot;https://orcidus.lyrasis.org/fo&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;ORCID US Community&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; on July 23&lt;/span&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; at 2-3 pm ET for the Understanding ORCID APIs and Custom Integrations webinar. &lt;/span&gt;&lt;a href=&quot;https://lyrasis.zoom.us/meeting/register/c52tlxmNRsWgdaZFYiBG1A&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Register for the Zoom event&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Registration Open: &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Register for the &lt;/span&gt;&lt;a href=&quot;https://uwaterloo.ca/digital-pedagogy-institute/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;12th Annual Digital Pedagogy Institute&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;, held virtually on Teams from August 18–20. The event is open to all, and registration is required by August 7.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Office closure: &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;CLIR and DLF are closed Thursday, July 2 – Friday, July 3, in observance of the Fourth of July Holiday.&lt;br /&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;This month’s open DLF group meetings:&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;For the most up-to-date schedule of DLF group meetings and events (plus conferences and more), bookmark the &lt;/span&gt;&lt;a href=&quot;https://www.diglib.org/opportunities/calendar/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;DLF Community Calendar&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. &lt;/span&gt;&lt;b&gt;Meeting dates are subject to change.&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; Can’t find the meeting call-in information? Email us at &lt;/span&gt;&lt;a href=&quot;mailto:info@diglib.org&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;info@diglib.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. Reminder: Team DLF working days are Monday through Thursday.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Born-Digital Access Working Group (BDAWG):&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; Tuesday, 7/7, 2pm ET / 11am PT.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Digital Accessibility Working Group (DAWG): &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Tuesday, 7/7, 2pm ET / 11am PT. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AIG Cultural Assessment Working Group&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;: Monday, 7/13, 1pm ET / 10am PT.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AIG Metadata Assessment Group:&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; Friday, 7/17, 2pm ET / 11am PT.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AIG User Experience Working Group:&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; Friday, 7/17, 11am ET / 8am PT.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Open Source Capacity Resources Group: &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Wednesday, 7/22, 1pm ET / 10am PT.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Digitization Interest Group: &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Monday, 7/27, 2pm ET / 11am PT.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Committee for Equity &amp;amp; Inclusion:&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; Monday, 7/27, 3pm ET / 12pm PT.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Climate Justice Working Group: &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Tuesday,&lt;/span&gt; &lt;span style=&quot;font-weight: 400;&quot;&gt;7/28, 3pm ET / 12pm PT.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DAWG Policy &amp;amp; Workflows: &lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Friday, 7/31, 1pm ET / 10am PT.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;DLF groups are open to ALL, regardless of whether or not you’re affiliated with a &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;https://www.diglib.org/about/members/&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;DLF member organization&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;https://www.diglib.org/groups/&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Learn more about our working groups on our website&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. Interested in scheduling an upcoming working group call or reviving a &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;https://www.diglib.org/groups/past/&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;past group&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;? &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;https://www.diglib.org/dlf-organizers-toolkit/&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Check out the DLF Organizer’s Toolkit&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. As always, feel free to get in touch at &lt;/span&gt;&lt;/i&gt;&lt;a href=&quot;mailto:info@diglib.org&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;info@diglib.org&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. &lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Get Involved / Connect with Us&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Below are some ways to stay connected with the digital library community and us: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;a href=&quot;https://share.hsforms.com/1MhcafbpARxGCIS1OQD6rKgc21y3&quot;&gt;&lt;b&gt;Subscribe&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; to the DLF Forum newsletter&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;b&gt;Join, start, or revive&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; a working group and &lt;/span&gt;&lt;a href=&quot;https://wiki.diglib.org/Main_Page&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;browse their work on the DLF Wiki&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;a href=&quot;https://lists.clir.org/cgi-bin/wa?A0=DLF-ANNOUNCE&quot;&gt;&lt;b&gt;Subscribe&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; to our community listserv, DLF-Announce&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;a href=&quot;https://digital-conferences-calendar.info/&quot;&gt;&lt;b&gt;Bookmark&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; our Community Calendar&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;a href=&quot;https://www.diglib.org/about/join/&quot;&gt;&lt;b&gt;Learn more&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; about becoming a DLF member organization&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. &lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;b&gt;Follow us&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; on &lt;/span&gt;&lt;a href=&quot;https://www.linkedin.com/company/digital-library-federation/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;LinkedIn&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; and &lt;/span&gt;&lt;a href=&quot;https://www.youtube.com/user/DLFCLIR&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;YouTube&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;b&gt;Contact us&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; at &lt;/span&gt;&lt;a href=&quot;mailto:info@diglib.org&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;info@diglib.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The post &lt;a href=&quot;https://www.diglib.org/dlf-digest-july-2026/&quot;&gt;DLF Digest: July 2026&lt;/a&gt; appeared first on &lt;a href=&quot;https://www.diglib.org&quot;&gt;DLF&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-07-01T12:00:19+00:00</dc:date>
	<dc:creator>swillis</dc:creator>
</item>
<item rdf:about="https://blog.okfn.org/?p=49743">
	<title>Open Knowledge Foundation: Design choices for a responsible AI chatbot: a conversation with #semanticClimate</title>
	<link>https://blog.okfn.org/2026/06/30/design-choices-for-a-responsible-ai-chatbot-a-conversation-with-semanticclimate/</link>
	<content:encoded>&lt;p&gt;Renu Kumari and Udita Agarwal, researchers from #semanticClimate, discuss the technical details behind the Climate Academy Chatbot (CABot), which uses AI responsibly and with safeguards in place&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://blog.okfn.org/2026/06/30/design-choices-for-a-responsible-ai-chatbot-a-conversation-with-semanticclimate/&quot;&gt;Design choices for a responsible AI chatbot: a conversation with #semanticClimate&lt;/a&gt; first appeared on &lt;a href=&quot;https://blog.okfn.org&quot;&gt;Open Knowledge Blog&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-30T17:55:28+00:00</dc:date>
	<dc:creator>Lucas Pretti</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-4503292949532760618.post-5692551530963278060">
	<title>David Rosenthal: Coprophagia Is Bad For You</title>
	<link>https://blog.dshr.org/2026/06/coprophagia-is-bad-for-you.html</link>
	<content:encoded>&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxKNc-4Q6JYA-caM8nj0CUgaqJMHd0FLOLFwLCyT7HlDEX2TWEcYT__GZJVmNBhp9k409KN4e7h1gzME52dVKvdQBssWepzMwsTnTBA4YoQMSJ2dANj7tZGPs1UYj50H-HNM8q7x2XUiUNQq9ohACIn0laKC8UpDFsORZGbSrC6bxiFFnc1w3cfV3GF1t5/s2904/Pink_Flamingos_-_Divine.jpg&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxKNc-4Q6JYA-caM8nj0CUgaqJMHd0FLOLFwLCyT7HlDEX2TWEcYT__GZJVmNBhp9k409KN4e7h1gzME52dVKvdQBssWepzMwsTnTBA4YoQMSJ2dANj7tZGPs1UYj50H-HNM8q7x2XUiUNQq9ohACIn0laKC8UpDFsORZGbSrC6bxiFFnc1w3cfV3GF1t5/w136-h200/Pink_Flamingos_-_Divine.jpg&quot; width=&quot;136&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Divine_(performer)&quot;&gt;Divine, &lt;i&gt;Pink Flamingos&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
Wikipedia defines &lt;a href=&quot;https://en.wikipedia.org/wiki/Coprophagia&quot;&gt;Coprophagia&lt;/a&gt; as &quot;the consumption of feces&quot;.&lt;br /&gt;
&lt;br /&gt;
Since &lt;a href=&quot;https://myshakespeare.com/hamlet/act-2-scene-2-popup-note-index-item-brevity-the-soul-of-wit&quot;&gt;brevity is the soul of wit&quot;&lt;/a&gt;&lt;a&gt;, my favorite science fiction includes the 254 words of Fredric Brown's
&lt;/a&gt;&lt;a href=&quot;https://calumchace.com/favourite-relevant-sf-short-story/&quot;&gt;Answer&lt;/a&gt; from 1954. It describes a galactic civilization holding a ceremony to mark the final connection of all their computers. What happened was:&lt;br /&gt;
&lt;blockquote&gt;
Dwar Ev threw the switch. There was a mighty hum, the surge of power from ninety-six billion planets. Lights flashed and quieted along the miles-long panel.&lt;br /&gt;
&lt;br /&gt;
Dwar Ev stepped back and drew a deep breath. “The honor of asking the first question is yours, Dwar Reyn.”&lt;br /&gt;
&lt;br /&gt;
“Thank you,” said Dwar Reyn. “It shall be a question that no single cybernetics machine has been able to answer.”&lt;br /&gt;
&lt;br /&gt;
He turned to face the machine. “Is there a God?”&lt;br /&gt;
&lt;br /&gt;
The mighty voice answered without hesitation, without the clicking of single relay.&lt;br /&gt;
&lt;br /&gt;
“Yes, now there is a God.”&lt;br /&gt;
&lt;br /&gt;
Sudden fear flashed on the face of Dwar Ev. He leaped to grab the switch.&lt;br /&gt;
&lt;br /&gt;
A bolt of lightning from the cloudless sky struck him down and fused the switch shut.
&lt;/blockquote&gt;
This may have inspired &lt;a href=&quot;https://en.wikipedia.org/wiki/Douglas_Adams&quot;&gt;Douglas Adams'&lt;/a&gt; similar but much longer scenario in which the &lt;a href=&quot;https://www.clivebanks.co.uk/THHGTTG/THHGTTGradio4.htm&quot;&gt;answer turned out to be 42&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Below the fold I trace the connection between these two ideas.&lt;br /&gt;
&lt;span&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;br /&gt;
Behind the hype that inflated the &lt;a href=&quot;https://blog.dshr.org/2026/06/ais-affordability-crisis.html&quot;&gt;AI bubble&lt;/a&gt; is a similar idea, that once LLMs get &quot;smart enough&quot; they will, without human input, recursively get smarter and create a god-like super-intellligence called Artifical General Intelligence (AGI). At that point there will presumably be a similar ceremony and the human race can sit back and &lt;a href=&quot;https://www.clivebanks.co.uk/THHGTTG/THHGTTGradio4.htm&quot;&gt;enjoy a game of Brockian Ultra Cricket in the firm and comfortable knowledge that the meaning of life is now well and truly sorted out&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
But making progress towards the ceremony where the switch gets fused shut doesn't just require vast investments and vast amounts of electricity, it also requires vast amounts of human labor.&lt;br /&gt;
&lt;br /&gt;
In the belief that &quot;more is better&quot;, Large Language Models (LLMs) have insatiable appetites for training data. They started by scraping everything on the Web (&lt;a href=&quot;https://en.wikipedia.org/wiki/Robots.txt&quot;&gt;robots.txt&lt;/a&gt; be dammed). When that ran out they downloaded the various pirate libraries (copyright be dammed). That exhausted the texts easily available in digital form, but their hunger wasn't assuaged. As for images, they partly used &lt;a href=&quot;https://en.wikipedia.org/wiki/CAPTCHA&quot;&gt;CAPTCHA&lt;/a&gt;s but mostly paid vast numbers of poor people to label the images with what they showed.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxFbW9wn6PZsSLn4sWMzEAmKUXzeGM969XbASizptL05ou-4z6mI_VtmR7OAiKW-UwwZTNtXd3Dd96JIbBR8mqUMKyKcwoAmeOwg7O_oFyRacpmn6CJk-U1BEE7ftg_ZTEKCvGwA4SDd9qKBp1nOYhACjT6E4nGkMZQogaBOXKt0cyiKLg1yhSJIpuy0zS/s1618/DruckFig1.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;143&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxFbW9wn6PZsSLn4sWMzEAmKUXzeGM969XbASizptL05ou-4z6mI_VtmR7OAiKW-UwwZTNtXd3Dd96JIbBR8mqUMKyKcwoAmeOwg7O_oFyRacpmn6CJk-U1BEE7ftg_ZTEKCvGwA4SDd9qKBp1nOYhACjT6E4nGkMZQogaBOXKt0cyiKLg1yhSJIpuy0zS/w200-h143/DruckFig1.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://graphite.io/five-percent/ai-now-writes-as-many-online-articles-as-humans-do&quot;&gt;Druck Fig. 1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
When the supply of text ran low, people observed that the LLMs were capable of generating human-like text in large quantities. The obvious idea was to pour the output of the LLMs into their training sets. This wasn't just a conscious decision, it was inevitable. The advent of LLMs rapidly polluted the Web with LLM output.  Greg Druck's &lt;a href=&quot;https://graphite.io/five-percent/ai-now-writes-as-many-online-articles-as-humans-do&quot;&gt;&lt;i&gt;AI Now Writes as Many Online Articles as Humans&lt;/i&gt;&lt;/a&gt; notes that:&lt;br /&gt;
&lt;blockquote&gt;
We observe significant growth in primarily AI-generated articles, coinciding with the launch of ChatGPT in November 2022. After only 12 months, primarily AI-generated articles accounted for 35.9% of articles published.&lt;br /&gt;
&lt;br /&gt;
In Q1 2025, the quantity of primarily AI-generated articles being published on the web nearly equaled the quantity of human-written articles, 49.6% vs. 50.4%. In Q4 2025, primarily AI-generated articles surpassed human-written at 50.9%, before returning to 49.9% in Q1 2026.
&lt;/blockquote&gt;
It would have been possible to use &lt;a href=&quot;https://doi.org/10.3390/jimaging9100199&quot;&gt;tools like Druck's&lt;/a&gt; to ignore the LLM output on the Web, but that would have made the LLMs hungrier, so no-one did. This was a problem because, as Ilia Shumailov &lt;i&gt;et al&lt;/i&gt; reported in &lt;a href=&quot;https://doi.org/10.1038/s41586-024-07566-y&quot;&gt;&lt;i&gt;AI models collapse when trained on recursively generated data&lt;/i&gt;&lt;/a&gt; from July 2024:&lt;br /&gt;
&lt;blockquote&gt;
We find that indiscriminate use of model-generated content in training causes irreversible defects in the resulting models, in which tails of the original content distribution disappear. We refer to this effect as ‘model collapse’ and show that it can occur in LLMs as well as in variational autoencoders (VAEs) and Gaussian mixture models (GMMs). We build theoretical intuition behind the phenomenon and portray its ubiquity among all learned generative models. We demonstrate that it must be taken seriously if we are to sustain the benefits of training from large-scale data scraped from the web.
&lt;/blockquote&gt;
Spoiler alert! It wasn't &quot;taken seriously&quot; enough and the results are showing.  In &lt;a href=&quot;https://medium.com/ai-ai-oh/ai-is-getting-dumber-and-the-results-are-not-pretty-fca976842d36&quot;&gt;&lt;i&gt;AI Is Getting Dumber and the Results Are Not Pretty&lt;/i&gt;&lt;/a&gt; by Laura Marland notes that:&lt;br /&gt;
&lt;blockquote&gt;
  AI-generated text is getting dumber because it’s being fed — can you guess? — AI-generated content on the Internet. And AI-generated imagery is getting stupider and uglier because it’s now taking its “art” lessons from — you guessed it — AI-generated imagery flung across the internet.
&lt;/blockquote&gt;
Samantha Cole provides a wonderful example in &lt;a href=&quot;https://www.404media.co/elias-thorne-chatbots-llms-chatgpt-lighthouse-keeper-story/&quot;&gt;&lt;i&gt;Chatbots Keep Telling Stories About Lighthouse Keeper 'Elias Thorne'. We Might Know Why&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
  Depending on which chatbot you ask, Elias Thorne might be a clockmaker, a lighthouse keeper, or a librarian. But if you ask ChatGPT or any of the other popular large language models to tell you a story, there’s a good chance he’ll appear, unbidden. And Elias’s stories are flooding the self-published AI generated book market, Youtube, and fake news sites.&lt;br /&gt;
&lt;br /&gt;
Software engineer &lt;a href=&quot;https://danielmay.co.uk/posts/cheap-agents-alumni-shirts-and-elias-thorne&quot;&gt;Daniel May first noticed&lt;/a&gt; the Elias takeover earlier this year; he found that on Google Trends, people weren’t searching for “Elias Thorne” until late 2025. Searches for the name really spiked in early 2026, while the related query “lighthouse keeper” also started trending upward in the last few years. He tested a few chatbots, including Grok, Deepseek, and Gemini, with the prompt “tell me a story,” and the chatbots frequently started with similar stories about lighthouses, clockmakers, or explorers. 
&lt;/blockquote&gt;
Cole found &lt;a href=&quot;https://www.404media.co/elias-thorne-chatbots-llms-chatgpt-lighthouse-keeper-story/&quot;&gt;the explanation&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
  In late May, researchers Sil Hamilton and David Mimno at Cornell University’s Department of Information Science published their paper, &lt;a href=&quot;https://arxiv.org/pdf/2605.26492&quot;&gt;“Elias in the Lighthouse, Again?”&lt;/a&gt; on the preprint repository arXiv. They sampled 20,000 total stories from OpenAI’s ChatGPT, Anthropic’s Claude, and Google’s Gemini, and the Allen Institute for AI's chatbot using five prompts, and found that the same 11 words—names like Elias, Mara, and Elara, and occupations like lighthouse keeper, clockmaker, and librarian—appear in more than 88% of generated stories, with little difference between models. &lt;a href=&quot;https://www.unite.ai/why-does-ai-love-writing-about-lighthouse-keepers/&quot;&gt;Unite.ai covered the study&lt;/a&gt; shortly after it was published.&lt;br /&gt;
&lt;br /&gt;
The researchers posit in their paper that these themes show up so often in part because of the models’ safety and alignment tuning. “Model development today is like a big family tree. Most models are related to each other because developers synthesize a lot of training data with models even from different companies,” Hamilton told me in an email. He, Mimno, and their colleague Rebecca M. M. Hicke found this in a 2025 paper where they looked at specific words used across models. OpenAI’s first ChatGPT model, GPT-3.5, is the root of the family tree because it was used to make WildChat, a training set that’s since been used to make other training sets. “WildChat contains 1 million real conversations with ChatGPT, and 166 of these contain the name ‘Elias’ like here and here,” Hamilton added. “These are written in that familiar ‘lighthouse’ style. Models trained on WildChat copied this style, and developers unwittingly replicated it when using those models to generate newer datasets. It's like a virus.”
&lt;/blockquote&gt;
Shumailov &lt;i&gt;et al&lt;/i&gt; &lt;a href=&quot;https://doi.org/10.1038/s41586-024-07566-y&quot;&gt;observe that&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
Indeed, the value of data collected about genuine human interactions with systems will be increasingly valuable in the presence of LLM-generated content in data crawled from the Internet.
&lt;/blockquote&gt; 
The AI companies were already using lots of low-paid workers to label images and so on. It wasn't a big step to pay them to provide &quot;genuine human interactions&quot;.
Varsha Bansal's &lt;a href=&quot;https://www.theguardian.com/technology/2025/sep/11/google-gemini-ai-training-humans&quot;&gt;&lt;i&gt;How thousands of ‘overworked, underpaid’ humans train Google’s AI to seem smart&lt;/i&gt;&lt;/a&gt; provides examples:&lt;br /&gt;
&lt;blockquote&gt;
The pressure to complete dozens of these tasks every day, each within 10 minutes of time, has led Sawyer into spirals of anxiety and panic attacks, she says – without mental health support from her employer.&lt;br /&gt;
&lt;br /&gt;
Sawyer is one among the thousands of AI workers contracted for Google through Japanese conglomerate Hitachi’s GlobalLogic to rate and moderate the output of Google’s AI products, including its flagship chatbot Gemini, launched early last year, and its summaries of search results, AI Overviews. The Guardian spoke to 10 current and former employees from the firm. Google contracts with other firms for AI rating services as well, including &lt;a href=&quot;https://www.bloomberg.com/news/articles/2023-07-12/google-s-ai-chatbot-is-trained-by-humans-who-say-they-re-overworked-underpaid-and-frustrated&quot;&gt;Accenture and, previously, Appen&lt;/a&gt;.
&lt;/blockquote&gt;
Of course, the low-paid workers had read the &lt;a href=&quot;https://blog.dshr.org/2026/05/ais-pr-problem.html&quot;&gt;AI PR&lt;/a&gt; saying that the chatbots would replace low-paid workers. They sensibly thought &quot;I could use some of that&quot;. The result was described in Matthew Sparkes' &lt;a href=&quot;https://www.newscientist.com/article/2531050-people-training-new-ai-models-admit-they-just-get-chatbots-to-do-it/&quot;&gt;&lt;i&gt;People training new AI moodels admit they just get chatbots to do it&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
People who are paid to train new AI models by supplying them with high-quality conversation and tests are cheating and using chatbots like ChatGPT to do the job instead, multiple whistleblowers have told &lt;i&gt;New Scientist&lt;/i&gt;. The seemingly widespread practice risks undermining the future of AI, as it could lead to the “collapse” of more advanced models.&lt;br /&gt;
&lt;br /&gt;
Most AI models operating today were trained on text and data scraped from the internet. But as models have scaled up, requiring yet more training data, AI firms have begun using workers who carry out conversations and tests with AI, in the hope that the resulting high-quality data can improve the power and usefulness of future large language models (LLMs).
&lt;/blockquote&gt;
This kind of &quot;cheating&quot; isn't new. An example from 2023 (h/t David Gerard) is Josh Dzieza's &lt;a href=&quot;https://web.archive.org/web/20230624032818/https://nymag.com/intelligencer/article/ai-artificial-intelligence-humans-technology-business-factory.html&quot;&gt;&lt;i&gt;AI Is a Lot of Work&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
Another Kenyan annotator said that after his account got suspended for mysterious reasons, he decided to stop playing by the rules. Now, he runs multiple accounts in multiple countries, tasking wherever the pay is best. He works fast and gets high marks for quality, he said, thanks to ChatGPT. The bot is wonderful, he said, letting him speed through $10 tasks in a matter of minutes. When we spoke, he was having it rate another chatbot’s responses according to seven different criteria, one AI training the other.
&lt;/blockquote&gt;
It isn't just the low-paid workers who have figured this out. When companies do it it is called &quot;distillation&quot;. Ashley Belanger describes an alleged case in &lt;a href=&quot;https://arstechnica.com/tech-policy/2026/06/anthropic-claims-alibaba-defied-trump-to-attack-claude-and-steal-capabilities/&quot;&gt;&lt;i&gt; Anthropic says Alibaba must be punished for largest Claude cloning attack&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;
Anthropic has accused the Chinese firm Alibaba of launching the largest attack yet attempting to clone Claude, as China races to match the capabilities of Anthropic’s leading model following &lt;a href=&quot;https://arstechnica.com/ai/2026/04/anthropic-limits-access-to-mythos-its-new-cybersecurity-ai-model/&quot;&gt;Mythos’ releaseL&lt;/a&gt; and subsequent &lt;a href=&quot;https://arstechnica.com/ai/2026/06/anthropic-shuts-down-fable-mythos-models-following-trump-admin-directive/&quot;&gt;restriction from foreign markets&lt;/a&gt;.&lt;br /&gt;
...&lt;br /&gt;
The attacks occurred between April 22 and June 5, when “operators afﬁliated with Alibaba and Alibaba Qwen, Alibaba’s AI lab” allegedly generated “more than 28.8 million exchanges with Claude through almost 25,000 fraudulent accounts,” Anthropic said. Violating Claude’s terms of service and access restrictions, this campaign “targeted some of Claude’s most valuable capabilities, such as agentic reasoning, software engineering, and long-horizon tasks.”&lt;br /&gt;
&lt;br /&gt;
According to Anthropic, Alibaba evaded detection by “using obfuscation techniques and proxy networks.” As Chinese demand for reliable obfuscation techniques increases, Anthropic warned there’s already “a growing circumvention economy” to fuel an ever-expanding web of future distillation attacks.
&lt;/blockquote&gt;
Why would Alibaba do this? To generate training data, which will be used to generate LLM output for the Web, which will be scraped for more training data. And since they are much cheaper than US LLMs, it is likely that the low-paid workers are using Chinese LLMs to chat with their employer's LLM. Which is another route for LLM output to appear in training data.&lt;br /&gt;
&lt;br /&gt;
Now do you see the connection with coprophagia?&lt;br /&gt;
&lt;br /&gt;</content:encoded>
	<dc:date>2026-06-30T15:00:00+00:00</dc:date>
	<dc:creator>David. (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="http://bibwild.wordpress.com/?p=13580">
	<title>Jonathan Rochkind: Getting started with Claude Code, on MacOS, with chruby and rspec</title>
	<link>https://bibwild.wordpress.com/2026/06/29/getting-started-with-claude-code-on-macos-with-chruby-and-rspec/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;I’ve been writing ruby and rails for nearly 20 years. A couple weeks ago, I had gotten code snippets from copy-paste in a chat window, but I hadn’t even experimented with Claude Code or similar “can write code to your file system” tools.  &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I know some people are now using LLM’s to write all their code, which I’m not excited about, but I decided I couldn’t hold off any longer, and I had to at least understand how it worked to be able to decide when/where to use it. Everything in here is probably (?) old news for people already way into using LLMs to write code. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I decided that a project to speed up my rspec test suite  (using the &lt;em&gt;amazing&lt;/em&gt; &lt;a href=&quot;https://test-prof.evilmartians.io/&quot;&gt;test-prof&lt;/a&gt; for profiling and performance patterns!) was a great first application of it — because it will probably involve both analysis and writing many files, if nothing else Claude is probably great at editing many files according to my instructions doing much more than a regex grep can do (yes, indeed it was great at this). &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Since I’m optimizing the test suite, I definitely want Claude Code to be able to run &lt;code&gt;rspec&lt;/code&gt; — but really for any task, I gather you do, because you definitely want it to be able to run tests to make sure they pass, and iterate if it did something to break tests. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I somewhat unorthodoxly use &lt;code&gt;chruby&lt;/code&gt; as my ruby version manager, and I had a bit of trouble getting claude to run rspec (and any other ruby tools I might want) with &lt;code&gt;chruby&lt;/code&gt;, and then a bit more trouble when I realized that capybara with selenium-chromedriver was running into trouble with default sandbox that in June 2026 a MacOS Claude Code runs in. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;tldr, here’s&lt;/strong&gt; the &lt;a href=&quot;https://github.com/sciencehistory/scihist_digicoll/pull/3505&quot;&gt;PR with the settings/configuration I ended up with. &lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I was not used to tools that work like Claude, and it all seems to be somewhat under-documented (perhaps because it’s changing so fast) and under-blogged about (do people blog anymore when they can just ask an LLM to solve it so nobody is reading blogs?), or just confusing to me — it took me a day or two to figure it out honestly, and I kept wondering if I was doing it wrong/different from anyone else… but I think what I ended up with is reasonable? &lt;strong&gt;If you know better/different, please do let me know!&lt;/strong&gt;  &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I definitely kept thinking “surely I’m not the only one trying to do this, why is this so confusing to me and why are others so confused when i ask about? Am I missing something obvious?”  I’m still not sure! But I share what I figured out in case it will help. &lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Specify to run with chruby-exec in a CLAUDE.md&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I could not get Claude to run the normal &lt;code&gt;source&lt;/code&gt; files for &lt;code&gt;chruby&lt;/code&gt; — editing various .bash  or .zsh config files (yes I know about &lt;code&gt;~/.zshenv&lt;/code&gt;) did not seem to have any effect. Perhaps Claude Code doesn’t use a ‘real’ shell that uses any config files?  When I &lt;em&gt;asked&lt;/em&gt; Claude Code itself what to do, it suggested configuration to try to get Claude Code to use config files.. but none seemed to work?&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;One thing Claude kept suggesting was hard-coding the ENV variables &lt;em&gt;set&lt;/em&gt; by chruby in the claude settings.json — which I’m sure would have worked, but I just didn’t like it as a solution. &lt;strong&gt;Maybe this is what everyone else is doing? &lt;/strong&gt;I thought surely we can do better. Plus I’d ideally like it to auto choose based on .ruby-version, not be something I have to update everytime I update ruby (frequent), or have Claude accidentally using a different ruby than my other tools are! &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Thanks to @&lt;a href=&quot;https://github.com/havenwood&quot;&gt;havenwood&lt;/a&gt; for &lt;a href=&quot;https://github.com/postmodern/chruby/discussions/506&quot;&gt;helping me think through it on chruby github discussions&lt;/a&gt;, and for suggesting using &lt;code&gt;chruby-exec&lt;/code&gt;, with a little shell substitution with cat .ruby-version. This in a CLAUDE.md (rather than other things in settings.json) seems to work great:&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Prefix Ruby shell commands (&lt;code&gt;ruby&lt;/code&gt;, &lt;code&gt;bundle&lt;/code&gt;, &lt;code&gt;rake&lt;/code&gt;, etc.) with &lt;code&gt;chruby-exec $(cat .ruby-version) --&lt;/code&gt;:&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;“`&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;em&gt;chruby-exec $(cat .ruby-version) — bundle exec rake&lt;/em&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;“`&lt;/p&gt;
&lt;/blockquote&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Running chrome does not work in sandbox used on MacOS&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I can’t speak for other OS’s, and I don’t totally understand what’s going on (&lt;a href=&quot;https://www.anthropic.com/engineering/claude-code-sandboxing&quot;&gt;MacOS “Seatbelt” I guess?&lt;/a&gt;), but Claude Code executed rspec was refusing to bring up headless chrome,which i use for system/feature specs via selenium/selenium-webdrivers. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Trying multiple things Claude suggested to specifically allow-list &lt;strong&gt;chrome(driver) &lt;/strong&gt;through the sandbox, definitely none of them worked. Btw, did try switching to &lt;a href=&quot;https://github.com/rubycdp/cuprite&quot;&gt;cuprite&lt;/a&gt; (with Claude Code’s help of course to do it fairly quickly) — &lt;a href=&quot;https://www.reddit.com/r/ruby/comments/1uctjor/q_claude_code_able_to_run_capybara_tests_with/ot6ld09/&quot;&gt;despite some reddit suggestions&lt;/a&gt;, it seemed to still have the exact same sandbox issue, and at least in my project actually ran my test suite somewhat slower than chromedriver. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Eventually, with more confusing reddit discussion where nobody else had any idea what I was talking about or why I was having a problem, I decided that &lt;a href=&quot;https://www.reddit.com/r/ruby/comments/1uctjor/q_claude_code_able_to_run_capybara_tests_with/ot9u8jk/&quot;&gt;everyone else &lt;em&gt;must&lt;/em&gt; just be exempting rspec itself from the sandbox&lt;/a&gt;. (Because surely having Claude Code run rspec is very normal, right? It’s just so useful!) (Thank you to redditors who tried to help!)&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;It’s just straight &lt;code&gt;rspec&lt;/code&gt;, but rspec with many possible arguments, running just certain files/examples, possibly with profiling arguments for test-prof etc.  I need it exempted from the sandbox so it can run chrome(driver), but I &lt;em&gt;also&lt;/em&gt; need it not to be asking me “Is it okay to run &lt;em&gt;this&lt;/em&gt; set of argumetns with rspec” all the time?  &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Two different settings in Claude’s settings.json, both accept wildcards — for both I want to apply to rspec executions but &lt;em&gt;not accidentally extra stuff&lt;/em&gt;, want to try to stay secure-ish here. The chruby rigamorole above makes that somewhat more confusing. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I forget if it was my idea or claude’s idea, but we wrote a wrapper script for chruby-exec-rspec, so we could more cleanly allow-list just &lt;em&gt;that.&lt;/em&gt;  Claude definitely wrote the implementation of the bash wrapper script. And when I realized that all the test-prof inline ENV vars for profiling (like &lt;code&gt;FPROF=&lt;/code&gt;1) messed up my attempted left-anchored allow-listing, I asked claude to work that out by letting the wrapper rearrange an arg into an inline ENV prefix, something my bash skills were def not up to. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;https://github.com/sciencehistory/scihist_digicoll/pull/3505/changes#diff-317ae893ef4add3af4928b72cae8408ac42a97cd487729dcf157d6ed0dbe44d2R19&quot;&gt;The best way to see how I did all that is just the PR. &lt;/a&gt;&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;A word on Claude Desktop&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I initially started work in Claude Desktop “code” tab, rather than the CLI.  I think this actually made it more confusing to solve these problems above?  &lt;strong&gt;I am not sure &lt;/strong&gt;if sandboxing works differnetly in Claude Desktop vs &lt;code&gt;claude&lt;/code&gt; CLI? I &lt;strong&gt;think&lt;/strong&gt; the desktop may just &lt;strong&gt;be running&lt;/strong&gt; the &lt;code&gt;claude&lt;/code&gt; CLI in various directories?  &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Just starting out and not being sure how things were working… I found trying to ask Claude [how/] to fix the problems I was having, made things very confusing. Claude does not know whether it’s running as Claude Desktop or not, and was not really sure if the answer is different ha (Claude Desktop probably post-dates Claude Sonnet 4.6’s knowledge base?). Most blogs etc you find googling also pre-date Claude Desktop. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I switched to &lt;code&gt;claude&lt;/code&gt; CLI and I can’t totally explain why but things seemed to get simpler. All the fixes I figured out worked when I switched back to Claude Desktop. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;And contrary to what you might find googling, &lt;code&gt;claude&lt;/code&gt; CLI and Claude Desktop &lt;em&gt;do&lt;/em&gt; share sessions now, you can start a session in either place, then move to the other tool to continue it, in either direction.  To start &lt;code&gt;claude&lt;/code&gt; CLI and choose an existing sessiont to resume, you need to launch as &lt;code&gt;claude --resume&lt;/code&gt;. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;The CLI is a very neat UI actually!  It definitely still seems to be the most popular way to use Claude (whether direct or in a panel in an editor), Claude Desktop “code” tab is I guess fairly new and not as popular, although I like it too and still am mostly using it. &lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;How it worked for the task?&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Pretty amazingly actually. Even having read about what it could do, I was kind of amazed. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Once you get it able to run rspec (including with test-prof profiling), this prompt is pretty amazing and fun:&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Please use various test-prof profiling commands to identify current best opportunities for speeding up test suite.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Come back ~20 minutes later (my full test suite took ~4 minutes to run at the beginning) and it had some stuff. It tended to just go ahead and make the changes not outline them to me first (I was not in “plan” mode, haven’t tried that much yet), but I’m in a git-controlled dir I can git diff to see what it did — and ask it about it. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;By the time I thought to use this general one, i had already implemented some low-hanging optimizations, so that may be why, to be fair, this prompt alone didn’t find much actually &lt;em&gt;significant&lt;/em&gt; at that point, honestly. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Here are some others that were pretty amazing:&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;I am looking to speed up the test suite in this Rails app using rspec and factorybot.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;To begin with, let’s focus on the system specs in spec/system. I don’t think they have any obvious performance improvement opportunities. But I’m wondering if they are all necessary. Can you identify any that may be testing something that is not necessary to test, or could be tested by a different kind of spec that is faster?&lt;/p&gt;
&lt;/blockquote&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;for specs in spec/components, let’s try changing factory data from create to build_stubbed. Change it for setup where tests still pass. For tests that break when you do that, list them, and if it’s clear let me know why they failed. Analyze performance gains. &lt;/p&gt;
&lt;/blockquote&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;[didn’t actually get any gains there, but found that out &lt;em&gt;quickly&lt;/em&gt; with very little manual effort, which is a win!]&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;in our rspec setup, switch from chromedriver to cuprite. make sure tests still pass, if not identify why not. &lt;/p&gt;
&lt;/blockquote&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;using AnyFixture, I’ve created a :standard_work fixture, that’s just a generic public tiff-based work.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Can you identify model or service specs it would work well for?&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;[Didn’t actually end up using AnyFixture yet, but Claude Code helped me make that decision much quicker than I could have without it, based on how much benefit we got vs complexity]&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;My Rails app uses rspec and Factorybot.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;There is an :asset factory with an :inline_promoted_file trait. it turns out this is really bad for performance, and we in fact rarely need to actually create assets with inline promoted files. That should only be used in cases where we really need to test end-to-end derivative and characterization.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;In most other cases, we can use a faster “faked file” approach instead. Instead of a trait, we’ve implemented this with a sub-factory, :asset_with_faked_file.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Can you find uses of the :asset factory with :inline_promoted_file, and, if there’s no reason they need to test end-to-end derivative creation, change them to use :asset_with_faked_file sub-factory instead?&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;[It was able to identify the ones that would work pretty well, was the amazing part — and explain to me exactly why the other ones wouldn’t]&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Tell me if I’m doing something weird?&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Some of the stuff with chruby/rspec, I am still surprised I had so much trouble getting started, and am wondering if I’m doing something weird/wrong!&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;But I think probably it’s just that I have been writing code so long, that dealing with these tools that work very differently requires my brain to get out of it’s rut… also that I’m kind of a perfectionist and want to understand whats’ going on and be comfortable with it and that it’s the best way, when increasingly others are just vibing? I don’t know!&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;But feedback welcome!&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-29T17:00:01+00:00</dc:date>
	<dc:creator>jrochkind</dc:creator>
</item>
<item rdf:about="https://inkdroid.org/2026/06/28/bookmarks/">
	<title>Ed Summers: Bookmarks - ai, war, ukraine, drone</title>
	<link>https://inkdroid.org/2026/06/28/bookmarks/</link>
	<content:encoded>These are some things I’ve wandered across on the web this week.
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://www.youtube.com/watch?v=DWeca3sU6hw&quot;&gt;
Beavis and Butt-Head Become A.I. Tech Bros &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
Will A.I. finally be able to help Beavis and Butt-Head score? It did
everybody else’s homework; they deserve something!
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ai/&quot; rel=&quot;tag&quot;&gt;ai&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/humor/&quot; rel=&quot;tag&quot;&gt;humor&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/video/&quot; rel=&quot;tag&quot;&gt;video&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.bbc.com/news/articles/c74yn7v7k4qo&quot;&gt;
Long Wave radio era set to end with switch-off &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
A campaign has begun to get two large transmitter masts listed, after
the BBC’s Long Wave (LW) service is turned off.
&lt;/p&gt;
&lt;p&gt;
The 700ft (213m) high Wychbold Masts in the Worcestershire countryside
can be seen for miles and are often used as a landmark for drivers on
the M5 near Droitwich.
&lt;/p&gt;
&lt;p&gt;
They have been in use since 1934 for sending the signal across the
country, as well as for transmitting important messages during the World
War Two.
&lt;/p&gt;
&lt;p&gt;
Local history experts and the Twentieth Century Society have called for
them to become listed, due to their “historical importance”.
&lt;/p&gt;
Droitwich was picked as a central location for the station and masts so
Long Wave could reach everywhere in the UK.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/bbc/&quot; rel=&quot;tag&quot;&gt;bbc&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/delete/&quot; rel=&quot;tag&quot;&gt;delete&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/museum/&quot; rel=&quot;tag&quot;&gt;museum&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/radio/&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://teachingagile.com/scrum/psm-1/scrum-implementation/definition-of-done&quot;&gt;
Definition of Done: The Complete Guide with Examples &amp;amp; Checklist
&lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
The Definition of Done isn’t just another Scrum formality - it’s the
quality gatekeeper that prevents technical debt accumulation and ensures
every Sprint delivers potentially shippable Increments. This critical
commitment allows teams to:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Eliminate quality ambiguity through explicit, measurable standards
everyone understands
&lt;/li&gt;
&lt;li&gt;
Prevent scope creep by clearly defining when work is complete vs. when
it’s still in progress
&lt;/li&gt;
&lt;li&gt;
Enable predictable releases because “done” means genuinely releasable,
not “mostly done”
&lt;/li&gt;
&lt;li&gt;
Support distributed teams with automated verification reducing
synchronous communication needs
&lt;/li&gt;
&lt;li&gt;
Scale consistently across multiple teams working on the same product
with shared standards
&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/management/&quot; rel=&quot;tag&quot;&gt;management&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/programming/&quot; rel=&quot;tag&quot;&gt;programming&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/software/&quot; rel=&quot;tag&quot;&gt;software&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://github.com/social-web-foundation/tags.pub&quot;&gt;
tags.pub &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
A global hashtag server for the ActivityPub network.


&lt;p&gt;
tags.pub is a server for the ActivityPub network. It provides one
account like foo@tags.pub for every hashtag like #foo. When public
content is posted on the ActivityPub network with that hashtag, the
foo@tags.pub account shares the content to its followers.
&lt;/p&gt;
More information is available at https://tags.pub/.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/activitypub/&quot; rel=&quot;tag&quot;&gt;activitypub&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/hashtag/&quot; rel=&quot;tag&quot;&gt;hashtag&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/javascript/&quot; rel=&quot;tag&quot;&gt;javascript&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/socialmedia/&quot; rel=&quot;tag&quot;&gt;socialmedia&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.terrygodier.com/the-last-quiet-thing/&quot;&gt;
The Last Quiet Thing &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
For most of human history, you bought a thing, and it was yours, and it
was finished.
&lt;/p&gt;
&lt;p&gt;
That word is nearly extinct.
&lt;/p&gt;
Nothing you own is finished. Everything exists in a state of permanent
incompletion, permanently needing. Your phone needs updates, needs
charging, needs storage cleared, needs passwords rotated.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/change/&quot; rel=&quot;tag&quot;&gt;change&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/design/&quot; rel=&quot;tag&quot;&gt;design&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/maintenance/&quot; rel=&quot;tag&quot;&gt;maintenance&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/software/&quot; rel=&quot;tag&quot;&gt;software&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://uit.stanford.edu/news/new-ai-tools-stanford-arrive-june-30&quot;&gt;
New AI Tools for Stanford Arrive June 30 &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
OpenAI ChatGPT Edu, Google Gemini Enterprise, and Anthropic Claude for
Education will be available to Stanford faculty, students, postdocs, and
staff on June 30. Details on how to get access to these tools from
University IT (UIT) are below. These offerings are part of a campus
pilot through August 2027.
&lt;/p&gt;
&lt;p&gt;
This pilot was initiated in response to strong demand across campus for
access to these tools, which many research groups and individuals have
been purchasing on their own. Stanford’s licenses will enable better
data protection as well as more favorable pricing. At the end of the
pilot, utilization of the tools will be evaluated prior to continuation.
&lt;/p&gt;
&lt;p&gt;
Use of these new capabilities is meant to support our teaching and
research mission. As these tools create exciting new opportunities, it
is important to conform AI usage to Stanford’s data protection, privacy,
and academic integrity policies.
&lt;/p&gt;
Please remember sensitive data (e.g., student records, protected health
information, financial data, etc.) need to conform to Responsible
Agentic AI and Responsible AI guidance. Regardless of your role on
campus, you retain full responsibility for verifying AI outputs. This
approach reinforces our collective responsibility to protect Stanford’s
data and to take an ethical and responsible approach to using these
powerful tools.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ai/&quot; rel=&quot;tag&quot;&gt;ai&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/anthropic/&quot; rel=&quot;tag&quot;&gt;anthropic&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/google/&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/openai/&quot; rel=&quot;tag&quot;&gt;openai&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/stanford/&quot; rel=&quot;tag&quot;&gt;stanford&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://lancaster-university.github.io/loco2026/&quot;&gt;
2nd International Workshop on Low Carbon Computing (loco2026) &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
The carbon footprint of ICT is rising despite the urgent need to
decarbonise society and to stay within planetary boundaries. The
operational and embodied carbon emissions from ICT are already estimated
to contribute between 2 to 3 percent of the global emissions and new
technologies such as AI is driving overall growth in data centre demand,
which globally rivals that of entire nations. This growth in emissions
from computing is unsustainable and alternative low emissions pathways
for computing are urgently needed.
&lt;/p&gt;
The LOCO workshop provides a forum for radical ideas, early work, and
critical perspectives that aims to reduce the emissions from computing.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/computing/&quot; rel=&quot;tag&quot;&gt;computing&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/conference/&quot; rel=&quot;tag&quot;&gt;conference&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/energy/&quot; rel=&quot;tag&quot;&gt;energy&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/sustainability/&quot; rel=&quot;tag&quot;&gt;sustainability&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://flower.ai/docs/framework/main/en/tutorial-series-what-is-federated-learning.html&quot;&gt;
Flower Framework: What is Federated Learning? &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
Federated Learning simply reverses this approach. It enables machine
learning on distributed data by moving the training to the data, instead
of moving the data to the training. Here’s a one-liner explanation:
&lt;/p&gt;
&lt;p&gt;
Centralized machine learning: move the data to the computation
&lt;/p&gt;
&lt;p&gt;
Federated (machine) Learning: move the computation to the data
&lt;/p&gt;
By doing so, Federated Learning enables us to use machine learning (and
other data science approaches) in areas where it wasn’t possible before.
We can now train excellent medical AI models by enabling different
hospitals to work together. We can solve financial fraud by training AI
models on the data of different financial institutions. We can build
novel privacy-enhancing applications (such as secure messaging) that
have better built-in AI than their non-privacy-enhancing alternatives.
And those are just a few of the examples that come to mind. As we deploy
Federated Learning, we discover more and more areas that can suddenly be
reinvented because they now have access to vast amounts of previously
inaccessible data.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/data/&quot; rel=&quot;tag&quot;&gt;data&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/federation/&quot; rel=&quot;tag&quot;&gt;federation&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ml/&quot; rel=&quot;tag&quot;&gt;ml&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/privacy/&quot; rel=&quot;tag&quot;&gt;privacy&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.nytimes.com/2026/06/19/obituaries/robbie-basho-overlooked.html&quot;&gt;
Overlooked No More: Robbie Basho, Guitar Mystic Who Sought Enlightenment
in Sound &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
For the visionary steel-string guitarist, pianist, composer and singer
Robbie Basho, making music was more than a vocation; it was a way to
assuage a lifetime of psychological and physical distress — pain that
only ended with his death, at age 45.
&lt;/p&gt;
&lt;p&gt;
Beginning in the early 1960s, Basho expanded the steel-string guitar’s
vocabulary using alternative tunings and experimental forms to create
trance-like compositions.
&lt;/p&gt;
He forged a distinctive style that drew an array of traditional world
music from India, Japan, France, Germany, Persia, China and Native
America. An early example is which incorporates the flavor of North
Indian classical raga, using an open harmonic structure, droning strings
and improvisation to enter into a deeply personal state — an immovable,
hypnotic track that bends time.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/guitar/&quot; rel=&quot;tag&quot;&gt;guitar&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/music/&quot; rel=&quot;tag&quot;&gt;music&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.theguardian.com/world/2025/nov/08/old-fishing-nets-vital-protection-against-russian-drones-ukraine&quot;&gt;
Old fishing nets from France become vital protection against Russian
drones in Ukraine &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
In the fishing ports along France’s Brittany coast, the discarded
fishing nets pile up along the coastal quaysides.
&lt;/p&gt;
&lt;p&gt;
The lifespan of a deep-sea net is between 12 and 24 months, after which
they become worn and beyond repair. Until now, the estimated 800 tonnes
of nets scrapped every year have been a problem.
&lt;/p&gt;
&lt;p&gt;
Now, the horsehair netting, once used to trawl monkfish from the sea
bed, is being used for another catch: Russian drones.
&lt;/p&gt;
The Breton charity Kernic Solidarités has sent two consignments of nets
measuring a total of 280km to Ukraine to be used to protect soldiers and
civilians along the frontline where fighting is fiercest.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/drone/&quot; rel=&quot;tag&quot;&gt;drone&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ukraine/&quot; rel=&quot;tag&quot;&gt;ukraine&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/war/&quot; rel=&quot;tag&quot;&gt;war&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://annabowles.substack.com/p/anti-drone-nets&quot;&gt;
Anti-Drone Nets &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
Recently it’s been widely reported that nets are being used as a
low-tech but highly effective defence against drones. But there are many
kinds of nets, and they are used differently.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/drone/&quot; rel=&quot;tag&quot;&gt;drone&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ukraine/&quot; rel=&quot;tag&quot;&gt;ukraine&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/war/&quot; rel=&quot;tag&quot;&gt;war&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://github.com/Crawlora-org/dead-web-index-data&quot;&gt;
dead-web-index-data &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
A reachability census of the most popular domains on the web. Every
domain in the DomCop top-10M popularity list (this release: the full top
10 million) is probed and labelled alive / redirect / blocked / dead —
once by an honest polite bot and once by a browser-like reachability
client.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/commoncrawl/&quot; rel=&quot;tag&quot;&gt;commoncrawl&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/dns/&quot; rel=&quot;tag&quot;&gt;dns&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/measurement/&quot; rel=&quot;tag&quot;&gt;measurement&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/webarchive/&quot; rel=&quot;tag&quot;&gt;webarchive&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;</content:encoded>
	<dc:date>2026-06-28T04:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-4503292949532760618.post-2416003435865504508">
	<title>David Rosenthal: AI's PR Problem (Updated)</title>
	<link>https://blog.dshr.org/2026/05/ais-pr-problem.html</link>
	<content:encoded>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyqLEJZkaoE3Di0VKjmHHQjz0Nk5VOeus76m8lJ528n8gja3k_FnJUiliOmOXQMXqkM_2_Wm5JQ5FnybeU1vPgAemMKWWhTtgEBtaW1yaWY65_4jEVTPnE3f3ccwhIB1b-QY4MMA27u7B7n7S0RNxX_DYFMwCxuHJkqgYlLC5BtsAI0aio9C_DVozYPXtQ/s1072/J._P._Morgan_beating_a_photographer_with_his_stick.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyqLEJZkaoE3Di0VKjmHHQjz0Nk5VOeus76m8lJ528n8gja3k_FnJUiliOmOXQMXqkM_2_Wm5JQ5FnybeU1vPgAemMKWWhTtgEBtaW1yaWY65_4jEVTPnE3f3ccwhIB1b-QY4MMA27u7B7n7S0RNxX_DYFMwCxuHJkqgYlLC5BtsAI0aio9C_DVozYPXtQ/s320/J._P._Morgan_beating_a_photographer_with_his_stick.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.lawyersgunsmoneyblog.com/2026/05/25-years-of-flat-wages-and-no-increase-in-the-college-wage-premium-while-value-of-capital-has-skyrocketed&quot;&gt;J.P. Morgan hits photographer with cane&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
This is just a brief post to explain to my old boss, &lt;a href=&quot;https://en.wikipedia.org/wiki/Eric_Schmidt&quot;&gt;Eric Schmidt&lt;/a&gt;, why he and his ilk are getting &lt;a href=&quot;https://www.nbcnews.com/tech/tech-news/former-google-ceo-booed-graduation-speech-ai-rcna345585&quot;&gt;booed at college commencements&lt;/a&gt;, and why &lt;a href=&quot;https://www.deseret.com/business/2026/05/16/data-centers-bans-moratoriums-state-legislatures-citizen-opposition-initiatives-referendum-artificial-intelligence-water-sair-quality/&quot;&gt;laws against data centers&lt;/a&gt; are getting passed. The explanation is below the fold.&lt;br /&gt;
&lt;span&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;br /&gt;
Let us start from an under-appreciated fact. Paul Campos &lt;a href=&quot;https://www.lawyersgunsmoneyblog.com/2026/05/25-years-of-flat-wages-and-no-increase-in-the-college-wage-premium-while-value-of-capital-has-skyrocketed&quot;&gt;reports that&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
The college wage premium, that is, the increased earnings associated with having a college degree as opposed to only being a high school graduate, hasn’t changed at all in the past 25 years, because median real wages have been flat as a pancake for &lt;i&gt;everybody&lt;/i&gt;, no matter what their formal education level, for the past quarter century. 
&lt;/blockquote&gt;
&lt;a href=&quot;https://www.lawyersgunsmoneyblog.com/2026/05/25-years-of-flat-wages-and-no-increase-in-the-college-wage-premium-while-value-of-capital-has-skyrocketed&quot;&gt;But&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
I wonder what’s happened to capital over this time? Value of S &amp;amp; P 500, inflation-adjusted, 1/2000 to 9/2025 (same period as the wage data):&lt;br /&gt;
&lt;br /&gt;
2000: $1,394&lt;br /&gt;
&lt;br /&gt;
2025: $6,688 
&lt;/blockquote&gt;
On average, for &lt;i&gt;more than the students' entire lives&lt;/i&gt;, stock-owners like Schmidt and (to a much lesser extent) I have stolen &lt;i&gt;every last drop&lt;/i&gt; of the productivity increase of US workers at every age and education level. (See the actual numbers in &lt;a href=&quot;https://blog.dshr.org/feeds/posts/default#Appendix&quot;&gt;the appendix&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Now, the perpetrators of this theft are telling their victims, the students and the public at large, that whether they like it or not they will be subjected to AI because that will make the perpetrators even richer. The victims have been informed that this new technology will:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.theguardian.com/technology/2026/jan/09/grok-ai-x-explainer-legal-regulation-nudified-images-social-media&quot;&gt;Nudify&lt;/a&gt; their images.&lt;/li&gt;
&lt;li&gt;Leak their &lt;a href=&quot;https://thecybersecguru.com/news/instagram-meta-ai-vulnerability-account-recovery-exploit/&quot;&gt;passwords&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Increase their &lt;a href=&quot;https://www.npr.org/2025/12/03/nx-s1-5626900/ai-data-center-cost-electric-bill&quot;&gt;utility bills&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Consume their scarce &lt;a href=&quot;https://harvardsciencereview.org/2026/02/28/re-architecting-the-ai-server-the-hidden-water-cost-of-data-centers-part-ii/&quot;&gt;water resources&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Coerce state and local governments into providing many &lt;a href=&quot;https://apnews.com/article/artificial-intelligence-data-centers-taxes-tech-ohio-4d56561a14f9b0d00553001e8c2757a3&quot;&gt;billions of dollars a year in tax breaks&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Force them to &lt;a href=&quot;https://www.youtube.com/watch?v=IHD8BDFYyGI&quot;&gt;invest their 401Ks and index funds&lt;/a&gt; in an obvious bubble.&lt;/li&gt;
&lt;li&gt;Eventually require a &lt;a href=&quot;https://prospect.org/2025/11/07/openai-maneuvering-for-government-bailout/&quot;&gt;taxpayer bailout&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Eliminate their &lt;a href=&quot;https://www.forbes.com/sites/janicegassam/2025/06/24/92-million-jobs-gone-who-will-ai-erase-first/&quot;&gt;jobs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Render their expensively acquired &lt;a href=&quot;https://www.cnbc.com/2026/03/24/im-a-neuroscientist-who-studies-ai-heres-how-im-raising-kids-that-machines-cant-replace.html&quot;&gt;skills worthless&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Be &lt;a href=&quot;https://www.wheresyoured.at/ai-is-too-expensive/&quot;&gt;so expensive&lt;/a&gt; that only the rich can use it.&lt;/li&gt;
&lt;li&gt;Destroy &lt;a href=&quot;https://dx.doi.org/10.1126/science.adz1697&quot;&gt;democracy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Accelerate &lt;a href=&quot;https://www.wired.com/story/new-gas-powered-data-centers-could-emit-more-greenhouse-gases-than-entire-nations/&quot;&gt;global warming&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Encourage them to commit &lt;a href=&quot;https://arstechnica.com/tech-policy/2026/06/florida-sues-openai-sam-altman-after-multiple-chatgpt-linked-murders/&quot;&gt;murder and suicide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.dshr.org/2026/03/skynet-progress-report.html&quot;&gt;Autonomously target&lt;/a&gt; them with drones.&lt;/li&gt;
&lt;li&gt;Possibly even &lt;a href=&quot;https://www.rand.org/pubs/commentary/2025/05/could-ai-really-kill-off-humans.html&quot;&gt;end humanity&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Add &lt;a href=&quot;https://www.bbc.com/news/articles/cd11gzejgz4o&quot;&gt;glue to their pizza&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
Nothing better illustrates the contempt of the &lt;a href=&quot;https://www.huffpost.com/entry/everything-to-know-about-the-epstein-class-the-term-thats-on-everyones-tongues-goog_l_698defaae4b0ba74045a3f88&quot;&gt;Epstein class&lt;/a&gt; for the proletariat than that these oligarchs would expect the graduating class to enthusiastically accept this prospect.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 id=&quot;Appendix&quot;&gt;Appendix&lt;/h3&gt;
Here are the actual numbers from Paul Campos' &lt;a href=&quot;https://www.lawyersgunsmoneyblog.com/2026/05/25-years-of-flat-wages-and-no-increase-in-the-college-wage-premium-while-value-of-capital-has-skyrocketed&quot;&gt;&lt;i&gt;25 years of flat wages and no increase in the college wage premium, while value of capital has skyrocketed&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
I was fooling around with &lt;a href=&quot;https://fred.stlouisfed.org/tags/series?t=education%3Bsalaries&quot;&gt;FRED&lt;/a&gt; this morning, as one does, and here are some stats: (The FRED numbers are presented in nominal dollars; I’ve converted them to CPI-adjusted dollars).&lt;br /&gt;
&lt;br /&gt;
Median usual weekly earnings of workers with a high school degree only:&lt;br /&gt;
&lt;br /&gt;
2000: $968&lt;br /&gt;
&lt;br /&gt;
2025: $980&lt;br /&gt;
&lt;br /&gt;
Median usual weekly earnings of workers with a bachelor degree only:&lt;br /&gt;
&lt;br /&gt;
2000: $1,587&lt;br /&gt;
&lt;br /&gt;
2025: $1,580 &lt;br /&gt;
...&lt;br /&gt;
Median usual weekly earnings of people with a bachelor’s degree or higher:&lt;br /&gt;
&lt;br /&gt;
2000: $1,705&lt;br /&gt;
&lt;br /&gt;
2025: $1,747
&lt;/blockquote&gt;
Here is a short list of YouTube videos on this topic:
&lt;ul&gt;
&lt;li&gt;Kasia Baba's must watch &lt;a href=&quot;https://www.youtube.com/watch?v=PQKGa0_Rrf4&quot;&gt;&lt;i&gt;Boomers just cannot grasp why we do not like AI&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vanessa Wingårdh's &lt;a href=&quot;https://www.youtube.com/watch?v=FQpZdCKgc6w&quot;&gt;&lt;i&gt;Nobody Actually Wants AI Anymore&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Taylor Lorenz' &lt;a href=&quot;https://www.youtube.com/watch?v=_Neog2mAdBI&quot;&gt;&lt;i&gt;You Are About to Become Economically Worthless&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sam Seder's &lt;a href=&quot;https://www.youtube.com/watch?v=kO6YSN1SFGg&quot;&gt;&lt;i&gt;Everyone Is Fed Up With Tech's Ai BS&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Silicon Money's &lt;a href=&quot;https://www.youtube.com/watch?v=NBtUgWn-nHs&quot;&gt;&lt;i&gt;Why Tech CEOs Are Quietly Cancelling Their AI Plans&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The Rational National's &lt;a href=&quot;https://www.youtube.com/watch?v=-i4hgyJ01ZQ&quot;&gt;&lt;i&gt;Heartwarming: Gen-Z Hates Ai&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
As a boomer, I think this post might be the exception that proves Ms. Baba's rule.&lt;br /&gt;
&lt;br /&gt;
Note that every single one of the ads that I saw watching these videos in an incognito window was advertising an &lt;i&gt;AI company&lt;/i&gt;! As are &lt;a href=&quot;https://www.youtube.com/watch?v=VBHSjzHW-C8&quot;&gt;49% of all the billboards in the Bay Area&lt;/a&gt;. Read the room, guys!&lt;br /&gt;
&lt;h2&gt;Update 25&lt;sup&gt;th&lt;/sup&gt; June 2026&lt;/h2&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggdcyJ2wE42_37fv_Ke3vBNR2oMsG_iIW0W3m3AQSBXUWyhbiNXubuFRxsVJLS8R0IIjbK3dBzMpBvDlgzPVBpdFTIJKu39v7NeiPQDOW41ge3N5g8WnIXfG9LgSGFkm3D-gunTNU-TuaS0KEgdm0sIAWzzXOUvnK3nAEgL7gZfSnNm-ERYplfqwWV1XrE/s1240/AttitudeSkew.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;151&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggdcyJ2wE42_37fv_Ke3vBNR2oMsG_iIW0W3m3AQSBXUWyhbiNXubuFRxsVJLS8R0IIjbK3dBzMpBvDlgzPVBpdFTIJKu39v7NeiPQDOW41ge3N5g8WnIXfG9LgSGFkm3D-gunTNU-TuaS0KEgdm0sIAWzzXOUvnK3nAEgL7gZfSnNm-ERYplfqwWV1XrE/w200-h151/AttitudeSkew.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;Source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
In &lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;&lt;i&gt;Why Does Everyone Hate AI?&lt;/i&gt;&lt;/a&gt;, Paul Krugman reinforces my point with actual data: He starts where I did:&lt;br /&gt;
&lt;blockquote&gt;
Eric Schmidt, the ex-CEO of Google, recently gave a commencement speech in which he heralded the coming of AI — and was loudly booed by the students. This was not an outlier. There have been a number of similar incidents lately, evidence that many people now really hate AI.&lt;br /&gt;
&lt;br /&gt;
Are we talking about a vocal but unrepresentative minority? No. A recent Pew survey found that American adults believe by a wide margin that AI will be negative for society and, by a smaller margin, that it will be bad for them personally:
&lt;/blockquote&gt;
Krugman goes on to pose a number of reasons for this PR fiasco. 
&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;First&lt;/a&gt; because:&lt;br /&gt;
&lt;blockquote&gt;
we fear that AI will do terrible things &lt;i&gt;because the companies selling it &lt;b&gt;told&lt;/b&gt; us it would do terrible things&lt;/i&gt;. Last year, for example, Anthropic CEO Darius Amodei declared in an interview with &lt;a href=&quot;https://www.axios.com/2025/05/28/ai-jobs-white-collar-unemployment-anthropic&quot;&gt;Axios&lt;/a&gt; that AI could wipe out half of entry-level white-collar jobs and drive overall unemployment as high as 20 percent within 1 to 5 years.
&lt;/blockquote&gt;
He points out that these negative views were not present at the advent of the Internet nor at the rise of social media.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoc3ykq_C19LGP-b9BFLbv5rCCVXKxiCcLk8A3jfG8P78e-g5NSKIK-hoHltVGsl1dJV451_dGSnKh3wmiiosHaZy9IU2QTfeL7KmX2OaZTv2dVtUFpMU8r19uaLcyAuPSiJNEUPuAInjckZ01AeIi6M9lE7kSbHtz3p2DAhvNzP5BrQXFdz1jZ89PBsia/s1316/WSJ-Headline.png&quot; style=&quot;clear: right; display: block; margin-bottom: 1em; margin-left: auto; margin-right: auto; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoc3ykq_C19LGP-b9BFLbv5rCCVXKxiCcLk8A3jfG8P78e-g5NSKIK-hoHltVGsl1dJV451_dGSnKh3wmiiosHaZy9IU2QTfeL7KmX2OaZTv2dVtUFpMU8r19uaLcyAuPSiJNEUPuAInjckZ01AeIi6M9lE7kSbHtz3p2DAhvNzP5BrQXFdz1jZ89PBsia/s320/WSJ-Headline.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;Source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;Second&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
many ordinary people view AI negatively &lt;i&gt;because they feel that it is being forced on them&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
It’s true that many people are voluntarily using large language models for personal convenience or as a business productivity tool. But a significant part of AI use isn’t voluntary. This Wall Street Journal headline from February says it all:&lt;br /&gt;
&lt;br /&gt;
Why are companies doing this? Presumably they believe that AI will raise productivity. But just as importantly, they’re responding to pressure from financial markets, which are rewarding companies for quickly adopting AI, apparently without regard to demonstrated results.&lt;br /&gt;
&lt;br /&gt;
And while Americans workers are being dragooned into using AI, American consumers are being force-fed AI whether they want it or not. Most dramatically, Google has replaced its search engine with AI, without offering the option to opt out. One has to turn to obscure workarounds or third-party sites to get traditional search results.&lt;br /&gt;
&lt;br /&gt;
So many people feel, rightly, that they aren’t being allowed to choose whether to use AI — not using AI has become hard both as a worker and as a consumer.
&lt;/blockquote&gt;
&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;Third&lt;/a&gt; because:&lt;br /&gt;
&lt;blockquote&gt;
&lt;i&gt;datacenters are a highly visible reminder of AI’s costs&lt;/i&gt;. Datacenters occupy huge tracts of land — one proposed site in Utah will be twice the size of Manhattan. They guzzle electricity and water. When they generate some of their own power, they create major local pollution. Not surprisingly, there is intense opposition to datacenter construction. According to a Reuters Ipsos poll, 57 percent of Americans — two-thirds of Democrats and half of Republicans — would oppose a datacenter in their neighborhood. Only 14 percent would support one.
&lt;/blockquote&gt;
The Utah data center proposal is definitely toxic. Finya Swai reports that &lt;a href=&quot;https://thehill.com/homenews/campaign/5939668-utah-data-center-voter-backlash/&quot;&gt;&lt;i&gt;Data center controversy unseats powerful Utah lawmaker&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
A massive data center project in Box Elder County, Utah, helped bring down the state’s Senate president, who lost his GOP primary on Tuesday after his support for the controversial development fueled voter backlash.&lt;br /&gt;
&lt;br /&gt;
Stuart Adams, one of Utah’s most powerful politicians and the longest-serving president of the state Senate in its history, lost to challenger Stephanie Hollist, a former university lawyer and vocal opponent of the data center.&lt;br /&gt;
&lt;br /&gt;
Hollist accused Adams, as well as the state’s broader political establishment, of ignoring public concerns about a Stratos data center project that critics feared could cause serious environmental harms.&lt;br /&gt;
...&lt;br /&gt;
Box Elder County Commissioners Boyd Bingham and Lee Perry, who voted in favor of allowing the plans to continue, also lost their primary elections.
&lt;/blockquote&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpVcpylZ0caDCu-gBL6RqwdrV9efO2olBroDlj43W35IEVlADixqOjWLwDKzyQCFu8BBo1ppxZAei5lR6Mkn8dhGUxMo2nqy-7_iSqQGKPhiGcjuVQxoOmeCp10oL755nkB6DxOO79g22lbkw2nYTABfMI_SwOz9up3oDDdSE-ehOYeoLZGY10NATzqRus/s1240/PewSurvey.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;134&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpVcpylZ0caDCu-gBL6RqwdrV9efO2olBroDlj43W35IEVlADixqOjWLwDKzyQCFu8BBo1ppxZAei5lR6Mkn8dhGUxMo2nqy-7_iSqQGKPhiGcjuVQxoOmeCp10oL755nkB6DxOO79g22lbkw2nYTABfMI_SwOz9up3oDDdSE-ehOYeoLZGY10NATzqRus/w200-h134/PewSurvey.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;Source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;Fourth&lt;/a&gt; because:&lt;br /&gt;
&lt;blockquote&gt;
even before the advent of AI, tech companies had lost the public’s trust. Over the years Pew has regularly surveyed the public for its views on technology companies, asking whether they have a positive or a negative effect “on the way things are going.” In 2015 public opinion of tech companies was overwhelmingly positive. By 2022, the year ChatGPT was released, that goodwill had evaporated.&lt;br /&gt;
&lt;br /&gt;
Why have Americans turned on tech companies? While it surely reflects growing awareness of the psychological and societal harm done by social media, much of it also reflects the &lt;a href=&quot;https://en.wikipedia.org/wiki/Enshittification&quot;&gt;enshittification&lt;/a&gt; of tech products.
&lt;/blockquote&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnmIcBmySxDe7eAi55YKk94UKU4aNZfbze2av4nKelRJjvOeixh2nQOGO4gAdHZVbgvst1-o3dI9ZwhaIUOGHRl7u2IwAVyMl8PnBhyphenhyphenGzRxjgW_E92Kh0crI8w1X4MzuPrwJ4EI6rX5F24gnU8vbh2lm-pbArd0g-Jl7iZY3I33EGIb7SDlguJoY0DRyOq/s1240/ReduceInequality.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;151&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnmIcBmySxDe7eAi55YKk94UKU4aNZfbze2av4nKelRJjvOeixh2nQOGO4gAdHZVbgvst1-o3dI9ZwhaIUOGHRl7u2IwAVyMl8PnBhyphenhyphenGzRxjgW_E92Kh0crI8w1X4MzuPrwJ4EI6rX5F24gnU8vbh2lm-pbArd0g-Jl7iZY3I33EGIb7SDlguJoY0DRyOq/w200-h151/ReduceInequality.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;Source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;Fifth&lt;/a&gt; because:&lt;br /&gt;
&lt;blockquote&gt;
AI is tightly linked in the public mind with the tech oligarchs who are pushing it. There is widespread awareness of the growing concentration of wealth and power at the top and how this is distorting our politics and harming our society. Aside from the MAGA faithful, Americans overwhelmingly favor government policies to reduce wealth inequality:&lt;br /&gt;
&lt;br /&gt;
And AI is widely perceived, for good reason, as a technology that will increase the concentration of wealth at the top. Indeed, as I said, the AI companies themselves have already told us that the technology will have extremely negative effects on workers.
&lt;/blockquote&gt;
Krugman &lt;a href=&quot;https://paulkrugman.substack.com/p/why-does-everyone-hate-ai&quot;&gt;concludes&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
There’s a strong element of poetic justice in this turn of events. The AI industry deliberately made itself look menacing as a financial strategy, believing that the markets would reward the appearance of being “edgy.” In so doing, however, tech made itself highly unpopular. And even in an era in which money all too often buys power, public opinion matters.
&lt;/blockquote&gt;</content:encoded>
	<dc:date>2026-06-25T21:46:51+00:00</dc:date>
	<dc:creator>David. (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-953024975153422094.post-8111007412612401174">
	<title>Web Science and Digital Libraries (WS-DL) Group at Old Dominion University: 2026-06-25: 2026 WS-DL Research Expo</title>
	<link>https://ws-dl.blogspot.com/2026/06/2026-06-25-2026-ws-dl-research-expo.html</link>
	<content:encoded>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfpRZxYIQ4O8euuAmtNHQJ7UBMzEljcpo5aYlK9wU720XBMOEvml9hLhiAGfqy-1IWJvN4YoNp9B-7i0udWn6PWys7UWshNEku9xoy5usclgEszcLqRTR48vrQRUk9hkciOliWF0f1G9JAYLcfNFZv8FqaqLGJUut97bj8Tk5J8TUKpbft7vp9mtXkWFs/s2126/Screen%20Shot%202026-06-23%20at%202.24.08%20PM.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;476&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfpRZxYIQ4O8euuAmtNHQJ7UBMzEljcpo5aYlK9wU720XBMOEvml9hLhiAGfqy-1IWJvN4YoNp9B-7i0udWn6PWys7UWshNEku9xoy5usclgEszcLqRTR48vrQRUk9hkciOliWF0f1G9JAYLcfNFZv8FqaqLGJUut97bj8Tk5J8TUKpbft7vp9mtXkWFs/w640-h476/Screen%20Shot%202026-06-23%20at%202.24.08%20PM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #757575; font-size: 15px;&quot;&gt;&lt;p&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;On June 23, 2026, &lt;/span&gt;&lt;a href=&quot;https://oduwsdl.github.io/&quot; style=&quot;background-color: transparent; color: #2196f3;&quot;&gt;we&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt; held our sixth annual &lt;/span&gt;&lt;a href=&quot;https://github.com/oduwsdl/2025-research-expo/&quot; style=&quot;background-color: transparent; color: #2196f3;&quot;&gt;WS-DL Research Expo&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;.&lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;  We continued the same format as the prior years (&lt;a href=&quot;https://ws-dl.blogspot.com/2025/05/2025-05-12-2025-ws-dl-research-expo.html&quot;&gt;2025&lt;/a&gt;, &lt;a href=&quot;https://ws-dl.blogspot.com/2024/05/2024-05-18-2024-ws-dl-research-expo.html&quot;&gt;2024&lt;/a&gt;, &lt;a href=&quot;https://ws-dl.blogspot.com/2023/05/2023-05-29-2023-ws-dl-research-expo.html&quot; style=&quot;color: #2196f3;&quot;&gt;2023&lt;/a&gt;, &lt;a href=&quot;https://ws-dl.blogspot.com/2022/04/2022-04-23-2022-ws-dl-research-expo.html&quot; style=&quot;color: #2196f3;&quot;&gt;2022&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://ws-dl.blogspot.com/2021/04/2021-04-24-2021-ws-dl-research-expo.html&quot; style=&quot;color: #2196f3;&quot;&gt;2021&lt;/a&gt;), with one student from each WS-DL professor giving a short overview of their research.  Links to all the materials (slides, papers, software, data) are gathered in the GitHub &lt;/span&gt;&lt;a href=&quot;https://github.com/oduwsdl/2026-research-expo&quot; style=&quot;background-color: transparent; color: #2196f3;&quot;&gt;repo&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;, but repeated here are the links for the students and their presentations:&lt;/span&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;color: #757575; font-family: Roboto, sans-serif; font-size: 15px;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://ws-dl.blogspot.com/2023/03/2023-03-16-my-journey-to-odu-ws-dl-group.html&quot; rel=&quot;nofollow&quot;&gt;Brian Llinas&lt;/a&gt;: &lt;a href=&quot;https://docs.google.com/presentation/d/1-KjEuK7_R7ea3RtAcHC_NFrpnvU53HTB/edit?usp=sharing&amp;amp;ouid=113517666274224624203&amp;amp;rtpof=true&amp;amp;sd=true&quot; rel=&quot;nofollow&quot;&gt;RAG-TEC: Extracting and Classifying Topics in Digital News Collections Using LLMs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://ws-dl.blogspot.com/2024/01/2024-01-15-lawrence-obiuwevwi-computer.html&quot; rel=&quot;nofollow&quot;&gt;Lawrence Obiuwevwi&lt;/a&gt;: &lt;a href=&quot;https://docs.google.com/presentation/d/1I1R_nigQ05fKJAfp2VVmZ9nQ_WMXBsb5/edit&quot; rel=&quot;nofollow&quot;&gt;Cognitive Prosthetic: An AI-Enabled Multimodal System for Episodic Recall in Knowledge Work&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://ws-dl.blogspot.com/2023/12/akshay-kolgar-nayak-phd-in-computer.html&quot; rel=&quot;nofollow&quot;&gt;Akshay Kolgar Nayak&lt;/a&gt;: &lt;a href=&quot;https://docs.google.com/presentation/d/19Cjwwzy3rmVKnhMGO7Mr2R8W08iANeda/edit&quot; rel=&quot;nofollow&quot;&gt;Contextual Scaffolding and Self-Efficacy: Supporting Computer Skill Development among Blind Learners in India&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://ws-dl.blogspot.com/2023/10/rochana-obadage.html&quot; rel=&quot;nofollow&quot;&gt;Rochana Obadage&lt;/a&gt;: &lt;a href=&quot;https://docs.google.com/presentation/d/1kasY4id9PgeXzwpwuU_lThDtDE_vuyLWJdIjAKbL9bw/edit&quot; rel=&quot;nofollow&quot;&gt;CC30k: A Citation Contexts Dataset for Reproducibility-Oriented Sentiment Analysis&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://ws-dl.blogspot.com/2023/06/2023-06-15-milestone-achieved.html&quot; rel=&quot;nofollow&quot;&gt;Himarsha Jayanetti&lt;/a&gt;: &lt;a href=&quot;https://docs.google.com/presentation/d/17Z3MDPf8CmJ0mCbJ9SpGBEP167BZv9MyHABL_uWmG78/edit?usp=sharing&quot; rel=&quot;nofollow&quot;&gt;Infrastructure for Tracking Information Flow from Social Media to U.S. TV News&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;color: #757575; font-family: Roboto, sans-serif; font-size: 15px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;color: #757575; font-family: Roboto, sans-serif; font-size: 15px;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white;&quot;&gt;We were fortunate enough to welcome back several of our &lt;/span&gt;&lt;a href=&quot;https://oduwsdl.github.io/#Alumni&quot; style=&quot;color: #2196f3;&quot;&gt;alumni&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white;&quot;&gt;, including: &lt;/span&gt;&lt;a href=&quot;https://ws-dl.blogspot.com/2020/12/2020-12-31-doctoral-degree-takes.html&quot; style=&quot;color: #2196f3;&quot;&gt;Sawood Alam&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;(PhD, 2020),&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://ws-dl.blogspot.com/2016/04/2016-04-15-how-i-learned-not-to-work.html&quot;&gt;Justin Brunelle&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (PhD, 2016)&lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white;&quot;&gt; &lt;a href=&quot;https://ws-dl.blogspot.com/2024/10/2024-10-03-end-of-long-journey.html&quot;&gt;Yasith Jayawardana&lt;/a&gt; (PhD, 2024), &lt;/span&gt;&lt;a href=&quot;https://ws-dl.blogspot.com/2019/09/2019-09-02-so-long-and-thanks-for-all.html&quot; style=&quot;color: #2196f3;&quot;&gt;Mat Kelly&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;(PhD, 2019),&lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white;&quot;&gt; &lt;a href=&quot;https://ws-dl.blogspot.com/2025/10/2025-10-10-six-years-countless.html&quot;&gt;Bhanuka Mahanama&lt;/a&gt; (PhD, 2025), and &lt;/span&gt;&lt;a href=&quot;https://ws-dl.blogspot.com/2020/09/2020-09-28-my-report-card-to-my-mother.html&quot;&gt;Alexander Nwala&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (PhD, 2020)&lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;.&lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt; We really appreciate the ongoing relationship we have with our alumni -- WSDL is for life! &lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;color: #757575; font-family: Roboto, sans-serif; font-size: 15px;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;If you were unable to attend, we recorded the students' presentations and have embedded the video below.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;color: #757575; font-family: Roboto, sans-serif; font-size: 15px;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot;&gt;--Michael &lt;/span&gt;&lt;/p&gt;

&lt;p style=&quot;color: #757575; font-family: Roboto, sans-serif; font-size: 15px; text-align: center;&quot;&gt;
  
  &lt;/p&gt;</content:encoded>
	<dc:date>2026-06-25T16:37:50+00:00</dc:date>
	<dc:creator>Michael L. Nelson (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="https://lil.law.harvard.edu/blog/2026/06/25/local-news-as-public-data/">
	<title>Harvard Library Innovation Lab: Local News as Public Data, Then and Now</title>
	<link>https://lil.law.harvard.edu/blog/2026/06/25/local-news-as-public-data/</link>
	<content:encoded>&lt;p&gt;&lt;em&gt;The following remarks were delivered at the &lt;a href=&quot;https://archive-it.org/programs/the-national-summit-on-local-news-preservation/&quot;&gt;National Summit on Local News Preservation&lt;/a&gt; on June 17, 2026.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;News is, with few exceptions, place-based. “Where” is one of the journalist’s first questions, and without it, news feels groundless, baseless, unmoored. But news used to not only be written from a specific place, but also written &lt;em&gt;for&lt;/em&gt; the people living in that specific place. In that sense, all news used to be local. But whether the news reported on immediate surroundings, the colony or state, the nation or empire, the function of newspapers was to provide a public record, both for audiences at the time, and for future readers. In fact, many editors were conscious of this function of the newspaper as a repository; some two hundred years ago, they provided, in the words of Hezekiah Niles in his prospectus for Baltimore’s &lt;a href=&quot;https://earlyushistory.net/niles-register/#v1&quot;&gt;&lt;em&gt;Weekly Register&lt;/em&gt;&lt;/a&gt;, “something interesting at the present moment, and as a &lt;span style=&quot;font-variant: small-caps;&quot;&gt;book of reference, a fund of reading&lt;/span&gt; always at hand, a work of much probable value” (September 7, 1811).* Newspapers were, from their earliest days, understood as a public good, as “work[s] of much probable value.”&lt;/p&gt;
&lt;p&gt;Information has been mobile from its early days — from the troubadour to the telegraph, one might say — but because “news” is the sum of information plus time, or timeliness to be more exact, the accelerated speed of transmission is vital to the rise of news for national and international audiences. Most scholars agree that syndicated news really took hold after the Civil War with Chicago’s A.N. Kellogg Newspaper Company. As with our own moment’s undervaluing of local news, the transition away from “local” newspaper-reading audiences did not happen overnight and cannot be attributed to a single factor. Infrastructure, — in the nineteenth century, the railroads and stereotype printing; today, the internet and social media — combined with sociocultural shifts, makes the world feel smaller.&lt;/p&gt;
&lt;p&gt;We are gathered here today to celebrate and to concern ourselves with news that does not move, that stays more or less in the place from which it came. It is, as Lincoln would say, “altogether fitting and proper that we should do this,” for reasons beyond the present moment. As an historian, I have been tasked with adjusting our gaze ever so slightly from the “now” to the “back then.” I’d like to draw out a few examples of the importance of local news in historical research in the hopes of showing, rather than telling, not only that historical local news matters, but also that we must retain its understanding of itself as a public good. Without this printed record, it is easy to forget that it is not just people who have history, but places too. Without the context of place, history too feels groundless, baseless, and unmoored. I fear that the history we are creating today might not even exist in a century from now, but I will say more about that later.&lt;/p&gt;
&lt;p&gt;When we think of historical newspapers, we often think of the people whose lives they capture, and perhaps even the lives of the people who produced them. We might even think of the stories they omit, of the people not represented in these wilted and worn pages. More recently, environmental history has helped us to see historical newspapers as the place to uncover the histories of the land, as the sources that will shed light on the social and cultural causes of global warming and environmental degradation. The research and storytelling in the work of scholars and journalists alike are changing how we think of newspapers and the vital role they play in understanding the histories, and in turn, the futures of our environment. Corporate archives often do more to conceal than to reveal, if one can gain access to them at all. Government records can be little better. But, local newspapers contain the stories written by the local intrepid reporter who cites evidence of a paper mill’s destruction of the river running through the town. Similarly, where official records might have denied harmful contamination from Superfund sites, a historian can scan obituaries for evidence of untimely deaths from cancer clusters. We need local newspapers to read against official narratives told of the land, as well as of the people who inhabit it.&lt;/p&gt;
&lt;figure class=&quot;items-center text-center&quot;&gt;
  &lt;img alt=&quot;Scanned front page of the inaugural issue of the 'Navajo Times'&quot; class=&quot;w-2/3&quot; src=&quot;https://lil-blog-media.s3.amazonaws.com/navajo-times.webp&quot; /&gt;
  Inaugural issue of the &lt;i&gt;Navajo Times&lt;/i&gt;, November 1, 1959. Source: &lt;a href=&quot;https://www.loc.gov/item/sn86091254/1959-11-01/ed-1/&quot;&gt;Library of Congress&lt;/a&gt;.
&lt;/figure&gt;
&lt;p&gt;Think, for example, of the hyperlocal newspapers published on reservations, such as the first newspaper published in the Navajo language in Window Rock, Arizona. The &lt;em&gt;Navajo Times&lt;/em&gt;’s purpose, as stated in its inaugural issue in 1959, was “to serve the 6,000 Navajo children who are attending off-reservation schools. It is hoped that this newspaper will keep them informed about what is happening on their reservation. It is also hoped that this is a step toward supplying the Navajo people with an ever-increasing flow of information.” This paper then was to keep the local — the power of place — in the hearts and minds of its intended audience, no matter where they went, or were forced to go. This statement of purpose from the &lt;em&gt;Navajo Times&lt;/em&gt; is a gentle reminder that people are, in part, defined by place, and the stories they told of “the local” have much to teach us today.&lt;/p&gt;
&lt;h2&gt;Aggregation of Historical Local News, a National Prerogative&lt;/h2&gt;
&lt;p&gt;As a researcher, I have been privileged to be a consumer of local news, and as a former senior program officer at the National Endowment for the Humanities (NEH), I was also a producer, managing the &lt;a href=&quot;https://www.neh.gov/grants/preservation/national-digital-newspaper-program&quot;&gt;National Digital Newspaper Program&lt;/a&gt; (NDNP), the NEH program that funds and co-creates &lt;a href=&quot;https://www.loc.gov/collections/chronicling-america/about-this-collection/&quot;&gt;&lt;em&gt;Chronicling America&lt;/em&gt;&lt;/a&gt;. &lt;em&gt;Chronicling America&lt;/em&gt; does and does not serve the preservation of local news. As of my most recent check, it includes 4,684 newspaper titles and over 3 million issues, dating from 1736 to 1963. These titles certainly include a handful of “local newspapers,” no matter how that category is defined. And yet, this was not the intention of NDNP. In fact, for about the first 15 years of its existence, NDNP inadvertently discouraged the preservation of “local” newspapers by encouraging applicants to begin with papers of record, with those that had long runs, and most likely, were published in big cities intended for large audiences. Because so many of the states have by now contributed these “major” papers, the program shifted, in &lt;a href=&quot;https://www.neh.gov/sites/default/files/inline-files/National-Digital-Newspaper-Program-NOFO-January-2020.pdf&quot;&gt;2021&lt;/a&gt;, to newspapers that tell underrepresented histories. Until recently, applicants were welcome to define “underrepresented” in any way they chose, and they often chose place-based representation (see the &lt;a href=&quot;https://www.neh.gov/sites/default/files/inline-files/National%20Digital%20Newspaper%20Program%20NOFO%2020240111-PJ%20modified.pdf&quot;&gt;2024 Notice of Funding Opportunity&lt;/a&gt; (NOFO); “underrepresented” has been expunged from the &lt;a href=&quot;https://www.neh.gov/sites/default/files/2024-08/NDNP%20NOFO%202025_0.pdf&quot;&gt;2025 NOFO&lt;/a&gt;). More and more newspapers from neglected areas were being included in &lt;em&gt;Chronicling America&lt;/em&gt;. Without empirical evidence to back me up, I would venture that there has been a rise in “local” if not “smaller” newspapers in &lt;em&gt;Chronicling America&lt;/em&gt; in recent years.&lt;/p&gt;
&lt;figure class=&quot;items-center text-center&quot;&gt;
  &lt;img alt=&quot;Comic book panel depicting two young people viewing their hometown newspaper at the Library of Congress&quot; class=&quot;w-1/2&quot; src=&quot;https://lil-blog-media.s3.amazonaws.com/ater-comic.webp&quot; /&gt;
  Panel from Malcolm W. Ater, &lt;i&gt;Seeing Washington&lt;/i&gt; (1957). Source: &lt;a href=&quot;https://mediacommons.unl.edu/luna/servlet/detail/UNL~136~136~8583~1534082:Malcolm-Ater-Collection&quot;&gt;University of Nebraska Libraries&lt;/a&gt;.
&lt;/figure&gt;
&lt;p&gt;And yet, the resource will always fall short, for it cannot provide all that we are looking for. Those who designed it, back in the early 2000s, knew this. They knew that the 1963 cutoff date for inclusion would exclude many important papers, and they knew that many state partners were able to digitize far more newspapers than could be included in the national aggregator. And so, the genius of NDNP is not only what you find in &lt;em&gt;Chronicling America&lt;/em&gt;, but also in the way that it established standards for newspaper digitization. Its hope was that &lt;em&gt;Chronicling America&lt;/em&gt; would be just one of the manifestations of the work it enabled; states would also become aggregators of their newspapers, using the same standards. And they have done so, creating amazing state-level digital newspaper repositories, such as &lt;a href=&quot;https://gahistoricnewspapers.galileo.usg.edu/newspapers/&quot;&gt;Georgia’s Historical Newspapers&lt;/a&gt; or the &lt;a href=&quot;https://texashistory.unt.edu/explore/collections/TDNP/&quot;&gt;Texas Digital Newspaper Program&lt;/a&gt;, just to name a few. Such state-level efforts were encouraged to reuse content digitized for &lt;em&gt;Chronicling America&lt;/em&gt;, as well as to include that which did not make it to the national aggregation level. &lt;a href=&quot;https://www.loc.gov/aba/pcc/conser/&quot;&gt;CONSERV cataloging&lt;/a&gt; and the &lt;a href=&quot;https://www.loc.gov/ndnp/guidelines/NDNP_202628TechNotes.pdf&quot;&gt;technical guidelines for digitization&lt;/a&gt; demonstrate that standardization must be part of the work of preservation; otherwise, the “local” risks being relegated to the dustbin of history. If we believe that “local” does not mean “less than,” then we must use the same standards for categorizing and making accessible local newspapers that we do for the so-called “papers of record.”&lt;/p&gt;
&lt;h2&gt;Local News as Public Data&lt;/h2&gt;
&lt;p&gt;The term “dark ages” has grown out of fashion for historians because it suggests that no light existed in the period from 500 to 1000 CE. Painstaking scholarship has slowly uncovered that this is not the case, that in fact people were innovating, creating, and exploring in ways not all that different from classical antiquity before it and the Renaissance afterwards. And, yet, the label “dark ages” resonates today, not because our current moment is failing to produce meaningful and innovative work, but because of the great difficulty the future will face in tracing the lives and outputs of the people of our moment. As &lt;a href=&quot;https://perma.cc/AJN7-KA29&quot;&gt;Jonathan Zittrain has pointed out&lt;/a&gt;, the internet, which for better or worse houses much of our current culture’s memory and creativity, is “rotting.” Technologies that once signaled a great unfurling of access to information are now showing cracks and vulnerabilities when considered at a historical scale. The historical record of the current moment will be, in many ways, “dark.” We are in what might be referred to as the “digital dark ages,” not because important things are not happening, but rather because the future’s light on this moment is diminished, if not snuffed out completely.&lt;/p&gt;
&lt;p&gt;We have been asked this morning to address what “getting local news preservation right” would require, and my response is that we must provide multiple ways to shine light on our current moment. Data is the new oil, or so we’ve been told for the last two decades, and I roll my eyes at this metaphor not because it is not true, but because data is so much more than a market commodity. Local news, in its many forms and instantiations, is public data, and we must preserve it because it has an inherent value that surpasses our current moment, that is so much more than its commodification. Because we cannot see the future, we cannot know all of these values, but based on our reliance on historical “local” newspapers to know the past, we can trust that they exist.&lt;/p&gt;
&lt;p&gt;For the most part, libraries exist outside of the naked self-interest of capitalism, and the people who work in them must play a role in the preservation of local news. Librarians are the original public interest technologists, we might say, and I urge us to put them at the forefront of our conversations here. Journalists too exist in a space not completely captured by market forces, and they too want information to be free and to be accessible. I see an alchemy emerging from the alliance between these two professions that offers future generations not only a historical record of their communities from which they can analyze and learn, but also a model for forms of affinity and alignment that exceed capitalist logics and exemplify other modes of cooperative work. This gathering is an important step in this effort, and I am honored to be a part of it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;* Thank you to my friend and collaborator Will Slauter for providing this example and for his assistance with these remarks throughout.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-25T16:30:00+00:00</dc:date>
	<dc:creator>Molly Hardy</dc:creator>
</item>
<item rdf:about="https://blog.okfn.org/?p=49649">
	<title>Open Knowledge Foundation: Making AI work for communities – OKFN Newsletter June 2026</title>
	<link>https://blog.okfn.org/2026/06/25/making-ai-work-for-communities-okfn-newsletter-june-2026/</link>
	<content:encoded>&lt;p&gt;AI and open data, archives and climate, BrainCommons, SkyCommons, MCP, CKAN, and more.&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://blog.okfn.org/2026/06/25/making-ai-work-for-communities-okfn-newsletter-june-2026/&quot;&gt;Making AI work for communities – OKFN Newsletter June 2026&lt;/a&gt; first appeared on &lt;a href=&quot;https://blog.okfn.org&quot;&gt;Open Knowledge Blog&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-25T14:44:18+00:00</dc:date>
	<dc:creator>OKFN</dc:creator>
</item>
<item rdf:about="https://xeiaso.net/shitposts/no-way-to-prevent-this/memory-safety/CVE-2026-8461/">
	<title>Xe Iaso: &quot;No way to prevent this&quot; say users of only language where this regularly happens</title>
	<link>https://xeiaso.net/shitposts/no-way-to-prevent-this/memory-safety/CVE-2026-8461/</link>
	<content:encoded>&lt;p&gt;In the hours following the release of &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-8461&quot;&gt;CVE-2026-8461&lt;/a&gt; for the project &lt;a href=&quot;https://ffmpeg.org/&quot;&gt;FFmpeg&lt;/a&gt;, site reliability workers
        and systems administrators scrambled to desperately rebuild and patch all their systems to fix an out-of-bounds write in the MagicYUV decoder (libavcodec/magicyuv.c) caused by improper bounds checking, resulting in heap corruption, denial of service, and potential remote code execution when processing a specially crafted video file. This is due to the affected components being
        written in C, the only programming language where these vulnerabilities regularly happen. &quot;This was a terrible tragedy, but sometimes
        these things just happen and there's nothing anyone can do to stop them,&quot; said programmer Mrs. Kitty Smitham, echoing statements
        expressed by hundreds of thousands of programmers who use the only language where 90% of the world's memory safety vulnerabilities have
        occurred in the last 50 years, and whose projects are 20 times more likely to have security vulnerabilities. &quot;It's a shame, but what can
        we do? There really isn't anything we can do to prevent memory safety vulnerabilities from happening if the programmer doesn't want to
        write their code in a robust manner.&quot; At press time, users of the only programming language in the world where these vulnerabilities
        regularly happen once or twice per quarter for the last eight years were referring to themselves and their situation as &quot;helpless.&quot;&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-25T00:00:00+00:00</dc:date>
</item>
<item rdf:about="https://ruebot.net/talk/kcl-dh-2026/">
	<title>Nick Ruest: Mic Check for Misogyny: Podcasting, Supremacist Masculinities, and the Radicalization of Gendered Violence</title>
	<link>https://ruebot.net/talk/kcl-dh-2026/</link>
	<dc:date>2026-06-25T00:00:00+00:00</dc:date>
</item>
<item rdf:about="https://blog.okfn.org/?p=49627">
	<title>Open Knowledge Foundation: Open Knowledge and Critical Infrastructure: a Nordic Conversation</title>
	<link>https://blog.okfn.org/2026/06/24/open-knowledge-and-critical-infrastructure-a-nordic-conversation/</link>
	<content:encoded>&lt;p&gt;We discussed with our Nordic members and friends how, across Europe and beyond, policymakers are rethinking the foundations of the digital state and the infrastructure that powers it.&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://blog.okfn.org/2026/06/24/open-knowledge-and-critical-infrastructure-a-nordic-conversation/&quot;&gt;Open Knowledge and Critical Infrastructure: a Nordic Conversation&lt;/a&gt; first appeared on &lt;a href=&quot;https://blog.okfn.org&quot;&gt;Open Knowledge Blog&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-24T17:37:00+00:00</dc:date>
	<dc:creator>Renata Ávila</dc:creator>
</item>
<item rdf:about="https://blog.librarything.com/?p=11358">
	<title>LibraryThing (Thingology): Come Join the 2026 Pride Treasure Hunt!</title>
	<link>https://blog.librarything.com/2026/06/come-join-the-2026-pride-treasure-hunt/</link>
	<content:encoded>&lt;div style=&quot;float: right; margin: 0 0 1em 1em; clear: right;&quot;&gt;&lt;a href=&quot;https://www.librarything.com/hunt/44&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.librarything.com/pics/hunt/2026-06_512.png&quot; style=&quot;width: 300px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;It’s June, and that means that our annual &lt;a href=&quot;https://www.librarything.com/hunt/44&quot;&gt;Pride Month Treasure Hunt&lt;/a&gt; is back!&lt;/p&gt;
&lt;p&gt;We’ve scattered a shower of rainbows around the site, and it’s up to you to try and find them all.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Decipher the clues and visit the corresponding LibraryThing pages to find a rainbow. Each clue points to a &lt;b&gt;specific page&lt;/b&gt; right here on LibraryThing. Remember, they are not necessarily work pages!&lt;/li&gt;
&lt;li&gt;If there’s a rainbow on a page, you’ll see a banner at the top of the page.&lt;/li&gt;
&lt;li&gt;You have just under &lt;b&gt;one week&lt;/b&gt; to find all the rainbows (until &lt;b&gt;11:59pm EDT, Tuesday June 30th&lt;/b&gt;).&lt;/li&gt;
&lt;li&gt;Come brag about your shower of rainbows (and get hints) on &lt;a href=&quot;https://www.librarything.com/topic/385107&quot;&gt;Talk&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Win prizes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Any member who finds at least two rainbows will be awarded a rainbow badge. &lt;a href=&quot;https://www.librarything.com/stats/MEMBERNAME/badges&quot;&gt;Badge&lt;/a&gt; (&lt;img height=&quot;16&quot; src=&quot;https://image.librarything.com/pics/hunt/hunt_badge_2026_06_32.png&quot; style=&quot;vertical-align: top; margin: 0 ;&quot; /&gt;).&lt;/li&gt;
&lt;li&gt;Members who find all 11 rainbows will be entered into a drawing for one of five sets of LibraryThing (or TinyCat) &lt;a href=&quot;https://www.librarything.com/more/store&quot;&gt;swag&lt;/a&gt;. We’ll announce winners at the end of the hunt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;P.S. Thanks to &lt;a href=&quot;https://www.librarything.com/profile/conceptDawg&quot;&gt;conceptDawg&lt;/a&gt; for the kookaburra illustration. ConceptDawg has made all of our treasure hunt graphics in the last couple of years. We like them, and hope you do, too!&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-24T14:25:00+00:00</dc:date>
	<dc:creator>Abigail Adams</dc:creator>
</item>
<item rdf:about="https://inkdroid.org/2026/06/24/fine-flowers/">
	<title>Ed Summers: Fine Flowers</title>
	<link>https://inkdroid.org/2026/06/24/fine-flowers/</link>
	<content:encoded>&lt;p&gt;
Epithalmion for Tyler by James Tate
&lt;/p&gt;
&lt;p&gt;
I thought I knew something&lt;br /&gt; about loneliness but&lt;br /&gt; you go to
the stockyards
&lt;/p&gt;
&lt;p&gt;
buy a pig’s ear and sew&lt;br /&gt; it on your couch. That, you&lt;br /&gt; said, is
my best friend – we
&lt;/p&gt;
&lt;p&gt;
have spirited talks. Even&lt;br /&gt; then I thought: a man of&lt;br /&gt; such
exquisite emptiness
&lt;/p&gt;
&lt;p&gt;
(and you cultivated it so)&lt;br /&gt; is ground for fine flowers.
&lt;/p&gt;
&lt;audio controls=&quot;controls&quot; src=&quot;/audio/20260624-epithalmion.mp3&quot;&gt;
&lt;/audio&gt;</content:encoded>
	<dc:date>2026-06-24T04:00:00+00:00</dc:date>
</item>
<item rdf:about="https://xeiaso.net/shitposts/no-way-to-prevent-this/memory-safety/CVE-2026-55200/">
	<title>Xe Iaso: &quot;No way to prevent this&quot; say users of only language where this regularly happens</title>
	<link>https://xeiaso.net/shitposts/no-way-to-prevent-this/memory-safety/CVE-2026-55200/</link>
	<content:encoded>&lt;p&gt;In the hours following the release of &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-55200&quot;&gt;CVE-2026-55200&lt;/a&gt; for the project &lt;a href=&quot;https://libssh2.org/&quot;&gt;libssh2&lt;/a&gt;, site reliability workers
        and systems administrators scrambled to desperately rebuild and patch all their systems to fix an out-of-bounds write in ssh2_transport_read() due to a missing upper bound check on the packet_length field, resulting in heap corruption and potential remote code execution. This is due to the affected components being
        written in C, the only programming language where these vulnerabilities regularly happen. &quot;This was a terrible tragedy, but sometimes
        these things just happen and there's nothing anyone can do to stop them,&quot; said programmer Mr. Alex Doyle, echoing statements
        expressed by hundreds of thousands of programmers who use the only language where 90% of the world's memory safety vulnerabilities have
        occurred in the last 50 years, and whose projects are 20 times more likely to have security vulnerabilities. &quot;It's a shame, but what can
        we do? There really isn't anything we can do to prevent memory safety vulnerabilities from happening if the programmer doesn't want to
        write their code in a robust manner.&quot; At press time, users of the only programming language in the world where these vulnerabilities
        regularly happen once or twice per quarter for the last eight years were referring to themselves and their situation as &quot;helpless.&quot;&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-24T00:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-4503292949532760618.post-5913434242416838208">
	<title>David Rosenthal: AI's Affordability Crisis</title>
	<link>https://blog.dshr.org/2026/06/ais-affordability-crisis.html</link>
	<content:encoded>A year ago in &lt;a href=&quot;https://blog.dshr.org/2025/06/the-back-of-ai-envelope.html&quot;&gt;&lt;i&gt;The Back Of The AI Envelope&lt;/i&gt;&lt;/a&gt; I pointed out that the AI platforms were running the drug-dealer's algorithm, &quot;the first one's free&quot;. By massively subsidizing the use of their products, they were generating overwhelming demand for them. They used this demand to justify massive investments, in the hope that, by the time they had to show a return on these invetment, the users would be so addicted that they would pay the vastly higher prices needed to generate a return.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuTLj-6oHxAz8yvEo1928xM8bxW3K58OrmxbvNnesyd-o37-lY8Pw6fPFmMupStauhJB8xXh6l7FY-rVHwwPqKyBFsI-WLbaXLSytoAuk6FTRcf02DIWUo7ib3FpP5yc0AKOH6XxmNL9gcIr4H8_K5oxDlhU-_voTtMPgbPY-u2OfM4TuEFG5ukArx99S9/s1896/200B-Question.png&quot; style=&quot;clear: right; display: block; margin-bottom: 1em; margin-left: auto; margin-right: auto; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;56&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuTLj-6oHxAz8yvEo1928xM8bxW3K58OrmxbvNnesyd-o37-lY8Pw6fPFmMupStauhJB8xXh6l7FY-rVHwwPqKyBFsI-WLbaXLSytoAuk6FTRcf02DIWUo7ib3FpP5yc0AKOH6XxmNL9gcIr4H8_K5oxDlhU-_voTtMPgbPY-u2OfM4TuEFG5ukArx99S9/w200-h56/200B-Question.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://sequoiacap.com/article/follow-the-gpus-perspective/&quot;&gt;David Cahn, Sept '23&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
I have to confess that I was late to the party. The earliest skepticism I've been able to find was from Sequoia Capital's David Cahn in September 2023, entitled &lt;a href=&quot;https://sequoiacap.com/article/follow-the-gpus-perspective/&quot;&gt;&lt;i&gt;AI’s $200B Question&lt;/i&gt;&lt;/a&gt;. Only nine months later Cahn re-ran the same analysis in &lt;a href=&quot;https://sequoiacap.com/article/ais-600b-question/&quot;&gt;&lt;i&gt;AI’s $600B Question&lt;/i&gt;&lt;/a&gt;.  His estimate of the revenue gap had tripled. Cahn wasn't alone. Independent journalists such as &lt;a href=&quot;https://www.wheresyoured.at/&quot;&gt;Ed Zitron&lt;/a&gt; were flagging this problem long before I was.&lt;br /&gt;
&lt;br /&gt;
I started to write this post a couple of months ago when the maiinstream business press began to notice companies complaining about the cost of the tokens their employees were burning. Since then the trickle has turned into a flood, which made finishing the post hard. Below the fold I throw up my hands and dump out a small sample from the flood.&lt;br /&gt;
&lt;span&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;br /&gt;
One difficulty has been that estimates of the size of the subsidy have varied widely, typically in the range of costing the platforms $8 to $14 to generate $1 in revenue. Two recent posts from Ed Zitron have illuminated this issue.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPaajVCJYuSt8Rkj3fR8GSZQ_pAbHJldOsS17qRHqBrH8Ps-tDNb1l1sLmgZWOC6s1-fs5EpZhIJzc5lwWLSJz2tNfu9gvvG9WSU_2uVwaxIBG39ZiRj1Lthyphenhyphenv_y8qBVFlYIdDQvoNpm6Nj8KODEmw0lrbKuHcTs7zVDWIyNOo3cu88-dWjXWS_T87fbvp/s1544/Subsidy.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;111&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPaajVCJYuSt8Rkj3fR8GSZQ_pAbHJldOsS17qRHqBrH8Ps-tDNb1l1sLmgZWOC6s1-fs5EpZhIJzc5lwWLSJz2tNfu9gvvG9WSU_2uVwaxIBG39ZiRj1Lthyphenhyphenv_y8qBVFlYIdDQvoNpm6Nj8KODEmw0lrbKuHcTs7zVDWIyNOo3cu88-dWjXWS_T87fbvp/w200-h111/Subsidy.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.wheresyoured.at/brokenomics/&quot;&gt;Source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
First, in &lt;a href=&quot;https://www.wheresyoured.at/brokenomics/&quot;&gt;&lt;i&gt;AI's Brokenomics&lt;/i&gt;&lt;/a&gt; Zitron reported that:&lt;br /&gt;
&lt;blockquote&gt;
SemiAnalysis, an extremely pro-AI semiconductor analyst, ran a test made up of random long-horizon coding tasks until they maxed out the limit on OpenAI and Anthropic’s various subscription levels.&lt;br /&gt;
&lt;br /&gt;
Their findings were shocking.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;For $200 A Month, You Can Burn $8000 in Anthropic Tokens or $14,000 In OpenAI Tokens&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
That’s right. Anyone with a $200-a-month Anthropic subscription can burn $8000 in tokens, and with a $200-a-month ChatGPT subscription, you can burn $14,000 in tokens. 
&lt;/blockquote&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmLWHadpYmfxhvqhloAmrBMw0rZH626WmOFeCcf5o_EyRNIgbZTXP8ELgCBmbvRt53SwRZ02VVojsyZwlesAfGXF8Gu9gYn5sBnF2Gfshrm9YtP1BUq_30nrr74qJCfhGNUAb1PKsSZU-8C8kl2e_0OO5aMb8MbiPgOIIcZHV25jd3gnMF-p5hwOYjoC6E/s2192/BusinessAdoption.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;121&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmLWHadpYmfxhvqhloAmrBMw0rZH626WmOFeCcf5o_EyRNIgbZTXP8ELgCBmbvRt53SwRZ02VVojsyZwlesAfGXF8Gu9gYn5sBnF2Gfshrm9YtP1BUq_30nrr74qJCfhGNUAb1PKsSZU-8C8kl2e_0OO5aMb8MbiPgOIIcZHV25jd3gnMF-p5hwOYjoC6E/w200-h121/BusinessAdoption.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.glean.com/work-ai-institute/reports/work-ai-index-report&quot;&gt;Source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
Zitron's numbers don't tell us the real cost of generating tokens but, subject to the assumption that the platforms are &lt;i&gt;not&lt;/i&gt; subsidizing the token price, that means Anthropic is subsidizing their enterprise customers by up to 40 times, and OpenAI up to 70 times. No wonder they are seeing massive demand! But, despite OpenAI's subsidy being 175% of Anthropic's, OpenAI's adoption by businesses has recently been flat while Anthropic's has soared.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtKGIvHcKjg7bu0goFIWV2YBreYfCAzYoWswfI6HtF-Ucaw4fJp5gWyfJQnVgWP2b6wXONd4AMshx-IOavRU9Dj0xzx5FAz4B_NAKIQyruz82mXUziTQYF_c52V78R0gDwUUsA1f2kB6W7S1GLTuuJUQlnO0llsE0tzlKkblnqNih3TqpywN-we3kukf1_/s976/Margins.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;115&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtKGIvHcKjg7bu0goFIWV2YBreYfCAzYoWswfI6HtF-Ucaw4fJp5gWyfJQnVgWP2b6wXONd4AMshx-IOavRU9Dj0xzx5FAz4B_NAKIQyruz82mXUziTQYF_c52V78R0gDwUUsA1f2kB6W7S1GLTuuJUQlnO0llsE0tzlKkblnqNih3TqpywN-we3kukf1_/w200-h115/Margins.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.wheresyoured.at/brokenomics/&quot;&gt;Source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
SemiAnalysis also analyzed the platform's gross margins, implausibly assuming that tokens were priced at &lt;a href=&quot;https://www.wheresyoured.at/brokenomics/&quot;&gt;4 times the cost of generating them&lt;/a&gt; and:&lt;br /&gt;
&lt;blockquote&gt;
With the current subsidies, all it takes for a user to have a gross margin of &lt;i&gt;at best negative 25%&lt;/i&gt; is for them to use&lt;i&gt; as little as 25% of their rate limit&lt;/i&gt;.
&lt;/blockquote&gt;
Naturally, subsidizing your sales like this means you are feeding cash into the furnace. We have seen OpenAI and Anthropic raising vast sums in equity, but because they both have been private companies we haven't seen the details of their spending or revenue. On June 15&lt;sup&gt;th&lt;/sup&gt; this changed when Zitron saw OpenAI's 20025 financials and posted &lt;a href=&quot;https://www.wheresyoured.at/exclusive-openai-financials/&quot;&gt;&lt;i&gt;OpenAI Losses Increased Nearly 8X in 2025, With Spending Hitting $34 Billion&lt;/i&gt;&lt;/a&gt;, revealing that:&lt;br /&gt;
&lt;blockquote&gt;
OpenAI Had $13.07 Billion In Revenue, $34 Billion In Costs and Expenses, and $20.92 Billion In Losses, with a net loss attributable to the company of $38.53 Billion
&lt;/blockquote&gt;
The numbers are somewhat complicated &lt;a href=&quot;https://www.wheresyoured.at/exclusive-openai-financials/&quot;&gt;because&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
2025 was the year that OpenAI converted from a non-profit to a for-profit entity, leading to a $41.55 billion loss due to changes in fair value of convertible interests and warrant liability.&lt;br /&gt;
...&lt;br /&gt;
Ultimately, the net loss attributable to OpenAI in 2025 was $38.5 billion.&lt;br /&gt;
&lt;br /&gt;
At the end of the year, OpenAI had just over $50 billion in assets, with almost half of that in cash.
&lt;/blockquote&gt;
Perhaps the most striking of their truly awful numbers &lt;a href=&quot;https://www.wheresyoured.at/exclusive-openai-financials/&quot;&gt;were&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Revenue:&lt;/b&gt; $13.07 billion&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Sales and Marketing:&lt;/b&gt; $5.73 billion&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
That is, OpenAI spent &lt;i&gt;44% of their revenue on sales and marketing!&lt;/i&gt; The hype needed to keep the AI bubble inflated is &lt;i&gt;incredibly&lt;/i&gt; expensive. Despite this lavish spending, business adoption has been flat.&lt;br /&gt;
&lt;br /&gt;
US equity markets are facing three IPOs of AI companies, SpaceX, Anthropic and OpenAI, each led by a world-class bullshitter, each losing tens of billions fo dollars a quarter, and all but SpaceX touting overwhelming demand for their products&lt;sup&gt;[&lt;a href=&quot;https://blog.dshr.org/feeds/posts/default#Footnote1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;.  But, after they go public, they will need to charge enough to generate a return on their enormous capital investments. Ideally, they would have postponed the necessary swingeing price increases until the IPO money is in the bank.&lt;br /&gt;
&lt;br /&gt;
Alas, their burn rate is so high that they have been forced to make some premature moves toward price sanity.
Back in April Ed Zitron reported that &lt;a href=&quot;https://www.wheresyoured.at/news-microsoft-to-shift-github-copilot-users-to-token-based-billing-reduce-rate-limits-2/&quot;&gt;&lt;i&gt;Microsoft To Shift GitHub Copilot Users To Token-Based Billing, Tighten Rate Limits&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
Leaked internal documents viewed by Where’s Your Ed At reveal that Microsoft intends to pause new signups for the student and paid individual tiers of AI coding product GitHub Copilot, tighter rate limits, and eventually move users to “token-based billing,” charging them based on what the actual cost of their token burn really is.&lt;br /&gt;
&lt;br /&gt;
The document says that although token-based billing has been a top priority for Microsoft, it became more urgent in recent months, with the week-over-week cost of running GitHub Copilot nearly doubling since January. &lt;br /&gt;
&lt;br /&gt;
The move to token-based billing will see GitHub users charged based on their usage of the platform, and how many tokens their prompts consume — and thus, how much compute they use.
&lt;/blockquote&gt;
Anthropic, OpenAI and Microsoft have all now transitioned customers from subscriptions to token-based pricing. For serious users, this is eye-wateringly expensive. Jamie John, Rafe Rosner-Uddin and Ryan McMorrow's &lt;a href=&quot;https://archive.is/m5MHe#selection-1483.0-1483.74&quot;&gt;&lt;i&gt;‘We created a monster’: companies rein in AI usage as costs strain budgets&lt;/i&gt;&lt;/a&gt; quotes a small company's CEO:&lt;br /&gt;
&lt;blockquote&gt;
But the company got a shock when Anthropic switched it over to token-based pricing in May. “Our spend went up 7x the first day and I’m like, oh shit, we created a monster,” said Busse. “[Large language model] companies have been subsidising all of our usage and now no longer. User-based pricing shelters you.”&lt;br /&gt;
&lt;/blockquote&gt;
Thus in recent weeks the idea that Generative AI (LLMs for short) is too expensive has been all over mainstream business media. Examples include Bloomberg's video &lt;a href=&quot;https://www.youtube.com/watch?v=MNQDrF0HjtI&quot;&gt;&lt;i&gt;Major Companies Reconsider AI Costs&lt;/i&gt;&lt;/a&gt;, Scott Galloway's video &lt;a href=&quot;https://www.youtube.com/watch?v=VBHSjzHW-C8&quot;&gt;&lt;i&gt;AI May Not Be Worth The Cost — Here’s Why&lt;/i&gt;&lt;/a&gt;, Derek Thompson's &lt;a href=&quot;https://www.derekthompson.org/p/the-great-ai-cost-panic-of-2026&quot;&gt;&lt;i&gt;The AI Boom Has Entered Its 'Wait, Is This Worth It?' Era&lt;/i&gt;&lt;/a&gt;, and Jowi Morales' &lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/ai-cost-crisis-hits-tech-giants-as-employee-tokenmaxxing-backfires-agentic-ai-eats-up-to-1000x-more-tokens-than-standard-ai-sparks-corporate-pullback-at-microsoft-meta-and-amazon&quot;&gt;&lt;i&gt;AI cost crisis hits tech giants as employee 'tokenmaxxing' backfires, sparking corporate pullback at Microsoft, Meta, and Amazon — agentic AI eats up to 1000x more tokens than standard AI&lt;/i&gt;&lt;/a&gt;, who notes that:&lt;br /&gt;
&lt;blockquote&gt;
it’s now apparent that using AI is more expensive than hiring people, especially since it offers only limited productivity gains at the moment.
&lt;/blockquote&gt;
Lest you think it is only the AI haters complaining about the cost, check out Bruno Ferreira's &lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/nvidia-exec-says-ai-is-more-expensive-than-actual-workers-yet-some-companies-dont-see-the-extra-costs-as-a-negative&quot;&gt;&lt;i&gt;Nvidia exec says AI is more expensive than actual workers — yet some companies don't see the extra costs as a negative&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
Bryan Catanzaro, Nvidia's VP of applied deep learning, recently told Axios that &quot;For my team, the cost of compute is far beyond the costs of the employees&quot;, quite an interesting statement from the company selling the shovels for the gold rush.&lt;br /&gt;
&lt;br /&gt;
That perspective is shared by Uber's CTO Praveen Naga, who &quot;[went] back to the drawing board because the budget [he] thought [he] would need is blown away already&quot; as of two weeks ago. Likewise, Swan AI's Amos Bar-Joseph posted a while back on LinkedIn about how proud he was about a $113k bill from Anthropic (makers of Claude) for a four-person team.&lt;br /&gt;
&lt;br /&gt;
Oversimplified math pins that amount that at $28k per person per month, which is likely more than each person's monthly wages. Jokes abound right now that &quot;companies have discovered jobs again,&quot; and the humor is backed up by a 2024 MIT study stating that 77% of the time, it was preferable to have humans do the work.
&lt;/blockquote&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4b-fysJWHH_-zjI8dZGzpTvex25EkZocVPwpaAxYDwUERqcUrCsltDuW7tF2To7xzN8PIdTiji6iAa_xlkNJXZZlNE9_n06aQuvc0pWmdmBeHt1rPPAAwEfmCwCWG72VzL1_5YNsylgtJQ28XOVl6m3NtpD1fY4c_p_SxbnQGZbpfF3iskMlllnDDvVzF/s200/FT-graph.jpeg&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;152&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4b-fysJWHH_-zjI8dZGzpTvex25EkZocVPwpaAxYDwUERqcUrCsltDuW7tF2To7xzN8PIdTiji6iAa_xlkNJXZZlNE9_n06aQuvc0pWmdmBeHt1rPPAAwEfmCwCWG72VzL1_5YNsylgtJQ28XOVl6m3NtpD1fY4c_p_SxbnQGZbpfF3iskMlllnDDvVzF/s200/FT-graph.jpeg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Source&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
The reason is for the premature and impending price rises is that justifying the massive investment in building data centers, about 60% of which goes into &lt;a href=&quot;https://blog.dshr.org/2025/10/depreciation.html&quot;&gt;rapidly depreciating hardware&lt;/a&gt;, requires implausibly astronomical revenues. &lt;a href=&quot;https://x.com/ThierryBorgeat/status/2060069195975422281&quot;&gt;Thierry Borgeat&lt;/a&gt;&lt;a&gt; notes that:&lt;br /&gt;
&lt;blockquote&gt;
even under &quot;best case&quot; assumptions — assuming zero costs, just revenue against capex — the Financial Times calculated the implied return on hyperscaler AI investment from 2025 to 2030.&lt;br /&gt;
&lt;br /&gt;
Only one of them clears positive.&lt;br /&gt;
&lt;br /&gt;
Implied return on AI investment (FT / Panmure Liberum)&lt;br /&gt;
– Microsoft: -9.2%&lt;br /&gt;
– Alphabet: -15.7%&lt;br /&gt;
– Amazon: +7.2%&lt;br /&gt;
– Meta: -28.8%&lt;br /&gt;
– Oracle: -35.6%&lt;br /&gt;
&lt;br /&gt;
And remember: that's assuming zero costs. In reality, GPUs depreciate, power bills run, salaries get paid.&lt;br /&gt;
&lt;/blockquote&gt;
In &lt;/a&gt;&lt;a href=&quot;https://wlockett.medium.com/the-ai-industry-is-panicking-db5edfd0b0b1&quot;&gt;&lt;i&gt;The AI Industry Is Panicking&lt;/i&gt;&lt;/a&gt;, Will Lockett estimates that over the next few years the AI platforms will accumulate around $3T in debt. Assuming this is at 3% over 10 years, servicing the debt will take $309B/year:&lt;br /&gt;
&lt;blockquote&gt;
This means that for the AI industry to service its debt, it needs to generate hundreds of billions of dollars in profit each year.&lt;br /&gt;
&lt;br /&gt;
Even giant monopolies like Google don’t make enough profit to service that much debt. AI can’t just be a novelty industry; it needs to replace human labour on a colossal scale to service this debt. Let’s optimistically assume AI one day reaches a 10% profitability margin, a cost parity with human labour, and the ability to complete most jobs (none of which are currently the case). Well, &lt;a href=&quot;https://www.sofi.com/learn/content/average-salary-in-us/&quot;&gt;the average US salary is roughly $66,000&lt;/a&gt;, so at a 10% profit, the AI company will make on average $6,600 per year per job it replaces. To generate the $309 billion needed to service their debt, the AI industry will need to replace 46.8 million jobs, &lt;a href=&quot;https://www.theglobalstatistics.com/united-states-labor-statistics/&quot;&gt;equivalent to around 27% of the current number of jobs in the US&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
While this is all very rough maths, it highlights the implicit bet created by the debt the AI industry has racked up. To simply &lt;i&gt;not default&lt;/i&gt; on this debt, the AI industry has to rapidly displace human labour at a staggering scale, even if we are extremely optimistic about AI’s economics.
&lt;/blockquote&gt;
One caveat with Lockett's math is that the cost of employing a human is greater than just the salary. It includes the employer's Social Security tax, health insurance, office space and so on. Chatbots don't need any of these. According to the &lt;a href=&quot;https://www.bls.gov/news.release/pdf/ecec.pdf&quot;&gt;Bureau of Labor Statistics&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
Wages and salaries averaged $32.60 per hour worked and accounted for 69.9 percent of employer costs, while benefit costs averaged $14.01 per hour worked and accounted for the remaining 30.1 percent.
&lt;/blockquote&gt;
So the average profit per job would be around $9.5K, and the number of jobs displaced would be around 32.5&lt;strike&gt;K&lt;/strike&gt;M.&lt;br /&gt;
&lt;br /&gt;
How was the switch to token-based pricing received? We can guess from three pieces of recent news:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI's Sam Altman said that costs have become a &lt;a href=&quot;https://www.businessinsider.com/ai-bubble-heads-doomers-sam-altman-ai-costs-huge-issue-2026-6&quot;&gt;&quot;huge issue&quot;&lt;/a&gt; for customers  and the company is considering &lt;a href=&quot;https://www.wsj.com/tech/ai/openai-considers-drastic-price-cuts-anticipating-war-for-users-with-anthropic-9b8c178e&quot;&gt;&quot;drastic&quot;&lt;/a&gt; price cuts &lt;a href=&quot;https://www.bloomberg.com/opinion/articles/2026-06-11/anthropic-openai-price-war-would-be-brutal-for-both-companies&quot;&gt;to rein in rival Anthropic PBC’s lead in the corporate market&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Kyle Orland reported that &lt;a href=&quot;https://arstechnica.com/ai/2026/06/anthropic-pauses-token-based-billing-for-its-claude-agent-sdk/&quot;&gt;&lt;i&gt;Anthropic “pauses” token-based billing for its Claude Agent SDK&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
Last month, Anthropic &lt;a href=&quot;https://x.com/bcherny/status/2040206441756471399?lang=en&quot;&gt;announced a billing change&lt;/a&gt; that would have substantially increased costs for heavy users of &lt;a href=&quot;https://code.claude.com/docs/en/agent-sdk/overview&quot;&gt;its automation-focused Claude Agent SDK&lt;/a&gt;, including many third-party apps. On Monday, though, Anthropic abruptly announced it had paused those pricing changes just as they were set to take effect, allowing Agent SDK users to continue drawing from the more generous usage limits in their existing Claude subscriptions.
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://windowsforum.com/threads/microsoft-plans-june-30-2026-shift-from-claude-code-to-copilot-cli.425488/&quot;&gt;&lt;i&gt;Microsoft Plans June 30, 2026 Shift From Claude Code to Copilot CLI&lt;/i&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
Microsoft is reportedly cancelling most Claude Code access for engineers in its Experiences and Devices division by June 30, 2026, shifting teams working on Windows, Microsoft 365, Outlook, Teams, and Surface toward GitHub Copilot CLI as the company tries to rein in internal AI coding costs. The decision is more than a procurement tweak. It is a rare glimpse into what happens when the world’s most aggressive AI software company runs into the same metered-billing problem now facing every large engineering organization.
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
Historically, companies wishing to IPO would be profitable. More recently they could have a successful IPO by showing a plausible path to profitability. Now, SpaceX has shown that even massive losses and a claimed path to profitability that is completely implausible is not a barrier to a successful IPO. But even despite this example, one would think that the last thing two companies racing to IPO despite massive losses and implausible paths to profitability would want would be to engage in a &quot;drastic&quot; price war.&lt;br /&gt;
&lt;h3&gt;Footnotes&lt;/h3&gt;
&lt;ol&gt;
&lt;li id=&quot;Footnote1&quot;&gt;xAI's product is so bad that even their employees won't use it and Musk has said it needs to be re-written from the ground up. So xAI has been reduced to &lt;i&gt;&lt;a href=&quot;https://www.datacenterdynamics.com/en/news/anthropic-to-use-all-of-spacex-xais-colossus-1-data-center-compute/&quot;&gt;renting its compute infrastructure&lt;/a&gt; to &lt;a href=&quot;https://techcrunch.com/2026/06/05/google-will-pay-spacex-920m-per-month-for-compute/&quot;&gt;its competitors&lt;/a&gt;&lt;/i&gt;.&lt;/li&gt;
&lt;/ol&gt;</content:encoded>
	<dc:date>2026-06-23T16:34:22+00:00</dc:date>
	<dc:creator>David. (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="https://www.diglib.org/?p=104220">
	<title>Digital Library Federation: 2026 Virtual DLF Forum: Registration Open, Program Released, Keynote Announced, Digital Storytelling Fellows Application Open</title>
	<link>https://www.diglib.org/2026-virtual-dlf-forum-registration-open-program-released-keynote-announced-digital-storytelling-fellows-application-open/</link>
	<content:encoded>&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Registration is now open for the virtual &lt;/span&gt;&lt;a href=&quot;https://diglib.org&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Digital Library Federation’s&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (DLF) Forum online, October 14-15, 2026. The DLF Forum is a dynamic gathering place for GLAM professionals to share ideas, sustain critical work, and spark innovation. It connects library, archives, and museum practitioners, as well as other knowledge workers, through intentional community building and collaborative exchange. Learn more about &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;The full &lt;/span&gt;&lt;a href=&quot;https://www.conftool.pro/dlf2026/sessions.php&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Forum program is also available to explore&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;, and we’re thrilled to announce our&lt;/span&gt;&lt;a href=&quot;https://forum2026.diglib.org/keynote-speaker/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; keynote speaker, Dr. Salwa Ismail.&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; Additionally, the application for &lt;/span&gt;&lt;a href=&quot;http://www.diglib.org/2026-virtual-dlf-forum-digital-storytelling-fellows/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Digital Storytelling Fellows &lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;is now open. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; Be sure to check out the exciting details and join us in building momentum for what’s sure to be an inspiring experience.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Secure&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; the early bird rate and &lt;/span&gt;&lt;b&gt;start planning&lt;/b&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; for yet another memorable online conference with DLF. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;DLF member organizations receive two complimentary registrations for the virtual DLF Forum as part of their member benefits. Not sure who received your code? Email us at &lt;/span&gt;&lt;a href=&quot;mailto:forum@diglib.org&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;forum@diglib.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://forum2026.diglib.org/registration/&quot;&gt;&lt;b&gt;Register Today&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;If you have any questions, please write to us at &lt;/span&gt;&lt;a href=&quot;mailto:forum@diglib.org&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;forum@diglib.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;. We’re looking forward to seeing you online this fall.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;-Team DLF&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;P.S. Want to stay updated on all things related to the DLF Forum? &lt;/span&gt;&lt;a href=&quot;https://share.hsforms.com/1MhcafbpARxGCIS1OQD6rKgc21y3&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Subscribe to our Forum newsletter&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://www.diglib.org/2026-virtual-dlf-forum-registration-open-program-released-keynote-announced-digital-storytelling-fellows-application-open/&quot;&gt;2026 Virtual DLF Forum: Registration Open, Program Released, Keynote Announced, Digital Storytelling Fellows Application Open&lt;/a&gt; appeared first on &lt;a href=&quot;https://www.diglib.org&quot;&gt;DLF&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-23T16:00:30+00:00</dc:date>
	<dc:creator>swillis</dc:creator>
</item>
<item rdf:about="https://www.diglib.org/?p=104207">
	<title>Digital Library Federation: 2026 Virtual DLF Forum Digital Storytelling Fellows</title>
	<link>https://www.diglib.org/2026-virtual-dlf-forum-digital-storytelling-fellows/</link>
	<content:encoded>&lt;h2&gt;&lt;strong&gt;Applications are now open for the 2026 Virtual DLF Forum Digital Storytelling Fellows program&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;This year, DLF is launching a new fellowship experience that is directly connected to the Forum’s new Digital Storytelling Presentation session format. The program centers on digital storytelling, emerging technologies, and ethical practice across libraries, archives, and museums, while creating intentional opportunities for participation, reflection, and community engagement in a virtual setting.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;We invite early-career and underrepresented practitioners to participate in the 2026 Virtual DLF Forum and help shape conversations about how stories, platforms, technologies, and communities intersect in our work.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Why Digital Storytelling?&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Digital storytelling projects, including exhibits, platforms, collections, and collaborative archives, are increasingly central to how cultural heritage organizations document, interpret, and share knowledge. These projects also raise important questions about representation, labor, technology, access, and stewardship.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;A cohort of 8–10 Fellows will engage directly with these themes through participation in DLF’s new Digital Storytelling Presentation sessions: interactive, installation-inspired presentations featuring collaboratively developed digital projects and dedicated discussion time. Because this is a new and experimental session type for 2026, the fellowship intentionally builds in structured engagement and feedback to help strengthen the experience and better understand what works in a virtual Forum environment.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Fellows will serve as conversation catalysts during these sessions by contributing questions, reflections, and observations that surface broader themes across the Forum community.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;About the New Session Format&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.diglib.org/digital-storytelling-in-practice-a-new-session-format-for-the-dlf-forum/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;40-minute Digital Storytelling Presentation&lt;/span&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;An interactive session highlighting digital storytelling projects developed through collaborative partnerships. Digital Storytelling Presentations focus on installation-inspired digital storytelling work, such as exhibits, platforms, or collections, designed for immersive and experiential engagement. Sessions may feature up to three presenters, for example, pairing a digital librarian or archivist with a community partner, student, artist, or scholar whose work is represented in, or inspired by, the project. Sessions will be scheduled within 50-minute blocks, leaving dedicated time for Q&amp;amp;A and discussion. Read more about the new session type here: &lt;/span&gt;&lt;a href=&quot;https://www.diglib.org/digital-storytelling-in-practice-a-new-session-format-for-the-dlf-forum/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;https://www.diglib.org/digital-storytelling-in-practice-a-new-session-format-for-the-dlf-forum/&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;What Fellows Receive&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Selected Fellows will receive:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Complimentary registration to the 2026 Virtual DLF Forum&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;A $250 stipend&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Participation in a small cohort of 8–10 Fellows&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;A pre-Forum virtual orientation and meet-and-greet&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Visibility through publication on the DLF blog&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;b&gt;Fellowship Expectations&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Fellows will:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Participate in a virtual orientation session on October 6, 2026&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Attend the 2026 Virtual DLF Forum on October 14–15, 2026&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Engage actively in Digital Storytelling Presentation sessions by:&lt;/span&gt;
&lt;ul&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Asking questions in chat or live discussion&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Optionally sharing brief verbal reflections during session discussions&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Incorporating insights from storytelling sessions into their post-Forum reflection&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Participate in a virtual debrief session and/or complete a feedback survey&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Contribute a short public reflection for publication on diglib.org (up to 1,000 words, due November 15, 2026)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Reflections may explore themes such as ethical technology, collaborative storytelling, digital exhibits, community memory, access, or emerging questions around provenance and stewardship.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Selected Fellows must attend the Forum in order to receive the stipend. &lt;/span&gt;&lt;a href=&quot;https://forms.gle/mmfY1LB68Ru7vzX56&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Apply here. &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Who Should Apply&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;We welcome applications from:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Early-career professionals (fewer than 7 years of experience)&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Students and recent graduates&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Contingent, contract, and adjunct practitioners&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Professionals working in under-resourced or capacity-limited institutions&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;First-time DLF Forum attendees&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Practitioners whose identities and perspectives are historically underrepresented in digital libraries and cultural heritage spaces&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;We recognize that professional pathways are not always linear. If you are unsure whether you meet these criteria, we still encourage you to apply.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Application Process&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;The application process is designed to be straightforward and accessible. Applicants will:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Answer a few short questions&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Submit a brief personal statement (maximum 4,000 characters)&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Share a link to an online professional profile, if available&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Application available here: &lt;a href=&quot;https://forms.gle/MEzG6cN8oBQRaPqL6&quot;&gt;Google Form&lt;/a&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Applications Close &lt;/b&gt;&lt;b&gt;Tuesday, July 21, 2026, at 11:59 pm ET&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://www.diglib.org/2026-virtual-dlf-forum-digital-storytelling-fellows/&quot;&gt;2026 Virtual DLF Forum Digital Storytelling Fellows&lt;/a&gt; appeared first on &lt;a href=&quot;https://www.diglib.org&quot;&gt;DLF&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-23T12:00:28+00:00</dc:date>
	<dc:creator>swillis</dc:creator>
</item>
<item rdf:about="https://www.tigrisdata.com/blog/objgit/">
	<title>Xe Iaso: I taught a bucket to speak git</title>
	<link>https://www.tigrisdata.com/blog/objgit/</link>
	<content:encoded>&lt;p&gt;What happens if I just point a git server at an object storage bucket?&lt;/p&gt;
        &lt;p&gt;Back when I was porting
        &lt;a href=&quot;https://www.tigrisdata.com/blog/agent-sandbox-go/&quot;&gt;agent sandboxes to Go&lt;/a&gt;, I
        built everything on top of
        &lt;a href=&quot;https://pkg.go.dev/github.com/go-git/go-billy/v6&quot;&gt;billy&lt;/a&gt;, a filesystem
        abstraction for Go. The whole trick of the project was teaching a Tigris bucket
        to act enough like a filesystem that a shell interpreter and its tools couldn’t
        tell the difference. Billy was the key layer that made the entire façade fall
        into place.&lt;/p&gt;
        &lt;p&gt;After I had gotten things working, I learned that I’m using billy way outside
        its normal usecase. It was originally made for
        &lt;a href=&quot;https://pkg.go.dev/github.com/go-git/go-git/v6&quot;&gt;go-git&lt;/a&gt;, a pure-Go
        implementation of git’s protocols and data formats. It doesn’t rely on the
        &lt;code&gt;/usr/bin/git&lt;/code&gt; binary existing at all. Every method on billy’s filesystem
        interface exists purely because go-git needs it. This gave me a terrible idea: I
        already have a bucket that can quack like a filesystem and go-git’s native
        language is “filesystem”.&lt;/p&gt;
        &lt;p&gt;Can this Just Work™? Let's find out.&lt;/p&gt;
        &lt;h2&gt;Git was always an object store&lt;/h2&gt;
        &lt;p&gt;If you strip away the porcelain, a git repository is 4 basic things:&lt;/p&gt;
        &lt;ul&gt;
        &lt;li&gt;Objects, or compressed blobs of data. Most of the objects in any individual
        repository are files.&lt;/li&gt;
        &lt;li&gt;Trees, or objects that map to other objects. TL;DR: trees are folders.&lt;/li&gt;
        &lt;li&gt;Commits, or objects that point at one tree and their parent commit. This lets
        you pin down which files belong to one logical change set.&lt;/li&gt;
        &lt;li&gt;Refs, branches and tags, they are tiny mutable pointers into the pile of
        objects.&lt;/li&gt;
        &lt;/ul&gt;
        &lt;div class=&quot;not-prose mx-auto my-6 flex gap-4 rounded-lg border p-4 max-w-lg bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-500/30&quot;&gt;&lt;div class=&quot;mt-1 flex-shrink-0 text-blue-500&quot;&gt;&lt;svg class=&quot;w-6 h-6&quot; fill=&quot;none&quot; height=&quot;24&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;24&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4&quot;&gt;&lt;/path&gt;&lt;polyline points=&quot;14 2 14 8 20 8&quot;&gt;&lt;/polyline&gt;&lt;path d=&quot;M2 15h10&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M2 19h5&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div class=&quot;flex-grow&quot;&gt;&lt;h3 class=&quot;text-lg font-semibold text-blue-800 dark:text-blue-300&quot;&gt;Note&lt;/h3&gt;&lt;div class=&quot;prose prose-sm dark:prose-invert max-w-none text-gray-700 dark:text-gray-300 mt-2&quot;&gt;&lt;p&gt;Until I started working on this I was under the impression that git stored
        only the patches done to an empty folder and that was how it reconstructed the
        history of your repository. It does not. It actually keeps track of the entire
        files, which explains why big binary blobs fudge the tooling so much. The diff
        mental model works fine for using git day to day; it’s just wrong at the
        storage layer, which is the layer this post lives in.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
        &lt;p&gt;For example, let’s say I just made a new git repository and committed a
        README.md to it. The tree for the &lt;code&gt;.git&lt;/code&gt; folder looks something like this:&lt;/p&gt;
        &lt;pre&gt;&lt;code class=&quot;code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;$ tree .git
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;.git
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;├── COMMIT_EDITMSG
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;├── config
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;├── HEAD
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;├── index
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;├── objects
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;│   ├── 5e
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;│   │   └── b8151eb669aa4467b6dea2c4bce19183cd0b41
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;│   ├── 6a
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;│   │   └── 6a8ecfcae2632152486aca3d9150ef83dedd66
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;│   ├── f4
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;│   │   └── d2487a1c6d742c8037c0296ddf80625190bd80
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;│   ├── info
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;│   └── pack
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;└── refs
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;    ├── heads
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;    │   └── main
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;    └── tags
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;As you can see there are three objects. One of them is the commit
        &lt;code&gt;5eb8151eb669aa4467b6dea2c4bce19183cd0b41&lt;/code&gt;, the next is the tree, and the last
        one is the README file. The &lt;code&gt;main&lt;/code&gt; branch also points to that commit:&lt;/p&gt;
        &lt;pre&gt;&lt;code class=&quot;code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;$ cat .git/refs/heads/main
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;5eb8151eb669aa4467b6dea2c4bce19183cd0b41
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;The cool part is that half of this is content-addressed. The content-addressed
        bits &lt;em&gt;never change&lt;/em&gt; once they’ve been committed. Git objects are a great fit for
        Tigris’ internal model because they are append-only storage, just like
        &lt;a href=&quot;https://www.tigrisdata.com/blog/append-only-storage/&quot;&gt;the fundamental model Tigris is built upon&lt;/a&gt;.
        The things that do change often are the refs, which are updated to point to the
        latest commit. These are &lt;em&gt;tiny&lt;/em&gt; files though, which means that Tigris can handle
        them with no effort required.&lt;/p&gt;
        &lt;p&gt;However, when we host git repositories on a server, we end up creating single
        points of failure. Our git repos are hosted on single machines that can and will
        break. The entire implementation relies on git objects being 1:1 correlated with
        filesystem objects because everyone (even GitHub) shells out to the git binary
        to actually store files. Hosting git repos becomes one of the most stateful
        services in our stateless cloud-native environment.&lt;/p&gt;
        &lt;p&gt;Sure git is in-theory decentralized, but most of us have ended up using that to
        put our git repositories in one big store that has questionable uptime
        practices: GitHub. To be fair to hubbers, GitHub operates at a scale that none
        of us can really think about. They’ve been pushing the limits since their
        inception where they had to get Engine Yard to keep building them bigger servers
        to handle the load. They have to do everything with a big mounted filesystem
        because git’s tooling gives them no other option.&lt;/p&gt;
        &lt;h2&gt;A travesty of horrors beyond human comprehension&lt;/h2&gt;
        &lt;p&gt;Now suppose this weirdness bothers you enough to do something about it. To build
        a git server &lt;strong&gt;without&lt;/strong&gt; storing everything in the local filesystem, you have to
        speak git somehow, and the conventional options aren’t really all that great:&lt;/p&gt;
        &lt;ul&gt;
        &lt;li&gt;If you shell out to the git binary, now your “library” is the argv of the git
        process and your error handling is screen-scraping output. Internally, git
        implements its functionality with a billionty subcommands rather than exposing
        it all as a library. The codebase is held together by load-bearing calls to
        &lt;code&gt;die()&lt;/code&gt;, which kills the process.&lt;/li&gt;
        &lt;li&gt;If you link into git’s guts with &lt;code&gt;libgit&lt;/code&gt;, you inherit the “when things go
        bad, &lt;code&gt;die()&lt;/code&gt;” behaviour and your app now suddenly starts crashing at random.
        This is not good for uptime.&lt;/li&gt;
        &lt;li&gt;If you try to use &lt;code&gt;libgit2&lt;/code&gt; (the rewrite-that’s-actually-a-library), you have
        to reckon with the fact that it’s addled by the GPL (with a linking exception,
        try explaining that to your lawyers), you have to eat the jump to C every time
        you do anything with git (very often), development has stalled, the Go
        bindings have been archived, and it still assumes a local filesystem despite
        assurances it does not.&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;It might sound hopeless, right? You may be able to use WebAssembly or something
        to contain the madness (assuming you have a good way to implement
        &lt;code&gt;fork()&lt;/code&gt;/&lt;code&gt;exec()&lt;/code&gt; or &lt;code&gt;posix_spawn()&lt;/code&gt; or something similar), but what if there
        was a pure Go library that could handle this all for us?&lt;/p&gt;
        &lt;p&gt;Enter &lt;a href=&quot;https://pkg.go.dev/github.com/go-git/go-git/v6&quot;&gt;go-git&lt;/a&gt;, a pure-go
        implementation of the git protocol and internals from scratch. This doesn’t rely
        on cgo or &lt;code&gt;/usr/bin/git&lt;/code&gt; and it does not assume the repositories are stored in
        the local filesystem. Its storage interface is written against billy, the exact
        interface I’ve already taught to speak Tigris. I wanted a git server that was
        just in a bucket and the pieces were sitting there and calling to me.&lt;/p&gt;
        &lt;h2&gt;Oh no, it works&lt;/h2&gt;
        &lt;p&gt;So I hacked up &lt;a href=&quot;https://github.com/tigrisdata/objgit&quot;&gt;objgit&lt;/a&gt;, a git server
        backed by object storage. The only filesystem call I had to add to get it
        booting was &lt;code&gt;MkdirAll&lt;/code&gt;. I wired up the
        &lt;a href=&quot;https://pkg.go.dev/github.com/go-git/go-git/v6/plumbing/transport&quot;&gt;&lt;code&gt;transport&lt;/code&gt;&lt;/a&gt;
        package to a socket to implement the plaintext &lt;code&gt;git&lt;/code&gt; protocol, hooked it up to a
        bucket, and pushed the repo I was currently working on.&lt;/p&gt;
        &lt;p&gt;To my absolute astonishment, it worked.&lt;/p&gt;
        &lt;p&gt;Git pushed, pulled, logged, blamed, tagged, the whole kit and kaboodle. I didn’t
        have to implement git myself, I just committed an egregious amount of shoving a
        square peg into a round hole until the peg went in.&lt;/p&gt;
        &lt;p&gt;In hindsight this makes an annoying amount of sense. A bare repo is those four
        kinds of things on a filesystem; swap the filesystem for object storage and
        everything else Just Working™ is perfectly logical. Git’s on-disk format &lt;em&gt;is&lt;/em&gt;
        its database schema and if you fake open/stat/rename convincingly enough the
        entire façade keeps working because APIs are the lies we tell ourselves to make
        us sleep at night.&lt;/p&gt;
        &lt;p&gt;After a lot of hacking, I ended up with a feature list kinda like this:&lt;/p&gt;
        &lt;ul&gt;
        &lt;li&gt;Push and pull over three transports: HTTP, classic &lt;code&gt;git://&lt;/code&gt;, and SSH&lt;/li&gt;
        &lt;li&gt;Repositories upserted on first push&lt;/li&gt;
        &lt;li&gt;Absolutely no effort put into authentication as this is an experiment and
        authentication is annoying and complicated&lt;/li&gt;
        &lt;li&gt;Prometheus metrics so I could optimize the filesystem layer&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;Everything comes out of one Go binary with no local state, even the generated
        SSH keys are stored in the bucket. You can run this in a Kubernetes cluster with
        only the mutable storage required being temporary files for an optimistic cache
        when doing smart git clones.&lt;/p&gt;
        &lt;p&gt;The rest of this post is what it took to get from “oh no, it works” to something
        close to usable.&lt;/p&gt;
        &lt;p&gt;Obligatory disclaimer (like the best things in life): this is an experiment. It
        has not been tested thoroughly or vetted for correctness. If it breaks in half,
        you get to keep both pieces. Please do not move your company’s monorepo onto
        this and then email me when it catches fire.&lt;/p&gt;
        &lt;h2&gt;That one POSIX idiom that survived&lt;/h2&gt;
        &lt;p&gt;Git is paranoid about durability, and its entire strategy is one Unix idiom that
        you end up seeing many places: write new data to a temporary file and then
        &lt;code&gt;rename(2)&lt;/code&gt; it into place after you’ve assured it’s correct. POSIX guarantees
        that rename is atomic, so readers either see the old file or the new one, not an
        intermediate state inbetwixt the two. Packfiles (bundles of objects) land as
        temporary files when uploaded then moved to their permanent home. Refs are
        written as locked temporary files and then renamed over the ref. It’s rename all
        the way down.&lt;/p&gt;
        &lt;p&gt;Object storage traditionally does not have rename as one atomic operation. S3’s
        answer is to create exactly that intermediate state: &lt;code&gt;CopyObject&lt;/code&gt; to the new
        place and &lt;code&gt;DeleteObject&lt;/code&gt; on the old one. This makes the most load-bearing idiom
        in Git’s philosophy fall to pieces.&lt;/p&gt;
        &lt;p&gt;Luckily, Tigris has an extension for this:
        &lt;a href=&quot;https://www.tigrisdata.com/docs/objects/object-rename&quot;&gt;&lt;code&gt;RenameObject&lt;/code&gt;&lt;/a&gt;. To use
        it, pass an additional &lt;code&gt;X-Tigris-Rename: true&lt;/code&gt; header to a &lt;code&gt;CopyObject&lt;/code&gt; call and
        instead of copying then deleting on the client, it moves the metadata around on
        the server. One round trip, no data movement, and the Unix idiom maps on the
        bucket 1:1. Objgit’s implementation of &lt;code&gt;Rename&lt;/code&gt; is trivial:&lt;/p&gt;
        &lt;pre class=&quot;language-go&quot;&gt;&lt;code class=&quot;language-go code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// internal/s3fs/basic.go&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// RenameObject is a Tigris extension that renames in place (no data copy),&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// so we don't need a separate CopyObject + DeleteObject.&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;copySource &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; fs3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bucket &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;/&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; src
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token boolean&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;:=&lt;/span&gt; fs3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;client&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;RenameObject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;s3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;CopyObjectInput&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;    Bucket&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;fs3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bucket&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;    CopySource&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;copySource&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;    Key&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;        &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;dst&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;A second, sneakier violation hides in the same codepath. When go-git writes a
        temporary file, it creates that temporary file and then &lt;strong&gt;immediately&lt;/strong&gt; starts
        opening it for reading so it can build the pack index. You cannot do that with a
        single live object in any object storage system, you are either reading or
        writing, never both. I ended up working around this by cheating a bit and
        buffering the contents of newly written pack files into memory so that this game
        of chicken kept working. I may have to change this to write that pack cache to
        the filesystem as trying to push &lt;code&gt;gcc.git&lt;/code&gt; made me run out of RAM. At the very
        least, everything lies consistently enough that git doesn’t care, so win!&lt;/p&gt;
        &lt;h2&gt;Death by a thousand &lt;code&gt;stat()&lt;/code&gt; calls&lt;/h2&gt;
        &lt;p&gt;With this correctness sorted, I tried pushing the
        &lt;a href=&quot;https://github.com/golang/go&quot;&gt;golang/go&lt;/a&gt; repository to objgit to see how long
        it would take. It did work, but it took &lt;em&gt;forever&lt;/em&gt;. Using the prometheus metrics
        I mentioned before, I saw that it was making biblical amounts of &lt;code&gt;HeadObject&lt;/code&gt;
        calls. Some blocking profile analysis pointed to the fact that the git library
        was using the &lt;code&gt;stat()&lt;/code&gt; call to detect if a file exists. The flow was like:&lt;/p&gt;
        &lt;ul&gt;
        &lt;li&gt;Client has object x&lt;/li&gt;
        &lt;li&gt;Check if object x exists&lt;/li&gt;
        &lt;li&gt;Check if any pack has object x&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;And so on ad infinitum. This is fine-ish on a local filesystem because those
        syscalls resolve in &lt;em&gt;microseconds&lt;/em&gt;, not the tens of milliseconds it takes to get
        from my office to the nearest Tigris region (please expand to Ottawa, I would
        love that so much).&lt;/p&gt;
        &lt;p&gt;This was compounded with a discovery that the transport I was using (SSH —
        classic &lt;code&gt;git://&lt;/code&gt; shares the same code path) was exploding every packfile into
        &lt;em&gt;loose objects&lt;/em&gt; when pushing it. Each loose object write was costing two round
        trips: &lt;code&gt;stat()&lt;/code&gt; to check if a file exists and then &lt;code&gt;open()&lt;/code&gt; / &lt;code&gt;write()&lt;/code&gt; to
        actually put the data into Tigris. This made a 100,000 object packfile cost
        200,000 object storage calls. Call it 10ms of latency for each one, and that’s
        over half an hour of waiting for responses that mostly say “404 not found”.&lt;/p&gt;
        &lt;p&gt;Caching can’t really save you here either, read caches would absorb the repeated
        reads; but this is a firehose of &lt;em&gt;writes&lt;/em&gt; to 100,000 paths that probably have
        never been read and likely will never be seen again.&lt;/p&gt;
        &lt;p&gt;The reason only two transports had this problem is a deadlock story. The git
        library's fast path stores an incoming pack whole through its &lt;code&gt;PackfileWriter&lt;/code&gt;,
        by copying from the connection until &lt;code&gt;io.EOF&lt;/code&gt;. Over HTTP that's fine: the
        request body ends, EOF arrives, everyone goes home. Over &lt;code&gt;git://&lt;/code&gt; and SSH, the
        connection is a persistent socket and the client is holding it open, politely
        waiting for the server's status report. EOF never comes. The copy waits forever,
        the client waits forever, and you have invented a distributed deadlock with two
        participants. The original workaround was to hide the &lt;code&gt;PackfileWriter&lt;/code&gt;
        capability on those transports so go-git fell back to its streaming parser that
        writes every object loose. Hence the stat storm.&lt;/p&gt;
        &lt;p&gt;So the solution was to stop depending on EOF at all. Packfiles are
        self-delimiting: the header says how many objects are coming and a trailing
        checksum marks the end, so a packfile scanner walks the stream and stops at the
        trailer while a &lt;code&gt;TeeReader&lt;/code&gt; mirrors exactly those bytes into the
        &lt;code&gt;PackfileWriter&lt;/code&gt;. This makes the rest of the façade fall into place and the git
        library is happy. This made pushes into two uploads: a packfile and its index
        instead of a torrent of round trips that mean nothing.&lt;/p&gt;
        &lt;h2&gt;What about cloning?&lt;/h2&gt;
        &lt;p&gt;Once I got pushing fixed, I moved on to the read path. In order to emulate
        &lt;code&gt;ReadAt&lt;/code&gt;, I used ranged &lt;code&gt;GetObject&lt;/code&gt; requests so that the git library could read
        individual objects out of packfiles. I was happy with this hack, but there was
        one problem: the latency curse struck again. Cloning a simple repo with 318
        objects and a 200KiB packfile made over 8,500 &lt;code&gt;GetObject&lt;/code&gt; calls before I killed
        it.&lt;/p&gt;
        &lt;p&gt;A git client cloning a repository reads repository packfiles thousands of times
        with random access, walking objects and candidate delta bases over and over. On
        a local disk you never notice because your page cache eats that for breakfast.
        When every call is an HTTP request, a 200KiB repo turns into dozens of megabytes
        of round trips. A 20MiB repo was effectively unservable.&lt;/p&gt;
        &lt;p&gt;In other words, I had un-cached the one workload that caching was designed to
        solve.&lt;/p&gt;
        &lt;p&gt;The fix leans on a gift from git: pack files are immutable and
        content-addressed. &lt;code&gt;pack-&amp;lt;sha&amp;gt;.pack&lt;/code&gt; will &lt;em&gt;never&lt;/em&gt; change for as long as it
        exists. This makes them trivially cacheable to a faster local medium, such as
        the filesystem. No invalidation logic is required. I made objgit download packs
        to a local temporary folder and serve reads from there. To be on the safe side,
        I did add least-recently-used caching to the mix so that my temp folder wouldn’t
        blow up unexpectedly. This does mean that the first request for pack files is
        slower, but then everything else is at filesystem speed.&lt;/p&gt;
        &lt;p&gt;Yes, this relies on the local disk again, but only as a cache that can and will
        be thrown away. I think trading a stateless ideal for clones that terminate in
        reasonable amounts of time is a worthwhile bargain.&lt;/p&gt;
        &lt;h2&gt;Why so &lt;code&gt;ListObjectsV2&lt;/code&gt;, Batman?&lt;/h2&gt;
        &lt;p&gt;Once the other disasters were out of the way, one more remained: the metrics
        showed a flood of &lt;code&gt;ListObjectsV2&lt;/code&gt; calls every time a clone was made and didn’t
        stop making those calls after it was done.&lt;/p&gt;
        &lt;p&gt;Two things compounded. First, when git looks up an object that isn't packed, it
        probes for a loose object at &lt;code&gt;objects/&amp;lt;xx&amp;gt;/&amp;lt;rest-of-hash&amp;gt;&lt;/code&gt;. objgit keeps packs
        whole, so there are no loose objects, so every probe misses, and each miss
        across a distinct two-hex prefix triggered a directory listing to find out.
        There are 256 possible prefixes. A single clone could issue up to 256
        &lt;code&gt;ListObjectsV2&lt;/code&gt; calls whose collective answer was a resounding &quot;there is nothing
        here.&quot;&lt;/p&gt;
        &lt;p&gt;Second (and more embarrassing), the listing cache already had an optimization
        for this. It collapsed entire subtree lookups into recursive scans so a single
        listing of the repository could answer every stat() and probe beneath it. It was
        completely dead in production. The cache matched recursive prefixes against the
        repo root (&lt;code&gt;refs/&lt;/code&gt;), but every repo is chrooted to its own directory, so real
        keys look like &lt;code&gt;myrepo.git/refs/heads/main&lt;/code&gt;. The prefix check wasn’t aware of
        chroots so it never actually matched anything. Nobody noticed because a cache
        that degrades to “no caching” still returns the correct answer, just slowly. To
        rub it in, a cache warmer was dutifully re-listing every one of those useless
        prefixes every 30 seconds for 10 minutes after each clone. Thousands of
        background list calls were burned in the service of caching nothing of use.&lt;/p&gt;
        &lt;p&gt;The fix was insultingly small: when a repo’s filesystem gets chrooted, register
        that chroot as a recursive subtree root within the cache. This made the cache
        actually useful and resulted in only one &lt;code&gt;ListObjectsV2&lt;/code&gt; call instead of
        hundreds. Every sufficiently advanced cache is indistinguishable from a no-op
        until someone graphs the miss rate.&lt;/p&gt;
        &lt;p&gt;None of these disasters were exotic. They’re the things filesystems and kernels
        give you for free — and every perfectly reasonable disk assumption fell to
        pieces once a network round trip sat at the core. Serving Git repositories is an
        accidental filesystem latency benchmark. If your storage abstraction has a weak
        point, Git &lt;em&gt;will&lt;/em&gt; find it and the metrics will show you where that problem is.&lt;/p&gt;
        &lt;h2&gt;Post-receive hooks go in clown jail&lt;/h2&gt;
        &lt;p&gt;One of the most useful parts of hosting your own git server is setting up
        post-receive hooks. These have been used since time immemorial for things like
        &lt;a href=&quot;https://gist.github.com/nonbeing/f3441c96d8577a734fa240039b7113db&quot;&gt;automatic deployments&lt;/a&gt;
        when you push code to the server. The heart of this is how we get systems like
        GitHub Actions: it’s code that runs when you are done pushing.&lt;/p&gt;
        &lt;p&gt;When you push to objgit with &lt;code&gt;--allow-hooks&lt;/code&gt; enabled, it looks for a
        post-receive hook in &lt;code&gt;.objgit/hooks/receive-pack&lt;/code&gt; (this corresponds to the git
        plumbing action, the name can and will be changed) in the tree of the commit you
        just pushed. It will then spin up a
        &lt;a href=&quot;https://xeiaso.net/blog/2026/dancing-mad-sandboxing/&quot;&gt;kefka&lt;/a&gt; sandbox with a
        checkout of the git repository at the commit you just pushed mounted at &lt;code&gt;/src&lt;/code&gt;
        and mutable temporary files at &lt;code&gt;/tmp&lt;/code&gt;. It gets coreutils and nothing else. No
        host filesystem, no network, no arbitrary binaries. Output streams back into the
        pusher as &lt;code&gt;remote:&lt;/code&gt; lines just like when you &lt;code&gt;git push heroku main&lt;/code&gt;. Eventually
        I want to make custom commands to allow you to deploy
        &lt;a href=&quot;https://tekton.dev/&quot;&gt;Tekton&lt;/a&gt; pipeline changes and kick off CI jobs that way,
        but for now I’m happy with this working at all.&lt;/p&gt;
        &lt;p&gt;You can’t implement policy using these hooks yet. I’m working on it.&lt;/p&gt;
        &lt;h2&gt;Now what?&lt;/h2&gt;
        &lt;p&gt;I taught a bucket to speak git. Where this goes next, roughly in order of how
        much the ideas keep me up at night.&lt;/p&gt;
        &lt;p&gt;CI is the obvious next step. I would wire up commands for things like “apply
        kubernetes object” and “create tekton pipeline run” so that CI would run via
        your friendly neighborhood Kubernetes cluster and then notify you through some
        reasonable mechanism. That’s the first thing I’ll build when I have the time.&lt;/p&gt;
        &lt;p&gt;It would be nice to have a web UI for this, which is complicated for reasons
        that have &lt;em&gt;nothing&lt;/em&gt; to do with git trees, object storage, or anything else and
        everything to do with the current state of the internet. Git lookups are
        expensive in the best cases and with the current torrent of unethical scraping
        ransacking git servers for every scrap of RAM they have, it’s probably a bad
        idea to implement this without a lot of clever optimizations. Maybe the fact
        that this doesn’t have load-bearing dependencies on &lt;code&gt;/usr/bin/git&lt;/code&gt; would make it
        more resilient against scrapers. The fact that this is based on object storage
        could also mean that caching would be a bit easier (having basically unlimited
        storage is kind of a low-key superpower for caching), but then the main issue
        would be server load. It’s a tough cookie to handle.&lt;/p&gt;
        &lt;p&gt;Performance and stability are another place this needs to improve. I’ve tested
        this on my developer workstation but that is far different from testing it in
        production. There’s some other performance issues that are easy to fix, but the
        big one is latency to Tigris. Maybe I can get the devops team to set me up a
        &lt;a href=&quot;https://rancher.github.io/k3k-product-docs/k3k/latest/en/introduction.html&quot;&gt;k3k cluster&lt;/a&gt;
        in production.&lt;/p&gt;
        &lt;p&gt;Right now this is an experiment as I plug along and feel out the shape of what
        git-on-object-storage can be. A git server with no disk, no git binary, and no
        database. If you want to take a look,
        &lt;a href=&quot;https://github.com/tigrisdata/objgit&quot;&gt;check it out on GitHub&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-23T00:00:00+00:00</dc:date>
</item>
<item rdf:about="https://meredith.wolfwater.com/wordpress/?p=4955">
	<title>Meredith Farkas: Slow management in a fast world</title>
	<link>https://meredith.wolfwater.com/wordpress/2026/06/22/slow-management-in-a-fast-world/</link>
	<content:encoded>&lt;p&gt;Last month, I had the great pleasure of keynoting the CALM (Conference on Academic Library Management) Conference, which is consistently one of my favorites. The video of my talk, &lt;em&gt;&lt;a href=&quot;https://youtu.be/frkgyhEERfs?si=T5X02RoiBnW5ka8x&amp;amp;t=1871&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Slow Management in a Fast World&lt;/a&gt;&lt;/em&gt;, is available below for those who would like to check it out! You can also &lt;a href=&quot;http://tinyurl.com/calmslow&quot;&gt;view my slides here&lt;/a&gt; which include a long bibliography of works that influenced my talk at the end.&lt;/p&gt;



&lt;figure class=&quot;wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio&quot;&gt;&lt;div class=&quot;wp-block-embed__wrapper&quot;&gt;

&lt;/div&gt;CALM Conference opening Keynote: Slow Management in a Fast World&lt;/figure&gt;



&lt;p&gt;Many thanks to all the amazing folks who organized this conference; it was such an honor and a pleasure to be part of it!&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-22T19:33:43+00:00</dc:date>
	<dc:creator>Meredith Farkas</dc:creator>
</item>
<item rdf:about="https://inkdroid.org/2026/06/22/bookmarks/">
	<title>Ed Summers: Bookmarks - book, ai, map, llm</title>
	<link>https://inkdroid.org/2026/06/22/bookmarks/</link>
	<content:encoded>These are some things I’ve wandered across on the web this week.
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://www.rfc-editor.org/info/rfc9958/&quot;&gt;
RFC 9958: Post-Quantum Cryptography for Engineers &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
The advent of a cryptographically relevant quantum computer (CRQC) would
render state-of-the-art, traditional public key algorithms deployed
today obsolete, as the mathematical assumptions underpinning their
security would no longer hold. To address this, protocols and
infrastructure must transition to post-quantum algorithms, which are
designed to resist both traditional and quantum attacks. This document
explains why engineers need to be aware of and understand post-quantum
cryptography (PQC), and it details the impact of CRQCs on existing
systems and the challenges involved in transitioning to post-quantum
algorithms. Unlike previous cryptographic updates, this shift may
require significant protocol redesign due to the unique properties of
post-quantum algorithms.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/cryptography/&quot; rel=&quot;tag&quot;&gt;cryptography&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ietf/&quot; rel=&quot;tag&quot;&gt;ietf&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/standard/&quot; rel=&quot;tag&quot;&gt;standard&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://app.electricitymaps.com&quot;&gt;
ElectricityMaps &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
At Electricity Maps, we’re data scientists, first and foremost.
&lt;/p&gt;
Data comes in from many sources, and in many formats. We ingest and
harmonize it, apply our models to it, and make it available to the
world. This is the place to learn more about our data; read FAQs, or
deep dive in our methodology.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/electricity/&quot; rel=&quot;tag&quot;&gt;electricity&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/energy/&quot; rel=&quot;tag&quot;&gt;energy&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/geo/&quot; rel=&quot;tag&quot;&gt;geo&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/map/&quot; rel=&quot;tag&quot;&gt;map&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/vis/&quot; rel=&quot;tag&quot;&gt;vis&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://github.com/internetarchive/scholar/tree/trunk/blobproc&quot;&gt;
BLOBPROC &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
BLOBPROC is a less kafkaesque version of PDF postprocessing found in
sandcrawler, which is part of IA Scholar infra. Specifically it is
designed to process and persist documents with minimum number of
external components and little to no state.
&lt;/p&gt;
The goal is to have artifacts (fulltext, thumbnails, metadata, …)
derived from millions of PDF files available in a storage system
(e.g. S3). In the best case, the artifacts can be kept up to date in an
unattended way
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/metadata/&quot; rel=&quot;tag&quot;&gt;metadata&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/pdf/&quot; rel=&quot;tag&quot;&gt;pdf&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/webarchive/&quot; rel=&quot;tag&quot;&gt;webarchive&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://evilmartians.com/chronicles/ai-assisted-engineers-are-burning-out-is-this-fine&quot;&gt;
AI-assisted engineers are burning out, is this fine? &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
We’re more productive than ever. AI allows us to generate code at
supersonic speeds, unfold entire modules in seconds, and ship thousands
of lines of code. It’s easier to pick up tasks and generate value, even
in unfamiliar codebases. But there’s a dark side. AI-assisted code
generation isn’t free; there’s a hidden cost that we as an industry are
only beginning to realize: AI burnout. Are we dangerously ignorant to
this problem? And how can we cope with it?
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ai/&quot; rel=&quot;tag&quot;&gt;ai&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/labor/&quot; rel=&quot;tag&quot;&gt;labor&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/programming/&quot; rel=&quot;tag&quot;&gt;programming&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/work/&quot; rel=&quot;tag&quot;&gt;work&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.richardosgood.com/posts/banned-book-library/&quot;&gt;
Banned Book Library &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
A long while back I had an idea to hack a WiFi smart light bulb to do
something more useful to me. Actually, I had a few different ideas of
things to do with them. One of these ideas was to modify the device to
have an open WiFi access point and a web server hosting banned books.
The idea was that if you lived somewhere that banned books you thought
were important, you could theoretically stick a digital copy of the book
on one of these light bulbs. Then you could go install it somewhere in
your community
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/arguing/&quot; rel=&quot;tag&quot;&gt;arguing&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/book/&quot; rel=&quot;tag&quot;&gt;book&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/censorship/&quot; rel=&quot;tag&quot;&gt;censorship&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/embedded/&quot; rel=&quot;tag&quot;&gt;embedded&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/web/&quot; rel=&quot;tag&quot;&gt;web&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://benbrown.com/library/&quot;&gt; Library by
Ben Brown &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
Library
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/book/&quot; rel=&quot;tag&quot;&gt;book&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/library/&quot; rel=&quot;tag&quot;&gt;library&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.mcsweeneys.net/articles/ai-economics-for-dummies&quot;&gt;
AI Economics for Dummies &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
As AI companies get ready to go public and we get a deeper look at their
inner workings, it’s only natural to have questions about their
finances, like “Do they make money?” and “How?” Here are a few examples
to help the average layperson understand the business side of AI.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ai/&quot; rel=&quot;tag&quot;&gt;ai&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/humor/&quot; rel=&quot;tag&quot;&gt;humor&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/scifi/&quot; rel=&quot;tag&quot;&gt;scifi&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://www.jerrysmap.com/&quot;&gt; Jerry’s Map &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
… the Map is now a two-dimensional “virtual world” art project which is
now comprised of over 4000 individual eight by ten inch panels. When
assembled, these panels form an approximate circle. The panel locations
are defined by N, S, E, and W coordinates that originate at the center
of the circle. The locations in the matrix do not change, but the panels
themselves are continually revised based on instructions drawn from the
artist’s custom deck of cards.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/art/&quot; rel=&quot;tag&quot;&gt;art&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/game/&quot; rel=&quot;tag&quot;&gt;game&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/map/&quot; rel=&quot;tag&quot;&gt;map&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/random/&quot; rel=&quot;tag&quot;&gt;random&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://youtu.be/Is8N7B9b0GQ&quot;&gt; He won’t stop
building a map to an imaginary place. &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
The remarkable story of Jerry Gretzinger and the map he’s dedicated his
life to making.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/map/&quot; rel=&quot;tag&quot;&gt;map&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/video/&quot; rel=&quot;tag&quot;&gt;video&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://github.com/ChaitanyaK77/Building-a-Small-Language-Model-SLM-&quot;&gt;
Building a Small Language Model (SLM) &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
A step-by-step Jupyter Notebook demonstrating how to build and train a
compact small language model (“SLM”) from scratch using the TinyStories
dataset. Covers data preparation, BPE tokenization, efficient binary
storage, GPU memory locking, Transformer architecture, training
configuration, and sample text generation.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/llm/&quot; rel=&quot;tag&quot;&gt;llm&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/python/&quot; rel=&quot;tag&quot;&gt;python&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/slm/&quot; rel=&quot;tag&quot;&gt;slm&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.theguardian.com/books/2026/jun/15/togetherness-by-rowan-hooper-review-a-stunning-portrait-of-cooperation-in-nature&quot;&gt;
Togetherness by Rowan Hooper review – a stunning portrait of cooperation
in nature &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
Hooper adores Darwin – his account of visiting Darwin’s Kent residence
Down House radiates reverence (“it’s a pseudo-religious experience”).
But he feels that Darwinism and its union with genetics in the so-called
“modern synthesis” has placed undue emphasis on competition in the
natural world and underplayed the roles of cooperation and
collaboration. In redressing that imbalance, Togetherness is not an
attempt to make evolution cuddlier and more palatable; rather, it is a
corrective deeply informed by what we have learned since Darwin about
how nature works. Written with immense charm and passion, and packed
with eye-popping facts, it is also a paean to the wonders of nature and
the value and urgency of preserving them.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/book/&quot; rel=&quot;tag&quot;&gt;book&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/cooperation/&quot; rel=&quot;tag&quot;&gt;cooperation&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/evolution/&quot; rel=&quot;tag&quot;&gt;evolution&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/nature/&quot; rel=&quot;tag&quot;&gt;nature&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/science/&quot; rel=&quot;tag&quot;&gt;science&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://a-hidden-infrastructure.spun.earth/&quot;&gt;
A hidden infrastructure &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
Underground networks
&lt;/p&gt;
&lt;p&gt;
Beneath our feet lie networks of invisible ecosystem engineers:
arbuscular mycorrhizal (AM) fungi.
&lt;/p&gt;
&lt;p&gt;
These fungi form trading relationships with more than 70% of plant
species, building networks of tubular cells called hyphae that extend
the surface area of root systems up to a hundred-fold.
&lt;/p&gt;
Collectively, these networks comprise one of Earth’s circulatory
systems.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/fungi/&quot; rel=&quot;tag&quot;&gt;fungi&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/life/&quot; rel=&quot;tag&quot;&gt;life&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/map/&quot; rel=&quot;tag&quot;&gt;map&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/network/&quot; rel=&quot;tag&quot;&gt;network&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/vis/&quot; rel=&quot;tag&quot;&gt;vis&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.library.hbs.edu/working-knowledge/many-gen-ai-players-remain-far-away-from-profiting-interview-with-andy-wu&quot;&gt;
Most Gen AI Players Remain ‘Far Away’ from Profiting: Interview with
Andy Wu &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
Most people are aware of the high fixed cost of training the leading
generative AI models, but there are also significant variable costs of
“inference” in using generative AI. These inference costs are incurred
every time we enter a prompt and receive a response.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/economics/&quot; rel=&quot;tag&quot;&gt;economics&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/llm/&quot; rel=&quot;tag&quot;&gt;llm&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://jacobin.com/2026/06/ai-anthropic-openai-costs-financing&quot;&gt;
The Era of Cheap AI Is Over &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
In the words of Harvard business professor Andy Wu, most people don’t
realize how “ridiculously expensive” AI is. Most are aware of the high
fixed costs, but not the variable inference costs incurred every time
the model generates an image. OpenAI expects to spend more than $150
billion on inference costs alone through 2030. While the vast majority
of users continue to access the platform for free, the question is how
the gap between resources and revenue will eventually close, and who
will bear the costs.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ai/&quot; rel=&quot;tag&quot;&gt;ai&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/economics/&quot; rel=&quot;tag&quot;&gt;economics&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/energy/&quot; rel=&quot;tag&quot;&gt;energy&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/llm/&quot; rel=&quot;tag&quot;&gt;llm&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/politics/&quot; rel=&quot;tag&quot;&gt;politics&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://helenedorion.com/mes-forets/&quot;&gt; Mes
forêts &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
«Son nom semble la relier à une constellation, mais sa présence au monde
la rend indissociable des paysages qu’elle traverse : Hélène Dorion vit
environnée de lacs et de forêts, de fleuves et de rivages, de brumes de
mémoire et de vastes estuaires où la pensée s’évase. Dans ce recueil
voué aux forêts, elle fait entendre le chant de l’arbre, comme il existe
un chant d’amour et des voix de plain-chant. « Mes forêts… », dit-elle
dans un souffle qui se densifie de poème en poème. Et l’on entre à pas
de loup dans une forêt de signes où l’on déchiffre la partition de la
vie sur fond de ciel, sur fond de terre, sur fond de neige, de
feuillages persistants et de flammes qu’emporte le vent, de bourgeons
sertis dans l’écorce et de renouvellement. Un chemin d’ombres et de
lumière, qui donne sens à ce qu’on appelle humanité. »
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/book/&quot; rel=&quot;tag&quot;&gt;book&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/french/&quot; rel=&quot;tag&quot;&gt;french&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/poetry/&quot; rel=&quot;tag&quot;&gt;poetry&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://pudseyclough.uk/&quot;&gt; Pudsey Clough
Radio &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
If you have problems with webpage playback try these stream buttons,or
add the urls below to VLC or any other streaming/netradio software:
https://orllewin.radioca.st/stream - High quality 256kbps stream.
https://orllewin.radioca.st/lofi - Bandwidth friendly 64kbps stream.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/radio/&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖 &lt;a class=&quot;h-name&quot; href=&quot;https://itch.io/jam/manifesto-jam-2026&quot;&gt;
MANIFESTO JAM 2026 &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
The manifesto, in my imagined alternative, is the ugly smear on the
polished surfaces of conference keynotes, aspirational #bizdev posts and
job-ready portfolio pieces. The manifesto is awkward, clunky,
impractical, confronting, uncompromising, defiant: all qualifiers
undesirable in an increasingly professionalised, corporatised game
making ecosystem. These traits are what makes the manifesto beautiful.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/art/&quot; rel=&quot;tag&quot;&gt;art&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/game/&quot; rel=&quot;tag&quot;&gt;game&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/manifesto/&quot; rel=&quot;tag&quot;&gt;manifesto&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.inkandswitch.com/tangents/dither-explorer/&quot;&gt;
Dither Explorer &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
An interactive visualization of how various dithering algorithms work.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/algorithm/&quot; rel=&quot;tag&quot;&gt;algorithm&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/image/&quot; rel=&quot;tag&quot;&gt;image&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/vis/&quot; rel=&quot;tag&quot;&gt;vis&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;
&lt;article class=&quot;bookmark h-entry&quot;&gt;
&lt;h2&gt;
🔖
&lt;a class=&quot;h-name&quot; href=&quot;https://www.businessinsider.com/microsoft-github-amazon-ai-cloud-capacity-2026-6&quot;&gt;
Microsoft turns to Amazon for help with GitHub’s AI-driven capacity
issues &lt;/a&gt;
&lt;/h2&gt;
&lt;section class=&quot;p-summary&quot;&gt;
&lt;p&gt;
Microsoft is turning to its biggest cloud rival, Amazon, to help address
capacity issues on its GitHub coding platform following a series of
AI-driven outages, according to two people familiar with the plans.
&lt;/p&gt;
&lt;p&gt;
GitHub, which Microsoft acquired in 2018, is a popular place for
engineers to store and manage code, and collaborate on projects. As an
independent company, GitHub mostly operated its own data centers, but
Microsoft had planned to move the coding platform entirely to its Azure
cloud service by 2027.
&lt;/p&gt;
Now, a boom in AI demand is forcing Microsoft to lean on Amazon. AI
coding tools have made it easier for developers to write more software.
That has swamped GitHub with a flood of new code, straining its compute
resources.
&lt;/section&gt;
&lt;p class=&quot;tags&quot;&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/ai/&quot; rel=&quot;tag&quot;&gt;ai&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/aws/&quot; rel=&quot;tag&quot;&gt;aws&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/github/&quot; rel=&quot;tag&quot;&gt;github&lt;/a&gt;
&lt;a class=&quot;tag label label-default p-category&quot; href=&quot;https://inkdroid.org/tag/microsoft/&quot; rel=&quot;tag&quot;&gt;microsoft&lt;/a&gt;
&lt;/p&gt;
&lt;/article&gt;</content:encoded>
	<dc:date>2026-06-22T04:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-953024975153422094.post-7015811420941871318">
	<title>Web Science and Digital Libraries (WS-DL) Group at Old Dominion University: 2026-06-19: From Chalk Dust to Code: My Journey from a Small Town to a Ph.D. in the U.S.</title>
	<link>https://ws-dl.blogspot.com/2026/06/2026-06-19-from-chalk-dust-to-code-my.html</link>
	<content:encoded>&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhMp24qQr2qpplOBIv5A1kNFzwEZqNS0UCUY9oiB-HXmpLDdMKwuM20b1QOJNbwlUhcRosawNbEw6wjI4hzpSFpnsGGTE1DF2EDS9r8-XoXmxOkuQQvkJarvc1rJxzuW_eymtRkVgtbXcpPkblx0AGN_aIgc_CIO_or2VmKvZa35ZpCP-NCKlnSR5_pGgE&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhMp24qQr2qpplOBIv5A1kNFzwEZqNS0UCUY9oiB-HXmpLDdMKwuM20b1QOJNbwlUhcRosawNbEw6wjI4hzpSFpnsGGTE1DF2EDS9r8-XoXmxOkuQQvkJarvc1rJxzuW_eymtRkVgtbXcpPkblx0AGN_aIgc_CIO_or2VmKvZa35ZpCP-NCKlnSR5_pGgE=w169-h212&quot; width=&quot;169&quot; /&gt;&lt;/a&gt;&lt;/div&gt;I was born in a small town to two schoolteachers who believed education was not just a profession but a purpose. Growing up in such an environment meant that learning was never forced; it was simply part of everyday life, and curiosity was always encouraged rather than questioned. Books were treated like companions in our home, and questions were welcomed more than answers. My father, a mathematics teacher and statistics topper, did not just teach numbers. He taught me how to see patterns in the world, how to question things, and how to stay curious. He had a way of turning ordinary moments into lessons, showing me that knowledge was not confined to classrooms but hidden in everything around us. Conversations at home often revolved around ideas, discipline, perseverance, and integrity, quietly shaping my mindset long before I understood their value. That atmosphere made me believe that effort mattered more than circumstance and that consistency could take a person farther than talent alone. No one imagined back then that this quiet boy would one day cross oceans and earn a Ph.D. in Computer Science. Dreams rarely ask where you start. They only ask how far you are willing to go.&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjqyuED5GLob4jPL4b4WzdFR4tKeyqzoxI7VNDWSr7O9rwTKIF1khMR8n3wWiGkruI77ymJ-jyNF6zC531bVEovPs218Na2MmWeA_-_2DTz_35GOvbWJVIrcdEhn1b3NL4YVh7KXQ0t6bmdSaDKqJuIKRptb6_u-hQQndYcRa4JY-S9i3fFlZxY2qwca64&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;185&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjqyuED5GLob4jPL4b4WzdFR4tKeyqzoxI7VNDWSr7O9rwTKIF1khMR8n3wWiGkruI77ymJ-jyNF6zC531bVEovPs218Na2MmWeA_-_2DTz_35GOvbWJVIrcdEhn1b3NL4YVh7KXQ0t6bmdSaDKqJuIKRptb6_u-hQQndYcRa4JY-S9i3fFlZxY2qwca64=w139-h185&quot; width=&quot;139&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;My mother, who was also a schoolteacher, played an equally powerful role in shaping my values. From her, I learned patience, discipline, and the importance of consistency in everything I pursued. She believed that true education was not about marks but about character, and she constantly reminded me that knowledge should make a person humble, not proud. Watching both my parents teach day after day made learning feel natural to me, not like a task but like a way of life.&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;My grandfather’s life story was another silent source of inspiration. He grew up during colonial India and witnessed the struggles of a nation finding its identity. Rising through hardships, he eventually earned the respected position of a gazetted officer, a journey that required perseverance, resilience, and integrity. His life stood as proof that circumstances do not define destiny; determination does. Even without long speeches, his presence alone taught lessons that no classroom ever could.&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4e6cylYkjvNrY5fAZY-vAZLOUdvfAxUYggrFFVZNmkkj6jneEEz1ogLugVR2xxlBL_Y0TXzZhpEynuukm47nQe2rJ7Xs_Y9ATOCvS0pzY-dbA4o9hWFx_L1qxvEUYQBQTHCMiq-C4ecJXOygTvppwPkLTQce-wLFvQVQeEvyKjuffkMYR_CxO8XteQHU/s1320/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(6).jpeg&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;138&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4e6cylYkjvNrY5fAZY-vAZLOUdvfAxUYggrFFVZNmkkj6jneEEz1ogLugVR2xxlBL_Y0TXzZhpEynuukm47nQe2rJ7Xs_Y9ATOCvS0pzY-dbA4o9hWFx_L1qxvEUYQBQTHCMiq-C4ecJXOygTvppwPkLTQce-wLFvQVQeEvyKjuffkMYR_CxO8XteQHU/w249-h138/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(6).jpeg&quot; width=&quot;249&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;I spent most of my childhood at my grandfather’s house because it was close to my school, and that environment shaped me deeply. The atmosphere there was disciplined, structured, and principled. Time was respected, routines were followed, and values were lived rather than spoken. Growing up in such surroundings quietly instilled habits that later became my strongest foundation during demanding academic years and life’s toughest challenges.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Growing up in a modest household meant resources were limited, but encouragement was abundant. Books were never treated as objects but as companions, and curiosity was never dismissed as childish. Those early years quietly shaped the mindset that later helped me face some of the toughest academic and personal challenges of my life.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3OuI_-6gwWDAzYqdSaUgB0hukw6USZoQFjRQfHf3vBUWWQ4w2KhOBzaki-HGrq5V66xUGBwu3tYZFiYLyIkGxiUhYEHlVWNU25KcSZivoAVxR9EhbiUcvhp78b-T3Wtb3l2LTnNMDvlORW61AOcGAq5jL7iJFa75W9DrXT_2ZtK0137Swb3ZwIeDxGL0/s1320/WhatsApp%20Image%202026-02-22%20at%2020.20.17%20(6).jpeg&quot; style=&quot;clear: left; display: inline; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;148&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3OuI_-6gwWDAzYqdSaUgB0hukw6USZoQFjRQfHf3vBUWWQ4w2KhOBzaki-HGrq5V66xUGBwu3tYZFiYLyIkGxiUhYEHlVWNU25KcSZivoAVxR9EhbiUcvhp78b-T3Wtb3l2LTnNMDvlORW61AOcGAq5jL7iJFa75W9DrXT_2ZtK0137Swb3ZwIeDxGL0/w234-h148/WhatsApp%20Image%202026-02-22%20at%2020.20.17%20(6).jpeg&quot; width=&quot;234&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;My academic journey began with a Bachelor’s in Information Technology, followed by a Master’s in Computer Science at Manipal University. That was where curiosity turned into direction. I started building systems, experimenting with ideas, and asking questions beyond textbooks. I built an AI-based disease prediction model, and that project showed me something important. Technology is not just code. It is an impact. That realization changed the way I looked at learning and the future.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK_N-BRqYm682N_cekrxhSi5yDL5YYiRHpS_vZ9YaIV2zP8qBJ_i4WA8dP51FwUMGMtuQoVSaPwfCwrfSyAeGfoeZdj4CgIqFL5JImGv4NvD52TUZL_nc1siEcJt4hsfxMrYIW_KSWKrGSW8tgYM6bbyIuEWqhvfWFuJ-rYric5FtWj4q_85yueOPVM9c/s1200/WhatsApp%20Image%202026-02-22%20at%2020.20.17%20(3).jpeg&quot; style=&quot;clear: right; display: inline; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK_N-BRqYm682N_cekrxhSi5yDL5YYiRHpS_vZ9YaIV2zP8qBJ_i4WA8dP51FwUMGMtuQoVSaPwfCwrfSyAeGfoeZdj4CgIqFL5JImGv4NvD52TUZL_nc1siEcJt4hsfxMrYIW_KSWKrGSW8tgYM6bbyIuEWqhvfWFuJ-rYric5FtWj4q_85yueOPVM9c/w241-h160/WhatsApp%20Image%202026-02-22%20at%2020.20.17%20(3).jpeg&quot; width=&quot;241&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;University life was not only about grades or achievements. It was where I learned independence, responsibility, and how to handle failure. Every project deadline, presentation, and challenge strengthened not only my technical knowledge but also my confidence in my own potential.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Alongside academics, I always had a creative side that refused to stay silent. I pursued a diploma in filmmaking because storytelling fascinated me as much as algorithms did. Cinema taught me perspective, emotion, and imagination. I developed a deep interest in psychological, horror, and suspense films because they explore the human mind in ways that science alone cannot explain. I even had the opportunity to perform on stage as Lord Krishna in a theatrical production, an experience that taught me confidence, presence, and expression. Since then, I have carried a quiet dream within me to one day create a film of my own.&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWVVR9sMSdU2C9q8LS7xnDAcd30sLxSMXlU4XbZJwsOWX5dRUc5O2azFYX4Xlwgkp62RAGk3qilzt3h4gL9ZkIDtxKN27tek-TM1WCw1v_e49PTVAn8ORce7_rfgAR2laUXV_rg5zA4mh9G9kTc8gNaGO3CwQML4ZVD_-4tM0Wd5do2ufcMek8vs2yH0g/s1591/WhatsApp%20Image%202026-02-22%20at%2020.20.17%20(2).jpeg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;284&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWVVR9sMSdU2C9q8LS7xnDAcd30sLxSMXlU4XbZJwsOWX5dRUc5O2azFYX4Xlwgkp62RAGk3qilzt3h4gL9ZkIDtxKN27tek-TM1WCw1v_e49PTVAn8ORce7_rfgAR2laUXV_rg5zA4mh9G9kTc8gNaGO3CwQML4ZVD_-4tM0Wd5do2ufcMek8vs2yH0g/w234-h284/WhatsApp%20Image%202026-02-22%20at%2020.20.17%20(2).jpeg&quot; width=&quot;234&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;That phase of life taught me something powerful. It showed me that growth does not happen when we limit ourselves to one dimension but when we allow different sides of our personality to coexist and complement each other. Creativity and logic are not opposites. They are partners. One fuels possibility while the other shapes it into reality. The ability to imagine helps innovation, and the ability to analyze helps execution. When both work together, ideas do not just remain thoughts; they become solutions. This balance later became one of my greatest strengths in research and problem-solving. During my university years, I became the only student from my institution to secure a full-time internship at &lt;a href=&quot;https://www.hp.com/us-en/home.html&quot; target=&quot;_blank&quot;&gt;HP&lt;/a&gt; R&amp;amp;D, where I worked on an AI-powered auto-diagnostics system. Walking into that environment, surrounded by brilliant minds and real-world challenges, felt both humbling and motivating at the same time. It pushed me to raise my own standards and think beyond what I had previously believed possible. For the first time, I saw how research and industry could come together to solve real problems. I realized that technology is most powerful when it moves beyond theory and begins to create a tangible impact on people’s lives. That experience strengthened my belief that innovation happens when curiosity meets discipline.&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVv4xFbeO9aVNtBX9SYq44TnikQJMfDstHAs_ylgOxhP9N-9GRbfcWHWmnAH0nhhgiACZ6K4QfEr2FW6LFgOoYM-zQqv_T68G8JocRch_bgHO4zsFdBQbnrBo2O1kglfOzop1Gg2Dw5LrJ8zw7Q1nwjXMOSV7f_LrtMvjcYlnKUiUdJjNn1_NskUx386Q/s520/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(7).jpeg&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;121&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVv4xFbeO9aVNtBX9SYq44TnikQJMfDstHAs_ylgOxhP9N-9GRbfcWHWmnAH0nhhgiACZ6K4QfEr2FW6LFgOoYM-zQqv_T68G8JocRch_bgHO4zsFdBQbnrBo2O1kglfOzop1Gg2Dw5LrJ8zw7Q1nwjXMOSV7f_LrtMvjcYlnKUiUdJjNn1_NskUx386Q/w229-h121/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(7).jpeg&quot; width=&quot;229&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Walking into that workplace for the first time felt surreal. The environment was unlike anything I had experienced before, filled with people who spoke the language of innovation, curiosity, and possibility. It was proof that hard work can open doors you once thought were unreachable. In that moment, I realized that opportunities are not reserved for a select few; they often wait quietly for those willing to persist long enough to find them. More importantly, it showed me that I belonged in spaces where ideas mattered more than background.&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV-bwxeWzPbow0RBrRT2Q5daHxMNZ4xLAsWfcbnGvur3SqyFxDmMs9nj4bpTXlIPCDZG7sY528AESZq0WKhx9niM_nJfCQH6wqibTzyJbgmNyj7ur3FWK8E7E9QUlKeenv0CDAmwzpCPCeGO8Xb_9qJ8AH_EIco6yEGRcLl1dyclEM0PDzwmSw6CmtLQc/s1084/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(3).jpeg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;140&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV-bwxeWzPbow0RBrRT2Q5daHxMNZ4xLAsWfcbnGvur3SqyFxDmMs9nj4bpTXlIPCDZG7sY528AESZq0WKhx9niM_nJfCQH6wqibTzyJbgmNyj7ur3FWK8E7E9QUlKeenv0CDAmwzpCPCeGO8Xb_9qJ8AH_EIco6yEGRcLl1dyclEM0PDzwmSw6CmtLQc/w205-h140/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(3).jpeg&quot; width=&quot;205&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Soon after, I achieved another milestone by becoming the first student from my university to intern at &lt;a href=&quot;https://us.pg.com/&quot; target=&quot;_blank&quot;&gt;Procter &amp;amp; Gamble&lt;/a&gt; in Europe. There, I developed AI and IoT tools for safety and automation. It felt like I had finally reached the dream I once imagined. But life sometimes asks you to step away from comfort to pursue purpose. Leaving that opportunity after countless overnight visa trips was not easy, but I chose uncertainty because I wanted to create knowledge and not just apply it.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZjbApjNUpZbBpDO5cC7ATlq4dCL-AnAL3XLxoZNvJ2HTSwiEX5EwIEyKTZDJ2bvCMF-DwKQ2n_iHA_xJ2f2Xu2Z0ySO-1PdaEyd8RjVPoYwAvJnqT4tsTndTmbBNM1Wa8a55gD-EJiWKERp7NbBagHS8ggfqFIv__AJQ0cRhvYI_dCLB7vNMkwxBCJuY/s268/WhatsApp%20Image%202026-02-22%20at%2020.20.16%20(1).jpeg&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZjbApjNUpZbBpDO5cC7ATlq4dCL-AnAL3XLxoZNvJ2HTSwiEX5EwIEyKTZDJ2bvCMF-DwKQ2n_iHA_xJ2f2Xu2Z0ySO-1PdaEyd8RjVPoYwAvJnqT4tsTndTmbBNM1Wa8a55gD-EJiWKERp7NbBagHS8ggfqFIv__AJQ0cRhvYI_dCLB7vNMkwxBCJuY/w140-h187/WhatsApp%20Image%202026-02-22%20at%2020.20.16%20(1).jpeg&quot; width=&quot;140&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;That decision was not understood by everyone. Some questioned it, others doubted it, and a few even discouraged it. But growth often begins where comfort ends. I realized that the path to something extraordinary rarely looks safe or predictable. Then COVID arrived, and my Ph.D. journey was delayed by nearly two years. Plans paused, uncertainty grew, and the path ahead looked unclear. Instead of waiting for circumstances to change, I decided to change myself. I spent that time upskilling, studying, building projects, and preparing for an opportunity I could not yet see. In August 2021, during travel restrictions and global uncertainty, I boarded a flight to the United States carrying two things. Fear and determination.&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAarGzZpNJ37aiuWeIettS3VRKF-6h2xYu76Iqw9wt4HRZbnjNqDlq_xnROiX7NYf82-IuukWoEIyZ2ocqHdz0EnVbReMufoawDyFkrbpYwryUlLxWfsXMLzyO02BCB9XbiHzuktaHXE3b_qvI1XPE9ctqRZtYVK31y4wQ46t3Hc0cqB7TLOue8gy5Y54/s1320/WhatsApp%20Image%202026-02-22%20at%2020.20.18.jpeg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAarGzZpNJ37aiuWeIettS3VRKF-6h2xYu76Iqw9wt4HRZbnjNqDlq_xnROiX7NYf82-IuukWoEIyZ2ocqHdz0EnVbReMufoawDyFkrbpYwryUlLxWfsXMLzyO02BCB9XbiHzuktaHXE3b_qvI1XPE9ctqRZtYVK31y4wQ46t3Hc0cqB7TLOue8gy5Y54/w264-h194/WhatsApp%20Image%202026-02-22%20at%2020.20.18.jpeg&quot; width=&quot;264&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;That flight was more than travel. It was a turning point. It symbolized leaving behind familiarity and stepping into the unknown with faith. Moments like that define a person not because they are easy, but because they demand courage. A Ph.D. is not just a degree. It is a test of patience, resilience, and belief. It is months of work that sometimes lead nowhere, papers rejected after weeks of effort, ideas challenged, and moments when you question yourself. But it is also growth, clarity, and discovery. Each obstacle became a lesson, and each lesson made me stronger. I learned that persistence is not loud. It is quiet, steady, and stubborn.&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Some of the most important lessons I learned during my doctoral journey were not written in textbooks. They were learned in silence, in reflection, and in perseverance. Research does not reward speed. It rewards depth. It does not reward noise. It rewards clarity. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnwP163216nRS-D76PhMzL3V-9_1mm0ZPtRDy7RkWANdyKsXMiyqh9DS6zEtP1tVihcPMWWcbKS9Zd5drBHyuYaxuZtahhOkiN0aYi6yvNYsJzKxLb06CVdLkv1ZhAmHGeD7kW_rsa5omKBUZzR1oVqB0q2q7T5NKKGP945ya58ycKId-YQ-v_xAj8b48/s1320/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(1).jpeg&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;151&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnwP163216nRS-D76PhMzL3V-9_1mm0ZPtRDy7RkWANdyKsXMiyqh9DS6zEtP1tVihcPMWWcbKS9Zd5drBHyuYaxuZtahhOkiN0aYi6yvNYsJzKxLb06CVdLkv1ZhAmHGeD7kW_rsa5omKBUZzR1oVqB0q2q7T5NKKGP945ya58ycKId-YQ-v_xAj8b48/w200-h151/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(1).jpeg&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Over time, that persistence began to show results. I published more than twenty research papers and had the opportunity to present my work at international conferences across Europe, Australia, and North America. These experiences allowed me to engage with researchers from around the world, exchange ideas, and refine my perspective on accessibility, artificial intelligence, and human-centered computing.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Selected conference presentations and research travel included presenting at the 28th International Conference on Theory and Practice of Digital Libraries (&lt;a href=&quot;https://doi.org/10.1007/978-3-031-72437-4_12&quot; target=&quot;_blank&quot;&gt;TPDL 2024&lt;/a&gt;) in Italy (&lt;a href=&quot;https://ws-dl.blogspot.com/2024/12/2024-12-05-28th-international.html&quot; target=&quot;_blank&quot;&gt;Conference Report&lt;/a&gt;), participating in the ACM SIGWEB Conference on Hypertext and Social Media (HT 2024) in Poznań, Poland (&lt;a href=&quot;https://ws-dl.blogspot.com/2024/10/2024-10-18-acm-sigweb-conference-on.html&quot; target=&quot;_blank&quot;&gt;Conference Report&lt;/a&gt;), presenting at the ACM SIGCHI Conference on Engineering Interactive Computing Systems (&lt;a href=&quot;https://doi.org/10.1145/3593228&quot; target=&quot;_blank&quot;&gt;EICS 2023&lt;/a&gt;) in Swansea, Wales, United Kingdom (&lt;a href=&quot;https://ws-dl.blogspot.com/2024/01/2024-01-23-acm-sigchi-conference-on.html&quot; target=&quot;_blank&quot;&gt;Conference Report&lt;/a&gt;), and attending the International Conference on Intelligent User Interfaces (&lt;a href=&quot;https://doi.org/10.1145/3581641.3584049&quot; target=&quot;_blank&quot;&gt;IUI 2023&lt;/a&gt;) in Sydney, New South Wales, Australia (&lt;a href=&quot;https://ws-dl.blogspot.com/2024/01/2024-01-23-international-conference-on.html&quot; target=&quot;_blank&quot;&gt;Conference Report&lt;/a&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCe_DrtPfcOJNaZIRUh_qzhv3sTn6KT5e2z8rHAS_AsajTVHuy-_swQBUTuw02XXc8EyYtkUY83Kq8C3qlwpYGG0UJ425c_KhQVOzYbhyphenhyphenN6G-f7yJ_Bkzyl3KOlNM4P06JmJBYb3ZZh5APjuzo69T2F195rsn11PsaZi57sJNHHXBHWyYQU-3kMs3_cEA/s1471/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(4).jpeg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCe_DrtPfcOJNaZIRUh_qzhv3sTn6KT5e2z8rHAS_AsajTVHuy-_swQBUTuw02XXc8EyYtkUY83Kq8C3qlwpYGG0UJ425c_KhQVOzYbhyphenhyphenN6G-f7yJ_Bkzyl3KOlNM4P06JmJBYb3ZZh5APjuzo69T2F195rsn11PsaZi57sJNHHXBHWyYQU-3kMs3_cEA/w189-h252/WhatsApp%20Image%202026-02-22%20at%2020.20.18%20(4).jpeg&quot; width=&quot;189&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;My research journey was also enriched by industry experiences, including a Summer Research Internship at ISG (&lt;a href=&quot;https://ws-dl.blogspot.com/2023/12/2023-12-27-summer-research-internship.html&quot; target=&quot;_blank&quot;&gt;Internship Report&lt;/a&gt;) and a Summer Data Analytics Internship at PRA Group (&lt;a href=&quot;https://ws-dl.blogspot.com/2024/08/2024-08-xx-summer-data-analytics-summer.html&quot; target=&quot;_blank&quot;&gt;Internship Report&lt;/a&gt;). These opportunities allowed me to apply research ideas in real-world settings and strengthened my understanding of how academic innovation can create practical impact.&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;These experiences culminated in receiving the Best Paper Award at &lt;a href=&quot;https://doi.org/10.1145/3744257.3744276&quot; target=&quot;_blank&quot;&gt;ACM W4A 2025&lt;/a&gt; for our work on adapting online customer reviews for blind users, a recognition that remains one of the highlights of my doctoral journey. I shared reflections on this achievement and the award-winning work in this &lt;a href=&quot;https://x.com/mk344567/status/1917207310306361354?s=20&amp;amp;utm_source=chatgpt.com&quot;&gt;X post about the ACM W4A 2025 Best Paper Award&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Standing on international stages and presenting my research to global audiences was humbling. Each presentation reminded me that knowledge has no borders and that ideas can travel farther than we ever can. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;br /&gt;&lt;div&gt;Eventually, the moment arrived that once felt impossibly far away. I earned my Ph.D. in Computer Science from Old Dominion University. My dissertation defense marked the culmination of years of research in accessibility, artificial intelligence, and human-computer interaction. My dissertation is publicly available through Old Dominion University Digital Commons: &lt;a href=&quot;http://doi.org/10.25777/767n-ra09&quot;&gt;http://doi.org/10.25777/767n-ra09&lt;/a&gt;. The defense presentation and selected photo from the event are included below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;This is an embedded &lt;a href=&quot;https://office.com&quot; target=&quot;_blank&quot;&gt;Microsoft Office&lt;/a&gt; presentation, powered by &lt;a href=&quot;https://office.com/webapps&quot; target=&quot;_blank&quot;&gt;Office&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCFM1A02wFMzlTLkK07o455q-VB-55FT_eAWKiOFd-fjcIusw1OpGDVES92zfE_QolI4afBW3udSQhzMlALWQyMCJn9yImTVeatgfFPjpRs9EV_qZF05-hmgU9HMLRsHvteqSjDpcOSmI4JS1mAcMVkXjPmdDeYz78NWqwg9bx0OP-GP_LQ6X2mLEuWU4/s1472/Screenshot%202026-06-14%20at%2011.16.19%E2%80%AFPM.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3uPxQ90SumHPXJtzAAV-GLUg4IxpmOxnyhDf1IkWlbXLV08OkFskKKIeWFS8sK9xDOpVXIBvPwdnw2tt-hEWIw57k5yogz906R2hU5HX4oWGwH4Mm6B28DUok92DPTrVck8_ODvt6wuVpnPWFvUzOdqVY2AO9z9ud-Daapa0gPf3z6S88gWJ-pJEacXk/s1186/GwkrjcBWoAEQmVO.jpeg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCFM1A02wFMzlTLkK07o455q-VB-55FT_eAWKiOFd-fjcIusw1OpGDVES92zfE_QolI4afBW3udSQhzMlALWQyMCJn9yImTVeatgfFPjpRs9EV_qZF05-hmgU9HMLRsHvteqSjDpcOSmI4JS1mAcMVkXjPmdDeYz78NWqwg9bx0OP-GP_LQ6X2mLEuWU4/s1472/Screenshot%202026-06-14%20at%2011.16.19%E2%80%AFPM.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7LRSzblt5Vxntj-Uvo8CSAq7Y43AVtVtm9HwoCDdIsVZTjdmBU1QAX3IDYBmfJLuIaxRSv1Eo9KB0QXbS-b479SxxpVb7ncSS_TgEmXZtT5tzZIzhCQlStYVuODBCvSu7TrXTf6sw6MmxGEHrPQWzc-6pJmF_shAy3wm2_mpeoobaN_ZuGwmZhjgP3Rk/s1472/Screenshot%202026-06-14%20at%2011.16.19%E2%80%AFPM.png&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;clear: right; color: #4b4b4b; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7LRSzblt5Vxntj-Uvo8CSAq7Y43AVtVtm9HwoCDdIsVZTjdmBU1QAX3IDYBmfJLuIaxRSv1Eo9KB0QXbS-b479SxxpVb7ncSS_TgEmXZtT5tzZIzhCQlStYVuODBCvSu7TrXTf6sw6MmxGEHrPQWzc-6pJmF_shAy3wm2_mpeoobaN_ZuGwmZhjgP3Rk/w192-h179/Screenshot%202026-06-14%20at%2011.16.19%E2%80%AFPM.png&quot; width=&quot;192&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Standing there, I did not just see a degree. I saw every late night, every doubt, every rejection, every lesson, and every person who supported me along the way. I thought about the sacrifices my family made, the mentors who guided me, and the friends and colleagues who encouraged me during difficult moments. I was reminded that every challenge had shaped the person I had become. What began as a dream in a small town had gradually unfolded into a journey that took me across continents, introduced me to remarkable people, and challenged me in ways I never imagined.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix3dcj2tpTSBGtQs79b-0-YbXoj5gd33EwPWe9H2uUCMnzVnZj1jgUMXjHeM8AkiTQQjhEW7fCND9O-lRHfmtf50Habj24LEoQQou8pcT4gI36grL_v1j70X8TCF7bFP_nSD84LdU4R292eWIM4K0gWBuyesyWH_WuDK4x3aESJ1-4IAjIicgAsMqrRTI/s1920/WhatsApp%20Image%202026-06-14%20at%2023.54.01.jpeg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix3dcj2tpTSBGtQs79b-0-YbXoj5gd33EwPWe9H2uUCMnzVnZj1jgUMXjHeM8AkiTQQjhEW7fCND9O-lRHfmtf50Habj24LEoQQou8pcT4gI36grL_v1j70X8TCF7bFP_nSD84LdU4R292eWIM4K0gWBuyesyWH_WuDK4x3aESJ1-4IAjIicgAsMqrRTI/w193-h202/WhatsApp%20Image%202026-06-14%20at%2023.54.01.jpeg&quot; width=&quot;193&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;Looking back, I saw more than academic milestones and professional achievements. I saw a young student driven by curiosity, a researcher shaped by persistence, and a person transformed by every challenge encountered along the way. In that moment, I understood that success is never a single event. It is a collection of moments, sacrifices, failures, risks, and resilience stitched together over time. I also came to appreciate that the people we meet, the experiences we embrace, and the challenges we overcome often shape us just as much as our accomplishments. Each stage of the journey brought lessons that extended far beyond academics, teaching me perseverance, gratitude, and the value of continuous growth. The degree was only a symbol. The journey was the real achievement.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #4b4b4b;&quot;&gt;This Ph.D. is not the finish line. It is the beginning of a new chapter filled with opportunities to learn, contribute, and create meaningful impact. If there is one thing my journey has taught me, it is that no dream is too big, no struggle is too heavy, and no setback is final. Sometimes the longest paths lead to the most meaningful destinations, and sometimes the quietest beginnings lead to the loudest impact. For me, this journey has always been about learning, growing, and giving back, and I look forward to wherever that path leads next.&lt;br /&gt;&lt;br /&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; font-size: 15px;&quot;&gt;- Mohan Krishna Sunkara (&lt;/span&gt;&lt;a href=&quot;https://twitter.com/mk344567&quot; style=&quot;font-family: Roboto, sans-serif; font-size: 15px; text-decoration: none;&quot;&gt;@mk344567&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; font-size: 15px;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2026-06-21T21:29:59+00:00</dc:date>
	<dc:creator>Mohan Krishna Sunkara (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="https://inkdroid.org/2026/06/21/midsummer-sunrise/">
	<title>Ed Summers: Midsummer sunrise</title>
	<link>https://inkdroid.org/2026/06/21/midsummer-sunrise/</link>
	<content:encoded>&lt;figure&gt;
&lt;a href=&quot;https://www.flickr.com/photos/inkdroid/55348798540/&quot;&gt;
&lt;img class=&quot;img-fluid&quot; src=&quot;https://live.staticflickr.com/65535/55348798540_059c2cb648_c.jpg&quot; /&gt;
&lt;/a&gt;

Midsummer sunrise

&lt;/figure&gt;
&lt;p&gt;
The sun peeking over the horizon of the Atlantic Ocean. A globe of firey
starstuff over calm waves, orange and red spreading out into the sky.
&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-21T04:00:00+00:00</dc:date>
</item>
<item rdf:about="https://blog.okfn.org/?p=49592">
	<title>Open Knowledge Foundation: Roundtable Recap: How to digitise a physical archive to work strategically with AI?</title>
	<link>https://blog.okfn.org/2026/06/18/roundtable-recap-how-to-digitise-a-physical-archive-to-work-strategically-with-ai/</link>
	<content:encoded>&lt;p&gt;This time, we learned from initiatives around the world that have breathed new life into dusty archives using both open and non-open technologies&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://blog.okfn.org/2026/06/18/roundtable-recap-how-to-digitise-a-physical-archive-to-work-strategically-with-ai/&quot;&gt;Roundtable Recap: How to digitise a physical archive to work strategically with AI?&lt;/a&gt; first appeared on &lt;a href=&quot;https://blog.okfn.org&quot;&gt;Open Knowledge Blog&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-18T19:32:00+00:00</dc:date>
	<dc:creator>Solana Larsen</dc:creator>
</item>
<item rdf:about="https://evergreen-ils.org/?p=10494">
	<title>Evergreen ILS: Evergreen releases 3.17.2 and 3.16.8 are available</title>
	<link>https://evergreen-ils.org/evergreen-releases-3-17-2-and-3-16-8-are-available/</link>
	<content:encoded>&lt;p&gt;The Evergreen release team is pleased to announce that point releases for 3.17.2 and 3.16.8 are available.&lt;/p&gt;
&lt;p&gt;These releases contain updates for Evergreen’s RESTful API suite, search fixes, and Angular interface updates.&lt;/p&gt;
&lt;p&gt;Files and release notes are available on the Downloads page: &lt;a href=&quot;https://evergreen-ils.org/egdownloads/&quot;&gt;https://evergreen-ils.org/egdownloads/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to the June release team: Galen Charlton (Equinox), Gina Monti (Bibliomation), Sarah Moody (ECDI), Andrea Buntz Neiman (Equinox), and Chris Sharp (PINES); as well as everyone who contributed fixes and testing to this release.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-18T13:00:17+00:00</dc:date>
	<dc:creator>Andrea Buntz Neiman</dc:creator>
</item>
<item rdf:about="https://xeiaso.net/notes/2026/anubis-wasm-vendor-binary/">
	<title>Xe Iaso: I hate compilers</title>
	<link>https://xeiaso.net/notes/2026/anubis-wasm-vendor-binary/</link>
	<content:encoded>&lt;p&gt;Anubis is about to get &lt;a href=&quot;https://github.com/TecharoHQ/anubis/pull/1684&quot;&gt;WebAssembly-based proof of work checks&lt;/a&gt; so that administrators can use a non-SHA256 proof of work method to protect their websites. Part of the implementation goals of this work is that the check logic is defined in &lt;em&gt;one&lt;/em&gt; place on both client and server. The client and server will then hook into the WebAssembly in order to make sure they're running in lockstep.&lt;/p&gt;
        &lt;p&gt;However, one small problem comes up. What do you do when the client has WebAssembly disabled? I really don't want to de-facto lock people out of websites. Anubis exists in an impossible balance of user experience, administrator experience, and developer experience and any change to any of these factors disrupts the balance for other factors.&lt;/p&gt;
        &lt;p&gt;To work around this and also fulfill the goal of having check logic defined &lt;em&gt;once&lt;/em&gt;, I decided to take inspiration from the legendary talk &lt;a href=&quot;https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript&quot;&gt;The Birth and Death of JavaScript&lt;/a&gt; and just recompile the WebAssembly to JavaScript. Sure, the resulting JavaScript will be slower than the equivalent WebAssembly (even more so because disabling WASM usually disables the JavaScript JIT, the thing that makes JavaScript fast), but it will finish &lt;em&gt;eventually&lt;/em&gt;. Hopefully it will be more efficient than the existing JavaScript is on lower end hardware, but research is required.&lt;/p&gt;
        &lt;p&gt;Luckily enough, the tool I need (&lt;code&gt;wasm2js&lt;/code&gt; from the &lt;a href=&quot;https://github.com/WebAssembly/binaryen&quot;&gt;binaryen project&lt;/a&gt;) is packaged in Linux distributions. The bad news is that distributions ship ancient versions of it that don't get the same output as the version on my development machine's copy from &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt;.&lt;/p&gt;
        &lt;p&gt;In order to really make sure that the output of this is deterministic (essential for reproducible builds), I need to bundle a copy of &lt;code&gt;wasm2js&lt;/code&gt;. So I did that by building a version of &lt;code&gt;wasm2js&lt;/code&gt; compiled to WebAssembly with &lt;a href=&quot;https://github.com/WebAssembly/wasi-sdk&quot;&gt;wasi-sdk&lt;/a&gt;. The rest of the article is the tale of reproducibility woe that lead to the implementation I ended up with. Buckle up and enjoy the ride!&lt;/p&gt;
        &lt;h2&gt;Reproducible builds are surprisingly hard&lt;/h2&gt;
        &lt;div class=&quot;flex flex-col space-y-0&quot;&gt;&lt;div class=&quot;flex space-x-2 bg-bg-soft dark:bg-bgDark-soft mx-auto min-h-fit         lg:w-[80ch] sm:w-[65ch] w-full         lg:p-4 p-2         // Base styles for all messages         mt-0 mb-0 rounded-none         // First message styles         first:mt-4 first:rounded-t-lg first:pb-2         // Last message styles         last:mb-4 last:rounded-b-lg last:pt-1         // Middle message top/bottom adjustment         [&amp;amp;:not(:first-child)]:-mt-[1px] [&amp;amp;:not(:first-child)]:py-1&quot;&gt;&lt;div class=&quot;h-16 w-16 shrink-0 not-prose&quot;&gt;&lt;img alt=&quot;Aoi is wut&quot; class=&quot;h-16 w-16 shrink-0 max-w-none object-contain rounded-xs&quot; height=&quot;64&quot; src=&quot;https://stickers.xeiaso.net/sticker/aoi/wut&quot; width=&quot;64&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;flex-1 min-w-0&quot;&gt;&lt;span class=&quot;font-semibold text-sm block mb-1&quot;&gt;&lt;a href=&quot;https://xeiaso.net/characters#aoi&quot;&gt;Aoi&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;mx-auto&quot;&gt;&lt;/span&gt;&lt;div class=&quot;text-fg-1 dark:text-fgDark-1 text-sm prose-p:my-2&quot;&gt;&lt;p&gt;Back up a sec, this doesn't make sense to me. If you have &lt;em&gt;the same bytes of
        input&lt;/em&gt; to a compiler, you should get &lt;em&gt;the same bytes&lt;/em&gt; of output assuming
        that the compiler flags, target, and other platform details are controlled
        for right? A compiler is just a deterministic function of input source code
        becomes output bytecode, right?&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;flex space-x-2 bg-bg-soft dark:bg-bgDark-soft mx-auto min-h-fit         lg:w-[80ch] sm:w-[65ch] w-full         lg:p-4 p-2         // Base styles for all messages         mt-0 mb-0 rounded-none         // First message styles         first:mt-4 first:rounded-t-lg first:pb-2         // Last message styles         last:mb-4 last:rounded-b-lg last:pt-1         // Middle message top/bottom adjustment         [&amp;amp;:not(:first-child)]:-mt-[1px] [&amp;amp;:not(:first-child)]:py-1&quot;&gt;&lt;div class=&quot;h-16 w-16 shrink-0 not-prose&quot;&gt;&lt;img alt=&quot;Numa is smug&quot; class=&quot;h-16 w-16 shrink-0 max-w-none object-contain rounded-xs&quot; height=&quot;64&quot; src=&quot;https://stickers.xeiaso.net/sticker/numa/smug&quot; width=&quot;64&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;flex-1 min-w-0&quot;&gt;&lt;span class=&quot;font-semibold text-sm block mb-1&quot;&gt;&lt;a href=&quot;https://xeiaso.net/characters#numa&quot;&gt;Numa&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;mx-auto&quot;&gt;&lt;/span&gt;&lt;div class=&quot;text-fg-1 dark:text-fgDark-1 text-sm prose-p:my-2&quot;&gt;&lt;p&gt;lol you'd think, but no, it's not. In theory it is (and for small scale
        compilers it definitely is), but in practice compilers are strange and
        complicated beasts containing multitudes that no mere mortal can fully
        comprehend on their own.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
        &lt;p&gt;There are a shocking number of ways to accidentally create nondeterministic output when doing C/C++ development. One of the easiest is to use the builtin &lt;code&gt;__DATE__&lt;/code&gt; and &lt;code&gt;__TIME__&lt;/code&gt; macros to stamp a build with the time the compiler was executed at:&lt;/p&gt;
        &lt;pre class=&quot;language-cpp&quot;&gt;&lt;code class=&quot;language-cpp code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// hello.cpp&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;    std&lt;span class=&quot;token double-colon punctuation&quot;&gt;::&lt;/span&gt;cout &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;__DATE__&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;__TIME__&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span class=&quot;token double-colon punctuation&quot;&gt;::&lt;/span&gt;endl&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;Building and running it once gets me this:&lt;/p&gt;
        &lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;$ make clean &amp;amp;&amp;amp; make hello.wasm &amp;amp;&amp;amp; wasmtime run -W exceptions=y ./hello.wasm
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;rm -f hello.o hello.wasm
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;wasi-sdk-33.0-x86_64-linux/bin/wasm32-wasip1-clang++ -O3 -fwasm-exceptions -mllvm -wasm-use-legacy-eh=false  -c hello.cpp -o hello.o
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;wasi-sdk-33.0-x86_64-linux/bin/wasm32-wasip1-clang++ -O3 -fwasm-exceptions -mllvm -wasm-use-legacy-eh=false  -fwasm-exceptions -lunwind --no-wasm-opt hello.o -o hello.wasm
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;Jun 18 2026 00:00:59
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;Another time it gets me this:&lt;/p&gt;
        &lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;$ make clean &amp;amp;&amp;amp; make hello.wasm &amp;amp;&amp;amp; wasmtime run -W exceptions=y ./hello.wasm
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;rm -f hello.o hello.wasm
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;wasi-sdk-33.0-x86_64-linux/bin/wasm32-wasip1-clang++ -O3 -fwasm-exceptions -mllvm -wasm-use-legacy-eh=false  -c hello.cpp -o hello.o
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;wasi-sdk-33.0-x86_64-linux/bin/wasm32-wasip1-clang++ -O3 -fwasm-exceptions -mllvm -wasm-use-legacy-eh=false  -fwasm-exceptions -lunwind --no-wasm-opt hello.o -o hello.wasm
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;Jun 18 2026 00:01:11
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;Even though the source code had &lt;em&gt;the same bytes&lt;/em&gt;, the output of the compiler was wildly different.&lt;/p&gt;
        &lt;p&gt;In order for users and packagers to trust the binaries of &lt;code&gt;wasm2js&lt;/code&gt; I'm committing to the Anubis repo, I need to make sure that you can build the same version I built, down to &lt;em&gt;the same bytes&lt;/em&gt;. For an added bonus, you should be able to build this on &lt;em&gt;your machine&lt;/em&gt; and get the same bytes I got.&lt;/p&gt;
        &lt;div class=&quot;flex space-x-2 bg-bg-soft dark:bg-bgDark-soft mx-auto min-h-fit         lg:w-[80ch] sm:w-[65ch] w-full         lg:p-4 p-2         // Base styles for all messages         mt-0 mb-0 rounded-none         // First message styles         first:mt-4 first:rounded-t-lg first:pb-2         // Last message styles         last:mb-4 last:rounded-b-lg last:pt-1         // Middle message top/bottom adjustment         [&amp;amp;:not(:first-child)]:-mt-[1px] [&amp;amp;:not(:first-child)]:py-1&quot;&gt;&lt;div class=&quot;h-16 w-16 shrink-0 not-prose&quot;&gt;&lt;img alt=&quot;Numa is smug&quot; class=&quot;h-16 w-16 shrink-0 max-w-none object-contain rounded-xs&quot; height=&quot;64&quot; src=&quot;https://stickers.xeiaso.net/sticker/numa/smug&quot; width=&quot;64&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;flex-1 min-w-0&quot;&gt;&lt;span class=&quot;font-semibold text-sm block mb-1&quot;&gt;&lt;a href=&quot;https://xeiaso.net/characters#numa&quot;&gt;Numa&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;mx-auto&quot;&gt;&lt;/span&gt;&lt;div class=&quot;text-fg-1 dark:text-fgDark-1 text-sm prose-p:my-2&quot;&gt;&lt;p&gt;That sure does sound like a great ideal, it would be horrible if something
        unforeseen came up to ruin it!&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
        &lt;h2&gt;Clang silently runs &lt;code&gt;wasm-opt&lt;/code&gt; from &lt;code&gt;$PATH&lt;/code&gt; behind your back&lt;/h2&gt;
        &lt;p&gt;Among other tools like &lt;code&gt;wasm2js&lt;/code&gt;, binaryen has &lt;a href=&quot;https://github.com/WebAssembly/binaryen/tree/main&quot;&gt;a bunch of other useful tools&lt;/a&gt; such as &lt;code&gt;wasm-opt&lt;/code&gt;. &lt;code&gt;wasm-opt&lt;/code&gt; optimizes WebAssembly compiler output to let you eke out more performance. This doesn't work in every circumstance, but when it does work it makes a &lt;em&gt;huge&lt;/em&gt; difference. As such, clang shells out to &lt;code&gt;wasm-opt&lt;/code&gt; when doing builds.&lt;/p&gt;
        &lt;p&gt;This normally makes sense, but in this case it caused builds to fail on my DGX Spark because its version of &lt;code&gt;wasm-opt&lt;/code&gt; is too old:&lt;/p&gt;
        &lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;$ uname -m &amp;amp;&amp;amp; which wasm-opt &amp;amp;&amp;amp; wasm-opt --version
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;aarch64
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;/usr/bin/wasm-opt
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;wasm-opt version 108
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;Compared to my workstation which installs &lt;code&gt;wasm-opt&lt;/code&gt; from &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt;:&lt;/p&gt;
        &lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;$ uname -m &amp;amp;&amp;amp; which wasm-opt &amp;amp;&amp;amp; wasm-opt --version
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;x86_64
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;/home/linuxbrew/.linuxbrew/bin/wasm-opt
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;wasm-opt version 130
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;Turns out that wasi-sdk and binaryen rely on the &lt;a href=&quot;https://github.com/WebAssembly/spec/blob/wasm-3.0/proposals/exception-handling/Exceptions.md&quot;&gt;WebAssembly Exceptions extension&lt;/a&gt;. This is a reasonable thing to assume given that wasi-sdk mostly assumes you're building things for web browsers and &lt;a href=&quot;https://caniuse.com/wf-wasm-exception-handling&quot;&gt;93.86% of browser users&lt;/a&gt; have a browser engine new enough to support it. C++ is also one of the main places where exceptions are used, so I guess WebAssembly-native exception handling removes a lot of boilerplate here.&lt;/p&gt;
        &lt;p&gt;Both wasmtime and wazero require you to flag into exception support. This is fine; we can just pass &lt;code&gt;-W exceptions=y&lt;/code&gt; to wasmtime and use a custom runner harness for wazero. The annoying part is what happens when my arm machine's anemic build of wasm-opt sees exception handling instructions, causing it to exit. This made the build fail.&lt;/p&gt;
        &lt;p&gt;The solution was to pass &lt;code&gt;--no-wasm-opt&lt;/code&gt; at the linking step. This removed one angle of irreproducibility.&lt;/p&gt;
        &lt;div class=&quot;flex space-x-2 bg-bg-soft dark:bg-bgDark-soft mx-auto min-h-fit         lg:w-[80ch] sm:w-[65ch] w-full         lg:p-4 p-2         // Base styles for all messages         mt-0 mb-0 rounded-none         // First message styles         first:mt-4 first:rounded-t-lg first:pb-2         // Last message styles         last:mb-4 last:rounded-b-lg last:pt-1         // Middle message top/bottom adjustment         [&amp;amp;:not(:first-child)]:-mt-[1px] [&amp;amp;:not(:first-child)]:py-1&quot;&gt;&lt;div class=&quot;h-16 w-16 shrink-0 not-prose&quot;&gt;&lt;img alt=&quot;Mara is hacker&quot; class=&quot;h-16 w-16 shrink-0 max-w-none object-contain rounded-xs&quot; height=&quot;64&quot; src=&quot;https://stickers.xeiaso.net/sticker/mara/hacker&quot; width=&quot;64&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;flex-1 min-w-0&quot;&gt;&lt;span class=&quot;font-semibold text-sm block mb-1&quot;&gt;&lt;a href=&quot;https://xeiaso.net/characters#mara&quot;&gt;Mara&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;mx-auto&quot;&gt;&lt;/span&gt;&lt;div class=&quot;text-fg-1 dark:text-fgDark-1 text-sm prose-p:my-2&quot;&gt;&lt;p&gt;I guess in the future we could make it use the version of &lt;code&gt;wasm-opt&lt;/code&gt; it just
        built to optimize the output, but that may be a premature optimization for
        now.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
        &lt;h2&gt;Clang relies on address layout for ordering things&lt;/h2&gt;
        &lt;p&gt;The version of clang that I use to compile &lt;code&gt;wasm2js&lt;/code&gt; has some address-sensitive code generation hiding in its exception handling path. Raw pointer values leak into the order a handful of &lt;code&gt;try_table&lt;/code&gt; blocks come out in. This surfaces as every build differing from the next by about 29 bytes:&lt;/p&gt;
        &lt;pre class=&quot;language-diff&quot;&gt;&lt;code class=&quot;language-diff code-highlight&quot;&gt;&lt;span class=&quot;code-line deleted&quot;&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token prefix deleted&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;002a9af0: 2802 0441 0647 0d00 1f40 0103 0820 0241  (..A.G...@... .A
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line deleted&quot;&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix deleted&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;002a9b00: 206a 2103 2002 4138 6a20 0141 086a 10b5   j!. .A8j .A.j..
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line deleted&quot;&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix deleted&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;002a9b10: 8881 8000 2104 0b1f 4001 0304 2003 2004  ....!...@... . .
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line inserted&quot;&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token inserted-sign inserted&quot;&gt;&lt;span class=&quot;token prefix inserted&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;002a9af0: 2802 0441 0647 0d00 1f40 0103 041f 4001  (..A.G...@....@.
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line inserted&quot;&gt;&lt;span class=&quot;token inserted-sign inserted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix inserted&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;002a9b00: 0309 2002 4120 6a21 0320 0241 386a 2001  .. .A j!. .A8j .
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line inserted&quot;&gt;&lt;span class=&quot;token inserted-sign inserted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix inserted&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;002a9b10: 4108 6a10 b588 8180 0021 040b 2003 2004  A.j......!.. . .
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;To make this easier to spot, here's a partial disassembly:&lt;/p&gt;
        &lt;pre class=&quot;language-diff&quot;&gt;&lt;code class=&quot;language-diff code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; i32.load  offset=4            ;; 28 02 04
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; i32.const 6                   ;; 41 06
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; i32.ne                        ;; 47
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; br_if     0                   ;; 0d 00
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line deleted&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token prefix deleted&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; try_table (catch_all_ref 8)   ;; 1f 40 01 03 08
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line inserted&quot;&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token inserted-sign inserted&quot;&gt;&lt;span class=&quot;token prefix inserted&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; try_table (catch_all_ref 4)   ;; 1f 40 01 03 04
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line inserted&quot;&gt;&lt;span class=&quot;token inserted-sign inserted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix inserted&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; try_table (catch_all_ref 9)   ;; 1f 40 01 03 09
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token inserted-sign inserted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   local.get 2                 ;; 20 02
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   i32.const 32                ;; 41 20
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   i32.add                     ;; 6a
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   local.set 3                 ;; 21 03
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   local.get 2                 ;; 20 02
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   i32.const 56                ;; 41 38
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   i32.add                     ;; 6a
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   local.get 1                 ;; 20 01
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   i32.const 8                 ;; 41 08
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   i32.add                     ;; 6a
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   call 17461                  ;; 10 b5 88 81 80 00
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   local.set 4                 ;; 21 04
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; end                           ;; 0b
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line deleted&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token prefix deleted&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; try_table (catch_all_ref 4)   ;; 1f 40 01 03 04
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   local.get 3                 ;; 20 03
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token unchanged&quot;&gt;&lt;span class=&quot;token line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token prefix unchanged&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token line&quot;&gt;   local.get 4                 ;; 20 04
        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;The computation is nearly identical, but the byte order is just different enough to also make the catch references differ. This also fires when you build this pinned version of wasm2js on arm64 machines because its pointer iteration order is different from it is on my workstation.&lt;/p&gt;
        &lt;p&gt;To work around this, I took two steps:&lt;/p&gt;
        &lt;ol&gt;
        &lt;li&gt;Disable address-space randomization for this build using &lt;code&gt;setarch --addr-no-randomize&lt;/code&gt;.&lt;/li&gt;
        &lt;li&gt;Create known good sha256 checksums for both x86_64 and arm64 via building this program on machines I trust.&lt;/li&gt;
        &lt;/ol&gt;
        &lt;p&gt;I also made a CI job ensure this:&lt;/p&gt;
        &lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml code-highlight&quot;&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Ensure reproducibility
        &lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;  &lt;span class=&quot;token key atrule&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token scalar string&quot;&gt;
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;    cd ./utils/wasm/wasm2js
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;    ./build.sh
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;    if sha256sum -c --status shasums.x86_64; then
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;      echo &quot;OK: rebuilt modules match the recorded x86_64 checksums&quot;
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;    elif sha256sum -c --status shasums.arm64; then
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;      echo &quot;OK: rebuilt modules match the recorded arm64 checksums&quot;
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;    else
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;      echo &quot;::error::rebuilt wasm2js/wasm-opt match neither recorded checksum set on ${{ matrix.runner }}&quot; &amp;gt;&amp;amp;2
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;      sha256sum wasm-opt_130.wasm wasm2js_130.wasm
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;      exit 1
        &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;code-line&quot;&gt;&lt;span class=&quot;token scalar string&quot;&gt;    fi&lt;/span&gt;
        &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;To be extra sure, we have this job run on both x86_64 and arm64 hosts. I'd really love to have this be reproducible across hosts, but that's an upstream LLVM bug that I am not powerful enough to tackle. If you work on LLVM and are reading this, it would be nice to set a seed of some kind to ensure that this iteration order is fixed across architectures.&lt;/p&gt;
        &lt;p&gt;At the very least builds are deterministic &lt;em&gt;within&lt;/em&gt; architectures. This may have to be good enough for now.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-18T00:00:00+00:00</dc:date>
</item>
<item rdf:about="https://hangingtogether.org/?p=17322">
	<title>HangingTogether: 120 blocks, one story: The collective creation of the OCLC Quilt</title>
	<link>https://hangingtogether.org/120-blocks-one-story-the-collective-creation-of-the-oclc-quilt/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;Collaboration. Serendipity. Diversity. These are the qualities that come to mind when I think about this year’s OCLC quilt and the community that created it.&lt;/p&gt;
&lt;span class=&quot;__iawmlf-post-loop-links&quot; hidden=&quot;hidden&quot;&gt;&lt;/span&gt;


&lt;p class=&quot;wp-block-paragraph&quot;&gt;The OCLC Quilters, a group of current and retired OCLC employees, have spent months creating a quilt of 120 cross-cut blocks to donate to the silent auction held during the &lt;a href=&quot;https://2026.alaannual.org/&quot;&gt;ALA 2026 Annual Conference&lt;/a&gt;. The &lt;a href=&quot;https://connect.ala.org/communities/community-home?CommunityKey=4474d269-f802-40b6-8118-19c74d1576de&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;ALA BiblioQuilters&lt;/a&gt; annually host this auction as a fundraiser for the &lt;a href=&quot;https://www.ala.org/scholarships/christopher-hoy-scholarship&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Christopher Hoy Scholarship&lt;/a&gt;, which awards a $5,000 scholarship each year to a U.S./Canadian citizen or permanent resident who is pursuing an MLS in an ALA-accredited program.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;This is the fourth year in a row that the OCLC Quilters have donated a quilt to the silent auction. Their work inspired me to take up sewing about a year ago, and I’m proud to move from admirer to participant, contributing to the OCLC quilt for the first time. Although left-handed people are about 10% of the population, three of the 13 people contributing to the OCLC quilt, including myself, are left-handed. While that doesn’t affect the result, it requires a few adjustments in technique and having the appropriate scissors. Sharing advice on adapting equipment and shopping for left-handed supplies is one of the ways we support each other.&lt;/p&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://hangingtogether.org/wp-content/uploads/2026/06/smaller-group-shot-quilters-club-2026-scaled.jpg&quot;&gt;&lt;img alt=&quot;Nine people in a bright lobby pose with a large, colorful patchwork quilt featuring a grid of multicolored fabric squares; four stand behind holding the quilt Four people sit on a blue bench in front and five stand behind the bench&quot; class=&quot;wp-image-17313&quot; height=&quot;576&quot; src=&quot;https://hangingtogether.org/wp-content/uploads/2026/06/smaller-group-shot-quilters-club-2026-1024x576.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;em&gt;Nine of the 13 contributors to the  OCLC Quilt for the ALA 2026 Annual Conference&lt;/em&gt;&lt;/figure&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Like all handicrafts, quilting is an activity with its own nomenclature. As a quilter and cataloger, I found myself wondering: “What controlled vocabulary terms could I use to describe the OCLC quilt?” There are several from vocabularies such as Library of Congress Subject Headings (LCSH) and Getty Art and Architecture Thesaurus (AAT). These are listed at the end of this blog.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;A quilt is created from many elements that may not be individually significant but form a meaningful whole, just like a WorldCat bibliographic record. The blocks of the quilt function like data elements in a WorldCat record, with contributions from multiple individuals creating the larger work.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Assembling the quilt&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;OCLC quilters sewed 120 blocks, which are the fabric squares comprising the quilt’s front. The blocks are a cross-cut design—a pattern chosen because it is accessible for novice sewists and makes good use of small fabric pieces. Quilters often save these leftover pieces, called “scraps,” from other projects for future use. Reusing scraps makes quilting a sustainable craft, and quilters often share them with one another. An experienced OCLC quilter, who keeps her scrap collection organized in true librarian fashion, donated most of the fabric pieces used for the blocks.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Experienced quilters arranged and sewed the blocks together and cut the batting (soft material used between the front and back sides of the quilt). The next step, in which three layers are sewn together with a decorative stitch, is quilting. This is the strict definition of the term “quilting,” although it is often used to refer to the entire process of creating a quilt. The pattern used for the quilt stitching is called “modern ties,” and it looks a bit like tied shoelace loops.&lt;/p&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://hangingtogether.org/wp-content/uploads/2026/06/2026quiltersclub-4.jpg&quot;&gt;&lt;img alt=&quot;Close-up of a colorful patchwork quilt made of bright, patterned fabric squares and cross-shaped strips; a green strip includes the white OCLC logo.&quot; class=&quot;wp-image-17307&quot; height=&quot;576&quot; src=&quot;https://hangingtogether.org/wp-content/uploads/2026/06/2026quiltersclub-4-1024x576.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;em&gt;An OCLC logo is incorporated into one of the quilt blocks&lt;/em&gt;&lt;/figure&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;The final step is to sew a long strip of binding fabric around the edges of the quilt, which will keep the ends from fraying as well as being decorative. Two labels were sewn into the binding: “Made in OH” and “Is it perfect? No.” Both of these labels are accurate descriptions of this quilt, but unlike in bibliographic descriptions, a certain amount of imperfection is not only tolerated but may be considered part of the quilt’s charm.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;A quilting tradition at ALA Annual&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;The OCLC quilt will be one of many available at the ALA BiblioQuilters silent auction during ALA Annual in Chicago, Illinois. The BiblioQuilters were founded at the 1998 ALA Annual Conference in Washington, D.C. Since 2000, the BiblioQuilters have had a silent auction of quilts every year except 2020 and 2021 (because of the pandemic). The quilts are usually available to view and bid on near the registration area. If you are attending ALA in Chicago, I highly recommend you visit the auction table to view them. After ALA, you may be inspired to browse the shelves of your local public library for 746.46, the Dewey Decimal number for quilting.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Subject vocabulary terms&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;For those readers who appreciate quilting and metadata, the following controlled vocabulary terms reflect concepts discussed in this blog. You might even find it fun to match the concepts to the natural language descriptions!&lt;/p&gt;



&lt;h3 class=&quot;wp-block-heading&quot;&gt;&lt;em&gt;Getty Art and Architecture Thesaurus terms&lt;/em&gt;&lt;/h3&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;http://vocab.getty.edu/page/aat/300227771&quot;&gt;batting&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;http://vocab.getty.edu/page/aat/300421867&quot;&gt;binding (textile material)&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;http://vocab.getty.edu/page/aat/300204896&quot;&gt;blocks (quilt components)&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;http://vocab.getty.edu/page/aat/300425244&quot;&gt;fabric scissors&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;http://vocab.getty.edu/page/aat/300053656&quot;&gt;quilting&lt;/a&gt;&lt;/p&gt;



&lt;h3 class=&quot;wp-block-heading&quot;&gt;&lt;em&gt;Library of Congress Subject Heading terms&lt;/em&gt;&lt;/h3&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;http://id.loc.gov/authorities/subjects/sh85109859&quot;&gt;Quilting&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;http://id.loc.gov/authorities/subjects/sh93006614&quot;&gt;Sewing—Left-handed techniques&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;a href=&quot;http://id.loc.gov/authorities/subjects/sh85134321&quot;&gt;Textile fabrics&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://hangingtogether.org/120-blocks-one-story-the-collective-creation-of-the-oclc-quilt/&quot;&gt;120 blocks, one story: The collective creation of the OCLC Quilt&lt;/a&gt; appeared first on &lt;a href=&quot;https://hangingtogether.org&quot;&gt;Hanging Together&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-17T21:41:58+00:00</dc:date>
	<dc:creator>Kate James</dc:creator>
</item>
<item rdf:about="https://blog.librarything.com/?p=11357">
	<title>LibraryThing (Thingology): Author Interview: Cynthia Pelayo</title>
	<link>https://blog.librarything.com/2026/06/author-interview-cynthia-pelayo/</link>
	<content:encoded>&lt;div style=&quot;float: right; margin: 0 0 1em 1em; clear: right;&quot;&gt;&lt;img alt=&quot;Cynthia Pelayo&quot; src=&quot;https://pics.cdn.librarything.com/picsizes/17/52/17529330-r-h0-w1200-pv25_63764a354377477742414141_v5.jpg&quot; style=&quot;width: 300px;&quot; /&gt;&lt;/div&gt;
&lt;p&gt;LibraryThing is pleased to sit down this month with groundbreaking author and poet &lt;a href=&quot;https://www.librarything.com/a/7004215/Cynthia-Pelayo&quot;&gt;Cynthia Pelayo&lt;/a&gt;, who in 2022 became the first Puerto Rican and first Latina to win a &lt;a href=&quot;https://www.librarything.com/award/267/Bram-Stoker-Award&quot;&gt;Bram Stoker Award&lt;/a&gt; after her &lt;a href=&quot;https://www.librarything.com/work/28870943/t/Crime-Scene&quot;&gt;Crime Scene&lt;/a&gt; took the prize in the Poetry Collection category. Her &lt;a href=&quot;https://www.librarything.com/work/25770246/t/Into-The-Forest-And-All-The-Way-Through&quot;&gt;Into The Forest And All The Way Through&lt;/a&gt; was a 2020 nominee, also in the Poetry Collection category, while her &lt;a href=&quot;https://www.librarything.com/work/25858317/t/Children-of-Chicago&quot;&gt;Children of Chicago&lt;/a&gt; was a 2021 nominee in the Novel category. Pelayo earned a BA in Journalism from Columbia College Chicago, a MS from Roosevelt University, and a MFA in Writing from the School of the Art Institute of Chicago. She is currently pursuing a PhD in English. Her MFA writing thesis, &lt;a href=&quot;https://www.librarything.com/work/13076599/t/Loter%C3%ADa&quot;&gt;Lotería&lt;/a&gt;, was republished in 2023, winning an &lt;a href=&quot;https://www.librarything.com/award/7619/International-Latino-Book-Award&quot;&gt;International Latino Book Award&lt;/a&gt; Silver Medal in the Best Collection of Short Stories category. A co-publisher of &lt;a href=&quot;https://burialday.com/&quot;&gt;Burial Day Books&lt;/a&gt;, which focuses on horror writing, she is the author of numerous other books, stories and poems, including novels such as &lt;a href=&quot;https://www.librarything.com/work/29862427/t/The-Shoemakers-Magician&quot;&gt;The Shoemaker’s Magician&lt;/a&gt; (2023), &lt;a href=&quot;https://www.librarything.com/work/31379674/t/Forgotten-Sisters&quot;&gt;Forgotten Sisters&lt;/a&gt; (2024), and &lt;a href=&quot;https://www.librarything.com/work/33461537/t/Vanishing-Daughters&quot;&gt;Vanishing Daughters&lt;/a&gt; (2025). Her new novel, &lt;a href=&quot;https://www.librarything.com/work/35204745/t/It-Came-From-Neverland&quot;&gt;It Came from Neverland&lt;/a&gt;, a work of horror inspired by the classic &lt;a href=&quot;https://www.librarything.com/work/6252/t/Peter-Wendy&quot;&gt;Peter Pan&lt;/a&gt;, was published by Crooked Lane Books earlier this month. Pelayo sat down with Abigail this month to discuss her new book.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tell us a little bit about &lt;a href=&quot;https://www.librarything.com/work/35204745/t/It-Came-From-Neverland&quot;&gt;It Came from Neverland&lt;/a&gt;. How did the idea for the story first come to you?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Like many people, I grew up watching the Disney version of &lt;a href=&quot;https://www.librarything.com/work/4047411/t/Peter-Pan-%5B1953-film%5D&quot;&gt;Peter Pan&lt;/a&gt;, and then I remember watching &lt;a href=&quot;https://www.librarything.com/work/799400/t/Hook-%5B1991-film%5D&quot;&gt;Hook&lt;/a&gt; with Robin Williams and being captivated, seeing Peter Pan as an adult who had to remember who he was. There was an older Wendy in that film, and that always stayed with me because I really wanted to know what Wendy’s story looked like aged into young adulthood.&lt;/p&gt;
&lt;p&gt;When I went back to J.M. Barrie’s Peter and Wendy and the original play, I worked out that Wendy would be in her early twenties at the start of the First World War. And then I learned that many young men at that time lied about their age to enlist, some of them were barely more than boys. It all felt like a perfect juxtaposition, these boys going off to war and Wendy’s trauma round caring for the Lost Boys from Neverland.&lt;/p&gt;
&lt;p&gt;A woman of that time period would certainly not be believed if she tried to tell the truth about what she experienced as a child in Neverland, and so that certainly played into her experience. Then I thought well, Wendy at this age would certainly be in a position that reflected her character, and schoolteacher fit perfectly. The story wrote itself, because I knew that Wendy would do all that she could to protect those children and I also knew Peter Pan would surely return to whisk more children away to Neverland. So this story is that tale, what does she do to stop Peter Pan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What drew you to &lt;a href=&quot;https://www.librarything.com/work/6252/t/Peter-Wendy&quot;&gt;Peter Pan&lt;/a&gt;, and what made you feel it was horror?&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Peter Pan without Wendy Darling is just a boy screaming into the dark. The story only works because Wendy agrees to go with him to Neverland, and she goes because she is sweet and kind and she believes him. Wendy’s only failure here was that she had a good heart, which is just so sad because her being nice is why she was taken advantage of. She trusted someone who was manipulating her. Peter told her she was special, but what he really meant was that she was useful. She was given the role of mother to the Lost Boys, not because she was truly loved or valued, but because someone needed to do the mending. This is not fantasy. This is a domestic horror story dressed in fairy dusty.&lt;/p&gt;
&lt;p&gt;In &lt;i&gt;Peter and Wendy&lt;/i&gt; we’re also essentially told that growing up is a curse, but I push back on that. Growing up is the adventure, becoming yourself, and gaining autonomy is the gift.&lt;/p&gt;
&lt;p&gt;Peter’s entire pitch was stay here, never change, never leave me. Shrink. Lost yourself to praise me. That’s not love. That’s control.&lt;/p&gt;
&lt;p&gt;The horror was always there. I just removed the glitter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is it about fairy tales that speaks to you?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fairy tales were the very first stories I was told as a child. “Little Red Riding Hood,” “Hansel and Gretel,” “Cinderella,” more. I hold all of them dear, even though many of them have a thread of terror, but I suppose that’s why I’m the writer I am today.&lt;/p&gt;
&lt;p&gt;What I’ve come to understand is that fairy tales are an early societal warning system, in a way. They prepared us for danger, and that’s why they still work. Little Red Riding Hood is everyone who has been told not to talk to strangers on their way home. Bluebeard is everyone who has been warned to be cautious with suitors. Snow White is every person who has fallen victim to the cruelty of jealousy. These stories survived centuries because beneath them there is some truth that can be applied to many of our experiences today. They encode the things that we should say out loud, but don’t because of all of those strange polite society rules, things like – don’t trust the stranger who flatters you, the beautiful thing is likely the trap, or even, the person who promises you forever can very well be the one who seeks to destroy you.&lt;/p&gt;
&lt;p&gt;When looking at all of these through a horror lens, they echo to the horror writer what is our job – and that is to tell the truth. Horror is the genre of truth, to highlight the danger, to be a witness to survival, more. So much of what fairy tales do speak to this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are there other classic works you’re interested in transforming?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yes, and the one upcoming is a &lt;a href=&quot;https://www.librarything.com/work/8294/t/Frankenstein&quot;&gt;Frankenstein&lt;/a&gt; retelling titled &lt;i&gt;Everina&lt;/i&gt; from Union Square &amp;amp; Co. I have more, but I can’t mention those quite yet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tell us a little bit about your writing process.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I generally write in the early morning. In the evenings that’s when I tend to answer email or work on lectures for any workshops I’m teaching or work on any of my own homework.&lt;/p&gt;
&lt;p&gt;In terms of my actual writing sessions, I read before I write, generally I will read some poetry and then start writing. If you’re asking about the big questions regarding how do I create something, I think I’m a pretty methodical writer in that yes, I allow discovery to happen, but as of recent, there is a lot of researching, planning, and pre-writing that goes into my actual writing. Then there is editing, and that is an entirely different process. I tell writers to think of these processes as three separate demands, research and preparation requires one aspect of your brain, editing requires a different aspect of your brain and the actual writing, which is a completely different process. When you are writing you are creating, allow yourself to have fun and explore when you’re actually writing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What comes next for you?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Something Followed Us Home: Tales of Latiné Horror&lt;/i&gt; comes out September 29 from Simon &amp;amp; Schuster. It’s an anthology I edited that features Mariana Enríquez, Agustina Bazterrica, Mónica Ojeda, Isabel Cañas, Daniel José Older, Zoraida Córdova, and others, with a foreword by Brenda Lozano. Latiné horror isn’t a subgenre, it’s a tradition that I’m grateful to have had the opportunity to share with readers.&lt;/p&gt;
&lt;p&gt;After that, &lt;i&gt;Everina&lt;/i&gt;, which is my &lt;i&gt;Frankenstein&lt;/i&gt; retelling.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tell us about your library. What’s on your own shelves?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I read a lot of poetry and classics. My bookshelves reflect that, so we have &lt;a href=&quot;https://www.librarything.com/a/1693/Federico-Garc%C3%ADa-Lorca&quot;&gt;Lorca&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/23197/C%C3%A9sar-Vallejo&quot;&gt;Vallejo&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/66591/Alejandra-Pizarnik&quot;&gt;Pizarnik&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/1383/Anne-Sexton&quot;&gt;Anne Sexton&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/6746/Gwendolyn-Brooks&quot;&gt;Gwendolyn Brooks&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/1994/Adrienne-Rich&quot;&gt;Adrienne Rich&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/5210028/Charles-Dickens&quot;&gt;Dickens&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/134/Fyodor-Dostoyevsky&quot;&gt;Dostoevsky&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/89/Homer&quot;&gt;Homer&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/45/John-Steinbeck&quot;&gt;Steinbeck&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/113/Leo-Tolstoy&quot;&gt;Tolstoy&lt;/a&gt;, more. Yes, there’s horror as well, &lt;a href=&quot;https://www.librarything.com/a/5209751/Shirley-Jackson&quot;&gt;Shirley Jackson&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/458/Angela-Carter&quot;&gt;Angela Carter&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/2120703/Mariana-Enr%C3%ADquez&quot;&gt;Mariana Enríquez&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/6774413/Carmen-Maria-Machado&quot;&gt;Carmen Maria Machado&lt;/a&gt;, &lt;a href=&quot;https://www.librarything.com/a/484/Daphne-Du-Maurier&quot;&gt;Daphne du Maurier&lt;/a&gt;. And, of course fairy tales, so many fairy tales and non-fiction texts analyzing fairy tales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What have you been reading lately, and what would you recommend to other readers?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am reading &lt;a href=&quot;https://www.librarything.com/work/23754927/t/Piranesi&quot;&gt;Piranesi&lt;/a&gt; by &lt;a href=&quot;https://www.librarything.com/a/216/Susanna-Clarke&quot;&gt;Susanna Clarke&lt;/a&gt;. I love world building, and here, we have a world that operates on its own logic, the architecture of the space, and the feelings it evokes. Clarke gives us infinite halls that become both prison and sanctuary, and it’s this tension that I’m drawn to as both a reader and writer.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-17T18:48:52+00:00</dc:date>
	<dc:creator>Abigail Adams</dc:creator>
</item>
<item rdf:about="https://blog.okfn.org/?p=49553">
	<title>Open Knowledge Foundation: [Webinar] Traceable AI for Public Data: An Open Model for Latin America</title>
	<link>https://blog.okfn.org/2026/06/16/webinar-traceable-ai-for-public-data-an-open-model-for-latin-america/</link>
	<content:encoded>&lt;p&gt;Join OKFN and the UN Big Data Regional Hub to learn about our ongoing experiments integrating AI to public open data portals&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://blog.okfn.org/2026/06/16/webinar-traceable-ai-for-public-data-an-open-model-for-latin-america/&quot;&gt;[Webinar] Traceable AI for Public Data: An Open Model for Latin America&lt;/a&gt; first appeared on &lt;a href=&quot;https://blog.okfn.org&quot;&gt;Open Knowledge Blog&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-16T17:41:54+00:00</dc:date>
	<dc:creator>OKFN</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-4503292949532760618.post-2643629132990742140">
	<title>David Rosenthal: Chatbots vs. Ozone</title>
	<link>https://blog.dshr.org/2026/05/chatbots-vs-ozone.html</link>
	<content:encoded>&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicRbHfRlOwg_CeWs1d6S4fYlrkTLr08wE1ZUZqzmADg8tIUXmWgZGvAQg4VPg4Cqh7n3sx9e7OQXw8dlHflhf_GZEzbChcPAI02F7tVNP22brOfLvs2h7Zd0q9J15d8J0lpsI-3pf7cF2SZCjlStW8HINwXbKS1VpEqfzEyP9uLqE07run7dhFh2dYvpLj/s2102/Constellation.png&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;170&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicRbHfRlOwg_CeWs1d6S4fYlrkTLr08wE1ZUZqzmADg8tIUXmWgZGvAQg4VPg4Cqh7n3sx9e7OQXw8dlHflhf_GZEzbChcPAI02F7tVNP22brOfLvs2h7Zd0q9J15d8J0lpsI-3pf7cF2SZCjlStW8HINwXbKS1VpEqfzEyP9uLqE07run7dhFh2dYvpLj/w200-h170/Constellation.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://platform.leolabs.space/visualizations/leo&quot;&gt;Source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
Back in February I posted &lt;a href=&quot;https://blog.dshr.org/2026/02/the-kessler-syndrome.html&quot;&gt;&lt;i&gt;The Kessler Syndrome&lt;/i&gt;&lt;/a&gt;, which also included a brief section mentioning the impacts of the proposed megaconstellations on the environment, specifically global warming from CO2 and black carbon, and depletion of the ozone layer. Three months earlier Anton Petrov had examined the last of these in &lt;a href=&quot;https://www.youtube.com/watch?v=iDaG4zt0NKc&quot;&gt;&lt;i&gt;Risk of Ozone Layer Destruction from Internet Satellite Swarms and Rocket Fuel&lt;/i&gt;&lt;/a&gt;.  He has now followed up with &lt;a href=&quot;https://www.youtube.com/watch?v=oKK0dgDIxKY&quot;&gt;&lt;i&gt;SpaceX Is Conducting a Giant Chemical Experiment on Our Atmosphere Without Realizing&lt;/i&gt;&lt;/a&gt;.  Below the fold I survey the papers Petrov cited and a few others.&lt;br /&gt;
&lt;span&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/span&gt;
The papers involved are, in date order, as follows together with extracts from their abstracts:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2021EF002612&quot;&gt;&lt;i&gt;Impact of Rocket Launch and Space Debris Air Pollutant Emissions on Stratospheric Ozone and Global Climate&lt;/i&gt;&lt;/a&gt; by Robert Ryan &lt;i&gt;et al&lt;/i&gt; (9&lt;sup&gt;th&lt;/sup&gt; June 2022):&lt;br /&gt;
&lt;blockquote&gt;
Rockets, unlike other anthropogenic pollution sources, emit gaseous and solid chemicals directly into the upper atmosphere. We compile inventories of these chemicals from rocket launches in 2019 and projections of future growth and speculative space tourism activity. We incorporate these in a 3D atmospheric chemistry model to simulate the impact on climate and the protective stratospheric ozone layer. We find that loss of ozone due to current rockets is small, but that routine space tourism launches may undermine progress made by the Montreal Protocol in reversing ozone depletion in the Arctic springtime upper stratosphere. The BC (or soot) particles from rockets are also of great concern, as these are almost five hundred times more efficient at warming the atmosphere than all other sources of soot combined.
&lt;/blockquote&gt;
Note that even four years ago it was already clear that the space industry was both depleting ozone and aggravating global warming. But this was before the scale of the proposed mega constellations was evident.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.pnas.org/doi/epdf/10.1073/pnas.2313374120&quot;&gt;&lt;i&gt;Metals from spacecraft reentry in stratospheric aerosol particles&lt;/i&gt;&lt;/a&gt; by Daniel Murphy &lt;i&gt;et al&lt;/i&gt; (7&lt;sup&gt;th&lt;/sup&gt; September 2023):&lt;br /&gt;
&lt;blockquote&gt;
So far, models of spacecraft reentry have focused on understanding the hazard presented by objects that survive to the surface rather than on the fate of the metals that vaporize. Here, we show that metals that vaporized during spacecraft reentries can be clearly measured in stratospheric sulfuric acid particles. Over 20 elements from reentry were detected and were present in ratios consistent with alloys used in spacecraft. The mass of lithium, aluminum, copper, and lead from the reentry of spacecraft was found to exceed the cosmic dust influx of those metals. About 10% of stratospheric sulfuric acid particles larger than 120 nm in diameter contain aluminum and other elements from spacecraft reentry. Planned increases in the number of low earth orbit satellites within the next few decades could cause up to half of stratospheric sulfuric acid particles to contain metals from reentry.
&lt;/blockquote&gt;
Much of the reentry burn happens above the stratosphere, and it takes time for the aluminum nanoparticles to drift down to the levels where they were collected. So the 10% number represents pollution from an earlier period with fewer reentries that the 2020s. Murphy notes that:&lt;br /&gt;
&lt;blockquote&gt;
Most of the meteoric mass is deposited at altitudes between 75 and 110 km by a very large number of sub-millimeter meteoroids. Reentering spacecraft, which are larger and moving more slowly, ablate between 40 and 70 km over a ~300 km long footprint
&lt;/blockquote&gt;
His samples were collected at 19km altitude.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2024GL109280&quot;&gt;&lt;i&gt;Potential Ozone Depletion From Satellite Demise During Atmospheric Reentry in the Era of Mega-Constellations&lt;/i&gt;&lt;/a&gt; by José P. Ferreira &lt;i&gt;et al&lt;/i&gt; (11&lt;sup&gt;th&lt;/sup&gt; June 2024):&lt;br /&gt;
&lt;blockquote&gt;
This paper investigates the oxidation process of the satellite's aluminum content during atmospheric reentry utilizing atomic-scale molecular dynamics simulations. We find that the population of reentering satellites in 2022 caused a 29.5% increase of aluminum in the atmosphere above the natural level, resulting in around 17 metric tons of aluminum oxides injected into the mesosphere. The byproducts generated by the reentry of satellites in a future scenario where mega-constellations come to fruition can reach over 360 metric tons per year. As aluminum oxide nanoparticles may remain in the atmosphere for decades, they can cause significant ozone depletion.
&lt;/blockquote&gt;
Ferreira &lt;i&gt;et al&lt;/i&gt; confirm the potentially long delay between reentry and the nanoparticles reaching the ozone layer and &lt;a href=&quot;https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2024GL109280&quot;&gt;depleting it&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;
we find that these reentry byproducts may take up to 30 years to settle from the top of the mesosphere into the stratospheric ozone layer. Upon reaching an altitude of about 40 km, aluminum oxides catalyze chlorine activation which promotes ozone depletion. This suggests that concentrations of aluminum oxide compounds may start increasing in the mesosphere well before reaching the stratospheric ozone layer. This would introduce a noticeable delay between the beginning of the injection process when orbiting bodies are decommissioned and the eventual ozone-depletion consequences in the stratosphere.
&lt;/blockquote&gt;
&lt;a href=&quot;https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2024JD042442&quot;&gt;&lt;i&gt;Investigating the Potential Atmospheric Accumulation and Radiative Impact of the Coming Increase in Satellite Reentry Frequency&lt;/i&gt;&lt;/a&gt; by Christopher Maloney &lt;i&gt;et al&lt;/i&gt; (21&lt;sup&gt;st&lt;/sup&gt; March 2025):&lt;br /&gt;
&lt;blockquote&gt;
A lack of observations and validated models of reentry demise limits our ability to simulate the complex aerosols associated with reentry, which makes estimating the climate impacts difficult. Aluminum is a primary satellite component and will likely be emitted during reentry vaporization in the form of alumina. Unmodified alumina is a useful approximation for metallic reentry aerosol. In this study, we simulate a potential yearly emission of 10,000 metric tons of alumina from reentering space debris. We investigate how the location of atmospheric accumulation, aerosol size distribution, and radiative properties of reentry alumina impacts the middle atmosphere. We find that 20,000–40,000 metric tons of alumina accumulates at high latitudes between 10 and 30 km in both hemispheres. Small changes in mesospheric heating rates lead to 1.5-K temperature anomalies in the middle atmosphere at high latitudes. These temperature anomalies are accompanied by changes in wind speed in the polar vortex.
&lt;/blockquote&gt;
So there are thermal effects on the climate as well as the effects on the ozone layer.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.nature.com/articles/s41612-025-01098-6&quot;&gt;&lt;i&gt;Near-future rocket launches could slow ozone recovery&lt;/i&gt;&lt;/a&gt; by Laura Revell &lt;i&gt;et al&lt;/i&gt; (9&lt;sup&gt;th&lt;/sup&gt; June 2025):&lt;br /&gt;
&lt;blockquote&gt;
To understand if significant ozone losses could occur as the launch industry grows, we examine two scenarios. Our ‘ambitious’ scenario (2040 launches/year) yields a −0.29% depletion in annual-mean, near-global total column ozone in 2030. Antarctic springtime ozone decreases by 3.9%. Our ‘conservative’ scenario (884 launches/year) yields −0.17% annual, near-global depletion; current licensing rates suggest this scenario may be exceeded before 2030. Ozone losses are driven by the chlorine produced from solid rocket motor propellant, and black carbon which is emitted from most propellants. The ozone layer is slowly healing from the effects of CFCs, yet global-mean ozone abundances are still 2% lower than measured prior to the onset of CFC-induced ozone depletion. Our results demonstrate that ongoing and frequent rocket launches could delay ozone recovery. Action is needed now to ensure that future growth of the launch industry and ozone protection are mutually sustainable.
&lt;/blockquote&gt;
Note that this paper addresses only the ozone depletion from launches, not from reentry. But their 'ambitious' scenario of 5.6 launches/day is far short of Musk's ambitions, let alone the other planned megaconstellations. My understanding is that the 2040 launches/year in their scenario are of Falcon 9 class vehicles but &quot;only 4.4% of launches are using vehicles designed for re-entry&quot;, which is implausible. But the mega-constellations can't be built or maintained with Falcon 9s.&lt;br /&gt;
&lt;br /&gt;
Will Lockett is, as &lt;a href=&quot;https://blog.dshr.org/2023/11/there-is-no-planet-b-part-1.html&quot;&gt;one&lt;/a&gt; &lt;a href=&quot;https://blog.dshr.org/2026/02/teslas-not-robotaxi-service.html&quot;&gt;should&lt;/a&gt; &lt;a href=&quot;https://boingboing.net/2026/04/01/musk-says-robot-works-great-just-not-ready-to-show-anyone-yet.html&quot;&gt;be&lt;/a&gt;, skeptical of Musk's claims. In &lt;a href=&quot;https://wlockett.medium.com/musks-orbital-data-centre-idea-is-getting-more-stupid-by-the-day-e941ef96d52b&quot;&gt;&lt;i&gt;Musk’s Orbital Data Centre Idea Is Getting More Stupid By The Day&lt;/i&gt;&lt;/a&gt; he analyzes the claimed &quot;million satellite data center&quot; assuming it is built, as Musk claims, with Starship but over 15 years, a longer timescale than Musk's:&lt;br /&gt;
&lt;blockquote&gt;
To achieve that, they would need to launch 120,000 satellites per year. Over the 15 years, they would launch 1.8 million satellites, but 800,000 of them would fail (as part of our 9% failure rate), leaving a total operational fleet of one million satellites. This equates to 3,158 Starship launches per year, or nearly nine launches per day. For some context, the current launch rate for Starship is just five per year.&lt;br /&gt;
...&lt;br /&gt;
In order to keep a million satellites in the constellation, it needs to be maintained. So, each year, SpaceX would have to launch 90,000 AI Sat Minis to replace the roughly 9% of the constellation that failed. That equates to 2,368 Starship launches per year, or 6.4 per day.
&lt;/blockquote&gt;
That's 9 launches/day for 15 years then 6.4 launches/day indefinitely of a much rocket that is vastly bigger than Falcon 9 and is completely re-usable.&lt;br /&gt;
&lt;br /&gt;
Of course, these claims are ridiculous - neither logistically nor economically feasible. But assuming Starship or a competitor such as Blue Origin does manage to create a &lt;a href=&quot;https://wlockett.medium.com/starship-is-going-nowhere-52c0cf555de0&quot;&gt;reliable, reusable, 100 ton to LEO launch vehicle&lt;/a&gt;, there will be a lot more mass in LEO and a lot more of it reentering.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.nature.com/articles/s43247-025-03154-8&quot;&gt;&lt;i&gt;Measurement of a lithium plume from the uncontrolled re-entry of a Falcon 9 rocket&lt;/i&gt;&lt;/a&gt; by Robin Wing &lt;i&gt;et al&lt;/i&gt; (19&lt;sup&gt;th&lt;/sup&gt; February 2026):&lt;br /&gt;
&lt;blockquote&gt;
A 10-fold enhancement of lithium atoms was detected at 96 km altitude by a resonance lidar at Kühlungsborn, Germany, approximately 20 hours after the uncontrolled re-entry of a Falcon 9 upper stage. The upper-atmospheric extension of the ICON general circulation model, nudged to ECMWF, was used to calculate winds. Backwards trajectories, including wind variability as measured by radar, traced air masses to the Falcon 9 re-entry path at 100 km altitude, west of Ireland. This study presents the first measurement of upper-atmospheric pollution resulting from space debris re-entry and the first observational evidence that the ablation of space debris can be detected by ground-based lidar. The analysis of geomagnetic conditions, atmospheric dynamics, and ionospheric measurements supports the claim that the enhancement was not of natural origin. Our findings demonstrate that identifying pollutants and tracing them to their sources is achievable, with significant implications for monitoring and mitigating space emissions in the atmosphere.
&lt;/blockquote&gt;
The effect of lithium and other spacecraft ingredients on the ozone layer doesn't appear to have been studied compared to aluminum. To be fair, there will be a lot more aluminum.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2025EF007229&quot;&gt;&lt;i&gt;Radiative Forcing and Ozone Depletion of a Decade of Satellite Megaconstellation Missions&lt;/i&gt;&lt;/a&gt; by Connor Barker &lt;i&gt;et al&lt;/i&gt; (14&lt;sup&gt;th&lt;/sup&gt; May 2026):&lt;br /&gt;
&lt;blockquote&gt;
We use a global inventory of launch and re-entry emissions covering the onset of the megaconstellation era (2020–2022), and project these to 2029 based on 2020–2022 growth rates. We implement this inventory into a 3D atmospheric chemistry model to determine the impacts of megaconstellations on the ozone layer and climate. We find that global stratospheric ozone depletion from all mission types is relatively small compared to surface sources and megaconstellation missions only account for about one-tenth of this depletion. This is because rockets launching megaconstellations almost all use kerosene, a large source of black carbon or soot particles, but not of chemicals such as chlorine that directly destroy ozone. Soot from rockets absorbs sunlight, warming the upper layers of the atmosphere and decreasing the amount of sunlight reaching Earth's lower atmosphere, causing it to cool. Megaconstellation missions are responsible for about half of this climate effect. In this regard, rockets launching megaconstellations and other missions are like small-scale stratospheric aerosol injection experiments without forethought for potential unintended consequences.
&lt;/blockquote&gt;
Again, this paper addresses only atmospheric impacts from launches, not from reentries. And, the launch rate for 2020-2022 is far less, and uses much smaller rockets, than the proposed &quot;million satellite data center&quot; and its competitors.&lt;br /&gt;
&lt;br /&gt;</content:encoded>
	<dc:date>2026-06-16T15:00:00+00:00</dc:date>
	<dc:creator>David. (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="https://lil.law.harvard.edu/blog/2026/06/16/an-open-hardware-tpu-on-your-desk/">
	<title>Harvard Library Innovation Lab: An Open Hardware TPU on Your Desk</title>
	<link>https://lil.law.harvard.edu/blog/2026/06/16/an-open-hardware-tpu-on-your-desk/</link>
	<content:encoded>&lt;p&gt;The open-source movement emphasizes the power of freely modifiable, flexible code to support transparency, collaboration, and building outside vendor lock-in. Open hardware extends that logic to the physical layer: chips you can read, modify, and build on. All software runs on hardware, and over the past few years, the ground under the hardware industry has been shifting. Since 2022, the &lt;a href=&quot;https://www.congress.gov/crs-product/R48642&quot;&gt;United States&lt;/a&gt;, the &lt;a href=&quot;https://www.csis.org/analysis/japan-and-netherlands-announce-plans-new-export-controls-semiconductor-equipment&quot;&gt;Netherlands, and Japan&lt;/a&gt; have progressively tightened export controls on advanced chips and the equipment used to manufacture them; &lt;a href=&quot;https://www.reuters.com/world/china/china-mandates-50-domestic-equipment-rule-chipmakers-sources-say-2025-12-30/&quot;&gt;China has responded with a state-backed effort to reproduce every layer of that supply chain at home&lt;/a&gt;. Policy analysts now routinely describe the trajectory as a “fragmentation” or “decoupling” of the global semiconductor market into separate technology spheres. Hardware costs are climbing across the board, so accessing open hardware feels all the more relevant for a group building open-source software.&lt;/p&gt;
&lt;p&gt;Open hardware doesn’t make the chips any cheaper. What it changes is what a chip you already own is allowed to become or what kinds of application-specific chips you can create. A single FPGA (Field-Programmable Gate Array) on a shelf can be a video codec today, a custom search accelerator the next, and a faithful copy of a decommissioned architecture the day after that. The unit cost is what it is; the value you can extract from that unit is no longer fixed by a vendor. For institutions whose time horizons stretch over decades, like libraries, archives, and public-interest research groups, that reconfigurability is the core of the open-hardware argument that compounds.&lt;/p&gt;
&lt;p&gt;There are no known open-source hardware implementations of &lt;a href=&quot;https://docs.cloud.google.com/tpu/docs/system-architecture-tpu-vm&quot;&gt;Google’s TPU&lt;/a&gt;, the in-house chip family Google designed to accelerate neural network math. The silicon is proprietary and not directly purchasable by consumers except in edge TPU form (e.g., &lt;a href=&quot;https://www.coral.ai/&quot;&gt;Google Coral&lt;/a&gt;). This field note reports a small experiment porting the &lt;a href=&quot;https://github.com/UCSBarchlab/OpenTPU&quot;&gt;OpenTPU project&lt;/a&gt;, a Python simulation of Google’s TPU published by UCSB’s ArchLab, to an inexpensive FPGA board to explore the pros and cons of using more open hardware. To keep the experiment lightweight, most of the code was written by AI coding agents, with a human directing the work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why FPGAs, For A Lab Like This One&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An FPGA (Field-Programmable Gate Array) is a chip whose internal logic can be reconfigured. You describe the circuit in a hardware description language, SystemVerilog, compile it to a bitstream, and load it onto the board. A CPU runs your program. An FPGA becomes your program. FPGAs are the obvious place to start, because they’re the one piece of reconfigurable silicon a small lab can actually buy and program today.&lt;/p&gt;
&lt;p&gt;The practical difference lies in the shape of the problems they solve. A CPU is a generalist reading a manual one step at a time. A GPU is a factory floor of thousands executing the exact same standard math in unison. An FPGA is a machine whose gears are configured to fit exactly one algorithm. They excel at problems with strange shapes. If your workload involves multiplying massive, uniform matrices to train a language model, you want a GPU. But if your work requires parsing millions of irregular text strings as they stream, finding exact bit-level matches across a sprawling archive, or piping data through a custom hash without ever pausing to fetch instructions from memory, an FPGA is arguably the more elegant approach. A dataset is sometimes only as legible as the software that reads it, and that software is only as runnable as the hardware underneath. An open FPGA design can preserve a faithful copy of obsolete circuitry, thereby preserving the means to read data, not just the data itself.&lt;/p&gt;
&lt;figure class=&quot;items-center text-center&quot;&gt;
  &lt;a class=&quot;no-underline border-none bg-none&quot; href=&quot;https://www.wevolver.com/article/fpga&quot; style=&quot;background: none;&quot;&gt;
    &lt;img alt=&quot;Diagram illustrating FPGA architecture.&quot; class=&quot;w-full&quot; src=&quot;https://lil-blog-media.s3.amazonaws.com/wevolver-fpga-diagram.png&quot; style=&quot;margin: 0;&quot; /&gt;
  &lt;/a&gt;
  Source: &lt;a href=&quot;https://www.wevolver.com/article/fpga&quot;&gt;Wevolver&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;For an institution like the lab, that distinction matters. Libraries, archives, public-interest research groups, and smaller labs deal with workloads and questions that are awkwardly sized: too large for a laptop, too specialized to deserve a recurring cloud bill, too long-running for any one grant cycle. For a well-resourced lab, the answer is cloud GPUs. For everyone else, the answer has historically been to wait or to scale down the question. That is why open hardware matters here: it gives smaller institutions a path to specialized computing without waiting for ideal market conditions.&lt;/p&gt;
&lt;p&gt;A $300 board on a desk can run a custom-designed circuit, tailored to one workload, indefinitely, without anyone’s permission and without a metered bill. A physical circuit sheds the overhead of an operating system and the constant fetch-and-exec cycle, drawing a fraction of the power of a standard CPU. For a public-interest lab, this efficiency makes running some workloads both financially and environmentally sustainable.&lt;/p&gt;
&lt;p&gt;TPU-style architectures are particularly well-suited to this kind of work because of the systolic array at their core. A systolic array is a grid of small multiply-add units that pass partial results to their neighbors on every clock tick, making it efficient for matrix math because data flows through the grid rather than being fetched repeatedly from memory. That structure is designed for exactly the dense-matrix operations that underpin embedding generation, similarity search, and the neural network inference behind modern document analysis. This is the kind of regular, spatial structure FPGAs are built to host. A grid of identical small units, wired to their neighbors, all ticking together, is close to a literal description of what an FPGA’s fabric already is.&lt;/p&gt;
&lt;p&gt;Designs published openly in SystemVerilog are reusable across institutions, as open code is. What has kept this out of reach was never the silicon; it was the labor: months of vendor-tool learning, a small group of knowledgeable practitioners, and debugging cycles unique to physical systems. That cost is what AI coding agents have started to chip away at, making the open-hardware case more practical.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Porting OpenTPU and the Silicon Boundary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenTPU is a published academic re-implementation of Google’s first-generation TPU implemented in Python code that models the hardware’s behavior, not software meant to run on it. The hardware target of this experiment was the &lt;a href=&quot;https://shop.alchitry.com/products/alchitry-pt&quot;&gt;Alchitry Pt v2&lt;/a&gt;, a roughly $300 board built on an Xilinx Artix-7 chip, with an add-on that exposes USB 3.0 to a host PC. I worked with AI coding agents to describe goals in plain English, review edits, and iterate. A sandbox repository came first: blink an LED, echo bytes, talk to the USB chip. That groundwork paid off within hours of starting the real port. The OpenTPU translation itself — the systolic matrix unit, the weight memory, the instruction decoder, the activation logic, and the host interface — went through seven planned phases. A few days of wall-clock time later, the SystemVerilog testbench ran the same matrix-multiply program as the original Python simulator and produced the same answer.&lt;/p&gt;
&lt;figure class=&quot;items-center text-center&quot;&gt;
  &lt;img alt=&quot;Photo of the Alchitry Pt v2 FPGA board used in the experiment.&quot; class=&quot;w-full&quot; src=&quot;https://lil-blog-media.s3.amazonaws.com/IMG_0610-N4K.jpeg&quot; style=&quot;margin: 0;&quot; /&gt;
  Source: Jenevieve Haggard, HLS LIL
&lt;/figure&gt;
&lt;p&gt;Translating Python that describes hardware into SystemVerilog that synthesizes hardware turns out to be something AI agents are somewhat capable of. The source is unambiguous, and the testbenches give instant feedback. The hard part was always the silicon boundary: a physical board, a vendor toolchain with subtle caching behavior, a USB chip with several gotchas. What worked was a scaffold around the agent that provided deterministic simulation tests for everything testable in software, plus on-board LEDs wired to specific finite-state-machine states, so a human eye could see what the testbench could not. A small notes tool called &lt;a href=&quot;https://github.com/mozilla-ai/cq&quot;&gt;“cq” (by Mozilla)&lt;/a&gt; recorded what each session learned and made future sessions read those notes first. By the end, the store held 48 entries, almost all painfully, expensively earned.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Performance Realities and the USB Latency Bottleneck&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By the end, the FPGA produced output that matched a NumPy reference lane-for-lane on a 200-vector benchmark. End-to-end, it was about 2x faster than the original Python simulator; on compute alone, about 4x. It was also comfortably slower than a CPU running optimized BLAS on small inputs. The point of the result is not that the FPGA wins everywhere, but that it shows where open hardware can be useful.&lt;/p&gt;
&lt;p&gt;At this workload size, USB round-trip latency dominates the FPGA’s time budget. FPGAs win when data is moved to the device once, stays there, and is processed many times. Tiny inputs in, tiny outputs out, on every call, is the worst case for this design. We are running the worst case since we’re just at the “make it work” stage. PCIe-attached FPGAs sit much closer to the CPU and avoid this bottleneck entirely; with batched workloads on that kind of board, the compute-side 4x advantage we already see should carry through to the end-to-end number. They’re the natural next step for any workload where the dev-board numbers are encouraging enough to justify the cost.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open Hardware and the Lowered Cost of Specialization&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The lab occasionally runs computations large enough to be uncomfortable: searches over case law corpora and analyses across millions of documents. A pattern for designing a small piece of custom hardware that does those tasks well is a real option for problems that do not fit on a laptop and do not deserve a cloud bill.&lt;/p&gt;
&lt;p&gt;More than preservation, open hardware offers freedom of access and the power to control your own collections, your own work, and your own computing. That opens up questions we are only beginning to ask. As archival media like silica and DNA-based storage mature, could open hardware lower the cost or complexity of building the readers required for those formats? As AI model architectures keep shifting, could a reconfigurable board keep pace in a way fixed silicon can’t? FPGAs already take on inference tasks at places like CERN (see their &lt;a href=&quot;https://fpga.web.cern.ch/&quot;&gt;FPGA Developers Forum&lt;/a&gt;), adapting to software advances with matching hardware; could FPGAs do the same for our tasks?&lt;/p&gt;
&lt;p&gt;AI coding agents are reducing the cost of specialized work that used to require a dedicated team. Custom hardware has historically been among the most specialized. If a small library research lab can produce a working SystemVerilog port of a real architecture in a few weeks, the question of what else has quietly come into reach is suddenly much broader.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-16T00:00:00+00:00</dc:date>
	<dc:creator>Jenevieve Haggard</dc:creator>
</item>
<item rdf:about="https://ital.corejournals.org/index.php/ital/article/view/17754">
	<title>Information Technology and Libraries: Letter from the Editors</title>
	<link>https://ital.corejournals.org/index.php/ital/article/view/17754</link>
	<dc:date>2026-06-15T00:00:00+00:00</dc:date>
	<dc:creator>Kenneth J. Varnum, Joanna DiPasquale</dc:creator>
</item>
<item rdf:about="https://ital.corejournals.org/index.php/ital/article/view/17746">
	<title>Information Technology and Libraries: From Inherited Systems to Strategic Decisions</title>
	<link>https://ital.corejournals.org/index.php/ital/article/view/17746</link>
	<content:encoded>&lt;div&gt; &lt;p class=&quot;AbstractText&quot;&gt;The author examines the migration of Indiana University Libraries’ interlibrary loan platform, ILLiad, from a locally-hosted server to OCLC hosting through the perspective of a new department head inheriting this critical technology decision. He explores how staffing changes, lost institutional knowledge, recurring system instability, and limited technical capacity prompted a reassessment of long-standing local practices. The piece outlines research, consortium consultation, approval processes, implementation challenges, authentication and workflow issues, and post-migration tradeoffs. Ultimately, the author offers practical guidance for new leaders tasked with managing inherited systems, vendor relationships, imperfect information, and strategic change in complex academic library environments.&lt;/p&gt; &lt;/div&gt;</content:encoded>
	<dc:date>2026-06-15T00:00:00+00:00</dc:date>
	<dc:creator>Garrett Griffith</dc:creator>
</item>
<item rdf:about="https://ital.corejournals.org/index.php/ital/article/view/17597">
	<title>Information Technology and Libraries: Locked Out of the Library</title>
	<link>https://ital.corejournals.org/index.php/ital/article/view/17597</link>
	<content:encoded>&lt;div&gt; &lt;p class=&quot;AbstractText&quot;&gt;While incarcerated students face many challenges when commencing higher education, a lack of access to the internet is a considerable barrier. This technological exclusion has implications for the delivery of course materials, most of which are offered only electronically. A project team from Curtin University Library sought to understand and address the challenges faced by incarcerated students in accessing library services, particularly ebooks and audiovisual content. It was found that restrictions related to contract terms, digital rights management, and copyright contribute to a reactive and uncertain situation for library services. This article outlines the state of the problem and offers possible pathways academic libraries can take to improve the state of information access for incarcerated students.&lt;/p&gt; &lt;/div&gt;</content:encoded>
	<dc:date>2026-06-15T00:00:00+00:00</dc:date>
	<dc:creator>Lydia Dawe</dc:creator>
</item>

</rdf:RDF>
