main
iOS 9 months ago
parent 8695e88e82
commit 7e63a94be4

@ -19,7 +19,7 @@
"601d1cc7-a4f3-4f19-aa9f-3bddd7ab6b1d": {
"locked": false,
"lockedDeviceName": "iPhone",
"lastRun": "2024-02-16T07:42:36+01:00"
"lastRun": "2024-02-24T07:01:59+01:00"
}
}
}

File diff suppressed because one or more lines are too long

@ -1,10 +1,10 @@
{
"id": "media-extended",
"name": "Media Extended",
"version": "2.11.1",
"minAppVersion": "0.12.2",
"version": "3.0.2",
"minAppVersion": "1.5.3",
"description": "Media(Video/Audio) Playback Enhancement for Obsidian.md",
"author": "AidenLx",
"authorUrl": "https://github.com/AidenLx/",
"isDesktopOnly": false
}
"isDesktopOnly": true
}

File diff suppressed because one or more lines are too long

@ -12,8 +12,8 @@
"checkpointList": [
{
"path": "/",
"date": "2024-02-16",
"size": 13583576
"date": "2024-02-24",
"size": 13754882
}
],
"activityHistory": [
@ -3083,6 +3083,38 @@
{
"date": "2024-02-16",
"value": 2253
},
{
"date": "2024-02-17",
"value": 2154
},
{
"date": "2024-02-18",
"value": 158712
},
{
"date": "2024-02-19",
"value": 1753
},
{
"date": "2024-02-20",
"value": 1423
},
{
"date": "2024-02-21",
"value": 1304
},
{
"date": "2024-02-22",
"value": 6923
},
{
"date": "2024-02-23",
"value": 1654
},
{
"date": "2024-02-24",
"value": 1281
}
]
}

@ -106,7 +106,7 @@
},
"syntaxHighlight": false,
"copyButton": true,
"version": "10.1.2",
"version": "10.2.0",
"autoCollapse": false,
"defaultCollapseType": "open",
"injectColor": true,

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-admonition",
"name": "Admonition",
"version": "10.1.2",
"version": "10.2.0",
"minAppVersion": "1.1.0",
"description": "Enhanced callouts for Obsidian.md",
"author": "Jeremy Valentine",

File diff suppressed because one or more lines are too long

