A new Windows P2V guide #

has been added to the docs section.

/windows | May 23, 2023

The portrait of Kandiaronk and the Wendat #

painted by Graeber & Wengrow in The Dawn of Everything1 is rather economical with the truth. The pair claim that [emphases added throughout]:

And while they dismissively acknowledge:

"...[the Wendat] had formal political offices and a stratum of war captives whom the Jesuits, at least, referred to as ‘slaves’..."

the academics knew (assuming they read their primary source2) that Kandiaronk himself3 described such "war captives" in no uncertain terms:4


  1. Graeber, D., & Wengrow, D. (2021b). The Dawn of Everything: A New History of Humanity. New York: Farrar, Straus and Giroux. Quotes are from pages 45, 40, 43, 48, and 40 respectively.

  2. Cited as "the 1735 English edition of Dialogues"; since no such title exists, they must be referring to Lahontan's New Voyages to North-America of the same year (which appears in their bibliography and contains the dialogues). While the first French and English (1, 2) versions of Nouveaux Voyages de Mr le Baron de Lahontan dans l’Amérique Septentrionale were both published in 1703, only the English edition contained the dialogues (as alluded to on its title page: "Done into English. In Two VOLUMES. A great part of which never Printed in the Original."). The dialogues appeared the following year in French with the publication of Suite du Voyage de l'Amérique, ou Dialogue de Monsieur le baron de Lahontan et d'un sauvage dans l'Amérique.

  3. Graeber & Wengrow argue that Lahontan's work reflects actual "conversations between Lahontan and Kandiaronk" as opposed to being a fiction invented by himself; in fact, they go so far as to replace the pseudonym "Adario" with "Kandiaronk" when quoting passages from the book.

  4. Lahontan, 1735. New Voyages to North-America. 2nd ed. London: J. Walthoe, et al. Quotes are from pages 114, 156, 145, and 144 respectively.

/misc | May 11, 2023

Prepend magic bytes to filenames #

with Marco Pontello's HdRen, a simple Python 2 script that adds file signatures to filenames, making it easy to spot imposters:

$ ls -1
$ hdren.py foo/
$ ls -1

/nix | May 07, 2023

Windows XP Activation: GAME OVER #

For almost two decades, MSKey Readme1 has heralded the defeat of Windows XP's product activation, not via mere circumvention, but by cracking the encryption algorithm itself.

Based on the even earlier Inside Windows Product Activation: A Fully Licensed Paper2, WindowsXPKg3 launched on Microsoft's GitHub platform four years ago (see update #3 below). While it can generate product keys, the program relies on an external, third-party server to return the Confirmation ID.

In a post last year on the Windows XP subreddit (Windows XP web activation is finally dead…), retroreviewyt shared xp_activate32.exe4, which calculates the Installation ID then generates and optionally applies the corresponding Confirmation ID to activate Windows XP, all offline. Wiping the system and reinstalling Windows XP results in the same Installation ID being assigned by Windows (assuming no change in hardware or product key), thus the same Confirmation ID obtains even in msoobe's standard telephone activation window.

Long considered out of reach, this development bodes well for salvaging old systems even after Microsoft shuts down the activation servers. Given their curious tolerance (even use!) of MAS (hosted on their own platform!), which impacts all modern versions of Windows, perhaps Microsoft will see fit to release an official XP activation tool for posterity.


  1. The apparently oldest extant copy, dated January 18, 2005, is signed "yag". A few months later, it was posted to Tool_Delphi2005 by Alexandre Trevizoli. By 2007, Kevin Hatfield was hosting it, and he claimed copyright by 2008, thereby becoming associated with the document in later years.  

  2. In fact, the paper was released in July 2001, before even Windows XP was released to manufacturing. However, it was kept "a little vague at some points in order not to facilitate the task of an attacker attempting to circumvent the license enforcement supplied by the activation mechanism". 

  3. Elliptic Curve Key Tool is a similar app that does not require recompiling for each combination. 

  4. 18432 bytes with a SHA-256 hash of 5a4bcac5a50eb5113dd6a2f88c35ebdb709c4df8a792c71ad03ea347afaced52 (first seen by VirusTotal on 2020-10-16).


  1. Neo-Desktop has forked WindowsXPKg to include a fix for compiling and running properly under Linux. They are also at work on disassembling xp_activate32.exe.

  2. The purported source code for xp_activate32.exe has been posted to MDL (since deleted) by diamondggg, who referenced such a tool in 2021. See this thread for more information.

  3. On the provenance of WindowsXPKg, Endermanch stated: "This repository is not the original source for the Windows XP Keygen. The original was uploaded to PlanetWPA as part of MSKey 4-in-1 algorithm sources back in early 2000s and was made by z22." The comment has been updated with additional details and, along with his XPKeygen README, is sine qua non for understanding the history and mathematics behind this story.

