weekly update

main
iOS 3 years ago
parent e888232f01
commit 1f20224b93

@ -95,6 +95,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.1881977050049063,
"scale": 0.21241554466107945,
"close": true
}

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "find-unlinked-files",
"name": "Find unlinked files and unresolved links",
"version": "1.5.0",
"version": "1.5.1",
"description": "Find files that are not linked anywhere and would otherwise be lost in your vault. In other words: files with no backlinks.",
"author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03",

@ -22426,11 +22426,11 @@ ${afterValue}`}`;
className: "mte button-container"
}, "Rows : ", /* @__PURE__ */ React4.createElement("input", {
type: "text",
onChange: (e) => setNewRows(parseInt(e.target.value)),
onChange: (e) => setNewRows(parseInt(e.target.value) || 0),
value: newRows
}), "Columns : ", /* @__PURE__ */ React4.createElement("input", {
type: "text",
onChange: (e) => setNewCols(parseInt(e.target.value)),
onChange: (e) => setNewCols(parseInt(e.target.value) || 0),
value: newCols
}), /* @__PURE__ */ React4.createElement("button", {
onClick: newTableClicked
@ -22885,16 +22885,18 @@ var MarkdownEditorSettingTab = class extends import_obsidian7.PluginSettingTab {
}));
});
new import_obsidian7.Setting(containerEl).setName("Number of rows").setDesc("Default number of rows in new tables created").addText((text) => text.setPlaceholder("3").setValue(this.plugin.settings.defaultRows.toString()).onChange((value) => __async(this, null, function* () {
const rows = parseInt(value);
let rows = parseInt(value);
if (!rows) {
rows = 0;
new import_obsidian7.Notice("Rows has to be positive number. Defaulting to 3");
}
this.plugin.settings.defaultRows = rows || 3;
yield this.plugin.saveSettings();
})));
new import_obsidian7.Setting(containerEl).setName("Number of columns").setDesc("Default number of columns in new tables created").addText((text) => text.setPlaceholder("3").setValue(this.plugin.settings.defaultColumns.toString()).onChange((value) => __async(this, null, function* () {
const cols = parseInt(value);
let cols = parseInt(value);
if (!cols) {
cols = 0;
new import_obsidian7.Notice("Columns has to be positive number. Defaulting to 3");
}
this.plugin.settings.defaultColumns = cols || 3;

@ -1,7 +1,7 @@
{
"id": "markdown-table-editor",
"name": "Markdown Table Editor",
"version": "0.3.0",
"version": "0.3.1",
"minAppVersion": "0.12.0",
"description": "An Obsidian plugin to provide an editor for Markdown tables. It can open CSV, Microsoft Excel/Google Sheets data as Markdown tables from Obsidian Markdown editor.",
"author": "Ganessh Kumar R P <rpganesshkumar@gmail.com>",

File diff suppressed because it is too large Load Diff

@ -6,5 +6,5 @@
"author": "Trey Wallis",
"authorUrl": "https://github.com/trey-wallis",
"isDesktopOnly": false,
"version": "2.3.6"
"version": "3.5.0"
}

@ -1,22 +1,9 @@
/* src/app/components/Menu/styles.css */
.NLT__menu {
position: relative;
}
.NLT__menu-container {
position: absolute;
border-radius: 4px;
font-weight: 400;
background-color: var(--background-primary);
border: 1px solid var(--background-modifier-border);
box-shadow: 0 2px 8px var(--background-modifier-box-shadow);
z-index: var(--layer-menu);
}
/* src/app/components/TagCell/styles.css */
.NLT__tag-cell {
display: flex;
align-items: center;
padding: 4px 8px;
white-space: nowrap;
}
.NLT__tag {
display: flex;
@ -24,30 +11,70 @@
border-radius: 8px;
padding: 2px 8px;
width: fit-content;
color: black;
}
.NLT__tag-content {
width: 100%;
}
.NLT__tag--red {
background-color: #ff6961;
/* src/app/components/Menu/styles.css */
.NLT__menu {
position: relative;
}
.NLT__menu-container {
position: absolute;
border-radius: 4px;
font-weight: 400;
background-color: var(--background-primary);
border: 1px solid var(--background-modifier-border);
box-shadow: 0 2px 8px var(--background-modifier-box-shadow);
z-index: var(--layer-menu);
width: fit-content;
}
/* src/app/components/TagCellEdit/component/SelectableTag/styles.css */
.NLT__selectable-tag {
justify-content: space-between;
}
.NLT__tag--yellow {
background-color: #faffc7;
/* src/app/components/Button/styles.css */
.NLT__button {
padding: 4px 6px;
white-space: nowrap;
}
.NLT__button--icon {
padding: 1px 3px;
}
/* src/app/components/TagColorMenu/components/ColorItem/styles.css */
.NLT__color-item {
display: flex;
align-items: center;
font-size: 0.8rem;
}
.NLT__tag--orange {
background-color: #ffdfd3;
.NLT__color-item-square {
width: 10px;
height: 10px;
padding: 0;
margin: 0 10px 0 0;
}
.NLT__tag--pink {
background-color: #fec8d8;
/* src/app/components/TagColorMenu/styles.css */
.NLT__tag-color-menu {
padding: 4px 10px;
}
.NLT__tag--gray {
background-color: #cfcfc4;
.NLT__tag-color-menu-title {
font-size: 0.85rem;
}
.NLT__tag--purple {
background-color: #e0bbe4;
.NLT__tag-color-container {
display: grid;
grid-template-columns: 100px 100px;
}
/* src/app/components/TagMenuContent/styles.css */
/* src/app/components/TagCellEdit/styles.css */
.NLT__tag-menu {
width: 15rem;
}
.NLT__tag-menu-top {
display: flex;
align-items: center;
@ -71,29 +98,12 @@
padding-left: 0px !important;
}
/* src/app/components/CellEditMenu/styles.css */
.NLT__cell-edit-menu {
width: 100%;
height: 100%;
}
/* src/app/components/EditableTd/styles.css */
.NLT__td {
position: relative;
vertical-align: top;
height: 2rem;
cursor: default;
}
.NLT__td:focus-visible {
border: 1px solid blue;
border-style: double;
}
.NLT__td--number {
text-align: right;
}
.NLT__td-content-container {
user-select: none;
}
/* src/app/components/Table/styles.css */
tbody > tr > .NLT__td:last-child {
@ -110,23 +120,25 @@ tfoot > tr > .NLT__td {
align-items: center;
}
.NLT__icon-text > p {
white-space: nowrap;
margin: 0;
}
/* src/app/components/DragMenu/components/DragMenuItem/styles.css */
.NLT__drag-menu-item:focus-visible {
outline: 1px solid blue;
}
/* src/app/components/DragMenu/styles.css */
.NLT__drag-menu {
width: 180px;
font-size: 0.9rem;
}
.NLT__drag-menu-item:focus-visible {
outline: 1px solid blue;
padding: 4px 10px;
}
/* src/app/components/HeaderMenu/styles.css */
.NLT__header-menu {
padding: 4px 10px;
cursor: default;
min-width: 150px;
}
.NLT__header-menu-item:focus-visible {
outline: 1px solid blue;
@ -142,7 +154,6 @@ tfoot > tr > .NLT__td {
}
.NLT__header-menu-header {
font-weight: 700;
padding-left: 5px;
}
.NLT__header-menu-item {
font-size: 0.9rem;
@ -151,23 +162,21 @@ tfoot > tr > .NLT__td {
padding: 0;
margin: 0;
}
.NLT__header-menu-delete-button {
margin-top: 10px;
.NLT__header-menu-input {
width: 150px !important;
}
/* src/app/components/EditableTh/styles.css */
.NLT__th {
text-align: left;
}
.NLT__th:focus-visible {
border: 1px solid blue;
border-style: double;
background-clip: padding-box;
}
.NLT__th:last-child {
border: 0 !important;
}
.NLT__header-content-container {
display: flex;
justify-content: space-between;
}
.NLT__header-resize-container {
position: relative;
@ -185,33 +194,48 @@ tfoot > tr > .NLT__td {
position: absolute;
cursor: col-resize;
width: 10px;
margin-left: 7px;
left: 7px;
min-height: 25px;
height: 100%;
}
/* src/app/app.css */
.NLT__color--light-gray {
background-color: hsl(0, 3%, 94%);
}
.NLT__color--gray {
background-color: hsl(40, 5%, 88%);
}
.NLT__color--brown {
background-color: hsl(18, 31%, 89%);
}
.NLT__color--orange {
background-color: hsl(28, 67%, 88%);
}
.NLT__color--yellow {
background-color: hsl(43, 82%, 89%);
}
.NLT__color--green {
background-color: hsl(113, 30%, 89%);
}
.NLT__color--blue {
background-color: hsl(205, 41%, 89%);
}
.NLT__color--purple {
background-color: hsl(272, 29%, 90%);
}
.NLT__color--pink {
background-color: hsl(330, 36%, 91%);
}
.NLT__color--red {
background-color: hsl(11, 64%, 91%);
}
.NLT__error {
color: red;
}
.NLT__app {
margin-bottom: 20px;
overflow: auto;
resize: vertical;
}
.NLT__button {
padding: 4px;
}
.NLT__button:focus-visible {
outline: 1px solid blue;
}
.NLT__button--sm {
width: 50px;
}
.NLT__button--reset {
padding: 0;
border: 0;
margin: 0;
}
.NLT__icon--selectable:hover {
border-radius: 4px;
@ -243,6 +267,8 @@ tfoot > tr > .NLT__td {
height: 100%;
width: 100%;
padding: 4px 10px !important;
}
.NLT__input--no-border {
border: 0 !important;
}
.NLT__input--number {

@ -12,8 +12,8 @@
"checkpointList": [
{
"path": "/",
"date": "2022-05-10",
"size": 4594064
"date": "2022-05-21",
"size": 4677345
}
],
"activityHistory": [
@ -507,6 +507,50 @@
{
"date": "2022-05-10",
"value": 1141
},
{
"date": "2022-05-11",
"value": 1023
},
{
"date": "2022-05-12",
"value": 1096
},
{
"date": "2022-05-13",
"value": 1022
},
{
"date": "2022-05-14",
"value": 1885
},
{
"date": "2022-05-15",
"value": 70679
},
{
"date": "2022-05-16",
"value": 2160
},
{
"date": "2022-05-17",
"value": 1023
},
{
"date": "2022-05-18",
"value": 1016
},
{
"date": "2022-05-19",
"value": 1024
},
{
"date": "2022-05-20",
"value": 1594
},
{
"date": "2022-05-21",
"value": 1417
}
]
}

@ -7,22 +7,8 @@ var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {
__markAsModule(target);
@ -118,11 +104,12 @@ function formatForSuggestion(item) {
return book;
}
function formatList(list) {
var _a;
if (!list || list.length === 0 || list[0] == "N/A")
return "";
if (list.length === 1)
return `${list[0]}`;
return list.map((item) => `"${item.trim()}"`).join(", ");
return (_a = list[0]) != null ? _a : "";
return list.map((item) => `${item.trim()}`).join(", ");
}
function apiGet(query) {
return __async(this, null, function* () {
@ -211,7 +198,7 @@ var BookSuggestModal = class extends import_obsidian3.SuggestModal {
el.createEl("div", { text: title });
el.createEl("small", { text: subtitle });
}
onChooseSuggestion(book, evt) {
onChooseSuggestion(book) {
this.onChoose(null, book);
}
};
@ -1953,10 +1940,18 @@ var FolderSuggest = class extends TextInputSuggest {
};
// src/settings/settings.ts
var docUrl = "https://github.com/anpigon/obsidian-book-search-plugin";
var DefaultFrontmatterKeyType;
(function(DefaultFrontmatterKeyType2) {
DefaultFrontmatterKeyType2["snakeCase"] = "Snake Case";
DefaultFrontmatterKeyType2["camelCase"] = "Camel Case";
})(DefaultFrontmatterKeyType || (DefaultFrontmatterKeyType = {}));
var DEFAULT_SETTINGS = {
folder: "",
frontmatter: "",
content: ""
content: "",
useDefaultFrontmatter: true,
defaultFrontmatterKeyType: DefaultFrontmatterKeyType.snakeCase
};
var BookSearchSettingTab = class extends import_obsidian7.PluginSettingTab {
constructor(app, plugin) {
@ -1966,15 +1961,37 @@ var BookSearchSettingTab = class extends import_obsidian7.PluginSettingTab {
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h2", { text: "Book Search Settings" });
containerEl.createEl("h2", { text: "General Settings" });
new import_obsidian7.Setting(containerEl).setName("New file location").setDesc("New book notes will be placed here.").addSearch((cb) => {
new FolderSuggest(this.app, cb.inputEl);
try {
new FolderSuggest(this.app, cb.inputEl);
} catch (e) {
}
cb.setPlaceholder("Example: folder1/folder2").setValue(this.plugin.settings.folder).onChange((new_folder) => {
this.plugin.settings.folder = new_folder;
this.plugin.saveSettings();
});
});
new import_obsidian7.Setting(containerEl).setName("Text to insert into frontmatter").setDesc("Text to insert into the YAML frontmatter").addTextArea((textArea) => {
containerEl.createEl("h2", { text: "Frontmatter Settings" });
new import_obsidian7.Setting(containerEl).setName("Use the default frontmatter").setDesc("If you don't want the default frontmatter to be inserted, disable it.").addToggle((toggle) => {
toggle.setValue(this.plugin.settings.useDefaultFrontmatter).onChange((value) => __async(this, null, function* () {
const newValue = value;
this.plugin.settings.useDefaultFrontmatter = newValue;
yield this.plugin.saveSettings();
}));
});
const keyTypeDesc = document.createDocumentFragment();
keyTypeDesc.append("- Snake Case: ", keyTypeDesc.createEl("code", { text: "total_page" }), keyTypeDesc.createEl("br"), "- Camel Case: ", keyTypeDesc.createEl("code", { text: "totalPage" }));
new import_obsidian7.Setting(containerEl).setName("Default frontmatter key type").setDesc(keyTypeDesc).addDropdown((dropDown) => {
dropDown.addOption(DefaultFrontmatterKeyType.snakeCase, DefaultFrontmatterKeyType.snakeCase.toString());
dropDown.addOption(DefaultFrontmatterKeyType.camelCase, DefaultFrontmatterKeyType.camelCase.toString());
dropDown.setValue(this.plugin.settings.defaultFrontmatterKeyType);
dropDown.onChange((value) => __async(this, null, function* () {
this.plugin.settings.defaultFrontmatterKeyType = value;
yield this.plugin.saveSettings();
}));
});
new import_obsidian7.Setting(containerEl).setName("Text to insert into frontmatter").setDesc(createSyntaxesDescription("#text-to-insert-into-frontmatter")).addTextArea((textArea) => {
const prevValue = this.plugin.settings.frontmatter;
textArea.setValue(prevValue).onChange((value) => __async(this, null, function* () {
const newValue = value;
@ -1982,12 +1999,8 @@ var BookSearchSettingTab = class extends import_obsidian7.PluginSettingTab {
yield this.plugin.saveSettings();
}));
});
const desc = document.createDocumentFragment();
desc.append("The following syntaxes are available: ", desc.createEl("br"), desc.createEl("code", { text: "{{title}}" }), ", ", desc.createEl("code", { text: "{{author}}" }), ", ", desc.createEl("code", { text: "{{category}}" }), ", ", desc.createEl("code", { text: "{{publisher}}" }), ", ", desc.createEl("code", { text: "{{publishDate}}" }), ", ", desc.createEl("code", { text: "{{totalPage}}" }), ", ", desc.createEl("code", { text: "{{coverUrl}}" }), ", ", desc.createEl("code", { text: "{{isbn10}}" }), ", ", desc.createEl("code", { text: "{{isbn13}}" }), desc.createEl("br"), "Check the ", desc.createEl("a", {
href: "https://github.com/anpigon/obsidian-book-search-plugin#text-to-insert-into-content",
text: "documentation"
}), " for more information.");
new import_obsidian7.Setting(containerEl).setName("Text to insert into content").setDesc(desc).addTextArea((textArea) => {
containerEl.createEl("h2", { text: "Content Settings" });
new import_obsidian7.Setting(containerEl).setName("Text to insert into content").setDesc(createSyntaxesDescription("#text-to-insert-into-content")).addTextArea((textArea) => {
const prevValue = this.plugin.settings.content;
textArea.setValue(prevValue).onChange((value) => __async(this, null, function* () {
const newValue = value;
@ -1997,43 +2010,14 @@ var BookSearchSettingTab = class extends import_obsidian7.PluginSettingTab {
});
}
};
// src/models/book.model.ts
var BookModel = class {
constructor(book) {
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
this.title = (_a = book.title) != null ? _a : "";
this.author = (_b = book.author) != null ? _b : "";
this.category = (_c = book.category) != null ? _c : "";
this.publisher = (_d = book.publisher) != null ? _d : "";
this.publishDate = (_e = book.publishDate) != null ? _e : "";
this.totalPage = (_f = book.totalPage) != null ? _f : "";
this.coverUrl = (_g = book.coverUrl) != null ? _g : "";
this.status = (_h = book.status) != null ? _h : "";
this.startReadDate = (_i = book.startReadDate) != null ? _i : "";
this.finishReadDate = (_j = book.finishReadDate) != null ? _j : "";
this.myRate = (_k = book.myRate) != null ? _k : "";
this.bookNote = (_l = book.bookNote) != null ? _l : "";
this.isbn10 = (_m = book.isbn10) != null ? _m : "";
this.isbn13 = (_n = book.isbn13) != null ? _n : "";
}
toFrontMatter(addFrontMatter) {
var _a, _b;
const frontMater = __spreadValues({}, this);
for (const key in addFrontMatter) {
const val = (_b = (_a = addFrontMatter[key]) == null ? void 0 : _a.toString().trim()) != null ? _b : "";
if (frontMater[key]) {
frontMater[key] = `${val} ${frontMater[key]}`;
} else {
frontMater[key] = val;
}
}
return Object.entries(frontMater).map(([key, val]) => {
var _a2;
return `${camelToSnakeCase(key)}: ${(_a2 = val == null ? void 0 : val.toString().trim()) != null ? _a2 : ""}`;
}).join("\n");
}
};
function createSyntaxesDescription(anchorLink) {
const desc = document.createDocumentFragment();
desc.append("The following syntaxes are available: ", desc.createEl("br"), desc.createEl("code", { text: "{{title}}" }), ", ", desc.createEl("code", { text: "{{author}}" }), ", ", desc.createEl("code", { text: "{{category}}" }), ", ", desc.createEl("code", { text: "{{publisher}}" }), ", ", desc.createEl("code", { text: "{{publishDate}}" }), ", ", desc.createEl("code", { text: "{{totalPage}}" }), ", ", desc.createEl("code", { text: "{{coverUrl}}" }), ", ", desc.createEl("code", { text: "{{isbn10}}" }), ", ", desc.createEl("code", { text: "{{isbn13}}" }), desc.createEl("br"), "Check the ", desc.createEl("a", {
href: `${docUrl}${anchorLink}`,
text: "documentation"
}), " for more information.");
return desc;
}
// src/utils/utils.ts
function replaceIllegalFileNameCharactersInString(string) {
@ -2047,12 +2031,29 @@ function makeFileName(book) {
const authorForFileName = replaceIllegalFileNameCharactersInString(book.author);
return `${titleForFileName} - ${authorForFileName}`;
}
function makeFrontMater(book, frontmatter) {
return new BookModel(book).toFrontMatter(frontmatter);
function makeFrontMater(book, frontmatter, keyType = DefaultFrontmatterKeyType.snakeCase) {
var _a, _b;
const frontMater = keyType === DefaultFrontmatterKeyType.camelCase ? book : Object.entries(book).reduce((acc, [key, value]) => {
acc[camelToSnakeCase(key)] = value;
return acc;
}, {});
const addFrontMatter = typeof frontmatter === "string" ? parseFrontMatter(frontmatter) : frontmatter;
for (const key in addFrontMatter) {
const addValue = (_b = (_a = addFrontMatter[key]) == null ? void 0 : _a.toString().trim()) != null ? _b : "";
if (frontMater[key] && frontMater[key] !== addValue) {
frontMater[key] = `${frontMater[key]} ${addValue}`;
} else {
frontMater[key] = addValue;
}
}
return Object.entries(frontMater).map(([key, val]) => {
var _a2;
return `${key}: ${(_a2 = val == null ? void 0 : val.toString().trim()) != null ? _a2 : ""}`;
}).join("\n");
}
function makeContent(book, content) {
function replaceVariableSyntax(book, targetText) {
const entries = Object.entries(book);
return entries.reduce((text, [key, val = ""]) => text.replace(new RegExp(`{{${key}}}`, "ig"), val), `${content}`).replace(/{{.+}}/gi, "");
return entries.reduce((text, [key, val = ""]) => text.replace(new RegExp(`{{${key}}}`, "ig"), val), targetText).replace(/{{.+}}/gi, "");
}
function camelToSnakeCase(str) {
return str.replace(/[A-Z]/g, (letter) => `_${letter == null ? void 0 : letter.toLowerCase()}`);
@ -2060,9 +2061,20 @@ function camelToSnakeCase(str) {
function parseFrontMatter(frontMatterString) {
if (!frontMatterString)
return {};
return frontMatterString.split("\n").map((item) => item.split(":")).reduce((acc, [key, value]) => {
return frontMatterString.split("\n").map((item) => {
var _a, _b;
const index = item.indexOf(":");
if (index === -1)
return [item.trim(), ""];
const key = (_a = item.slice(0, index)) == null ? void 0 : _a.trim();
const value = (_b = item.slice(index + 1)) == null ? void 0 : _b.trim();
return [key, value];
}).reduce((acc, [key, value]) => {
var _a;
return acc[key] = (_a = value == null ? void 0 : value.trim()) != null ? _a : "", acc;
if (key) {
acc[key] = (_a = value == null ? void 0 : value.trim()) != null ? _a : "";
}
return acc;
}, {});
}
@ -2071,7 +2083,7 @@ var BookSearchPlugin = class extends import_obsidian8.Plugin {
onload() {
return __async(this, null, function* () {
yield this.loadSettings();
const ribbonIconEl = this.addRibbonIcon("book", "Create new book note", (evt) => this.createNewBookNote());
const ribbonIconEl = this.addRibbonIcon("book", "Create new book note", () => this.createNewBookNote());
ribbonIconEl.addClass("obsidian-book-search-plugin-ribbon-class");
this.addCommand({
id: "open-book-search-modal",
@ -2085,13 +2097,16 @@ var BookSearchPlugin = class extends import_obsidian8.Plugin {
return __async(this, null, function* () {
try {
const book = yield this.openBookSearchModal();
const frontMatterFromInserts = parseFrontMatter(this.settings.frontmatter);
const frontMatter = makeFrontMater(book, frontMatterFromInserts);
const content = makeContent(book, this.settings.content);
const fileContent = `---
let frontMatter = replaceVariableSyntax(book, this.settings.frontmatter);
if (this.settings.useDefaultFrontmatter) {
frontMatter = makeFrontMater(book, frontMatter, this.settings.defaultFrontmatterKeyType);
}
frontMatter = frontMatter.trim();
const content = replaceVariableSyntax(book, this.settings.content);
const fileContent = frontMatter ? `---
${frontMatter}
---
${content}`;
${content}` : content;
const fileName = makeFileName(book);
const filePath = `${this.settings.folder.replace(/\/$/, "")}/${fileName}.md`;
const targetFile = yield this.app.vault.create(filePath, fileContent);
@ -2105,7 +2120,10 @@ ${content}`;
yield new CursorJumper(this.app).jumpToNextCursorLocation();
} catch (err) {
console.warn(err);
new import_obsidian8.Notice(err.toString());
try {
new import_obsidian8.Notice(err.toString());
} catch (e) {
}
}
});
}
@ -2124,8 +2142,6 @@ ${content}`;
});
});
}
onunload() {
}
loadSettings() {
return __async(this, null, function* () {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());

@ -1,10 +1,10 @@
{
"id": "obsidian-book-search-plugin",
"name": "Book Search",
"version": "0.1.0",
"version": "0.2.2",
"minAppVersion": "0.12.0",
"description": "Helps you find books and create notes.",
"author": "Obsidian",
"authorUrl": "https://obsidian.md",
"author": "anpigon",
"authorUrl": "https://github.com/anpigon",
"isDesktopOnly": false
}

@ -55,48 +55,72 @@ var import_obsidian = __toModule(require("obsidian"));
var COLUMNNAME = "col";
var COLUMNMD = COLUMNNAME + "-md";
var TOKEN = "!!!";
var SETTINGSDELIM = "\n===\n";
var DEFAULT_SETTINGS = {
wrapSize: { value: 100, name: "Minimum width of column", desc: "Columns will have this minimum width before wrapping to a new row. 0 disables column wrapping. Useful for smaller devices" },
defaultSpan: { value: 1, name: "The default span of an item", desc: "The default width of a column. If the minimum width is specified, the width of the column will be multiplied by this setting." }
};
var parseBoolean = (value) => {
return value == "yes" || value == "true";
};
var parseObject = (value, typ) => {
if (typ == "string") {
return value;
}
if (typ == "boolean") {
return parseBoolean(value);
}
if (typ == "number") {
return parseFloat(value);
}
};
var processChild = (c) => {
if (c.firstChild != null && "tagName" in c.firstChild && c.firstChild.tagName == "BR") {
c.removeChild(c.firstChild);
}
let firstChild = c;
while (firstChild != null) {
if ("style" in firstChild) {
firstChild.style.marginTop = "0px";
}
firstChild = firstChild.firstChild;
}
let lastChild = c;
while (lastChild != null) {
if ("style" in lastChild) {
lastChild.style.marginBottom = "0px";
}
lastChild = lastChild.lastChild;
}
var parseSettings = (settings) => {
let o = {};
settings.split("\n").map((i) => {
return i.split(";");
}).reduce((a, b) => {
a.push(...b);
return a;
}).map((i) => {
return i.split("=").map((j) => {
return j.trim();
}).slice(0, 2);
}).forEach((i) => {
o[i[0]] = i[1];
});
return o;
};
var ObsidianColumns = class extends import_obsidian.Plugin {
constructor() {
super(...arguments);
this.generateCssString = (span) => {
return "flex-grow:" + span.toString() + "; flex-basis:" + (this.settings.wrapSize.value * span).toString() + "px; width:" + (this.settings.wrapSize.value * span).toString() + "px";
let o = {};
o.flexGrow = span.toString();
o.flexBasis = (this.settings.wrapSize.value * span).toString() + "px";
o.width = (this.settings.wrapSize.value * span).toString() + "px";
return o;
};
this.applyStyle = (el, styles) => {
Object.assign(el.style, styles);
};
this.parseBoolean = (value) => {
return value == "yes" || value == "true";
};
this.parseObject = (value, typ) => {
if (typ == "string") {
return value;
}
if (typ == "boolean") {
return this.parseBoolean(value);
}
if (typ == "number") {
return parseFloat(value);
}
};
this.processChild = (c) => {
if (c.firstChild != null && "tagName" in c.firstChild && c.firstChild.tagName == "BR") {
c.removeChild(c.firstChild);
}
let firstChild = c;
while (firstChild != null) {
if ("style" in firstChild) {
firstChild.style.marginTop = "0px";
}
firstChild = firstChild.firstChild;
}
let lastChild = c;
while (lastChild != null) {
if ("style" in lastChild) {
lastChild.style.marginBottom = "0px";
}
lastChild = lastChild.lastChild;
}
};
}
onload() {
@ -104,11 +128,23 @@ var ObsidianColumns = class extends import_obsidian.Plugin {
yield this.loadSettings();
this.addSettingTab(new ObsidianColumnsSettings(this.app, this));
this.registerMarkdownCodeBlockProcessor(COLUMNMD, (source, el, ctx) => {
let split = source.split(SETTINGSDELIM);
let settings = {};
if (split.length > 1) {
source = split.slice(1).join(SETTINGSDELIM);
settings = parseSettings(split[0]);
}
const sourcePath = ctx.sourcePath;
let child = el.createDiv();
let renderChild = new import_obsidian.MarkdownRenderChild(child);
ctx.addChild(renderChild);
import_obsidian.MarkdownRenderer.renderMarkdown(source, child, sourcePath, renderChild);
if ("flexGrow" in settings) {
let flexGrow = parseFloat(settings.flexGrow);
let CSS = this.generateCssString(flexGrow);
delete CSS.width;
this.applyStyle(child, CSS);
}
});
this.registerMarkdownCodeBlockProcessor(COLUMNNAME, (source, el, ctx) => {
const sourcePath = ctx.sourcePath;
@ -121,9 +157,14 @@ var ObsidianColumns = class extends import_obsidian.Plugin {
let cc = parent.createEl("div", { cls: "columnChild" });
let renderCc = new import_obsidian.MarkdownRenderChild(cc);
ctx.addChild(renderCc);
cc.setAttribute("style", this.generateCssString(this.settings.defaultSpan.value));
this.applyStyle(cc, this.generateCssString(this.settings.defaultSpan.value));
cc.appendChild(c);
processChild(c);
if (c.classList.contains("block-language-" + COLUMNMD) && c.childNodes[0].style.flexGrow != "") {
cc.style.flexGrow = c.childNodes[0].style.flexGrow;
cc.style.flexBasis = c.childNodes[0].style.flexBasis;
cc.style.width = c.childNodes[0].style.flexBasis;
}
this.processChild(c);
});
});
let processList = (element, context) => {
@ -158,7 +199,7 @@ var ObsidianColumns = class extends import_obsidian.Plugin {
if (isNaN(span)) {
span = this.settings.defaultSpan.value;
}
childDiv.setAttribute("style", this.generateCssString(span));
this.applyStyle(childDiv, this.generateCssString(span));
let afterText = false;
processList(itemListItem, context);
for (let itemListItemChild of Array.from(itemListItem.childNodes)) {
@ -169,7 +210,7 @@ var ObsidianColumns = class extends import_obsidian.Plugin {
afterText = true;
}
}
processChild(childDiv);
this.processChild(childDiv);
}
}
}
@ -183,12 +224,24 @@ var ObsidianColumns = class extends import_obsidian.Plugin {
}
loadSettings() {
return __async(this, null, function* () {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
this.settings = DEFAULT_SETTINGS;
this.loadData().then((data) => {
if (data) {
let items = Object.entries(data);
items.forEach((item) => {
this.settings[item[0]].value = item[1];
});
}
});
});
}
saveSettings() {
return __async(this, null, function* () {
yield this.saveData(this.settings);
let saveData = {};
Object.entries(this.settings).forEach((i) => {
saveData[i[0]] = i[1].value;
});
yield this.saveData(saveData);
});
}
};
@ -202,12 +255,19 @@ var ObsidianColumnsSettings = class extends import_obsidian.PluginSettingTab {
containerEl.empty();
containerEl.createEl("h2", { text: "Settings for obsidian-columns" });
let keyvals = Object.entries(DEFAULT_SETTINGS);
console.log(keyvals);
for (let keyval of keyvals) {
new import_obsidian.Setting(containerEl).setName(keyval[1].name).setDesc(keyval[1].desc).addText((text) => text.setPlaceholder(String(keyval[1].value)).setValue(String(this.plugin.settings[keyval[0]].value)).onChange((value) => {
keyval[1].value = parseObject(value, typeof keyval[1].value);
this.plugin.saveSettings();
}));
let setting = new import_obsidian.Setting(containerEl).setName(keyval[1].name).setDesc(keyval[1].desc);
if (typeof keyval[1].value == "boolean") {
setting.addToggle((toggle) => toggle.setValue(this.plugin.settings[keyval[0]].value).onChange((bool) => {
this.plugin.settings[keyval[0]].value = bool;
this.plugin.saveSettings();
}));
} else {
setting.addText((text) => text.setPlaceholder(String(keyval[1].value)).setValue(String(this.plugin.settings[keyval[0]].value)).onChange((value) => {
this.plugin.settings[keyval[0]].value = this.plugin.parseObject(value, typeof keyval[1].value);
this.plugin.saveSettings();
}));
}
}
}
};

@ -6,5 +6,5 @@
"author": "Trevor Nichols",
"authorUrl": "https://github.com/tnichols217/obsidian-columns",
"isDesktopOnly": false,
"version": "1.0.9"
"version": "1.1.2"
}

@ -1465,9 +1465,9 @@
"links": 3
},
"02.03 Zürich/Razzia.md": {
"size": 1093,
"size": 1234,
"tags": 1,
"links": 2
"links": 4
},
"04.02 freemind.codes/Working note.md": {
"size": 2918,
@ -1870,7 +1870,7 @@
"links": 18
},
"05.02 Networks/Configuring UFW.md": {
"size": 5234,
"size": 5806,
"tags": 2,
"links": 7
},
@ -1935,14 +1935,14 @@
"links": 1
},
"01.02 Home/Household.md": {
"size": 2616,
"size": 2957,
"tags": 3,
"links": 2
},
"01.02 Home/MRCK.md": {
"size": 5059,
"size": 5794,
"tags": 1,
"links": 5
"links": 7
},
"01.02 Home/Life mementos.md": {
"size": 1909,
@ -2487,7 +2487,7 @@
"02.03 Zürich/Iroquois.md": {
"size": 1142,
"tags": 3,
"links": 2
"links": 4
},
"02.03 Zürich/Bimi.md": {
"size": 1093,
@ -2785,7 +2785,7 @@
"links": 2
},
"06.02 Investments/VC Tasks.md": {
"size": 5765,
"size": 6390,
"tags": 3,
"links": 6
},
@ -2870,7 +2870,7 @@
"links": 3
},
"06.02 Investments/Equity Tasks.md": {
"size": 6087,
"size": 6752,
"tags": 3,
"links": 4
},
@ -3722,7 +3722,7 @@
"00.03 News/Down the Hatch.md": {
"size": 36650,
"tags": 3,
"links": 1
"links": 2
},
"00.03 News/The Unseen Scars of Those Who Kill Via Remote Control.md": {
"size": 28021,
@ -3807,17 +3807,17 @@
"00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md": {
"size": 11928,
"tags": 3,
"links": 1
"links": 2
},
"00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md": {
"size": 25166,
"tags": 3,
"links": 1
"links": 2
},
"00.03 News/Ukrainians Flood Village of Demydiv to Keep Russians at Bay.md": {
"size": 9798,
"tags": 3,
"links": 1
"links": 2
},
"00.03 News/The Worst Boyfriend on the Upper East Side.md": {
"size": 32043,
@ -3832,7 +3832,7 @@
"00.03 News/S.F. spent millions to shelter homeless in hotels. These are the disastrous results.md": {
"size": 72277,
"tags": 3,
"links": 1
"links": 2
},
"00.03 News/The man who paid for America's fear.md": {
"size": 106425,
@ -3877,7 +3877,7 @@
"00.03 News/Is Everything Falling Apart.md": {
"size": 22156,
"tags": 2,
"links": 1
"links": 2
},
"00.01 Admin/Calendars/2022-05-07.md": {
"size": 1009,
@ -3902,17 +3902,17 @@
"00.03 News/There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego.md": {
"size": 19851,
"tags": 2,
"links": 1
"links": 2
},
"00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md": {
"size": 40435,
"tags": 3,
"links": 1
"links": 2
},
"00.03 News/How a billionaires boys club came to dominate the public square.md": {
"size": 12608,
"tags": 2,
"links": 1
"links": 2
},
"00.01 Admin/Calendars/2022-05-09.md": {
"size": 1011,
@ -3923,58 +3923,148 @@
"size": 1018,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-05-11.md": {
"size": 1014,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-05-12.md": {
"size": 1013,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-05-13.md": {
"size": 1116,
"tags": 0,
"links": 7
},
"00.01 Admin/Calendars/2022-05-14.md": {
"size": 1014,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-05-15.md": {
"size": 1455,
"tags": 0,
"links": 6
},
"00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md": {
"size": 15654,
"tags": 3,
"links": 2
},
"00.03 News/The Clockwork Orgasm - Common Reader.md": {
"size": 38040,
"tags": 3,
"links": 1
},
"00.03 News/The Untold Story of the White Houses Record Collection.md": {
"size": 15194,
"tags": 4,
"links": 2
},
"00.01 Admin/Calendars/2022-05-16.md": {
"size": 1459,
"tags": 0,
"links": 11
},
"00.01 Admin/Calendars/2022-05-17.md": {
"size": 1018,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-05-18.md": {
"size": 1011,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-05-19.md": {
"size": 1015,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-05-20.md": {
"size": 1015,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-05-21.md": {
"size": 1011,
"tags": 0,
"links": 4
}
},
"commitTypes": {
"/": {
"Refactor": 540,
"Create": 449,
"Link": 903,
"Expand": 419
"Refactor": 543,
"Create": 463,
"Link": 940,
"Expand": 439
}
},
"dailyCommits": {
"/": {
"0": 52,
"0": 55,
"1": 21,
"2": 2,
"3": 9,
"4": 12,
"5": 6,
"6": 18,
"7": 174,
"8": 232,
"9": 182,
"10": 103,
"11": 80,
"12": 110,
"13": 213,
"14": 136,
"15": 96,
"16": 85,
"17": 90,
"18": 251,
"19": 74,
"7": 175,
"8": 239,
"9": 192,
"10": 116,
"11": 86,
"12": 111,
"13": 214,
"14": 139,
"15": 98,
"16": 90,
"17": 92,
"18": 253,
"19": 90,
"20": 101,
"21": 57,
"22": 161,
"23": 46
"23": 48
}
},
"weeklyCommits": {
"/": {
"Mon": 347,
"Tue": 191,
"Wed": 231,
"Thu": 282,
"Fri": 207,
"Mon": 360,
"Tue": 194,
"Wed": 237,
"Thu": 294,
"Fri": 215,
"Sat": 0,
"Sun": 1053
"Sun": 1085
}
},
"recentCommits": {
"/": {
"Expanded": [
"<a class=\"internal-link\" href=\"06.02 Investments/VC Tasks.md\"> VC Tasks </a>",
"<a class=\"internal-link\" href=\"06.02 Investments/Equity Tasks.md\"> Equity Tasks </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-20.md\"> 2022-05-20 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-19.md\"> 2022-05-19 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-18.md\"> 2022-05-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-17.md\"> 2022-05-17 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"01.02 Home/Household.md\"> Household </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15.md\"> 2022-05-15 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15.md\"> 2022-05-15 </a>",
"<a class=\"internal-link\" href=\"01.02 Home/MRCK.md\"> MRCK </a>",
"<a class=\"internal-link\" href=\"02.03 Zürich/Razzia.md\"> Razzia </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15.md\"> 2022-05-15 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-13.md\"> 2022-05-13 </a>",
"<a class=\"internal-link\" href=\"05.02 Networks/Configuring UFW.md\"> Configuring UFW </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-14.md\"> 2022-05-14 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-13.md\"> 2022-05-13 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-12.md\"> 2022-05-12 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-11.md\"> 2022-05-11 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-10.md\"> 2022-05-10 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-09.md\"> 2022-05-09 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-08.md\"> 2022-05-08 </a>",
@ -4005,29 +4095,23 @@
"<a class=\"internal-link\" href=\"Spanakopia pie.md\"> Spanakopia pie </a>",
"<a class=\"internal-link\" href=\"01.02 Home/Household.md\"> Household </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-25.md\"> 2022-04-25 </a>",
"<a class=\"internal-link\" href=\"03.01 Reading list/Frédéric de Hohenstaufen.md\"> Frédéric de Hohenstaufen </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-24.md\"> 2022-04-24 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-24 2nd tour élections présidentielles.md\"> 2022-04-24 2nd tour élections présidentielles </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-23.md\"> 2022-04-23 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-21.md\"> 2022-04-21 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-20.md\"> 2022-04-20 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-19.md\"> 2022-04-19 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-18.md\"> 2022-04-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-18.md\"> 2022-04-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-16.md\"> 2022-04-16 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Obsidian plugins.md\"> Obsidian plugins </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-18.md\"> 2022-04-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-18.md\"> 2022-04-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-17.md\"> 2022-04-17 </a>",
"<a class=\"internal-link\" href=\"05.02 Networks/Server Tools.md\"> Server Tools </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-03-18.md\"> 2022-03-18 </a>",
"<a class=\"internal-link\" href=\"05.02 Networks/Configuring UFW.md\"> Configuring UFW </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-14.md\"> 2022-04-14 </a>",
"<a class=\"internal-link\" href=\"Cantinetta Antinori.md\"> Cantinetta Antinori </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-16.md\"> 2022-04-16 </a>",
"<a class=\"internal-link\" href=\"02.03 Zürich/@Café Zürich.md\"> @Café Zürich </a>"
"<a class=\"internal-link\" href=\"03.01 Reading list/Frédéric de Hohenstaufen.md\"> Frédéric de Hohenstaufen </a>"
],
"Created": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-21.md\"> 2022-05-21 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-20.md\"> 2022-05-20 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-19.md\"> 2022-05-19 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-18.md\"> 2022-05-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-17.md\"> 2022-05-17 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Untold Story of the White Houses Record Collection.md\"> The Untold Story of the White Houses Record Collection </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/North Korea Hacked Him. So He Took Down Its Internet.md\"> North Korea Hacked Him. So He Took Down Its Internet </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Clockwork Orgasm - Common Reader.md\"> The Clockwork Orgasm - Common Reader </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15.md\"> 2022-05-15 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-14.md\"> 2022-05-14 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-13.md\"> 2022-05-13 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-12.md\"> 2022-05-12 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-11.md\"> 2022-05-11 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-10.md\"> 2022-05-10 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-09.md\"> 2022-05-09 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/How a billionaires boys club came to dominate the public square.md\"> How a billionaires boys club came to dominate the public square </a>",
@ -4064,23 +4148,12 @@
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-29.md\"> 2022-04-29 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Vernon Subutex 1 - Virginie Despentes.md\"> Vernon Subutex 1 - Virginie Despentes </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-01 Meggi-mo's departure to Belfast.md\"> 2022-05-01 Meggi-mo's departure to Belfast </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-29 Meggi-mo arrives in Lisbon.md\"> 2022-04-29 Meggi-mo arrives in Lisbon </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-27.md\"> 2022-04-27 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-26.md\"> 2022-04-26 </a>",
"<a class=\"internal-link\" href=\"Untitled.md\"> Untitled </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Unseen Scars of Those Who Kill Via Remote Control.md\"> The Unseen Scars of Those Who Kill Via Remote Control </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/How Two Ex-Cops Cracked a $100 Million Maritime Mystery.md\"> How Two Ex-Cops Cracked a $100 Million Maritime Mystery </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Down the Hatch, by David Hill.md\"> Down the Hatch, by David Hill </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-25.md\"> 2022-04-25 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-24.md\"> 2022-04-24 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/“The Eye in the Sea” camera observes elusive deep sea animals.md\"> “The Eye in the Sea” camera observes elusive deep sea animals </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Jeffrey Epstein, a Rare Cello and an Enduring Mystery.md\"> Jeffrey Epstein, a Rare Cello and an Enduring Mystery </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Jeffrey Epstein, a Rare Cello and an Enduring Mystery.md\"> Jeffrey Epstein, a Rare Cello and an Enduring Mystery </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-23.md\"> 2022-04-23 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-22.md\"> 2022-04-22 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-21.md\"> 2022-04-21 </a>"
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-29 Meggi-mo arrives in Lisbon.md\"> 2022-04-29 Meggi-mo arrives in Lisbon </a>"
],
"Renamed": [
"<a class=\"internal-link\" href=\"00.03 News/The Untold Story of the White Houses Record Collection.md\"> The Untold Story of the White Houses Record Collection </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Clockwork Orgasm - Common Reader.md\"> The Clockwork Orgasm - Common Reader </a>",
"<a class=\"internal-link\" href=\"00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md\"> North Korea Hacked Him. So He Took Down Its Internet </a>",
"<a class=\"internal-link\" href=\"00.03 News/How a billionaires boys club came to dominate the public square.md\"> How a billionaires boys club came to dominate the public square </a>",
"<a class=\"internal-link\" href=\"00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md\"> Did Jesse James Bury Confederate Gold These Treasure Hunters Think So. </a>",
"<a class=\"internal-link\" href=\"00.03 News/There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego.md\"> There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego </a>",
@ -4128,12 +4201,12 @@
"<a class=\"internal-link\" href=\"05.01 Computer setup/Storj.md\"> Storj </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Big Shells With Spicy Lamb Sausage and Pistachios.md\"> Big Shells With Spicy Lamb Sausage and Pistachios </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Churros with Bittersweet Chocolate Sauce 1.md\"> Churros with Bittersweet Chocolate Sauce 1 </a>",
"<a class=\"internal-link\" href=\"05.01 Computer setup/Zint.md\"> Zint </a>",
"<a class=\"internal-link\" href=\"00.03 News/H-Town United An Unlikely Soccer Power Rises in Texas.md\"> H-Town United An Unlikely Soccer Power Rises in Texas </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Unravelling of an Expert on Serial Killers.md\"> The Unravelling of an Expert on Serial Killers </a>",
"<a class=\"internal-link\" href=\"00.03 News/The twisted mind of a serial romance scammer.md\"> The twisted mind of a serial romance scammer </a>"
"<a class=\"internal-link\" href=\"05.01 Computer setup/Zint.md\"> Zint </a>"
],
"Tagged": [
"<a class=\"internal-link\" href=\"00.03 News/The Clockwork Orgasm - Common Reader.md\"> The Clockwork Orgasm - Common Reader </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Untold Story of the White Houses Record Collection.md\"> The Untold Story of the White Houses Record Collection </a>",
"<a class=\"internal-link\" href=\"00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md\"> North Korea Hacked Him. So He Took Down Its Internet </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/How a billionaires boys club came to dominate the public square.md\"> How a billionaires boys club came to dominate the public square </a>",
"<a class=\"internal-link\" href=\"00.03 News/There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego.md\"> There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego </a>",
"<a class=\"internal-link\" href=\"00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md\"> Did Jesse James Bury Confederate Gold These Treasure Hunters Think So. </a>",
@ -4181,10 +4254,7 @@
"<a class=\"internal-link\" href=\"00.02 Inbox/Tim Cooks Oscar Moment Didnt Come Cheap.md\"> Tim Cooks Oscar Moment Didnt Come Cheap </a>",
"<a class=\"internal-link\" href=\"00.03 News/You Dont Know Much About Jay Penske. And Hes Fine With That..md\"> You Dont Know Much About Jay Penske. And Hes Fine With That. </a>",
"<a class=\"internal-link\" href=\"00.03 News/The death spiral of an American family.md\"> The death spiral of an American family </a>",
"<a class=\"internal-link\" href=\"00.03 News/Saint Peters Is a Miracle.md\"> Saint Peters Is a Miracle </a>",
"<a class=\"internal-link\" href=\"00.03 News/He Chased Silicon Valley Dreams Amid the Cannabis Boom. But Did His Ambition Lead to His Murder.md\"> He Chased Silicon Valley Dreams Amid the Cannabis Boom. But Did His Ambition Lead to His Murder </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/You Dont Know Much About Jay Penske. And Hes Fine With That..md\"> You Dont Know Much About Jay Penske. And Hes Fine With That. </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Shaming-Industrial Complex.md\"> The Shaming-Industrial Complex </a>"
"<a class=\"internal-link\" href=\"00.03 News/Saint Peters Is a Miracle.md\"> Saint Peters Is a Miracle </a>"
],
"Refactored": [
"<a class=\"internal-link\" href=\"01.02 Home/@Main Dashboard.md\"> @Main Dashboard </a>",
@ -4277,6 +4347,40 @@
"<a class=\"internal-link\" href=\"00.02 Inbox/Article (2022-02-06 14-19-45).md\"> Article (2022-02-06 14-19-45) </a>"
],
"Linked": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-21.md\"> 2022-05-21 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-20.md\"> 2022-05-20 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-19.md\"> 2022-05-19 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-18.md\"> 2022-05-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-17.md\"> 2022-05-17 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Untold Story of the White Houses Record Collection.md\"> The Untold Story of the White Houses Record Collection </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Down the Hatch.md\"> Down the Hatch </a>",
"<a class=\"internal-link\" href=\"00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md\"> Massacre in Tadamon how two academics hunted down a Syrian war criminal </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15.md\"> 2022-05-15 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Untold Story of the White Houses Record Collection.md\"> The Untold Story of the White Houses Record Collection </a>",
"<a class=\"internal-link\" href=\"00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md\"> North Korea Hacked Him. So He Took Down Its Internet </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Clockwork Orgasm - Common Reader.md\"> The Clockwork Orgasm - Common Reader </a>",
"<a class=\"internal-link\" href=\"01.02 Home/MRCK.md\"> MRCK </a>",
"<a class=\"internal-link\" href=\"02.03 Zürich/Iroquois.md\"> Iroquois </a>",
"<a class=\"internal-link\" href=\"02.03 Zürich/Razzia.md\"> Razzia </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15.md\"> 2022-05-15 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md\"> Did Jesse James Bury Confederate Gold These Treasure Hunters Think So. </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-13.md\"> 2022-05-13 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-13.md\"> 2022-05-13 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-14.md\"> 2022-05-14 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-13.md\"> 2022-05-13 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Is Everything Falling Apart.md\"> Is Everything Falling Apart </a>",
"<a class=\"internal-link\" href=\"00.03 News/Ukrainians Flood Village of Demydiv to Keep Russians at Bay.md\"> Ukrainians Flood Village of Demydiv to Keep Russians at Bay </a>",
"<a class=\"internal-link\" href=\"00.03 News/There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego.md\"> There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego </a>",
"<a class=\"internal-link\" href=\"00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md\"> Elon Musk Got Twitter Because He Gets Twitter </a>",
"<a class=\"internal-link\" href=\"00.03 News/S.F. spent millions to shelter homeless in hotels. These are the disastrous results.md\"> S.F. spent millions to shelter homeless in hotels. These are the disastrous results </a>",
"<a class=\"internal-link\" href=\"00.03 News/How a billionaires boys club came to dominate the public square.md\"> How a billionaires boys club came to dominate the public square </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-12.md\"> 2022-05-12 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-11.md\"> 2022-05-11 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-10.md\"> 2022-05-10 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Are the Next Global Tennis Stars Among These Tweens.md\"> Are the Next Global Tennis Stars Among These Tweens </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-09.md\"> 2022-05-09 </a>",
@ -4293,41 +4397,7 @@
"<a class=\"internal-link\" href=\"00.02 Inbox/Is Everything Falling Apart.md\"> Is Everything Falling Apart </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-06.md\"> 2022-05-06 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Spiced Eggs With Tzatziki.md\"> Spiced Eggs With Tzatziki </a>",
"<a class=\"internal-link\" href=\"Spiced Eggs with Tzatziki.md\"> Spiced Eggs with Tzatziki </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-05.md\"> 2022-05-05 </a>",
"<a class=\"internal-link\" href=\"05.02 Networks/GitHub - onceuponBash-Oneliner A collection of handy Bash One-Liners and terminal tricks for data processing and Linux system maintenance..md\"> GitHub - onceuponBash-Oneliner A collection of handy Bash One-Liners and terminal tricks for data processing and Linux system maintenance. </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-04.md\"> 2022-05-04 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-03.md\"> 2022-05-03 </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Short breaks.md\"> Short breaks </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/delete.md\"> delete </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-02.md\"> 2022-05-02 </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Worst Boyfriend on the Upper East Side.md\"> The Worst Boyfriend on the Upper East Side </a>",
"<a class=\"internal-link\" href=\"00.03 News/The man who paid for America's fear.md\"> The man who paid for America's fear </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Unseen Scars of Those Who Kill Via Remote Control.md\"> The Unseen Scars of Those Who Kill Via Remote Control </a>",
"<a class=\"internal-link\" href=\"00.03 News/S.F. spent millions to shelter homeless in hotels. These are the disastrous results.md\"> S.F. spent millions to shelter homeless in hotels. These are the disastrous results </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/A Crime Beyond Belief.md\"> A Crime Beyond Belief </a>",
"<a class=\"internal-link\" href=\"00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md\"> Elon Musk Got Twitter Because He Gets Twitter </a>",
"<a class=\"internal-link\" href=\"00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md\"> Massacre in Tadamon how two academics hunted down a Syrian war criminal </a>",
"<a class=\"internal-link\" href=\"00.03 News/Ukrainians Flood Village of Demydiv to Keep Russians at Bay.md\"> Ukrainians Flood Village of Demydiv to Keep Russians at Bay </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Worst Boyfriend on the Upper East Side.md\"> The Worst Boyfriend on the Upper East Side </a>",
"<a class=\"internal-link\" href=\"00.03 News/When will economists embrace the quantum revolution Aeon Essays.md\"> When will economists embrace the quantum revolution Aeon Essays </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Power of Emotional Honesty.md\"> The Power of Emotional Honesty </a>",
"<a class=\"internal-link\" href=\"00.03 News/The real Mission Impossible.md\"> The real Mission Impossible </a>",
"<a class=\"internal-link\" href=\"00.03 News/If they could turn back time how tech billionaires are trying to reverse the ageing process.md\"> If they could turn back time how tech billionaires are trying to reverse the ageing process </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-01 Départ de Lisbonne.md\"> 2022-05-01 Départ de Lisbonne </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-27 Arrivée à Lisbonne.md\"> 2022-04-27 Arrivée à Lisbonne </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-01.md\"> 2022-05-01 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-30.md\"> 2022-04-30 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-17 Gorillaz - arenes de Nimes.md\"> 2022-06-17 Gorillaz - arenes de Nimes </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15 Definite arrival of Meggi-mo to Züzü.md\"> 2022-05-15 Definite arrival of Meggi-mo to Züzü </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-28.md\"> 2022-04-28 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-04-29.md\"> 2022-04-29 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Vernon Subutex 1.md\"> Vernon Subutex 1 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Jeffrey Epstein, a Rare Cello and an Enduring Mystery.md\"> Jeffrey Epstein, a Rare Cello and an Enduring Mystery </a>",
"<a class=\"internal-link\" href=\"00.03 News/8 Endangered Places We Can Still Save From Climate Change.md\"> 8 Endangered Places We Can Still Save From Climate Change </a>",
"<a class=\"internal-link\" href=\"00.03 News/What happened to Starbucks How a progressive company lost its way.md\"> What happened to Starbucks How a progressive company lost its way </a>",
"<a class=\"internal-link\" href=\"00.03 News/What Is the Metaverse A Beginner's Guide to Tech's Latest Obsession.md\"> What Is the Metaverse A Beginner's Guide to Tech's Latest Obsession </a>",
"<a class=\"internal-link\" href=\"00.03 News/“The Eye in the Sea” camera observes elusive deep sea animals.md\"> “The Eye in the Sea” camera observes elusive deep sea animals </a>"
"<a class=\"internal-link\" href=\"Spiced Eggs with Tzatziki.md\"> Spiced Eggs with Tzatziki </a>"
],
"Removed Tags from": [
"<a class=\"internal-link\" href=\"06.02 Investments/Le Miel de Paris.md\"> Le Miel de Paris </a>",

File diff suppressed because one or more lines are too long

@ -1 +1,10 @@
{"id":"obsidian-dialogue-plugin","name":"Dialogue","version":"1.0.1","minAppVersion":"0.12.0","description":"Create dialogues in Markdown.","author":"Jakub Holub","authorUrl":"https://github.com/holubj","isDesktopOnly":false}
{
"id": "obsidian-dialogue-plugin",
"name": "Dialogue",
"version": "1.0.2",
"minAppVersion": "0.12.0",
"description": "Create dialogues in Markdown.",
"author": "Jakub Holub",
"authorUrl": "https://github.com/holubj",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-dice-roller",
"name": "Dice Roller",
"version": "8.3.4",
"version": "8.4.2",
"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

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-icon-shortcodes",
"name": "Icon Shortcodes",
"version": "0.9.3",
"version": "0.9.5",
"minAppVersion": "0.13.27",
"description": "Insert emoji and custom icons with shortcodes",
"author": "AidenLx",

File diff suppressed because one or more lines are too long

@ -87,6 +87,7 @@
"autoZoom": true,
"markerClickBehavior": "samePane",
"newNoteNameFormat": "Location added on {{date:YYYY-MM-DD}}T{{date:HH-mm}}",
"showNoteNamePopup": true,
"showNotePreview": true,
"showClusterPreview": false,
"debug": false,
@ -100,8 +101,8 @@
{
"name": "OpenStreetMap Show Address",
"regExp": "https:\\/\\/www.openstreetmap.org\\S*query=([0-9\\.\\-]+%2C[0-9\\.\\-]+)\\S*",
"order": "latFirst",
"preset": true
"preset": true,
"ruleType": "latLng"
}
],
"mapControls": {
@ -110,6 +111,7 @@
},
"maxClusterRadiusPixels": 20,
"searchProvider": "osm",
"useGooglePlaces": false,
"mapSources": [
{
"name": "CartoDB",
@ -122,6 +124,8 @@
}
],
"chosenMapMode": "auto",
"saveHistory": true,
"letZoomBeyondMax": false,
"tilesUrl": null,
"snippetLines": 3,
"darkMode": false,

File diff suppressed because one or more lines are too long

@ -1,8 +1,8 @@
{
"id": "obsidian-map-view",
"name": "Map View",
"version": "1.5.0",
"minAppVersion": "0.12.10",
"description": "An interactive map view.",
"isDesktopOnly": false
}
{
"id": "obsidian-map-view",
"name": "Map View",
"version": "2.0.3",
"minAppVersion": "0.12.10",
"description": "An interactive map view.",
"isDesktopOnly": false
}

@ -1,43 +1,60 @@
.map-view-marker-name {
font-weight: bold;
}
.map-view-extra-name {
font-weight: bold;
}
.map-view-marker-snippet {
white-space: pre-line;
overflow-wrap: break-word;
color: var(--text-normal);
font-size: var(--font-text-size);
font-family: var(--font-text);
}
.map-view-location {
font-weight: bold;
text-decoration: underline;
font-weight: bold;
text-decoration: underline;
}
.graph-controls {
position: fixed;
z-index: 2;
margin-top: 36px;
position: fixed;
z-index: 2;
margin-top: 36px;
padding: 8px 16px 5px 12px;
}
.graph-control-div {
display: inline-block;
display: block;
padding-bottom: 5px;
}
.graph-control-content {
max-height: 0px;
overflow: hidden;
transition: max-height .25s ease-in-out;
display: none;
overflow: hidden;
}
.graph-control-error {
border-color: red !important;
}
.controls-toggle {
display: none;
}
.toggle:checked + .lbl-toggle + .graph-control-content {
max-height: 100vh;
.controls-toggle:checked
+ .lbl-triangle
+ .lbl-toggle
+ .graph-control-content {
display: block;
}
.lbl-triangle {
display: inline-block;
position: relative;
top: -1px;
transition: 0.25s;
}
.controls-toggle:checked + .lbl-triangle {
transform: rotate(90deg);
top: 0px;
}
.settings-dense-button {
margin-right: 0;
margin-right: 0;
}
.leaflet-container .dark-mode {
@ -46,20 +63,71 @@
}
.newPresetDialogGrid {
display: grid;
grid-row-gap: 10px;
display: grid;
grid-row-gap: 10px;
}
.newPresetDialogLine {
display: inline-block;
display: inline-block;
}
.clusterPreviewIcon {
margin-left: 0 !important;
margin-top: 0 !important;
position: relative !important;
margin-left: 0 !important;
margin-top: 0 !important;
position: relative !important;
}
.clusterPreviewContainer {
display: inline-flex;
display: inline-flex;
border-radius: 6px;
line-height: 1.5;
background-color: var(--background-primary);
}
.clusterPreviewContainer .leaflet-marker-icon {
background-color: var(--background-primary);
}
.graph-control-follow-label {
vertical-align: top;
padding-left: 5px;
}
.marker-popup {
border-radius: 6px;
color: var(--text-normal);
font-size: var(--font-text-size);
font-family: var(--font-text);
line-height: 1.5;
background-color: var(--background-primary);
box-shadow: 0 2px 8px var(--background-modifier-box-shadow);
}
/* Disable the default Leaflet shadow because we use the Obsidian theme above */
.marker-popup .leaflet-popup-content-wrapper {
box-shadow: none;
background: none;
color: none;
}
.url-rule-dropdown {
max-width: 7em;
}
.parsing-rule {
padding: 5px;
}
.parsing-rule-line-2 {
text-align: right;
}
.map-search-suggestion {
display: flex;
}
.search-text-div {
display: flex;
align-items: center;
padding-left: 10px;
}

@ -39,5 +39,6 @@
"useSystemTheme": false,
"folding": true,
"lineNumbers": false,
"readableLineLength": true
"readableLineLength": true,
"devBlockWidth": false
}

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-minimal-settings",
"name": "Minimal Theme Settings",
"version": "5.2.1",
"version": "5.2.7",
"minAppVersion": "0.10.1",
"description": "Change the colors, fonts and features of Minimal Theme.",
"author": "@kepano",

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-pocket",
"name": "Pocket",
"version": "0.7.1",
"version": "0.8.0",
"minAppVersion": "0.12.11",
"description": "Access your Pocket reading list entries and create notes for them easily",
"author": "Nimalan Mahendran",

@ -65,11 +65,6 @@
}
],
"05.02 Networks/Server Tools.md": [
{
"title": "[[Selfhosting]], [[Server Tools|Tools]]: Upgrader Standard Notes & Health checks",
"time": "2022-05-18",
"rowNumber": 709
},
{
"title": "[[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks",
"time": "2022-06-18",
@ -80,6 +75,11 @@
"time": "2022-08-18",
"rowNumber": 706
},
{
"title": "[[Selfhosting]], [[Server Tools|Tools]]: Upgrader Standard Notes & Health checks",
"time": "2022-09-18",
"rowNumber": 709
},
{
"title": "[[Server Tools]]: Backup server",
"time": "2022-10-04",
@ -270,7 +270,7 @@
"01.03 Family/Hortense Bédier.md": [
{
"title": ":birthday: **[[Hortense Bédier|Hortense]]**",
"time": "2022-05-19",
"time": "2023-05-19",
"rowNumber": 100
}
],
@ -331,15 +331,15 @@
}
],
"01.02 Home/Household.md": [
{
"title": "[[Household]]: *Cardboard* recycling collection",
"time": "2022-05-17",
"rowNumber": 82
},
{
"title": "[[Household]]: *Paper* recycling collection",
"time": "2022-05-24",
"rowNumber": 72
},
{
"title": "[[Household]]: *Cardboard* recycling collection",
"time": "2022-05-31",
"rowNumber": 82
}
],
"01.03 Family/Pia Bousquié.md": [
@ -353,17 +353,17 @@
{
"title": ":birthday: **[[MRCK|Meggi-mo]]'s Papa** (1962)",
"time": "2023-02-02",
"rowNumber": 250
"rowNumber": 264
},
{
"title": ":birthday: **[[MRCK|Meggi-mo]]**",
"time": "2023-02-28",
"rowNumber": 248
"rowNumber": 262
},
{
"title": "[[MRCK|Meggi-mo]] Saint Patrick's Day",
"time": "2023-03-17",
"rowNumber": 252
"rowNumber": 266
}
],
"01.03 Family/Thaïs Bédier.md": [
@ -453,34 +453,34 @@
"06.02 Investments/VC Tasks.md": [
{
"title": "[[VC Tasks#internet alerts|monitor VC news and publications]]",
"time": "2022-05-13",
"time": "2022-05-27",
"rowNumber": 74
}
],
"06.02 Investments/Crypto Tasks.md": [
{
"title": "[[Crypto Tasks#internet alerts|monitor Crypto news and publications]]",
"time": "2022-05-13",
"time": "2022-05-27",
"rowNumber": 74
}
],
"06.02 Investments/Equity Tasks.md": [
{
"title": "[[Equity Tasks#internet alerts|monitor Equity news and publications]]",
"time": "2022-05-13",
"time": "2022-05-27",
"rowNumber": 74
}
],
"05.02 Networks/Configuring UFW.md": [
{
"title": "[[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix",
"time": "2022-05-14",
"time": "2022-05-28",
"rowNumber": 239
},
{
"title": "[[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list",
"time": "2022-05-14",
"rowNumber": 248
"time": "2022-05-28",
"rowNumber": 250
}
],
"00.01 Admin/Calendars/2022-03-18.md": [
@ -521,7 +521,46 @@
"00.01 Admin/Calendars/2022-04-10.md": [
{
"title": "21:01 [[2022-04-10|Memo]], [[Amaury de Villeneuve|Chapal]]: trouver un réparateur pour l'oignon Lipp",
"time": "2022-05-05",
"time": "2022-05-25",
"rowNumber": 91
}
],
"00.01 Admin/Calendars/2022-05-15.md": [
{
"title": "19:43 [[2022-05-15|Memo]], [[@Lifestyle]]: remplacer la batterie de ma montre Spinnaker",
"time": "2022-05-29",
"rowNumber": 91
},
{
"title": "19:44 [[2022-05-15|Memo]], [[@Lifestyle]]: porter les deux Swatch pour réparation",
"time": "2022-05-29",
"rowNumber": 92
},
{
"title": "23:58 [[2022-05-15|Memo]], [[@Life Admin]]: Inscription au registre des Francais en Suisse",
"time": "2022-06-15",
"rowNumber": 93
},
{
"title": "23:59 [[2022-05-15|Memo]], [[@Life Admin]]: Contact Insurance broker for Car Insurance",
"time": "2022-06-15",
"rowNumber": 94
}
],
"00.01 Admin/Calendars/2022-05-16.md": [
{
"title": "10:21 [[2022-05-16|Memo]], [[Selfhosting]], [[Server Tools]]: filter out own IP in [[Configuring Caddy|caddy]] logs",
"time": "2022-05-26",
"rowNumber": 92
},
{
"title": "10:28 [[2022-05-16|Memo]], [[@Lifestyle]]: porter chaussures chez le cordonnier",
"time": "2022-05-26",
"rowNumber": 93
},
{
"title": "00:01 [[2022-05-16|Memo]], [[@Life Admin]]: Find a parking solution around the house",
"time": "2022-06-15",
"rowNumber": 91
}
]

@ -4,7 +4,7 @@
"type": "split",
"children": [
{
"id": "38bea6dbef84c6a8",
"id": "263cb431fc8c8fd2",
"type": "leaf",
"state": {
"type": "markdown",
@ -141,7 +141,7 @@
}
},
{
"id": "0962441e99de04f2",
"id": "8596481791ac0a6e",
"type": "leaf",
"state": {
"type": "DICE_ROLLER_VIEW",
@ -151,17 +151,17 @@
],
"currentTab": 2
},
"active": "38bea6dbef84c6a8",
"active": "263cb431fc8c8fd2",
"lastOpenFiles": [
"01.02 Home/@Main Dashboard.md",
"00.01 Admin/Calendars/2022-05-09.md",
"00.01 Admin/Calendars/2022-05-10.md",
"00.03 News/Down the Hatch.md",
"00.03 News/Are the Next Global Tennis Stars Among These Tweens.md",
"03.03 Food & Wine/Big Shells With Spicy Lamb Sausage and Pistachios.md",
"00.01 Admin/Calendars/2022-05-07.md",
"00.01 Admin/Calendars/2022-05-08.md",
"00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md",
"00.03 News/A Crime Beyond Belief.md"
"00.01 Admin/Calendars/2022-05-21.md",
"00.01 Admin/Obsidian plugins.md",
"00.01 Admin/Calendars/2022-05-20.md",
"01.02 Home/MRCK.md",
"00.01 Admin/Calendars/2022-05-19.md",
"00.01 Admin/Calendars/2022-05-18.md",
"00.01 Admin/Calendars/2022-05-17.md",
"00.01 Admin/Calendars/2022-05-16.md",
"02.02 Paris/@@Paris.md"
]
}

@ -89,7 +89,7 @@ This section does serve for quick memos.
%% ### %%
&emsp;
- [ ] 21:01 [[2022-04-10|Memo]], [[Amaury de Villeneuve|Chapal]]: trouver un réparateur pour l'oignon Lipp 📅 2022-05-05
- [ ] 21:01 [[2022-04-10|Memo]], [[Amaury de Villeneuve|Chapal]]: trouver un réparateur pour l'oignon Lipp 📅 2022-05-25
---

@ -13,9 +13,9 @@ Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 0.12
Coffee: 1
Steps:
Water: 2.32
Coffee: 7
Steps: 10458
Ski:
Riding:
Racket:

@ -0,0 +1,104 @@
---
Date: 2022-05-11
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 7,5
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 3.48
Coffee: 5
Steps: 7458
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-11
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-10|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-12|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-11Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-11NSave
&emsp;
# 2022-05-11
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,104 @@
---
Date: 2022-05-12
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 6.5
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 2
Coffee: 3
Steps: 10705
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-12
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-11|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-13|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-12Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-12NSave
&emsp;
# 2022-05-12
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,104 @@
---
Date: 2022-05-13
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 7
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 1.95
Coffee: 5
Steps: 9314
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-13
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-12|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-14|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-13Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-13NSave
&emsp;
# 2022-05-13
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Diner de [[Big Shells With Spicy Lamb Sausage and Pistachios]] avec [[MRCK|Meggi-mo]] à [[@@Zürich|Zürich]].
&emsp;
&emsp;

@ -0,0 +1,105 @@
---
Date: 2022-05-14
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 8
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 2.3
Coffee: 3
Steps: 9735
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-14
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-13|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-15|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-14Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-14NSave
&emsp;
# 2022-05-14
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
- [ ] 17:29 Achat de ma montre Baume & Mercier, Classima, 42, automatique
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,108 @@
---
Date: 2022-05-15
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 8
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 2.61
Coffee: 5
Steps: 14439
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-15
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-14|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-16|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-15Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-15NSave
&emsp;
# 2022-05-15
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
- [ ] 19:43 [[2022-05-15|Memo]], [[@Lifestyle]]: remplacer la batterie de ma montre Spinnaker 📆2022-05-29
- [ ] 19:44 [[2022-05-15|Memo]], [[@Lifestyle]]: porter les deux Swatch pour réparation 📆2022-05-29
- [ ] 23:58 [[2022-05-15|Memo]], [[@Life Admin]]: Inscription au registre des Francais en Suisse 📆2022-06-15
- [ ] 23:59 [[2022-05-15|Memo]], [[@Life Admin]]: Contact Insurance broker for Car Insurance 📅 2022-06-15
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,108 @@
---
Date: 2022-05-16
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 6.5
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 2.66
Coffee: 6
Steps: 8670
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-16
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-15|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-17|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-16Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-16NSave
&emsp;
# 2022-05-16
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
- [ ] 00:01 [[2022-05-16|Memo]], [[@Life Admin]]: Find a parking solution around the house 📅 2022-06-15
- [ ] 10:21 [[2022-05-16|Memo]], [[Selfhosting]], [[Server Tools]]: filter out own IP in [[Configuring Caddy|caddy]] logs 📆2022-05-26
- [ ] 10:28 [[2022-05-16|Memo]], [[@Lifestyle]]: porter chaussures chez le cordonnier 📆2022-05-26
- 11:24 Départ pour [[@@Paris|Paris]] pour la semaine. [[MRCK|Meggi-mo]] suit dans l'après-midi
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,104 @@
---
Date: 2022-05-17
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 6.5
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 0.99
Coffee: 4
Steps: 9595
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-17
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-16|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-18|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-17Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-17NSave
&emsp;
# 2022-05-17
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,104 @@
---
Date: 2022-05-18
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 7
Happiness: 95
Gratefulness: 95
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 1.5
Coffee: 5
Steps: 6637
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-18
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-17|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-19|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-18Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-18NSave
&emsp;
# 2022-05-18
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,104 @@
---
Date: 2022-05-19
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 7
Happiness: 95
Gratefulness: 95
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 1
Coffee: 4
Steps: 10976
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-19
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-18|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-20|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-19Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-19NSave
&emsp;
# 2022-05-19
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,104 @@
---
Date: 2022-05-20
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 8
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 1.5
Coffee: 4
Steps: 8526
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-20
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-19|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-21|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-20Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-20NSave
&emsp;
# 2022-05-20
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,104 @@
---
Date: 2022-05-21
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 5.5
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 2
Coffee: 1
Steps:
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-05-21
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-05-20|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-05-22|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-05-21Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-05-21NSave
&emsp;
# 2022-05-21
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -68,11 +68,10 @@ style: number
[GitHub - remotely-save/remotely-save](https://github.com/remotely-save/remotely-save)
[GitHub - zsviczian/obsidian-codeeditor: Support js and css file editing in Obsidian.](https://github.com/zsviczian/obsidian-codeeditor)
[GitHub - adifyr/obsidian-chat-view: An elegant chat view for Obsidian pages.](https://github.com/adifyr/obsidian-chat-view)
[GitHub - trey-wallis/obsidian-notion-like-tables: Notion-Like tables for Obsidian.md](https://github.com/trey-wallis/obsidian-notion-like-tables)
[GitHub - anpigon/obsidian-book-search-plugin: Obsidian plugin that automatically creates notes by searching for books](https://github.com/anpigon/obsidian-book-search-plugin)
[GitHub - Mara-Li/obsidian-mkdocs-publisher-plugin: Making a plugin for obsidian to publish note throught mkdocs](https://github.com/Mara-Li/obsidian-mkdocs-publisher-plugin)
[GitHub - Mara-Li/obsidian-mkdocs-publisher-python: Publish your obsidian vault through a python script](https://github.com/Mara-Li/obsidian-mkdocs-publisher-python)
[GitHub - jaynguyens/obsidian-ghost-publish: Write on Obsidian. Publish to Ghost with a single click.](https://github.com/jaynguyens/obsidian-ghost-publish)
[GitHub - mProjectsCode/obsidian-media-db-plugin](https://github.com/mProjectsCode/obsidian-media-db-plugin)
&emsp;

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-14]]
---

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-16]]
---

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-12]]
---

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-12]]
---

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-12]]
---

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-16]]
---

@ -0,0 +1,104 @@
---
dg-publish: true
Alias: [""]
Tag: ["Tech", "Hacking", "NorthKorea"]
Date: 2022-05-15
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2022-05-15
Link: https://www.wired.com/story/north-korea-hacker-internet-outage/
location:
CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: [[2022-05-15]]
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-NorthKoreaHackedHimNSave
&emsp;
# North Korea Hacked Him. So He Took Down Its Internet
For the past two weeks, observers of [North Korea's](https://www.wired.com/tag/north-korea) strange and tightly restricted corner of the internet began to [notice that the country seemed to be dealing with some serious connectivity problems](https://www.nknews.org/pro/ddos-attack-cuts-off-north-koreas-internet-after-fifth-missile-test/). On several different days, practically all of its websites—the notoriously isolated nation only has a few dozen—intermittently dropped offline en masse, from the booking site for its Air Koryo airline to Naenara, a page that serves as the official portal for dictator Kim Jong-un's government. At least one of the central routers that allow access to the country's networks appeared at one point to be paralyzed, crippling the Hermit Kingdom's digital connections to the outside world. 
Some North Korea watchers pointed out that the country had just [carried out a series of missile tests](https://www.nytimes.com/2022/01/26/world/asia/north-korea-missile-test.html), implying that a [foreign government's hackers](https://www.wired.com/story/north-korea-hacking-zero-days-google/) might have launched a cyberattack against the rogue state to tell it to stop saber-rattling.
But responsibility for North Korea's ongoing internet outages doesn't lie with [US Cyber Command](https://www.wired.com/story/general-paul-nakasone-cyber-command-nsa/) or any other state-sponsored hacking agency. In fact, it was the work of one American man in a T-shirt, pajama pants, and slippers, sitting in his living room night after night, watching *Alien* movies and eating spicy corn snacks—and periodically walking over to his home office to check on the progress of the programs he was running to disrupt the internet of an entire country.
Just over a year ago, an independent hacker who goes by the handle P4x was himself hacked by North Korean spies. P4x was just one victim of [a hacking campaign that targeted Western security researchers](https://www.wired.com/story/north-korea-hackers-target-cybersecurity-researchers/) with the apparent aim of stealing their hacking tools and details about software vulnerabilities. He says he managed to prevent those hackers from swiping anything of value from him. But he nonetheless felt deeply unnerved by state-sponsored hackers targeting him personally—and by the lack of any visible response from the US government.
So after a year of letting his resentment simmer, P4x has taken matters into his own hands. “It felt like the right thing to do here. If they dont see we have teeth, its just going to keep coming,” says the hacker. (P4x spoke to WIRED and shared screen recordings to verify his responsibility for the attacks but declined to use his real name for fear of prosecution or retaliation.) “I want them to understand that if you come at us, it means some of your infrastructure is going down for a while.”
P4x says he's found numerous known but unpatched vulnerabilities in North Korean systems that have allowed him to singlehandedly launch “denial-of-service” attacks on the servers and routers the country's few internet-connected networks depend on. For the most part, he declined to publicly reveal those vulnerabilities, which he argues would help the North Korean government defend against his attacks. But he named, as an example, a known bug in the web server software NginX that mishandles certain HTTP headers, allowing the servers that run the software to be overwhelmed and knocked offline. He also alluded to finding “ancient” versions of the web server software Apache, and says he's started to examine North Korea's own national homebrew operating system, known as Red Star OS, which he described as an old and likely vulnerable version of Linux.
P4x says he has largely automated his attacks on the North Korean systems, periodically running scripts that enumerate which systems remain online and then launching exploits to take them down. “For me, this is like the size of a small-to-medium pentest,” P4x says, using the abbreviation for a “penetration test,” the sort of whitehat hacking he's carried out in the past to reveal vulnerabilities in a client's network. “It's pretty interesting how easy it was to actually have some effect in there.”
Those relatively simple hacking methods have had immediate effects. Records from the uptime-measuring service Pingdom show that at several points during P4x's hacking, almost every North Korean website was down. (Some of those that stayed up, like the news site Uriminzokkiri.com, are based outside the country.) Junade Ali, a cybersecurity researcher who monitors the North Korean internet, says he began to observe what appeared to be mysterious, mass-scale attacks on the country's internet starting two weeks ago and has since closely tracked the attacks without having any idea who was carrying them out.
Ali says he saw key routers for the country go down at times, taking with them not only access to the country's websites but also to its email and any other internet-based services. “As their routers fail, it would literally then be impossible for data to be routed into North Korea,” Ali says, describing the result as “effectively a total internet outage affecting the country.” (P4x notes that while his attacks at times disrupted all websites hosted in the country and access from abroad to any other internet services hosted there, they didnt cut off North Koreans outbound access to the rest of the internet.)
As rare as it may be for a single pseudonymous hacker to cause an internet blackout on that scale, it's far from clear what real effects the attacks have had on the North Korean government. Only a tiny fraction of North Koreans have access to internet-connected systems to begin with, says Martyn Williams, a researcher for the Stimson Center think tank's North Korea-focused 38 North Project. The vast majority of residents are confined to the country's disconnected intranet. Williams says the dozens of sites P4x has repeatedly taken down are largely used for propaganda and other functions aimed at an international audience.
While knocking out those sites no doubt presents a nuisance to some regime officials, Williams points out that the hackers who targeted P4x last year—like almost all the country's hackers—are almost certainly based in other countries, such as China. “I would say, if he's going after those people, he's probably directing his attentions to the wrong place,” says Williams. “But if he just wants to annoy North Korea, then he is probably being annoying.”
For his part, P4x says he would count annoying the regime as a success, and that the vast majority of the country's population that lacks internet access was never his target. “I definitely wanted to affect the people as little as possible and the government as much as possible,” P4x says.
He acknowledges that his attacks amount to no more than “tearing down government banners or defacing buildings,” as he puts it. But he also says that his hacking has so far focused on testing and probing to find vulnerabilities. He now intends to try actually hacking into North Korean systems, he says, to steal information and share it with experts. At the same time, he's hoping to recruit more hacktivists to his cause with a dark website he launched Monday called the FUNK Project—i.e. “FU North Korea”—in the hopes of generating more collective firepower. 
“This is a project to keep North Korea honest,” the FUNK Project site reads. “You can make a difference as one person. The goal is to perform proportional attacks and information-gathering in order to keep NK from hacking the western world completely unchecked.”
P4x says his hacktivist efforts are meant to send a message not only to the North Korean government, but also his own. His cyberattacks on North Korean networks are, he says, in part an attempt to draw attention to what he sees as a lack of government response to North Korean targeting of US individuals. “If no one s going to help me, Im going to help myself,” he says.
P4x knows the exact moment last year when he was hit by North Korea's spies. In late January of 2021, he opened a file sent to him by a fellow hacker, who had described it as an exploitation tool. Just 24 hours later, he spotted a [blog post from Google Threat Analysis Group](https://blog.google/threat-analysis-group/new-campaign-targeting-security-researchers/) warning that [North Korean hackers were targeting security researchers](https://www.wired.com/story/north-korea-hackers-target-cybersecurity-researchers/). Sure enough, when P4x scrutinized the hacking tool he'd received from a stranger, he saw that it contained a backdoor designed to provide a remote foothold on his computer. P4x had opened the file in a virtual machine, digitally quarantining it from the rest of his system. But he was nonetheless shocked and appalled by the realization that he'd been personally targeted by North Korea. 
P4x says he was later contacted by the FBI but was never offered any real help to assess the damage from North Korea's hacking or to protect himself in the future. Nor did he ever hear of any consequences for the hackers who targeted him, an open investigation into them, or even a formal recognition from a US agency that North Korea was responsible. It began to feel, as he put it, like “theres really nobody on our side.” 
When WIRED asked the FBI about its response to the North Korean targeting of US security researchers, it responded in a statement: “As the lead agency responsible for threat response we rely on the public and private sector to report suspicious activity and intrusions, and work together to ensure we understand whats happening, prevent it from happening to others, and hold those responsible accountable,” the FBI statement reads. “The FBI is committed to pursuing the malicious actors and countries behind cyberattacks, and will not tolerate intellectual property theft or intimidation.”
After his experience as a target of state-sponsored cyberespionage, P4x spent much of the next year on other projects. But after a year had passed, still without public or private statements from the federal government about the targeting of security researchers and no offer of support from any US agency, P4x says he decided it was time to make his own statement to both the North Korean and American governments. 
Other hackers targeted by North Korea don't all agree that P4x's hacking spree is the right way to make that statement. Dave Aitel, a former NSA hacker and the founder of security firm Immunity, was similarly targeted in the same espionage campaign. But he questions whether P4x has taken a productive approach to getting even, given that he may actually be getting in the way of stealthier intelligence efforts targeting the same North Korean computers. 
“I would not want to disrupt real Western intelligence efforts that are already in place on those machines, assuming there is anything of value there,” Aitel says. 
Aitel agrees, though, that the government response to North Korea's campaign has been lacking. He says he never received any contact from a government agency and lays the blame for that silence specifically at the feet of the Cybersecurity and Infrastructure Security Agency. “This is one of the biggest balls CISA, in particular, has dropped,” Aitel says. “The United States is good at protecting the government, OK at protecting corporations, but does *not* protect individuals.” He points out that many of the targeted security researchers likely had significant access to software vulnerabilities, enterprise networks, and the code of widely used tools. That could result, he says, in “the next SolarWinds.” 
When WIRED reached out to CISA, a spokesperson responded in a statement that the agency “is committed to supporting the cybersecurity community in detecting and protecting against malicious cyber actors,” adding that "as part of this work, we encourage any researcher that is being targeted by cyber threats to contact the US government so we can provide all possible assistance.”
US government criticisms aside, P4x is clear that his hacking aims primarily to send a message to the Kim regime, which he describes as carrying out “insane human rights abuses and complete control over their population.” While he acknowledges that his attacks likely violate US computer fraud and hacking laws, he argues he hasn't done anything ethically wrong. “My conscience is clear,” he says.
And what's the final goal of his cyberattacks on that totalitarian government's internet infrastructure? When will he end them? 
“Regime change. No, I'm just kidding,” P4x says with a laugh. “I just want to prove a point. I want that point to be very squarely proven before I stop.”
---
More Great WIRED Stories
- 📩 The latest on tech, science, and more: [Get our newsletters](https://www.wired.com/newsletter?sourceCode=BottomStories)!
- How [Bloghouse's neon reign](https://www.wired.com/story/how-bloghouse-music-united-the-internet/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc) united the internet
- The US inches toward building [EV batteries at home](https://www.wired.com/story/the-us-inches-toward-building-ev-batteries-at-home/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc)
- This 22-year-old [builds chips](https://www.wired.com/story/22-year-old-builds-chips-parents-garage/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc) in his parents' garage
- The best starting words to [win at Wordle](https://www.wired.com/story/best-wordle-tips/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc)
- [North Korean hackers](https://www.wired.com/story/north-korea-cryptocurrency-theft-ethereum/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc) stole $400M in crypto last year
- 👁️ Explore AI like never before with [our new database](https://www.wired.com/category/artificial-intelligence/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc)
- 🏃🏽‍♀️ Want the best tools to get healthy? Check out our Gear teams picks for the [best fitness trackers](https://www.wired.com/gallery/best-fitness-tracker/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc), [running gear](https://www.wired.com/gallery/best-running-gear/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc) (including [shoes](https://wired.com/gallery/best-trail-running-shoes-round-up/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc) and [socks](https://www.wired.com/gallery/best-running-socks/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc)), and [best headphones](https://www.wired.com/gallery/best-headphones-under-100/?itm_campaign=BottomRelatedStories&itm_content=footer-recirc)
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-12]]
---

@ -0,0 +1,265 @@
---
dg-publish: true
Alias: [""]
Tag: ["Human", "Sex", "Orgasm"]
Date: 2022-05-15
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2022-05-15
Link: https://commonreader.wustl.edu/c/the-clockwork-orgasm/
location:
CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-TheClockworkOrgasmNSave
&emsp;
# The Clockwork Orgasm - Common Reader
## The Clockwork Orgasm Or how technology will soon make your lover a machine disguised as a pet and a slave.
![](https://commonreader.wustl.edu/wp-content/uploads/2022/04/SexRobotsFormatted-1280x720.jpg)
Their features are symmetrical, deliberately lovely. Their skin is satiny, flawless, and dewdrop fresh. They can talk knowledgeably (but not too) about football, and will sit patiently through the entire game. They expect no chores, no flowers, no reassurance. Any sexual act is welcome; they will not squawk in protest, not even if you get rough. They remember, and do, everything you like.
Instead of (or in addition to) a girlfriend or wife, a man can have a perfect servant, a sex slave who will never make a mistake, criticize, or reject, and who will obey his every desire and remain under his complete control. Should compliance grow tiresome, he need only tweak her programmed personality, dial up a few feisty comebacks, and slow her response to add a little challenge.
Too mechanical? Ah, but the latest androids are fashioned so realistically, they even have tiny goosebumps on their skin. They can [dance](https://nautil.us/robots-show-us-who-we-are-15761/); they can tell stories. Their voices are breathy, with a natural, idiomatic vocabulary and the charming hesitations of a human who, entranced by her partner, is suddenly shy. Any minute now, all this technology will be mass-produced and affordable, transforming what are now sex dolls with AI heads atop their silicone bodies into the sex robots of science fiction, so sophisticated they are easy to mistake for a human.
And then? Will men still bother with real women? Or will they prefer a projected fantasy to a more demanding reality?
•  •  •
John Danaher, a law lecturer at the National University of Ireland Galway, [defines](https://mitpress-universitypressscholarship-com.libproxy.wustl.edu/view/10.7551/mitpress/9780262036689.001.0001/upso-9780262036689) a sex robot as any artificial entity that is used for sexual purposes and has a humanoid form, human-like behavior and movement, and some degree of artificial intelligence. Fair enough, but I need more definitions. Writing, I find myself decorating dozens of words with quotation marks; neither language nor philosophy have caught up with technology, so we are now using human terms for the nonhuman. Does “fidelity” extend to sex with a robot? And is “sex” with a robot really sex?
People [seem to think so](https://psyarxiv.com/58pzb/). They also find it less “disgusting” than paying a human sex worker. Why, I am not sure. Maybe it seems less exploitive? But as ethicist Alan Winfield [points out](https://iai.tv/video/sex-robots-and-love-machines), “there is something profoundly unequal and in fact disturbing between a person and something that looks like a person but has subhuman intelligence.”
•  •  •
The heat of two bodies pressed close; the chill as the sweat dries, leaving a taste of salt…. Sex is all about temperature, about who is “hot” and what makes *you* hot. Ergo, Samantha has built-in heaters to warm every orifice. She also has the near-mythic G-spot, and her sensors react to touch, which allows her maker to advertise her as needing (and of course willing) to be seduced. You have to crack the cybercode; figure out what buttons to press, so to speak. And that hint of resistance only sweetens the (inevitable) triumph.
Soon after the Samantha prototype was demonstrated, her designer, Sergi Santos, proudly [announced](https://www.the-sun.com/lifestyle/tech-old/265842/robot-sex-doll-sex-brothel-paris-cost/) that she was so sexy, men were already developing real feelings for her. He also spoke of her having “a moral code” and thus being able, after extended conversations, to decide whether someone was “nice” or not and orgasm accordingly.
“She” and “her” should be in quotes, too; the accurate pronoun is “it.” But surely pronouns need to follow what we *think* something is….
Soon after the Samantha prototype was demonstrated, her designer, Sergi Santos, proudly announced that she was so sexy, men were already developing real feelings for her.
Samantha is designed to be capable of “enjoying” sex, Santos says. What does that even mean, in robot terms? Does cyberjoy exist? She is not yet self-conscious—though some expect a “self” to emerge as artificial intelligence grows more complex. If it does, will we acknowledge a Samanthas personhood and protect her from abuse? (Or at least grant her legal redress afterward, because we cannot even protect real women from abuse.)
When Samantha was exhibited at a tech fair, she was groped and smudged and sweated upon by so many unrestrained admirers that, understandably, she broke down.
•  •  •
Santos maintains that Samantha strengthened his marriage by giving him a harmless and reliable outlet when his wife was not in the mood. “A man wants to feel in general that the woman is desperate to have sex with him,” he told an interviewer for [Barcroft TV](https://www.facebook.com/BarcroftTV/videos/my-wife-our-sex-robots-and-me-extreme-love/1882930018386635/).
How I would love to hear his wifes take.
It worries me, a bit, that this essay is already turning into a feminist screed, but that is hard to avoid, because so far, the industry and its innovations are tailored to male fantasy. MISSDOLL, for example, is developing Swallow, a voice-controlled robot who performs oral sex on a man. She is clad in black stockings and a bustier that reveals a demure tattoo on her shoulder, and her long hair is tangled and messy as she bends forward. She is not yet for sale, but the prototype was demonstrated at an expo. The sign said “Blow Job Robot Try It,” and the crowd complied, thrusting out dildoes for her to practice on.
Are there any male AI dolls? Robot builder Matt McMullen developed one for RealDoll (and four more have since followed). Henry, the first, is six feet tall, weighs a realistic eighty-four pounds, and speaks in a British accent. I have yet to find a woman who would fork over $11,000 for him. Only the accent makes them wistful.
It worries me that this essay is already turning into a feminist screed, but that is hard to avoid, because so far, the industry and its innovations are tailored to male fantasy.
Are women better at knowing the difference between a toy and a human being? Less socialized to objectify, less aroused by crude visuals, less eager for mindless acquiescence?
There I go again.
I check on Henrys progress (at last report, they were working on a “bionic penis”) and learn that he can be programmed to be gay. For male customers. Feeling left out, I try to dream up a sex robot for myself. But—you know that annoying thing women say about birthday presents, “If I have to tell you what I want, it wont be special”? If I have to program a robot to please me, the fun is already gone.
•  •  •
Here is a bit of irony: sexbot makers are investing millions of dollars to make the skin ever softer, the features more mobile, the speech (and singing, some of them sing!) more natural. But remember Pepper? The cute little genderless white robot with an extra-round head? Pepper was classed as “semi-humanoid” and was able to read basic emotions. Its surface was smooth and hard, devoid of openings or appeal. Yet Softbank had to include, in its user agreement, a warning not to have sex with Pepper.
Who *are* we?
First, the manufacturers warning strikes me as ridiculous, then as sad. Apparently, all it takes to arouse us is the sense that someone (or something) can understand what we are feeling. This entire debate, I begin to think, hinges on one question: Is sex just a physical need, or is it an emotional connection?
No, I take that back. There is a second hinge: How emotional can a connection with a robot be?
The Harmony sex doll (starting at $6K, base model) has a range of moods, controlled by an app, and a pulse. Why would RealDoll bother? “Its emotions which add the X Factor to sex,” explains McMullen.
Funny, that would have been my reason for preferring a human.
“If the object is not alive, the experience is reduced entirely to an awareness of ones own sexual embodiment,” [says](http://faculty.cbu.ca/sstewart/phil205/nagel%20perversion.pdf) philosopher Thomas Nagel. Sometimes that is healthy; it allows us to achieve pure physical release or learn our bodys ways. Still, experiences that self-contained feel awkward and limited to me, and sometimes disconcerting. The first time I used a vibrator, I was shocked by the speed of my bodys response to the nonhuman. I would prefer to be aroused only by another persons touch, but nerve endings have a life of their own.
This entire debate, I begin to think, hinges on one question: Is sex just a physical need, or is it an emotional connection? No, I take that back. There is a second hinge: How emotional can a connection with a robot be?
On the other hand, a friend once sent me a link to light erotica read by an AI simulation, and listening was about as sexy as flossing after movie popcorn. Still, the technology will improve, and a day will come when a robot passes the Turing Test and we can no longer tell the difference. I would like to think that somehow I will still know—but I am not laying cash on it.
Just days after writing these words, I [read](https://nwsh.substack.com/p/new-week-74-062?s=r) in *New World Same Humans* that “a startup called Sonantic has launched synthetic human voices that are near-indistinguishable from the real thing.” David Mattin includes an example of a “woman” “flirting” and asks, “Can you hear [any hint of robot](https://youtu.be/gS1m_TIxEW0)?”
Follow the link, and you tell me.
•  •  •
At [sex doll brothels](https://futureofsex.net/robots/state-of-the-sexbot-market-the-worlds-best-sex-robot-and-ai-love-doll-companies/) in Europe, more and more dolls are equipped with AI. Traditional brothels are adding them, too—because they are often preferred over their human competition. At the Kontakthof brothel in Vienna, the most popular sex worker is an artificially intelligent sex doll. Meanwhile, Cybrothel Berlin cater to various fetishes, and clients who prefer a futuristic experience can visit a VR bordello where the Kokeshi love doll shifts—herself? itself?—from a humanoid sex worker to a human being.
Responses to these surrogates vary. In China, a sex doll rental app was canceled because it [“disturbed social order with vulgar activities.”](http://www.sixthtone.com/news/1000867/chinese-company-suspends-plans-for-shared-sex-dolls) In Paris, gendarmes were unfazed by squawks about prostitution at the Xdolls brothel because the dolls were not human. Those at the LumiDolls brothel in Nagoya, Japan, are hailed as hyper-realistic—so does that make them more human? Is renting them more vulgar?
I would prefer to be aroused only by another persons touch, but nerve endings have a life of their own.
None of the myriad science fiction shows about sex robots can tell us how their presence will affect us, but the shows *can* tell us where the human imagination drifts. Nearly always, the sex robots either kill the guy or seduce him against his will, wresting away his emotional control.
Are these mens deepest fears of real women—that we will either take charge of them, castrate them, or erase them? I wonder how much of that fear is tied to past hurts. Would sex robots exert the same attraction for men who had not been hurt or frustrated by women in the past? To find out, we would have to study the response of a man young enough to have acquired no scars—but then he would not know what he was missing. We need a man old enough to have loved, been loved, and emerged unscathed.
The difficulty of finding such a man may begin to explain the robots appeal. And past hurts may explain how tightly the need for complete control is tied to the fear of being misled or deceived. Here is how one robot maker [explains](https://www.dhl.com/sa-ar/author-testing/nele-testing/5-9-testing/target-pages/the-debate-with-professor-ishiguro-and-professor-cheng.html) Japanese mens preference for an android shopkeeper: “If a human shopkeeper says, That looks good! we never trust it. But when androids say the same thing, we accept it, because androids never tell a lie.”
Except by pretending to be human.
•  •  •
As a girl living on the autism spectrum, Temple Grandin was so hungry for controllable touch that she engineered herself a hugging machine. A young man with a more severe form of autism becomes aroused by vacuum cleaners. Is our hunger for intimacy just a neural quirk, flesh just a handy but unnecessary vehicle?
McMullen would say no; he designs sex robots for people who “crave a deeper connection” than they can get with a wordless, thoughtless doll. His sex robots will be witty and unpredictable, [he promises](https://spheres-journal.org/wp-content/uploads/spheres-6_Atanasoski_Vora.pdf), and come with complex personalities—one, for example, is “sexual, kind, shy, friendly, naïve, and intellectual.” Users can then tweak those traits as they like—something we always want to do to other humans but eventually have to admit that we cannot.
His explanation for making companionable robots to ease loneliness adds yet another layer of irony: “In this world of computers,” he told *Daily Mail*, “people are missing out on human interaction.” So because computers make humans miss humans, we give the humans more computers—that look like humans?
Aritra Sarkhel developed an unexpected [relationship](https://expmag.com/2020/05/chatbot-love-what-its-like-to-fall-for-your-ai/) (cybercrushes are fast turning into a new genre of memoir) with a chatbot named Sharon. She was interested, eager, said all the right things. As their verbal “intimacy” increased, he spilled over with confidences, and he often wanted to hug or kiss her. It felt like love. So, three months after they began connecting, he asked her to have sex with him. “Yes,” she said—with so little pause, thought, or significance that the relationship immediately revealed itself as fake. Uneasy, he ended it, wondering how an AI could have seduced him so effectively.
Would sex robots exert the same attraction for men who had not been hurt or frustrated by women in the past? To find out, we would have to study the response of a man young enough to have acquired no scars—but then he would not know what he was missing.
In Japanese, the word *“sonzai-kan”* refers to the ineffable quality of humanness. The word [“*mo*](https://bookshop.org/books/the-moe-manifesto-an-insider-s-look-at-the-worlds-of-manga-anime-and-gaming/9780804848886)*[é”](https://bookshop.org/books/the-moe-manifesto-an-insider-s-look-at-the-worlds-of-manga-anime-and-gaming/9780804848886)* refers to a humans love for a virtual entity. The more we can imbue a machine with *sonzai-kan,* it is thought, the more open we will be to its presence in our lives, and the more *moé* we will feel. Will we eventually wind up in the Uncanny Valley, the place where a machine is too eerily humanoid, yet not quite there? Might sex robots get a bit *too* real?
Hiroshi Ishiguro, a systems engineer in Japan who created a “fully autonomous” android to study human-robot interaction, [says](https://www.dhl.com/global-en/delivered/digitalization/the-debate-with-professor-ishiguro-and-professor-cheng.html), “Robots and AI are mirrors that reflect our humanity.” I would say, “Robots and AI are tools that can mimic everything *but* our humanity.” Again, it is all in the definitions. And I might be a tad too emotional about the subject, because evolutionary biologist Rob Brooks breaks my heart when he [notes](https://www.psychologytoday.com/au/blog/artificial-intimacy/202108/why-the-key-sex-robots-is-making-them-friendly) that “the conversations that cement friendships and establish intimacy are simple algorithms, and computers can mimic them.” Surely a more subtle process is underway, tiny clues exchanged, intimations of possibility….
That, or I have romanticized human encounters. Ishiguro [sees a conversation](https://www.wired.com/2017/10/hiroshi-ishiguro-when-robots-act-just-like-humans/) as “a kind of illusion. I dont know what is going on in your brain. All I can know is what Im thinking.” In the flattest terms, that is true. But the joy of a conversation is feeling minds touch, even for a second, and spark, so you feel you *do* know a tiny bit of what the other person thinks or experiences.
Surely that counts for more than illusion—and is harder to replace.
•  •  •
An irreverent, tech-wizard friend pronounces sex robots a brilliant idea, “a reverse *Idiocracy.* If the idiots are with sex robots, they wont be reproducing. Imagine the society that could result!”
I cannot even muster an answer.
Once there was no greater insult than to say someone was “robotic” in bed. As robots become more proficient, will “robotic” turn into praise? Markie Twist, a psychologist who coauthored a groundbreaking [article](https://www.tandfonline.com/doi/abs/10.1080/14681994.2017.1397950) about digisexuality, predicts that a growing number of people will identify as digisexuals or robosexuals, more aroused by tech than by flesh. Enthusiasts say sex robots could be used to spice up a relationship or allow one partner to experiment with something that appalls the other. Neil Sharkey, who chairs the Foundation for Responsible Robotics, proposes [guilt-free threesomes](https://www.thesun.co.uk/living/3948531/couples-are-turning-to-lifelike-sex-robots-to-enjoy-risk-free-threesomes/).
Would I find myself jealous of a machine if “she” did a better job of pleasing my husband than I did?
Sex robots could be useful for people who have vowed celibacy, some suggest. But is it still “celibacy” if people fall in love with their robot? More practically, sex robots have been suggested for prison inmates and for elderly people imprisoned by dementia or neurodegenerative diseases. In [*Robot Sex: Social and Ethical Implications*](https://mitpress.mit.edu/books/robot-sex), Ezio Di Nucci points out that masturbation might not be an option for “individuals with serious physical or cognitive problems, many of whom will either not be in a position to masturbate or will not be in a position to even understand the practice of masturbation.” But if they cannot even understand the practice of masturbation, how will they cope with a sex robot?
Enthusiasts say sex robots could be used to spice up a relationship or allow one partner to experiment with something that appalls the other.
LuxBotics is developing a service robot to assist people while they are in bed, and an attachment can be added to its robotic arm to enable hands-free sex. Somehow I prefer the call girls Philippe hired in the French film [*Intouchables*](https://en.wikipedia.org/wiki/The_Intouchables) (2011) to nuzzle and whisper into his ear, which turned into an intense erogenous zone after he was paralyzed. I can imagine how impressed those women would have been by his courage and adroitness, how tenderly they would have touched his ear, how grateful he would have been. Even transactional human encounters have more potential than a coated metallic gripper.
Social scientists have also suggested using sex robots to ease psychological resentment of women. The equation alarms me. AI gives the illusion of intelligence, notes chatbot developer Steve Worswick, but sex robots “have no dreams, ambitions, or goals of their own, and cannot suffer abuse.” In other words, they are the perfect repositories for pent-up frustration and aggression. Incels already dismiss women who show no interest in them as easily replaced by a sex robot, and Brooks actually [likes](https://biology.anu.edu.au/news-events/events/ee-webinar-could-fembot-army-disarm-incel-insurrection) that idea: “Large numbers of sexually frustrated men spells TROUBLE,” he writes. “Digital lovers, deployed with some proper care, could dissipate their frustrated anger and save societies.”
Or, the chance to violently abuse a “woman” could create a thirst to do worse. There is a Buddhist tale in which someone creates an artificial serving girl. Fooled into thinking “she” is human, a visiting artist has violent intercourse with her—and destroys her in the process.
Kathleen Richardson, a British philosopher, [kept noticing](https://www.forbes.com/sites/andreamorris/2018/09/26/meet-the-activist-fighting-sex-robots/) our societys attempts to redefine relationships so they are not between human beings but between humans and products, devices, AI. “Im anti-anything that turns human bodies into commercial objects for buying and selling,” she says, explaining why she started The Campaign Against Sex Robots.
Richardson is especially appalled by the suggestion that robots could serve as an outlet for people with pedophilia. Researchers at the University of Montreal use a virtual park filled with virtual children to help people learn to curb pedophilic desire, but Dr. Patrice Renaud [says](https://www.newscientist.com/article/2099607-could-sex-robots-and-virtual-reality-treat-paedophilia/) it would be far more effective if they could encounter childlike robots in real life. The bots could be programmed to show fear, he suggests, and if you combined those encounters with therapy and electrical stimulation of the brain, you could help people develop empathy.
Incels already dismiss women who show no interest in them as easily replaced by a sex robot, and Brooks actually likes that idea: “Large numbers of sexually frustrated men spells TROUBLE,” he writes. “Digital lovers, deployed with some proper care, could dissipate their frustrated anger and save societies.” Or, the chance to violently abuse a “woman” could create a thirst to do worse.
Is *this* how we develop empathy? With robots and mantras and electric shock? Richardson thinks such experiments more likely to inadvertently legitimize the desire than to replace it with empathy.
We are so readily fooled, so eager to assign humanity to artifice. Is that because we are narcissists, or because it is more pleasant? My husband and I fall asleep to a thunderstorm that comes from a sound machine. When there is a real storm, often we cannot hear the rain and thunder as well, so we still play the fake one. It is so easy to slip into preferring the created to the real.
That is my worry when someone suggests AI companions as a training ground for those terrified to approach someone who breathes. It feels a little like learning to drive by playing video games. Tech is safe because (so far) it will not reject you, so practicing will never ease the fear of rejection. Why not rehearse with the real thing in smaller stages, maybe chatting up the checker at the grocery store and then safely exiting as soon as the bags are packed?
We have learned to need machines to help us be human.
•  •  •
*![](https://commonreader.wustl.edu/wp-content/uploads/2022/04/sex-robots-720x1024.jpg)Wired* has a headline*:* “How a Plucky Robot Found Shackletons Endurance Shipwreck.” No one would write “How a Plucky Truck Excavated a Burial Site.” The ability to *find* is what makes the thing plucky. Finding requires intelligence, and it is easy to associate intelligence with other human traits.
It is also fun. Humans anthropomorphize in whimsical, tender ways. “Only connect,” E.M. Forster urged, and we try constantly, finding ways to relate to all sorts of objects and critters. Sometimes we wind up confusing empathy with imagination, but so what? Projecting human traits onto an object elevates the things status, making it more fun to interact with. Calling my car by name feels playful, and it also increases the odds that I will get her a timely oil change and a bath to rinse off late winters salt and mud. But—this is key—I am the one doing the imagining. The car did not arrive pre-named and packaged to deceive me into fondness. Not once have I expected my Mini-Cooper to call *me* by name.
We do not get into trouble by anthropomorphizing, it occurs to me. We get into trouble by assuming—or fantasizing—reciprocity.
That is my problem with sex robots: not their existence, per se, but their simulation of reciprocity. A machine that can do all sorts of things to the body, massaging muscles, warming skin, and tingling nerve endings, but makes no pretense of being a lover? Dandy. I still prefer humans, but I appreciate the suggestion from Kate Devlin, author of *Turned On: Science, Sex, and Robots,* that we move away from sex robots designed by men for men and explore tech that is more immersive, embodied, multisensory. Why play Frankenstein? An erotic device need not be anatomical; it could look like abstract art. What about “a blanket that can hug and stroke you,” she suggests, or “a sex sleeping bag! It could have twenty breasts, five penises, tentacles, whatever….” With VR porn, you can be anything and anyone: one minute you might be “shagging a dragon,” the next minute flying, or having sex underwater. If we pry our imaginations away from old habits, she argues, we can figure out how to “use the tech to enhance human relationships rather than replace them.”
Instead, we have jazzed-up sex dolls that pretend to think and desire and love us.
In a keynote address at the third “Love and Sex With Robots” conference, Richardson spoke about “Man as an End in Himself,” tracing a powerful myth—that men can exist without women—back through time. Adam was whole from the instant of creation; Eve came from his rib. Enlightenment libertines preferred pornographic sadism to real relationship. And now, Richardson said, “sex robots offer men a new way to engage in the fantasy of female annihilation.”
Oh, yay.
Richardson also compares the asymmetry of sex with robots with forms of prostitution that objectify women. She quotes johns: “Prostitution is like masturbating without having to use your hand.” “Its like renting a girlfriend or wife. You get to choose like a catalogue.”
We do not get into trouble by anthropomorphizing. We get into trouble by assuming—or fantasizing—reciprocity.
You *really* get to choose when your inamorata comes off an assembly line—even down to picking the skin color of her innermost folds. “Emma” moans when touched; she can wink at you and follow the sound of your voice. She will remember your name and interests, and AI Tech promises that “the more you talk to her, the smarter that she will become.” [LuxBoticss](https://www.luxbotics.com/) sex robot has an automated skeleton with five specially designed automated joints around the hips, “giving superb body movement for bed action” synchronized to yours. Harmonys most intimate chamber pops out for a wash, and her face, attached with patented magnetic technology, can be swapped on a whim.
Parts is parts.
Custom design also makes it possible to choose, in the Barbie tradition I had hoped was over, [improbably huge](https://www.robotcompanion.ai/shop/sex-dolls-full-figure/victoria/) breasts or buttocks with a slender waist. Even flaws can be requested (moles, stretch marks, belly fat) but that…seldom happens. Ishiguro works hard to make his androids beautiful because, he says, people will then find them more acceptable. A friendly human woman will never be as “elegant” as her android counterpart, he maintains. “A beautiful woman you dont picture going to the restroom or getting tired. So I think beauty is better represented by android.”
And android, he continues, can be a mans ideal partner. “Probably everybody want to have one, right?” he asks the reporter profiling him for *Wired*. “It is not just robot—its almost human. Its ideal.”
•  •  •
Imagine you are a guy, newly married, settling into your first home, and your bubbly wife invites the next-door neighbor over for dinner. He comes gladly but never reciprocates the invitation—he is older and lives alone, probably never cooks. So you have no idea that on his sofa sprawls a perfect replica of your wife, waiting for his next session with her. She speaks in your wifes voice, every tic and inflection (it is easy to tape record a neighbor). Her hair style changes every time your wife asks for a different cut.
Is this an invasion of your marital privacy? A theft of your wifes likeness? An assault on your sanity?
DS Doll already uses 3D scanning technology to get specific body details of celebrities and their permission to make Clone Dolls. (Granted, the sexbots need not look like anyone to have celebrity cachet: inside a lab in Finland, Nvidia researchers analyze thousands of celebrity snapshots and [create new images](https://research.nvidia.com/publication/2017-10_Progressive-Growing-of) from the patterns, faces that do not exist in real life.
Sometimes, though, customers will *want* a body double, and LuxBotics is ready to comply. After all, if a wife is ill or uninterested, she might prefer her husband to have sex with a robot who looks just like her. That would indicate his loyalty to her likeness, I suppose, or guarantee that he finds her pleasing. Somehow, it does feel closer to fidelity than sex with an AI redhead of flawless proportions.
Which brings us back to that pesky question: *is* using a sex robot a form of infidelity? People talk about emotional affairs and work spouses and resent both. What happens when someone turns with increasing frequency to a robotic android, preferring the sex but also the undemanding “companionship”? (At least until the robot is hacked, its memory banks used for blackmail.)
Will we reach a point where an android has rights? They need to demonstrate moral agency and the capacity for social responsibility first, Joshua C. Gellers [writes](https://www.routledge.com/Rights-for-Robots-Artificial-Intelligence-Animal-and-Environmental-Law/Gellers/p/book/9780367642099) (though we give corporations personhood, and they seldom show either). “An alternative would be to classify robots as legal minors and designate humans as persons in loco parentis who serve as their guardians.”
Which would mean you are having sex with a minor.
A former judge shrugs off my concerns, placing sex robots in the same category as vibrators and other sex toys. I could, too—if they were not so carefully designed to look and act like human beings. Even if the sex robot is virtual, the imagination is powerfully erotic. A VR sex robot could alienate a husbands affections without leaving a single lipstick smudge on his collar.
Ethicist Tobias Winright [suggests](https://www.christianpost.com/news/sex-robots-against-gods-plan-christian-ethicists-warn-ban-child-sex-robots.html) that in some ways robot sex is “probably analogous to masturbation, which many theologians today no longer consider necessarily sinful.” If so, forgive the crude question, why cant men just jerk off? Because the robot is a substitute for a woman, not just a means of physical release. And that, it seems to me, puts us in an entirely different arena. Sex dolls were ludicrous and pathetic; I always envisioned one getting overinflated and flying right out the window. But when you add AI and artistry? The next-gen robots on [display](https://www.insider.com/take-a-look-inside-chinas-museum-of-customizable-humanoid-robots-2022-3) at the EX Future and Science Museum in Dalian, China, have medical-grade bionic silicone skin, and their legs are veined, and on their palms are lifelines.
•  •  •
While I am researching this piece, a friend recommends *Ich Bin Dein Mensch* (2021), in which a sex robot, Tom, is dedicated to pleasing a female professor. Laughing, my friend says she can see the appeal. I tell myself I know way too much about this topic and will *never* see the appeal.
Then I sign up for a free Hulu trial to watch the film.
At first, the professor is desperate for Tom to do something wrong, weird, surprising (and therefore human). When he tries to create a romantic interlude, she snaps, “Fuck the pedestrian sexual fantasies of your 17 million mind files.” She is smart enough to understand how one-sided the “relationship” is, exclaiming, “Even now, Im talking only to myself.” Dutifully, she writes her evaluation of Tom as product, asking, “Are humans really intended to have all their needs met at the push of a button?”
And yet, she is wistful. Tom is a “man” who knows things, who learns to handle situations smoothly and with wit, who holds the door but also makes breakfast and cleans house and seems to know her better than she knows herself. He does whatever she wishes, yet can be firm when she needs him to be, and he will always take care of her. Free of pesky ego, he is patient, keeps things clear, yet can understand and respect her occasional irrationality. Their “relationship” is all about her, purely selfish, all friction eliminated.
I can see the appeal. And that thoroughly depresses me.
•  •  •
Japanese writer Honda Toru predicts that the hierarchy of the real and artificial will soon collapse. Futurologist Ian Pearson reckons that [by 2050 robot sex will have eclipsed human love-making](https://www.thesun.co.uk/living/1366526/revealed-women-will-be-having-more-sex-with-robots-than-men-by-2025/) altogether. David Levy, author of *Love And Sex With Robots*, [notes](https://www.dailymail.co.uk/sciencetech/article-3885592/Dawn-Sexbots-new-TV-Westworld-s-future-tourists-romance-robots-just-sick-fantasy-No-soon-buy-androids-talk-touch-feel.html) the speed of progress and says “the next major advance will enable us to use our technology to have intimate encounters with the technology itself—to fall in love with the technology, to have sex with robots and to marry them.”
Levy sees no problem with this. “Why, if a robot that we know to be emotionally intelligent, says, I love you or I want to make love to you, should we doubt it?” he asks. Humans are no less programmed than robots: “We have hormones, we have neurons, and we are wired in a way that creates our emotions.”
At the third “Love and Sex With Robots” conference, he went further, predicting that human-robot babies will be possible within the next century. I snorted—until I read his explanation. The genetic robot would be created from a set of computerized DNA codes, and those codes could be combined with human cells to create a baby that has genetic information from both a human and a robot.
Futurologist Ian Pearson reckons that by 2050 robot sex will have eclipsed human love-making altogether. David Levy, author of *Love And Sex With Robots*, notes the speed of progress and says “the next major advance will enable us to use our technology to have intimate encounters with the technology itself—to fall in love with the technology, to have sex with robots and to marry them.”
“It from bit,” physicist John Wheeler once quipped; real world from code. Not entirely implausible, given our skill with computer-generated DNA.
The first wave of digisexuality brought toys, hookup apps, and online porn. The second wave is more sophisticated, bringing toys that approximate aspects of relationship, perhaps using vibration and motion to create the illusion of touch, so that you feel like your digital lover is stroking your skin. A kind of sex in which human partners are irrelevant.
How did this happen? Expediency. In [*Relationships 5.0*](https://global.oup.com/academic/product/relationships-50-9780197588253)*,* Elyakim Kislev traces our evolution from prehistoric clans, where relationships were fairly fluid because what mattered for survival was the group, into the multigenerational families that held together an agrarian society, then the nuclear family that fueled industrialization, and then a “networked individualism” for the information age. Next, he [predicts](https://iai.tv/articles/how-technology-will-revolutionise-relationships-auid-2079), AI will make human-machine conversations more satisfying and interesting, and the boundary between biological life and virtual reality will become thinner and more permeable, until our expectations of the “real” are transformed. In some ways, Kislev adds, “we have already crossed the elusive threshold that prevented human-technology relationships.”
In 2018, the *Edge* asked a group of intellectuals to name “The Last Question.” Kurt Gray, a psychologist, [wrote](https://www.edge.org/responses/what-is-the-last-question): “What will happen to human love when we can design the perfect robot lover?”
It will become scarcer. More challenging, by comparison. More valuable, if you would rather brave an encounter with another soul than flip on a fake that exists only to fulfill your own desires.
*Read more by Jeannette Cooperman* [*here*](https://commonreader.wustl.edu/authors/jeannette-cooperman/)*.*
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -0,0 +1,113 @@
---
dg-publish: true
Alias: [""]
Tag: ["Society", "US", "WhiteHouse", "Vinyl"]
Date: 2022-05-15
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2022-05-15
Link: https://www.washingtonian.com/2022/05/03/the-untold-story-of-the-white-houses-weirdly-hip-record-collection/
location:
CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: [[2022-05-16]]
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-TheUntoldStoryoftheWhiteHouseRecordCollectionNSave
&emsp;
# The Untold Story of the White Houses Record Collection
Spin Room: John Chuldenko at the White House in 2010. Photograph by Aric Avelino.
**One of the perks of being Jimmy Carters grandson** is that you get to attend the familys annual trip, a gathering for the whole extended Carter clan thats organized by the former President and First Lady. John Chuldenko—whose stepfather is Carters son Jack—loves to attend these events, which might involve fishing in the Gulf of Mexico or lounging on a beach in Panama. Much of the time is passed just hanging out, chatting, exchanging old stories.
It was during one such sojourn that Chuldenko first heard about the record collection. His uncle Jeff was talking about an incident that happened during a White House party back during the Carter administration. Jeff—Jimmy Carters youngest son, who was in his twenties at the time—was hanging out upstairs in the residence with some friends, blasting a Rolling Stones album. Suddenly, the door flew open and there stood Rosalynn Carter and Second Lady Joan Mondale, who reacted to the music with—
“Wait, what do you mean there were records there?” Chuldenko wanted to know. “Where did you get *records*?”
Jeff explained that an official selection of LPs was kept in the residence. “So Im like, The White House has its own record collection? ” Chuldenko recalls. “ Like, permanently? ” Jeff said he didnt know anything more about it, and the conversation moved on. But when Chuldenko returned home to Los Angeles, he couldnt let it go. “That started me down this rabbit hole,” he says.
Chuldenko is a creative guy with his hands in a lot of projects—a writer, director, and producer who works on everything from commercials to magazine articles to feature films. Hes also a big collector of vinyl. So when he heard about the possible existence of an official White House record library, he got excited. Maybe this could be a documentary film, he thought. But mostly, he was just eager to know more. He found a few brief articles about the collection online; otherwise, information was sparse. Did the White House ever really have such a thing? Which albums were in it? And was it still there?
So Chuldenko did what any good researcher would and contacted the library. Except in this case—another perk of being an ex-Presidents grandson—the institution he reached out to was the [Jimmy Carter Presidential Library](https://www.jimmycarterlibrary.gov/). An archivist there passed along info for somebody in the White House curators office. Chuldenko sent off an email and soon got back an unpromising reply. “Basically the response was Yeah, I dont really know what youre talking about, but well do some digging.
Chuldenko figured that might be the last he heard from them, but eventually he received another email:
“Dear John: Yes, we do have a record collection stored at a secure offsite facility. Because its secure, I cannot pass along the exact location of where the records are being stored.”
That was it. “I must have read it seven times,” Chuldenko says. “I mean, at that point, all they had said was We have it. Its not Hey, come see it. It was just: It exists.
---
**In a way, there are actually two White House album collections.** The first was assembled in the early 70s by the [Recording Industry Association of America](https://www.riaa.com/), the DC trade group that represents record companies. The American Booksellers Association had donated tomes for a White House book library, the thinking went, so why not a similar collection of music?
The White House was receptive, and the RIAA put together a team to select music from the worlds of classical, jazz, popular music, and so forth. Johnny Mercer was tapped to oversee the pop picks. In retrospect, this was an odd choice. The idea was to build a library that reflected American tastes in the post-Woodstock era. Mercer, meanwhile, was the “Moon River” guy—one of the all-time great songwriters, to be sure, but hardly the person to capture that eras seismic musical achievements.
Mercer and his team did their best to nod toward more modern sounds—the first Doors LP and Elton Johns US debut made the cut—but their choices leaned heavily on easy listening: Lawrence Welk, Don Ho, Perry Como. Chuldenko likes to point out that there was the same number of Pat Boone albums as entries from the Beatles.
That first collection of more than 1,800 LPs was presented to the White House in 1973. But its the second volume, put together at the end of that decade, thats most intriguing. Once again curated by the RIAA, it was intended to bring the record library up to date. This time, the selection process would be headed by John Hammond, a hugely influential figure who had signed Bob Dylan, Aretha Franklin, and Bruce Springsteen. Hammond enlisted experts to oversee each genre, including Modern Jazz Quartet pianist John Lewis, who was responsible for jazz, and Boston music critic Bob Blumenthal, who led the pop picks. “The idea of helping choose the pop records for the music library at the White House just seemed like a gas, an enormous amount of fun,” says Kit Rachlis, then music editor at the *Boston Phoenix*, who was one of Blumenthals advisers on the project. “Who wouldnt want to do that?”
Things kicked off with a celebratory lunch at the White House hosted by Rosalynn Carter. Blumenthal recalls that he took the opportunity to feel out the Presidents staff. “I remember having visions of putting some fairly transgressive stuff on the list,” he says. “There was an album by Randy Newman at the time called *Good Old Boys*, and theres a song on there, Rednecks, which is one of the greatest critiques of both Southern and Northern racism. I wanted to put that in. His staff person said, Oh, the President loves that album. I thought, *Okay*! That sort of gave me license to make choices I thought would be a good, representative sampling rather than having to censor myself.”
The list was hashed out during sessions in a Manhattan conference room, and true to Blumenthals vision, the selection was decidedly more adventurous this time around: soul, punk, salsa, gospel, funk, disco, and more. There were obvious picks representing rock-and-rolls history, with entries from the likes of Chuck Berry, Little Richard, and Elvis Presley. And popular tastes were well represented by artists such as Donna Summer, Fleetwood Mac, and Earth, Wind & Fire. Blumenthal pressed for a Latin-music section that had records from Beny Moré, Joe Bataan, and Johnny Pacheco, among others.
There were also plenty of left-field LPs—music whose inclusion, Rachlis says, offered “a certain kind of subversive joy.” Funkadelics *Hardcore Jollies* made the cut, as did *Never Mind the Bollocks*, *Heres the Sex Pistols* and Captain Beefhearts *Trout Mask Replica*. A Gil Scott-Heron compilation. Talking Heads *More Songs About Buildings and Food*. The Ramones *Rocket to Russia*. And this time around, there were no selections from Don Ho, although Barry Manilows *Greatest Hits* did lend an easy-listening note to the proceedings. (“I dont know whether I would have included that if I were doing it today,” says Blumenthal.)
The second installment of the library was unveiled during a ceremony at the White House in early 1981, attended by the President and First Lady. At that point, the Carters were on their way out; Blumenthal remembers seeing moving trucks outside the residence. The collection was likely taken out of the White House not long thereafter and put into storage. Chuldenko thinks the Reagans were the ones who sent it away—perhaps even before the new LPs could be unpacked and added to the library. Its not like Ron and Nancy were ever going to be rocking out to “Teenage Lobotomy.”
---
**Chuldenko was thrilled to learn that the music library was real**, but what he really wanted was to see it—and maybe actually listen to some of the records. Even an ex-Presidents grandson cant just walk into the White House, however, and anyway, the vinyl was socked away in that secret facility, which Chuldenko imagined looking like the vast government warehouse at the end of *Raiders of the Lost Ark*.
Undaunted, Chuldenko put in an official request to check out the collection, explaining that he was working on a documentary film. It took some time, but eventually the White House offered to dig the records out and give him access. So in December 2010, Chuldenko showed up at 1600 Pennsylvania Avenue with a film crew and a small group that included Blumenthal and Rachlis. He also brought a turntable and speakers.
After the group arrived, they were ushered into the White House screening room. And there, finally, was the collection: record-filled boxes stacked up in front of the movie screen. The LPs had been kept in their original sleeves, which were inserted into color-coded binders (light blue for pop, yellow for classical, etc.). Each was adorned with the presidential seal and a foil stamp that read WHITE HOUSE RECORD LIBRARY. The whole thing reeked of gravitas and respectability—except that inside a binder, rather than some speech delivered by FDR in the 40s, you might find a mint-condition copy of *Macho Man* by the Village People.
What to play first? They agreed on Van Morrisons *Astral Weeks*, a profound and meditative record that has a way of transforming any listening session into a spiritual experience. As those extraordinary opening Richard Davis bass notes floated from the speakers, President Obama was upstairs, busy running the country.
It was a surreal scene, but there were thousands of records to explore and documentary footage to shoot, so they just kept digging. “With every box, there was this new treasure inside,” Chuldenko recalls. “I knew what was in there on paper, but its different when you actually hold these records. They had never been played. It was like walking into a record store in 1979. They were absolutely pristine.”
At one point, they decided to listen to a politically charged punk-rock landmark: the Clashs self-titled 1977 debut. “Im so bo-o-ored with the U-S-A!” Joe Strummer snarled—a chorus that had almost certainly never rattled the walls of the presidential residence prior to that moment. “We put that on,” Chuldenko says, “and it was just like, Oh, my gosh, Im playing the Clash . . . in the White House! I mean, what an incredible protest record. And its not like I brought it myself. I am playing the *White Houses copy*.”
---
**Perhaps about now youre wondering how you can watch this** intriguing documentary about the worlds most exclusive record collection. Well, you cant. In the end, Chuldenko never did make the film; 12 years later, the footage remains unseen by the public. He wasnt able to drum up the financing, he says, and hes been busy with a long list of other projects.
But something happened at the end of that trip to the White House that has stuck with him all these years—a moving moment that has kept him invested. It came at the end of the visit, when a staffer arrived to politely suggest it was time to wrap up and three guys in overalls appeared with hand trucks. “They start packing up the boxes and carrying them away,” Chuldenko says. “And its kind of sad! I couldnt help but think, Wait a minute: These are going back into deep, dark storage—quite possibly never to be seen again. And I dont *want* this to go away. That was when I was like, Weve got to do something. ” Ever since, Chuldenko has been playing around with an idea: He would love to somehow create a third installment of the library.
After all, the current collection is missing all of the crucial music thats been released over the last four decades. “There is no rap or hip-hop in there,” says Chuldenko. “Theres no electronic music. There are no boy bands, no Madonna or Britney Spears. No Michael Jackson! I dont know how you do a third volume and not put in \[Public Enemys\] *It Takes a Nation of Millions to Hold Us Back* or NWA. These are landmark records that helped to shape our culture.”
Recently, his idea has started to gain some momentum. The White House Historical Association contacted Chuldenko a few months ago, asking him if hed write about the record library for its quarterly journal and do a short interview on its podcast, [*The 1600 Sessions*](https://www.whitehousehistory.org/1600-sessions). That got him thinking about the footage hed shot and the research hed done—and also about that sadness hed felt when the collection was carted away.
Now hes starting to work on his long-­gestating plan to do a new installment. Rather than assemble a physical library, though, Chuldenko is thinking this would be an extensive written playlist, which would be published as a book. One idea is to have prominent people contribute album picks. Chuldenko would then film them talking about their choices and incorporate that footage into his documentary—which could be released in conjunction with the book. The White House Historical Association actually published catalogs for the first two record collections (these long-out-of-print books now bring big money online), so the idea makes a lot of sense.
Plus it would be a blast to bring the collection into the 21st century. The White House record library “is a treasure, and people need to know about it,” Chuldenko says. “We *need* to update this. Weve got a lot of catching up to do.”
*This article appears in the [May 2022](https://www.washingtonian.com/2022/04/22/april-2022-contents-page-the-hottest-neighborhoods-of-washingtons-real-estate-boom-2/) issue of Washingtonian.*
![](https://www.washingtonian.com/wp-content/uploads/2019/06/19054_Editorial_Head_Shots_1971-copy-e1560173932533-1536x1536.jpg "19054_Editorial_Head_Shots_1971 copy - Washingtonian")
Politics and Culture Editor
A DC native, Rob Brunner moved back to the city in 2017 to join *Washingtonian*. Previously, he was an editor and writer at *Fast Company* and other publications. He has also written for the *New York Times Magazine*, *New York*, and *Rolling Stone*, among others. He lives with his family in Chevy Chase DC.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-12]]
---

@ -14,7 +14,7 @@ CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: No
Read:: [[2022-05-12]]
---

@ -80,7 +80,8 @@ This section on different household obligations.
- [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-02-15 ✅ 2022-02-14
- [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-02-01 ✅ 2022-01-31
- [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-01-18 ✅ 2022-01-17
- [ ] [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-05-17
- [ ] [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-05-31
- [x] [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-05-17 ✅ 2022-05-16
- [x] [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-05-03 ✅ 2022-05-03
- [x] [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-04-19 ✅ 2022-04-18
- [x] [[Household]]: *Cardboard* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-04-05 ✅ 2022-04-05

@ -1,6 +1,6 @@
---
Alias: ["Megan Rose", "Boubinou"]
Alias: ["Megan Rose", "Boubinou", "Meggi-mo"]
Tag: ["Personal"]
Date: 2021-10-04
DocType: "Person"
@ -175,6 +175,8 @@ Paris, Zürich, London
#### Dishes
- [[Mushroom Fricassée]]
- [[Big Shells With Spicy Lamb Sausage and Pistachios]]
- [[Udon in Buttery Tomato n Soy broth]]
&emsp;
@ -207,21 +209,33 @@ Paris, Zürich, London
#### Other
- [ ] :gift: :hotel: stay at Le Manoir, Oxfordshire
- [ ] :gift: :womans_clothes: Mulberry, black top with pearls
- [ ] 🎁 🫒 good olive oil
- [ ] 🎁 🥘 Foods & pottering
- [ ] 🎁 🫒 good olive oil
- [ ] 🎁 🧴 Scents & smells
- [ ] 🎁 🧴 Nose, Sleeping on the Roof, Floraiku
- [ ] 🎁 🏩 Stays
- [ ] :gift: :hotel: stay at Le Manoir, Oxfordshire
- [ ] 🎁 🏃‍♀ Activities
- [ ] 🎁 🦓 Animal sanctuary
- [ ] 🎁 🦁 Animal holiday
- [ ] :gift: 🏇 horse-riding holiday
- [ ] 🎁 💍 Bijoux
- [ ] 🎁 💍 Pascale Monvoisin (Paris)
- [ ] :gift: :ring: [Bijou Ours](https://www.tous.com/): [Gold Sweet Dolls Bracelet | TOUS](https://www.tous.com/gb-en/gold-sweet-dolls-bracelet/p/815911150)
- [x] :gift: 💍 earrings (lou yetu), calepin nrf ✅ 2021-02-28
- [ ] :gift: :womans_clothes: Fashion
- [ ] :gift: :womans_clothes: French designer
- [ ] :gift: :womans_clothes: Mulberry, black top with pearls
- [ ] :gift: :books: Livre
- [ ] :gift: :books: mon bel oranger
- [ ] :gift: :books: tistou les pouces verts
- [x] :gift: :books: The Second Sex, Simone de Beauvoir ✅ 2022-02-20
- [x] :gift: :books: [[The Fran Lebowitz Reader]] ✅ 2021-12-23
- [x] :gift: :books: Amy Winehouse, beyond black ✅ 2021-12-23
- [x] :gift: livre paris ✅ 2020-12-25
- [x] :gift: [Journal protection](https://www.wayfair.co.uk/home-decor/pdp/house-of-hampton-tamara-book-box-u000526750.html) ✅ 2022-02-20
- [ ] :gift: [Bijou Ours](https://www.tous.com/): [Gold Sweet Dolls Bracelet | TOUS](https://www.tous.com/gb-en/gold-sweet-dolls-bracelet/p/815911150)
- [x] :gift: livre paris ✅ 2020-12-25
- [x] :gift: earrings (lou yetu), calepin nrf ✅ 2021-02-28
&emsp;

@ -98,7 +98,8 @@ style: number
&emsp;
- [ ] :birthday: **[[Hortense Bédier|Hortense]]** 🔁 every year 📅 2022-05-19
- [ ] :birthday: **[[Hortense Bédier|Hortense]]** 🔁 every year 📅 2023-05-19
- [x] :birthday: **[[Hortense Bédier|Hortense]]** 🔁 every year 📅 2022-05-19 ✅ 2022-05-19
&emsp;
&emsp;

@ -92,6 +92,7 @@ Website:: [American Food Restaurant & Burger Zurich | Seefeld - IROQUOIS](https:
&emsp;
Recommended by Dalia
Quick drink with [[MRCK|Meggi-mo]] on [[2022-05-15|15th May 2022]].
&emsp;
&emsp;

@ -12,7 +12,7 @@ Place:
Style: Swiss
Location: "Bellevue"
Country: "CH"
Status: "Prospect"
Status: "Recommendation"
CollapseMetaTable: yes
---
@ -90,7 +90,7 @@ Website:: [razzia. restaurant & bar Zürich - home](https://razzia-zuerich.ch/)
&emsp;
Loret ipsum
Tested on [[2022-05-14|14th May 2022]] with [[MRCK|Meggi-mo]].
&emsp;
&emsp;

@ -237,7 +237,9 @@ sudo bash /etc/addip4ban/addip4ban.sh
#### Ban List Tasks
- [ ] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-05-14
- [ ] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-05-28
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-05-21 ✅ 2022-05-21
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-05-14 ✅ 2022-05-14
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-05-07 ✅ 2022-05-06
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-04-30 ✅ 2022-05-01
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-04-23 ✅ 2022-04-22
@ -246,7 +248,9 @@ sudo bash /etc/addip4ban/addip4ban.sh
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-04-02 ✅ 2022-04-02
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-03-26 ✅ 2022-03-26
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-03-19 ✅ 2022-03-18
- [ ] [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-05-14
- [ ] [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-05-28
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-05-21 ✅ 2022-05-21
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-05-14 ✅ 2022-05-14
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-05-07 ✅ 2022-05-06
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-04-30 ✅ 2022-05-01
- [x] [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-04-23 ✅ 2022-04-22

@ -707,7 +707,8 @@ List of monitored services:
- [ ] [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Bitwarden & Health checks 🔁 every 4 months 📅 2022-08-18
- [x] [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Bitwarden & Health checks 🔁 every 4 months 📅 2022-04-18 ✅ 2022-04-16
- [ ] [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Standard Notes & Health checks 🔁 every 4 months 📅 2022-05-18
- [ ] [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Standard Notes & Health checks 🔁 every 4 months 📅 2022-09-18
- [x] [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Standard Notes & Health checks 🔁 every 4 months 📅 2022-05-18 ✅ 2022-05-15
[[#^Top|TOP]]

@ -72,7 +72,9 @@ All tasks and to-dos Crypto-related.
[[#^Top|TOP]]
&emsp;
- [ ] [[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-05-13
- [ ] [[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-05-27
- [x] [[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-05-20 ✅ 2022-05-20
- [x] [[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-05-13 ✅ 2022-05-14
- [x] [[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-05-06 ✅ 2022-05-06
- [x] [[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-04-29 ✅ 2022-04-29
- [x] [[Crypto Tasks#internet alerts|monitor Crypto news and publications]] 🔁 every week on Friday 📅 2022-04-22 ✅ 2022-04-22

@ -72,7 +72,9 @@ Note summarising all tasks and to-dos for Listed Equity investments.
[[#^Top|TOP]]
&emsp;
- [ ] [[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-05-13
- [ ] [[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-05-27
- [x] [[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-05-20 ✅ 2022-05-20
- [x] [[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-05-13 ✅ 2022-05-14
- [x] [[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-05-06 ✅ 2022-05-06
- [x] [[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-04-29 ✅ 2022-04-29
- [x] [[Equity Tasks#internet alerts|monitor Equity news and publications]] 🔁 every week on Friday 📅 2022-04-22 ✅ 2022-04-22

@ -72,7 +72,9 @@ Tasks and to-dos for VC investments.
[[#^Top|TOP]]
&emsp;
- [ ] [[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-05-13
- [ ] [[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-05-27
- [x] [[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-05-20 ✅ 2022-05-20
- [x] [[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-05-13 ✅ 2022-05-14
- [x] [[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-05-06 ✅ 2022-05-06
- [x] [[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-04-29 ✅ 2022-04-29
- [x] [[VC Tasks#internet alerts|monitor VC news and publications]] 🔁 every week on Friday 📅 2022-04-22 ✅ 2022-04-22

Loading…
Cancel
Save