@ -1570,7 +1570,7 @@
"links": 1
},
"01.02 Home/Household.md": {
"size": 4528,
"size": 5032,
"tags": 2,
"links": 4
},
@ -7579,11 +7579,6 @@
"tags": 0,
"links": 7
},
"00.02 Inbox/Seven Pillars of Wisdom.md": {
"size": 1035,
"tags": 5,
"links": 1
},
"00.01 Admin/Calendars/2023-05-19.md": {
"size": 1412,
"tags": 0,
@ -11187,7 +11182,7 @@
"00.03 News/The Juror Who Found Herself Guilty.md": {
"size": 60531,
"tags": 3,
"links": 1
"links": 2
},
"00.03 News/The Taylor Swift deepfakes are a warning.md": {
"size": 25838,
@ -11212,7 +11207,7 @@
"00.03 News/In the Land of the Very Old.md": {
"size": 32749,
"tags": 3,
"links": 1
"links": 2
},
"00.01 Admin/Calendars/Events/2024-01-28 ⚽️ PSG - Brest 29 (2-2).md": {
"size": 449,
@ -11352,7 +11347,7 @@
"00.03 News/Nat Friedman Embraces AI to Translate the Herculaneum Papyri.md": {
"size": 28833,
"tags": 4,
"links": 1
"links": 2
},
"00.03 News/How Nikola Jokić Became the Worlds Best Basketball Player.md": {
"size": 35152,
@ -11398,14 +11393,99 @@
"size": 1412,
"tags": 0,
"links": 7
},
"00.01 Admin/Calendars/2024-02-17.md": {
"size": 1412,
"tags": 0,
"links": 6
},
"00.01 Admin/Calendars/2024-02-18.md": {
"size": 1412,
"tags": 0,
"links": 4
},
"00.03 News/Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie.md": {
"size": 15353,
"tags": 3,
"links": 2
},
"00.03 News/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md": {
"size": 14733,
"tags": 4,
"links": 1
},
"00.03 News/The art of doing nothing have the Dutch found the answer to burnout culture.md": {
"size": 13516,
"tags": 2,
"links": 2
},
"00.03 News/Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe.md": {
"size": 41441,
"tags": 4,
"links": 1
},
"00.03 News/Cillian Murphy Is the Man of the Moment.md": {
"size": 40753,
"tags": 4,
"links": 1
},
"00.03 News/The rise and fall of robots.txt.md": {
"size": 19027,
"tags": 3,
"links": 2
},
"00.03 News/The surreal life of a professional bridesmaid - The Hustle.md": {
"size": 12131,
"tags": 3,
"links": 1
},
"00.01 Admin/Calendars/2024-02-19.md": {
"size": 1255,
"tags": 0,
"links": 6
},
"00.01 Admin/Calendars/2024-02-20.md": {
"size": 1260,
"tags": 0,
"links": 6
},
"00.01 Admin/Calendars/2024-02-21.md": {
"size": 1412,
"tags": 0,
"links": 5
},
"00.01 Admin/Calendars/2024-02-22.md": {
"size": 1412,
"tags": 0,
"links": 7
},
"03.01 Reading list/Seven Pillars of Wisdom.md": {
"size": 1035,
"tags": 5,
"links": 2
},
"03.03 Food & Wine/Sesame Seared Tuna Steak.md": {
"size": 3513,
"tags": 3,
"links": 2
},
"00.01 Admin/Calendars/2024-02-23.md": {
"size": 1412,
"tags": 0,
"links": 6
},
"00.01 Admin/Calendars/2024-02-24.md": {
"size": 1412,
"tags": 0,
"links": 4
}
},
"commitTypes": {
"/": {
"Refactor": 6952,
"Create": 2458,
"Link": 8986,
"Expand": 2113
"Refactor": 6966,
"Create": 2475,
"Link": 9029,
"Expand": 2114
}
},
"dailyCommits": {
@ -11417,20 +11497,20 @@
"4": 46,
"5": 15,
"6": 69,
"7": 860,
"7": 883,
"8": 1135,
"9": 1060,
"10": 746,
"9": 1061,
"10": 749,
"11": 547,
"12": 6736,
"13": 642,
"14": 571,
"13": 674,
"14": 572,
"15": 639,
"16": 703,
"17": 814,
"18": 1004,
"19": 930,
"20": 854,
"16": 706,
"17": 815,
"18": 1005,
"19": 939,
"20": 855,
"21": 777,
"22": 732,
"23": 1351
@ -11438,18 +11518,19 @@
},
"weeklyCommits": {
"/": {
"Mon": 2879,
"Tue": 1698,
"Wed": 7875,
"Thu": 1315,
"Fri": 1436,
"Mon": 2886,
"Tue": 1702,
"Wed": 7878,
"Thu": 1331,
"Fri": 1440,
"Sat": 0,
"Sun": 5306
"Sun": 5347
}
},
"recentCommits": {
"/": {
"Expanded": [
"<a class=\"internal-link\" href=\"01.02 Home/Household.md\"> Household </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/Events/2024-02-14 ⚽️ PSG - Real Sociedad.md\"> 2024-02-14 ⚽️ PSG - Real Sociedad </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/Events/2024-02-14 ⚽️ PSG - Real Sociedad.md\"> 2024-02-14 ⚽️ PSG - Real Sociedad </a>",
"<a class=\"internal-link\" href=\"01.07 Animals/2023-07-13 Health check.md\"> 2023-07-13 Health check </a>",
@ -11499,10 +11580,26 @@
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-01-17.md\"> 2024-01-17 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-01-17.md\"> 2024-01-17 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Sicilian aubergine stew with couscous.md\"> Sicilian aubergine stew with couscous </a>",
"<a class=\"internal-link\" href=\"01.03 Family/Pia Bousquié.md\"> Pia Bousquié </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/Events/2024-01-14 ⚽️ RC Lens - PSG.md\"> 2024-01-14 ⚽️ RC Lens - PSG </a>"
"<a class=\"internal-link\" href=\"01.03 Family/Pia Bousquié.md\"> Pia Bousquié </a>"
],
"Created": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-24.md\"> 2024-02-24 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-23.md\"> 2024-02-23 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Sesame Seared Tuna Steak Recipe.md\"> Sesame Seared Tuna Steak Recipe </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-22.md\"> 2024-02-22 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-21.md\"> 2024-02-21 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-20.md\"> 2024-02-20 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-19.md\"> 2024-02-19 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The surreal life of a professional bridesmaid - The Hustle.md\"> The surreal life of a professional bridesmaid - The Hustle </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The rise and fall of robots.txt.md\"> The rise and fall of robots.txt </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Cillian Murphy Is the Man of the Moment.md\"> Cillian Murphy Is the Man of the Moment </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe.md\"> Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The art of doing nothing have the Dutch found the answer to burnout culture.md\"> The art of doing nothing have the Dutch found the answer to burnout culture </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md\"> The Israeli-Palestinian Conflict and the Long Shadow of 1948 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Untold Origin Story of ESPN.md\"> The Untold Origin Story of ESPN </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie.md\"> Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-18.md\"> 2024-02-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-17.md\"> 2024-02-17 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-16.md\"> 2024-02-16 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-15.md\"> 2024-02-15 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-14.md\"> 2024-02-14 </a>",
@ -11536,26 +11633,19 @@
"<a class=\"internal-link\" href=\"00.02 Inbox/Cuban Picadillo Bowls.md\"> Cuban Picadillo Bowls </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Thai Peanut Chicken Bowls.md\"> Thai Peanut Chicken Bowls </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-01-31.md\"> 2024-01-31 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas.md\"> Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-01-30.md\"> 2024-01-30 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-01-29.md\"> 2024-01-29 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/Events/2024-01-28 ⚽️ PSG - Breat 29.md\"> 2024-01-28 ⚽️ PSG - Breat 29 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/In the Land of the Very Old.md\"> In the Land of the Very Old </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Ripples of hate.md\"> Ripples of hate </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Hippy, capitalist, guru, grocer the forgotten genius who changed British food.md\"> Hippy, capitalist, guru, grocer the forgotten genius who changed British food </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Fentanyl, the portrait of a mass murderer.md\"> Fentanyl, the portrait of a mass murderer </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Taylor Swift deepfakes are a warning.md\"> The Taylor Swift deepfakes are a warning </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Juror Who Found Herself Guilty.md\"> The Juror Who Found Herself Guilty </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Highway to Hell (by ACDC - 1979).md\"> Highway to Hell (by ACDC - 1979) </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Enter the WuTang (36 Chambers) (by WuTang Clan - 1993).md\"> Enter the WuTang (36 Chambers) (by WuTang Clan - 1993) </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Thriller (by Michael Jackson - 1982).md\"> Thriller (by Michael Jackson - 1982) </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-01-28.md\"> 2024-01-28 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-01-27.md\"> 2024-01-27 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-01-26.md\"> 2024-01-26 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Untitled.md\"> Untitled </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Untitled.md\"> Untitled </a>"
"<a class=\"internal-link\" href=\"00.02 Inbox/Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas.md\"> Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas </a>"
],
"Renamed": [
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Sesame Seared Tuna Steak.md\"> Sesame Seared Tuna Steak </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Sesame Seared Tuna Steak.md\"> Sesame Seared Tuna Steak </a>",
"<a class=\"internal-link\" href=\"03.01 Reading list/Seven Pillars of Wisdom.md\"> Seven Pillars of Wisdom </a>",
"<a class=\"internal-link\" href=\"00.03 News/The surreal life of a professional bridesmaid - The Hustle.md\"> The surreal life of a professional bridesmaid - The Hustle </a>",
"<a class=\"internal-link\" href=\"00.03 News/The rise and fall of robots.txt.md\"> The rise and fall of robots.txt </a>",
"<a class=\"internal-link\" href=\"00.03 News/Cillian Murphy Is the Man of the Moment.md\"> Cillian Murphy Is the Man of the Moment </a>",
"<a class=\"internal-link\" href=\"00.03 News/Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe.md\"> Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe </a>",
"<a class=\"internal-link\" href=\"00.03 News/The art of doing nothing have the Dutch found the answer to burnout culture.md\"> The art of doing nothing have the Dutch found the answer to burnout culture </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md\"> The Israeli-Palestinian Conflict and the Long Shadow of 1948 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie.md\"> Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/Events/2024-02-14 ⚽️ PSG - Real Sociedad (2-0).md\"> 2024-02-14 ⚽️ PSG - Real Sociedad (2-0) </a>",
"<a class=\"internal-link\" href=\"00.03 News/His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him..md\"> His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him. </a>",
"<a class=\"internal-link\" href=\"00.03 News/A Teens Fatal Plunge Into the London Underworld.md\"> A Teens Fatal Plunge Into the London Underworld </a>",
@ -11596,19 +11686,19 @@
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/Events/2024-01-20 ⚽️ US Orleans - PSG (1-4).md\"> 2024-01-20 ⚽️ US Orleans - PSG (1-4) </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Hoch Ybrig.md\"> Hoch Ybrig </a>",
"<a class=\"internal-link\" href=\"03.05 Vinyls/I Walk the Line (by Johnny Cash - 1987).md\"> I Walk the Line (by Johnny Cash - 1987) </a>",
"<a class=\"internal-link\" href=\"03.05 Vinyls/Première Consultation (by Doc Gynéco - 1996).md\"> Première Consultation (by Doc Gynéco - 1996) </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Sawerdo.md\"> Sawerdo </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Les Sales Gosses.md\"> Les Sales Gosses </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Le Bologne.md\"> Le Bologne </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Chez Philippe.md\"> Chez Philippe </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Bleu Nuit.md\"> Bleu Nuit </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/The Color of Money (1986).md\"> The Color of Money (1986) </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/More American Graffiti (1979).md\"> More American Graffiti (1979) </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Sicilian aubergine stew with couscous.md\"> Sicilian aubergine stew with couscous </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Sicilian aubergine stew with couscous.md\"> Sicilian aubergine stew with couscous </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Warm lemon and Parmesan couscous.md\"> Warm lemon and Parmesan couscous </a>"
"<a class=\"internal-link\" href=\"03.05 Vinyls/Première Consultation (by Doc Gynéco - 1996).md\"> Première Consultation (by Doc Gynéco - 1996) </a>"
],
"Tagged": [
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Sesame Seared Tuna Steak.md\"> Sesame Seared Tuna Steak </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Sesame Seared Tuna Steak.md\"> Sesame Seared Tuna Steak </a>",
"<a class=\"internal-link\" href=\"00.03 News/The surreal life of a professional bridesmaid - The Hustle.md\"> The surreal life of a professional bridesmaid - The Hustle </a>",
"<a class=\"internal-link\" href=\"00.03 News/Cillian Murphy Is the Man of the Moment.md\"> Cillian Murphy Is the Man of the Moment </a>",
"<a class=\"internal-link\" href=\"00.03 News/The rise and fall of robots.txt.md\"> The rise and fall of robots.txt </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md\"> The Israeli-Palestinian Conflict and the Long Shadow of 1948 </a>",
"<a class=\"internal-link\" href=\"00.03 News/The art of doing nothing have the Dutch found the answer to burnout culture.md\"> The art of doing nothing have the Dutch found the answer to burnout culture </a>",
"<a class=\"internal-link\" href=\"00.03 News/Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe.md\"> Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md\"> The Israeli-Palestinian Conflict and the Long Shadow of 1948 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie.md\"> Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie </a>",
"<a class=\"internal-link\" href=\"00.03 News/Why Tim Cook Is Going All In on the Apple Vision Pro.md\"> Why Tim Cook Is Going All In on the Apple Vision Pro </a>",
"<a class=\"internal-link\" href=\"00.03 News/A Teens Fatal Plunge Into the London Underworld.md\"> A Teens Fatal Plunge Into the London Underworld </a>",
"<a class=\"internal-link\" href=\"00.03 News/His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him..md\"> His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him. </a>",
@ -11649,19 +11739,12 @@
"<a class=\"internal-link\" href=\"00.02 Inbox/Les Sales Gosses.md\"> Les Sales Gosses </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Le Bologne.md\"> Le Bologne </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Chez Philippe.md\"> Chez Philippe </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Bleu Nuit.md\"> Bleu Nuit </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Bleu Nuit.md\"> Bleu Nuit </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Sicilian aubergine stew with couscous.md\"> Sicilian aubergine stew with couscous </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Warm lemon and Parmesan couscous.md\"> Warm lemon and Parmesan couscous </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Cucumber Lemon Feta Cheese Couscous Salad.md\"> Cucumber Lemon Feta Cheese Couscous Salad </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Spicy Mongolian Beef.md\"> Spicy Mongolian Beef </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Spicy Mongolian Beef.md\"> Spicy Mongolian Beef </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/After Two Decades Undercover, Shes Ready to Tell the Real Story of Human Trafficking.md\"> After Two Decades Undercover, Shes Ready to Tell the Real Story of Human Trafficking </a>",
"<a class=\"internal-link\" href=\"00.03 News/A Knife Forged in Fire.md\"> A Knife Forged in Fire </a>",
"<a class=\"internal-link\" href=\"00.03 News/Skipping School Americas Hidden Education Crisis.md\"> Skipping School Americas Hidden Education Crisis </a>",
"<a class=\"internal-link\" href=\"00.03 News/An Iowa paperboy disappeared 41 years ago. His mother is still on the case.md\"> An Iowa paperboy disappeared 41 years ago. His mother is still on the case </a>"
"<a class=\"internal-link\" href=\"03.02 Travels/Bleu Nuit.md\"> Bleu Nuit </a>"
],
"Refactored": [
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Sesame Seared Tuna Steak.md\"> Sesame Seared Tuna Steak </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-20.md\"> 2024-02-20 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-19.md\"> 2024-02-19 </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Cuban Picadillo Bowls.md\"> Cuban Picadillo Bowls </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Cuban Picadillo Bowls.md\"> Cuban Picadillo Bowls </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Thai Peanut Chicken Bowls.md\"> Thai Peanut Chicken Bowls </a>",
@ -11709,12 +11792,10 @@
"<a class=\"internal-link\" href=\"00.03 News/Rape, Race and a Decades-Old Lie That Still Wounds.md\"> Rape, Race and a Decades-Old Lie That Still Wounds </a>",
"<a class=\"internal-link\" href=\"00.03 News/A crumbling, long-forgotten statue with an unusual erect phallus might be a Michelangelo. Renaissance scholars want hard evidence..md\"> A crumbling, long-forgotten statue with an unusual erect phallus might be a Michelangelo. Renaissance scholars want hard evidence. </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-10-24.md\"> 2023-10-24 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-10-05.md\"> 2023-10-05 </a>",
"<a class=\"internal-link\" href=\"01.08 Garden/Viorne Tin.md\"> Viorne Tin </a>",
"<a class=\"internal-link\" href=\"01.08 Garden/Viorne Tin.md\"> Viorne Tin </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-10-02.md\"> 2023-10-02 </a>"
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-10-05.md\"> 2023-10-05 </a>"
],
"Deleted": [
"<a class=\"internal-link\" href=\"00.02 Inbox/The Untold Origin Story of ESPN.md\"> The Untold Origin Story of ESPN </a>",
"<a class=\"internal-link\" href=\"00.03 News/El Niño Is Coming—and the World Isnt Prepared.md\"> El Niño Is Coming—and the World Isnt Prepared </a>",
"<a class=\"internal-link\" href=\"00.03 News/Buried gold, vampire graves and lost cities - the year's best ancient finds.md\"> Buried gold, vampire graves and lost cities - the year's best ancient finds </a>",
"<a class=\"internal-link\" href=\"00.03 News/Queen Elizabeth II Dies at 96; Was Britains Longest-Reigning Monarch.md\"> Queen Elizabeth II Dies at 96; Was Britains Longest-Reigning Monarch </a>",
@ -11764,10 +11845,42 @@
"<a class=\"internal-link\" href=\"00.03 News/Do We Have the History of Native Americans Backward.md\"> Do We Have the History of Native Americans Backward </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Too-Muchness of Bono.md\"> The Too-Muchness of Bono </a>",
"<a class=\"internal-link\" href=\"00.03 News/Mississippi's Welfare Mess—And America's.md\"> Mississippi's Welfare Mess—And America's </a>",
"<a class=\"internal-link\" href=\"00.03 News/Texas Goes Permitless on Guns, and Police Face an Armed Public.md\"> Texas Goes Permitless on Guns, and Police Face an Armed Public </a>",
"<a class=\"internal-link\" href=\"00.03 News/Swamp Boy Medical Mystery.md\"> Swamp Boy Medical Mystery </a>"
"<a class=\"internal-link\" href=\"00.03 News/Texas Goes Permitless on Guns, and Police Face an Armed Public.md\"> Texas Goes Permitless on Guns, and Police Face an Armed Public </a>"
],
"Linked": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-24.md\"> 2024-02-24 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-23.md\"> 2024-02-23 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-23.md\"> 2024-02-23 </a>",
"<a class=\"internal-link\" href=\"00.03 News/The art of doing nothing have the Dutch found the answer to burnout culture.md\"> The art of doing nothing have the Dutch found the answer to burnout culture </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Sesame Seared Tuna Steak.md\"> Sesame Seared Tuna Steak </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Sesame Seared Tuna Steak Recipe.md\"> Sesame Seared Tuna Steak Recipe </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-22.md\"> 2024-02-22 </a>",
"<a class=\"internal-link\" href=\"03.01 Reading list/Seven Pillars of Wisdom.md\"> Seven Pillars of Wisdom </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-22.md\"> 2024-02-22 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-21.md\"> 2024-02-21 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-22.md\"> 2024-02-22 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-22.md\"> 2024-02-22 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-21.md\"> 2024-02-21 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-20.md\"> 2024-02-20 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-20.md\"> 2024-02-20 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-19.md\"> 2024-02-19 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-19.md\"> 2024-02-19 </a>",
"<a class=\"internal-link\" href=\"00.03 News/The rise and fall of robots.txt.md\"> The rise and fall of robots.txt </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-19.md\"> 2024-02-19 </a>",
"<a class=\"internal-link\" href=\"00.03 News/In the Land of the Very Old.md\"> In the Land of the Very Old </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The surreal life of a professional bridesmaid - The Hustle.md\"> The surreal life of a professional bridesmaid - The Hustle </a>",
"<a class=\"internal-link\" href=\"00.03 News/Cillian Murphy Is the Man of the Moment.md\"> Cillian Murphy Is the Man of the Moment </a>",
"<a class=\"internal-link\" href=\"00.03 News/The rise and fall of robots.txt.md\"> The rise and fall of robots.txt </a>",
"<a class=\"internal-link\" href=\"00.03 News/The art of doing nothing have the Dutch found the answer to burnout culture.md\"> The art of doing nothing have the Dutch found the answer to burnout culture </a>",
"<a class=\"internal-link\" href=\"00.03 News/Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe.md\"> Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md\"> The Israeli-Palestinian Conflict and the Long Shadow of 1948 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie.md\"> Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie.md\"> Helvetia ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie </a>",
"<a class=\"internal-link\" href=\"00.03 News/Nat Friedman Embraces AI to Translate the Herculaneum Papyri.md\"> Nat Friedman Embraces AI to Translate the Herculaneum Papyri </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-18.md\"> 2024-02-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-17.md\"> 2024-02-17 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-17.md\"> 2024-02-17 </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Juror Who Found Herself Guilty.md\"> The Juror Who Found Herself Guilty </a>",
"<a class=\"internal-link\" href=\"00.03 News/How Nikola Jokić Became the Worlds Best Basketball Player.md\"> How Nikola Jokić Became the Worlds Best Basketball Player </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-16.md\"> 2024-02-16 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-16.md\"> 2024-02-16 </a>",
@ -11785,40 +11898,7 @@
"<a class=\"internal-link\" href=\"00.03 News/Why Tim Cook Is Going All In on the Apple Vision Pro.md\"> Why Tim Cook Is Going All In on the Apple Vision Pro </a>",
"<a class=\"internal-link\" href=\"00.03 News/A Teens Fatal Plunge Into the London Underworld.md\"> A Teens Fatal Plunge Into the London Underworld </a>",
"<a class=\"internal-link\" href=\"00.03 News/His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him..md\"> His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him. </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/A Teens Fatal Plunge Into the London Underworld.md\"> A Teens Fatal Plunge Into the London Underworld </a>",
"<a class=\"internal-link\" href=\"00.03 News/How Nikola Jokić Became the Worlds Best Basketball Player.md\"> How Nikola Jokić Became the Worlds Best Basketball Player </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Nat Friedman Embraces AI to Translate the Herculaneum Papyri.md\"> Nat Friedman Embraces AI to Translate the Herculaneum Papyri </a>",
"<a class=\"internal-link\" href=\"00.03 News/Paper mills are bribing editors at scholarly journals, Science investigation finds.md\"> Paper mills are bribing editors at scholarly journals, Science investigation finds </a>",
"<a class=\"internal-link\" href=\"00.03 News/A Knife Forged in Fire.md\"> A Knife Forged in Fire </a>",
"<a class=\"internal-link\" href=\"00.03 News/How Two Single Moms Escaped an Alleged Sex-Trafficking Ring and Ultimately Saved Each Other.md\"> How Two Single Moms Escaped an Alleged Sex-Trafficking Ring and Ultimately Saved Each Other </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-11.md\"> 2024-02-11 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-10.md\"> 2024-02-10 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/Events/2024-02-10 ⚽️ PSG - Lille OSC.md\"> 2024-02-10 ⚽️ PSG - Lille OSC </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-10.md\"> 2024-02-10 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-10.md\"> 2024-02-10 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-10.md\"> 2024-02-10 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-09.md\"> 2024-02-09 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Did Drug Traffickers Funnel Millions of Dollars to Mexican President López Obradors First Campaign.md\"> Did Drug Traffickers Funnel Millions of Dollars to Mexican President López Obradors First Campaign </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-09.md\"> 2024-02-09 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-08.md\"> 2024-02-08 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Ripples of hate.md\"> Ripples of hate </a>",
"<a class=\"internal-link\" href=\"00.03 News/Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas.md\"> Bear Hibernation Uncovering Black Bear Denning Secrets in Arkansas </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-08.md\"> 2024-02-08 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-08.md\"> 2024-02-08 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-07.md\"> 2024-02-07 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-06.md\"> 2024-02-06 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-06.md\"> 2024-02-06 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-06.md\"> 2024-02-06 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-05.md\"> 2024-02-05 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-05.md\"> 2024-02-05 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Why Tim Cook Is Going All In on the Apple Vision Pro.md\"> Why Tim Cook Is Going All In on the Apple Vision Pro </a>",
"<a class=\"internal-link\" href=\"00.03 News/How Two Single Moms Escaped an Alleged Sex-Trafficking Ring and Ultimately Saved Each Other.md\"> How Two Single Moms Escaped an Alleged Sex-Trafficking Ring and Ultimately Saved Each Other </a>",
"<a class=\"internal-link\" href=\"00.03 News/Precipice of fear the freerider who took skiing to its limits.md\"> Precipice of fear the freerider who took skiing to its limits </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Man in Room 117.md\"> The Man in Room 117 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Super Bowl Strip Tease The NFL and Las Vegas Are Together at Last.md\"> Super Bowl Strip Tease The NFL and Las Vegas Are Together at Last </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-04.md\"> 2024-02-04 </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Hörnlihütte.md\"> Hörnlihütte </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2024-02-04.md\"> 2024-02-04 </a>"
"<a class=\"internal-link\" href=\"00.02 Inbox/A Teens Fatal Plunge Into the London Underworld.md\"> A Teens Fatal Plunge Into the London Underworld </a>"
],
"Removed Tags from": [
"<a class=\"internal-link\" href=\"03.04 Cinematheque/@Cinematheque.md\"> @Cinematheque </a>",

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-dice-roller",
"name": "Dice Roller",
"version": "10.4.4",
"version": "10.4.5",
"minAppVersion": "0.12.15",
"description": "Inline dice rolling for Obsidian.md",
"author": "Jeremy Valentine",

File diff suppressed because one or more lines are too long

@ -65,11 +65,6 @@
}
],
"05.02 Networks/Server Tools.md": [
{
"title": ":desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%%",
"time": "2024-02-18",
"rowNumber": 586
},
{
"title": ":hammer_and_wrench: [[Server Tools]]: Backup server %%done_del%%",
"time": "2024-04-02",
@ -78,12 +73,17 @@
{
"title": ":closed_lock_with_key: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Bitwarden & Health checks %%done_del%%",
"time": "2024-04-17",
"rowNumber": 593
"rowNumber": 594
},
{
"title": ":hammer_and_wrench: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Standard Notes & Health checks %%done_del%%",
"time": "2024-05-18",
"rowNumber": 601
"rowNumber": 602
},
{
"title": ":desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%%",
"time": "2024-06-18",
"rowNumber": 586
}
],
"05.02 Networks/Server VPN.md": [
@ -123,16 +123,16 @@
}
],
"04.01 lebv.org/lebv Research Tasks.md": [
{
"title": ":fleur_de_lis:: [[lebv Research Tasks|Research]]: <mark style=\"background:grey\">Lieux</mark>: que sont devenus Fleurimont & Le Pavillon aujourd'hui?",
"time": "2024-02-25",
"rowNumber": 69
},
{
"title": ":fleur_de_lis: [[lebv Research Tasks|Research]]: <mark style=\"background:grey\">membres de la famille</mark>: reprendre les citations militaires (promotion/décoration)",
"time": "2024-03-31",
"rowNumber": 70
},
{
"title": ":fleur_de_lis:: [[lebv Research Tasks|Research]]: <mark style=\"background:grey\">Lieux</mark>: que sont devenus Fleurimont & Le Pavillon aujourd'hui?",
"time": "2024-08-25",
"rowNumber": 69
},
{
"title": ":fleur_de_lis: [[lebv Research Tasks|Research]]: <mark style=\"Background:grey\">membres de la famille</mark>: éplucher les mentions du Nobiliaire de Guyenne & Gascogne",
"time": "2024-12-31",
@ -332,20 +332,10 @@
}
],
"01.02 Home/Household.md": [
{
"title": ":bed: [[Household]] Change bedsheets %%done_del%%",
"time": "2024-02-17",
"rowNumber": 102
},
{
"title": "🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%%",
"time": "2024-02-19",
"rowNumber": 93
},
{
"title": "♻ [[Household]]: *Cardboard* recycling collection %%done_del%%",
"time": "2024-02-20",
"rowNumber": 80
"time": "2024-02-26",
"rowNumber": 94
},
{
"title": "♻ [[Household]]: *Paper* recycling collection %%done_del%%",
@ -355,27 +345,37 @@
{
"title": "🛎️ :house: [[Household]]: Pay rent %%done_del%%",
"time": "2024-02-29",
"rowNumber": 90
"rowNumber": 91
},
{
"title": ":bed: [[Household]] Change bedsheets %%done_del%%",
"time": "2024-03-02",
"rowNumber": 104
},
{
"title": "♻ [[Household]]: *Cardboard* recycling collection %%done_del%%",
"time": "2024-03-05",
"rowNumber": 80
},
{
"title": ":blue_car: [[Household]]: Change to Summer tyres @ [[Rex Automobile CH]] %%done_del%%",
"time": "2024-04-15",
"rowNumber": 111
"rowNumber": 114
},
{
"title": ":blue_car: [[Household]]: Change to Winter tyres @ [[Rex Automobile CH]] %%done_del%%",
"time": "2024-10-15",
"rowNumber": 112
"rowNumber": 115
},
{
"title": ":ski: [[Household]]: Organise yearly ski servicing ([[Ski Rental Zürich]]) %%done_del%%",
"time": "2024-10-31",
"rowNumber": 119
"rowNumber": 122
},
{
"title": ":blue_car: [[Household]]: Renew [road vignette](https://www.e-vignette.ch/) %%done_del%%",
"time": "2024-12-20",
"rowNumber": 113
"rowNumber": 116
}
],
"01.03 Family/Pia Bousquié.md": [
@ -468,13 +468,13 @@
"05.02 Networks/Configuring UFW.md": [
{
"title": "🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%%",
"time": "2024-02-17",
"time": "2024-03-02",
"rowNumber": 239
},
{
"title": "🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%%",
"time": "2024-02-17",
"rowNumber": 296
"time": "2024-03-02",
"rowNumber": 298
}
],
"01.03 Family/Amélie Solanet.md": [
@ -515,7 +515,7 @@
"00.08 Bookmarks/Bookmarks - Selfhosted Apps.md": [
{
"title": ":label: [[Bookmarks - Selfhosted apps]]: Review bookmarks %%done_del%%",
"time": "2024-02-22",
"time": "2024-05-22",
"rowNumber": 178
}
],
@ -709,13 +709,13 @@
"02.03 Zürich/Juan Bautista Bossio.md": [
{
"title": ":horse_racing: [[Juan Bautista Bossio|Juan]]: Bring a bottle of fernet + normal coca cola %%done_del%%",
"time": "2024-02-20",
"time": "2024-03-20",
"rowNumber": 102
},
{
"title": ":birthday: :horse_racing: [[Juan Bautista Bossio|Juan]]s birthday %%done_del%%",
"time": "2024-04-19",
"rowNumber": 120
"rowNumber": 121
}
],
"00.08 Bookmarks/Bookmarks - Investments.md": [
@ -791,7 +791,7 @@
"00.08 Bookmarks/Bookmarks - Art.md": [
{
"title": ":label: [[Bookmarks - Art]]: Review bookmarks %%done_del%%",
"time": "2024-02-26",
"time": "2024-05-26",
"rowNumber": 88
}
],
@ -807,13 +807,6 @@
"rowNumber": 104
}
],
"00.01 Admin/Calendars/2023-12-28.md": [
{
"title": "15:31 :man_in_tuxedo: [[@Lifestyle|Social]]: Contact Thomas de Villoutreys (:test_wappen_genf_matt:)",
"time": "2024-02-21",
"rowNumber": 104
}
],
"01.01 Life Orga/@Family.md": [
{
"title": ":family: [[@Family|Family]]: Explore civil procedures to change names (+whether in 🇨🇭 or 🇫🇷)",
@ -846,75 +839,75 @@
}
],
"02.03 Zürich/@@Zürich.md": [
{
"title": "🎭:frame_with_picture: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out exhibitions at the [Kunsthaus](https://www.kunsthaus.ch/en/) %%done_del%%",
"time": "2024-02-15",
"rowNumber": 93
},
{
"title": "🎭:frame_with_picture: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out exhibitions at the [Rietberg](https://rietberg.ch/en/) %%done_del%%",
"time": "2024-03-15",
"rowNumber": 94
"rowNumber": 95
},
{
"title": ":hibiscus: :partying_face: [[@@Zürich|:test_zurich_coat_of_arms:]]: Sechseläuten %%done_del%%",
"time": "2024-04-15",
"rowNumber": 116
"rowNumber": 117
},
{
"title": ":hibiscus: :runner: [[@@Zürich|:test_zurich_coat_of_arms:]]: Zürich Marathon %%done_del%%",
"time": "2024-04-21",
"rowNumber": 126
"rowNumber": 127
},
{
"title": ":hibiscus: :fork_and_knife: [[@@Zürich|:test_zurich_coat_of_arms:]]: Book a restaurant with terrace for the season: [[Albishaus]], [[Restaurant Boldern]], [[Zur Buech]], [[Jardin Zürichberg]], [[Bistro Rigiblick]], [[Portofino am See]], [[La Réserve|La Muña]] %%done_del%%",
"time": "2024-05-01",
"rowNumber": 102
"rowNumber": 103
},
{
"title": "🎭:frame_with_picture: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out exhibitions at the [Kunsthaus](https://www.kunsthaus.ch/en/) %%done_del%%",
"time": "2024-05-15",
"rowNumber": 93
},
{
"title": ":hibiscus: :canned_food: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out [FOOD ZURICH - MEHR ALS EIN FESTIVAL](https://www.foodzurich.com/de/) %%done_del%%",
"time": "2024-06-01",
"rowNumber": 103
"rowNumber": 104
},
{
"title": ":hibiscus: :partying_face: [[@@Zürich|:test_zurich_coat_of_arms:]]: Zürich Pride Festival %%done_del%%",
"time": "2024-06-15",
"rowNumber": 117
"rowNumber": 118
},
{
"title": ":sunny: :movie_camera: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out programmation of the [Zurich's finest open-air cinema | Allianz Cinema -](https://zuerich.allianzcinema.ch/en) %%done_del%%",
"time": "2024-07-01",
"rowNumber": 104
"rowNumber": 105
},
{
"title": ":sunny: :partying_face: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out Seenachtfest Rapperswil-Jona %%done_del%%",
"time": "2024-08-01",
"rowNumber": 120
"rowNumber": 121
},
{
"title": ":sunny: :runner: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out tickets to Weltklasse Zürich %%done_del%%",
"time": "2024-08-01",
"rowNumber": 127
"rowNumber": 128
},
{
"title": ":sunny: :partying_face: [[@@Zürich|:test_zurich_coat_of_arms:]]: Street Parade %%done_del%%",
"time": "2024-08-10",
"rowNumber": 118
"rowNumber": 119
},
{
"title": ":sunny: :partying_face: [[@@Zürich|:test_zurich_coat_of_arms:]]: Zürich Openair %%done_del%%",
"time": "2024-08-23",
"rowNumber": 119
"rowNumber": 120
},
{
"title": ":maple_leaf: :movie_camera: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out Zürich Film Festival %%done_del%%",
"time": "2024-09-15",
"rowNumber": 105
"rowNumber": 106
},
{
"title": ":maple_leaf: :wine_glass: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out Zürichs Wine festival ([ZWF - Zurich Wine Festival](https://zurichwinefestival.ch/)) %%done_del%%",
"time": "2024-09-25",
"rowNumber": 106
"rowNumber": 107
},
{
"title": ":snowflake:🎭 [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out floating theatre ([Herzlich willkommen!](http://herzbaracke.ch/)) %%done_del%%",
@ -924,27 +917,27 @@
{
"title": ":maple_leaf: :wine_glass: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out [Discover the Excitement of EXPOVINA Wine Events | Join Us at Weinschiffe, Primavera, and Wine Trophy | EXPOVINA](https://expovina.ch/en-ch/) %%done_del%%",
"time": "2024-10-15",
"rowNumber": 107
"rowNumber": 108
},
{
"title": ":snowflake: :person_in_steamy_room: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out [Sauna Cubes at Strandbad Küsnacht — Strandbadsauna](https://www.strandbadsauna.ch/home-eng) %%done_del%%",
"time": "2024-11-15",
"rowNumber": 100
"rowNumber": 101
},
{
"title": ":christmas_tree: :cocktail: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out pop-up bars ([Pop-ups at Christmas | zuerich.com](https://www.zuerich.com/en/visit/christmas-in-zurich/pop-ups)) %%done_del%%",
"time": "2024-12-01",
"rowNumber": 101
"rowNumber": 102
},
{
"title": ":snowflake: :swimmer: [[@@Zürich|:test_zurich_coat_of_arms:]]: Samichlausschwimmen %%done_del%%",
"time": "2024-12-08",
"rowNumber": 113
"rowNumber": 114
},
{
"title": ":snowflake: :partying_face: [[@@Zürich|:test_zurich_coat_of_arms:]]: ZüriCarneval weekend %%done_del%%",
"time": "2025-02-15",
"rowNumber": 114
"rowNumber": 115
}
],
"03.02 Travels/Geneva.md": [
@ -1012,20 +1005,6 @@
"time": "2026-02-01",
"rowNumber": 83
}
],
"00.01 Admin/Calendars/2024-02-09.md": [
{
"title": "16:38 :judge: [[@Life Admin|Admin]]: Enchères à suivre",
"time": "2024-02-21",
"rowNumber": 103
}
],
"00.01 Admin/Calendars/2024-02-14.md": [
{
"title": "21:40 :clapper: [[@Cinematheque|Cinematheque]]: Download 'All of Us Strangers'",
"time": "2024-02-28",
"rowNumber": 103
}
]
},
"debug": false,

@ -0,0 +1,20 @@
{
"defaultVoice": "speechSynthesis-",
"pitch": 1,
"rate": 1,
"volume": 1,
"speakLinks": false,
"speakFrontmatter": false,
"speakSyntax": false,
"speakTitle": true,
"speakCodeblocks": false,
"speakEmoji": false,
"speakComments": false,
"languageVoices": [],
"stopPlaybackWhenNoteChanges": false,
"services": {
"openai": {
"key": ""
}
}
}

@ -419,7 +419,7 @@ var require_i18n_iso_languages = __commonJS({
__export(exports, {
default: () => TTSPlugin
});
var import_obsidian5 = __toModule(require("obsidian"));
var import_obsidian6 = __toModule(require("obsidian"));
// src/settings.ts
var import_obsidian3 = __toModule(require("obsidian"));
@ -471,6 +471,7 @@ var LanguageVoiceModal = class extends import_obsidian2.Modal {
super(plugin.app);
this.plugin = plugin;
if (map) {
this.id = map.id;
this.language = map.language;
this.voice = map.voice;
}
@ -478,6 +479,7 @@ var LanguageVoiceModal = class extends import_obsidian2.Modal {
display() {
return __async(this, null, function* () {
const { contentEl } = this;
const voices = yield this.plugin.serviceManager.getVoices();
contentEl.empty();
const languageNames = new Intl.DisplayNames(["en"], { type: "language" });
new import_obsidian2.Setting(contentEl).setName("Language").addDropdown((dropdown) => __async(this, null, function* () {
@ -495,12 +497,12 @@ var LanguageVoiceModal = class extends import_obsidian2.Modal {
});
}));
new import_obsidian2.Setting(contentEl).setName("Voice").addDropdown((dropdown) => __async(this, null, function* () {
const voices = window.speechSynthesis.getVoices();
for (const voice of voices) {
dropdown.addOption(voice.name, voice.name + " - " + languageNames.of(voice.lang));
dropdown.addOption(voice.service + "-" + voice.id, voice.name + " - " + languageNames.of(voice.languages[0]));
}
dropdown.setValue(this.voice).onChange((value) => __async(this, null, function* () {
this.voice = value;
dropdown.setValue(this.id).onChange((value) => __async(this, null, function* () {
this.id = value;
this.voice = voices.filter((voice) => voice.service + "-" + voice.id === value).first().name;
}));
})).addExtraButton((button) => {
button.setIcon("play-audio-glyph").setTooltip("Test voice").onClick(() => __async(this, null, function* () {
@ -508,7 +510,7 @@ var LanguageVoiceModal = class extends import_obsidian2.Modal {
yield input.openAndGetValue((value) => __async(this, null, function* () {
if (value.getValue().length === 0)
return;
yield this.plugin.ttsService.sayWithVoice("", value.getValue(), this.voice);
yield this.plugin.serviceManager.sayWithVoice(value.getValue(), this.id);
}));
}));
});
@ -551,7 +553,12 @@ var DEFAULT_SETTINGS = {
speakEmoji: false,
speakComments: false,
languageVoices: [],
stopPlaybackWhenNoteChanges: false
stopPlaybackWhenNoteChanges: false,
services: {
openai: {
key: ""
}
}
};
var TTSSettingsTab = class extends import_obsidian3.PluginSettingTab {
constructor(plugin) {
@ -559,166 +566,188 @@ var TTSSettingsTab = class extends import_obsidian3.PluginSettingTab {
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h2", { text: "Text to Speech - Settings" });
new import_obsidian3.Setting(containerEl).setName("Default voice").addDropdown((dropdown) => __async(this, null, function* () {
const voices = window.speechSynthesis.getVoices();
for (const voice of voices) {
dropdown.addOption(voice.name, voice.name);
}
dropdown.setValue(this.plugin.settings.defaultVoice).onChange((value) => __async(this, null, function* () {
this.plugin.settings.defaultVoice = value;
yield this.plugin.saveSettings();
}));
})).addExtraButton((button) => {
button.setIcon("play-audio-glyph").setTooltip("Test voice").onClick(() => __async(this, null, function* () {
const input = new TextInputPrompt(this.app, "What do you want to hear?", "", "Hello world this is Text to speech running in obsidian", "Hello world this is Text to speech running in obsidian");
yield input.openAndGetValue((value) => __async(this, null, function* () {
if (value.getValue().length === 0)
return;
yield this.plugin.ttsService.say("", value.getValue());
}));
}));
});
containerEl.createEl("h3", { text: "Language specific voices" });
new import_obsidian3.Setting(containerEl).setName("Add New").setDesc("Add a new language specific voice").addButton((button) => {
return button.setTooltip("add new language specific voice").setIcon("create-new").onClick(() => __async(this, null, function* () {
const modal = new LanguageVoiceModal(this.plugin);
modal.onClose = () => __async(this, null, function* () {
if (modal.saved) {
this.plugin.settings.languageVoices.push({
language: modal.language,
voice: modal.voice
});
yield this.plugin.saveSettings();
this.display();
return __async(this, null, function* () {
const { containerEl } = this;
containerEl.empty();
new import_obsidian3.Setting(containerEl).setName("Default voice").addDropdown((dropdown) => __async(this, null, function* () {
const voices = [];
const services = this.plugin.serviceManager.getServices();
for (const service of services) {
if (service.isConfigured() && service.isValid()) {
for (const voice of yield service.getVoices()) {
voices.push({
serviceId: service.id,
serviceName: service.name,
id: voice.id,
name: voice.name,
languages: voice.languages
});
}
}
});
modal.open();
}));
});
const additionalContainer = containerEl.createDiv("tts-languages");
const voicesDiv = additionalContainer.createDiv("voices");
for (const languageVoice of this.plugin.settings.languageVoices) {
const displayNames = new Intl.DisplayNames([languageVoice.language], { type: "language", fallback: "none" });
const setting = new import_obsidian3.Setting(voicesDiv);
setting.setName(displayNames.of(languageVoice.language) + " - " + languageVoice.language);
setting.setDesc(languageVoice.voice);
setting.addExtraButton((b2) => {
b2.setIcon("pencil").setTooltip("Edit").onClick(() => {
const modal = new LanguageVoiceModal(this.plugin, languageVoice);
}
for (const voice of voices) {
dropdown.addOption(`${voice.serviceId}-${voice.id}`, `${voice.name}`);
}
dropdown.setValue(this.plugin.settings.defaultVoice).onChange((value) => __async(this, null, function* () {
this.plugin.settings.defaultVoice = value;
yield this.plugin.saveSettings();
}));
})).addExtraButton((button) => {
button.setIcon("play-audio-glyph").setTooltip("Test voice").onClick(() => __async(this, null, function* () {
const input = new TextInputPrompt(this.app, "What do you want to hear?", "", "Hello world this is Text to speech running in obsidian", "Hello world this is Text to speech running in obsidian");
yield input.openAndGetValue((value) => __async(this, null, function* () {
if (value.getValue().length === 0)
return;
yield this.plugin.serviceManager.sayWithVoice(value.getValue(), this.plugin.settings.defaultVoice);
}));
}));
});
new import_obsidian3.Setting(containerEl).setName("Language specific voices").setHeading();
new import_obsidian3.Setting(containerEl).setName("Add new").setDesc("Add a new language specific voice").addButton((button) => {
return button.setTooltip("add new language specific voice").setIcon("plus").onClick(() => __async(this, null, function* () {
const modal = new LanguageVoiceModal(this.plugin);
modal.onClose = () => __async(this, null, function* () {
if (modal.saved) {
const setting2 = this.plugin.settings.languageVoices.filter((value) => value.language !== modal.language);
setting2.push({ language: modal.language, voice: modal.voice });
this.plugin.settings.languageVoices = setting2;
this.plugin.settings.languageVoices.push({
id: modal.id,
language: modal.language,
voice: modal.voice
});
yield this.plugin.saveSettings();
this.display();
yield this.display();
}
});
modal.open();
}));
});
const additionalContainer = containerEl.createDiv("tts-languages");
const voicesDiv = additionalContainer.createDiv("voices");
for (const languageVoice of this.plugin.settings.languageVoices) {
const displayNames = new Intl.DisplayNames([languageVoice.language], { type: "language", fallback: "none" });
const setting = new import_obsidian3.Setting(voicesDiv);
setting.setName(displayNames.of(languageVoice.language) + " - " + languageVoice.language);
setting.setDesc(languageVoice.voice);
setting.addExtraButton((b2) => {
b2.setIcon("pencil").setTooltip("Edit").onClick(() => {
const modal = new LanguageVoiceModal(this.plugin, languageVoice);
modal.onClose = () => __async(this, null, function* () {
if (modal.saved) {
const setting2 = this.plugin.settings.languageVoices.filter((value) => value.language !== modal.language);
setting2.push({ id: modal.id, language: modal.language, voice: modal.voice });
this.plugin.settings.languageVoices = setting2;
yield this.plugin.saveSettings();
this.display();
}
});
modal.open();
});
}).addExtraButton((b2) => {
b2.setIcon("trash").setTooltip("Delete").onClick(() => __async(this, null, function* () {
this.plugin.settings.languageVoices = this.plugin.settings.languageVoices.filter((value) => value.language !== languageVoice.language);
yield this.plugin.saveSettings();
this.display();
}));
});
}).addExtraButton((b2) => {
b2.setIcon("trash").setTooltip("Delete").onClick(() => __async(this, null, function* () {
this.plugin.settings.languageVoices = this.plugin.settings.languageVoices.filter((value) => value.language !== languageVoice.language);
}
new import_obsidian3.Setting(containerEl).setName("Audio").setHeading();
new import_obsidian3.Setting(containerEl).setName("Volume").addSlider((slider) => __async(this, null, function* () {
slider.setValue(this.plugin.settings.volume * 100).setDynamicTooltip().setLimits(0, 100, 1).onChange((value) => __async(this, null, function* () {
this.plugin.settings.volume = value / 100;
yield this.plugin.saveSettings();
}));
})).addExtraButton((button) => {
button.setIcon("reset").setTooltip("restore default").onClick(() => __async(this, null, function* () {
this.plugin.settings.volume = DEFAULT_SETTINGS.volume;
yield this.plugin.saveSettings();
this.display();
}));
});
}
containerEl.createEl("h3", { text: "Audio settings" });
new import_obsidian3.Setting(containerEl).setName("Volume").addSlider((slider) => __async(this, null, function* () {
slider.setValue(this.plugin.settings.volume * 100).setDynamicTooltip().setLimits(0, 100, 1).onChange((value) => __async(this, null, function* () {
this.plugin.settings.volume = value / 100;
yield this.plugin.saveSettings();
}));
})).addExtraButton((button) => {
button.setIcon("reset").setTooltip("restore default").onClick(() => __async(this, null, function* () {
this.plugin.settings.volume = DEFAULT_SETTINGS.volume;
yield this.plugin.saveSettings();
this.display();
}));
});
new import_obsidian3.Setting(containerEl).setName("Rate").setDesc("how fast the text will be spoken").addSlider((slider) => __async(this, null, function* () {
slider.setValue(this.plugin.settings.rate).setDynamicTooltip().setLimits(0.1, 10, 0.1).onChange((value) => __async(this, null, function* () {
this.plugin.settings.rate = value;
yield this.plugin.saveSettings();
}));
})).addExtraButton((button) => {
button.setIcon("reset").setTooltip("restore default").onClick(() => __async(this, null, function* () {
this.plugin.settings.rate = DEFAULT_SETTINGS.rate;
yield this.plugin.saveSettings();
this.display();
}));
});
new import_obsidian3.Setting(containerEl).setName("Pitch").addSlider((slider) => __async(this, null, function* () {
slider.setValue(this.plugin.settings.pitch).setDynamicTooltip().setLimits(0, 2, 0.1).onChange((value) => __async(this, null, function* () {
this.plugin.settings.pitch = value;
yield this.plugin.saveSettings();
}));
})).addExtraButton((button) => {
button.setIcon("reset").setTooltip("restore default").onClick(() => __async(this, null, function* () {
this.plugin.settings.pitch = DEFAULT_SETTINGS.pitch;
yield this.plugin.saveSettings();
this.display();
}));
});
containerEl.createEl("h3", { text: "Speak" });
new import_obsidian3.Setting(containerEl).setName("Title").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakTitle).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakTitle = value;
yield this.plugin.saveSettings();
new import_obsidian3.Setting(containerEl).setName("Rate").setDesc("how fast the text will be spoken").addSlider((slider) => __async(this, null, function* () {
slider.setValue(this.plugin.settings.rate).setDynamicTooltip().setLimits(0.1, 10, 0.1).onChange((value) => __async(this, null, function* () {
this.plugin.settings.rate = value;
yield this.plugin.saveSettings();
}));
})).addExtraButton((button) => {
button.setIcon("reset").setTooltip("restore default").onClick(() => __async(this, null, function* () {
this.plugin.settings.rate = DEFAULT_SETTINGS.rate;
yield this.plugin.saveSettings();
this.display();
}));
});
new import_obsidian3.Setting(containerEl).setName("Pitch").addSlider((slider) => __async(this, null, function* () {
slider.setValue(this.plugin.settings.pitch).setDynamicTooltip().setLimits(0, 2, 0.1).onChange((value) => __async(this, null, function* () {
this.plugin.settings.pitch = value;
yield this.plugin.saveSettings();
}));
})).addExtraButton((button) => {
button.setIcon("reset").setTooltip("restore default").onClick(() => __async(this, null, function* () {
this.plugin.settings.pitch = DEFAULT_SETTINGS.pitch;
yield this.plugin.saveSettings();
this.display();
}));
});
new import_obsidian3.Setting(containerEl).setName("Speak").setHeading();
new import_obsidian3.Setting(containerEl).setName("Title").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakTitle).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakTitle = value;
yield this.plugin.saveSettings();
}));
}));
}));
new import_obsidian3.Setting(containerEl).setName("Frontmatter").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakFrontmatter).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakFrontmatter = value;
yield this.plugin.saveSettings();
new import_obsidian3.Setting(containerEl).setName("Frontmatter").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakFrontmatter).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakFrontmatter = value;
yield this.plugin.saveSettings();
}));
}));
}));
new import_obsidian3.Setting(containerEl).setName("Links").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakLinks).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakLinks = value;
yield this.plugin.saveSettings();
new import_obsidian3.Setting(containerEl).setName("Links").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakLinks).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakLinks = value;
yield this.plugin.saveSettings();
}));
}));
}));
new import_obsidian3.Setting(containerEl).setName("Codeblocks").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakCodeblocks).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakCodeblocks = value;
yield this.plugin.saveSettings();
new import_obsidian3.Setting(containerEl).setName("Codeblocks").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakCodeblocks).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakCodeblocks = value;
yield this.plugin.saveSettings();
}));
}));
}));
new import_obsidian3.Setting(containerEl).setName("Comments").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakComments).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakComments = value;
yield this.plugin.saveSettings();
new import_obsidian3.Setting(containerEl).setName("Comments").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakComments).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakComments = value;
yield this.plugin.saveSettings();
}));
}));
}));
new import_obsidian3.Setting(containerEl).setName("Syntax").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakSyntax).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakSyntax = value;
yield this.plugin.saveSettings();
new import_obsidian3.Setting(containerEl).setName("Syntax").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakSyntax).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakSyntax = value;
yield this.plugin.saveSettings();
}));
}));
}));
new import_obsidian3.Setting(containerEl).setName("Emoji").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakEmoji).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakEmoji = value;
yield this.plugin.saveSettings();
new import_obsidian3.Setting(containerEl).setName("Emoji").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.speakEmoji).onChange((value) => __async(this, null, function* () {
this.plugin.settings.speakEmoji = value;
yield this.plugin.saveSettings();
}));
}));
}));
containerEl.createEl("h2", { text: "Misc" });
new import_obsidian3.Setting(containerEl).setName("Stop playback when a note is closed/new note is opened").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.stopPlaybackWhenNoteChanges).onChange((value) => __async(this, null, function* () {
this.plugin.settings.stopPlaybackWhenNoteChanges = value;
yield this.plugin.saveSettings();
new import_obsidian3.Setting(containerEl).setName("Misc").setHeading();
new import_obsidian3.Setting(containerEl).setName("Stop playback when a note is closed/new note is opened").addToggle((toggle) => __async(this, null, function* () {
toggle.setValue(this.plugin.settings.stopPlaybackWhenNoteChanges).onChange((value) => __async(this, null, function* () {
this.plugin.settings.stopPlaybackWhenNoteChanges = value;
yield this.plugin.saveSettings();
}));
}));
}));
});
}
};
// src/TTSServiceImplementation.ts
var import_obsidian4 = __toModule(require("obsidian"));
// node_modules/@vanakat/plugin-api/index.js
function registerAPI(name, api, plugin) {
window["PluginApi"] = window["PluginApi"] || {};
window["PluginApi"][name] = api;
plugin.register(() => {
delete window["PluginApi"][name];
});
}
// node_modules/tinyld/dist/tinyld.esm.js
var p = "normal";
@ -855,9 +884,12 @@ function o0(a, i) {
return V(a) ? b(a, n, i0, n0) : [];
}
// src/TTSServiceImplementation.ts
var TTSServiceImplementation = class {
// src/services/SpeechSynthesis.ts
var import_obsidian4 = __toModule(require("obsidian"));
var SpeechSynthesis = class {
constructor(plugin) {
this.id = "speechSynthesis";
this.name = "Speech Synthesis";
this.plugin = plugin;
}
stop() {
@ -881,181 +913,184 @@ var TTSServiceImplementation = class {
isPaused() {
return window.speechSynthesis.paused;
}
sayWithVoice(title, text, voice) {
isConfigured() {
return true;
}
isValid() {
return !import_obsidian4.Platform.isAndroidApp;
}
getVoices() {
return __async(this, null, function* () {
const voices = window.speechSynthesis.getVoices();
return voices.map((voice) => {
return {
id: voice.voiceURI,
name: voice.name,
languages: [voice.lang]
};
});
});
}
sayWithVoice(text, voice) {
return __async(this, null, function* () {
let content = text;
if (!this.plugin.settings.speakSyntax) {
content = content.replace(/#/g, "");
content = content.replace(/-/g, "");
content = content.replace(/_/g, "");
content = content.replace(/\*/g, "");
content = content.replace(/\^/g, "");
content = content.replace(/==/g, "");
content = content.replace(/^\S{6}/g, "");
}
if (!this.plugin.settings.speakLinks) {
content = content.replace(/(?:__|[*#])|\[(.*?)]\(.*?\)/gm, "$1");
content = content.replace(/http[s]:\/\/[^\s]*/gm, "");
console.log(content);
}
if (!this.plugin.settings.speakCodeblocks) {
content = content.replace(/```[\s\S]*?```/g, "");
}
if (!this.plugin.settings.speakComments) {
content = content.replace(/%[\s\S]*?%/g, "");
content = content.replace(/<!--[\s\S]*?-->/g, "");
}
if (!this.plugin.settings.speakEmoji) {
content = content.replace(/(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/g, "");
}
content = content.replace(/\n/g, " ! ");
content = content.replace(/\[\[(.*\|)(.*)]]/gm, "$2");
if (this.plugin.settings.speakTitle && (title == null ? void 0 : title.length) > 0) {
content = title + " ! ! " + content;
}
const msg = new SpeechSynthesisUtterance();
msg.text = content;
msg.text = text;
msg.volume = this.plugin.settings.volume;
msg.rate = this.plugin.settings.rate;
msg.pitch = this.plugin.settings.pitch;
msg.voice = window.speechSynthesis.getVoices().filter((otherVoice) => otherVoice.name === voice)[0];
window.speechSynthesis.speak(msg);
this.plugin.statusbar.setText("TTS: speaking");
this.plugin.statusbar.createSpan({ text: "Speaking" });
});
}
getVoice(languageCode) {
const filtered = this.plugin.settings.languageVoices.filter((lang) => lang.language === languageCode);
if (filtered.length === 0)
return null;
return filtered[0].voice;
};
// src/ServiceManager.ts
var import_obsidian5 = __toModule(require("obsidian"));
var ServiceManager = class {
constructor(plugin) {
this.services = [];
this.plugin = plugin;
this.services.push(new SpeechSynthesis(this.plugin));
}
say(title, text, languageCode) {
getServices() {
return this.services;
}
isSpeaking() {
return this.services.some((service) => service.isSpeaking());
}
isPaused() {
return this.services.every((service) => service.isPaused());
}
stop() {
for (const service of this.services) {
if (service.isSpeaking() || service.isPaused()) {
service.stop();
}
}
}
pause() {
for (const service of this.services) {
if (service.isSpeaking()) {
service.pause();
}
}
}
resume() {
for (const service of this.services) {
if (service.isPaused()) {
service.resume();
}
}
}
sayWithVoice(text, voice) {
return __async(this, null, function* () {
let usedVoice = this.plugin.settings.defaultVoice;
if (languageCode && languageCode.length !== 0) {
const voice = this.getVoice(languageCode);
if (voice) {
usedVoice = voice;
} else {
new import_obsidian4.Notice("TTS: could not find voice for language " + languageCode + ". Using default voice.");
}
const service = this.services.filter((service2) => voice.startsWith(service2.id)).first();
const split = voice.split("-");
split.shift();
voice = split.join("-");
if (!service) {
new import_obsidian5.Notice("No service found for voice" + voice);
}
yield this.sayWithVoice(title, text, usedVoice);
yield service.sayWithVoice(text, voice);
});
}
play(view) {
getVoices() {
return __async(this, null, function* () {
const isPreview = view.getMode() === "preview";
const selectedText = view.editor.getSelection().length > 0 ? view.editor.getSelection() : window.getSelection().toString();
let content = selectedText.length > 0 ? selectedText : view.getViewData();
const title = selectedText.length > 0 ? null : view.getDisplayText();
let language = this.getLanguageFromFrontmatter(view);
if (language === "") {
language = h0(content);
}
if (!this.plugin.settings.speakFrontmatter) {
if (!isPreview) {
content = content.replace("---", "");
content = content.substring(content.indexOf("---") + 1);
const voices = [];
for (const service of this.services) {
for (const voice of yield service.getVoices()) {
voices.push({
service: service.id,
id: voice.id,
name: voice.name,
languages: voice.languages
});
}
}
yield this.say(title, content, language);
return voices;
});
}
getLanguageFromFrontmatter(view) {
let language = "";
if (!view.getViewData().startsWith("---"))
return language;
const frontmatter = view.getViewData().match(/---[\s\S]*?---/);
if (frontmatter && frontmatter[0]) {
const parsedFrontmatter = (0, import_obsidian4.parseYaml)(frontmatter[0].replace(/---/g, ""));
if (parsedFrontmatter["lang"]) {
language = parsedFrontmatter["lang"];
}
}
return language;
}
};
// node_modules/@vanakat/plugin-api/index.js
function registerAPI(name, api, plugin) {
window["PluginApi"] = window["PluginApi"] || {};
window["PluginApi"][name] = api;
plugin.register(() => {
delete window["PluginApi"][name];
});
}
// src/main.ts
var TTSPlugin = class extends import_obsidian5.Plugin {
var TTSPlugin = class extends import_obsidian6.Plugin {
onload() {
return __async(this, null, function* () {
this.ttsService = new TTSServiceImplementation(this);
(0, import_obsidian6.addIcon)("tts-play-pause", '<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256"><rect x="0" y="0" width="256" height="256" fill="none" stroke="none" /><path fill="currentColor" d="M184 64v128a8 8 0 0 1-16 0V64a8 8 0 0 1 16 0Zm40-8a8 8 0 0 0-8 8v128a8 8 0 0 0 16 0V64a8 8 0 0 0-8-8Zm-80 72a15.76 15.76 0 0 1-7.33 13.34l-88.19 56.15A15.91 15.91 0 0 1 24 184.15V71.85a15.91 15.91 0 0 1 24.48-13.34l88.19 56.15A15.76 15.76 0 0 1 144 128Zm-16.18 0L40 72.08v111.85Z"/></svg>');
console.log("loading tts plugin");
if (import_obsidian5.Platform.isAndroidApp) {
new import_obsidian5.Notice("TTS: due to a bug in android this plugin does not work on this platform");
if (import_obsidian6.Platform.isAndroidApp) {
new import_obsidian6.Notice("TTS: due to a bug in android this plugin does not work on this platform");
this.unload();
}
yield this.loadSettings();
this.serviceManager = new ServiceManager(this);
yield this.migrateSettings();
this.addCommand({
id: "start-tts-playback",
name: "Start playback",
icon: "play",
checkCallback: (checking) => {
const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian5.MarkdownView);
if (!checking && markdownView)
this.ttsService.play(markdownView);
return !!markdownView;
const info = this.app.workspace.activeEditor;
if (!checking)
this.play(info);
return !!info;
}
});
this.addCommand({
id: "cancel-tts-playback",
name: "Stop playback",
icon: "stop",
checkCallback: (checking) => {
if (!checking)
this.ttsService.stop();
return this.ttsService.isSpeaking();
if (!checking) {
this.serviceManager.stop();
}
return this.serviceManager.isSpeaking();
}
});
this.addCommand({
id: "pause-tts-playback",
name: "pause playback",
icon: "pause",
checkCallback: (checking) => {
if (!checking)
this.ttsService.pause();
return this.ttsService.isSpeaking();
if (!checking) {
this.serviceManager.pause();
}
return this.serviceManager.isSpeaking();
}
});
this.addCommand({
id: "resume-tts-playback",
name: "Resume playback",
icon: "play-audio-glyph",
checkCallback: (checking) => {
if (!checking)
this.ttsService.resume();
return this.ttsService.isPaused();
this.serviceManager.resume();
return this.serviceManager.isPaused();
}
});
this.addCommand({
id: "start-pause-resume-tts-playback",
name: "Start/Pause/Resume playback",
name: "Play/Pause",
icon: "tts-play-pause",
checkCallback: (checking) => {
const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian5.MarkdownView);
if (!checking) {
if (markdownView) {
if (this.ttsService.isSpeaking() && !this.ttsService.isPaused()) {
this.ttsService.pause();
} else if (this.ttsService.isPaused()) {
this.ttsService.resume();
} else {
this.ttsService.play(markdownView);
}
const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian6.MarkdownView);
if (!checking && markdownView) {
if (this.serviceManager.isPaused()) {
this.serviceManager.resume();
} else if (this.serviceManager.isSpeaking()) {
this.serviceManager.pause();
} else {
this.play(markdownView);
}
}
return !!markdownView;
}
});
this.registerInterval(window.setInterval(() => {
if (!this.ttsService.isSpeaking()) {
this.statusbar.setText("TTS");
if (!this.serviceManager.isSpeaking()) {
this.statusbar.empty();
(0, import_obsidian6.setIcon)(this.statusbar, "audio-file");
}
}, 1e3 * 10));
this.addRibbonIcon("audio-file", "Text to Speech", (event) => __async(this, null, function* () {
@ -1063,60 +1098,70 @@ var TTSPlugin = class extends import_obsidian5.Plugin {
}));
this.registerEvent(this.app.workspace.on("editor-menu", (menu, _2, markdownView) => {
menu.addItem((item) => {
item.setTitle(window.getSelection().toString().length > 0 ? "Read selected text" : "Read the note").setIcon("audio-file").onClick(() => {
this.ttsService.play(markdownView);
item.setTitle(activeWindow.getSelection().toString().length > 0 ? "Read selected text" : "Read the note").setIcon("audio-file").onClick(() => {
this.play(markdownView);
});
});
}));
this.registerEvent(this.app.workspace.on("file-menu", (menu, file) => {
if (file instanceof import_obsidian6.TFile) {
menu.addItem((item) => {
item.setTitle("Read the note").setIcon("audio-file").onClick(() => __async(this, null, function* () {
const content = yield this.app.vault.cachedRead(file);
yield this.say(file.name, content);
}));
});
}
}));
this.registerEvent(this.app.workspace.on("layout-change", () => {
if (this.settings.stopPlaybackWhenNoteChanges) {
this.ttsService.stop();
this.serviceManager.stop();
}
}));
this.addSettingTab(new TTSSettingsTab(this));
this.statusbar = this.addStatusBarItem();
this.statusbar.setText("TTS");
(0, import_obsidian6.setIcon)(this.statusbar, "audio-file");
this.statusbar.classList.add("mod-clickable");
this.statusbar.setAttribute("aria-label", "Text to Speech");
this.statusbar.setAttribute("aria-label-position", "top");
this.statusbar.setAttribute("aria-label-position", "bottom");
this.statusbar.onClickEvent((event) => __async(this, null, function* () {
yield this.createMenu(event);
}));
registerAPI("tts", this.ttsService, this);
registerAPI("tts", this.serviceManager, this);
});
}
createMenu(event) {
return __async(this, null, function* () {
const menu = new import_obsidian5.Menu(this.app);
const markdownView = this.app.workspace.getActiveViewOfType(import_obsidian5.MarkdownView);
const menu = new import_obsidian6.Menu();
const markdownView = this.app.workspace.activeEditor;
if (markdownView) {
if (window.speechSynthesis.speaking) {
menu.addItem((item) => {
item.setIcon("play-audio-glyph").setTitle("Add to playback queue").onClick(() => __async(this, null, function* () {
yield this.ttsService.play(markdownView);
yield this.play(markdownView);
}));
});
} else {
yield this.ttsService.play(markdownView);
yield this.play(markdownView);
return;
}
}
if (window.speechSynthesis.speaking) {
menu.addItem((item) => {
item.setIcon("stop-audio-glyph").setTitle("Stop").onClick(() => __async(this, null, function* () {
this.ttsService.stop();
this.serviceManager.stop();
}));
});
if (window.speechSynthesis.paused) {
menu.addItem((item) => {
item.setIcon("play-audio-glyph").setTitle("Resume").onClick(() => __async(this, null, function* () {
this.ttsService.resume();
this.serviceManager.resume();
}));
});
} else {
menu.addItem((item) => {
item.setIcon("paused").setTitle("Pause").onClick(() => __async(this, null, function* () {
this.ttsService.pause();
this.serviceManager.pause();
}));
});
}
@ -1134,9 +1179,113 @@ var TTSPlugin = class extends import_obsidian5.Plugin {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
});
}
migrateSettings() {
return __async(this, null, function* () {
let migrate = false;
if (!this.serviceManager.getServices().some((service) => this.settings.defaultVoice.includes(service.id))) {
this.settings.defaultVoice = "speechSynthesis-" + this.settings.defaultVoice;
migrate = true;
}
for (const languageVoice of this.settings.languageVoices) {
if (!this.serviceManager.getServices().some((service) => languageVoice.voice.includes(service.id))) {
languageVoice.id = "speechSynthesis-" + languageVoice.voice;
migrate = true;
}
}
if (migrate) {
yield this.saveSettings();
}
});
}
saveSettings() {
return __async(this, null, function* () {
yield this.saveData(this.settings);
});
}
onExternalSettingsChange() {
return __async(this, null, function* () {
yield this.loadSettings();
});
}
getVoice(languageCode) {
const filtered = this.settings.languageVoices.filter((lang) => lang.language === languageCode);
if (filtered.length === 0)
return null;
return filtered[0].voice;
}
say(text, languageCode) {
return __async(this, null, function* () {
let usedVoice = this.settings.defaultVoice;
if (languageCode && languageCode.length !== 0) {
const voice = this.getVoice(languageCode);
if (voice) {
usedVoice = voice;
} else {
new import_obsidian6.Notice("TTS: could not find voice for language " + languageCode + ". Using default voice.");
}
}
const split = usedVoice.split(/-(.*)/s);
const service = this.serviceManager.getServices().filter((service2) => service2.id === split[0] && service2.isConfigured() && service2.isValid()).first();
if (service === void 0) {
new import_obsidian6.Notice("TTS: Could not use configured language, please check your settings.\nUsing default voice");
yield this.serviceManager.sayWithVoice(text, this.settings.defaultVoice);
return;
}
yield service.sayWithVoice(text, split[1]);
});
}
prepareText(title, text) {
let content = text;
if (!this.settings.speakSyntax) {
content = content.replace(/#/g, "");
content = content.replace(/-/g, "");
content = content.replace(/_/g, "");
content = content.replace(/\*/g, "");
content = content.replace(/\^/g, "");
content = content.replace(/==/g, "");
content = content.replace(/^\S{6}/g, "");
}
if (!this.settings.speakLinks) {
content = content.replace(/(?:__|[*#])|\[(.*?)]\(.*?\)/gm, "$1");
content = content.replace(/http[s]:\/\/[^\s]*/gm, "");
}
if (!this.settings.speakCodeblocks) {
content = content.replace(/```[\s\S]*?```/g, "");
}
if (!this.settings.speakComments) {
content = content.replace(/%[\s\S]*?%/g, "");
content = content.replace(/<!--[\s\S]*?-->/g, "");
}
if (!this.settings.speakEmoji) {
content = content.replace(/(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/g, "");
}
content = content.replace(/\n/g, " ! ");
content = content.replace(/\[\[(.*\|)(.*)]]/gm, "$2");
if (this.settings.speakTitle && (title == null ? void 0 : title.length) > 0) {
content = title + " ! ! " + content;
}
return content;
}
play(info) {
return __async(this, null, function* () {
const selectedText = info.editor.getSelection().length > 0 ? info.editor.getSelection() : activeWindow.getSelection().toString();
let content = selectedText.length > 0 ? selectedText : yield this.app.vault.cachedRead(info.file);
let language = this.getLanguageFromFrontmatter(info.file);
if (language === "") {
language = h0(content);
}
content = this.prepareText(selectedText.length > 0 ? "" : info.file.name, content);
if (!this.settings.speakFrontmatter) {
if (selectedText.length === 0) {
content = content.replace("---", "");
content = content.substring(content.indexOf("---") + 1);
}
}
yield this.say(content, language);
});
}
getLanguageFromFrontmatter(file) {
var _a;
return (_a = this.app.metadataCache.getFileCache(file).frontmatter) == null ? void 0 : _a.lang;
}
};

@ -1,9 +1,9 @@
{
"id": "obsidian-tts",
"name": "Text to Speech",
"version": "0.5.2",
"minAppVersion": "0.12.0",
"description": "Text to speech for Obsidian. Hear your notes.",
"version": "0.5.4",
"minAppVersion": "1.4.0",
"description": "Hear your notes.",
"author": "Johannes Theiner",
"authorUrl": "https://github.com/joethei",
"isDesktopOnly": false

@ -48,7 +48,7 @@
"devMode": false,
"templateFolderPath": "00.01 Admin/Templates",
"announceUpdates": true,
"version": "1.6.1",
"version": "1.7.0",
"disableOnlineFeatures": true,
"ai": {
"OpenAIApiKey": "",

@ -147,7 +147,7 @@ __export(main_exports, {
default: () => QuickAdd
});
module.exports = __toCommonJS(main_exports);
var import_obsidian40 = require("obsidian");
var import_obsidian41 = require("obsidian");
// src/quickAddSettingsTab.ts
var import_obsidian33 = require("obsidian");
@ -7471,6 +7471,7 @@ var FILE_NUMBER_REGEX = new RegExp(/([0-9]*)\.md$/);
var NUMBER_REGEX = new RegExp(/^-?[0-9]*$/);
var CREATE_IF_NOT_FOUND_TOP = "top";
var CREATE_IF_NOT_FOUND_BOTTOM = "bottom";
var CREATE_IF_NOT_FOUND_CURSOR = "cursor";
var DATE_REGEX = new RegExp(/{{DATE(\+-?[0-9]+)?}}/i);
var DATE_REGEX_FORMATTED = new RegExp(
/{{DATE:([^}\n\r+]*)(\+-?[0-9]+)?}}/i
@ -10799,7 +10800,7 @@ function invariant(condition, message) {
return;
}
// node_modules/.pnpm/zustand@4.3.8/node_modules/zustand/esm/vanilla.mjs
// node_modules/.pnpm/zustand@4.3.8_react@18.2.0/node_modules/zustand/esm/vanilla.mjs
var import_meta = {};
var createStoreImpl = (createState) => {
let state;
@ -11959,15 +11960,7 @@ function waitFor(ms) {
return new Promise((res) => setTimeout(res, ms));
}
function getLinesInString(input) {
const lines = [];
let tempString = input;
while (tempString.includes("\n")) {
const lineEndIndex = tempString.indexOf("\n");
lines.push(tempString.slice(0, lineEndIndex));
tempString = tempString.slice(lineEndIndex + 1);
}
lines.push(tempString);
return lines;
return input.split("\n");
}
function escapeRegExp(text2) {
return text2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
@ -13831,7 +13824,7 @@ var CaptureChoiceBuilder = class extends ChoiceBuilder {
}).addDropdown((dropdown) => {
if (!this.choice.insertAfter?.createIfNotFoundLocation)
this.choice.insertAfter.createIfNotFoundLocation = CREATE_IF_NOT_FOUND_TOP;
dropdown.addOption(CREATE_IF_NOT_FOUND_TOP, "Top").addOption(CREATE_IF_NOT_FOUND_BOTTOM, "Bottom").setValue(
dropdown.addOption(CREATE_IF_NOT_FOUND_TOP, "Top").addOption(CREATE_IF_NOT_FOUND_BOTTOM, "Bottom").addOption(CREATE_IF_NOT_FOUND_CURSOR, "Cursor").setValue(
this.choice.insertAfter?.createIfNotFoundLocation
).onChange(
(value) => this.choice.insertAfter.createIfNotFoundLocation = value
@ -17716,6 +17709,9 @@ var TemplateChoiceEngine = class extends TemplateEngine {
}
};
// src/formatters/captureChoiceFormatter.ts
var import_obsidian36 = require("obsidian");
// src/formatters/helpers/getEndOfSection.ts
function isSameHeading(heading1, heading2) {
return heading1.line === heading2.line;
@ -17736,9 +17732,7 @@ function getMarkdownHeadings(bodyLines) {
}
function getEndOfSection(lines, targetLine, shouldConsiderSubsections = false) {
const headings = getMarkdownHeadings(lines);
const targetHeading = headings.find(
(heading) => heading.line === targetLine
);
const targetHeading = headings.find((heading) => heading.line === targetLine);
const targetIsHeading = !!targetHeading;
if (!targetIsHeading && shouldConsiderSubsections) {
throw new Error(
@ -17852,8 +17846,8 @@ function findNextIdx(items, fromIdx, condition) {
// src/formatters/captureChoiceFormatter.ts
var CaptureChoiceFormatter = class extends CompleteFormatter {
constructor(app2, plugin, choiceExecutor) {
super(app2, plugin, choiceExecutor);
constructor() {
super(...arguments);
this.file = null;
this.fileContent = "";
}
@ -17898,6 +17892,7 @@ var CaptureChoiceFormatter = class extends CompleteFormatter {
return this.insertTextAfterPositionInBody(
formatted,
this.fileContent,
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
frontmatterEndPosition
);
}
@ -17954,6 +17949,7 @@ ${formatted}`;
return this.insertTextAfterPositionInBody(
insertAfterLineAndFormatted,
this.fileContent,
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
frontmatterEndPosition
);
}
@ -17961,6 +17957,38 @@ ${formatted}`;
return `${this.fileContent}
${insertAfterLineAndFormatted}`;
}
if (this.choice.insertAfter?.createIfNotFoundLocation === CREATE_IF_NOT_FOUND_CURSOR) {
try {
const activeView = this.app.workspace.getActiveViewOfType(import_obsidian36.MarkdownView);
if (!activeView) {
throw new Error("No active view.");
}
const cursor = activeView.editor.getCursor();
let targetPosition = cursor.line;
if (this.choice.insertAfter?.insertAtEnd) {
if (!this.file)
throw new Error("Tried to get sections without file.");
const fileContentLines = getLinesInString(this.fileContent);
const endOfSectionIndex = getEndOfSection(
fileContentLines,
targetPosition,
!!this.choice.insertAfter.considerSubsections
);
targetPosition = endOfSectionIndex ?? fileContentLines.length - 1;
}
const newFileContent = this.insertTextAfterPositionInBody(
insertAfterLineAndFormatted,
this.fileContent,
targetPosition
);
return newFileContent;
} catch (e) {
log.logError(
`unable to insert line '${this.choice.insertAfter.after}' on your cursor.
${e}`
);
}
}
}
getFrontmatterEndPosition(file) {
const fileCache = this.app.metadataCache.getFileCache(file);
@ -17968,8 +17996,11 @@ ${insertAfterLineAndFormatted}`;
log.logMessage("could not get frontmatter. Maybe there isn't any.");
return -1;
}
if (fileCache.frontmatter.position)
return fileCache.frontmatter.position.end.line;
if (fileCache.frontmatter.position || fileCache.frontmatterPosition) {
if (fileCache.frontmatter.position) {
return fileCache.frontmatter.position.end.line;
}
}
return -1;
}
insertTextAfterPositionInBody(text2, body, pos) {
@ -18633,11 +18664,7 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
this.choiceExecutor = choiceExecutor;
this.choice = choice;
this.plugin = plugin;
this.formatter = new CaptureChoiceFormatter(
app2,
plugin,
choiceExecutor
);
this.formatter = new CaptureChoiceFormatter(app2, plugin, choiceExecutor);
}
async run() {
try {
@ -18662,11 +18689,7 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
}
const { file, newFileContent, captureContent } = await getFileAndAddContentFn(filePath, content);
if (this.choice.captureToActiveFile && !this.choice.prepend && !this.choice.insertAfter.enabled) {
const content2 = await templaterParseTemplate(
app,
captureContent,
file
);
const content2 = await templaterParseTemplate(app, captureContent, file);
appendToCurrentLine(content2, this.app);
} else {
await this.app.vault.modify(file, newFileContent);
@ -18714,18 +18737,12 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
async getFormattedPathToCaptureTo(shouldCaptureToActiveFile) {
if (shouldCaptureToActiveFile) {
const activeFile = this.app.workspace.getActiveFile();
invariant(
activeFile,
`Cannot capture to active file - no active file.`
);
invariant(activeFile, "Cannot capture to active file - no active file.");
return activeFile.path;
}
const captureTo = this.choice.captureTo;
const formattedCaptureTo = await this.formatFilePath(captureTo);
const folderPath = formattedCaptureTo.replace(
/^\/$|\/\.md$|^\.md$/,
""
);
const folderPath = formattedCaptureTo.replace(/^\/$|\/\.md$|^\.md$/, "");
const captureAnywhereInVault = folderPath === "";
const shouldCaptureToFolder = captureAnywhereInVault || isFolder(folderPath);
const shouldCaptureWithTag = formattedCaptureTo.startsWith("#");
@ -18741,10 +18758,7 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
async selectFileInFolder(folderPath, captureAnywhereInVault) {
const folderPathSlash = folderPath.endsWith("/") || captureAnywhereInVault ? folderPath : `${folderPath}/`;
const filesInFolder = getMarkdownFilesInFolder(folderPathSlash);
invariant(
filesInFolder.length > 0,
`Folder ${folderPathSlash} is empty.`
);
invariant(filesInFolder.length > 0, `Folder ${folderPathSlash} is empty.`);
const filePaths = filesInFolder.map((f) => f.path);
const targetFilePath = await InputSuggester.Suggest(
app,
@ -18753,7 +18767,7 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
);
invariant(
!!targetFilePath && targetFilePath.length > 0,
`No file selected for capture.`
"No file selected for capture."
);
const filePath = targetFilePath.startsWith(`${folderPathSlash}`) ? targetFilePath : `${folderPathSlash}/${targetFilePath}`;
return await this.formatFilePath(filePath);
@ -18770,7 +18784,7 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
);
invariant(
!!targetFilePath && targetFilePath.length > 0,
`No file selected for capture.`
"No file selected for capture."
);
return await this.formatFilePath(targetFilePath);
}
@ -18815,14 +18829,9 @@ This is in order to prevent data loss.`
);
fileContent = await singleTemplateEngine.run();
}
const file = await this.createFileWithInput(
filePath,
fileContent
);
const file = await this.createFileWithInput(filePath, fileContent);
await replaceTemplaterTemplatesInCreatedFile(this.app, file);
const updatedFileContent = await this.app.vault.cachedRead(
file
);
const updatedFileContent = await this.app.vault.cachedRead(file);
const newFileContent = await this.formatter.formatContentWithFile(
captureContent,
this.choice,
@ -18841,8 +18850,8 @@ This is in order to prevent data loss.`
};
// src/gui/suggesters/choiceSuggester.ts
var import_obsidian36 = require("obsidian");
var ChoiceSuggester = class extends import_obsidian36.FuzzySuggestModal {
var import_obsidian37 = require("obsidian");
var ChoiceSuggester = class extends import_obsidian37.FuzzySuggestModal {
constructor(plugin, choices, choiceExecutor) {
super(plugin.app);
this.plugin = plugin;
@ -18859,7 +18868,7 @@ var ChoiceSuggester = class extends import_obsidian36.FuzzySuggestModal {
}
renderSuggestion(item, el) {
el.empty();
void import_obsidian36.MarkdownRenderer.renderMarkdown(item.item.name, el, "", this.plugin);
void import_obsidian37.MarkdownRenderer.renderMarkdown(item.item.name, el, "", this.plugin);
el.classList.add("quickadd-choice-suggestion");
}
getItemText(item) {
@ -19184,8 +19193,8 @@ QuickAdd will now revert to backup.`
var migrate_default = migrate;
// src/gui/UpdateModal/UpdateModal.ts
var import_obsidian37 = require("obsidian");
var import_obsidian38 = require("obsidian");
var import_obsidian39 = require("obsidian");
async function getReleaseNotesAfter(repoOwner, repoName, releaseTagName) {
const response = await fetch(
`https://api.github.com/repos/${repoOwner}/${repoName}/releases`
@ -19213,7 +19222,7 @@ function addExtraHashToHeadings(markdownText, numHashes = 1) {
}
return lines.join("\n");
}
var UpdateModal = class extends import_obsidian38.Modal {
var UpdateModal = class extends import_obsidian39.Modal {
constructor(previousQAVersion) {
super(app);
this.previousVersion = previousQAVersion;
@ -19268,18 +19277,18 @@ ${andNow}
${addExtraHashToHeadings(
releaseNotes
)}`;
void import_obsidian38.MarkdownRenderer.renderMarkdown(
void import_obsidian39.MarkdownRenderer.renderMarkdown(
markdownStr,
contentDiv,
app.vault.getRoot().path,
new import_obsidian37.Component()
new import_obsidian38.Component()
);
}
};
// src/gui/MacroGUIs/AIAssistantInfiniteCommandSettingsModal.ts
var import_obsidian39 = require("obsidian");
var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Modal {
var import_obsidian40 = require("obsidian");
var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian40.Modal {
constructor(settings) {
super(app);
this.showAdvancedSettings = false;
@ -19341,7 +19350,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
this.display();
}
addModelSetting(container) {
new import_obsidian39.Setting(container).setName("Model").setDesc("The model the AI Assistant will use").addDropdown((dropdown) => {
new import_obsidian40.Setting(container).setName("Model").setDesc("The model the AI Assistant will use").addDropdown((dropdown) => {
for (const model of models_and_ask_me) {
dropdown.addOption(model, model);
}
@ -19353,7 +19362,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addOutputVariableNameSetting(container) {
new import_obsidian39.Setting(container).setName("Output variable name").setDesc(
new import_obsidian40.Setting(container).setName("Output variable name").setDesc(
"The name of the variable used to store the AI Assistant output, i.e. {{value:output}}."
).addText((text2) => {
text2.setValue(this.settings.outputVariableName).onChange(
@ -19364,12 +19373,12 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addSystemPromptSetting(contentEl) {
new import_obsidian39.Setting(contentEl).setName("System Prompt").setDesc("The system prompt for the AI Assistant");
new import_obsidian40.Setting(contentEl).setName("System Prompt").setDesc("The system prompt for the AI Assistant");
const container = this.contentEl.createEl("div");
const tokenCount = container.createEl("span");
tokenCount.style.color = "var(--text-muted-color)";
container.appendChild(tokenCount);
const textAreaComponent = new import_obsidian39.TextAreaComponent(contentEl);
const textAreaComponent = new import_obsidian40.TextAreaComponent(contentEl);
textAreaComponent.setValue(this.settings.systemPrompt).onChange(async (value) => {
this.settings.systemPrompt = value;
formatDisplay.innerText = await displayFormatter.format(value);
@ -19389,7 +19398,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
textAreaComponent.inputEl.style.minHeight = "100px";
textAreaComponent.inputEl.style.marginBottom = "1em";
const formatDisplay = this.contentEl.createEl("span");
const updateTokenCount = (0, import_obsidian39.debounce)(() => {
const updateTokenCount = (0, import_obsidian40.debounce)(() => {
tokenCount.innerText = `Token count: ${this.systemPromptTokenLength}`;
}, 50);
updateTokenCount();
@ -19398,7 +19407,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
))();
}
addShowAdvancedSettingsToggle(container) {
new import_obsidian39.Setting(container).setName("Show advanced settings").setDesc(
new import_obsidian40.Setting(container).setName("Show advanced settings").setDesc(
"Show advanced settings such as temperature, top p, and frequency penalty."
).addToggle((toggle) => {
toggle.setValue(this.showAdvancedSettings);
@ -19409,7 +19418,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addTemperatureSetting(container) {
new import_obsidian39.Setting(container).setName("Temperature").setDesc(
new import_obsidian40.Setting(container).setName("Temperature").setDesc(
"Sampling temperature. Higher values like 0.8 makes the output more random, whereas lower values like 0.2 will make it more focused and deterministic. The default is 1."
).addSlider((slider) => {
slider.setLimits(0, 1, 0.1);
@ -19423,7 +19432,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addTopPSetting(container) {
new import_obsidian39.Setting(container).setName("Top P").setDesc(
new import_obsidian40.Setting(container).setName("Top P").setDesc(
"Nucleus sampling - consider this an alternative to temperature. The model considers the results of the tokens with top_p probability mass. 0.1 means only tokens compromising the top 10% probability mass are considered. The default is 1."
).addSlider((slider) => {
slider.setLimits(0, 1, 0.1);
@ -19437,7 +19446,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addFrequencyPenaltySetting(container) {
new import_obsidian39.Setting(container).setName("Frequency Penalty").setDesc(
new import_obsidian40.Setting(container).setName("Frequency Penalty").setDesc(
"Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. The default is 0."
).addSlider((slider) => {
slider.setLimits(0, 2, 0.1);
@ -19451,7 +19460,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addPresencePenaltySetting(container) {
new import_obsidian39.Setting(container).setName("Presence Penalty").setDesc(
new import_obsidian40.Setting(container).setName("Presence Penalty").setDesc(
"Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics. The default is 0."
).addSlider((slider) => {
slider.setLimits(0, 2, 0.1);
@ -19465,7 +19474,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addResultJoinerSetting(container) {
new import_obsidian39.Setting(container).setName("Result Joiner").setDesc(
new import_obsidian40.Setting(container).setName("Result Joiner").setDesc(
"The string used to join multiple LLM responses together. The default is a newline."
).addText((text2) => {
text2.setValue(this.settings.resultJoiner).onChange((value) => {
@ -19474,7 +19483,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addChunkSeparatorSetting(container) {
new import_obsidian39.Setting(container).setName("Chunk Separator").setDesc(
new import_obsidian40.Setting(container).setName("Chunk Separator").setDesc(
"The string used to separate chunks of text. The default is a newline."
).addText((text2) => {
text2.setValue(this.settings.chunkSeparator).onChange(
@ -19485,7 +19494,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addMaxTokensSetting(container) {
new import_obsidian39.Setting(container).setName("Max Chunk Tokens").setDesc(
new import_obsidian40.Setting(container).setName("Max Chunk Tokens").setDesc(
"The maximum number of tokens in each chunk, calculated as the chunk token size + prompt template token size + system prompt token size. Make sure you leave room for the model to respond to the prompt."
).addSlider((slider) => {
const modelMaxTokens = getModelMaxTokens(this.settings.model);
@ -19498,7 +19507,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
});
}
addMergeChunksSetting(container) {
new import_obsidian39.Setting(container).setName("Merge Chunks").setDesc(
new import_obsidian40.Setting(container).setName("Merge Chunks").setDesc(
"Merge chunks together by putting them in the same prompt, until the max tokens limit is reached. Useful for sending fewer queries overall, but may result in less coherent responses."
).addToggle((toggle) => {
toggle.setValue(this.settings.mergeChunks);
@ -19514,7 +19523,7 @@ var InfiniteAIAssistantCommandSettingsModal = class extends import_obsidian39.Mo
};
// src/main.ts
var QuickAdd = class extends import_obsidian40.Plugin {
var QuickAdd = class extends import_obsidian41.Plugin {
get api() {
return QuickAddApi.GetApi(app, this, new ChoiceExecutor(app, this));
}

@ -1,11 +1,12 @@
{
"id": "quickadd",
"name": "QuickAdd",
"version": "1.6.1",
"version": "1.7.0",
"minAppVersion": "0.13.19",
"description": "Quickly add new pages or content to your vault.",
"author": "Christian B. B. Houmann",
"authorUrl": "https://bagerbach.com",
"fundingUrl": "https://www.buymeacoffee.com/chhoumann",
"helpUrl": "https://quickadd.obsidian.guide/docs/",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

@ -1,9 +1,9 @@
{
"id": "templater-obsidian",
"name": "Templater",
"version": "1.18.4",
"version": "2.2.1",
"description": "Create and use templates",
"minAppVersion": "0.11.13",
"minAppVersion": "1.5.0",
"author": "SilentVoid",
"authorUrl": "https://github.com/SilentVoid13",
"helpUrl": "https://silentvoid13.github.io/Templater/",

@ -1,7 +1,7 @@
{
"name": "Minimal",
"version": "7.3.5",
"minAppVersion": "1.1.9",
"version": "7.5.1",
"minAppVersion": "1.5.4",
"author": "@kepano",
"authorUrl": "https://twitter.com/kepano",
"fundingUrl": "https://www.buymeacoffee.com/kepano"

File diff suppressed because one or more lines are too long

@ -1,6 +1,6 @@
{
"name": "Things",
"version": "2.1.19",
"version": "2.1.20",
"minAppVersion": "1.0.0",
"author": "@colineckert",
"authorUrl": "https://twitter.com/colineckert"

@ -1,6 +1,6 @@
/*
THINGS
Version 2.1.19
Version 2.1.20
Created by @colineckert
Readme:
@ -54,6 +54,12 @@ body {
--highlight-background-color-underline: hsl(50deg 100% 50% / 100%) !important;
--highlight-background-color--active: hsl(50deg 100% 50% / 20%) !important;
--progress-color-1: #ad5758;
--progress-color-2: #b87f4c;
--progress-color-3: #d2b874;
--progress-color-4: #b0c07e;
--progress-color-5: #768399;
/* Font families */
--font-text-theme: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
Inter, Ubuntu, sans-serif;
@ -334,15 +340,6 @@ body:not(.default-font-color) mark em {
color: var(--text-normal);
}
/* Highlight styling */
span.cm-highlight,
.markdown-preview-view mark,
span.search-result-file-matched-text {
padding: 0.05em 0;
-webkit-box-decoration-break: clone;
box-decoration-break: clone;
}
/* Fancy highlight */
body.fancy-highlight span.cm-highlight,
body.fancy-highlight .markdown-preview-view mark,
@ -962,6 +959,50 @@ body:not(.tasks) li[data-task='D'].task-list-item.is-checked {
color: var(--text-normal);
}
/* ------------------- */
/* Progress bars styling. Credit Minimal theme: https://minimal.guide/progress-bars */
/* Support @kepano - https://www.buymeacoffee.com/kepano */
/* ------------------- */
.progress-color {
.markdown-rendered progress,
.markdown-source-view.is-live-preview progress,
.markdown-preview-view progress {
&[value^='1']::-webkit-progress-value,
&[value^='2']::-webkit-progress-value,
&[value^='3']::-webkit-progress-value {
background-color: var(--progress-color-1);
}
&[value^='4']::-webkit-progress-value,
&[value^='5']::-webkit-progress-value {
background-color: var(--progress-color-2);
}
&[value^='6']::-webkit-progress-value,
&[value^='7']::-webkit-progress-value {
background-color: var(--progress-color-3);
}
&[value^='8']::-webkit-progress-value,
&[value^='9']::-webkit-progress-value {
background-color: var(--progress-color-4);
}
&[value='1']::-webkit-progress-value,
&[value='100']::-webkit-progress-value {
background-color: var(--progress-color-5);
}
&[value='0']::-webkit-progress-value,
&[value='2']::-webkit-progress-value,
&[value='3']::-webkit-progress-value,
&[value='4']::-webkit-progress-value,
&[value='5']::-webkit-progress-value,
&[value='6']::-webkit-progress-value,
&[value='7']::-webkit-progress-value,
&[value='8']::-webkit-progress-value,
&[value='9']::-webkit-progress-value {
background-color: var(--progress-color-1);
}
}
}
/* ─────────────────────────────────────────────────── */
/* Plugins */
/* ─────────────────────────────────────────────────── */
@ -1308,6 +1349,47 @@ settings:
type: variable-color
format: hex
default: '#FFFFFF'
-
id: progress-color
title: Progress colorful mode switcher
description: Toggle progress color scheme
type: class-toggle
default: false
-
id: progress-color-1
title: progress 2-39% color
type: variable-color
opacity: true
format: hex
default: '#ad5758'
-
id: progress-color-2
title: progress 40-59% color
type: variable-color
opacity: true
format: hex
default: '#b87f4c'
-
id: progress-color-3
title: progress 60-79% color
type: variable-color
opacity: true
format: hex
default: '#d2b874'
-
id: progress-color-4
title: progress 80-99% color
type: variable-color
opacity: true
format: hex
default: '#b0c07e'
-
id: progress-color-5
title: progress 1,100% color
type: variable-color
opacity: true
format: hex
default: '#768399'
-
id: headings
title: Headings

@ -69,7 +69,7 @@
"state": {
"type": "markdown",
"state": {
"file": "00.01 Admin/Calendars/2024-02-16.md",
"file": "01.02 Home/@Main Dashboard.md",
"mode": "preview",
"source": true
}
@ -158,7 +158,7 @@
"state": {
"type": "backlink",
"state": {
"file": "00.01 Admin/Calendars/2024-02-16.md",
"file": "01.02 Home/@Main Dashboard.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@ -175,7 +175,7 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "00.01 Admin/Calendars/2024-02-16.md",
"file": "01.02 Home/@Main Dashboard.md",
"linksCollapsed": false,
"unlinkedCollapsed": false
}
@ -206,7 +206,7 @@
}
},
{
"id": "2e8e1a29386eb295",
"id": "1102a894f52fe30a",
"type": "leaf",
"state": {
"type": "DICE_ROLLER_VIEW",
@ -229,7 +229,6 @@
"ledger-obsidian:Add to Ledger": false,
"obsidian-rich-links:Rich Links": false,
"obsidian-map-view:Open map view": false,
"obsidian-tts:Text to Speech": false,
"obsidian-gallery:Gallery": false,
"obsidian-metatable:Metatable": false,
"obsidian-full-calendar:Open Full Calendar": false,
@ -238,41 +237,42 @@
"obsidian-media-db-plugin:Add new Media DB entry": false,
"meld-encrypt:New encrypted note": false,
"meld-encrypt:Convert to or from an Encrypted note": false,
"templater-obsidian:Templater": false,
"obsidian-camera:Obsidian Camera": false,
"table-editor-obsidian:Advanced Tables Toolbar": false,
"obsidian42-brat:BRAT": false,
"templater-obsidian:Templater": false,
"obsidian-tts:Text to Speech": false,
"obsidian-memos:Memos": false
}
},
"active": "7f7ef82aa074f90a",
"lastOpenFiles": [
"00.03 News/The Juror Who Found Herself Guilty.md",
"00.08 Bookmarks/Bookmarks - Art.md",
"01.02 Home/@Main Dashboard.md",
"00.01 Admin/Calendars/2024-02-16.md",
"00.03 News/How Nikola Jokić Became the Worlds Best Basketball Player.md",
"01.02 Home/Creations.md",
"00.01 Admin/Calendars/2024-02-15.md",
"00.08 Bookmarks/Bookmarks - Obsidian.md",
"00.01 Admin/Calendars/2024-02-14.md",
"00.01 Admin/Calendars/Events/2024-02-14 ⚽️ PSG - Real Sociedad (2-0).md",
"02.02 Paris/Paris SG.md",
"00.01 Admin/Calendars/Events/2024-02-10 ⚽️ PSG - Lille OSC (3-1).md",
"00.03 News/Precipice of fear the freerider who took skiing to its limits.md",
"00.03 News/His Best Friend Was a 250-Pound Warthog. One Day, It Decided to Kill Him..md",
"00.03 News/Paper mills are bribing editors at scholarly journals, Science investigation finds.md",
"02.03 Zürich/@@Zürich.md",
"00.08 Bookmarks/Bookmarks - Social Media.md",
"00.01 Admin/Calendars/2024-02-13.md",
"00.01 Admin/Calendars/2024-02-12.md",
"03.03 Food & Wine/Warm lemon and Parmesan couscous.md",
"00.01 Admin/Calendars/2024-02-11.md",
"00.08 Bookmarks/Bookmarks - Media.md",
"00.08 Bookmarks/Bookmarks - Travels & Sport.md",
"00.03 News/Why Tim Cook Is Going All In on the Apple Vision Pro.md",
"00.03 News/@News.md",
"00.03 News/El Niño Is Coming—and the World Isnt Prepared.md",
"00.03 News/Buried gold, vampire graves and lost cities - the year's best ancient finds.md",
"00.01 Admin/Calendars/2024-02-24.md",
"00.01 Admin/Calendars/2024-02-23.md",
"00.01 Admin/Calendars/2024-02-22.md",
"00.03 News/The art of doing nothing have the Dutch found the answer to burnout culture.md",
"03.03 Food & Wine/@Main dishes.md",
"03.03 Food & Wine/Sesame Seared Tuna Steak.md",
"00.01 Admin/Calendars/2024-02-21.md",
"00.02 Inbox/Zoo Station.md",
"03.01 Reading list/Seven Pillars of Wisdom.md",
"01.02 Home/@Shopping list.md",
"00.08 Bookmarks/Bookmarks - Selfhosted Apps.md",
"00.01 Admin/Calendars/2024-02-20.md",
"03.03 Food & Wine/Spicy Szechuan Noodles with Garlic Chilli Oil.md",
"00.01 Admin/Calendars/2024-02-19.md",
"03.03 Food & Wine/Chilli con Carne.md",
"00.03 News/The rise and fall of robots.txt.md",
"03.04 Cinematheque/@Cinematheque.md",
"00.01 Admin/Calendars/2024-02-18.md",
"00.03 News/In the Land of the Very Old.md",
"00.03 News/The surreal life of a professional bridesmaid - The Hustle.md",
"00.03 News/Cillian Murphy Is the Man of the Moment.md",
"00.03 News/Exclusive Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe.md",
"00.03 News/The Israeli-Palestinian Conflict and the Long Shadow of 1948.md",
"00.02 Inbox/The Untold Origin Story of ESPN.md",
"06.01 Finances/2024.ledger",
"00.01 Admin/dv-views/query_vinyl.js",
"03.05 Vinyls",

@ -102,7 +102,7 @@ This section does serve for quick memos.
&emsp;
- [x] 09:20 :judge: [[@Life Admin|Admin]]: Encheres à suivre 📅 2024-01-11 ✅ 2024-01-11
- [ ] 15:31 :man_in_tuxedo: [[@Lifestyle|Social]]: Contact Thomas de Villoutreys (:test_wappen_genf_matt:) 📅 2024-02-21
- [x] 15:31 :man_in_tuxedo: [[@Lifestyle|Social]]: Contact Thomas de Villoutreys (:test_wappen_genf_matt:) 📅 2024-02-21 ✅ 2024-02-22
%% --- %%
&emsp;

@ -101,7 +101,7 @@ hide task count
This section does serve for quick memos.
&emsp;
- [ ] 16:38 :judge: [[@Life Admin|Admin]]: Enchères à suivre 📅2024-02-21
- [x] 16:38 :judge: [[@Life Admin|Admin]]: Enchères à suivre 📅 2024-02-21 ✅ 2024-02-21
%% --- %%

@ -101,7 +101,7 @@ hide task count
This section does serve for quick memos.
&emsp;
- [ ] 21:40 :clapper: [[@Cinematheque|Cinematheque]]: Download 'All of Us Strangers' 📅2024-02-28
- [x] 21:40 :clapper: [[@Cinematheque|Cinematheque]]: Download 'All of Us Strangers' 📅 2024-02-28 ✅ 2024-02-22
%% --- %%

@ -16,9 +16,9 @@ Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water: 0.73
Water: 2.13
Coffee: 6
Steps:
Steps: 10689
Weight:
Ski:
IceSkating:

@ -0,0 +1,134 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2024-02-17
Date: 2024-02-17
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 8
Happiness: 85
Gratefulness: 90
Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water: 2.83
Coffee: 2
Steps: 11282
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2024-02-16|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2024-02-18|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2024-02-17Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2024-02-17NSave
&emsp;
# 2024-02-17
&emsp;
> [!summary]+
> Daily note for 2024-02-17
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2024-02-17
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
🚆: [[@Switzerland|Basel]] from [[@@Zürich|Zürich]]
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2024-02-17]]
```
&emsp;
&emsp;

@ -0,0 +1,134 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2024-02-18
Date: 2024-02-18
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 8.5
Happiness: 85
Gratefulness: 90
Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water: 2.5
Coffee: 3
Steps: 7756
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2024-02-17|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2024-02-19|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2024-02-18Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2024-02-18NSave
&emsp;
# 2024-02-18
&emsp;
> [!summary]+
> Daily note for 2024-02-18
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2024-02-18
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
Loret ipsum
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2024-02-18]]
```
&emsp;
&emsp;

@ -0,0 +1,136 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2024-02-19
Date: 2024-02-19
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 7
Happiness: 85
Gratefulness: 90
Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water: 3
Coffee: 4
Steps: 12765
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2024-02-18|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2024-02-20|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2024-02-19Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2024-02-19NSave
&emsp;
# 2024-02-19
&emsp;
> [!summary]+
> Daily note for 2024-02-19
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2024-02-19
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
🍽️: [[Chilli con Carne]]
📖: [[Seven Pillars of Wisdom]]
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2024-02-19]]
```
&emsp;
&emsp;

@ -0,0 +1,136 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2024-02-20
Date: 2024-02-20
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 7.5
Happiness: 85
Gratefulness: 90
Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water: 3.7
Coffee: 4
Steps: 14041
Weight: 94.2
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2024-02-19|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2024-02-21|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2024-02-20Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2024-02-20NSave
&emsp;
# 2024-02-20
&emsp;
> [!summary]+
> Daily note for 2024-02-20
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2024-02-20
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
📖: [[Seven Pillars of Wisdom]]
🍽️: [[Spicy Szechuan Noodles with Garlic Chilli Oil]]
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2024-02-20]]
```
&emsp;
&emsp;

@ -0,0 +1,134 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2024-02-21
Date: 2024-02-21
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 7.5
Happiness: 85
Gratefulness: 90
Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water: 2.6
Coffee: 4
Steps: 9355
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2024-02-20|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2024-02-22|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2024-02-21Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2024-02-21NSave
&emsp;
# 2024-02-21
&emsp;
> [!summary]+
> Daily note for 2024-02-21
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2024-02-21
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
📖: [[Seven Pillars of Wisdom]]
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2024-02-21]]
```
&emsp;
&emsp;

@ -0,0 +1,136 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2024-02-22
Date: 2024-02-22
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 7
Happiness: 85
Gratefulness: 90
Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water: 3.2
Coffee: 4
Steps: 10867
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2024-02-21|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2024-02-23|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2024-02-22Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2024-02-22NSave
&emsp;
# 2024-02-22
&emsp;
> [!summary]+
> Daily note for 2024-02-22
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2024-02-22
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
📖: [[Seven Pillars of Wisdom]], [[Zoo Station]]
🍴: [[Korean Barbecue-Style Meatballs]]
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2024-02-22]]
```
&emsp;
&emsp;

@ -0,0 +1,134 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2024-02-23
Date: 2024-02-23
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 7
Happiness: 85
Gratefulness: 90
Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water: 3.63
Coffee: 4
Steps: 12985
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2024-02-22|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2024-02-24|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2024-02-23Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2024-02-23NSave
&emsp;
# 2024-02-23
&emsp;
> [!summary]+
> Daily note for 2024-02-23
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2024-02-23
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
🚗: [[@@Zürich|Zürich]] to [[@France|Lyon]]
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2024-02-23]]
```
&emsp;
&emsp;

@ -0,0 +1,134 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2024-02-24
Date: 2024-02-24
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 8
Happiness: 85
Gratefulness: 90
Stress: 25
FrontHeadBar: 5
EarHeadBar: 30
BackHeadBar: 20
Water:
Coffee:
Steps:
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2024-02-23|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2024-02-25|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2024-02-24Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2024-02-24NSave
&emsp;
# 2024-02-24
&emsp;
> [!summary]+
> Daily note for 2024-02-24
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2024-02-24
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
Loret ipsum
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2024-02-24]]
```
&emsp;
&emsp;

@ -0,0 +1,12 @@
---
title: "🧚🏼 Arrivée Meggi-mo"
allDay: true
date: 2022-03-19
endDate: 2022-03-20
CollapseMetaTable: true
---
# Arrivée de [[@@MRCK|Meggi-mo]]
- [l] Arrivée à [[@@Zürich|Zürich]] de Meggi-mo, le [[2022-03-19|19/03/2022]].

@ -0,0 +1,11 @@
---
title: "🧚🏼 Départ de Meggi-mo"
allDay: true
date: 2022-03-24
endDate: 2022-03-25
CollapseMetaTable: true
---
# Départ de Meggi-mo
Départ de ma [[@@MRCK|Meggi-mo]] le [[2022-03-24|24/03/2022]].

@ -0,0 +1,9 @@
---
title: "👨‍👩‍👧 Arrivée de Papa"
allDay: false
startTime: 20:25
endTime: 20:30
date: 2022-03-31
---
- [l] [[2022-03-31]], arrivée de [[Amaury de Villeneuve|Papa]] à [[@@Zürich|Zürich]]

@ -0,0 +1,9 @@
---
title: "👨‍👩‍👧 Départ Papa"
allDay: false
startTime: 13:30
endTime: 14:00
date: 2022-04-04
---
[[2022-04-04]], départ de [[Amaury de Villeneuve|Papa]]

@ -0,0 +1,11 @@
---
title: "🗳 1er tour Présidentielle"
allDay: true
date: 2022-04-10
endDate: 2022-04-11
CollapseMetaTable: true
---
1er tour des élections présidentielles à [[@@Paris|Paris]], le [[2022-04-10|10 avril 2022]]; avec [[@@MRCK|Meggi-mo]] dans l'isoloir.

@ -0,0 +1,8 @@
---
title: "🗳 2nd tour élections présidentielles"
allDay: true
date: 2022-04-24
endDate: 2022-04-25
---
2nd tour des élections présidentielles le [[2022-04-24|24 Avril]] à [[@@Paris|Paris]].

@ -0,0 +1,9 @@
---
title: "🛩 Arrivée à Lisbonne"
allDay: false
startTime: 16:00
endTime: 16:30
date: 2022-04-27
---
Arrival on [[2022-04-27|this day]] in [[Lisbon]].

@ -0,0 +1,9 @@
---
title: "🛩 Départ de Lisbonne"
allDay: false
startTime: 15:30
endTime: 16:00
date: 2022-05-01
---
Departure from [[Lisbon]] to [[@@Zürich|Zürich]] [[2022-05-01|this day]].

@ -0,0 +1,9 @@
---
title: "🧚🏼 Definite arrival of Meggi-mo to Züzü"
allDay: true
startTime: 06:30
endTime: 07:00
date: 2022-05-15
---
[[@@MRCK|Meggi-mo]] is arriving to [[@@Zürich|Zürich]] for good on [[2022-05-15|that day]].

@ -0,0 +1,17 @@
---
title: "🚆 Weekend in GVA"
allDay: true
date: 2022-10-14
endDate: 2022-10-17
CollapseMetaTable: true
---
Weekend à [[Geneva]] avec [[@@MRCK|Meggi-mo]].
&emsp;
Départ: [[2022-10-14]] de [[@@Zürich|Zürich]]
Retour: [[2022-10-16]] à [[@@Zürich|Zürich]]

@ -0,0 +1,16 @@
---
title: "🗼 Weekend à Paris"
allDay: true
date: 2022-10-21
endDate: 2022-10-24
CollapseMetaTable: true
---
Weekend à [[@@Paris|Paris]] avec [[@@MRCK|Meggi-mo]].
&emsp;
Départ: [[2022-10-21]] de [[@@Zürich|Zürich]]
Retour: [[2022-10-23]] à [[@@Zürich|Zürich]]

@ -0,0 +1,10 @@
---
title: "💍 Fiançailles Marguerite & Arnold"
allDay: false
startTime: 16:30
endTime: 15:00
date: 2022-11-19
CollapseMetaTable: true
---
Fiançailles de [[Marguerite de Villeneuve|Marguerite]] et [[Arnold Moulin|Arnold]] [[2022-11-19|ce jour]] à [[Geneva|Genève]].

@ -0,0 +1,12 @@
---
title: "👪 Papa à Zürich"
allDay: true
date: 2022-12-26
endDate: 2022-12-31
completed: null
CollapseMetaTable: true
---
[[Amaury de Villeneuve|Papa]] arrive à [[@@Zürich|Zürich]] le [[2022-12-26|26 décembre]] à 13h26.

@ -0,0 +1,12 @@
---
title: "Stef & Kyna in Zürich"
allDay: true
date: 2022-12-30
endDate: 2023-01-05
completed: null
CollapseMetaTable: true
---
Stef & Kyna arrivent à [[@@Zürich|Zürich]] le [[2022-12-30|30 décembre]] avec Swiss le matin.

@ -0,0 +1,13 @@
---
title: Médecin
allDay: false
startTime: 11:15
endTime: 12:15
date: 2023-01-23
completed: null
CollapseMetaTable: true
---
[[2023-01-23|Ce jour]], 1er RDV avec [[Dr Cleopatra Morales]].

@ -0,0 +1,12 @@
---
title: Genève
allDay: true
date: 2023-02-06
endDate: 2023-02-08
completed: null
CollapseMetaTable: true
---
Depart à [[Geneva|Genève]] [[2023-02-06|ce jour]] et retour le [[223-02-07|lendemain]].

@ -0,0 +1,13 @@
---
title: ⚕ Médecin
allDay: false
startTime: 12:15
endTime: 13:15
date: 2023-02-09
completed: null
CollapseMetaTable: true
---
[[2023-02-09|Ce jour]], RDV de suivi avec [[Dr Cleopatra Morales]]

@ -0,0 +1,91 @@
---
title: "👰‍♀ Mariage Eloi & Zélie"
allDay: true
date: 2023-02-10
endDate: 2023-02-12
CollapseMetaTable: true
---
Mariage d[[Eloi de Villeneuve|Éloi]] avec [[Zélie]] en [[@France|Bretagne]] (Rennes) [[2023-02-11|ce jour]].
&emsp;
🚆: 23h11, arrivée à Rennes
&emsp;
🏨: **Hotel Saint Antoine**<br>27 avenue Janvier<br>Rennes
&emsp;
### Vendredi 10 Février
&emsp;
#### 17h: Mariage civil
Mairie de Montfort-sur-Meu (35)
&emsp;
#### 20h30: Veillée de Prière
Chapelle du château de la Châsse
Iffendic (35)
&emsp;
---
&emsp;
### Samedi 11 Février
&emsp;
#### 14h: Messe de Mariage
Saint-Louis-Marie
Montfort-sur-Meu (35)
&emsp;
#### 16h30: Cocktail
Château de la Châsse
Iffendic (35)
&emsp;
#### 19h30: Dîner
Château de la Châsse
Iffendic (35)
&emsp;
---
&emsp;
### Dimanche 12 Février
&emsp;
#### 11h: Messe
Chapelle du château de la Châsse
Iffendic (35)
&emsp;
#### 12h: Déjeuner breton
Château de la Châsse
Iffendic (35)
&emsp;
🚆: 13h35, départ de Rennes

@ -0,0 +1,13 @@
---
title: 🎬 Tár @ Riff Raff
allDay: false
startTime: 20:30
endTime: 22:30
date: 2023-02-19
completed: null
CollapseMetaTable: true
---
[[2023-02-19|Ce jour]], [[Tár (2022)]] @ [[Riff Raff Kino Bar]].

@ -0,0 +1,12 @@
---
title: 🩺 Médecin
allDay: false
startTime: 15:00
endTime: 15:30
date: 2023-03-06
completed: null
CollapseMetaTable: true
---
[[2023-03-06|Ce jour]], rdv avec [[Dr Awad Abuawad]]

@ -0,0 +1,13 @@
---
title: 👨‍👩‍👧‍👦 Marg & Arnold à Zürich
allDay: true
date: 2023-03-11
endDate: 2023-03-13
completed: null
CollapseMetaTable: true
---
Arrivée le [[2023-03-11|11 mars]] de [[Marguerite de Villeneuve|Marg]] et [[Arnold Moulin|Arnold]].
Départ le [[2023-03-12|lendemain]].

@ -0,0 +1,12 @@
---
title: 👨‍👩‍👧‍👦 Molly & boyfriend in Zürich
allDay: true
date: 2023-03-18
endDate: 2023-03-20
completed: null
CollapseMetaTable: true
---
Weekend in [[@@Zürich|Zürich]] for [[@@MRCK|Meggi-mo]]s cousin Molly and boyfriend.
Arrival on [[2023-03-18|18th March]] and departure on Monday [[2023-03-20|20th March]].

@ -0,0 +1,13 @@
---
title: 🩺 Médecin
allDay: false
startTime: 11:45
endTime: 12:15
date: 2023-04-14
completed: null
CollapseMetaTable: true
---
[[2023-04-14|Ce jour]], rdv avec [[Dr Cleopatra Morales]]

@ -0,0 +1,10 @@
---
title: 🏠 Arrivée Papa
allDay: false
startTime: 20:26
endTime: 21:26
date: 2023-12-21
completed: null
---
[[2023-12-21|Ce jour]], arrivée de [[Amaury de Villeneuve|Papa]] à [[@@Zürich|Zürich]]

@ -0,0 +1,10 @@
---
title: 🗼 Départ Papa
allDay: false
startTime: 13:30
endTime: 14:30
date: 2023-12-27
completed: null
---
[[2023-12-27|Ce jour]], départ de [[Amaury de Villeneuve|Papa]] de [[@@Zürich|Zürich]] pour [[@@Paris|Paris]]

@ -19,7 +19,7 @@ CollapseMetaTable: true
---
Parent:: [[@Reading master|Reading list]]
ReadingState:: 🟥
ReadingState:: 🟧
---

@ -0,0 +1,258 @@
---
Alias: [""]
Tag: ["🎭", "🇮🇪", "👤", "🎥"]
Date: 2024-02-18
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2024-02-18
Link: https://www.gq.com/story/cillian-murphy-gq-cover-story
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-CillianMurphyIstheManoftheMomenNSave
&emsp;
# Cillian Murphy Is the Man of the Moment
**In the fall of 2021,** Christopher Nolan knew just where to find Cillian Murphy. The director flew to Ireland with a document in his carry-on, Hollywoods equivalent of the nuclear football. It was a script for his top secret new film, printed, apparently, on red paper. “Which is supposedly photocopy-proof,” Murphy explained. He wasnt surprised by the in-person visit. The two had worked together on five previous films, and every Nolan script, Murphy said, had been dropped off by Nolan or one of his family members. “So, like, its been his mom whos delivered the script to me before. Or his brother, hell go away and come back in three hours. Part of it has to do with keeping the story secret before it goes out. But part of it has to do with tradition. Theyve always done it this way, so why stop now? It does add a ritual to it, which I really appreciate. It suits me.”
Cillian Murphy covers the March 2024 issue of GQ. [Subscribe to GQ >>>](https://subscribe.gq.com/subscribe/gq/150922?source=EDT_GQM_EDIT_IN_ARTICLE_TOUT_0_COVERSTORY_MARCH_ISSUE_2024_ZZ)
Shirt and pants by Versace. Tank top by Calvin Klein. Belt from Kincaid Archive Malibu. Socks by Uniqlo. Necklace (bottom) and ring (on ring finger), his own.
Murphy met Nolan at his Dublin hotel room—and then Nolan left him to read. He read and read and read. All 197 pages, the rarest kind of script, written in the first person of the films protagonist, J. Robert Oppenheimer. All action, all incidence, swirling around this character—a big-brained, psychologically complex giant of world history. Murphy had never played a lead in a Nolan film before, but had committed to this role as soon as Nolan told him about it, before hed even seen a page of the script. “Hed already called me and said he wanted me to play the part. And I had said Yes—because I always say Yes to him.” The afternoon ran out. “And he doesnt have a phone or anything,” Murphy said. “But he knew instinctively when to come back.” Nolan in command of time, as ever. They spent the rest of the evening together—and then Murphy took the DART train home, and got to work.
The result was one of the most watched and most acclaimed films of 2023—a nearly billion-dollar blockbuster about a tormented genius (and, yes, the father of the atomic bomb). The performance affirmed for many what has been quietly known for some time: that Cillian Murphy is, or at least was, one of the most underrated actors in all of Hollywood. In small potent roles in those other Nolan films. As a shape-shifting bit player and lead in dozens of films and plays over the past three decades. And, of course, across 10 years and six seasons of *Peaky Blinders*—the hit series that made him truly known globally. “Some years ago,” Christopher Nolan said, “I made what was probably a mistake in some moment of drunken sincerity of telling him hes the best actor of his generation. And so now he gets to show that to the rest of the world so everybody can realize that.”
Part of the reason that Murphy still felt like something of a secret until recently is that he lives, breathes, and presides at a remove from the noise. This is by design. In 2015, Murphy returned home to Ireland from London, already some distance from Hollywood proper, to a quiet hamlet on the Irish Sea—not exactly off the grid, but one ring still further outside the blast radius of his industry.
One evening this winter, I took the DART down the seacoast from Dublin City Centre to Monkstown to have dinner with Murphy. We met at a restaurant where, he told me, “I have a usual table, would you believe it?” A statement encircled in neon pride for how much it emphasized that he did not have a usual table anywhere else. He slunk there comfortably for much of the night, bouncing, leaning forward, floppy rocker-dad hair swept casually across his forehead, his famously light eyes drawing in passersby like two pockets of quicksand.
Murphy and his wife of 20 years, artist Yvonne McGuinness, live by the sea with their two teenage sons. In Ireland, the abundance of their creative existence is all around them. The art galleries all seem to be filled with work by his family members. The music on the radio is curated by friends—or Murphy himself. There are occasional pints with his elder Irish actor idols, Brendan Gleeson and Stephen Rea.
Life here for Murphy is filled with, well, life. His boys are approaching exit velocity. There are exams. Chores. Errands. He and his youngest were flying out in the morning to attend a soccer match in Liverpool. “I wouldve taken you elsewhere for some Guinness,” Murphy said, “except I have to drive to drop my boy off at a party tonight.” The brand of busyness all felt quite far from the bubbles that typically cocoon the leading men in the film industry.
“I have a couple of friends who are actors but a majority of them are not,” Murphy said. “The majority of my buddies are not in the business. I also love *not working.* And I think for me a lot of research as an actor is just fucking *living*, and, you know, having a normal life doing regular things and just being able to observe, and *be*, in that sort of lovely flow of humanity. If you cant do that because youre going from film festival to movie set to promotions…I mean thats The Bubble. Im not saying that makes you any better or less as an actor, but its just a world that I couldnt exist in. I find it would be very limiting on what you can experience as a human being, you know?”
Sweater by Bode.
Cillian Murphy, at least on one weekend this winter, seemed to me to have something so deeply figured out that I spent the month after our time together unable to shake the experience of being in the presence of someone living so much the way that so many other actors—so many artists, so many people—claim to want to live. Away from it all, but in highest demand. Delivering Oscar-worthy performances, while also seeming convincingly content to disappear for a long while, at any point, no questions. The stabilizing forces at home seemed to work as an anchor point from which to go off and wander as an artist. “He has this rare blend of humility with this supercharge of creativity,” Emily Blunt said. “Hes just a lovely, sane person. Hes so, so *sane*. And yet hes got such wildness in him in the parts that hes able to play.”
He was the first of his friends to have kids, and thus will be the first with an empty nest. More time for movies. (Maybe.) More time for music. (Certainly.) More time to go on runs at night, when the lights streaking by make him feel like hes going faster. Even more time for sleep: “I sleep a lot. I do 10-hour sleeps.” He seemed immune to the need to be *in the mix*—of fame, of fashion, of free dinners, the titillating offerings of a *scene.* A lot of actors age out of that compulsion, but the thing is, hes not old. Forty-seven. At the height of his powers, entering his prime. Not exiting the industry, but just floating lightly beside, until called upon, which he often is, and will be more now than ever.
He tries to do one movie a year, preferably not in summer, when he likes to spend most of his time on the west coast of Ireland doing nothing much but finding new music for his radio program on BBC 6 or walking his black Lab, Scout. He is perfectly happy to be “unemployed” while he waits for the right new film to come his way. “There couldve been a situation when Chris called me up that I was doing something else,” he said. “And that wouldve been the worst of all scenarios.” In this way, he seems to adhere to his version of Michael Pollans adage toward healthy eating: “Make movies. Not too many. Mostly with Christopher Nolan.” Imagine the discipline, the confidence, the peace of mind, to not worry about missing an opportunity, a lunch, a party, a fork in the road back in one of the frothier Hollywood hubs, but rather to stroll along emerald shores, as the days stretch out till 10 at night, knowing that they know you—and that ultimately they know where to find you.
In Monkstown. Probably at his table. Looking present. Clear-eyed. Like any local, but with more moisture in his skin. At dinner, he asked me just once not to put something in the piece: a nuanced take he shared on a local establishment. Nothing so dangerous as an unwelcome opinion in a small town. No truer sign of someone “just fucking living” there. The dream.
Sweater by Tom Ford. Pants by Saint Laurent by Anthony Vaccarello. Scarf, stylists own. Necklace (top) by Mikimoto.
---
**Nolan had first** seen Murphy in 2003, in a promotional image for *28 Days Later* that had run in the *San Francisco Chronicle.* “I was looking to cast Batman, looking for some actors to screen-test, and I was just very struck by his eyes, his appearance, everything about him, wanted to find out more,” Nolan told me. “When I met him, he didnt strike me as necessarily right for Batman. But there was just a *vibe*—there are people you meet in your life who you just want to stay connected with, work with, you try to find ways to create together.” So Nolan put him on camera just to see what happened. “He first performed as Bruce Wayne, and I saw the crew stop and pay attention in a way that I had never seen before, and really never seen since. And it was this electricity just coming off the guy, it was an incredible energy. And so I called some executives, and they were impressed enough with him that they let me cast him as Scarecrow. Those Batman villains at the time had only ever been played by huge stars — Jack Nicholson, Arnold Schwarzenegger. So, its just a testament to his raw talent.”
*Batman Begins* was the first of his smaller roles in Nolans three Batman movies, *Inception,* and *Dunkirk*. “I hope he wont mind me saying, but when I first worked with him, he was all pure instinct, and the technical side of acting wasnt something that had registered as important with him. We would literally put a mark down and he would just walk right over it,” Nolan said, laughing. But over two decades, “as I saw him develop his technical facility, it did not in any way distract or diminish the instinctive nature of his performance.”
For the lead in *Oppenheimer,* Murphy prepared at home for six months, focusing first on the voice and the silhouette (in other words, shedding weight to reflect the skin and bones of a world-renowned physicist who subsisted primarily on martinis and cigarettes during his years developing the bomb). On set, as the days of filming piled on in the New Mexico desert, the specialness of what Murphy was up to started to spread across the set among the cast and crew “like a rumor,” Nolan said. “I remember the same thing with Heath Ledger on *The Dark Knight*.”
Blunt, who plays Oppenheimers beleaguered wife, Kitty, first got to know Murphy well on *A Quiet Place Part II.* “Cillians really kidnapping to be in a scene with. He pulls you into this vibrational vortex,” she told me. “He loves a party. But when hes working, hes intensely focused, and wont socialize very much at all. Certainly not on *Oppenheimer,* I mean he didnt have anything left in the tank to say one word to someone at the end of the day.”
Matt Damon told me that when they were shooting out in the middle of New Mexico, he and Blunt and the rest of the cast would go down and eat at this one little café. “It was like a mess tent,” he said. “And Cillian was invited every night, but never made it once.”
Murphy was back in his room, preserving his energy, prepping for the next day, minding the Oppenheimer silhouette.
“Okay, hes losing weight, he cant eat at night, you know hes miserable,” Damon said. “But you know hes doing whats best for the movie that you all want to be as good as possible, and so youre cheering him on. But at dinner youre sitting there and youre all shaking your heads going, *Man,* this is brutal.”
“The one thing that he would allow himself, his one luxury, is that he would take a bath at night. I mean he would allow himself literally a few almonds or something. And then sit in his bath with his script and just work. By himself, every night.”
T-shirt from Raggedy Threads. Pants by Prada. Shoes by Bally. Socks by Uniqlo.
The performance is so big, but so much of it is invisible to the audience, in the concentrated intensity of the interpretation. The nucleus. Toward which so many elements subtly draw us closer to his character. Just one example: If it were period accurate, Murphy said, everyone would be smoking and wearing hats, but hes the only one doing either. “Its emphatic, but subliminally so.” The author Kai Bird, who cowrote the monumental biography of Oppenheimer, *American Prometheus,* upon which the film is based, spent a day at the Los Alamos set watching Murphy play the scene where Oppenheimer talks to his team of scientists about the bomb while someone drops marbles into a fishbowl and a snifter. “At one point during a break, he approached wearing his baggy brown suit and turquoise belt and I raised my arms and shouted, Dr. Oppenheimer, Dr. Oppenheimer, Ive been waiting decades to meet you!’ ” Bird said. “He especially captured the voice and Oppies intensity.” (At one point during our conversation, Bird asked me to confirm: “Those are *his* blue eyes, right? Or is he wearing lenses?”)
The film was released on Barbenheimer weekend, just after the SAG-AFTRA strike began, and despite enjoying some lighter time with Blunt, Damon, and the cast, Murphy was relieved to cut short the promotion of the film. “I think its a broken model,” he said of red-carpet interviews and junkets. Outdated and a drag for actors. “The model is—everybody is so bored.” Look what happened when they went on strike, he said. It all stopped. But the fact that the film was good, and *Barbie* was good, two at the same time, people going crazy—it just shows you dont need it. “Same was the case with *Peaky Blinders.* The first three seasons there was no advertising, a tiny show on BBC Two; it just caught fire because people talked to each other about it.”
Murphys reticence in many interviews is palpable. “Its like Joanne Woodward said,” he told me. “Acting is like sex—do it, dont talk about it.’ ” Although I wouldnt characterize his disposition on, say, late-night TV as gruff, hes basically just incapable of going full phony. He is, in other words, reacting the way you might to being asked the same question for the hundredth time in a week. Im curious to watch him suffer through his first Oscar campaign, where answering the same questions about his performance is basically the point for several months.
“People always used to say to me, He has reservations or Hes a difficult interviewee,’ ” Murphy said. “Not really! I love talking about work, about art. What I struggle with, and find unnecessary, and unhelpful about what I want to do, is: Tell me about yourself…
All clothing by Ralph Lauren Purple Label. Necklace (top) by Atra Nova by Sheila B. Necklace (middle) by FoundRae. Necklace (bottom), his own.
---
**Nonetheless: He grew** up in Cork. Went to Catholic school better suited for a certain kind of athletic boy than an artistic soul. “I always fucking hated team sports. I like watching them. But I was terrible at them,” he said. That classic system for schooling was not good for him, “emotionally and psychologically,” he said. “But at least it gave me something to push against.”
He played in a successful band with his brother, half-heartedly entered the local university as a law student. While in school in Cork, he stumbled into a performance of *A Clockwork Orange* and fell in with the stage scene there. He hadnt trained in any way, but he got the first role he ever auditioned for, in Enda Walshs *Disco Pigs,* which traveled around the UK, Europe, and Canada, and transformed his life. “It all happened to me in one month, in August 96: We got offered a record deal, I failed my law exams, I got the part in *Disco Pigs,* and I met my wife,” he said. “I now look back and go: Oh, shit, I didnt know then how important all these things were—the sort of domino effect that they would have on my life.” I asked Murphy, who has, in the past, said he identified as an atheist, if such a confluence ever made him wonder if there was indeed a higher power organizing all of this. “Ohhh,” he said. “I love the chaos and the randomness. I love the beauty of the unexpected.”
That winter weekend, while walking around Dublin, on a bit of a Joycean ramble, we passed a bookstore. “This was my favorite bookshop when I first moved up to Dublin. I didnt have any money and I was living with my mother-in-law. And I would come in here and get a coffee for 50p, but then they would, like, refill it, you know? So, Id sit in there all day and just read plays and then put them back on the shelves, and then go home and my mother-in-law would feed me dinner,” he said. “Just to educate myself. To catch up. Cause I didnt go to drama school, so Id read all the plays I shouldve read if I went to drama school. Id ask all these writers and directors to tell me all the plays that I *must* read.”
“Theater is the key to Cillian,” director Danny Boyle told me. “Weirdly, given that he is such an extraordinary film actor.” That ability, from the theater, to travel the great distance of an extreme character arc. “Everybody talks about his dreamy Paul Newman eyes. And all thats to his advantage, of course, because behind is this capacity, this reach that he has into volcanic energy.” (The other key to Cillian, Boyle said, is that hes a bloody Irishman: “Hes one of the great, great exports, and the homeland clearly nourishes him constantly.”) Boyle cast Murphy in 2002s *28 Days Later,* the first film of Murphys that made him known. It led, in its way, to the Nolan partnership, as well to working with Boyle again on 2007s *Sunshine.* “When we did *28 Days Later,* he was really just starting off,” Boyle said. “By the time he came back for *Sunshine,* he was a seriously accomplished actor.”
Vintage kimono from Cannonball and Tilly Vintage. Tank top by Calvin Klein. Pants by The Row.
In the aughts, Murphy was working frequently, in some movies that were better than others. “Many of my films I havent seen,” he said. “I know that Johnny Depp would always say that, but its actually true. Generally the ones I havent seen are the ones I hear are not good.”
I asked him if hes seen *Oppenheimer*.
“Yes, Ive seen *Oppenheimer*…” he said, rolling his eyes.
When Nolan finished the film, Murphy, his wife, and his younger son flew to Los Angeles to watch it for the first time in Nolans private screening room. “Its pretty nice…” he said, trying to balance obvious enthusiasm with not giving too much away. “You know, he shows film prints there. The sound is extraordinary.” How many seats? “Uh, Id say maybe 50?” So, Murphy did see *this* film of his—in perhaps the most dialed-in home theater known to man.
In the summer of 2005, just a couple months after *Batman Begins* came out, Murphy was back in theaters with Wes Cravens *Red Eye.* It was villain season. And the two roles, in close quarters, seemed to coalesce around a feeling: That guy creeps me out. When casually canvasing people about what they think of when they think of Murphy, I was shocked by the imprint that *Red Eye* had on an American of a certain age.
“Oh, I know, its crazy!” Murphy said. “I think its the duality of it. Its why I wanted to play it. That *two* thing. The nice guy and the bad guy in one. The only reason it appealed to me is you could do that”—he snapped his fingers—“that turn, you know?”
“They say the nicest people sometimes make the best villains,” Rachel McAdams said, recalling her time with Murphy on the cramped airplane set of *Red Eye.* “Wed listen to music and gab away while doing the crossword puzzle, which he brought every day and would graciously let me chime in on.… I think the number one question I got about Cillian way back then was whether or not he wore contact lenses.”
“I love Rachel McAdams and we had fun making it,” Murphy said. “But I dont think its a good movie. Its a good *B* movie.”
During that same stretch, Murphy starred in Ken Loachs *The Wind That Shakes the Barley,* one of the best films hes made, and one that Murphy is uniquely proud of. A period epic that tells the story of a crew of Irish friends who find themselves fighting first the British in the Irish War of Independence and then one another in the Irish Civil War. The film is lush, harrowing, relentless, and transporting. Murphy has a face that sits cozily at home in any decade of the 20th century. He is at his most vital in the 20s, the 30s, the 40s—and its one of the factors that works so convincingly in *Oppenheimer.* Matt Damon, for better or worse, looks like Matt Damon. Emily Blunt, again for better or worse, looks like Emily Blunt. Whereas Cillian Murphy looks like some scientist from 1945.
Murphy and his filmmakers have run this play several ways in recent years. In *Anthropoid* (2016), as a Czechoslovak resistance fighter in Nazi-occupied Prague. In *Free Fire* (2016), as an IRA member caught up in an arms deal gone horribly wrong. In *Dunkirk* (2017), as a British shivering soldier suffering from PTSD. And, of course, in *Peaky Blinders* (20132022), as a World War I hero turned gangster in 1920s Birmingham. With that face, he can play every side of the die of the embroiled conflicts of pre- and postwar Europe. “Cillians always laughing about how hes perpetually playing people who are traumatized,” Blunt said. “There must be something about his face that sort of entices those kinds of offers.”
The first frame he appears in in *Anthropoid,* a moonbeam strikes his cheekbone, like its a plane of alabaster, and the question immediately pops to mind: Are you a Nazi or the resistance? Are you the good guy or the bad guy—or both, that “*two* thing.” The stable and the wild. The duality. The pull within.
Robe by Ralph Lauren Purple Label. Shirt by Van Heusen, from Front General Store. Pants by The Row. Belt from Kincaid Archive Malibu.
---
**In Dublin,** we found ourselves walking through busy streets, beneath abundant winter sunshine and caustic seagulls. We were approached by fans at a shocking clip—but also by sisters of friends.
“Im not a stalker…” one said, politely.
“Oh, hi, Oona!”
I asked him if hed sensed that his life had palpably changed in any way since last summer, given that a billion dollars worth of people saw him in practically every frame of one of the biggest films of all time. “To me, it always seems to go in waves,” he said. “When *Peaky* was at its kind of apex, youd feel a different energy around, walking around, a little bit like I do now—but then it settles down again. It kind of comes in waves. And then you dont have something in the cinema for ages, and people forget about it. So. It seems to be like that, and you sort of ride that, and then things go back to normal.”
With all due respect to the *Peaky* hive, this film did seem to go especially wide.
“Yes,” he said, laughing. “But youd be surprised. *Peaky* is still the thing I get asked most about in the world.”
As if on cue, Murphy was approached by a fan on the street who asked for a photo.
“Oh, I dont do photos,” he said, to a disappointed lad, who nonetheless got 20 seconds of Murphys time to chat.
“Once I started doing that,” he said, “it changed my life. I just think its better to say hello, and have a little conversation. I tell that to a lot of people, you know, actor friends of mine, and theyre just like: *I feel so bad.* But you dont need a photo record of everywhere youve been in a day.”
“There is a culty effervescent kind of wonder about Cillian,” Blunt said. “I think for someone as interior as he is, this level of kinetic fame is, like, horrifying for him. If anyone is not built for fame, its Cillian.”
To make it up to that fan, I asked Murphy what the status is of a potential *Peaky Blinders* film: “There is no status, as of now. So I have no update. But Ive always said Im open to it if theres more story. I do *love* how the show ended. And I love the ambiguity of it. And Im really proud of what we did. But Im always open to a good script.”
We passed some young people in dark dresses and heels, absolutely worse for the wear. “Look at these guys, out from the night before,” Murphy said, smiling. I asked him if he had his days of partying in Dublin, in London. “I mean, I did, but it was with my friends. I was never part of any scene—or go to, like, acting clubs. I would never go to the premiere.… The idea of going to a premiere that isnt your own, seems to me like…”
We passed Trinity College, an occasion to discuss the breakout Irish series *Normal People* and its breakout Irish star Paul Mescal. “He is the real deal. He is like a *true movie star.* They dont come along that often. But,” Murphy said, serving the lightest and rarest touch of pride and swagger, “luckily, they seem mostly to come from Ireland.”
“Its a good time,” he added, “to be an Irish actor, it seems.”
We stopped in at the Kerlin Gallery to see the show of his sister-in-law, Ailbhe Ní Bhriain. She and Murphys wife were friends in graduate school in London, and Murphys brother met her while visiting Cillian there. *This* is his scene. He walked around admiring the pieces, which hed heard about at family functions, but not yet seen in person.
“Now this work immediately appeals to me,” he said, “because you can feel its pushing at big, big themes, and to me, thats what Ive always loved. I dont really go for pure entertainment. I love when it makes you feel a little bit fucked-up. Not in a horror-genre way, but in a psychological, existential way. Thats what I love in all the work that I enjoy and the work that I try to make.”
Murphy executive-produced the last three seasons of *Peaky Blinders,* but had been looking for a first film to produce. He secured the rights to Claire Keegans *Small Things Like These,* a Booker Prize finalist, and one night on the set of *Oppenheimer,* while he and Damon were just sitting there in the desert, Damon told Murphy about Damon and Ben Afflecks as-yet-unannounced new company, Artists Equity, whose novel financial model is premised on profit sharing with the crew. Murphy sent them the book and Artists Equity ultimately financed the film. “Normally, youre trying to put together all these different entities, and then you have all these points of view on the edit,” Murphy said. “This was just those guys.”
*Small Things Like These* centers on an average man about his age in a small town in County Wexford who, one Christmas, stumbles upon a horrifying secret in the local convent—the so-called Magdalene Laundries, which, from the 18th century to the 1990s, held thousands of girls and women prisoner in Church workhouses. I asked Murphy if, with his new power, it was important to him to tell Irish stories. Not especially, he said. The only criterion was: Whats the best story for right now. “Still,” he said, “its a good time to be looking at *that* story, because we have distance from what happened with the Church and everything. But yet I dont think weve still fully addressed it. So, if you can make something thats entertaining and moving, but also asks a few questions about who we are as a nation, and who we were as a nation, and how far weve come—then thats great. But, again, they should happen after youve gone and had a reasonably entertaining evening at the cinema.”
Murphy joked at one point that he spent the actors strike at home “eating cheese,” but what he really did was spend the strike editing *Small Things* and overseeing “all the lovely stuff that we actors never get a look in on.” (His production company, Big Things Films, wouldve been called Small Things Films, he said, except that Small Things suggests “a lack of ambition, perhaps.”) *Small Things* will premiere at the Berlin International Film Festival this week, and in the spring he will start filming his next movie, *Steve,* an adaptation of the novel *Shy* by his friend Max Porter, about 24 hours in the life of a head teacher at a last-chance reform school.
One film a year, control, restraint, a hand firmly on the wheel.
T-shirt from Kincaid Archive Malibu. Pants by Alexander McQueen. Shoes by Bally. Socks by Pantherella.
Murphy has a natural propensity to an analog lifestyle that works well with Nolan, who doesnt use email or have a smartphone. “I aspire to that life,” Murphy said. “I was just clearing stuff off my phone, but have to keep the apps for music and music discovery.”
“I still have all my CDs and DVDs and Blu-Rays,” he said. “I *cannot* get rid of them. I did get rid of my VHS, though. I just left them on the street because nobody wanted them. I went and brought them to a library and was like, *Look at this pretentious collection of art films!*—and they were like, No thanks, man…”
I asked him if he saw the viral TikTok of Nolan showing a zoomer how best to project *Oppenheimer.* He started laughing. “My son showed me that. A *clash of cultures.*
Working with Nolan can feel like a much-desired retrenchment from modern life. “When Im on a Chris set, it does feel a little bit like a private, intimate laboratory,” he said. “Even though he works at a tremendous pace, theres always room for curiosity and finding things out, and thats what making art should be about, you know? Theres no phones—but also no announcement: Everybody just *knows.* And theres no chairs. Because he doesnt sit down. Sometimes a film set can be like a picnic. Everyones got their chairs and their snacks and everyones texting and showing each other fucking, you know, emojis or whatever, *memes,* which *I do know—*” he said, referring obliquely to a meme of Cillian Murphy not knowing what a meme is. “But *why?*
Do you know what Nolan is doing next? I asked.
“Noooo. But, like, I didnt know that he was writing *Oppenheimer.* We dont stay in touch that way.”
Its like *Mission: Impossible.* Do the hard thing together, then sever communication. “Chris is the smartest person Ive ever met. Not just the director stuff, but everything else.”
Nolan had told me that hed wanted to give Murphy the role that he would be dogged by forever—that he would spend the rest of his career trying to crawl out from under. “And,” he said, “I think Ive done it.”
When I put it to Murphy, he took a beat: “Theres a big, big body of work that I think people that know *know.*” I think it was his modest way of saying: Ive got a few others too.
Murphy told me hed heard “one of the Sydneys”—Lumet or Pollack—once said that it takes 30 years to make an actor. He believed that. “Im 27 years,” he said. “So Im close.”
Vintage coat by Saint Laurent by Hedi Slimane from David Casavant Archive. Vintage tank top by Helmut Lang from David Casavant Archive. Pants by Dior Men. Necklace (top) by Mikimoto. Necklace (bottom) by Platt Boutique Jewelry.
---
**After Nolan** hand-delivered the *Oppenheimer* script to Murphy and left him to read in that Dublin hotel room, he made his way to the Hugh Lane Gallery, and, more specifically, to the Francis Bacon studio there, a perfect preservation of the impossibly messy London studio where the Irish-born painter had lived and worked for much of his life. Murphy and Nolan share a love of Bacon—a towering figure of the 20th century, born in its first decade, dead in its last. Besides the reassembled studio, the museum has several paintings by Bacon—some finished, some unfinished. In all instances, though, the portraits of people—ghoulishly distorted figures—were rendered unsparingly. Never perfect representations. Never straight impressions. But rather an artists interpretation of another being, reconfigured into a stark image. You can see what might appeal to both a director of a biopic and his leading man.
That winter weekend, I made the same journey across the River Liffey that Nolan did, past a poster for *Oppenheimer* in a Tower Records window, past the Garden of Remembrance (for all who gave their lives for Irish freedom), and met Murphy at the museum. He had on a black puffer jacket, a black hoodie, a pair of black Ray-Bans that had that starburst that movie-star lenses do when subjected to a flash on a red carpet. He removed them inside and took a well-worn path back to the Bacons. “Most people dont know about this place,” he said. “Its kind of like a little secret. But I just come here when I have time to spare in town.”
We looked at Bacons Bacons everywhere. We talked about the Bacon biography that came out in 2021. “I love the work,” he said, “but just *the life.* That kind of unique relentlessness that he had as an artist.” I asked if he read actor biographies. “When I was starting out,” he said. “I always worry, though, reading them—because I cant remember what I did last week.... I often wonder about the self-mythologizing.”
We peered in on the studio itself, every cigarette butt and crate of Champagne archived and put in its place. “Chaos for me breeds images,” Bacon had said.
Do you have a room in your house that looks like this? I asked.
Murphy laughed. “No, I do have a man room, a man cave. But its incredibly tidy.”
In another room of the museum, we sat before a looped British TV special on Bacon from 1985, an hour-long interview with presenter Melvyn Bragg, where the great painter spits off charisma and wisdom in pithy responses to the biggest questions an artist can be asked, all while wearing a perfect black leather jacket. We sat there quietly together, until Murphy interjected: “Its kind of mesmerizing, isnt it?”
Before Id arrived in Dublin, Nolan had told me that Murphys career tends to make sense if you think of him more as an artist than an actor—as you would a painter or a musician. That his filmography isnt about a line going up or down, so much as filled with distinct periods of development. It helps explain the approach to the work. How patient and restrained. How clear the point of view. An act of accretion rather than explosiveness and volatility. So unshaken by the things that rock the boat for so many actors. Its the clarity. The authenticity. The answer to the question: When youre tested again and again, what is there? *Who* is there? Here is a man—a 47-year-old, who could play 27 with the right light and 67 with the right makeup—who is probably going to win the Oscar for best actor, but whose mind couldnt be farther from the chatter of his industry and the noise noise noise noise. At one point, I asked him if he feels like hes uniquely well-positioned to play roles of middle-age—if *Oppenheimer* feels like the first film of what could be the strongest stretch of his career. “I really dont know,” he said. “I really havent thought about it.”
Here, then, was another thing Murphy had seemingly figured out—consciously or not. Almost all religions, coaches, gurus, and enlightened friends tend to offer the same advice: Dont lose yourself in the past, dont fixate on the future, but rather focus six inches in front of your nose, and on the Now that you can control. “I really am kind of, like, pathologically unsentimental about things,” he said. “I just move forward very quickly.” The past wasnt a problem because he couldnt remember it—or wouldnt romanticize it. The future wasnt a concern because he didnt like to plan too far out. And so: the one film on the horizon; the one song on the radio or the one painting on the wall. He was, in this way, an authentic presentist. Or, less abstractly, just a good listener, a good see-er, a good scene partner, a good person to have dinner with.
There, in the museum, we sat and we sat, watching the Bacon interview as though there was nowhere else to be (because there really wasnt) and nothing else to think about (what more was there than how an artists life might be lived?).
Murphy broke the silence. “Did you ever hear this theory that Eno has? About the farmers and the cowboys? Theres two types of artists—theres the farmers and the cowboys. The farmers, like in his studio for example”—he said, gesturing to the screen—“hes mostly kind of doing the same thing, refining and refining and refining the same thing. And the cowboys, who go off, theyre like prospectors, that go off and do mad work. Eno puts himself in the second bracket, cause hes such an innovator, with the music and the production and all of that. Or somebody like Bowie, constantly, constantly reinventing. Neither one is better, its just a different way of making work.”
Which do you fall into? I asked.
“Definitely the cowboy, I think. But there are actors that just play similar parts, versions of themselves all the time. Again, I dont think either one is better.”
Do you think that sometimes an actor falls into the other category by accident when their public persona intersects with—or eclipses—the work? I asked.
“Perhaps. Yeah. Im sure thats the case. Yeah.”
He sat back and sunk into the film again. Giggling at some of the things that Bacon said and did. “Theres a few things he says that I always think apply to our work. The job of the artist is always to deepen the mystery.’ ” Provocative movies. Provocative performances. No easy answers—but perhaps a few new questions.
Dont give it all away. Dont even give most of it away. Retrench. Be clear. With yourself, but not necessarily with others. Let the fame wave pass. Live by the sea.
He said it again: “Deepen the mystery. Thats it, isnt it?”
**Daniel Riley** *is GQs global content development director.*
*A version of this story originally appeared in the March 2024 issue of GQ with the title “How Cillian Murphy Cracked the Code”*
---
**PRODUCTION CREDITS:**
*Photographs by **Gregory Harris***
*Styled by **George Cortina***
*Hair by **Teddy Charles** at Nevermind Agency*
*Skin by **Holly Silius** using Lyma & YSL Beauty*
*Set Design by **Colin Donahue** for Owl and the Elephant Agency*
*Produced by **Paul Preiss** at Preiss Creative*
**OPENING IMAGE FASHION CREDITS:** *Jacket by Hermès. Shirt by Dries Van Noten. Pants and belt (throughout) from Kincaid Archive Malibu. Boots by Manolo Blahnik. Necklace (top) by Atra Nova by Sheila B. Necklaces (second and third from top) and bracelets (on right wrist, top and bottom, throughout) by Platt Boutique Jewelry. Necklace (bottom) and ring (on ring finger, throughout), his own. Watch (on left wrist, middle, throughout) and bracelets (on left wrist, bottom, and throughout, and on right wrist, middle, throughout) from FD Gallery. Bracelet (on left wrist, top, and throughout) by Belperron. Ring (on left pinkie, throughout) by TenThousandThings. Rings (on right pinkie, throughout) by Graff.*
---
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -0,0 +1,182 @@
---
Alias: [""]
Tag: ["🤵🏻", "🪖", "🇺🇸", "🌊"]
Date: 2024-02-18
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2024-02-18
Link: https://www.vanityfair.com/news/life-aboard-a-nuclear-submarine
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-LifeAboardaNuclearSubmarineNSave
&emsp;
# Exclusive: Life Aboard a Nuclear Submarine as the US Responds to Threats Around the Globe
Under cover of darkness, I boarded a Navy vessel at a heavily guarded military base along the Eastern Seaboard. The location and time of departure, as well as the direction and distance of travel, were unknown to me. Adding to the sense of secrecy, a towering sailor in camouflage stood in the rain, examining my belongings for electronics that might leave a digital trail an adversary could intercept and exploit.
Buffeted by strong winds and high Atlantic seas, the support ship sailed through the night for more than 15 storm-tossed hours toward a destination somewhere off the continental shelf. Just after dawn, a sleek, inky object appeared in the distance, right above the waterline. It was the protruding bridge of what sailors call a “boomer”—a submarine armed to the gills with nuclear missiles—which is considered the most lethal, stealthy, and survivable weapon in Americas strategic arsenal.
Photographer Philip Montgomery and I had been granted permission to chronicle life aboard a boomer—at a perilous time. Our embed was unique: The arms and technology on board, along with the ships routines and missions, are among the governments most closely guarded secrets. Wed been told that the number of civilians who had been given this level of access (carrying cameras, no less) was roughly the same as that who have walked on the moon.
Last summer, when Id placed a request for the voyage, America was confronting two superpower threats: Beijings [increasingly bold advances](https://www.nytimes.com/2024/02/04/world/asia/china-nuclear-missiles.html) in the South China Sea and Moscows full-scale [invasion of Ukraine](https://www.vanityfair.com/news/2023/02/vladimir-putin-chechnya-syria-ukraine). Then, in October, the [Israel-Hamas war](https://www.vanityfair.com/news/2023/11/regarding-the-pain-of-others-in-israel-and-gaza-how-do-we-trust-what-we-see) added new urgency. US warships were drawn to the region, projecting force in case the conflict escalated. In short order, American vessels began intercepting long-range missiles that Iranian-supplied Yemeni rebels fired on Israel and on the ships themselves. When other Tehran-backed militias attacked US outposts in Iraq, Syria, and then Jordan, killing three service members in late January, it was apparent the reprisals from American fighter jets had not been a sufficient deterrent. President Biden, with carrier strike groups already in place, decided to retaliate forcefully, [on multiple targets](https://www.npr.org/2024/02/02/1228132782/us-biden-iran-drone-response-strike).
In October, wed been slated to board a sub in, of all places, the Middle East. But when American vessels came under attack, our trip was scrubbed. “Youd have been out at sea for months,” one of our handlers worried. In November, though, we were given short notice to fly to a Southern city in the US where we would be met, escorted to a ship, and then ferried to a boomer. A senior officer, we were told, was heading out to conduct an evaluation of a rookie submarine captain, and we would be along to observe. The sub would surface for a short time—so as not to draw unwanted attention. We were to climb aboard and the ship would submerge.
To prepare, I had interviewed more than two dozen current officials responsible for US nuclear doctrine and warfare. And as I looked at the hulking slash on the horizon, the words of one naval captain resonated with me: “When a single boomer goes out to sea, it does so as the sixth-largest nuclear nation on earth.”
Now, literally in the middle of nowhere, we made our rendezvous. A lashing rain seemed to be coming at us sideways. But suddenly, as we approached the sub, the sun broke through. Idling on our starboard like some leviathan loomed the missile deck of the USS *Wyoming.* A multibillion-dollar behemoth that is slightly longer than the Washington Monument is tall, the ship can carry up to 160 thermonuclear warheads, roughly the same firepower as India, a country that has been stockpiling nuclear arms for half a century.
As wars—hot and cold, visible and invisible—were being waged on land and at sea, it felt like an opportune time to meet the men, the women, and the weapons system that, in Pentagon terms, “provide 24/7 deterrence to prevent catastrophic actions from our adversaries.” The militarys rationale for offering us access seemed clear. The brass, apparently, wanted to help get Americans accustomed to the increasingly real prospect of conflict with a genuinely [powerful opponent](https://www.vanityfair.com/news/2023/09/us-military-training-for-conflict). They wanted to humanize the otherwise inhuman—some would say inhumane—reality of nuclear deterrence. And, finally, they wanted to convey a message to China and Russia about US forces and their strategic capabilities, resolve, and, for the moment at least, superiority.
## Sub Lord
As the ominous backstop to Americas national security, the Department of Defense relies on a triad: intercontinental ballistic missiles (ICBMs), long-range bombers, and submarines. The latter are considered the triads least vulnerable leg and carry 70 percent of all deployed nuclear warheads in the inventory. Boomers are officially known as *Ohio*\-class SSBNs—Navy-speak for “submersible ship, ballistic, nuclear”—and were built, as even the juniormost sailor will tell you (without a hint of irony), to “preserve the peace” and, in the event of strategic attack, to inflict unimaginable destruction. “We are prepared to unleash hell,” Admiral William Houston told me, adding that, of course, “We never want to do it. Those sailors know if their weapon system is ever used, they are probably not coming home to their families. And so they take their business very, very seriously. Its what we refer to as a no-fail mission. You are working directly for the president when youre out there.”
Starting in 2021, Houston, 55, headed the US submarine force—25,000 strong, involved in the operation of 65 subs—and the Allied Submarine Command, which made him the principal undersea-warfare adviser to all of NATOs strategic commanders. Awarded his fourth star in December, he became director of the Navy and Energy Departments nuclear naval reactor program, a position once held by [Admiral Hyman Rickover](https://www.amazon.com/Admiral-Hyman-Rickover-Engineer-Jewish/dp/0300243103/ref=sr_1_1?crid=2RKZBVSFSY8GN&keywords=hyman+rickover&qid=1707159166&s=books&sprefix=hyman+rickover%2Cstripbooks%2C65&sr=1-1), a towering if controversial figure who is considered the father of the nuclear navy.
While boomers may be the deadliest ships at sea, the sub command also operates *Virginia*\-class hunter-killer subs (SSNs), which track and are prepared to sink enemy subs and surface ships, as well as guided-missile subs (SSGNs), among them the USS *Florida,* which in early November popped up in the Middle East. The *Florida*s very public passage through the Suez Canal, Houston insisted, was a “message to remind people that you have an incredible warship right there that you cant do anything about. Were telling our adversaries: You have to be aware of its destructive capability if leadership decides to use it.” This was no idle threat. In January, after myriad attacks by the Houthis—the Yemen-based rebel army supported by Iran—against vessels flying a variety of flags, American officials, in a tandem strike with the UK, ordered the *Florida* to launch Tomahawk missiles at Houthi targets. In February, after the Houthi assaults continued, two destroyers, the USS *Carney* and *Gravely*, hit more sites in [Yemen](https://www.nytimes.com/2024/02/03/us/politics/houthis-yemen-strikes.html).
“My predecessors, some of them called themselves Underlord,” Houston explained—a reference to mythic characters in the multiverse—“and that has a dark connotation.” The admiral added with a grin, “Im just waiting for somebody to give me some respect and call me Sub Lord. Im a huge Marvel fan.” His staff ribbingly slapped the moniker on his parking spot in front of his Norfolk, Virginia, headquarters.
Houstons path to the Navy was unexpected. In high school in Buffalo, he and some buddies ditched lunch on a hot day to hang out in the college guidance office, the only spot with air-conditioning. They pretended to be flipping through ROTC applications when they were called on the carpet by an administrator who, as Houston recalled, told them that they could stay so long as they completed the paperwork. Houston wound up with an ROTC scholarship to Notre Dame and, during a monthlong voyage to Japan, fell in love with submarine culture. “So, yeah, Im in the Navy because I skipped lunch,” he deadpanned. Later, when we returned to the subject, he observed, “When people ask me why am I in the military, I go, Go to the Holocaust Museum in DC. There is evil in the world. There is pure, unadulterated evil.’ ”
Two decades ago, as a deputy squadron commander, he helped integrate women into the all-male submarine service. The *Wyoming,* he noted, was an obvious early vessel to be chosen since its namesake was the first state to allow womens suffrage. (The goal, moving forward, is for every ship to be gender-agnostic in its commands and roles.)
Nearly all *Ohio*\-class subs are emblazoned with the name of a US state. The admiral spoke admiringly of the boat to which wed been assigned. “*Wyoming* is the most powerful warship ever created,” he told me. “It is the ultimate guarantor of our strategic deterrence.” Hidden in its hull are 20 Trident II D5 ballistic missiles tipped with independently targetable warheads, each with many times the destructive power of the bombs dropped on Japan in World War II. Tridents are so accurate, Houston said, they can hit a stadium on the other side of the globe. The central mission of the services 14 boomers is to clandestinely plumb the worlds oceans, waiting to respond if ever an enemy—for whatever reason, including a fit of pique or miscalculation—initiates a first strike. At that point, the president could decide to order the *Wyoming,* or one of its fellow subs, to launch in retaliation.
For further context, I dropped in on a Navy captain named Dan Packer. His assessment was even more blunt than Houstons. “My job is to come up with ways to kill people and to find friends to help me kill people,” he said when we first met. Until October, he was the director of plans and policy for the sub force—responsible for writing the playbook for undersea warfare—and has stayed on as a top civilian adviser. During his career, he served on four classes of submarine before returning to his alma mater, the Naval Academy, as dean of math and science. The man is a bit of a legend—a sailor and a scholar who literally grew up in the shadow of the atomic enterprise in a small South Carolina town just down the road from the Savannah River Site, where, since the 1950s, reactors have churned out plutonium and tritium for warheads.
On 9/11, Packer, then a lieutenant commander, was the engineer officer on the USS *Ohio,* an SSBN that was in the Pacific for a worldwide war game. Early that morning, the captain took to the PA to prepare the crew for the drill. Thirty minutes later, Packer said, the commander picked up the mic again to say, “Cancel the exercise. The United States is under attack.” Over the next few hours, the *Ohio* received fragmentary reports: The twin towers had been hit; the Pentagon had been struck (true) and destroyed (not true). They also understood that the president was airborne—another portentous sign to those who wait on orders from the National Command Authority, which the president directs. The *Ohio,* Packer recalled, began the march from DEFCON five. To four. To three. “You take actions to make the platform more ready to complete its mission. You open safes and look at and access war plans that are normally not known or accessible.” When I asked how unusual those actions were, he replied, “Id never seen those things. *Ever.*” Sailors on the *Ohio* began to speculate about who was behind the attacks. “The consensus on the boat was that it was Iran. And, as far as we were concerned, they were going to be radioactive glass,” Packer remarked, painting an image of the hellscape that would result if the Tridents were launched. “If you ever wonder if people would be ready to employ these weapons, the answer is yes.” (When I mentioned to a senior national security official that I was meeting with the countrys top nuclear strategists, his eyes went wide. “Get ready for some straight talk,” he advised. “They never let these guys out of the cage. They arent *supposed* to talk to anyone. So if you have them, expect to get an earful.”)
Packer, like so many others interviewed for this story, told me he is bracing for a very different battle than the ones fought in the aftermath of 9/11. “2027 is the year Xi Jinping said they need to be ready to go to war,” he noted, referencing Chinas president. “We use that as a benchmark.” With that date only three years off, Packer is now the sub forces civilian lead on AUKUS, a trilateral security pact through which the US and UK are helping [Australia](https://www.vanityfair.com/news/2021/09/sub-snub-deja-vu-the-us-and-france-have-been-here-before) field a fleet of nuclear subs in an attempt to check Chinas ambitions. He is also working on incorporating AI into aircraft that scour the South China Sea for acoustic signatures emanating from Beijings subs.
While public attention is focused on Ukraine and the Middle East, the Western submarine community is busy analyzing the threat posed by Chinas industrial base, which is churning out surface ships and undersea vessels at an astounding clip. The Chinese navy, in fact, is [the worlds largest](https://www.vanityfair.com/news/2022/05/is-this-the-end-of-the-age-of-the-aircraft-carrier), consisting of more than 370 vessels. American shipyards simply [cannot keep pace](https://www.theatlantic.com/magazine/archive/2023/04/us-navy-oceanic-trade-impact-russia-china/673090/).
The good news, Packer and others believe, is that for all its capacity, Chinese naval prowess, when it comes to submarines and seasoned sailors, is lacking. While that could change, it is unlikely to do so, many experts contend, on Xis timeline. That gives Americas so-called Silent Service an advantage. “In the [Taiwan fight](https://www.vanityfair.com/news/2022/09/joe-biden-says-us-will-defend-taiwan-if-china-attacks),” Packer maintained, “were prepared to go into the jaws of the Chinese undersea forces and take them all out.” All the surface ships as well.
## Black Hull, Orange Tubes
On the voyage out to the *Wyoming,* I was accompanied by Commander David Burke, 42, the deputy of Submarine Squadron 20, a seat Houston once occupied. Burke was coming out to conduct a spot inspection to make sure the crew and its new commanding officer (CO) were up to snuff.
Burke would know. In February 2022, while in charge of an Atlantic fleet boomer, the USS *Rhode Island,* he received an urgent message that Russia was invading Ukraine. If the US made certain moves, Vladimir Putin warned, forces might be met with a [nuclear response](https://www.ft.com/content/d98446ac-b56e-4f1d-bfa9-ebaed4e26884). “That was a turning point,” he recalled, “a serious reminder of why our job is so important on an SSBN.” Months later, when Burke surfaced the *Rhode Island* in Gibraltar, the meaning was clear: Americas boomers can show up anywhere, any time. Last July, the USS *Kentucky,* a sister ship assigned to the Pacific, made a port call in Busan, South Korea, the first such visit in more than 40 years.
As our support ship approached the *Wyoming,* Burke, a plainspoken Illinoisan with piercing blue eyes, was candid about the sacrifices submariners make by being out of touch for long stretches. “I have an eight-year-old son and a four-year-old daughter. Through her fourth birthday I was probably gone 50 percent of her life—so its tough,” he conceded. “If Im going to be away from my family, I want it to be both professionally rewarding and challenging.” He was less candid about his accomplishments. Only later did I learn that Admiral Lisa Franchetti, the first woman to head naval operations in the services 248-year history, had just given him the coveted Stockdale Award, presented annually to the most inspiring leaders in the Navy. In short, the sub force command was sending a golden boy to put the *Wyoming* through its paces—with a *Vanity Fair* reporter and photographer in tow. The new CO was about to be tested in real time and on the record.
After a night and a morning at sea, our embarkation had arrived. As whitecaps crashed against the *Wyoming*s hull, Burke went aboard first. I followed, traversing a rickety drawbridge from ship to ship, aided by a line of sailors fanned out across the subs vast deck. Some were toting automatic weapons, a precaution when a boomer is on the surface. A rescue diver was ready if a swell took one of us overboard. The ships slightly curved surface, like a giant whales, was matte black, covered with special material that absorbs sound waves and masks the crafts sonar signature. The hull itself was punctuated with two rows of 12 round lids, like giant manhole covers.
Upon reaching the hatch, I carefully descended several vertical ladders that were slick with sea spray. Stepping off, it felt like I was stepping back in time. I was surrounded by walls with exposed pipes, old-school circuitry, panels full of analog dials, switches, and gauges. It felt part boiler room, part brewery, part mad scientist lab from a 1950s sci-fi film. The explanation: When the devices on this class of sub were devised in the 70s and 80s, they were quite modern. Some have been upgraded; others remain unchanged (one uses a crank!) because theyre reliable, durable, and easy to replace at sea. Here and there, I passed men and women in coveralls who were receiving instructions on throwback speakers and talking into vintage telephones. Save for the advanced systems in the control and sonar rooms (bristling with screens labeled “secret” and “top secret”), everything about the boat—down to the *Wyoming*s stated mission (to be “on scene and unseen”)—harkened back to the Cold War. Maybe, I thought, we were being cast in the sequel. Or maybe the original never ended.
My first impressions were predictable: The ship seemed cramped, with narrow passageways. I was surprised, though, that the boomers four decks, with 14-foot ceilings, also made it seem cavernous, even airy, in certain spots. Offsetting the retro-tech vibe were odd trinkets hanging from the walls: cowboy boots, lariats, spurs. This was, after all, the *Wyoming,* and as a way of paying homage to the state—and providing a touch of home—these voyagers had gone out of their way to set a Western tone to the decor. The ships motto, I soon discovered, was “Cowboy Up.” And ever since the boat was commissioned in 1996, crew members have made pilgrimages to the state, meeting officials and supporters and taking in the rodeo.
In short order, we were cruising at dozens of miles an hour and depths of several hundred feet. And, unavoidably, the missiles remained front of mind. Every few steps I encountered what looked like curved walls, painted orange. These were the missile tubes, as massive as the trunks of redwoods. (An arms control pact with the Russians dictates that only 20 of the 24 missile tubes can be operable.) I also toured the torpedo room where the Mark 48s—with their 650-pound high-explosive warheads—are stored.
The missile tubes were ubiquitous—so much so that the bathrooms and crew quarters were situated right beside them. In fact, the compartment where I would spend the night—which contained six small, curtained-off bunks, as if on a trains sleeper car—was effectively wedged between two Tridents.
## Chessmaster
Those orange tubes—those missiles—were the reason I was now hours from shore. But to understand their use, I wanted to meet the man who was in day-to-day control of them. And to that end, a month before my voyage, I paid a visit to landlocked Omaha.
There, I was invited into the buzzing corridors of the US Strategic Command (STRATCOM), the nerve center of Americas nuclear arsenal, located at Offutt Air Force Base. This is the place that produced the *Enola Gay* and *Bockscar,* the B-29s that dropped atomic bombs on Hiroshima and Nagasaki; the place where President George W. Bush had taken temporary refuge on 9/11.
When I arrived, I spotted mechanics attending to two aircraft on the tarmac. One was an E-6B Mercury, a nondescript plane that, if needed, can serve as both a communications relay for ballistic-missile subs like the *Wyoming* and as an airborne launch control for land-based ICBMs. Nearby was a heavily militarized version of a Boeing 747, the E-4B Nightwatch, which houses the National Airborne Operations Center, which, according to its mission statement, “provides a highly survivable command, control and communications center…in case of national emergency or destruction of ground command and control centers.” Its nickname: the Doomsday Plane.
STRATCOM—with its 150,000 service members and civilians—is led by an Air Force four-star, General Anthony Cotton, who ushered me through his sprawling outer office, swarming with airmen, sailors, soldiers, and Marines, before taking me into his inner sanctum, a hushed, wood-paneled oasis in the eye of the storm. Cotton, along with Secretary of [Defense Lloyd Austin III](https://www.nytimes.com/2024/01/13/us/politics/lloyd-austin-private-public.html) and Chairman of the Joint Chiefs General [Charles Brown Jr.](https://www.nytimes.com/2023/09/29/us/politics/general-cq-brown-joint-chiefs.html), is part of a trio of Black leadership atop Americas national-security pyramid. And it was a point of pride, clearly, that of all the Black four-stars, as Cotton told me, “theres only been 10 in the history of the Air Force, and Im number 10.”
I asked what drew him to the service. “Simple,” he said, walking over to a display case containing a folded flag with a picture next to it. “Thats my dad. He joined in 1942. As you can see, he was a diamond-wearing African American that was in World War II in the Army Air Corps, made the transition to the Air Force, and retired as a chief master sergeant in 1974. So I came out of the womb as a member of the military.” He was emotional as he recalled how, in 2000, his father passed away a month to the day after his mother. “He didnt see me make lieutenant colonel, but I buried with him my promotion recommendation form.”
I found Cotton, from Goldsboro, North Carolina, to be open, gregarious, and quick to laugh—traits that might seem at odds with the solemnity of his mission. “I dont want to walk the halls of the Pentagon and when people see me, theyre like, Oh, theres General Cotton, the nuclear guy,’ ” he said.
Cotton, 60, recounted how hed first felt the weight of command as a 22-year-old on his inaugural ride out to a missile field in Minot, North Dakota. “Youre jumping in that Suburban,” he said, “knowing that youre responsible to execute, under presidential authorities, the most powerful weapon on the face of the globe. You see the humming of the launch control center and you see 10 green lights and know that on the other side of that green light is a Minuteman III, with warheads on board. It all becomes *real* at that point.” Cotton would eventually hold a string of lofty leadership posts, most recently running the Air Force Global Strike Command, responsible for the countrys bombers and ICBMs.
Commander Jeremy Garcia, referred to as “captain” by his shipmates, looks through the periscope.Photograph by Philip Montgomery.
His job as STRATCOM chief: preparing and, if necessary, turning to the tools at his disposal, from conventional long-range strike weapons and multiplatform nuclear arms to joint electromagnetic spectrum operations, which involve exploiting and attacking enemy frequencies (as well as protecting our own). Being able to provide those options to the commander in chief “is what I do,” he explained, before taking stock of the geopolitical moment. “Thats important, especially now as we see the threat vectors to rules-based international order.” Translation: Over the second half of the last century, Western national security officials were preoccupied with trying to keep one adversary (the USSR) in check, even as the dueling nuclear powers ratified landmark arms control treaties. With those efforts now in eclipse and nuclear proliferation a chilling reality, America and its allies are currently contending with two near-peer opponents, Russia and China, as well as their own set of allies with nuclear aspirations, including North Korea, Iran, and, by extension, the Axis of Resistance—a term that encompasses armed groups like the Houthis in Yemen, Hamas in Gaza, Hezbollah in Lebanon and Syria, and the Popular Mobilization Forces in Iraq.
Thats quite a roster. Who, I wondered, did Cotton have on speed dial? He chortled at the question before turning it back around, “Who do you think?” He then showed me a bank of phones with buttons for, among others, Biden, Austin, Brown, the leadership of the US intelligence community, and the 10 combatant commanders who, along with Cotton, command and deploy the nations armed forces. “Are you the guy nobody wants to hear from?” I asked, half in jest. “Yeah, actually it does kind of suck,” he said with a smile.
Shortly before my visit, the *Florida* had made its presence known in the Suez. Only hours after I departed, the B-21 Raider, which will replace the B-2 as a strategic bomber, made its first public flight. Cotton was eager to convey the range of options he can summon if required: missiles, bombers, subs. “For me, being the chessmaster, \[and\] being able to offer those effects, if warranted, is incredibly important. Because at the end of the day, Im supposed to be able to hold people at risk, and I can do that with the triad.”
Still, the chessmaster doesnt sleep soundly. “Even at the height of the Cold War, you had conversations with your adversaries,” Cotton said, alluding to the red phone, a hotline set up in 1963 between Washington and Moscow that allowed dialogue and de-escalation in times of crisis. “Were not seeing that with China. I would love to have my counterpart come visit me to understand what were doing so theres no miscalculation.” (In December, Joint Chiefs chairman Brown spoke with a [top Chinese general](https://apnews.com/article/china-military-cq-brown-liu-zhenli-taiwan-7d37e5d395b64fb0735921195df1baab) about reestablishing ad hoc communication, which Beijing had suspended after the US shot down a Chinese spy balloon.)
## Sub Species
In the *Wyoming*s wardroom I met Jeremy Garcia, the subs new CO. Like others who hold the rank of commander and helm a sub, he is addressed as “captain” on board. Burke was cordial to Garcia, but he was also there to give an unvarnished evaluation. So he hung back a bit.
Garcia, 44, tall and bearing an uncanny resemblance to a young Tim Robbins, had not been given much notice about our visit or the decision to pair it with Burkes drop-by. But he seemed like the kind who rolled with the punches. Hed already had his trial by fire: His first week on active patrol at sea, Hamas and Israel had gone to war, and the *Wyoming* was prepped in case it might be tagged for duty there, if only to surface and convey a strategic message. Garcia was unflustered and welcoming. Off the bat, he urged me to speak with any of the 163 sailors on board—without any PR minders. I then accompanied him around his ship.
A Bellevue, Washington, native, hed enlisted in 1998 as a nuclear engineering and electronics technician. He made his bones on fast-attack and ballistic-missile subs before finally assuming the *Wyoming*s reins. The best part of the gig, he told me, is “growing an amazingly talented and proficient team of warriors.”
Talented, indeed. The threshold for a billet on a boomer is, in part, ones range. Crew members must be comfortable spending months in a confined space (typically 70 to 100 days), pitching in on various assignments, and being knowledgeable about nuclear physics. Before submariners receive their insignia—a patch or pin showing a sub flanked by marine creatures—they must “earn their fish”: demonstrating proficiency as first responders across departments, ever mindful of the threat posed by fire or a breach in the hull. Cooks, for example, can serve as EMTs if a sailor ever needs treatment by the onboard medic, who runs what amounts to an urgent care clinic. The wardroom can be converted into an operating theater. (With elaborate systems for swapping in crews and rations, subs, unless they require maintenance, can conceivably remain at sea, indefinitely, during times of heightened tension.)
Walking the ship, I met mariners who were Asian, Black, Latino, immigrants, first-generation Americans, third-generation sailors, and so on. This was a point of pride for the captain and the sub force. And yet the culture has become so ingrained that merely inquiring about it—or the 13-year effort to integrate women on subs—was met with eye rolls. A distinct message was coming through to me: The perils and impediments of life underwater trivialized any fissures that might otherwise exist on land. “A submarine is always trying to kill you and our job is trying not to die,” asserted Jonathan Omillian, a salty missile technician, who noted that crew members were united in purpose. “The reason that we are out here is so that we have a place to come home to. We are pretty much the big guys standing up to the bullies saying, Hey—excuse my language—Fuck off. Dont fuck with us. We are bigger. We are better.’ ”
His ships leader has a command philosophy that might seem counterintuitive to those on shore. “Im a big fan of pushing responsibility down to the lowest level,” Garcia said, “and the lowest level does not mean rank. It means technical expertise and experience. So if that means a very important program can be run by a first-tour individual of any rank, then Im fine with that—as long as they own it.”
The job of diving and steering, for example, is not in the captains remit. He has put that chore in the hands of the juniormost people (albeit with a senior officer seated behind them). Garcia, like a dozen other COs I spoke to, takes people who are too young to legally drink, metaphorically drops them in the deep end, and says, “Swim.” True, other branches of the military imbue airmen, soldiers, and Marines with outsize responsibility. But I am hard-pressed to think of another mission as daunting as testing a teenagers mettle underwater with a nuclear reactor in back and thermonuclear warheads in front.
Beyond their duties, the Gen Zers—and the millennials who supervise them—must contend with a life that is practically monastic. They are completely removed from meaningful connectivity, including social media. Their only contact with the outside world involves infrequent (and heavily monitored) emails with family when the sub is at a depth and a posture that permit it. There is also little privacy beyond the confines of a draped bunk that can feel like a coffin. Deprived of many other creature comforts, sailors can avail themselves of exercise gear, which is spread around the boat, including treadmills and free weights—but not when the sub is running silent so as to evade detection.
When I first entered the command-and-control room, called “the conn,” a young ensign named Kirsten Barber was moving with purpose between banks of displays and the subs twin periscopes. She was standing watch, scanning for vessels—on the surface or submerged—that might approach the sub or compromise its position. “Knowing that were out here basically keeping the entire United States safe,” she told me, “is pretty awesome, actually.” Barber answers to the nickname Chop, a title submariners assign the chief supply officer, a job vital to the ships operation and the crews morale.
“Some of the smartest people Ive met are younger than me,” Barber said, gesturing toward the stern. “Im 23 and there are some people back aft running a nuclear reactor that just blow me away every day. They have to be smart to be on this boat.” I was reminded of a conversation I had when I first visited sub force command. Over lunch, a young Annapolis grad—an astrophysicist who evidently has a couple of satellites named after her—discussed her plans to possibly switch gears and become an astronaut. She was reciting, rather than bragging about, her time at school and at sea, when a captain sitting next to her piped in wryly, “I have the same credentials. Other than the satellites.”
At one point on the trip, I found myself marveling over, of all things, a biscuit. Not only was it gluten-free, it was delicious. When I shared my surprise with Barber, she beamed. Of all her roles, none looms larger than overseeing the galley. She took me on a tour of the cavernous refrigeration and freezer compartments that are manned by “Jack of the Dust,” the sobriquet of the sailor—bedecked in winterized gear—in charge of provisions storage.
Virtually everyone I interviewed on the *Wyoming* raved about the food, which is an atypical reaction when it comes to military chow. There is a reason for that: Among the ships secret weapons is Culinary Specialist Chief Petty Officer Earl White. Raised in Granville, Ohio, White followed in his grandfathers steps, starting his career as a butcher before going to culinary school. In 2009, he joined the Navy and served for six years on Burkes old boat, the *Rhode Island,* before taking a land-based assignment. “I did four years at Camp David,” he recounted while kneading dough in the galley. (The Navy also runs the White House dining room, famously referred to as The Mess.) “I did two years of Obama, two years of Trump. It was an incredible experience.” White not only served first families and VIPs, he also earned prestigious gourmet certifications. While we were underway, he whipped up bisques and beignets.
For one lunch, we had a Mexican spread; even at sea they called it Taco Tuesday. I shared meals in the wardroom with Burke, Garcia, his deputy Ben Reed, and several junior officers. We dined on oxtail, salmon, and winter vegetables—served on proper Navy china. (After supper, Burke and Garcia teamed up in a fierce, smack-talking game of cribbage against other Navy visitors.)
But the main event, as all of us knew, was how Garcia would be judged by his cribbage comrade, Burke. Top officials can issue all the orders they want, but someone has to push the buttons, quite literally. And so the climactic moment aboard the *Wyoming* came when Garcia and company engaged in a command-and-control exercise (CCX), replicating the exact, and exacting, procedures required to deploy the subs deadly payload.
For much of the voyage, Id noticed that Burke, silent but affable, would appear and then drift away to assess crew members on their navigation skills, their weapons preparedness, and their engineering prowess. Now, with Burke watching from the wings, the CCX commenced.
As planned, a simulated emergency action message (EAM) came in from the National Command Authority. The message was received by the communications team, led by 27-year-old Lieutenant Michael Gomez, whom everyone calls Commo. He was quickly joined by another junior officer and, using their thumbs and forefingers, they jointly grasped the EAM—a plastic object about the size of a playing card—and the men, facing each other, walked sideways across the conn. The reason for this unusual choreography: The nuclear command-and-control process requires two-person integrity, theoretically ensuring that there be redundant affirmation should a worst-case EAM ever be received—until the unimaginable moment a missile might be released.
When the pair reached the spot where Garcia was standing, they could see that resting on his hip were scores of keys that were wrapped around his frame like a tangle of Christmas lights. “The CO has lanyards that contain keys needed to carry out very specific processes to support any missile launch,” a senior Navy officer explained. “These keys are part of a nuclear safeguard process and are used in various locations around the SSBN to enable a launch when, and only when, a launch order has been validated to be from the US president—as he or she is the only person that can authorize a launch from an SSBN.”
With his executive officer standing beside him, the captain authenticated the message, checking it against a codebook to ensure that neither an outside party nor an onboard subversive had intercepted and changed it in any way. Garcia then uttered a phrase that, were it not a drill, might irrevocably lead to the alteration of some portion of the planet: “I concur with missilization.”
Over in the subs Missile Control Center, the weapons officer, Lieutenant William Zupke and his deputy, Lieutenant Junior Grade Noelle Gill, were hunched behind sailors who peered at consoles displaying the status of every missile tube. Armed guards milled about. “Standing by for fire order,” someone said. Over the loudspeaker came the reply, “Concur with fire order.”
The ritual—the call-and-response, the presiding officiant, the two curates holding what amounted to a death wafer—had all the hallmarks and mystery of ceremonies performed in houses of worship or secret societies. In a way, the CCX had the trappings of a sacred rite turned on its head: a military liturgy that reinforced the profound implications of a potentially apocalyptic process.
Nothing was fired, of course. The keys inserted were effectively blanks. The entire exercise took only a matter of minutes. But the point was made: Not one of the submariners even flinched. All behaved as if, given the order, they would have had sufficient nerve to perform the task required.
A couple of weeks later, I asked Burke for his assessment of Garcia and his team. His response sounded like something Rickover might have said following the maiden 1960 voyage of the very first boomer, the USS *George Washington.* Burke felt the captain and his sailors performed well, “demonstrated tenacity,” and fulfilled “their mission of strategic deterrence and readiness to execute the presidents orders should deterrence fail.”
## Before Dawn
At 5 a.m. on the day of our departure, I climbed up to the bridge—the highest position on the ship—to join Gomez, who stood watch in the hours before dawn. “Every time were on the surface, I come up here,” he said. His father is in US Special Forces; his wife serves on a surface ship. Two flights down, in the conn, Lieutenant Jeanny Sanger, a fellow Annapolis grad (and Ultimate Frisbee club teammate), was on duty.
Suddenly, a loud voice squawked from a speaker. The *Wyoming*s suite of sophisticated sensors had spotted something. “Hes about 25 miles away,” Gomez said with binoculars at the ready. A surface ship? I inquired. “Yeah, hopefully, its not a submarine,” he responded.
After we sailed on for a few minutes, he broke the silence and spoke about his peers on the Navys other subs: “The fast-attacks get out and they get to do all the cool stuff every day. We dont really get to do any of that. But it kind of does feel like youre doing your mission when were out here and things are getting hot in the world.”
- “I Need Six to Eight Pardons”: Inside the [Secret Scheme](https://www.vanityfair.com/news/sidney-powells-secret-scheme-find-trumps-votes) to “Find” Trumps Votes
- [Simone Biles](https://www.vanityfair.com/style/simone-biles-cover-interview) Talks Marriage, WAG Life, and the Paris Olympics
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -0,0 +1,134 @@
---
Alias: [""]
Tag: ["🤵🏻", "🇺🇸", "🇨🇭"]
Date: 2024-02-18
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2024-02-18
Link: https://www.nzz.ch/international/helvetia-ein-schweizer-dorf-in-den-usa-mit-fasnacht-und-urdemokratie-ld.1762526
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: [[2024-02-18]]
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-HelvetiaeinSchweizerDorfindenUSAmitFasnachtundUrdemokratieNSave
&emsp;
# Helvetia: ein Schweizer Dorf in den USA mit Fasnacht und Urdemokratie
![Das winzige Dorf in den Appalachen, das schweizerischer ist als die Schweiz](https://img.nzz.ch/2023/11/09/eac16dc7-2e30-4c64-baca-55ee5b320b52.jpeg?width=960&height=539&fit=bounds&quality=75&auto=webp&crop=6720,3776,x0,y701)
##
Das winzige Dorf in den Appalachen, das schweizerischer ist als die Schweiz
Vor rund 150 Jahren wanderte eine Handvoll Schweizer nach West Virginia aus und gründete im amerikanischen Hinterland einen Weiler namens Helvetia. Bis heute organisieren sie sich basisdemokratisch und feiern Fasnacht. Zugleich wird der idyllische Ort von der Apokalypse heimgesucht.
Es ist, als würde man das Haus der Grosseltern irgendwo in der ländlichen Schweiz besuchen. Im Speisesaal der Gaststube «Hütte» stehen vergilbte Fotos und eine alte Kaffeemühle auf einem Gestell. An der Wand hängt ein gemalter Alpaufzug. In einem Hinterzimmer verstaubt ein Harmonium unter einer Petrollampe. Das Tischtuch ist rot-weiss kariert, und bald schon bringt die Serviererin das Menu: Sauerbraten, Rösti, Sauerkraut mit Apfelmus und Käse. Die «Hütte» steht in Helvetia, West Virginia.
Der Ort existiert zweimal. Vermutlich kennen mehr Leute die fiktive Version aus dem bekannten Videogame «Fallout 76», einem Online-Rollenspiel. In diesem überleben die Menschen in einem Bunker einen Atomkrieg. «Helvetia» ist das postapokalyptische Trümmerfeld im Jahr 2102, das sie wieder besiedeln. Überlebende und Roboter irren durch eine atomar verseuchte Szenerie, in der die pedantisch imitierten Gebäude des wirklichen Helvetia erkennbar sind.
## Nur noch 38 Einwohner und kein Handy-Empfang
Das reale Appalachen-Dorf Helvetia hat gerade einmal 38 Einwohner. Schweizer Einwanderer liessen sich ab 1869 hier nieder, weil die hügelige Landschaft sie an die Heimat erinnerte. Helvetia ist so abgelegen, dass das Handy hier nicht funktioniert. Will man jemanden anrufen, fragt man im Restaurant, ob man das Festnetztelefon benützen dürfe, oder geht zur Telefonkabine mit Münzeinwurf in der Dorfmitte. Die Notrufnummer ist gratis.
### Helvetia, West Virginia
Braucht man Internet, geht man am besten in die Bibliothek, dort gibt es WLAN. Im Hinterzimmer ist das Helvetia Archive untergebracht. Dort kann man unter anderem die Original-Schweizer-Fahne besichtigen, die die Einwanderer vor 150 Jahren mitgebracht haben. Ein anderer wichtiger Treffpunkt ist das «Kultur-Haus». Es besteht aus dem Postbüro und dem Dorfladen, in dem auch eine Sammlung von Fasnachtsmasken aus Pappmaché ausgestellt ist. Neben lokal hergestelltem Käse und Honig finden sich im Laden Bücher wie zum Beispiel die Rezeptsammlung «Öppis Guets vu Helvetia». Es gibt allerdings niemanden mehr, der noch Schweizerdeutsch spricht.
## Das Museum in Helvetia.
## Clara Lehmann mit ihrer Tochter bei den Postfächern im Dorfladen.
Das real existierende, friedliche Helvetia erscheint wie das Gegenteil des Videogame-Helvetia und überhaupt wie ein Gegenentwurf zum modernen, zerrissenen Amerika. Aber von nahe betrachtet, ist es nicht so einfach.
Zu seinen besten Zeiten hatte Helvetia etwa 500 Einwohner. Das war um 1910, als viele von ihnen in den Kohleminen Arbeit fanden. Aber dann ging es bergab mit der Kohleindustrie, gegenwärtig schliesst die letzte Mine in der Umgebung. Viele Häuser in Helvetia sind verlassen und verlottern; die Bevölkerung ist überaltert. Die wenigen Kinder müssen im nahe liegenden Pickens zum Unterricht, das eigene Schulhaus schloss in den 1960er Jahren. Die Kirche steht zwar noch im Dorf, aber nur wenige kommen zum Gottesdienst. Die Jungen ziehen weg, weil es keine Arbeit gibt und weil sie das Leben hier als langweilig empfinden. Helvetia teilt dieses Schicksal mit vielen Orten in West Virginia, das als [viertärmster Gliedstaat](https://wisevoter.com/state-rankings/poorest-states/#:~:text=in%20the%20US-,Mississippi%20is%20the%20poorest%20state%20in%20the%20US,a%20poverty%20rate%20of%2018.7%25) der USA gilt. Die hier besonders verbreitete Opioidkrise hat auch in Helvetia Opfer gefordert.
## In der Schule von Pickens, wo auch die Kinder aus Helvetia unterrichtet werden.
## Die Kinder arbeiten im Garten der Schule in Pickens. Frisches Obst und Gemüse ist in West Virginia eine Seltenheit.
Die Einwohner von Helvetia fürchten, dass ihre Heimat verschwindet eine kollektive Todesangst. Selbst die Schule in Pickens ist auf ein kritisches Mass geschrumpft; wenn sie schliesst, wäre dies wohl das Ende des Dorfes. Keine Familie würde mehr hierherziehen, die Gemeinschaft würde irgendwann aussterben und dem postapokalyptischen «Fallout 76»-Helvetia ähneln. Das macht das Game, obwohl es aus einer anderen Welt kommt, für die Leute aus Helvetia zu einer unheimlichen Warnung. Vielleicht klammern sie sich deshalb umso mehr an ihre Traditionen, in der Hoffnung, dass alles beim Alten bleibt.
## Nach dem Raclette singen sie «Gang rüef de Bruune»
Am Abend lädt Dave Whipp zum Raclette. Nach dem Essen und ein paar Gläsern Wein holt Joe McInroy die Gitarre hervor und stimmt alte Schweizerlieder wie «Gang rüef de Bruune» an, mit stark amerikanischem Akzent. Die Texte wurden zwar über die Generationen hinweg überliefert, aber niemand versteht sie mehr. Und so haben sich Abweichungen eingeschlichen. Es ist wie beim Spiel «Stille Post»: Man flüstert der nächsten Generation etwas ins Ohr, die das Gehörte so genau als möglich weitergibt, und trotzdem hat das, was am Ende herauskommt, kaum mehr etwas mit dem Anfang gemein.
## Nach dem Raclette bei Dave Whipp (stehend) singen die Gäste alte Schweizerlieder zur Gitarrenbegleitung von Joe McInroy.
## Im blauen Gebäude befinden sich die Post und der Dorfladen.
Dave Whipp ist so etwas wie der Dorfhistoriker. Seine Führung durch Helvetia beginnt bei einer alten Holzhütte auf einer Wiese. Hier kam die Vorhut der Einwanderer im Spätherbst 1869 an. Vierzehn Männer und eine Frau hatten sich in einer beschwerlichen Reise von New York hierher aufgemacht. Sie bauten diese Blockhütte von etwa drei auf drei Metern, wo sie das erste Jahr in einem einzigen Raum verbrachten. Dann kamen die anderen nach. 1871 lebten 32 Personen hier.
Bald folgten weitere schweizstämmige Einwanderer aus anderen Teilen der USA wie auch aus Kanada, manche kamen sogar direkt aus der Schweiz. Es waren viele qualifizierte Berufsleute unter ihnen: Maurer, Zimmerleute, Maler, Käser, Lehrer, Musiker, Pfarrer, Ärzte, Uhr- und Schuhmacher. Diese Konzentration von verschiedensten Fähigkeiten zog weitere Zuwanderer an, und 1874 war die Bevölkerung schon auf 308 angewachsen. Auf dem Dorffriedhof findet man vertraute Namen: Wenger, Roth, Daetwyler, Arnett, Hofer, Bürki.
## Clara Lehmann kehrte aus Chicago nach Helvetia zurück
Eine der wenigen, die weggingen und zurückkamen, ist Clara Lehmann. Sie wurde in Helvetia geboren. «Aber in meiner Jugend wollte ich bloss weg», sagt die heute 38-Jährige. Sie ging nach Minnesota, studierte Kunst, traf dort ihren Mann Jonathan und zog mit ihm nach Chicago. «Es gefiel mir gut, aber dann passierte etwas Unerwartetes: Ich bekam Heimweh nach Helvetia.»
Sie wagten einen untypischen Schritt. Sie zogen von der Millionenstadt ins Dorf und gründeten eine Videoproduktionsfirma namens Coat of Arms (auf Deutsch: Wappen). Ist es nicht seltsam, ausgerechnet in diesem abgeschiedenen Weiler, wo schon ein Internetanschluss eine Herausforderung darstellt, in so einer modernen Branche mitmischen zu wollen? «Das dachten wir erst auch», sagt Lehmann. «Aber nun stellt sich heraus, dass gerade dieser Peripheriestandort ein Vorteil ist: Das Leben abseits der Metropolen macht uns anders. Durch unsere [überraschenden Zugänge](https://www.viddsee.com/video/called-home/8xs6k) stechen wir aus dem Mainstream heraus.»
## Das Leben fliesst gemächlich dahin wie ein Bach
Einen Polizisten gebe es in Helvetia nicht, sagt Clara. «Bei einem Problem wendet man sich besser an einen Nachbarn, der eine Waffe besitzt. Der nächste Polizeiposten ist eine Stunde entfernt.» Auch medizinische Notfälle sind trotz einer kleinen Krankenstation eine Herausforderung. «Man ruft dann den Ambulanzwagen, fährt ihm aber schon einmal entgegen. Auf halber Strecke übergibt man den Patienten dem Sanitäter.»
## Clara Lehmann arbeitet von Helvetia aus als Videoproduzentin.
## Ein Harmonium und alte Fotos im Restaurant «The Hütte».
Die Abgelegenheit und die winzige Einwohnerzahl haben dazu geführt, dass der Ort von den USA gewissermassen vergessen wurde. Helvetia ist [«unincorporated»,](https://www.rampagelaw.com/blog/2021/11/what-is-the-difference-between-a-town-being-incorporated-or-unincorporated/#:~:text=If%20a%20town%20is%20unincorporated,officials%20at%20the%20town%20level.) das heisst, nicht in die Verwaltung eingegliedert. Negativ gesagt abgehängt, positiv gesagt auf sich gestellt und frei. Einen Gemeindepräsidenten oder eine politische Verwaltung sucht man vergeblich. Einmal wählten die Bewohner zum Spass den Dorfhund Jessie zum Bürgermeister. Die öffentlichen Belange werden durch Klubs geregelt. Ihre Mitglieder sind unbezahlte Freiwillige. Die Bewohner achten darauf, dass niemand zu mächtig wird. Die direkte Demokratie schweizerischer Prägung entwickelte sich hier zu einer Art friedlicher Anarchie. Dazu passt, dass viele Bewohner sich weder als Republikaner noch als Demokraten sehen und bei den Wahlen eher auf die Person und ihr Programm als auf die Parteizugehörigkeit achten.
Während Tagen steht ein Knabe mit seiner Fischerrute am Buckhannon-Bach bei der Dorfbrücke und versucht eine Forelle zu fangen. Es ist offenbar immer dieselbe, er sieht sie herumschwimmen, aber sie will einfach nicht anbeissen. «Ich habe Zeit», sagt er und wartet geduldig. Am gegenüberliegenden Ufer hat eine Frau einen Klappstuhl aufgestellt, badet die Füsse im Wasser und winkt den Vorbeigehenden zu. Der Spa-Bereich von Helvetia.
## Die Brücke führt zum Dorfladen von Helvetia, wo man auch telefonieren kann.
## Vor dem Tanz in der «Star Band Hall».
Aber wer meint, das Leben hier sei monoton und alle Helvetier glichen sich, täuscht sich. Bei näherer Betrachtung stellt sich heraus, dass nicht nur Clara und Jonathan, sondern eigentlich alle «untypisch» sind.
## Der Armeeveteran hütet jetzt die Alphörner
Thrayron Morgan stellt Käse her. «Ich habe das Rezept von meiner Grossmutter», sagt sie. Aber ähnlich wie bei den Liedern haben sich auch hier im Laufe der Überlieferung Abweichungen eingeschlichen. Der Käse ist gut, mit Schweizer Käse hat er allerdings nicht mehr viel gemeinsam. Alle warnten uns davor, zu früh an ihre Türe zu klopfen. Sie ist offenbar als Einzige im Dorf eine Langschläferin. Zusammen mit ihrem Mann hütet sie in ihrem Haus einen der Schätze von Helvetia: die zwei Alphörner. Anlässlich ihrer silbernen Hochzeit gönnten sie sich eine Schweizreise und kauften im Auftrag des Dorfes ein handgefertigtes Alphorn. Es kostete die Gemeinschaft ein Vermögen. Spielen können Thrayron und ihr Mann Russell das Instrument nicht, dafür wartet er mit einer anderen Überraschung auf: «Taler swinging», wie er es nennt. Er holt ein Milchbecken und einen Fünfliber Jahrgang 1968 hervor und lässt ihn kreisen wie ein echter Appenzeller.
## Thrayron Morgan stellt Käse nach Schweizer Tradition her, den ihr Mann Russell portioniert.
## Russell und Thrayron Morgan sind die Wächter der zwei Alphörner im Dorf.
Dabei ist er ein waschechter Amerikaner. Er diente über vierzig Jahre in der US-Army und war in Afghanistan, Honduras und Ägypten stationiert. Dem helvetischen Sog kann sich hier offenbar niemand entziehen. Er trifft sich auch gerne mit Freunden zum Jass. «Vielleicht werden die Traditionen hier sorgsamer gepflegt als in der Schweiz selbst», sagt Thrayron.
In der Nähe wohnt Nancy Gain mit ihrem Mann und den zwei Enkeltöchtern, die gerade die Schafe füttern und die Eier aus dem Hühnerstall holen. Sie zieht einen Bildband über Schweizer Trachten aus dem Gestell. Auf Basis der Fotos und der Beschreibungen schneidert sie mit anderen Frauen zusammen die traditionellen Kleider für die Feste. Am Nachmittag ziehen sich die Mädchen um und treffen sich mit Claras Töchtern in der «Star Band Hall» zum Volkstanz. Weil es an Knaben mangelt, müssen zwei der Mädchen deren Rolle einnehmen.
## Nancy Gain näht auf ihrem Bauernhof Schweizer Trachten, auch für ihre Enkeltöchter.
## Die Töchter von Clara Lehmann und die Enkeltöchter von Nancy Gain vor der «Star Band Hall» in ihren Schweizer Trachten.
## Der Einbruch der Moderne in Form von «Fallout 76»
Die «Fallout 76»-Geschichte begann damit, dass ein Fahrzeug mit einer Kamera auf dem Dach kreuz und quer durch Helvetia fuhr, ohne dass die Bewohner wussten, worum es ging. «Dann tauchten plötzlich seltsame Typen im Restaurant auf, die morbide Fragen stellten nach dem Friedhof, Todesfällen und so», erinnert sich die Filmproduzentin Clara Lehmann. Es stellte sich heraus, dass 2018 das Computergame namens «Fallout 76» auf den Markt gekommen war; es wurde auf Anhieb von etwa 14 Millionen Gamern gespielt, die ihre Figuren durch den Ort bewegen, der bis ins Detail [Helvetia nachgebildet](https://fallout-archive.fandom.com/wiki/Helvetia) ist.
Das führte dazu, dass 2019 zum Höhepunkt des Kalenders in Helvetia, einer Kombination aus Fasnacht und Sechseläuten, massenhaft Gesichter auftauchten, die man hier noch nie gesehen hatte. An diesem Fest tragen die Bewohner selbstgebastelte Pappmaché-Masken und verbrennen eine Puppe, die den Winter symbolisiert. Normalerweise stehen Einheimische und zwei-, dreihundert Besucher aus den umliegenden Orten um das Feuer. Aber dann kamen auf einmal 2000 Personen, vorwiegend «Fallout 76»-Fans. Die Bewohner von Helvetia waren überfordert. Die Gamer trugen zum Teil futuristische Kostüme, die vom Computerspiel inspiriert waren. Sie wollten sogar einen eigenen «Fallout 76»-Umzug durchführen. «Wir diskutierten das Anliegen an einer Gemeindeversammlung», sagt Lehmann. Beim Balanceakt zwischen Bewahrung und Innovation entschieden sie sich gut schweizerisch für einen Kompromiss: «Wir kamen zum Schluss, dass wir eine spezielle Tour für die Gamer anbieten werden, aber den Charakter des Festes und des Dorfes beibehalten wollen.»
## Der Dorfladen mit den Fasnachtsmasken.
## Helvetia ist bekannt für seine Fasnacht und die selbstgefertigten Masken aus Pappmaché.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -13,7 +13,7 @@ CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
Read:: [[2024-02-18]]
---
@ -135,10 +135,6 @@ When I arrived on the set, a castle near Swindon, I was told that Burton was not
I remembered then from my research that he had been a close friend of the great Welsh poet Dylan Thomas, whose poem “And Death Shall Have No Dominion” was one of the few I had committed to memory. So we talked about Thomas and Wales and their friendship. The subject relaxed Burton and he smiled as he began to recite the poem: “Rage, rage, against the dying of the light….” And Richard Burtons remarkable voice, full of energy now, carried that poem across the lawn and up and over the forest. Then, unasked, he began to recite it in Welsh. Then, after a silent time, we talked not about movies or career or fame but about our lives.
## Like this story?
Subscribe to our free newsletter for more great reads in your inbox every Sunday.
I had done my research and knew that he had been born in a small Welsh mining town, the 12th of 13 children, that his mother died shortly afterward, that his older brothers, all miners, vowed to keep him from the mines. I knew that he had been adopted by a teacher named Burton, who saw to his education and that Richard eventually was accepted to Oxford, where he began his promising career on the stage. So I had what I needed for a conventional *TV Guide* article.
When I got back to France and wrote my piece, I could not avoid the fact that Richard Burton was a man who did not have long to live, and I suggested as much at the end of the article. He died a week after it was published.

@ -13,7 +13,7 @@ CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
Read:: [[2024-02-18]]
---
@ -105,8 +105,6 @@ Seeing the imaging process in action drives home both the magic and difficulty i
The files generated by this process are so large and difficult to deal with on a regular computer that Friedman couldnt throw a whole scroll at most would-be contest winners. To be eligible for the $700,000 grand prize, contestants would have until the end of 2023 to read just four passages of at least 140 characters of contiguous text. Along the way, smaller prizes ranging from $1,000 to $100,000 would be awarded for various milestones, such as the first to read letters in a scroll or to build software tools capable of smoothing the image processing. With a nod to his [open-source roots](https://www.bloomberg.com/news/features/2019-11-13/microsoft-apocalypse-proofs-open-source-code-in-an-arctic-cave "Microsoft Apocalypse-Proofs Open Source Code in an Arctic Cave"), Friedman insisted these prizes could be won only if the contestants agreed to show the world how they did it.
An algorithm that can detect tiny amounts of ink on each little piece of a scroll fragment can then combine that data into a unified, legible simulation of how the scroll might have appeared back in 79 A.D. Courtesy: Vesuvius Challenge
![An algorithm that can detect tiny amounts of ink on each little piece of a scroll fragment can then combine that data into a unified, legible simulation of how the scroll might have appeared back in 79 A.D.](https://assets.bwbx.io/images/users/iqjWHBFdfxIU/ica.cFEknKCc/v0/640x-1.jpg)
An algorithm that can detect tiny amounts of ink on each little piece of a scroll fragment can then combine that data into a unified, legible simulation of how the scroll might have appeared back in 79 A.D. Courtesy: Vesuvius Challenge
@ -153,10 +151,6 @@ That world, of course, includes Ercolano, the modern town of about 50,000 built
Barring a mass relocation, Friedman is working to refine what hes got. Theres plenty left to do; the first contest yielded about 5% of one scroll. A new set of contestants, he says, might be able to reach 85%. He also wants to fund the creation of more automated systems that can speed the processes of scanning and digital smoothing. Hes now one of the few living souls whos roamed the villa tunnels, and he says hes also contemplating buying scanners that can be placed right at the villa and used in parallel to scan tons of scrolls per day. “Even if theres just one dialogue of Aristotle or a beautiful lost Homeric poem or a dispatch from a Roman general about this Jesus Christ guy whos roaming around,” he says, “all you need is one of those for the whole thing to be more than worth it.”
*Read next: [A Secretive Hedge Fund Tycoon Is the Worlds Greatest Shipwreck Hunter](https://www.bloomberg.com/features/2023-deep-sea-treasure-hunter-hedge-funds/ "Hedge Fund Tycoon Anthony Clake Doubles as Worlds Top Deep-Sea Treasure Hunter")*
## More On Bloomberg
&emsp;
&emsp;

@ -0,0 +1,142 @@
---
Alias: [""]
Tag: ["🗳️", "🪖", "🇮🇱", "🇵🇸"]
Date: 2024-02-18
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2024-02-18
Link: https://www.nytimes.com/interactive/2024/02/01/magazine/israel-founding-palestinian-conflict.html
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-TheIsraeli-PalestinianConflictandtheLongShadowof1948NSave
&emsp;
# The Israeli-Palestinian Conflict and the Long Shadow of 1948
One year matters more than any other for understanding the Israeli-Palestinian conflict. In 1948, Jews realized their wildly improbable dream of a state, and Palestinians experienced the mass flight and expulsion called [the Nakba,](https://www.nytimes.com/2018/04/18/opinion/israel-independence-palestine-nakba.html) or catastrophe. The events are burned into the collective memories of these two peoples — often in diametrically opposed ways — and continue to shape their trajectories.
If 1948 was the beginning of an era, it was also the end of one — the period following World War I, when the West carved up the Middle East and a series of decisions planted the seeds of conflict. To understand the continuing clashes, we went back to explore the twists and turns that led to 1948. This path could begin at any number of moments; we chose as the starting point 1920, when the [British mandate for Palestine](https://avalon.law.yale.edu/20th_century/palmanda.asp) was established.
The Old City in Jerusalem in the early 1900s.
Matson Photograph Collection, Library of Congress
In the time of the British mandate, Jews and Palestinians, and Western and Arab powers, made fundamental choices that set the groundwork for the suffering and irresolution of today. Along the way, there were many opportunities for events to play out differently. We asked a panel of historians — three Palestinians, two Israelis and a Canadian American — to talk about the decisive moments leading up to the founding of Israel and the displacement of Palestinians and whether a different outcome could have been possible.
*The conversation among the panelists, which took place by video conference* *on Jan. 3, has been edited and condensed for clarity, with some material reordered or added from follow-up interviews.*
## Part I: What Was the British Mandate?
The mandate for Palestine, written in 1920, stood out for its international commitment to “the establishment in Palestine of a national home for the Jewish people.”
Its the mandate that creates the political entity called Palestine. Before that, it was a geographic term. And the conflict between Zionism and Palestinian Arab nationalism was over the question of what would be the nature of this entity — an Arab state, a Jewish state, a binational state or partition?
In 1920, we speak about Jews and Arabs. Its only in 1948 that the Arabs become Palestinians and the Jews become Israelis.
And of course, all of this falls short of actually giving the Palestinians national and territorial rights.
## Part II: Revolt
In 1929, Palestinians rebelled. Violence first broke out over control of the holy sites in Jerusalem and spread to cities including Hebron and Safed, where Arabs massacred Jews. As Palestinian uprisings continued for a decade, the main sources of tension became the mandate policies that allowed for increasing Jewish immigration and land purchases. The mounting frustration among Palestinian farmers and laborers pressured elite nationalist leaders to finally challenge British rule directly.
Amid the violence, Sephardic Jews, who had often been critical of Zionism for dividing Jews from Arabs, moved toward the Zionists, drawn by the need for self-defense against Arabs who had begun attacking them. As the Nazis took power, meanwhile, rising antisemitism in Europe spurred the mass flight of Jews and the Zionist call to gather them in Palestine. As Jewish immigration rose, so did Palestinian opposition to it.
But there were also rumors that Jews were attempting to buy up the Temple Mount and would even destroy it. This notion that al-Aqsa is in danger — a slogan we still hear — goes back to this time. For years, stories circulated about pictures of the Dome of the Rock with a menorah or a Star of David above it. Muslims thought this meant that the Jews were planning to take over the Temple Mount. Its true that there were attempts by Jews to purchase land in the Western Wall compound, though not to acquire the Temple Mount. The whole thing failed. But the point is the combination of religious and nationalist sentiments. One cannot separate the two.
The Zionists also had a principle of hiring Hebrew labor, at the exclusion of Arab labor. The idea that Jews would work the land was central to a new Jewish identity different from the intellectual or businessman of the diaspora. The Zionists also didnt want to be the colonial masters of the Palestinians by employing them. In order to “not exploit the Arabs,” they expelled them from the land, and that of course led to immediate clashes with the farmers.
Often, we think about the history of the mandate through points of violence. Its also important to remember that there were peaceful periods in between those moments when people shopped together, sat in cafes, lived alongside each other.
The Zionists split over the proposal. Some said that a small state in part of Palestine would be constantly beleaguered and at war. More pragmatic Zionists accepted partition in principle but rejected the Peel Commissions proposed boundaries because they made the Jewish state so small.
Palestinians rejected partition out of hand as a theft of Palestinian land and demanded that Palestine as a whole become an Arab state.
Following the revolt, the Jews who were native to the Middle East went through a major shift, too. Some of the younger generation, for example, raised in the shadow of violence, now tried to position themselves as loyal to the Zionist movement and were recruited to do intelligence work for the Jewish paramilitary forces. They start using their common cultural identity and their language skills in Arabic for purposes of security.
This process continued into the 1940s during the Second World War. The British, who have a long history of getting colonials to do their fighting for them, were quite happy to accept Jews into the ranks of the British Armed Forces. There were a fair number of Palestinians who joined as well — between 9,000 and 12,000 Palestinians fought for the Allied forces in World War II. The number of Jews from Palestine was about 30,000. Many Jews became lower-level officers during World War II, and they brought their new military expertise to the 1948 war.
## Part III: The Path to Partition
During the first couple of years of the war, the Jews of Palestine were absolutely terrified as the German forces marched across North Africa. We cant understand the period of the Holocaust in Europe without also understanding the Jews sense of imminent destruction in Palestine. David Ben-Gurion, the chief Zionist leader in Palestine, said, “We shall fight in the [war against Hitler as if there were no white paper,](https://www.nytimes.com/1973/12/02/archives/bengurion-symbol-of-the-tough-state-of-israel-achieved-a-lifelong.html) but we shall fight the white paper as if there were no war.”
In May 1942, Zionists held an emergency meeting in New York City at the Biltmore Hotel. A few months later, the scale of the Nazi genocide became clear. The reaction was public mourning and despair.
There were still hundreds of thousands of Jewish Holocaust survivors in Europe who needed a home. But the focus also grew to include the persecution of Jews in Middle Eastern countries. There were about a million of them, and their situation was also precarious. In other words, the Zionists retooled.
## Part IV: The U.N. Plan
In February 1947, the government announced that it wanted to end the mandate, submitting what it called [“the problem of Palestine” to the United Nations,](https://ismi.emory.edu/resources/primary-source-docs/1948%20-%20PALESTINE-HMG%20termination%20of%20Mandate%201948.pdf) established two years earlier as the successor to the League of Nations. The U.N. set up the Special Committee on Palestine (UNSCOP), asking it to recommend a solution. The future of the land and its peoples — at this point, about 600,000 Jews and 1.2 million Palestinians — was back in international hands.
Yet the world sees this as an acceptable equation. Orientalism and colonial ideology were very much at the heart of thinking that while we Europeans and the U.S. were part of this massive human tragedy, we are going to fix it at the expense of someone else. And the someone else is not important because theyre Arabs, theyre Palestinians and thus constructed as backward, as not important, as people who do not have rights, as people whose catastrophe subsequently becomes insignificant.
It is important to highlight that this narrative is structured precisely by the rejection of Palestinian humanity that continues to be a part of the discourse in some circles today.
The United Nations partition plan, 1947.
United Nations
A small minority of Jews who left the displaced-persons camps for Israel tried very hard to get to the U.S. But the dominant sentiment of the refugees was in favor of the creation of a Jewish state. One did not have to be ideologically Zionist to feel this way. As one friend of mine who lost her parents in the Holocaust told me, after the war many Jewish survivors simply wanted to live with other Jews.
UNSCOP considered it to be the least bad option. They did the best they could under terrible circumstances.
## Part V: The Legacy of 1948
On May 14, 1948, Israel declared itself a state. The next day, the British began leaving, and Egypt, Syria, Lebanon and Iraq attacked the new state, later joined by Jordan. The internal battle between Israelis and Palestinians became a regional war. Israel fought for its survival, and the Arab countries said they were fighting to liberate Palestine. But they did not effectively deliver on their promises of military and economic support to the Palestinians.
But in fact, nobody fought well in 1948. The Arab states, for the most part, could not field effective armies. Jordan had a good army, but that was about it. The Zionist forces were not well armed. They were not that well trained.
Early in the war, the Palestinians actually had the upper hand. In the winter of 1948, they controlled the roads and rural areas. All the more so when the Arab-state armies invaded in May. The first month of fighting was very difficult for Israel, and it wasnt clear they were going to survive.
The rest of the war was very much in Israels hands. But theres a difference between understanding how Israel was able to win the war and arguing that that victory was inevitable. It wasnt.
But when war broke out in 1948, he saw his chance to occupy Jerusalem and parts of the West Bank so he could extend his emirate in the desert into a real kingdom.
The Egyptians were determined to deny that. At some point, an Egyptian military column moves north from Egypt through the Gaza Strip to 30 kilometers south of Tel Aviv in Ashdod. In military terms, they should have proceeded toward Tel Aviv. Instead, they take a right and go in the direction of Jerusalem, because they are worried that Abdullah, their rival in Arab politics, could take over. When you analyze the reasons for the Israeli success and the Palestinian Arab failure in the war, inter-Arab politics played a major role.
In other words, war, flights and expulsions transformed the demographics of Israel. What were the arguments about a Palestinian right to return after the war?
Theres a similar dynamic now in the war in Gaza, on both sides. Israel depends on the United States, and Hamas is funded by Qatar and Iran. To the extent that we can imagine roads not taken or roads to take in the future, we have to think of the Israeli-Palestinian conflict much more globally and less regionally.
The Panelists:
Nadim Bawalsa is a historian of modern Palestine and the author of the 2022 book “Transnational Palestine: Migration and the Right of Return Before 1948.” He is the associate editor for The Journal of Palestine Studies.
Leena Dallasheh is a historian of Palestine and Israel who has held academic positions at Columbia University, New York University and Rice University. She is working on a book about the city of Nazareth in the 1940s and 1950s.
Abigail Jacobson is a historian in the department of Islamic and Middle Eastern studies at the Hebrew University of Jerusalem. Her latest book, written with Moshe Naor, is “Oriental Neighbors: Middle Eastern Jews and Arabs in Mandatory Palestine.”
Derek Penslar is a professor of Jewish history and the director of the Center for Jewish Studies at Harvard University. His latest book is “Zionism: An Emotional State.”
Itamar Rabinovich is a history professor and emeritus president at Tel Aviv University. His books include “The Road Not Taken: Early Arab-Israeli Negotiations.” He was the Israeli ambassador to the United States from 1993 to 1996.
Salim Tamari is a sociologist at Birzeit University in the West Bank and a research associate at the Institute for Palestine Studies. His latest book is “The Great War and the Remaking of Palestine.”
Emily Bazelon, a staff writer for The New York Times Magazine, moderated the discussion.
Top image: In the war that followed Israels declaration of independence as a Jewish state, Arab forces attacked the Old City of Jerusalem on June 15, 1948. Photograph by John Phillips/The LIFE Picture Collection/Shutterstock
ANNOTATION PHOTOGRAPHS: Herzl: Ullstein Bild, via Getty Images; Faisal Al-Hashemi: James Russell & Sons/Bain Collection/Library of Congress; al-Husseini: Matson Photograph Collection, Library of Congress; Jabotinsky: National Photo Collection of Israel/GPO; Ben-Gurion: Abraham Pisarek/Ullstein Bild, via Getty Images; Weizmann: General Photographic Agency/Getty Images; Hitler and al-Husseini: Heinrich Hoffmann/Ullstein Bild, via Getty Images;al-Khalidi: Matson Photograph Collection, Library of Congress; Abd al-Qadir al-Husseini: Palestinian Academic Society for the Study of International Affairs.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -0,0 +1,79 @@
---
Alias: [""]
Tag: ["🤵🏻", "🇳🇱"]
Date: 2024-02-18
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2024-02-18
Link: https://www.theguardian.com/lifeandstyle/2024/feb/07/the-art-of-doing-nothing-have-the-dutch-found-the-answer-to-burnout-culture
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: [[2024-02-22]]
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-TheartofdoingnothingNSave
&emsp;
# The art of doing nothing: have the Dutch found the answer to burnout culture?
I am standing on the sand at Scheveningen, The Hagues most famous beach resort, in the act of *niksen*, the Dutch term for doing absolutely nothing. I try not to think about whether I am really doing nothing if I am standing on a beach. Maybe I should be sitting down? But then I would be sitting down. How do you niksen *properly*? Being effortlessly aimless next to me is Olga Mecking, the author of Niksen: Embracing the Dutch Art of Doing Nothing. In the three years since the book was published, she has become the Netherlands go-to authority on doing sod all. I suddenly remember there is a pancake house back on the promenade. Does eating pancakes count as doing nothing, or is it too much like doing something? Maybe I am not cut out for niksen.
Its very common, says Mecking, to struggle to define niksen. “The definition I use in the book is: to do nothing, without a purpose. Not watching a movie, not scrolling social media, not reading emails. We always have in mind some kind of outcome. When we prepare meals, we think, This meal will help me lose weight or will make me healthier. If we go for a walk, it has to be part of our 10,000 steps. So we lose that fun of just eating or just walking. So its about letting go of the outcome.”
I like this. I am ready to let go of the outcome. “It wasnt easy to find a definition,” she adds. “I found any strict definition would make people feel guilty. So many people tell me they feel guilty because they cant succeed in doing nothing.” And here she has defined exactly why there is a global market for her book.
A journalist and parenting blogger (she has three children), Mecking is married to a German and lives in The Hague. Although she speaks Dutch fluently, she is Polish. She first encountered the expression niksen in a free supermarket magazine in 2018. She was intrigued that there was no similar verb in any other language she knew. She pitched niksen to the New York Times. When the article [The Case for Doing Nothing](https://www.nytimes.com/2019/04/29/smarter-living/the-case-for-doing-nothing.html) was published in 2019, it went viral. Within weeks, she had a publishing deal. The book, designed to sit alongside books on *hygge* (the Danish art of cosiness) and *fika* (the Swedish art of the coffee break), came out just as the Netherlands went into its first hard lockdown in late 2020. A typical Amazon review from that year? “Perfect reading if you are struggling with pandemic-related stress.”
![The author Olga Mecking in The Hague.](https://i.guim.co.uk/img/media/b5cf67446730135679ca65be31eb29b2353ff7a0/0_0_6720_4480/master/6720.jpg?width=445&dpr=1&s=none)
The author Olga Mecking in The Hague. Photograph: Judith Jockel/The Guardian
After the pandemic, the cult of niksen lives on. Last month, David Lloyd Leisure which has more than 100 fitness clubs in the UK announced it was launching [niksen classes](https://blog.davidlloyd.co.uk/what-is-niksen/) to help people “release tension”. The [announcement quoted Jan de Jonge](https://www.davidlloyd.co.uk/david-lloyd-leisure-press/niksen-january-campaign), a Dutch psychologist and “niksen expert”. “Wellness is so important in our hectic lives, and the Dutch, with their reputation of being laid-back and easy-going, like to niksen after a stressful days work.” Over on X, he does add that niksen [is not an inherently Dutch](https://twitter.com/jandjonge/status/1149741064414269445) lifestyle, more a reaction to modern living.
There are yet more niksen books from more people who clearly dont want to take their own advice and do nothing. Niksen: The Dutch Art of Doing Nothing by Annette Lavrijsen. The Lost Art of Doing Nothing: How the Dutch Unwind with Niksen by Maartje Willems and Lona Aalders. Niksen: The Power of Doing Nothing by Tess Jansen. A Dutch Guide to Niksen by Johanna van Elp.
But just how Dutch is doing nothing, really? And how did the word originate? “Niksen is a media concept, like Blue Monday,” says Ruut Veenhoven, an emeritus professor of social conditions for human happiness at Erasmus University Rotterdam. Blue Monday, the third Monday of January, was once thought to have been “calculated” to be “the most depressing day of the year”. It later emerged that the concept was dreamed up by a travel company. Niksen is not quite the same: no one is reminding you to book a package holiday. And Dutch people really do use the verb. Veenhoven admits that the amount of interest in the idea of niksen is telling. “We are typically the most happy when we are active. And in modern society there are lots of nice things to do. As a result, we do a lot. The pace of life is higher than in non-western societies and the level of life satisfaction is also high and keeps rising. And yet … A side-effect is that we get into time pressure. And we dream of more relaxation.” Niksen gives us what we crave: an explanation for whats missing the presence of nothing in our lives.
Meckings book has now been translated into 13 languages and the French are particularly keen on it. (“*Lart de ne remplir aucun objectif* …” sighs French Cosmopolitan translated as “The art of not having to fulfil any objective …”) But just because niksen originated in the Netherlands does not mean the Dutch are particularly good at it. “Niksen seems to be considered as a concept in the whole world, except in the Netherlands,” says Carolien Hamming, the founder and CEO of CSR Centrum, a centre for research into stress and resilience just south of Utrecht. “It has nothing to do with our culture. On the contrary, were Calvinists and tell each other to work harder.”
Mecking interviewed Hamming when she was first researching niksen and Hamming told her that the Dutch are not good at doing nothing. “We are raised with the belief that we must always be useful and helpful. Niksen is the devil from whom comes nothing good.” She doesnt blame anyone for being interested in the idea, though, when stress and depression are on the rise. “Our brains are overloaded; we dont know how to do nothing.”
When I asked Dutch friends to comment on the meaning of niksen, they said they knew the word but didnt feel they had any explanation as to what was Dutch about it. But they also made jokes: “Sorry, Im too busy doing nothing to answer.” Mecking herself says that by the time she started writing her book on niksen, another publisher had commissioned another author to write on the same topic. The race was on, and her deadline was pulled forward. Hardly in the spirit of niksen.
And Hamming is right: its not a quintessentially Dutch idea. I couldnt find any record of use of niksen in the Dutch language before the late 2010s. It is usually categorised as a reaction to relentless work culture which, as dictionary definitions go, seems curiously specific and suggests a recent coinage. I somehow dont feel it would have been in the vocabulary of the great Dutch artists Vermeer, Rembrandt or Van Gogh, who all argued for the relentless pursuit of intense activity. It is peculiar, though, that this unusual verb (“to nothing”) surfaced in a country that generally regards itself as Calvinist and atheist. Like Hamming, Dutch friends all mumble about Calvinism when I bring up niksen: this branch of 16th-century Protestantism was fervently embraced in the Netherlands. And John Calvins values of hard work, frugality, self-discipline and “straightforwardness” are still highly evident.
Take the Dutch approach to window blinds and curtains. They dont use them. When I was walking around The Hague attempting to nonchalantly do nothing, I found it odd that whether people were doing nothing or not, you can see straight into their houses. Openness, too, is a Calvinist hangover: “Look at me. I have nothing to hide.” It is a fascinatingly contradictory cultural impulse: be buttoned-up and follow the rules at all times but also be completely transparent. Its a weird mix of being required to be regimented but also laid-back at the same time. No wonder you might want to introduce niksen into that mix, to give yourself a break. And no wonder niksen feels “not Dutch” but also somehow belongs here.
Perhaps because of the inherent tensions of the Calvinist past, the topic of “burnout” is prevalent in the Netherlands. Last year, a wellbeing study by a health insurance company was widely cited in the Dutch press. The [Cigna Healthcare Vitality Study](https://www.cignaglobal.com/blog/thought-leadership/cigna-healthcare-vitality-study-2023) was based on 10,000 respondents in 12 markets across the world, including the US, Kenya, China and five European countries. The Netherlands came out top. Even though 90% of Dutch employees say they are burnt out, with 27% of people feeling tired and drained as a result, they were still the least stressed of all employees in the study. Although 64% of Dutch respondents experienced stress, this was significantly lower than Belgium, where the figure was 81%. Ruud Wassen, the chief marketing officer of Cigna, who is also Dutch, explains that stress levels are high across Europe after the pandemic and the Netherlands is consistent with that. However, “Dutch employees experience relatively less stress when it comes to worries about the cost of living, personal finances and uncertainty about the future.” When it comes to the main reason for the stress, though, the Netherlands is just the same as everywhere else, he says. “Too much work.”
![Groskop and Mecking.](https://i.guim.co.uk/img/media/9ad47fa616778444a08c648fc23e5aa0b89a78cd/0_0_6720_4480/master/6720.jpg?width=445&dpr=1&s=none)
Groskop and Mecking. Photograph: Judith Jockel/The Guardian
“Burnout is not a uniquely Dutch phenomenon, but it is a growing problem in the Netherlands,” says Roel Fransen, a human resources manager at Oval, a company promoting workplace engagement based in Tilburg. A [2023 study](https://nltimes.nl/2023/11/13/one-five-workers-netherlands-struggling-burnout-symptoms-study#:~:text=One%20in%20five%20workers%20suffers,13%20to%2017%2C%20on%20Monday) by the Dutch not-for-profit research organisation TNO found that one in five workers in the Netherlands suffers from symptoms of burnout. “This is a significant increase from previous years,” says Fransen. “And it is thought to be due to a number of factors, including the increasing demands of work, the rise of the gig economy and changing attitudes towards work-life balance.”
So its not that the Dutch have the highest rates of burnout globally their rates are lower than most. Its that the very idea of burnout really stresses them out. “There are a number of responses to burnout that seem rooted in Dutch culture,” says Fransen. “For example, the Dutch have a strong sense of social solidarity, and this can help to reduce the stigma associated with burnout. The Dutch are often very ambitious, and many of us put a lot of pressure on ourselves to succeed. Dutch people may also be reluctant to take time off from work, even when sick. Additionally, the Dutch culture of *gezelligheid* (conviviality) can sometimes lead to social pressure to attend everything while trying to keep up with work and neglecting your own needs.” See what I mean about contradictory? Dont stigmatise anything. Push yourself. Dont take time off work. Attend all social gatherings and be convivial at them. Keep your curtains open at all times. It does sound to me that it is incredibly draining to be successfully Dutch.
What niksen most strongly illustrates, though, is the pull towards philosophies that come from other countries. We live in an age where many of us can do almost anything we want, more so than at any other time in history. But it turns out what we really want is for someone who knows what theyre doing to make it OK for us to follow our instincts. Hygge is a real thing and the Danish arguably do it best. But they do not have the monopoly on cosiness or candlelight. Fika is a beautiful tradition. But Sweden is not the only place in the world where you can eat cake and drink coffee. Similarly, you dont need to be Dutch or know the word niksen to do nothing, you can just … do it. And theres no way of doing nothing the wrong way. Completely predictably, I discovered that my definition of nothing is pannenkoeken (pancakes) after all.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -0,0 +1,100 @@
---
Alias: [""]
Tag: ["📟", "🌐", "🤖"]
Date: 2024-02-18
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2024-02-18
Link: https://www.theverge.com/24067997/robots-txt-ai-text-file-web-crawlers-spiders
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: [[2024-02-19]]
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-TheriseandfallofrobotstxtNSave
&emsp;
# The rise and fall of robots.txt
For three decades, a tiny text file has kept the internet from chaos. This text file has no particular legal or technical authority, and its not even particularly complicated. It represents a handshake deal between some of the earliest pioneers of the internet to respect each others wishes and build the internet in a way that benefitted everybody. Its a mini constitution for the internet, written in code. 
Its called robots.txt and is usually located at yourwebsite.com/robots.txt. That file allows anyone who runs a website — big or small, cooking blog or multinational corporation — to tell the web whos allowed in and who isnt. Which search engines can index your site? What archival projects can grab a version of your page and save it? Can competitors keep tabs on your pages for their own files? You get to decide and declare that to the web.
Its not a perfect system, but it works. Used to, anyway. For decades, the main focus of robots.txt was on search engines; youd let them scrape your site and in exchange theyd promise to send people back to you. Now AI has changed the equation: companies around the web are using your site and its data to build massive sets of training data, in order to build models and products that may not acknowledge your existence at all. 
The robots.txt file governs a give and take; AI feels to many like all take and no give. But theres now so much money in AI, and the technological state of the art is changing so fast that many site owners cant keep up. And the fundamental agreement behind robots.txt, and the web as a whole — which for so long amounted to “everybody just be cool” — may not be able to keep up either.
In the early days of the internet, robots went by many names: spiders, crawlers, worms, WebAnts, web crawlers. Most of the time, they were built with good intentions. Usually it was a developer trying to build a directory of cool new websites, make sure their own site was working properly, or build a research database — this was 1993 or so, long before search engines were everywhere and in the days when you could fit most of the internet on your computers hard drive. 
The only real problem then was the traffic: accessing the internet was slow and expensive both for the person seeing a website and the one hosting it. If you hosted your website on your computer, as many people did, or on hastily constructed server software run through your home internet connection, all it took was a few robots overzealously downloading your pages for things to break and the phone bill to spike. 
Over the course of a few months in 1994, a software engineer and developer named Martijn Koster, along with a group of other web administrators and developers, came up with a solution they called the Robots Exclusion Protocol. The proposal was straightforward enough: it asked web developers to add a plain-text file to their domain specifying which robots were not allowed to scour their site, or listing pages that are off limits to all robots. (Again, this was a time when you could maintain a list of every single robot in existence — Koster and a few others helpfully did just that.) For robot makers, the deal was even simpler: respect the wishes of the text file. 
From the beginning, Koster made clear that he didnt hate robots, nor did he intend to get rid of them. “Robots are one of the few aspects of the web that cause operational problems and cause people grief,” he said in an initial email to a mailing list called WWW-Talk (which included early-internet pioneers like Tim Berners-Lee and Marc Andreessen) in early 1994. “At the same time they do provide useful services.” Koster cautioned against arguing about whether robots are good or bad — because it doesnt matter, theyre here and not going away. He was simply trying to design a system that might “minimise the problems and may well maximize the benefits.” 
“Robots are one of the few aspects of the web that cause operational problems and cause people grief. At the same time, they do provide useful services.”
By the summer of that year, his proposal had become a standard — not an official one, but more or less a universally accepted one. Koster pinged the WWW-Talk group again in June with an update. “In short it is a method of guiding robots away from certain areas in a Web servers URL space, by providing a simple text file on the server,” he wrote. “This is especially handy if you have large archives, CGI scripts with massive URL subtrees, temporary information, or you simply dont want to serve robots.” Hed set up a topic-specific mailing list, where its members had agreed on some basic syntax and structure for those text files, changed the files name from RobotsNotWanted.txt to a simple robots.txt, and pretty much all agreed to support it.
And for most of the next 30 years, that worked pretty well. 
But the internet doesnt fit on a hard drive anymore, and the robots are vastly more powerful. Google uses them to crawl and index the entire web for its search engine, which has become the interface to the web and brings the company billions of dollars a year. Bings crawlers do the same, and Microsoft licenses its database to other search engines and companies. The Internet Archive uses a crawler to store webpages for posterity. Amazons crawlers traipse the web looking for product information, and according to a recent antitrust suit, the company uses that information to punish sellers who offer better deals away from Amazon. AI companies like OpenAI are crawling the web in order to train large language models that could once again fundamentally change the way we access and share information. 
The ability to download, store, organize, and query the modern internet gives any company or developer something like the worlds accumulated knowledge to work with. In the last year or so, the rise of AI products like ChatGPT, and the large language models underlying them, have made high-quality training data one of the internets most valuable commodities. That has caused internet providers of all sorts to reconsider the value of the data on their servers, and rethink who gets access to what. Being too permissive can bleed your website of all its value; being too restrictive can make you invisible. And you have to keep making that choice with new companies, new partners, and new stakes all the time.
There are a few breeds of internet robot. You might build a totally innocent one to crawl around and make sure all your on-page links still lead to other live pages; you might send a much sketchier one around the web harvesting every email address or phone number you can find. But the most common one, and the most currently controversial, is a simple web crawler. Its job is to find, and download, as much of the internet as it possibly can.
Web crawlers are generally fairly simple. They start on a well-known website, like cnn.com or wikipedia.org or health.gov. (If youre running a general search engine, youll start with lots of high-quality domains across various subjects; if all you care about is sports or cars, youll just start with car sites.) The crawler downloads that first page and stores it somewhere, then automatically clicks on every link on that page, downloads all those, clicks all the links on every one, and spreads around the web that way. With enough time and enough computing resources, a crawler will eventually find and download billions of webpages. 
The tradeoff is fairly straightforward: if Google can crawl your page, it can index it and show it in search results.
Google estimated in 2019 that more than 500 million websites had a robots.txt page dictating whether and what these crawlers are allowed to access. The structure of those pages is usually roughly the same: it names a “User-agent,” which refers to the name a crawler uses when it identifies itself to a server. Googles agent is Googlebot; Amazons is Amazonbot; Bings is Bingbot; OpenAIs is GPTBot. Pinterest, LinkedIn, Twitter, and many other sites and services have bots of their own, not all of which get mentioned on every page. ([Wikipedia](https://en.wikipedia.org/robots.txt) and [Facebook](https://facebook.com/robots.txt) are two platforms with particularly thorough robot accounting.) Underneath, the robots.txt page lists sections or pages of the site that a given agent is not allowed to access, along with specific exceptions that are allowed. If the line just reads “Disallow: /” the crawler is not welcome at all.
Its been a while since “overloaded servers” were a real concern for most people. “Nowadays, its usually less about the resources that are used on the website and more about personal preferences,” says John Mueller, a search advocate at Google. “What do you want to have crawled and indexed and whatnot?”
The biggest question most website owners historically had to answer was whether to allow Googlebot to crawl their site. The tradeoff is fairly straightforward: if Google can crawl your page, it can index it and show it in search results. Any page you want to be Googleable, Googlebot needs to see. (How and where Google actually displays that page in search results is of course a completely different story.) The question is whether youre willing to let Google eat some of your bandwidth and download a copy of your site in exchange for the visibility that comes with search.
For most websites, this was an easy trade. “Google is our most important spider,” says Medium CEO Tony Stubblebine. Google gets to download all of Mediums pages, “and in exchange we get a significant amount of traffic. Its win-win. Everyone thinks that.” This is the bargain Google made with the internet as a whole, to funnel traffic to other websites while selling ads against the search results. And Google has, by all accounts, been a good citizen of robots.txt. “Pretty much all of the well-known search engines comply with it,” Googles Mueller says. “Theyre happy to be able to crawl the web, but they dont want to annoy people with it… it just makes life easier for everyone.”
In the last year or so, though, the rise of AI has upended that equation. For many publishers and platforms, having their data crawled for training data felt less like trading and more like stealing. “What we found pretty quickly with the AI companies,” Stubblebine says, “is not only was it not an exchange of value, were getting nothing in return. Literally zero.” When Stubblebine announced last fall that Medium [would be blocking AI crawlers](https://blog.medium.com/default-no-to-ai-training-on-your-stories-abb5b4589c8), he wrote that “AI companies have leached value from writers in order to spam Internet readers.” 
Over the last year, a large chunk of the media industry has echoed Stubblebines sentiment. “We do not believe the current scraping of BBC data without our permission in order to train Gen AI models is in the public interest,” BBC director of nations Rhodri Talfan Davies [wrote last fall](https://www.bbc.co.uk/mediacentre/articles/2023/generative-ai-at-the-bbc/), announcing that the BBC would also be blocking OpenAIs crawler. *The New York Times* blocked GPTBot as well, months before launching a suit against OpenAI alleging that OpenAIs models “were built by copying and using millions of *The Times*s copyrighted news articles, in-depth investigations, opinion pieces, reviews, how-to guides, and more.” [A study by Ben Welsh](https://palewi.re/docs/news-homepages/openai-gptbot-robotstxt.html), the news applications editor at *Reuters*, found that 606 of 1,156 surveyed publishers had blocked GPTBot in their robots.txt file. 
Its not just publishers, either. Amazon, Facebook, Pinterest, WikiHow, WebMD, and many other platforms explicitly block GPTBot from accessing some or all of their websites. On most of these robots.txt pages, OpenAIs GPTBot is the only crawler explicitly and completely disallowed. But there are plenty of other AI-specific bots beginning to crawl the web, like Anthropics anthropic-ai and Googles new Google-Extended. According to a study from last fall by Originality.AI, 306 of the top 1,000 sites on the web blocked GPTBot, but only 85 blocked Google-Extended and 28 blocked anthropic-ai. 
There are also crawlers used for both web search and AI. CCBot, which is run by the organization Common Crawl, scours the web for search engine purposes, but its data is also used by OpenAI, Google, and others to train their models. Microsofts Bingbot is both a search crawler and an AI crawler. And those are just the crawlers that identify themselves — many others attempt to operate in relative secrecy, making it hard to stop or even find them in a sea of other web traffic. For any sufficiently popular website, finding a sneaky crawler is needle-in-haystack stuff.
In large part, GPTBot has become the main villain of robots.txt because OpenAI allowed it to happen. The company published and promoted a page about how to block GPTBot and built its crawler to loudly identify itself every time it approaches a website. Of course, it did all of this *after* training the underlying models that have made it so powerful, and only once it became an important part of the tech ecosystem. But OpenAIs chief strategy officer Jason Kwon says thats sort of the point. “We are a player in an ecosystem,” he says. “If you want to participate in this ecosystem in a way that is open, then this is the reciprocal trade that everybodys interested in.” Without this trade, he says, the web begins to retract, to close — and thats bad for OpenAI and everyone. “We do all this so the web can stay open.”
By default, the Robots Exclusion Protocol has always been permissive. It believes, as Koster did 30 years ago, that most robots are good and are made by good people, and thus allows them by default. That was, by and large, the right call. “I think the internet is fundamentally a social creature,” OpenAIs Kwon says, “and this handshake that has persisted over many decades seems to have worked.” OpenAIs role in keeping that agreement, he says, includes keeping ChatGPT free to most users — thus delivering that value back — and respecting the rules of the robots. 
But robots.txt is not a legal document — and 30 years after its creation, it still relies on the good will of all parties involved. Disallowing a bot on your robots.txt page is like putting up a “No Girls Allowed” sign on your treehouse — it sends a message, but its not going to stand up in court. Any crawler that wants to ignore robots.txt can simply do so, with little fear of repercussions. (There is some legal precedent around web scraping in general, though even that can be complicated and mostly lands on crawling and scraping being allowed.) The Internet Archive, for example, simply announced in 2017 that it was no longer abiding by the rules of robots.txt. “Over time we have observed that the robots.txt files that are geared toward search engine crawlers do not necessarily serve our archival purposes,” Mark Graham, the director of the Internet Archives Wayback Machine, [wrote at the time](https://blog.archive.org/2017/04/17/robots-txt-meant-for-search-engines-dont-work-well-for-web-archives/). And that was that.
As the AI companies continue to multiply, and their crawlers grow more unscrupulous, anyone wanting to sit out or wait out the AI takeover has to take on an endless game of whac-a-mole. They have to stop each robot and crawler individually, if thats even possible, while also reckoning with the side effects. If AI is in fact the future of search, as Google and others have predicted, blocking AI crawlers could be a short-term win but a long-term disaster. 
There are people on both sides who believe we need better, stronger, more rigid tools for managing crawlers. They argue that theres too much money at stake, and too many new and unregulated use cases, to rely on everyone just agreeing to do the right thing. “Though many actors have some rules self-governing their use of crawlers,” two tech-focused attorneys wrote in [a 2019 paper](https://digitalcommons.law.uw.edu/wjlta/vol13/iss3/4/) on the legality of web crawlers, “the rules as a whole are too weak, and holding them accountable is too difficult.”
Some publishers would like more detailed controls over both what is crawled and what its used for, instead of robots.txts blanket yes-or-no permissions. Google, which a few years ago made an effort to make the Robots Exclusion Protocol an official formalized standard, has also pushed to deemphasize robots.txt on the grounds that its an old standard and too many sites dont pay attention to it. “We recognize that existing web publisher controls were developed before new AI and research use cases,” Googles VP of trust Danielle Romain [wrote last year](https://blog.google/technology/ai/ai-web-publisher-controls-sign-up/). “We believe its time for the web and AI communities to explore additional machine-readable means for web publisher choice and control for emerging AI and research use cases.” 
Even as AI companies face regulatory and legal questions over how they build and train their models, those models continue to improve and new companies seem to start every day. Websites large and small are faced with a decision: submit to the AI revolution or stand their ground against it. For those that choose to opt out, their most powerful weapon is an agreement made three decades ago by some of the webs earliest and most optimistic true believers. They believed that the internet was a good place, filled with good people, who above all wanted the internet to be a good thing. In that world, and on that internet, explaining your wishes in a text file was governance enough. Now, as AI stands to reshape the culture and economy of the internet all over again, a humble plain-text file is starting to look a little old-fashioned.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -0,0 +1,171 @@
---
Alias: [""]
Tag: ["📈", "🇺🇸", "👰"]
Date: 2024-02-18
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2024-02-18
Link: https://thehustle.co/the-surreal-life-of-a-professional-bridesmaid/amp/
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-ThesurreallifeofaprofessionalbridesmaidNSave
&emsp;
# The surreal life of a professional bridesmaid - The Hustle
Jen Glantz sat in her Manhattan apartment on a Friday night with a bottle of two-buck chuck, a keyboard, and years worth of frustration. 
Shed just hung up with two friends. *Were they friends?* She wondered. Neither had been in touch for years, but they came to her with the same request: Would she be their bridesmaid? 
She was 26, and shed been a bridesmaid at least six times. For some friends, the role cost **$700**, for others **$2k**. Shed dipped into her savings, borrowed money from her parents to cover the costs. 
When she vented to her roommate, she responded, “They ask you because youre so good at it, you could be a professional.” 
![](https://thehustle.co/wp-content/uploads/2024/02/eKKl99-g-scaled.jpeg)*After a long night of bridesmaid-ing for a friend in her early 20s, Glantz puts her feet up. (Provided by Jen Glantz)*
Glantz stared at the dregs pooling at the bottom of the wine bottle beside her. 
She typed out an ad on Craigslist: “Professional bridesmaid w4w 26 (NYC). Let me be there for you, this time, if: you dont have any other girlfriends except your third cousin, twice removed, who is often found sticking her tongue down an empty bottle of red wine,” she wrote. “You need someone to take control and make sure bridesmaid #4 buys her dress on time and doesnt show up 3 hours late.” 
And then she went to bed.
*The Craigslist ad that kick-started Bridesmaid for Hire. (Provided by Jen Glantz)*
The emails poured in. Hundreds of notes from brides in need. Interview requests from reporters whod seen the ad. Marriage proposals of her own. 
In the ten years since that hazy night, Glantz has parlayed what began as a Craigslist lark into [a fully fledged, six-figure business](https://bridesmaidforhire.com/) as the countrys most prolific professional bridesmaid. 
#### **Cold feet**
Standing at the back of a church in Staten Island, Glantz felt her body go numb. Shed heard the words “I cant do this” before. Shed even helped end engagements. But here was a bride, minutes away from the altar, grabbing her arm and telling her she hated the groom.
“I said, OK, we can get out of here, Ill call an Uber and we can leave,’” she says. First, though, she told the bride she had to talk to him. She put them in a room together, set a timer on her phone, and waited. 
Ten minutes later, the bride walked down the aisle, feigning bliss. Glantz was the only guest who knew theyd decided to go through with the wedding for show but not the marriage itself — theyd broken up in that room. 
“After the ceremony ended, the groomsmen were coming up to me saying, Thank you so much for fixing whatever argument was happening. They had no idea what was going on in these peoples lives,” she says. “I kept thinking to myself, *we hide so much from the people in our lives that we claim to be our best friends*.” 
It felt surreal. Then again, so did the rest of her life.
*The Hustle*
Nine months after posting the ad, Glantz was living a double life. Weekends were spent flying from state to state, popping bottles of champagne, running interference with relatives, delivering maid of honor speeches for couples she didnt truly know. 
During the week, she was working as a copywriter at a tech startup. “I was pretending to go to doctors appointments but… going to meet with a client,” she says. 
She hit crisis-level burnout when she found herself crouched under the sink in an airport bathroom in Atlanta, still wearing the dress from a wedding the night before, crying because she wouldnt make it to the next gig in time. 
When her boss at the startup called her into his office and told her shed be laid off, she decided to go all in on her business. 
*One critical bridesmaid task? Kicking off the dance floor. (Provided by Jen Glantz)*
Still, years later, the pretending aspect never gets easier. 
When a bride reaches out, Glantzs services start at **$2.5k** and go up from there, depending on how much support someone needs. Do they need unlimited texting and calling? Bachelorette party planning help? An extra set of eyes to go dress shopping? 
After they build a package, Glantz gets to work learning everything she can about her clients life, relationship, and hopes for her big day.  
Working with the bride, she develops a cover story to explain her identity to other wedding guests. If the cover story is that she went to high school with the bride, she memorizes the street names near the school and extracurriculars they did together. If she and the bride decide they met at yoga, she learns the names of the studio instructors. 
*Nails painted? Check. Hair done? Check. Phone charged? Check. (Provided by Jen Glantz)*
Once, she nearly blew her own cover when an enthusiastic bridesmaid wanted to add her on Facebook and the last name on the profile she pulled up — Glantz — didnt match her fake identity. (She hid in a bathroom stall and spun up a fake Facebook account.) 
Another time, she spent hours wondering why the mother of the bride was ice-cold only to learn later that her cover story — a friend from high school — melted when the brides mom pulled out her high-school yearbook and exposed the truth. 
*The Hustle*
After all the prep, Glantz puts on a new dress every weekend (paid for by the bride) and walks into a room full of strangers. 
One weekend, working a wedding in her Florida hometown of Boca Raton, she asked her dad to give her a ride to the venue. “I just couldnt get out of the car,” she says. He drove circles around the hotel until her panic subsided. 
She knew, once she walked into that bridal suite, that anything could happen. Shes been bitten, bribed, and tripped by guests in hot pursuit of the bouquet. Once, after a ring-bearer dog defecated in the aisle, she scooped up the dog poop with her bare hands to prevent the bride from soiling her dress. 
“You dont know whos going to come at you or whos not going to like you or how the bride is going to treat you,” Glantz says. 
So she takes a deep breath, knocks on the door, walks in, and starts the act. After hundreds of weddings, Glantz knows what personality to wear, what kind of energy to bring to the day. 
“And I also know that the bathroom is a great place to go if I need to reset or cry or text somebody,” she says. “It never gets easier, walking into the unknown every time.”
#### **Scaling up**
Ten years after posting that Craigslist ad, Glantz is 35 years old and shares her one-bedroom Williamsburg apartment with a husband, a dog, and a baby. 
That means her stash of bridesmaids dresses gets split — she keeps 25 in a garbage bag in her closet, and another 25 at her in-laws house. The rest shes donated or given to friends. 
The business brings in more than **$100k** a year, and she has freelance bridesmaids who work for her when she cant, or when a bride is concerned someone will recognize her as a [bridesmaid for hire](https://bridesmaidforhire.com/). 
*Glantz posing with some of the many dresses shes worn over the years. (Daphne Youree)*
Shes received tens of thousands of applications from people who want to work for her, but shes found its a tricky position to fill. There are no set qualifications — Glantz herself majored in poetry in college — and the burnout rate is high, so she still works most weddings herself. 
In the meantime, shes building out other parts of the business. 
- Vow writing. “I have a guy right now in my inbox. Hes like, Im getting married in two days, I need help with my vows.’” (Yes, she took the job, and no, she doesnt charge a rush rate.) 
- Maid of honor speeches, which cost **$375** if theyre written by Glantz or **$35** if she gets her AI assistant to help. “I was going into labor, and had someone who asked if I could do one in three days. I gave birth on a Tuesday and had the speech written by Friday morning,” she says. 
- Products. Her book, *Always a Bridesmaid (For Hire)*, came out in 2017, and in 2021 she launched The Newlywed Card Game, a game for couples. 
#### **Happily ever expensive**
When Glantz met her now-husband, he was so supportive of her business that she tried to get him to join forces as a groomsman for hire. He declined, though he did replace her dad as chauffeur. 
*The Hustle*
When the pair got married, there was no fanfare. Theyd initially planned a huge celebration, but when covid hit and they had to cancel, Glantz felt relieved. Eventually, on the five-year anniversary of their first date, they went back to the coffee shop where they first met with an officiant and a few friends, and tied the knot. There were no bridesmaids. 
Glantz thinks the role itself is headed toward extinction. Before the pandemic, bridal parties ballooned to 10 or 12 bridesmaids, she says. After, the industry has seen something like a course-correction.
“These bridesmaids dresses are the most expensive things I own in my closet, and I hate them. And most people feel that way,” she says.
And though shes worked weddings that cost upward of **$500k**, shes noticed budgets constricting over the last few years, to match the economic climate.
She thinks weddings will get less extra, as a result. But if the latest trend of hiring [birds of prey as ring bearers](https://www.wsj.com/lifestyle/weddings-falcons-raptors-ring-bearers-birds-21e18ad9?mod=hp_lista_pos1) (for **$1.2k**) is any indication, its going to take a while.
Where she sees people splurging is on bachelorette parties — which, of course, means bridesmaids take the hit. Brides are asking friends to take multiple days off work, fly international, bring multiple themed outfits, and foot the bill.
*The Hustle*
That theres a market for a hired bridesmaid, Glantz says, shows just how high the expectations for weddings have become. Thanks to social media, the pressure to have a picture-perfect family, friend group, wedding day, and marriage weighs heavily on her brides.
“People post these pictures from their wedding as if everythings perfect. And I was at your wedding — it was a complete disaster, your dad got drunk and almost hit somebody,” she says. “I just want people to know that most people getting married do not have perfect lives. And if you dont have what they have, thats OK.”
It also tells her something else: that people dont have the support networks they need, not just on their wedding day but in everyday life. “Making friends, maintaining friends is really hard,” she says. “I think people are lonelier than ever.”
And thats what Glantz is really selling: a support system. A friend-meets-therapist-meets-assistant who will always text you back and can weather any crisis, from holding another bridesmaids hair back as she pukes to running interference between divorced parents reuniting for the first time, no matter how mentally, physically, or emotionally exhausting.
“I dont like weddings. I still dont,” she says. “I love supporting people through difficult times in their lives.”
## Get the 5-minute roundup youll actually read in your inbox
Business and tech news in 5 minutes or less
100% free. We dont spam. Unsubscribe whenever.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -86,7 +86,8 @@ image: http://sorika.com/cdn/shop/files/The-Horses-Book-Sorika-001XX-Gareth-McCo
&emsp;
- [ ] :label: [[Bookmarks - Art]]: Review bookmarks %%done_del%% 🔁 every 3 months 📅 2024-02-26
- [ ] :label: [[Bookmarks - Art]]: Review bookmarks %%done_del%% 🔁 every 3 months 📅 2024-05-26
- [x] :label: [[Bookmarks - Art]]: Review bookmarks %%done_del%% 🔁 every 3 months 📅 2024-02-26 ✅ 2024-02-24
&emsp;
&emsp;

@ -176,7 +176,8 @@ image: https://opengraph.githubassets.com/331b0310853a6db93c4687437b1481c166928b
&emsp;
- [ ] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks %%done_del%% 🔁 every 3 months 📅 2024-02-22
- [ ] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks %%done_del%% 🔁 every 3 months 📅 2024-05-22
- [x] :label: [[Bookmarks - Selfhosted apps]]: Review bookmarks %%done_del%% 🔁 every 3 months 📅 2024-02-22 ✅ 2024-02-22
&emsp;
&emsp;

@ -1,7 +1,7 @@
---
CollapseMetaTable: true
cssclass: cards
CollapseMetaTable: true
Alias: ["Dashboard"]
Date: 2021-11-20
DocType: "Note"

@ -119,8 +119,8 @@ style: number
- [x] 🍎 Fruit ✅ 2024-02-02
- [x] 🍌 Bananas ✅ 2023-09-23
- [x] 🌰 Walnuts ✅ 2024-02-03
- [x] 🥜 Peanuts ✅ 2024-01-16
- [x] 🌰 Walnuts ✅ 2024-02-19
- [x] 🥜 Peanuts ✅ 2024-02-22
- [x] 🥜 Pine nuts ✅ 2024-01-22
- [x] 🍅 Tomatoes ✅ 2024-01-23
- [x] 🫑 Bell pepper ✅ 2023-12-08
@ -131,7 +131,7 @@ style: number
- [x] 🫛 Green peas ✅ 2024-01-22
- [x] 🫘 Red beans ✅ 2024-01-23
- [x] 🍄 Mushrooms ✅ 2024-01-08
- [x] 🧅 Onions ✅ 2024-01-06
- [x] 🧅 Onions ✅ 2024-02-22
- [x] 🧅 Spring onion ✅ 2024-01-31
- [x] 🧄 Garlic ✅ 2024-02-09
- [x] 🍋 Lemon ✅ 2024-02-02
@ -144,7 +144,7 @@ style: number
- [x] 🥩 Cured meat ✅ 2022-12-31
- [x] 🍖 Fresh meat ✅ 2023-11-04
- [x] 🍖 Minced meat ✅ 2024-02-09
- [x] 🍖 Minced meat ✅ 2024-02-19
- [x] 🥓 Bacon ✅ 2023-04-07
- [x] 🐑 Lamb shank ✅ 2023-12-23
- [x] 🐔 Chicken thighs ✅ 2023-10-07
@ -254,7 +254,7 @@ style: number
- [x] 👂earbuds ✅ 2023-04-18
- [x] 🪒 razor blades (mach3) ✅ 2022-02-06
- [x] 🍦 shaving cream ✅ 2023-10-12
- [x] 🧻 loo rolls ✅ 2023-03-26
- [x] 🧻 loo rolls ✅ 2024-02-19
- [x] 🦨 deo ✅ 2022-02-06
&emsp;

@ -78,7 +78,8 @@ style: number
- [x] ♻ [[Household]]: *Paper* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-01-30 ✅ 2024-01-29
- [x] ♻ [[Household]]: *Paper* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-01-16 ✅ 2024-01-15
- [x] ♻ [[Household]]: *Paper* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-01-02 ✅ 2024-01-01
- [ ] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-02-20
- [ ] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-03-05
- [x] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-02-20 ✅ 2024-02-19
- [x] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-02-06 ✅ 2024-02-05
- [x] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-01-23 ✅ 2024-01-22
- [x] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2024-01-09 ✅ 2024-01-08
@ -91,7 +92,8 @@ style: number
- [ ] 🛎️ :house: [[Household]]: Pay rent %%done_del%% 🔁 every month on the last 📅 2024-02-29
- [x] 🛎️ :house: [[Household]]: Pay rent %%done_del%% 🔁 every month on the last 📅 2024-01-31 ✅ 2024-01-28
- [x] 🛎️ :house: [[Household]]: Pay rent %%done_del%% 🔁 every month on the last 📅 2023-12-31 ✅ 2023-12-25
- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2024-02-19
- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2024-02-26
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2024-02-19 ✅ 2024-02-19
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2024-02-12 ✅ 2024-02-12
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2024-02-05 ✅ 2024-02-05
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2024-01-29 ✅ 2024-01-28
@ -100,7 +102,8 @@ style: number
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2024-01-08 ✅ 2024-01-06
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2024-01-01 ✅ 2023-12-25
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-12-25 ✅ 2023-12-23
- [ ] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2024-02-17
- [ ] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2024-03-02
- [x] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2024-02-17 ✅ 2024-02-17
- [x] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2024-02-03 ✅ 2024-01-29
- [x] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2024-01-20 ✅ 2024-01-14
- [x] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2024-01-06 ✅ 2024-01-06

@ -91,7 +91,8 @@ style: number
#### Cultural
- [ ] :snowflake:🎭 [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out floating theatre ([Herzlich willkommen!](http://herzbaracke.ch/)) %%done_del%% 🔁every year 📅2024-10-15
- [ ] 🎭:frame_with_picture: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out exhibitions at the [Kunsthaus](https://www.kunsthaus.ch/en/) %%done_del%% 🔁every 3 months 📅2024-02-15
- [ ] 🎭:frame_with_picture: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out exhibitions at the [Kunsthaus](https://www.kunsthaus.ch/en/) %%done_del%% 🔁 every 3 months 📅 2024-05-15
- [x] 🎭:frame_with_picture: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out exhibitions at the [Kunsthaus](https://www.kunsthaus.ch/en/) %%done_del%% 🔁 every 3 months 📅 2024-02-15 ✅ 2024-02-17
- [ ] 🎭:frame_with_picture: [[@@Zürich|:test_zurich_coat_of_arms:]]: Check out exhibitions at the [Rietberg](https://rietberg.ch/en/) %%done_del%% 🔁every 3 months 📅2024-03-15
&emsp;
@ -151,7 +152,7 @@ style: number
- [ ] Winterthur
- [x] Zug ✅ 2023-04-23
- [x] Konstanz ✅ 2023-04-23
- [ ] Basel
- [x] Basel ✅ 2024-02-17
- [x] Vaduz (FL) ✅ 2023-04-23
- [x] Schaffhausen ✅ 2023-04-10
- [x] Sankt Gallen ✅ 2023-08-01

@ -100,7 +100,8 @@ style: number
&emsp;
- [ ] :horse_racing: [[Juan Bautista Bossio|Juan]]: Bring a bottle of fernet + normal coca cola %%done_del%% 🔁 every month 📅 2024-02-20
- [ ] :horse_racing: [[Juan Bautista Bossio|Juan]]: Bring a bottle of fernet + normal coca cola %%done_del%% 🔁 every month 📅 2024-03-20
- [x] :horse_racing: [[Juan Bautista Bossio|Juan]]: Bring a bottle of fernet + normal coca cola %%done_del%% 🔁 every month 📅 2024-02-20 ✅ 2024-02-17
- [x] :horse_racing: [[Juan Bautista Bossio|Juan]]: Bring a bottle of fernet + normal coca cola %%done_del%% 🔁 every month 📅 2024-01-20 ✅ 2024-01-14
- [x] :horse_racing: [[Juan Bautista Bossio|Juan]]: Bring a bottle of fernet + normal coca cola %%done_del%% 🔁 every month 📅 2023-12-20 ✅ 2023-12-18
- [x] :horse_racing: [[Juan Bautista Bossio|Juan]]: Bring a bottle of fernet + normal coca cola %%done_del%% 🔁 every month 📅 2023-11-20 ✅ 2023-11-13

@ -12,14 +12,14 @@ Source:
Language: EN
Published: 2000-03-30
Link: "[Seven Pillars of Wisdom - Wikipedia](https://en.m.wikipedia.org/wiki/Seven_Pillars_of_Wisdom)"
Read:
Read: 2024-02-22
Cover: http://books.google.com/books/content?id=1KzM-Ej8ZScC&printsec=frontcover&img=1&zoom=1&source=gbs_api
CollapseMetaTable: true
---
Parent:: [[@Reading master|Reading list]]
ReadingState:: 🟧
ReadingState:: [[2024-02-22]]
---

@ -0,0 +1,152 @@
---
ServingSize: 2
cssclass: recipeTable
Alias: []
Tag: ["🐠", "🇯🇵", "🟥"]
Date: 2024-02-22
DocType: "Recipe"
Hierarchy: "NonRoot"
location:
CollapseMetaTable: true
Meta:
IsFavourite: False
Rating:
Recipe:
Courses: "Main dish"
Categories: "Fish"
Collections: "Japanese"
Source: "[Sesame Seared Tuna Steak Recipe](https://everydaydishes.com/simple-food-recipes/sesame-seared-tuna-steak/)"
PreparationTime: 17
CookingTime: 17
OServingSize: 6
Ingredients:
- 1.5 lbs tuna steaks, fresh, 1" thick
- 0.5 cup sesame seeds, (black, white or both)
- 1 pinch salt and pepper, to taste
- 1.5 tsp oil
---
Parent:: [[@@Recipes|Recipes]], [[@Main dishes|Main dishes]]
---
&emsp;
```button
name Edit Recipe parameters
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-SesameSearedTunaSteakEdit
```button
name Save
type command
action Save current file
id Save
```
^button-SesameSearedTunaSteakNSave
&emsp;
# Sesame Seared Tuna Steak
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### 🗒 Practical Informations
```dataview
list without id
"<table><tbody><tr><td><a class=heading>🍽 Courses</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.Recipe.Courses + "</span></td></tr>"
+
"<tr><td><a class=heading>🥘 Categories</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.Recipe.Categories + "</span></td></tr>"
+
"<tr><td><a class=heading>📚 Collections</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.Recipe.Collections + "</span></td></tr>"
+
"<tr><td><a class=heading>👨‍👨‍👧‍👦 Serving size</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.ServingSize + "</span></td></tr>"
+
"<tr><td><a class=heading>⏲ Cooking time</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.Recipe.CookingTime + " min</span></td></tr></tbody></table>"
FROM "03.03 Food & Wine/Sesame Seared Tuna Steak"
```
&emsp;
---
&emsp;
### 🧫 Ingredients
&emsp;
```dataviewjs
dv.view("00.01 Admin/dv-views/query_ingredient", {ingredients: dv.current().Ingredients, originalportioncount: dv.current().Recipe.OServingSize})
```
&emsp;
---
&emsp;
### 🔀 Instructions
&emsp;
- In a small bowl, combine all ingredients for dipping sauce and set aside. In a shallow dish, add sesame seeds and stir to mix if using black and white seeds.
&emsp;
- Season tuna lightly with salt and pepper and coat top and bottom of fish completely in sesame seeds, pressing to adhere.
&emsp;
- Place a heavy-bottomed skillet or grill pan over high heat and allow it to become scorching hot.
&emsp;
- Add just enough oil to skillet to coat the area that the fish will occupy. Place as many pieces of tuna in the pan as will comfortably fit, but do not overcrowd the pan. Work in batches if necessary.
&emsp;
- Cook tuna on first side for about 1 minute then flip and cook slightly longer than 1 minute on the second side. The white sesame seeds should become lightly golden brown and the fish will be cooked to rare stage.
&emsp;
- Transfer the tuna to a cutting board and carefully slice into ¼"-thick slices. Arrange the tuna on a platter or on individual plates. Serve immediately with dipping sauce on the side.
&emsp;
> [!tip]
> Serve the seared tuna with a simple green salad for a healthy and delicious meal!
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -67,7 +67,7 @@ Overview of tasks & todos for lebv.org
&emsp;
- [ ] :fleur_de_lis:: [[lebv Research Tasks|Research]]: <mark style="background:grey">Lieux</mark>: que sont devenus Fleurimont & Le Pavillon aujourd'hui? 📅 2024-02-25
- [ ] :fleur_de_lis:: [[lebv Research Tasks|Research]]: <mark style="background:grey">Lieux</mark>: que sont devenus Fleurimont & Le Pavillon aujourd'hui? 📅 2024-08-25
- [ ] :fleur_de_lis: [[lebv Research Tasks|Research]]: <mark style="background:grey">membres de la famille</mark>: reprendre les citations militaires (promotion/décoration) 📅 2024-03-31
- [ ] :fleur_de_lis: [[lebv Research Tasks|Research]]: <mark style="Background:grey">membres de la famille</mark>: éplucher les mentions du Nobiliaire de Guyenne & Gascogne 📅 2024-12-31
- [x] [[lebv Research Tasks|Research]]: <mark style="Background:grey">Archivage</mark>: compléter les fichiers de Source

@ -237,7 +237,9 @@ sudo bash /etc/addip4ban/addip4ban.sh
#### Ban List Tasks
- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2024-02-17
- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2024-03-02
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2024-02-24 ✅ 2024-02-23
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2024-02-17 ✅ 2024-02-17
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2024-02-10 ✅ 2024-02-09
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2024-02-03 ✅ 2024-02-02
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2024-01-27 ✅ 2024-01-27
@ -294,7 +296,9 @@ sudo bash /etc/addip4ban/addip4ban.sh
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-08-12 ✅ 2023-08-07
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-08-05 ✅ 2023-08-05
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-07-29 ✅ 2023-08-04
- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2024-02-17
- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2024-03-02
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2024-02-24 ✅ 2024-02-23
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2024-02-17 ✅ 2024-02-17
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2024-02-10 ✅ 2024-02-09
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2024-02-03 ✅ 2024-02-02
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2024-01-27 ✅ 2024-01-27

@ -584,7 +584,8 @@ List of monitored services:
- [x] [[Server Tools]]: Backup server 🔁 every 6 months on the 1st Tuesday ✅ 2021-10-13
- [x] Set-up landing page
- [ ] :desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%% 🔁 every 4 months 📅 2024-02-18
- [ ] :desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%% 🔁 every 4 months 📅 2024-06-18
- [x] :desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%% 🔁 every 4 months 📅 2024-02-18 ✅ 2024-02-18
- [x] :desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%% 🔁 every 4 months 📅 2023-10-18 ✅ 2023-10-18
- [x] :desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%% 🔁 every 4 months 📅 2023-06-18 ✅ 2023-06-16
- [x] :desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%% 🔁 every 4 months 📅 2023-02-18 ✅ 2023-02-14

@ -210,7 +210,7 @@ alias i=income
liability:CreditCard:CHF
2024/01/19 Petite table salon
expenses:Furniture:CHF €78.00
expenses:Furniture:EUR €78.00
liability:CreditCard:CHF
2024/01/18 Dinner Bleu Nuit
@ -306,55 +306,55 @@ alias i=income
liability:CreditCard:CHF
2024/01/26 Peages
expenses:Travel:CHF €20.40
expenses:Travel:EUR €20.40
liability:CreditCard:CHF
2024/01/26 Dej
expenses:Food:CHF €16.20
expenses:Food:EUR €16.20
liability:CreditCard:CHF
2024/01/26 Hotel
expenses:Travel:CHF €2.40
expenses:Travel:EUR €2.40
liability:CreditCard:CHF
2024/01/26 Peages
expenses:Travel:CHF €3.20
expenses:Travel:EUR €3.20
liability:CreditCard:CHF
2024/01/26 Fnac
expenses:Entertainment:CHF €107.90
expenses:Entertainment:EUR €107.90
liability:CreditCard:CHF
2024/01/26 Carrefour
expenses:Food:CHF €4.10
expenses:Food:EUR €4.10
liability:CreditCard:CHF
2024/01/26 Drinks
expenses:Social:CHF €7.00
expenses:Social:EUR €7.00
liability:CreditCard:CHF
2024/01/26 Dinner
expenses:Food:CHF €24.50
expenses:Food:EUR €24.50
liability:CreditCard:CHF
2024/01/27 Petrol
expenses:Travel:CHF €77.80
expenses:Travel:EUR €77.80
liability:CreditCard:CHF
2024/01/27 Petit dej
expenses:Food:CHF €8.80
expenses:Food:EUR €8.80
liability:CreditCard:CHF
2024/01/27 Coffee
expenses:Food:CHF €3.40
expenses:Food:EUR €3.40
liability:CreditCard:CHF
2024/01/27 Parking
expenses:Travel:CHF €2.40
expenses:Travel:EUR €2.40
liability:CreditCard:CHF
2024/01/27 Peages
expenses:Travel:CHF €18.00
expenses:Travel:EUR €18.00
liability:CreditCard:CHF
2024/01/27 Lunch Laure
@ -526,45 +526,137 @@ alias i=income
liability:CreditCard:CHF
2024/02/14 Encheres Nancy
expenses:Furniture:CHF €221.20
expenses:Furniture:EUR €221.20
liability:CreditCard:CHF
2024/02/15 Pret
expenses:Food:CHF CHF6.10
expenses:Food:EUR €6.10
liability:CreditCard:CHF
2024/02/14 Libanais
expenses:Food:CHF CHF18.70
expenses:Food:EUR €18.70
liability:CreditCard:CHF
2024/02/16 Dinner
expenses:Food:CHF CHF44.90
2024/02/15 Dinner
expenses:Food:EUR €44.90
liability:CreditCard:CHF
2024/02/16 Lunch
expenses:Food:CHF CHF24.50
2024/02/15 Lunch
expenses:Food:EUR €24.50
liability:CreditCard:CHF
2024/02/16 Pret
expenses:Food:CHF CHF6.10
expenses:Food:EUR €6.10
liability:CreditCard:CHF
2024/02/16 Dej
expenses:Food:CHF CHF14.00
expenses:Food:EUR €14.00
liability:CreditCard:CHF
2024/02/16 Eau
expenses:Food:CHF CHF3.70
expenses:Food:EUR €3.70
liability:CreditCard:CHF
2024/02/16 Metro
expenses:Travel:CHF CHF13.75
expenses:Travel:EUR €13.75
liability:CreditCard:CHF
2024/02/16 St Valentin
expenses:Social:CHF CHF34.00
expenses:Social:CHF 34.00
liability:CreditCard:CHF
2024/02/16 Dinner
expenses:Food:CHF CHF17.55
expenses:Food:CHF €17.55
liability:CreditCard:CHF
2024/02/17 Basel
expenses:Travel:CHF CHF81.10
liability:CreditCard:CHF
2024/02/17 Lunch
expenses:Social:CHF CHF95.00
liability:CreditCard:CHF
2024/02/17 SBB
expenses:Travel:CHF CHF5.60
liability:CreditCard:CHF
2024/02/17 Dinner
expenses:Social:CHF CHF83.90
liability:CreditCard:CHF
2024/02/18 Drinks
expenses:Social:CHF CHF40.00
liability:CreditCard:CHF
2024/02/19 Drinks
expenses:Social:CHF CHF19.00
liability:CreditCard:CHF
2024/02/19 SBB
expenses:Travel:CHF CHF2.80
liability:CreditCard:CHF
2024/02/19 Migros
expenses:Food:CHF CHF22.00
liability:CreditCard:CHF
2024/02/20 Coffee
expenses:Food:CHF CHF5.90
liability:CreditCard:CHF
2024/02/20 Migros
expenses:Food:CHF CHF14.10
liability:CreditCard:CHF
2024/02/22 Stocker
expenses:Food:CHF CHF5.40
liability:CreditCard:CHF
2024/02/22 Encheres Lyon: commode & tapis
expenses:Furniture:EUR €269.22
liability:CreditCard:CHF
2024/02/22 S18
expenses:Travel:CHF CHF11.20
liability:CreditCard:CHF
2024/02/22 Migros
expenses:Food:CHF CHF16.15
liability:CreditCard:CHF
2024/02/23 Coop
expenses:Food:CHF CHF4.65
liability:CreditCard:CHF
2024/02/23 S18
expenses:Travel:CHF CHF11.20
liability:CreditCard:CHF
2024/02/23 Swisscom
expenses:Telecom:CHF CHF160.62
assets:Cash:CHF
2024/02/23 Petrol
expenses:Travel:CHF CHF75.80
liability:CreditCard:CHF
2024/02/23 Biscuits
expenses:Food:EUR €3.83
liability:CreditCard:CHF
2024/02/23 Diner: Baos
expenses:Food:EUR €20.00
liability:CreditCard:CHF
2024/02/23 Peage
expenses:Travel:EUR CHF18.60
liability:CreditCard:CHF
2024/02/23 Crit'air
expenses:Travel:EUR CHF4.76
liability:CreditCard:CHF
2024/02/23 Hotel
expenses:Travel:EUR CHF15.65
liability:CreditCard:CHF
Loading…
Cancel
Save