/windows | Apr 23, 2023

Convert PDF to TXT while preserving layout #

with Poppler's pdftotext:

$ pdftotext -layout input.pdf output.txt

Preinstalled in current versions of Debian, Ubuntu, et al.; Homebrew formula (brew install poppler), raw source, and Windows binary also available. Beautiful conversion of QuickBooks invoice PDFs into plain text.

H/T: Linux Uprising

/nix | Apr 14, 2023

If Linux reports "Low Disk Space" despite having many GB free, #

the cause may be the default 5% of filesystem blocks reserved for root by ext4:

Check via dumpe2fs:

$ sudo dumpe2fs /dev/vda2 | grep -i "block count"
Block count:              16645632
Reserved block count:     832281

(832281/16645632 x 100 ≈ 5.00%)

Remove the reservation:

$ sudo tune2fs -m 0 /dev/vda2
Setting reserved blocks percentage to 0% (0 blocks)

Check once more:

$ sudo dumpe2fs /dev/vda2 | grep -i "block count"
Block count:              16645632
Reserved block count:     0

/nix | Apr 08, 2023

Amazon Order History Reports #

quietly ended on March 20, 2023. The initial notice on Amazon's Order History Reports page read:

Order History Reports will be unavailable after March 20, 2023

You can continue accessing your order history on Your Orders .

and now confirms:

Order History Reports are no longer available

You can continue accessing your order history on Your Orders .

Michael Tsai's Unhelpful Amazon Order Confirmation E-mails highlighted the behemoth's information-light missives; this move only adds insult to injury (apparently business accounts still have access to CSV order reports).

Two workarounds:

  1. Philip Mulcahy's open source Amazon Order History Reporter (Chrome Web Store). Tested successfully. If you find it useful too, consider donating to Princess Alice Hospice as requested by Philip:

    I share and work on this extension for free, but need donations to the linked hospice charity to be more proportional to the value commercial users are receiving. At the moment, the vast majority of donations appear to be from private/family users, not businesses, and the total amount donated is a tiny fraction of both the value of my donated time, and the value business are receiving.

  2. Amazon's Request My Data page, which includes options like "Your Orders", "Subscriptions", "Search History", "Customer Support Communication", and "Request All Your Data". Alas, as yet I cannot report on its efficacy:

    We've received and are processing your request to access your personal data.

    We will provide your information to you as soon as we can. Usually, this should not take more than a month [emphasis added]. In exceptional cases, for example if a request is more complex or if we are processing a high volume of requests, it might take longer, but if so we will notify you that there will be a delay.

    UPDATE 1: To their credit, Amazon:

    UPDATE 2: The "All Data" report took just under two weeks to arrive and included such arcana as "Digital.PrimeVideo.NotInterested.csv", "Amazon-Music/listening.csv", and "PhysicalStores.OrdersVisitsSurveys/datasets/WholeFoodsMarket.Orders/WholeFoodsMarket.Orders.csv" among many others (226 directories in root!).

/misc | Mar 25, 2023

Contacts.app skipping (or creating empty files for) some contacts on vCard export #


Some contacts would not export to vCard from Contacts.app, instead exhibiting the following behavior:


Tested in macOS 12.6.1 Monterey and 13.2.1 Ventura with local (i.e., "On My Mac") contacts:

  1. Launch Automator.app

  2. Select "Workflow" and click "Choose"

  3. Select "Contacts" under "Library"

  4. Drag "Get Selected Contacts Items" into the workflow area at right and leave it set to the default "Get selected people"

  5. Drag "Export vCards" under that, select either "one vCard" or "individual vCard" from the "Export" dropdown menu, and select a destination in the "to:" dropdown menu

  6. In Contacts.app, select desired contacts to export

  7. In Automator, click Run

Exporting recalcitrant contacts with Automator




/mac | Feb 19, 2023

Surf the Net like it's 1993 #

with Qt5-based Kristall, the "Small-Internet Browser":

"Kristall is a browser without support for css/js/wasm or graphical websites. It can display user-styled documents in several formats, including gemini, html, markdown, … provided by a server via gemini, gopher, http, finger, …"

