10 interesting stories served every morning and every evening.
FracturedJson is a family of utilities that format JSON data in a way that’s easy for humans to read, but fairly compact. Arrays and objects are written on single lines, as long as they’re neither too long nor too complex. When several such lines are similar in structure, they’re written with fields aligned like a table. Long arrays are written with multiple items per line across multiple lines.
There are lots of settings available to control the output, but usually you can ignore most of them. FracturedJson produces nice-looking output from any set of JSON data automatically.
You can try it out with the browser formatter page. It’s also available as a .NET library, a JavaScript/Typescript package, and a Visual Studio Code extension. See here for Python options.
Here’s a sample of output using default settings. See the Options page for examples of what you different settings do.
“BasicObject” : {
“ModuleId” : “armor”,
“Name” : “”,
“Locations” : [
[11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9],
[11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [ 1, 14], [ 1, 13], [ 1, 12],
[ 1, 11], [ 1, 10], [ 1, 9], [ 1, 8], [ 1, 7], [ 1, 6], [ 1, 5], [ 1, 4],
[ 1, 3], [ 1, 2], [ 4, 2], [ 5, 2], [ 6, 2], [ 7, 2], [ 8, 2], [ 8, 3],
[ 7, 3], [ 6, 3], [ 5, 3], [ 4, 3], [ 0, 4], [ 0, 5], [ 0, 6], [ 0, 7],
[ 0, 8], [12, 8], [12, 7], [12, 6], [12, 5], [12, 4]
“Orientation”: “Fore”,
“Seed” : 272691529
“SimilarArrays” : {
“Katherine”: [“blue”, “lightblue”, “black” ],
“Logan” : [“yellow”, “blue”, “black”, “red”],
“Erik” : [“red”, “purple” ],
“Jean” : [“lightgreen”, “yellow”, “black” ]
“SimilarObjects”: [
{ “type”: “turret”, “hp”: 400, “loc”: {“x”: 47, “y”: -4}, “flags”: “S” },
{ “type”: “assassin”, “hp”: 80, “loc”: {“x”: 12, “y”: 6}, “flags”: “Q” },
{ “type”: “berserker”, “hp”: 150, “loc”: {“x”: 0, “y”: 0} },
{ “type”: “pittrap”, “loc”: {“x”: 10, “y”: -14}, “flags”: “S,I” }
Optionally, comments can be preserved. Comments aren’t allowed by the official JSON standard, but they’re ubiquitous, so it’s nice to have the option. FracturedJson tries to keep the comments together with whatever elements they seem to relate to.
* Multi-line comments
* are fun!
“NumbersWithHex”: [
254 /*00FE*/, 1450 /*5AA*/ , 0 /*0000*/, 36000 /*8CA0*/, 10 /*000A*/,
199 /*00C7*/, 15001 /*3A99*/, 6540 /*198C*/
/* Elements are keen */
“Elements” : [
{ /*Carbon*/ “Symbol”: “C”, “Number”: 6, “Isotopes”: [11, 12, 13, 14] },
{ /*Oxygen*/ “Symbol”: “O”, “Number”: 8, “Isotopes”: [16, 18, 17 ] },
{ /*Hydrogen*/ “Symbol”: “H”, “Number”: 1, “Isotopes”: [ 1, 2, 3 ] },
{ /*Iron*/ “Symbol”: “Fe”, “Number”: 26, “Isotopes”: [56, 54, 57, 58] }
// Not a complete list…
“Beatles Songs” : [
“Taxman”, // George
“Hey Jude”, // Paul
“Act Naturally”, // Ringo
“Ticket To Ride” // John
Most JSON libraries give you a choice between two formatting options. Minified JSON is very efficient, but difficult for a person to read.
{“AttackPlans”:[{“TeamId”:1,“Spawns”:[{“Time”:0.0,“UnitType”:“Grunt”,“SpawnPointIndex”:0},{“Time”:0.0,“UnitType”:“Grunt”,“SpawnPointIndex”:0},{“Time”:0.0,“UnitType”:“Grunt”,“SpawnPointIndex”:0}]}],“DefensePlans”:[{“TeamId”:2,“Placements”:[{“UnitType”:“Archer”,“Position”:[41,7]},{“UnitType”:“Pikeman”,“Position”:[40,7]},{“UnitType”:“Barricade”,“Position”:[39,7]}]}]}
Most beautified/indented JSON, on the other hand, is too spread out, often making it difficult to take in quickly or to scan for specific information.
“AttackPlans”: [
“TeamId”: 1,
“Spawns”: [
“Time”: 0,
“UnitType”: “Grunt”,
“SpawnPointIndex”: 0
“Time”: 0,
“UnitType”: “Grunt”,
“SpawnPointIndex”: 0
“Time”: 0,
“UnitType”: “Grunt”,
“SpawnPointIndex”: 0
“DefensePlans”: [
“TeamId”: 2,
“Placements”: [
“UnitType”: “Archer”,
“Position”: [
41,
7
“UnitType”: “Pikeman”,
“Position”: [
40,
7
“UnitType”: “Barricade”,
“Position”: [
39,
7
FracturedJson tries to format data like a person would. Containers are kept to single lines as long as they’re not too complex and not too long. If several successive inline arrays or objects are similar enough, they will be formatted as a table.
“AttackPlans” : [
“TeamId”: 1,
“Spawns”: [
{“Time”: 0, “UnitType”: “Grunt”, “SpawnPointIndex”: 0},
{“Time”: 0, “UnitType”: “Grunt”, “SpawnPointIndex”: 0},
{“Time”: 0, “UnitType”: “Grunt”, “SpawnPointIndex”: 0}
“DefensePlans”: [
“TeamId” : 2,
“Placements”: [
{ “UnitType”: “Archer”, “Position”: [41, 7] },
{ “UnitType”: “Pikeman”, “Position”: [40, 7] },
{ “UnitType”: “Barricade”, “Position”: [39, 7] }
FracturedJson uses four types of formatting: inlined, compact multiline array, table and expanded.
When possible, sections of the document are written inlined, as long as that doesn’t make them too long or too complex (as determined by the settings). “Complexity” refers to how deeply nested an array or object’s contents are.
{ “UnitType”: “Archer”, “Position”: [41, 7] }
Use the setting MaxInlineComplexity to control how much nesting is allowed on one line.
The next option, for arrays, is to write them with multiple items per line, across multiple lines.
[19, 2], [ 3, 8], [14, 0], [ 9, 9], [ 9, 9], [ 0, 3], [10, 1],
[ 9, 1], [ 9, 2], [ 6, 13], [18, 5], [ 4, 11], [12, 2]
Use the setting MaxCompactArrayComplexity to control how deeply nested items can be when arranged this way, or use -1 to disable this feature.
If an array or object contains inlineable items of the same type, they can be formatted in a tabular format. With enough room, all fields at any depth are lined up (and reordered if necessary).
“Rect” : { “position”: {“x”: -44, “y”: 3.4 }, “color”: [0, 255, 255] },
“Point”: { “position”: { “y”: 22 , “z”: 3} },
“Oval” : { “position”: {“x”: 140, “y”: 0.04 }, “color”: “#7f3e96″ },
“Plane”: { “position”: null, “color”: [0, 64, 64] }
...
Read the original on github.com »
Danish women vaccinated with the 4-valent human papillomavirus (HPV) vaccine (HPV types: 6/11/16/18) at age 14 in 2008 reached screening age in 2017, allowing assessment of long-term effects on prevalence, persistence and incidence of HPV infections.
To examine the HPV status of cervical samples over time among women vaccinated as girls.
Between February 2017 and February 2024, residual material from cytology-analysed samples collected through the ‘Trial23’ study, part of the national screening programme, was tested for HPV16/18 and non-vaccine high-risk (HR) HPV types. Prevalence in first, second and third samples, and persistence and incidence between samples were calculated.
Over 7 years, 8,659 women provided at least one sample, 5,835 at least two and 2,461 at least three. In 7,800 vaccinated women, HPV16/18 prevalence was 0.4% (95% confidence interval (CI): 0.2–0.5), 0.3% (95% CI: 0.1–0.4) and 0.2% (95% CI: 0.0–0.4) in three consecutive samples. Prevalence of non-vaccine HR HPV was 32% (95% CI: 31–33), 28% (95% CI: 27–29) and 31% (95% CI: 29–33). Persistence of HPV16/18 and non-vaccine HPV among vaccinated women was 40% and 53%. In adjusted analyses comparing vaccinated vs unvaccinated women, incidence was significantly lower for HPV16/18 (adjusted relative risk (aRR)
Our study provides real-world evidence of stable protection against HPV16/18 infections in women vaccinated as girls. Less intensive screening seems reasonable until women vaccinated with the 9-valent vaccine reach screening age, when screening should be reconsidered.
...
Read the original on www.eurosurveillance.org »
January 2026 will mark 10 years since I started storing my personal finances in plain text files using Beancount. Since January 2016, I’ve taken out about 30-45 minutes every single month to download my monthly bank statements and import them into my Beancount ledger.
There’s a lot to talk about here, but let’s start with some fun numbers!
10 years of financial transactions is a lot of data! All in all, my ledger contains over 45,000 lines of Beancount entries spread across 16 plain text files. All of it is stored in a finances directory (version controlled) on my laptop. Here’s a snapshot:
❯ find . -name “*.beancount” | xargs wc -l
4037 ./includes/2020.beancount
3887 ./includes/2018.beancount
27 ./includes/cash.beancount
4398 ./includes/2021.beancount
5531 ./includes/2019.beancount
5267 ./includes/2022.beancount
3287 ./includes/2017.beancount
5506 ./includes/2024.beancount
5606 ./includes/2023.beancount
1454 ./includes/2016.beancount
1089 ./includes/open/04-expenses.beancount
66 ./includes/open/03-income.beancount
11 ./includes/open/05-liabilities.beancount
37 ./includes/open/02-assets.beancount
1 ./includes/open/01-equity.beancount
4807 ./main.beancount
45011 total
Running bean-query on main.beancount tells me I have about 10,000 transactions in total, that in turn contain about 20,000 postings (in double-entry bookkeeping, one transaction may have multiple postings).
❯ uv run bean-query main.beancount
Input file: “Goel”
Ready with 12466 directives (19743 postings in 9895 transactions).
beanquery>
There are 1086 accounts in total.
beanquery> select count(*) from (select distinct(account));
coun
1086
… which does not mean that there are 1086 bank accounts. Accounts in Beancount are virtual, and you can create as many as you like. Imagine one account for categorizing supermarket spending, one for tracking your income, one for your Netflix subscription, and so on.
Next, there are about 500 documents in the repository.
❯ find documents/ -name “*.pdf” | wc -l
507
Beancount lets you attach documents (e.g. receipts or invoices) to transactions, that makes bookkeeping very efficient. I love the fact that whenever I need to do my tax returns, I can just take a look at my Beancount ledger and find all the invoices right there next to the relevant transaction.
Lastly, in terms of postings, I started out with 715 in the year 2016, and the year 2023 was the busiest so far in terms of just the total postings count.
beanquery> select year(date), count(*) where year(date) < 2025 group by year(date);
year coun
2016 715
2017 1422
2018 1605
2019 2437
2020 1582
2021 2022
2022 2435
2023 2651
2024 2602
I wrote earlier that every month I take about 30-45 minutes to import my financial transactions into Beancount. What does that workflow look like? I wrote another, much more detailed blog post about it a few years ago, but here’s a gist.
It starts with me logging in to my bank account(s) to download my monthly statement(s) in CSV (CSV because it’s much more predictable to parse compared to PDF). I then run these CSV files through what’s called an “importer”, that converts this CSV data into data structures that Beancount understands. I then append all those extracted entries into my current .beancount file (which is the main file containing all my financial transactions in plain text). I then go through each entry one by one and make sure it’s balanced (in double-entry bookkeeping, all the postings in a transaction must sum to zero, and not all postings/transactions that an importer outputs are balanced). Some of that balancing is manual and some of it is automated (e.g. the importer code can look at the transaction’s description and decide which account it should go into, and balance automatically). This last part (balancing) is where most of those 30-45 minutes go.
Whenever a new year starts, I move all the transactions from the past year into a
file and add an include in the active
main.beancountfile, mostly to avoid the main file from becoming too long. Not that it would be an issue for Beancount, but just for the sake of readability.
With such a workflow, all my financial transactions from the beginning of time are contained in a few plain text files in one directory on my laptop.
Beancount only provides the foundations for working with money, but it has no knowledge of what your bank statements look like. This is where the concept of an importer comes in. An importer is a (Python) class that takes in a bank statement of sorts (e.g. a CSV export of your transactions) and converts them into something that Beancount can work with.
I live in Germany and my bank accounts are with German banks, so I had to write a few importers for a few different banks, specifically beancount-dkb, beancount-ing,
beancount-n26, and beancount-commerzbank. I closed out my Commerzbank account a while ago, so I don’t maintain that integration anymore, but the first three libraries are actively maintained (and used)!
My start with Beancount was a bit bumpy. The documentation is very comprehensive but as a newcomer, I found it tricky to get a grasp on the overall workflow. It took me some trial and error to figure things out and have that “aha” moment.
I figured that if I found it tricky, maybe it’s tricky for others as well. So I wrote a short book to help newcomers get up and running with Beancount easily. If you’re interested, here’s a link: https://personalfinancespython.com.
The feedback on the book has been super positive. It got mentioned on Beancount’s
external contributions page, and the reader reviews have all been very encouraging!
Having all my finances in a bunch of plain text files tracked in a git repository feels invaluable to me. And hitting the 10 years mark on that almost feels like a milestone.
Perhaps the nicest bit about all this is that this data is sitting on my own
machine, not in some data center somewhere else. All of it is in plain text files that I can open up in my editor, and analyze using the tools that the Beancount ecosystem gives me. All of it will outlive any app or service, and that, I feel, is why plaintext accounting is so powerful.
...
Read the original on sgoel.dev »
The 39th Chaos Communication Congress (39C3) takes place in Hamburg on 27-30 Dec 2025, and is the 2025 edition of the annual four-day conference on technology, society and utopia organized by the Chaos Computer Club (CCC) and volunteers. Congress offers lectures and workshops and various events on a multitude of topics including (but not limited to) information technology and generally a critical-creative attitude towards technology and the discussion about the effects of technological advances on society.
...
Read the original on media.ccc.de »
A few days ago, I found that a grown man had been texting my twelve-year-old son on his “kid-safe” Gabb phone. The man got my son’s number through a children’s book chat on an app called GroupMe. Thankfully my wife and I discovered the situation and intervened before anything bad happened; but still it was sickening to discover that on Christmas morning, while our family was unwrapping presents next to the tree, some creep had been texting my son: “What did you get? Send pictures.”
How could we have let this happen? How could we be such careless parents?
But wait . . . hadn’t we done what we were supposed to do? We bought the “kid-safe” phone. And we confirmed GroupMe was on the Gabb “approved apps” list, which, as I understand it, offers “no social media or high-risk options.” We did the safe things, right?
Maybe not. Turns out Gabb’s own blog appears to include GroupMe on a list of seven apps with
dangerous chat features, describing it as an app that “opens the door to potential dangers.” We were apparently supposed to find that warning ourselves, somewhere among Gabb’s 572 blog posts:
$ curl -s \
https://gabb.com/post-sitemap.xml \
| grep -oE ’https://gabb\.com/blog/[^
But if GroupMe “opens the door” to danger, why did Gabb put it on their “approved apps” list? When I revisited the site, I noticed a small message beneath GroupMe mentioning Communication with Strangers. I hovered over it with my mouse pointer, and a tooltip appeared: “Allows contact and communication with people the child may not know.”
So it allows communication with strangers, but it’s not “high-risk?” The approved list isn’t looking so safe. The approved list is apparently a catalog of risks I’m supposed to decipher by filtering through 838 apps and hovering my mouse pointer around to see tooltips:
$ for cat in \
existing_apps \
unapproved_apps \
unmet_criteria_apps \
music_apps; do
count=$(curl -s “https://gabb.com/app-guide/” \
| grep -o “${cat} = \[.*\]” \
| head -1 \
| sed “s/${cat} = \[//” \
| sed “s/\]//” \
| tr ‘,’ ‘\n’ \
| sed “s/’//g” \
| sed ‘s/^ *//’ \
| sort -u \
| wc -l \
| tr -d ′ ’)
echo “$count $cat”
done && echo ”…as of $(date ‘+%B %d, %Y’)”
586 existing_apps
60 unapproved_apps
170 unmet_criteria_apps
22 music_apps
…as of January 02, 2026
Whatever the reason for this complexity, I don’t feel in control.
And Gabb isn’t alone in making me feel like this. It seems like many companies selling tech to families operate in the same way: market safety, deliver complexity, and leave parents to figure it out.
Take the Nintendo Switch my son unwrapped between those creepy texts. To set it up, I had to:
Connect the console to the internet
Download the Nintendo Switch Parental Controls app to my phone
Link my credit card and be charged $0.50 to verify parental consent
Set up parental controls from the app on my phone
Sync the parental controls app to the Nintendo Switch
Set up a security PIN on the Nintendo Switch
Sync my son’s Nintendo Account to the Nintendo Switch
Discover that half the controls live in the phone app and the other
half live on Nintendo’s website, because of course they do
Log into Nintendo’s website to finish the job . . .
Only to discover that there’s no clear option to block internet access, no clear way to disable downloads from the Nintendo eShop, and no easy way to make this thing function like an old-school Game Boy and just let a kid have fun with a game cartridge. But that’s just nostalgia talking. Nobody wants that anymore. Apparently.
Because next comes Minecraft. Ah, Minecraft. The game every middle-schooler on earth apparently needs to survive. To let my son play with his friends:
Create an email address for my son
Set up a gamertag for my son on account.xbox.com
Now, I did my best to configure these settings. I really did. But xbox.com alone includes twenty-nine confusingly overlapping settings related to chat, friends, and communication. Twenty-nine.
And when I finally—finally—tried to test online play, Minecraft told me I would need to loosen the parental controls (it did not say which) and create a Nintendo Switch Online account for my son.
Nintendo Switch Online (not really another account, mind you, but a membership) involves a recurring fee. It also unlocks access to the Nintendo eShop, which I cannot disable. I can set his eShop spending limit to zero, sure. But I can’t block free downloads. So to let my son play online Minecraft with his friends, I have to open him up to an unrelated store full of content I can’t possibly evaluate. That’s the deal. Take it or leave it.
I assume some marketing person at Nintendo, probably sitting in a conference room in Kyoto, surrounded by whiteboards covered in arrows and cartoon stick figures, has this entire process mapped out as a “customer journey.” And by Step 17, the journey is supposed to be over. You’re supposed to be so beaten down, so utterly depleted of will, that you just cave. You sign up for Nintendo Online. You disable a bunch of parental controls you don’t really understand. You let your kid play his damn game. You become the ideal customer.
But I didn’t cave. Instead, somewhere on the threshold of Customer Journey Step 18, I found myself gripping the Switch with both hands and imagining, quite vividly, what it would feel like to lift the Switch up, and bring it down over my knee. I could almost hear the crack. Could almost see that OLED display splintering into a thousand pieces. The little Joy-Cons skittering across the floor. My son’s face. My wife’s face. The stunned silence.
I did not break the Switch.
What I did was announce, in a voice louder than necessary, that nobody was to ask me about anything Minecraft-related on the Nintendo Switch for a minimum of two weeks. My son could play Zelda: Breath of the Wild instead, which, thank you, developers, thank you from the bottom of my heart, doesn’t appear to involve any mandatory online anything whatsoever.
Here’s what I want: an off switch. A single setting that says “this child cannot go online, communicate with strangers, spend money, or download anything without my explicit permission.” Instead I get a maze, complex enough that when something goes wrong, I’m at fault for a tooltip I didn’t hover over, a blog post I didn’t read, a submenu I didn’t find. Maybe that’s by design. Maybe it’s neglect. I don’t know.
What I know is this. My son just wants to play video games and talk to his friends. I just want to keep him safe. Somewhere between those two things, I’m supposed to become an expert in the convoluted parental control schemes of Gabb, Nintendo, Microsoft, and Xbox, while a stranger’s Christmas morning texts sit in my son’s phone history.
...
Read the original on beasthacker.com »
Around the world, people celebrate Public Domain Day on January 1, the day in which copyright expires on some older works and they enter the public domain in many different countries.
In the U. S. Constitution, copyright terms were meant to be very limited in order to “promote the Progress of Science and useful Arts.” The first copyright act, written in 1790 by the founding fathers themselves, set the term to be up to twenty-eight years.
But since then, powerful corporations have repeatedly extended the length of copyright to promote not the progress of society, but their profit. The result is that today in the U. S., work only enters the public domain ninety-five years after publication—locking our culture away for nearly a century.
2019 was the year in which new works were finally scheduled to enter the public domain, ending this long, corporate-dictated cultural winter. And as that year drew closer, it became clear that these corporations wouldn’t try to extend copyright yet again—making it the first year in almost a hundred years in which a significant amount of art and literature once again entered the U. S. public domain, free for anyone in the U.S. to read, use, share, remix, build upon, and enjoy.
Ever since then, January 1 has been celebrated as Public Domain Day, the day in which the next year’s crop of books, movies, music, and artwork graduates into the public domain. At Standard Ebooks, we’ve prepared some of the year’s biggest literary hits for you to read this January 1.
On January 1, 2026, books published in 1930 enter the U. S. public domain.
This includes legendary books by William Faulkner, Franz Kafka, Agatha Christie, and Langston Hughes. In addition, The Maltese Falcon, perhaps the best-known noir book—and film—of all time, and books by Evelyn Waugh, Dorothy L. Sayers, and more, enter the U. S. public domain, becoming free for anyone in the U.S. to read, use, and re-use.
Our friends at the Public Domain Review have written about some other things that enter the public domain this year, too.
These past few months at Standard Ebooks, our volunteers have been working hard to prepare a selection of the books published in 1930 in advance of Public Domain Day. We’re excited to finally be able to share these 20 new free ebooks with you!
Around the world, people celebrate Public Domain Day on January 1, the day in which copyright expires on some older works and they enter the public domain in many different countries.
In the U. S. Constitution, copyright terms were meant to be very limited in order to “promote the Progress of Science and useful Arts.” The first copyright act, written in 1790 by the founding fathers themselves, set the term to be up to twenty-eight years.
But since then, powerful corporations have repeatedly extended the length of copyright to promote not the progress of society, but their profit. The result is that today in the U. S., work only enters the public domain ninety-five years after publication—locking our culture away for nearly a century.
2019 was the year in which new works were finally scheduled to enter the public domain, ending this long, corporate-dictated cultural winter. And as that year drew closer, it became clear that these corporations wouldn’t try to extend copyright yet again—making it the first year in almost a hundred years in which a significant amount of art and literature once again entered the U. S. public domain, free for anyone in the U.S. to read, use, share, remix, build upon, and enjoy.
Ever since then, January 1 has been celebrated as Public Domain Day, the day in which the next year’s crop of books, movies, music, and artwork graduates into the public domain. At Standard Ebooks, we’ve prepared some of the year’s biggest literary hits for you to read this January 1.
On January 1, 2026, books published in 1930 enter the U. S. public domain.
This includes legendary books by William Faulkner, Franz Kafka, Agatha Christie, and Langston Hughes. In addition, The Maltese Falcon, perhaps the best-known noir book—and film—of all time, and books by Evelyn Waugh, Dorothy L. Sayers, and more, enter the U. S. public domain, becoming free for anyone in the U.S. to read, use, and re-use.
Our friends at the Public Domain Review have written about some other things that enter the public domain this year, too.
These past few months at Standard Ebooks, our volunteers have been working hard to prepare a selection of the books published in 1930 in advance of Public Domain Day. We’re excited to finally be able to share these 20 new free ebooks with you!
A land surveyor known only as K. is summoned to a remote village to perform some work for authorities in a nearby castle. When the locals inform him that there has been a mistake, K. continues to try to make contact with the officials in the castle to complete his work, in the face of an increasingly-surreal bureaucratic nightmare. The Castle was incomplete at the time of Kafka’s death, and was published posthumously by his literary executor Max Brod. This 1930 translation was the book that kickstarted the English-speaking world’s interest Kafka’s uniquely oppressive and modernist style.
When an unloved local is murdered in the small rural town of St. Mary Mead, the local vicar takes up the case. But he soon finds himself relying on the help of his gossipy neighbor—an old spinster named Miss Marple. While this novel technically isn’t Miss Marple’s first appearance—she was featured in a short story some years earlier—it is the first full-length story featuring the homely sleuth who would go on to become one of Christie’s most beloved characters.
Evelyn Waugh returns in this, his second novel, to deliver another scathing, comic satire of high society. This time his targets are the “bright young things” of post-World-War-I England. Waugh deftly skewers their raunchy, raucus, Jazz-age lifestyle, as well as the middle class public, who can’t seem to get enough of their gossip. As a testament to the novel’s staying power, David Bowie used Vile Bodies as the primary inspiration for his song “Aladdin Sane.”
№ 13 in the Pulitzer Prize for Fiction Winners
series.
Years of Grace follows the life of Jane Ward, a rather unsophisticated young girl who comes of age in 1890s Chicago. Her family is upper middle class, and Jane finds her traditional, homebody nature being pulled by the various forces of ambition, culture, and progress that swirl around her during the effervescent decades at the turn of the century. We see her into late middle age, where the world has been ripped apart by war, and with change accelerating faster and faster as another war looms on the horizon.
Miss Mole is a middle-age housekeeper who has recently left the employ of a wealthy matron to work for the young family of a minister. The mother has recently passed, leaving the family struggling to manage the household—but luckily for them, Miss Mole is exactly the kind of capable, witty, and assertive leader they need. As they work on ordering the household, a shadowy figure from Miss Mole’s past weaves in and out of the narrative. But whatever happened in Miss Mole’s history can’t seem to put a damper on her bright, clever, and funny outlook.
The Faraway Bride concerns the Malinin family, shopowners in 1920s Manchuria who are struck by misfortune when their store is raided by Red Army thugs. Their father recalls that a friend owes him a debt of money that could save the family’s finances—but the friend lives in Seoul, which lies at a grueling three week’s walk across the Korean mountains. The difficulty of the journey doesn’t faze the two Malinin children, who excitedly embark on a quest to save the family. The novel is based on the story of Tobit from the Apocrypha, but its setting, and the resulting mish-mash of languages and cultures, make for a decidedly unique read.
How will humankind, and the world, end? Geoffrey Dennis aims to answer that question in this singular work of semi-fiction. He explores how prophecies and predictions can twist the fate of humankind, and how the progress of science and technology can simultaneously lift humans up, while making them susceptible to control by societal and political interests. Dennis’s conclusions blend religion, science, and history to create a unique book that straddles the line between fact and fiction.
№ 1 in the Swallows and Amazons
series.
Arthur Ransome, a journalist in Manchester, was inspired to write this children’s story of gentle adventure while spending a summer teaching a friend’s children to sail in the Lake District. In it, the children of two families on rural vacations meet in the wilderness; one side sails the dinghy named the Swallow, and the other the dinghy Amazon. They soon join forces against the dastardly “Captain Flint,” who in reality is just a cranky old man trying to quietly write his memoirs in his houseboat. Their adventures are a charming tale that, by staying firmly grounded in reality, completely eschews the tropes typical of today’s children’s books.
Daphne du Maurier had a long and illustrious career writing short fiction. This year, four of her short stories enter the U. S. public domain: “The Lover,” “The Supreme Artist,” “Frustration,” and “Indiscretion.” In her time, Du Maurier was often categorized as a romantic novelist, a label that frustrated her to no end, because her stories have more in common with the works of writers like Wilkie Collins in that they explore dark and sinister themes, often tinged with a paranormal flavor. Many of her works have since been adapted to film.
Cimarron was the best-selling novel of 1930. Set in the lands of Oklahoma during the land rushes of 1889 and 1893, it follows a young family trying to make a life for themselves in a land beset by scrabbling settlers and outraged natives. The family’s trajectory rises as the charismatic patriarch founds a newspaper and settles local disputes, while the matriarch transforms from a faint-hearted Southern belle into a hard-eyed frontierswoman and politician. Though later seen as a paean to feminism, Ferber originally intended the story to be a satire of American womanhood. Its popularity led it to being published as an Armed Services Edition and sent to soldiers on the front—the same fortuitous fate that graced The Great Gatsby—cementing its fame in the minds of a generation.
Giant’s Bread is the first novel Agatha Christie wrote under a pen name, because it differed so much from her usual mystery fare that she wanted it to stand up to public scrutiny under its own merits and not on her reputation. And stand up it did, as reviewers received it with glowing praise. The book follows Vernon Deyre, a young Englishman and brilliant musician, from infancy to adulthood before and during the Great War. It explores themes of love, sacrifice, art, and ultimately, redemption.
Nancy Drew, young detective, is on the case again when her friend’s inheritance of diamonds, worth forty thousand dollars, is stolen during a lunch. Her friend’s guardian is the prime suspect. Can Nancy uncover the true criminal before an innocent person is locked away?Like many other Nancy Drew novels, this one was rewritten in 1961 by a different author. This Standard Ebooks edition follows the 1930 text, written by Mildred Wirt Benson under the Carolyn Keene pen name.
...
Read the original on standardebooks.org »
TL;DR: 2026 is going to be The Year of The Linux Desktop for me. I haven’t booted into Windows in over 3 months on my tower and I’m starting to realize that it’s not worth wasting the space for. I plan to unify my three SSDs and turn them all into btrfs drives on Fedora.
I’ve been merely tolerating Windows 11 for a while but recently it’s gotten to the point where it’s just absolutely intolerable. Somehow Linux on the desktop has gotten so much better by not even doing anything differently. Microsoft has managed to actively sabotage the desktop experience through years of active disregard and spite against their users. They’ve managed to take some of their most revolutionary technological innovations (the NT kernel’s hybrid design allowing it to restart drivers, NTFS, ReFS, WSL, Hyper-V, etc.) then just shat all over them with start menus made with React Native, control-alt-delete menus that are actually just webviews, and forcing Copilot down everyone’s throats to the point that I’ve accidentally gotten stuck in Copilot in a handheld gaming PC and had to hard reboot the device to get out of it. It’s as if the internal teams at Microsoft have had decades of lead time in shooting each other in the head with predictable results.
To be honest, I’ve had enough. I’m going to go with Fedora on my tower and Bazzite (or SteamOS) on my handhelds.
I think that Linux on the desktop is ready for the masses now, not because it’s advanced in a huge leap/bound. It’s ready for the masses to use because Windows has gotten so much actively worse that continuing to use it is an active detriment to user experience and stability. Not to mention with the price of ram lately, you need every gigabyte you can get and desktop Linux lets you waste less of it on superfluous bullshit that very few people actually want.
At the very least, when something goes wrong on Linux you have log messages that can let you know what went wrong so you can search for it.
Facts and circumstances may have changed since publication. Please contact me before jumping to conclusions if something seems wrong or unclear.
...
Read the original on xeiaso.net »
Skip to content
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
You switched accounts on another tab or window. Reload to refresh your session.
You must be signed in to star a gist
You must be signed in to fork a gist
Embed this gist in your website.
Save arch1t3cht/b5b9552633567fa7658deee5aec60453 to your computer and use it in GitHub Desktop.
Embed this gist in your website.
Save arch1t3cht/b5b9552633567fa7658deee5aec60453 to your computer and use it in GitHub Desktop.
What you NEED to know before touching a video file
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You can’t perform that action at this time.
...
Read the original on gist.github.com »
Google “harder better faster stronger bpm” and Google’s “AI Overview” will tell you:
Daft Punk’s “Harder, Better, Faster, Stronger” generally sits around 123 BPM (Beats Per Minute), though some analyses find it slightly higher (like 123.48 BPM) or list different BPMs in remixes/workouts, with exact figures varying slightly by source and version.
Spotify’s metadata database, SongBPM, and most other online BPM databases list it at exactly 123.
But I think our helmet-clad robot friends might have been making a little joke that we’ve apparently all missed. The BPM of Harder, Better, Faster, Stronger is actually 123.45.
How do I know this? It so happens that for over 10 years I’ve written an app called Tempi that shows the music BPM in real time, so I know a little bit about the science and algorithms behind music tempo detection.
Most tempo detection software works basically the same way:
* A specialized algorithm called the Fast Fourier Transform (FFT) collects overlapping energy levels at different frequency bands.
* Those levels are refined into well-defined peaks that represent rhythmic events in the track.
* Another algorithm (autocorrelation) looks for patterns, or more accurately periodicity, in those peaks.
But these patterns are tricky because there’s all kinds of noise, performance inaccuracies, and rhythmic harmonics throwing things off. All that is to say, a) it’s complicated and b) it’s not perfectly accurate.
When I make changes to my own system of course I need some way to know if it’s getting better or worse, so I have a test library of hundreds of song snippets that I score it against. One of these songs is Daft Punk’s HBFS, and early on I noticed something strange about that track.
Almost all electronic music is synced to a sequencer and so obviously is going to have a very steady tempo. But while the vast majority of electronic music tracks I test have an “integral” tempo — meaning their tempo is exactly some round number like 95, and not a fraction like 95.2 — my software always finds the BPM of HBFS to be somewhere between 123 and 124, but not exactly either. For years I’ve chalked this up to inconsistencies with my system and didn’t think much of it. But lately I’ve made improvements to the system so that it’s much more accurate and it now tells me the BPM of HBFS is 123.4.
And that got me thinking, “Hmm. Did these guys pick that tempo because they have a sense of humor? And if so, how far would they take it?”
To get to the bottom of this I needed to establish what the BPM of HBFS really is.
Here’s a Venn diagram showing the overlap between human and computer capabilities in the digital realm:
Computers can do almost all “computer-y” things (i.e. things that can be entirely done on a computer) MUCH better, faster, (and stronger?) than humans. But for the time being there remain a few things that humans can do very easily which computers find difficult. Along with counting traffic lights and crosswalks, one of those things is finding the exact BPM of a song. Not an estimate like most software does, but the exact value with extreme precision across the entire song. Anyone with a basic sense of rhythm and an audio app can do this.
* Open the song in an audio app like Logic, Audition, Ableton, Reaper, ProTools, etc.
* Zoom in on the waveform a little bit so you can see the shape of the beats.
* Find the first obvious beat — meaning it has a well-defined waveform peak — and the last obvious beat. Let’s call these “bookend” beats.
* Measure the exact duration in seconds between the bookend beats.
* Play the song and count all the beats starting at the first bookend beat and ending at the last bookend beat. (If you have an old school calculator, an easy way to do this is type “1+1=” and then just keep tapping “=” to add 1 on each beat.)
Then to get the exact tempo of the track, averaged throughout the entire thing, use this formula:
bpm = 60 * (number_of_beats - 1) / duration
Computers have a rough time of this because they don’t really know how to “keep a beat”, and the algorithms that can find the beat do a lot better when they already know the estimated BPM, which is obviously a chicken/egg problem.
For the first bookend beat in HBFS I used the first beat after the “whooshing” intro, at around 5.58s. The last bookend beat I used the last “work” at about the 3:41.85 mark. (“Never” and “Over” aren’t good candidates because you can’t see their waveform peaks.)
That gives exactly 446 beats or 445 intervals.
I tried this with two different copies of HBFS. The Discovery CD rip I have of the song has a duration between the bookend beats of 216.276, so:
bpm = 60 * 445 / 216.276 = 123.4499403556
The “YouTube official audio” track I tested has a duration of 216.282, so:
bpm = 60 * 445 / 216.282 = 123.4533651445
The original Discovery CD version has obviously undergone less processing over time than the YouTube version so I tend to think it’s more representative, and it’s very close to 123.45 — only a 0.00005964 difference! But even the more modern YouTube version closely rounds to 123.45.
So hopefully I’ve put this fact to rest:
The BPM of Harder, Better, Faster, Stronger is 123.45.
The year is 1999 or 2000. Would the gear Daft Punk uses even support fractional BPMs? And if so out to how many decimal places?
From their 2001 interview with Remix Magazine (archive.org) we know that Bangalter says:
Our sequencing is done either on an E-mu SP-1200, an Akai MPC, or a PC with Logic Audio software. We do not work on things in just one way.
And from later interviews we know the Akai MPC was specifically an MPC-3000. (Oh, and that’s Emagic’s Logic, not Apple’s. Apple didn’t acquire Emagic until 2002.)
Did the E-mu support fractional BPMs? Yes, but only to 1 decimal place:
The Akai MPC-3000? Yep, also to 1 decimal place:
Oooh, look at that. Logic supported BPMs to *4* decimal places.
But while we know those three sequencers were used on the Discovery album, I’m not sure anyone else knows which one was specifically used on HBFS. I’ve searched and searched and it seems this detail has just never been revealed.
And to confuse matters more, in a 2013 interview with Time Magazine, Bangalter says:
So we’ve never actually made music with computers! [laughs] Neither Homework nor Discovery nor even Human After All were made with computers.
Was he contradicting himself from 12 years before? Or did he forget? Or maybe it’s a terminology thing?
That the CD version is so close to exactly 123.45 makes me think this was intentional. And if it was? Well played, robots. You managed to leave a little Easter egg hiding in plain sight for 25 years.
...
Read the original on www.madebywindmill.com »
To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".
10HN is also available as an iOS App
If you visit 10HN only rarely, check out the the best articles from the past week.
If you like 10HN please leave feedback and share
Visit pancik.com for more.