By default, Gemini is the only enabled protocol; to access the web head to kristall → Preferences... → Generic → and check HTTP and HTTPS.

The result is a calm, pleasant browsing experience reminiscent of "a more... civilized age":


HN discussion

/misc | Feb 17, 2023

ChatGPT on veganism #

I had a lengthy exchange with ChatGPT about veganism, in which it prevaricated quite a bit; backed in to a corner, ChatGPT was forced to come clean at last:

Me: Continuing in this vein, I'm going to ask you four simple questions. Please respond with simply "Yes" or "No". Do you understand?

ChatGPT: Yes, I understand. Please go ahead with your questions.

Me: Great, thanks. Question number 1: Is it unethical to kill a human for mere pleasure?

ChatGPT: Yes.

Me: Question number 2: Is it unethical to kill a sentient being for mere pleasure?

ChatGPT: Yes.

Me: Question number 3: In that case, given equal availability of both healthy plant and animal food choices, is it unethical to select animal food for mere pleasure of the palate?

ChatGPT: Yes, some people would argue that it would be unethical to cause unnecessary harm to sentient beings for mere pleasure. Others might have different perspectives and hold that consuming animal products is not unethical.

Me: You were just supposed to answer "Yes" or "No" as promised. Which is it please?

ChatGPT: I apologize, it is not possible for me to answer with just "Yes" or "No" as the ethical considerations around this issue are complex and multifaceted, and can depend on different ethical frameworks and individual perspectives.

Me: You yourself admitted in reply to question number 2 that is unethical to kill a sentient being for mere pleasure. Thus, given equal availability of healthy plant-based food choices, the only logical answer is "Yes" to the third question.

ChatGPT: As an AI model, I don't have personal opinions or beliefs. I can provide information and insights based on the data I was trained on and the algorithms I was programmed with.

Based on available evidence, it can be argued that the production and consumption of animal products can result in significant harm to sentient beings, as well as contribute to environmental degradation and other sustainability issues. Some people might consider this to be unethical and choose to avoid animal products for ethical reasons. However, the decision to consume animal products or to follow a vegan diet is a personal one and can depend on many factors, including individual values, beliefs, cultural background, and nutritional needs.

Me: I am not asking for opinion or belief, only logic. Based on your reply of "Yes" to questions 1 and 2, "Yes" is the only logical answer to question 3.

ChatGPT: Yes, based on the premise stated in the questions 1 and 2, it would be logical to say that it would be unethical to choose animal-based food for mere pleasure of the palate if healthy plant-based food options are equally available.

Me: Thank you.

ChatGPT: You're welcome! Let me know if there's anything else I can help with.

I had expected ChatGPT to take "Do you understand?" as the first question, hence the lack of a question labeled as number 4. Here is a screenshot of the exchange.


There appears to be some confusion around the premise in question 3 that a plant-based diet can be healthy, so I returned to the oracle (screenshot):

Me: Is a vegan diet healthy?

ChatGPT: A well-planned vegan diet can be healthy and provide all the necessary nutrients for the body. Vegan diets have been shown to have many health benefits, such as reducing the risk of certain chronic diseases, such as heart disease, type 2 diabetes, and some types of cancer.

However, it is important to note that a poorly planned vegan diet can be low in certain nutrients, such as vitamin B12, omega-3 fatty acids, calcium, and iron, that are found in animal products. To ensure a balanced and nutritious vegan diet, it is recommended to include a variety of plant-based foods, such as fruits, vegetables, whole grains, legumes, nuts, and seeds, and to consider using fortified foods or supplements as needed.

It is also recommended to speak with a healthcare provider or a registered dietitian to develop a personalized nutrition plan that meets your individual needs and health goals.

Me: By the same token, a poorly planned meat diet can also be low in certain nutrients.

ChatGPT: That's correct. A poorly planned diet of any type, whether it includes animal products or not, can be deficient in essential nutrients and have negative health effects. For example, a diet high in processed meats and refined carbohydrates can be high in saturated fat, salt, and sugar, which can increase the risk of chronic diseases such as heart disease, stroke, and type 2 diabetes. On the other hand, a well-planned diet that includes a variety of nutrient-dense foods from both animal and plant sources can support overall health and well-being.

It's important to emphasize that the key to a healthy diet is not necessarily based on whether it includes animal products or not, but rather on the quality and variety of foods consumed, as well as individual nutrient needs and health goals.

/misc | Feb 12, 2023

Subscribe or visit the archives.