vault backup: 2025-07-03 17:03:26

This commit is contained in:
2025-07-03 17:03:26 -04:00
parent de1a089fd8
commit a80b41124d
60 changed files with 24600 additions and 267 deletions
View File
+10 -1
View File
@@ -1 +1,10 @@
{}
{
"livePreview": false,
"readableLineLength": false,
"strictLineBreaks": false,
"propertiesInDocument": "source",
"showLineNumber": true,
"autoPairMarkdown": false,
"useTab": false,
"alwaysUpdateLinks": true
}
+7 -1
View File
@@ -1 +1,7 @@
{}
{
"textFontFamily": "jetbrains mono",
"monospaceFontFamily": "jetbrains mono",
"interfaceFontFamily": "jetbrains mono",
"cssTheme": "Obsidian gruvbox",
"theme": "obsidian"
}
+8
View File
@@ -0,0 +1,8 @@
[
"obsidian-git",
"homepage",
"tag-wrangler",
"obsidian-tasks-plugin",
"table-editor-obsidian",
"dataview"
]
+4 -4
View File
@@ -1,13 +1,13 @@
{
"collapse-filter": true,
"collapse-filter": false,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": true,
"collapse-color-groups": false,
"colorGroups": [],
"collapse-display": true,
"collapse-display": false,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
@@ -17,6 +17,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1.000000000000001,
"scale": 0.6542239853675967,
"close": false
}
+36
View File
@@ -0,0 +1,36 @@
{
"editor:add-cursor-above": [
{
"modifiers": [
"Alt",
"Mod"
],
"key": "ArrowUp"
}
],
"editor:add-cursor-below": [
{
"modifiers": [
"Alt",
"Mod"
],
"key": "ArrowDown"
}
],
"editor:swap-line-up": [
{
"modifiers": [
"Alt"
],
"key": "ArrowUp"
}
],
"editor:swap-line-down": [
{
"modifiers": [
"Alt"
],
"key": "ArrowDown"
}
]
}
+20876
View File
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
{
"id": "dataview",
"name": "Dataview",
"version": "0.5.68",
"minAppVersion": "0.13.11",
"description": "Complex data views for the data-obsessed.",
"author": "Michael Brenan <blacksmithgu@gmail.com>",
"authorUrl": "https://github.com/blacksmithgu",
"helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/",
"isDesktopOnly": false
}
+141
View File
@@ -0,0 +1,141 @@
.block-language-dataview {
overflow-y: auto;
}
/*****************/
/** Table Views **/
/*****************/
/* List View Default Styling; rendered internally as a table. */
.table-view-table {
width: 100%;
}
.table-view-table > thead > tr, .table-view-table > tbody > tr {
margin-top: 1em;
margin-bottom: 1em;
text-align: left;
}
.table-view-table > tbody > tr:hover {
background-color: var(--table-row-background-hover);
}
.table-view-table > thead > tr > th {
font-weight: 700;
font-size: larger;
border-top: none;
border-left: none;
border-right: none;
border-bottom: solid;
max-width: 100%;
}
.table-view-table > tbody > tr > td {
text-align: left;
border: none;
font-weight: 400;
max-width: 100%;
}
.table-view-table ul, .table-view-table ol {
margin-block-start: 0.2em !important;
margin-block-end: 0.2em !important;
}
/** Rendered value styling for any view. */
.dataview-result-list-root-ul {
padding: 0em !important;
margin: 0em !important;
}
.dataview-result-list-ul {
margin-block-start: 0.2em !important;
margin-block-end: 0.2em !important;
}
/** Generic grouping styling. */
.dataview.result-group {
padding-left: 8px;
}
/*******************/
/** Inline Fields **/
/*******************/
.dataview.inline-field-key {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-primary-alt);
color: var(--nav-item-color-selected);
}
.dataview.inline-field-value {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-secondary-alt);
color: var(--nav-item-color-selected);
}
.dataview.inline-field-standalone-value {
padding-left: 8px;
padding-right: 8px;
font-family: var(--font-monospace);
background-color: var(--background-secondary-alt);
color: var(--nav-item-color-selected);
}
/***************/
/** Task View **/
/***************/
.dataview.task-list-item, .dataview.task-list-basic-item {
margin-top: 3px;
margin-bottom: 3px;
transition: 0.4s;
}
.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
background-color: var(--text-selection);
box-shadow: -40px 0 0 var(--text-selection);
cursor: pointer;
}
/*****************/
/** Error Views **/
/*****************/
div.dataview-error-box {
width: 100%;
min-height: 150px;
display: flex;
align-items: center;
justify-content: center;
border: 4px dashed var(--background-secondary);
}
.dataview-error-message {
color: var(--text-muted);
text-align: center;
}
/*************************/
/** Additional Metadata **/
/*************************/
.dataview.small-text {
font-size: smaller;
color: var(--text-muted);
margin-left: 3px;
}
.dataview.small-text::before {
content: "(";
}
.dataview.small-text::after {
content: ")";
}
+23
View File
@@ -0,0 +1,23 @@
{
"version": 4,
"homepages": {
"Main Homepage": {
"value": "README",
"kind": "File",
"openOnStartup": true,
"openMode": "Replace all open notes",
"manualOpenMode": "Keep open notes",
"view": "Default view",
"revertView": true,
"openWhenEmpty": true,
"refreshDataview": false,
"autoCreate": false,
"autoScroll": false,
"pin": false,
"commands": [],
"alwaysApply": false,
"hideReleaseNotes": false
}
},
"separateMobile": false
}
File diff suppressed because one or more lines are too long
+13
View File
@@ -0,0 +1,13 @@
{
"id": "homepage",
"name": "Homepage",
"version": "4.2.2",
"minAppVersion": "1.4.10",
"description": "Open a specified note, canvas, base, or workspace on startup, or set it for quick access later.",
"author": "novov",
"authorUrl": "https://novov.me",
"isDesktopOnly": false,
"fundingUrl": {
"Ko-fi": "https://ko-fi.com/novov"
}
}
+244
View File
@@ -0,0 +1,244 @@
.nv-homepage-interstitial {
position: absolute;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
background: var(--background-primary);
z-index: 9999;
animation: 0.02s ease-in 0.5s forwards nv-interstitial-destroy;
pointer-events: none;
}
@keyframes nv-interstitial-destroy {
from { opacity: 1; }
to { opacity: 0; }
}
.setting-item[nv-greyed] {
opacity: .5;
pointer-events: none !important;
}
#nv-main-setting {
flex-wrap: wrap;
margin-bottom: 30px;
}
#nv-main-setting .setting-item-control {
padding-top: var(--size-4-2);
flex-basis: 100%;
align-items: stretch;
}
#nv-main-setting .setting-item-control input, #nv-main-setting .setting-item-control select {
font-size: var(--font-ui-medium);
font-weight: 600;
}
#nv-main-setting .setting-item-control select {
padding: var(--size-4-3) var(--size-4-4);
padding-right: var(--size-4-8);
height: auto;
}
#nv-main-setting .setting-item-control input {
flex-grow: 1;
padding: var(--size-4-5) var(--size-4-4);
}
#nv-main-setting .setting-item-control input[disabled] {
opacity: 0.3;
}
#nv-main-setting #nv-desc, #nv-main-setting #nv-info {
flex-basis: 100%;
}
#nv-main-setting #nv-desc {
font-weight: 500;
color: var(--text-normal);
font-size: var(--font-ui-small);
padding: 10px 0 0;
}
#nv-main-setting #nv-desc.mod-warning {
color: var(--text-error);
}
#nv-main-setting #nv-desc code {
font-family: var(--font-monospace);
font-size: var(--font-smaller);
border-radius: var(--radius-s);
}
#nv-main-setting #nv-desc small {
display: block;
font-weight: 400;
color: var(--text-muted);
font-size: calc(var(--font-ui-smaller) * 0.9);
padding: 5px 0 0;
}
.nv-homepage-file-tag {
display: inline-block;
vertical-align: middle;
margin-left: var(--size-2-2);
}
.nv-mobile-setting {
flex-wrap: wrap;
row-gap: var(--size-2-2);
}
.nv-mobile-setting .nv-mobile-info {
font-size: var(--font-ui-smaller);
width: 100%;
margin-right: var(--size-4-18);
}
.nv-command-desc {
padding: 1.2em 0 0;
border-top: 1px solid var(--background-modifier-border);
}
.nv-command-box {
margin: 1em 0 1.75em;
display: flex;
flex-wrap: wrap;
gap: 12px;
align-items: center;
}
.nv-command-pill {
background-color: var(--background-secondary);
border: 1px solid var(--background-modifier-border-hover);
border-radius: var(--radius-s);
font-size: var(--font-ui-small);
padding: var(--size-2-1) var(--size-2-2) var(--size-2-1) var(--size-2-3) ;
}
.nv-command-pill.nv-command-invalid {
color: var(--text-faint);
}
.nv-command-pill button {
display: inline-block;
padding: 0;
margin: 0 0 0 3px;
vertical-align: bottom;
}
.nv-command-pill button:first-of-type {
margin-left: var(--size-4-2);
}
.nv-command-pill button.nv-command-selected {
margin-left: var(--size-2-2);
padding: 0 var(--size-2-1);
}
.nv-command-pill button.nv-command-selected span {
color: var(--text-accent);
display: inline-block;
font-size: 0.9em;
vertical-align: top;
position: relative;
top: -1px;
}
.nv-command-pill > .svg-icon, .nv-command-pill button .svg-icon {
height: 1em;
width: 1em;
}
.nv-command-pill > .svg-icon {
vertical-align: text-bottom;
position: relative;
margin: 0 var(--size-2-1) 0 0;
}
.nv-command-pill.nv-dragging {
background-color: transparent;
}
.nv-command-add-button {
font-size: var(--font-ui-small);
padding: var(--size-2-2) var(--size-4-2);
height: auto;
}
#nv-main-setting + .setting-item, .nv-command-desc + .setting-item {
padding-top: 20px;
border-top: none !important;
}
.nv-debug-button {
margin: 3em 0 -0.2em;
font-size: var(--font-ui-smaller);
padding: 0;
height: auto;
float: right;
box-shadow: none !important;
background: none !important;
color: var(--text-accent);
font-weight: 600;
cursor: pointer;
}
.nv-debug-button:hover, .nv-debug-button:active {
text-decoration: underline;
}
.is-phone #nv-main-setting .setting-item-control {
flex-wrap: wrap;
justify-content: flex-start;
}
.is-phone #nv-main-setting .setting-item-control select {
width: auto;
max-width: auto;
}
.is-phone .nv-mobile-setting {
row-gap: var(--size-4-2);
}
.is-phone .nv-mobile-setting .setting-item-info {
max-width: calc(100% - 100px);
}
.is-phone .nv-mobile-setting {
row-gap: var(--size-4-2);
}
.is-phone .nv-mobile-setting .setting-item-info {
max-width: calc(100% - 100px);
}
.is-phone .nv-command-pill {
width: 100%;
border: none;
background: none;
padding: 0 0 var(--size-4-2);
display: flex;
gap: var(--size-4-4);
align-items: baseline;
}
.is-phone .nv-command-pill .nv-command-text {
flex-grow: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.is-phone .nv-command-pill, .is-phone .nv-command-add-button {
font-size: var(--font-ui-medium);
justify-content: space-between;
}
.is-phone .nv-command-pill button {
line-height: var(--font-ui-medium);
height: 100%;
margin: 0 !important;
}
+61
View File
@@ -0,0 +1,61 @@
{
"commitMessage": "vault backup: {{date}}",
"autoCommitMessage": "vault backup: {{date}}",
"commitMessageScript": "",
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
"autoSaveInterval": 0,
"autoPushInterval": 0,
"autoPullInterval": 0,
"autoPullOnBoot": false,
"disablePush": false,
"pullBeforePush": true,
"disablePopups": false,
"showErrorNotices": true,
"disablePopupsForNoChanges": false,
"listChangedFilesInMessageBody": false,
"showStatusBar": true,
"updateSubmodules": false,
"syncMethod": "merge",
"customMessageOnAutoBackup": false,
"autoBackupAfterFileChange": false,
"treeStructure": false,
"refreshSourceControl": true,
"basePath": "",
"differentIntervalCommitAndPush": false,
"changedFilesInStatusBar": false,
"showedMobileNotice": true,
"refreshSourceControlTimer": 7000,
"showBranchStatusBar": true,
"setLastSaveToLastCommit": false,
"submoduleRecurseCheckout": false,
"gitDir": "",
"showFileMenu": true,
"authorInHistoryView": "hide",
"dateInHistoryView": false,
"diffStyle": "split",
"lineAuthor": {
"show": true,
"followMovement": "inactive",
"authorDisplay": "initials",
"showCommitHash": false,
"dateTimeFormatOptions": "date",
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
"dateTimeTimezone": "viewer-local",
"coloringMaxAge": "1y",
"colorNew": {
"r": 255,
"g": 150,
"b": 150
},
"colorOld": {
"r": 120,
"g": 160,
"b": 255
},
"textColorCss": "var(--text-muted)",
"ignoreWhitespace": false,
"gutterSpacingFallbackLength": 13,
"lastShownAuthorDisplay": "initials",
"lastShownDateTimeFormatOptions": "date"
}
}
File diff suppressed because one or more lines are too long
+10
View File
@@ -0,0 +1,10 @@
{
"author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03",
"id": "obsidian-git",
"name": "Git",
"description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.34.0"
}
+605
View File
@@ -0,0 +1,605 @@
@keyframes loading {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.workspace-leaf-content[data-type="git-view"] .button-border {
border: 2px solid var(--interactive-accent);
border-radius: var(--radius-s);
}
.workspace-leaf-content[data-type="git-view"] .view-content {
padding: 0;
}
.workspace-leaf-content[data-type="git-history-view"] .view-content {
padding: 0;
}
.loading > svg {
animation: 2s linear infinite loading;
transform-origin: 50% 50%;
display: inline-block;
}
.obsidian-git-center {
margin: auto;
text-align: center;
width: 50%;
}
.obsidian-git-textarea {
display: block;
margin-left: auto;
margin-right: auto;
}
.obsidian-git-disabled {
opacity: 0.5;
}
.obsidian-git-center-button {
display: block;
margin: 20px auto;
}
.tooltip.mod-left {
overflow-wrap: break-word;
}
.tooltip.mod-right {
overflow-wrap: break-word;
}
.git-tools {
display: flex;
margin-left: auto;
}
.git-tools .type {
padding-left: var(--size-2-1);
display: flex;
align-items: center;
justify-content: center;
width: 11px;
}
.git-tools .type[data-type="M"] {
color: orange;
}
.git-tools .type[data-type="D"] {
color: red;
}
.git-tools .buttons {
display: flex;
}
.git-tools .buttons > * {
padding: 0 0;
height: auto;
}
.is-active .git-tools .buttons > * {
color: var(--nav-item-color-active);
}
.git-author {
color: var(--text-accent);
}
.git-date {
color: var(--text-accent);
}
.git-ref {
color: var(--text-accent);
}
.workspace-leaf-content[data-type="diff-view"] .d2h-d-none {
display: none;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper {
text-align: left;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header {
background-color: var(--background-primary);
border-bottom: 1px solid var(--interactive-accent);
font-family: var(--font-monospace);
height: 35px;
padding: 5px 10px;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header,
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
font-size: 14px;
margin-left: auto;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added {
border: 1px solid #b4e2b4;
border-radius: 5px 0 0 5px;
color: #399839;
padding: 2px;
text-align: right;
vertical-align: middle;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted {
border: 1px solid #e9aeae;
border-radius: 0 5px 5px 0;
color: #c33;
margin-left: 1px;
padding: 2px;
text-align: left;
vertical-align: middle;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 15px;
width: 100%;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name {
overflow-x: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper {
border: 1px solid var(--background-modifier-border);
border-radius: 3px;
margin-bottom: 1em;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse {
-webkit-box-pack: end;
-ms-flex-pack: end;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border: 1px solid var(--background-modifier-border);
border-radius: 3px;
cursor: pointer;
display: none;
font-size: 12px;
justify-content: flex-end;
padding: 4px 8px;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected {
background-color: #c8e1ff;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input {
margin: 0 4px 0 0;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table {
border-collapse: collapse;
font-family: Menlo, Consolas, monospace;
font-size: 13px;
width: 100%;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff {
width: 100%;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff {
overflow-y: hidden;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff {
display: inline-block;
margin-bottom: -8px;
margin-right: -4px;
overflow-x: scroll;
overflow-y: hidden;
width: 50%;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line {
padding: 0 8em;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
display: inline-block;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
width: 100%;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
padding: 0 4.5em;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn {
word-wrap: normal;
background: none;
display: inline-block;
padding: 0;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
vertical-align: middle;
white-space: pre;
width: 100%;
}
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
.theme-light
.workspace-leaf-content[data-type="diff-view"]
.d2h-code-side-line
del {
background-color: #ffb6ba;
}
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
.theme-dark
.workspace-leaf-content[data-type="diff-view"]
.d2h-code-side-line
del {
background-color: #8d232881;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
border-radius: 0.2em;
display: inline-block;
margin-top: -1px;
text-decoration: none;
vertical-align: middle;
}
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
.theme-light
.workspace-leaf-content[data-type="diff-view"]
.d2h-code-side-line
ins {
background-color: #97f295;
text-align: left;
}
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
.theme-dark
.workspace-leaf-content[data-type="diff-view"]
.d2h-code-side-line
ins {
background-color: #1d921996;
text-align: left;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix {
word-wrap: normal;
background: none;
display: inline;
padding: 0;
white-space: pre;
}
.workspace-leaf-content[data-type="diff-view"] .line-num1 {
float: left;
}
.workspace-leaf-content[data-type="diff-view"] .line-num1,
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
-webkit-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
padding: 0 0.5em;
text-overflow: ellipsis;
width: 3.5em;
}
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
float: right;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-muted);
cursor: pointer;
display: inline-block;
position: absolute;
text-align: right;
width: 7.5em;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after {
content: "\200b";
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-muted);
cursor: pointer;
display: inline-block;
overflow: hidden;
padding: 0 0.5em;
position: absolute;
text-align: right;
text-overflow: ellipsis;
width: 4em;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr {
position: relative;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after {
content: "\200b";
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder,
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber,
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
direction: rtl;
}
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del {
background-color: #fee8e9;
border-color: #e9aeae;
}
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
background-color: #dfd;
border-color: #b4e2b4;
}
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del {
background-color: #521b1d83;
border-color: #691d1d73;
}
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
background-color: rgba(30, 71, 30, 0.5);
border-color: #13501381;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-info {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
color: var(--text-normal);
}
.theme-light
.workspace-leaf-content[data-type="diff-view"]
.d2h-file-diff
.d2h-del.d2h-change {
background-color: #fdf2d0;
}
.theme-dark
.workspace-leaf-content[data-type="diff-view"]
.d2h-file-diff
.d2h-del.d2h-change {
background-color: #55492480;
}
.theme-light
.workspace-leaf-content[data-type="diff-view"]
.d2h-file-diff
.d2h-ins.d2h-change {
background-color: #ded;
}
.theme-dark
.workspace-leaf-content[data-type="diff-view"]
.d2h-file-diff
.d2h-ins.d2h-change {
background-color: rgba(37, 78, 37, 0.418);
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper {
margin-bottom: 10px;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a {
color: #3572b0;
text-decoration: none;
}
.workspace-leaf-content[data-type="diff-view"]
.d2h-file-list-wrapper
a:visited {
color: #3572b0;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header {
text-align: left;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title {
font-weight: 700;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
text-align: left;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list {
display: block;
list-style: none;
margin: 0;
padding: 0;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li {
border-bottom: 1px solid var(--background-modifier-border);
margin: 0;
padding: 5px 10px;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child {
border-bottom: none;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch {
cursor: pointer;
display: none;
font-size: 10px;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-icon {
fill: currentColor;
margin-right: 10px;
vertical-align: middle;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted {
color: #c33;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-added {
color: #399839;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-changed {
color: #d0b44c;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-moved {
color: #3572b0;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-tag {
background-color: var(--background-primary);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 10px;
margin-left: 5px;
padding: 0 2px;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag {
border: 2px solid #c33;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag {
border: 1px solid #399839;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag {
border: 1px solid #d0b44c;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag {
border: 1px solid #3572b0;
}
/* ====================== Line Authoring Information ====================== */
.cm-gutterElement.obs-git-blame-gutter {
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
border-width: 0px 2px 0.2px 2px;
border-style: solid;
border-color: var(--background-secondary);
background-color: var(--background-secondary);
}
.cm-gutterElement.obs-git-blame-gutter > div,
.line-author-settings-preview {
/* delegate text color to settings */
color: var(--obs-git-gutter-text);
font-family: monospace;
height: 100%; /* ensure, that age-based background color occupies entire parent */
text-align: right;
padding: 0px 6px 0px 6px;
white-space: pre; /* Keep spaces and do not collapse them. */
}
@media (max-width: 800px) {
/* hide git blame gutter not to superpose text */
.cm-gutterElement.obs-git-blame-gutter {
display: none;
}
}
.git-unified-diff-view,
.git-split-diff-view .cm-deletedLine .cm-changedText {
background-color: #ee443330;
}
.git-unified-diff-view,
.git-split-diff-view .cm-insertedLine .cm-changedText {
background-color: #22bb2230;
}
/* Limits the scrollbar to the view body */
.git-view {
display: flex;
flex-direction: column;
position: relative;
height: 100%;
}
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
}
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
}
/* Override styling of Codemirror merge view "collapsed lines" indicator */
.git-split-diff-view .ͼ2 .cm-collapsedLines {
background: var(--interactive-normal);
border-radius: var(--radius-m);
color: var(--text-accent);
font-size: var(--font-small);
padding: var(--size-4-1) var(--size-4-1);
}
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
background: var(--interactive-hover);
color: var(--text-accent-hover);
}
+86
View File
@@ -0,0 +1,86 @@
{
"presets": {
"this_file": "path includes {{query.file.path}}",
"this_folder": "folder includes {{query.file.folder}}",
"this_folder_only": "filter by function task.file.folder === query.file.folder",
"this_root": "root includes {{query.file.root}}",
"hide_date_fields": "# Hide any values for all date fields\nhide due date\nhide scheduled date\nhide start date\nhide created date\nhide done date\nhide cancelled date",
"hide_non_date_fields": "# Hide all the non-date fields, but not tags\nhide id\nhide depends on\nhide recurrence rule\nhide on completion\nhide priority",
"hide_query_elements": "# Hide postpone, edit and backinks\nhide postpone button\nhide edit button\nhide backlinks",
"hide_everything": "# Hide everything except description and any tags\npreset hide_date_fields\npreset hide_non_date_fields\npreset hide_query_elements"
},
"globalQuery": "",
"globalFilter": "",
"removeGlobalFilter": false,
"taskFormat": "tasksPluginEmoji",
"setCreatedDate": false,
"setDoneDate": true,
"setCancelledDate": true,
"autoSuggestInEditor": true,
"autoSuggestMinMatch": 0,
"autoSuggestMaxItems": 20,
"provideAccessKeys": true,
"useFilenameAsScheduledDate": false,
"filenameAsScheduledDateFormat": "",
"filenameAsDateFolders": [],
"recurrenceOnNextLine": false,
"removeScheduledDateOnRecurrence": false,
"statusSettings": {
"coreStatuses": [
{
"symbol": " ",
"name": "Todo",
"nextStatusSymbol": "x",
"availableAsCommand": true,
"type": "TODO"
},
{
"symbol": "x",
"name": "Done",
"nextStatusSymbol": " ",
"availableAsCommand": true,
"type": "DONE"
}
],
"customStatuses": [
{
"symbol": "/",
"name": "In Progress",
"nextStatusSymbol": "x",
"availableAsCommand": true,
"type": "IN_PROGRESS"
},
{
"symbol": "-",
"name": "Cancelled",
"nextStatusSymbol": " ",
"availableAsCommand": true,
"type": "CANCELLED"
}
]
},
"features": {
"INTERNAL_TESTING_ENABLED_BY_DEFAULT": true
},
"generalSettings": {},
"headingOpened": {
"Core Statuses": true,
"Custom Statuses": true
},
"debugSettings": {
"ignoreSortInstructions": false,
"showTaskHiddenData": false,
"recordTimings": false
},
"loggingOptions": {
"minLevels": {
"": "info",
"tasks": "info",
"tasks.Cache": "info",
"tasks.Events": "info",
"tasks.File": "info",
"tasks.Query": "info",
"tasks.Task": "info"
}
}
}
File diff suppressed because one or more lines are too long
+12
View File
@@ -0,0 +1,12 @@
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "7.20.0",
"minAppVersion": "1.4.0",
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
"helpUrl": "https://publish.obsidian.md/tasks/",
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
"authorUrl": "https://github.com/obsidian-tasks-group",
"fundingUrl": "https://github.com/sponsors/claremacrae",
"isDesktopOnly": false
}
File diff suppressed because one or more lines are too long
+6
View File
@@ -0,0 +1,6 @@
{
"formatType": "normal",
"showRibbonIcon": true,
"bindEnter": true,
"bindTab": true
}
File diff suppressed because one or more lines are too long
+17
View File
@@ -0,0 +1,17 @@
{
"id": "table-editor-obsidian",
"name": "Advanced Tables",
"author": "Tony Grosinger",
"authorUrl": "https://grosinger.net",
"description": "Improved table navigation, formatting, manipulation, and formulas",
"isDesktopOnly": false,
"minAppVersion": "1.0.0",
"version": "0.22.1",
"js": "main.js",
"fundingUrl": {
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
"Paypal": "https://paypal.me/tgrosinger"
},
"donation": "https://buymeacoffee.com/tgrosinger"
}
+78
View File
@@ -0,0 +1,78 @@
:root {
--advanced-tables-helper-size: 28px;
}
.HyperMD-table-row span.cm-inline-code {
font-size: 100%;
padding: 0px;
}
.advanced-tables-buttons>div>.title {
font-weight: var(--font-medium);
font-size: var(--nav-item-size);
color: var(--nav-item-color);
text-decoration: underline;
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container {
column-gap: 0.2rem;
margin: 0.2rem 0 0.2rem 0;
justify-content: start;
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container::before {
min-width: 2.6rem;
line-height: var(--advanced-tables-helper-size);
font-size: var(--nav-item-size);
font-weight: var(--nav-item-weight);
color: var(--nav-item-color);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container>* {
height: var(--advanced-tables-helper-size);
line-height: var(--advanced-tables-helper-size);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button {
width: var(--advanced-tables-helper-size);
height: var(--advanced-tables-helper-size);
display: flex;
justify-content: center;
align-items: center;
border-radius: var(--radius-s);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button:hover {
background-color: var(--nav-item-background-hover);
color: var(--nav-item-color-hover);
font-weight: var(--nav-item-weight-hover);
}
.advanced-tables-row-label {
width: 50px;
}
.widget-icon {
width: 20px;
height: 20px;
fill: var(--text-muted);
}
.widget-icon:hover {
fill: var(--text-normal);
}
.advanced-tables-csv-export textarea {
height: 200px;
width: 100%;
}
.advanced-tables-donation {
width: 70%;
margin: 0 auto;
text-align: center;
}
.advanced-tables-donate-button {
margin: 10px;
}
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
{
"id": "tag-wrangler",
"name": "Tag Wrangler",
"author": "PJ Eby",
"authorUrl": "https://github.com/pjeby",
"version": "0.6.4",
"minAppVersion": "1.5.8",
"description": "Rename, merge, toggle, and search tags from the tags view",
"fundingUrl": "https://dirtsimple.org/tips/tag-wrangler",
"isDesktopOnly": false
}
+7
View File
@@ -0,0 +1,7 @@
{
"name": "Obsidian gruvbox",
"version": "0.2.1",
"minAppVersion": "0.16.0",
"author": "insanum",
"authorUrl": "https://insanum.com"
}
+579
View File
@@ -0,0 +1,579 @@
:root
{
--dark0-hard_x: 29,32,33; /* #1d2021 */
--dark0-hard: rgb(var(--dark0-hard_x));
--dark0_x: 40,40,40; /* #282828 */
--dark0: rgb(var(--dark0_x));
--dark0-soft_x: 50,48,47; /* #32302f */
--dark0-soft: rgb(var(--dark0-soft_x));
--dark1_x: 60,56,54; /* #3c3836 */
--dark1: rgb(var(--dark1_x));
--dark2_x: 80,73,69; /* #504945 */
--dark2: rgb(var(--dark2_x));
--dark3_x: 102,92,84; /* #665c54 */
--dark3: rgb(var(--dark3_x));
--dark4_x: 124,111,100; /* #7c6f64 */
--dark4: rgb(var(--dark4_x));
--gray_x: 146,131,116; /* #928374 */
--gray: rgb(var(--gray_x));
--light0-hard_x: 249,245,215; /* #f9f5d7 */
--light0-hard: rgb(var(--light0-hard_x));
--light0_x: 251,241,199; /* #fbf1c7 */
--light0: rgb(var(--light0_x));
--light0-soft_x: 242,229,188; /* #f2e5bc */
--light0-soft: rgb(var(--light0-soft_x));
--light1_x: 235,219,178; /* #ebdbb2 */
--light1: rgb(var(--light1_x));
--light2_x: 213,196,161; /* #d5c4a1 */
--light2: rgb(var(--light2_x));
--light3_x: 189,174,147; /* #bdae93 */
--light3: rgb(var(--light3_x));
--light4_x: 168,153,132; /* #a89984 */
--light4: rgb(var(--light4_x));
--bright-red_x: 251,73,52; /* #fb4934 */
--bright-red: rgb(var(--bright-red_x));
--bright-green_x: 184,187,38; /* #b8bb26 */
--bright-green: rgb(var(--bright-green_x));
--bright-yellow_x: 250,189,47; /* #fabd2f */
--bright-yellow: rgb(var(--bright-yellow_x));
--bright-blue_x: 131,165,152; /* #83a598 */
--bright-blue: rgb(var(--bright-blue_x));
--bright-purple_x: 211,134,155; /* #d3869b */
--bright-purple: rgb(var(--bright-purple_x));
--bright-aqua_x: 142,192,124; /* #8ec07c */
--bright-aqua: rgb(var(--bright-aqua_x));
--bright-orange_x: 254,128,25; /* #fe8019 */
--bright-orange: rgb(var(--bright-orange_x));
--neutral-red_x: 204,36,29; /* #cc241d */
--neutral-red: rgb(var(--neutral-red_x));
--neutral-green_x: 152,151,26; /* #98971a */
--neutral-green: rgb(var(--neutral-green_x));
--neutral-yellow_x: 215,153,33; /* #d79921 */
--neutral-yellow: rgb(var(--neutral-yellow_x));
--neutral-blue_x: 69,133,136; /* #458588 */
--neutral-blue: rgb(var(--neutral-blue_x));
--neutral-purple_x: 177,98,134; /* #b16286 */
--neutral-purple: rgb(var(--neutral-purple_x));
--neutral-aqua_x: 104,157,106; /* #689d6a */
--neutral-aqua: rgb(var(--neutral-aqua_x));
--neutral-orange_x: 214,93,14; /* #d65d0e */
--neutral-orange: rgb(var(--neutral-orange_x));
--faded-red_x: 157,0,6; /* #9d0006 */
--faded-red: rgb(var(--faded-red_x));
--faded-green_x: 121,116,14; /* #79740e */
--faded-green: rgb(var(--faded-green_x));
--faded-yellow_x: 181,118,20; /* #b57614 */
--faded-yellow: rgb(var(--faded-yellow_x));
--faded-blue_x: 7,102,120; /* #076678 */
--faded-blue: rgb(var(--faded-blue_x));
--faded-purple_x: 143,63,113; /* #8f3f71 */
--faded-purple: rgb(var(--faded-purple_x));
--faded-aqua_x: 66,123,88; /* #427b58 */
--faded-aqua: rgb(var(--faded-aqua_x));
--faded-orange_x: 175,58,3; /* #af3a03 */
--faded-orange: rgb(var(--faded-orange_x));
}
body
{
--accent-h: 12; /* --faded-red #9d0006 */
--accent-s: 107%;
--accent-l: 32%;
--link-decoration: none;
--link-decoration-hover: none;
--link-external-decoration: none;
--link-external-decoration-hover: none;
--tag-decoration: none;
--tag-decoration-hover: underline;
--tag-padding-x: .5em;
--tag-padding-y: .2em;
--tag-radius: .5em;
--tab-font-weight: 600;
--bold-weight: 600;
--checkbox-radius: 0;
/* --list-indent: 2em; */
--embed-border-left: 6px double var(--interactive-accent);
}
.theme-dark
{
--color-red-rgb: var(--neutral-red_x);
--color-red: var(--neutral-red);
--color-purple-rgb: var(--neutral-purple_x);
--color-purple: var(--neutral-purple);
--color-green-rgb: var(--neutral-green_x);
--color-green: var(--neutral-green);
--color-cyan-rgb: var(--neutral-blue_x);
--color-cyan: var(--neutral-blue);
--color-blue-rgb: var(--faded-blue_x);
--color-blue: var(--faded-blue);
--color-yellow-rgb: var(--neutral-yellow_x);
--color-yellow: var(--neutral-yellow);
--color-orange-rgb: var(--neutral-orange_x);
--color-orange: var(--neutral-orange);
--color-pink-rgb: var(--bright-purple_x);
--color-pink: var(--bright-purple);
--background-primary: var(--dark0);
--background-primary-alt: var(--dark0);
--background-secondary: var(--dark0-hard);
--background-secondary-alt: var(--dark1);
--background-modifier-border: var(--dark1);
--cursor-line-background: rgba(var(--dark1_x), 0.5);
--text-normal: var(--light0);
--text-faint: var(--light1);
--text-muted: var(--light2);
--link-url: var(--neutral-green);
--h1-color: var(--neutral-red);
--h2-color: var(--neutral-yellow);
--h3-color: var(--neutral-green);
--h4-color: var(--neutral-aqua);
--h5-color: var(--neutral-blue);
--h6-color: var(--neutral-purple);
--text-highlight-bg: var(--neutral-yellow);
--text-highlight-fg: var(--dark0-hard);
--text-accent: var(--neutral-orange);
--text-accent-hover: var(--bright-aqua);
--tag-color: var(--bright-aqua);
--tag-background: var(--dark2);
--tag-background-hover: var(--dark1);
--titlebar-text-color-focused: var(--bright-red);
--inline-title-color: var(--bright-yellow);
--bold-color: var(--neutral-yellow);
--italic-color: var(--neutral-yellow);
--checkbox-color: var(--light4);
--checkbox-color-hover: var(--light4);
--checkbox-border-color: var(--light4);
--checkbox-border-color-hover: var(--light4);
--checklist-done-color: rgba(var(--light2_x), 0.5);
--table-header-background: rgba(var(--dark0_x), 0.2);
--table-header-background-hover: var(--dark2);
--table-row-even-background: rgba(var(--dark2_x), 0.2);
--table-row-odd-background: rgba(var(--dark2_x), 0.4);
--table-row-background-hover: var(--dark2);
--text-selection: rgba(var(--neutral-red_x), 0.6);
--flashing-background: rgba(var(--neutral-red_x), 0.3);
--code-normal: var(--bright-blue);
--code-background: var(--dark1);
--mermaid-note: var(--neutral-blue);
--mermaid-actor: var(--dark2);
--mermaid-loopline: var(--neutral-blue);
--mermaid-exclude: var(--dark4);
--mermaid-seqnum: var(--dark0);
--icon-color-hover: var(--bright-red);
--icon-color-focused: var(--bright-blue);
--nav-item-color-hover: var(--bright-red);
--nav-item-color-active: var(--bright-aqua);
--nav-file-tag: rgba(var(--neutral-yellow_x), 0.9);
--graph-line: var(--dark2);
--graph-node: var(--light3);
--graph-node-tag: var(--neutral-red);
--graph-node-attachment: var(--neutral-green);
--calendar-hover: var(--bright-red);
--calendar-background-hover: var(--dark1);
--calendar-week: var(--neutral-orange);
--calendar-today: var(--neutral-orange);
--dataview-key: var(--text-faint);
--dataview-key-background: rgba(var(--faded-red_x), 0.5);
--dataview-value: var(--text-faint);
--dataview-value-background: rgba(var(--neutral-green_x), 0.3);
--tab-text-color-focused-active: var(--neutral-yellow);
--tab-text-color-focused-active-current: var(--bright-red);
}
.theme-light
{
--color-red-rgb: var(--neutral-red_x);
--color-red: var(--neutral-red);
--color-purple-rgb: var(--neutral-purple_x);
--color-purple: var(--neutral-purple);
--color-green-rgb: var(--neutral-green_x);
--color-green: var(--neutral-green);
--color-cyan-rgb: var(--neutral-blue_x);
--color-cyan: var(--neutral-blue);
--color-blue-rgb: var(--faded-blue_x);
--color-blue: var(--faded-blue);
--color-yellow-rgb: var(--neutral-yellow_x);
--color-yellow: var(--neutral-yellow);
--color-orange-rgb: var(--neutral-orange_x);
--color-orange: var(--neutral-orange);
--color-pink-rgb: var(--bright-purple_x);
--color-pink: var(--bright-purple);
--background-primary: var(--light0-hard);
--background-primary-alt: var(--light0-hard);
--background-secondary: var(--light1);
--background-secondary-alt: var(--light1);
--background-modifier-border: var(--light2);
--cursor-line-background: rgba(var(--light1_x), 0.5);
--text-normal: var(--dark0);
--text-faint: var(--dark3);
--text-muted: var(--dark2);
--link-url: var(--neutral-green);
--h1-color: var(--neutral-red);
--h2-color: var(--neutral-yellow);
--h3-color: var(--neutral-green);
--h4-color: var(--neutral-aqua);
--h5-color: var(--neutral-blue);
--h6-color: var(--neutral-purple);
--text-highlight-bg: var(--bright-yellow);
--text-highlight-fg: var(--dark0);
--text-accent: var(--neutral-orange);
--text-accent-hover: var(--bright-aqua);
--tag-color: var(--neutral-aqua);
--tag-background: var(--light1);
--tag-background-hover: rgba(var(--light1_x), 0.6);
--titlebar-text-color-focused: var(--bright-red);
--inline-title-color: var(--bright-yellow);
--bold-color: var(--neutral-yellow);
--italic-color: var(--neutral-yellow);
--checkbox-color: var(--light4);
--checkbox-color-hover: var(--light4);
--checkbox-border-color: var(--light4);
--checkbox-border-color-hover: var(--light4);
--checklist-done-color: rgba(var(--dark2_x), 0.4);
--table-header-background: rgba(var(--light3_x), 0.4);
--table-header-background-hover: var(--light2);
--table-row-even-background: rgba(var(--light1_x), 0.2);
--table-row-odd-background: rgba(var(--light1_x), 0.7);
--table-row-background-hover: var(--light2);
--text-selection: rgba(var(--neutral-red_x), 0.6);
--flashing-background: rgba(var(--neutral-red_x), 0.3);
--code-normal: var(--bright-blue);
--code-background: var(--light1);
--mermaid-note: var(--bright-blue);
--mermaid-actor: var(--light3);
--mermaid-loopline: var(--neutral-blue);
--mermaid-exclude: var(--light2);
--mermaid-seqnum: var(--light0);
--icon-color-hover: var(--bright-red);
--icon-color-focused: var(--bright-blue);
--nav-item-color-hover: var(--bright-red);
--nav-item-color-active: var(--neutral-blue);
--nav-file-tag: rgba(var(--neutral-blue_x), 0.9);
--graph-line: var(--light1);
--graph-node: var(--gray);
--graph-node-tag: var(--neutral-red);
--graph-node-attachment: var(--bright-green);
--calendar-hover: var(--bright-red);
--calendar-background-hover: var(--light1);
--calendar-week: var(--bright-red);
--calendar-today: var(--bright-red);
--dataview-key: var(--text-faint);
--dataview-key-background: rgba(var(--faded-red_x), 0.3);
--dataview-value: var(--text-faint);
--dataview-value-background: rgba(var(--neutral-green_x), 0.2);
--tab-text-color-focused-active: var(--neutral-yellow);
--tab-text-color-focused-active-current: var(--bright-red);
}
table
{
border: 1px solid var(--background-secondary) !important;
border-collapse: collapse;
}
thead
{
border-bottom: 2px solid var(--background-modifier-border) !important;
}
th
{
font-weight: 600 !important;
border: 1px solid var(--background-secondary) !important;
}
td
{
border-left: 1px solid var(--background-secondary) !important;
border-right: 1px solid var(--background-secondary) !important;
border-bottom: 1px solid var(--background-secondary) !important;
}
.markdown-rendered tbody tr:nth-child(even)
{
background-color: var(--table-row-even-background) !important;
}
.markdown-rendered tbody tr:nth-child(odd)
{
background-color: var(--table-row-odd-background) !important;
}
.markdown-rendered tbody tr:nth-child(even):hover,
.markdown-rendered tbody tr:nth-child(odd):hover
{
background-color: var(--table-row-background-hover) !important;
}
.markdown-rendered mark
{
background-color: var(--text-highlight-bg);
color: var(--text-highlight-fg);
}
.markdown-rendered mark a
{
color: var(--red) !important;
font-weight: 600;
}
.search-result-file-matched-text
{
color: var(--text-highlight-fg) !important;
}
.cm-hashtag-begin:hover, .cm-hashtag-end:hover
{
color: var(--text-accent);
/* background-color: var(--tag-background-hover); */
text-decoration: underline;
}
input[type=checkbox]
{
border: 1px solid var(--checkbox-color);
}
input[type=checkbox]:checked
{
background-color: var(--checkbox-color);
box-shadow: inset 0 0 0 2px var(--background-primary);
}
input[type=checkbox]:checked:after
{
display: none;
}
code[class*="language-"],
pre[class*="language-"]
{
line-height: var(--line-height-tight) !important;
}
.cm-url
{
color: var(--link-url) !important;
}
.cm-url:hover
{
color: var(--text-accent-color) !important;
}
/* Keep highlight/marks the same between viewer and editor. */
.cm-highlight
{
color: var(--text-highlight-fg) !important;
}
/* Keep inline code the same between viewer and editor. */
.cm-inline-code
{
border-radius: var(--radius-s);
font-size: var(--code-size);
padding: 0.1em 0.25em;
}
.cm-line .cm-strong
{
color: var(--bold-color) !important;
}
/*
* Keep list bullet padding the same between viewer and editor.
* This is annoying with the cursor in the editor as there is a gap.
*/
/*
.cm-formatting-list
{
padding-right: 4px !important;
}
*/
/*
* Keep sub-list indenting the same between viewer and editor.
* This assumes --list-indent is default at 2em.
*/
/*
.cm-indent
{
text-indent: 1em !important;
}
*/
.mermaid .note
{
fill: var(--mermaid-note) !important;
}
.mermaid .actor
{
fill: var(--mermaid-actor) !important;
}
.mermaid .loopLine
{
stroke: var(--mermaid-loopline) !important;
}
.mermaid .loopText>tspan,
.mermaid .entityLabel
{
fill: var(--neutral-red) !important;
}
.mermaid .exclude-range
{
fill: var(--mermaid-exclude) !important;
}
.mermaid .sequenceNumber
{
fill: var(--mermaid-seqnum) !important;
}
.calendar .week-num
{
color: var(--calendar-week) !important;
}
.calendar .today
{
color: var(--calendar-today) !important;
}
.calendar .week-num:hover,
.calendar .day:hover
{
color: var(--calendar-hover) !important;
background-color: var(--calendar-background-hover) !important;
}
.markdown-embed-title
{
color: var(--yellow);
font-weight: 600 !important;
}
.cm-active
{
background-color: var(--cursor-line-background) !important;
}
.nav-file-tag
{
color: var(--nav-file-tag) !important;
}
.is-flashing
{
background-color: var(--flashing-background) !important;
}
.dataview.inline-field-key
{
border-top-left-radius: var(--radius-s);
border-bottom-left-radius: var(--radius-s);
padding-left: 4px;
font-family: var(--font-monospace);
font-size: var(--font-smaller);
color: var(--dataview-key) !important;
background-color: var(--dataview-key-background) !important;
}
.dataview.inline-field-value
{
border-top-right-radius: var(--radius-s);
border-bottom-right-radius: var(--radius-s);
padding-right: 4px;
font-family: var(--font-monospace);
font-size: var(--font-smaller);
color: var(--dataview-value) !important;
background-color: var(--dataview-value-background) !important;
}
.suggestion-highlight
{
color: var(--bright-red);
}
body {
--callout-border-width: 1px;
--callout-border-opacity: 0.4;
/* Order as defined in app.css */
--callout-default: var(--neutral-blue_x);
--callout-note: var(--neutral-blue_x);
--callout-summary: var(--neutral-aqua_x);
--callout-info: var(--neutral-blue_x);
--callout-todo: var(--neutral-blue_x);
--callout-important: var(--neutral-aqua_x);
--callout-tip: var(--neutral-aqua_x);
--callout-success: var(--neutral-green_x);
--callout-question: var(--neutral-yellow_x);
--callout-warning: var(--neutral-orange_x);
--callout-fail: var(--neutral-red_x);
--callout-error: var(--neutral-red_x);
--callout-bug: var(--neutral-red_x);
--callout-example: var(--neutral-purple_x);
--callout-quote: var(--gray_x);
}
.callout {
background-color: rgba(var(--callout-color), 0.2);
}
+28
View File
@@ -0,0 +1,28 @@
{
"types": {
"aliases": "aliases",
"cssclasses": "multitext",
"tags": "tags",
"TQ_explain": "checkbox",
"TQ_extra_instructions": "text",
"TQ_short_mode": "checkbox",
"TQ_show_backlink": "checkbox",
"TQ_show_cancelled_date": "checkbox",
"TQ_show_created_date": "checkbox",
"TQ_show_depends_on": "checkbox",
"TQ_show_done_date": "checkbox",
"TQ_show_due_date": "checkbox",
"TQ_show_edit_button": "checkbox",
"TQ_show_id": "checkbox",
"TQ_show_on_completion": "checkbox",
"TQ_show_postpone_button": "checkbox",
"TQ_show_priority": "checkbox",
"TQ_show_recurrence_rule": "checkbox",
"TQ_show_scheduled_date": "checkbox",
"TQ_show_start_date": "checkbox",
"TQ_show_tags": "checkbox",
"TQ_show_task_count": "checkbox",
"TQ_show_tree": "checkbox",
"TQ_show_urgency": "checkbox"
}
}
+44 -69
View File
@@ -1,70 +1,27 @@
{
"main": {
"id": "b92957235b91b843",
"id": "5324373015726ba8",
"type": "split",
"children": [
{
"id": "1073c7b6a13212b0",
"id": "4509724f8bf84da7",
"type": "tabs",
"children": [
{
"id": "75ad31924c36980c",
"id": "e7a7b303c61786dc",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "traditional-estimating-methods.md",
"file": "README.md",
"mode": "source",
"source": false
"source": true
},
"icon": "lucide-file",
"title": "traditional-estimating-methods"
}
},
{
"id": "ad733ffda12ffada",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "purpose-of-estimating.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "purpose-of-estimating"
}
},
{
"id": "099529ff983387d7",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "software-based-estimating.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "software-based-estimating"
}
},
{
"id": "737e6543fa4b8437",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "traditional-estimating-methods.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "traditional-estimating-methods"
"title": "README"
}
}
],
"currentTab": 1
]
}
],
"direction": "vertical"
@@ -193,46 +150,64 @@
"icon": "lucide-list",
"title": "Outline of assembly-philosophy"
}
},
{
"id": "c95dd7731b2c47b7",
"type": "leaf",
"state": {
"type": "git-view",
"state": {},
"icon": "git-pull-request",
"title": "Source Control"
}
}
]
],
"currentTab": 4
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
"width": 300
},
"left-ribbon": {
"hiddenItems": {
"obsidian-git:Open Git source control": false,
"homepage:Open homepage": false,
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false
"command-palette:Open command palette": false,
"table-editor-obsidian:Advanced Tables Toolbar": false
}
},
"active": "ad733ffda12ffada",
"active": "e7a7b303c61786dc",
"lastOpenFiles": [
"README.md",
"2025-07-01.md",
"risk-oriented-estimating.md",
"risk.md",
"construction-estimating-software.md",
"gut-feel.md",
"uncertainty.md",
"traditional-estimating-methods.md",
"this-notebook.md",
"supertopics.md",
"strategy.md",
"software-based-estimating.md",
"separation-of-concerns.md",
"risk-registers.md",
"expected-value-of-perfect-information.md",
"estimating-ergonomics.md",
"estimating-culture.md",
"purpose-of-estimating.md",
"estimating-philosophy.md",
"project-management-tm.md",
"possible-automation.md",
"portable-tools.md",
"necessary-automation.md",
"open-problems.md",
"me.md",
"gold-plating.md",
"estimating-philosophy.md",
"design-patterns.md",
"construction-estimating-software.md",
"assembly-philosophy.md",
"assemblies.md",
"software-based-estimating.md",
"risk.md",
"uncertainty.md",
"estimating-culture.md",
"estimating-dimensionality.md",
"estimating-ergonomics.md",
"estimating-misconceptions.md",
"pmi.org.md"
"estimating-misconceptions.md"
]
}
+5
View File
@@ -0,0 +1,5 @@
# 2025-07-01
I take increasing issue with the common model
of measuring operational success by negative overrun,
as it is incompatible with the preferable target of estimate certainty.
+21
View File
@@ -1 +1,22 @@
# zmVault
This obsidian vault collects my thoughts on my most developed [[supertopics|supertopic]],
which I would call "[[construction-estimating]]",
but that includes fields far more disparate
than my peers would traditionally consider relevant.
## Purpose
I want to be involved construction estimating for the rest of my working life.
Current discourse on the subject is self-similar and sanitized.
I'd like to be known as an innovator in [[estimating-philosophy]],
and for solving some of its [[open-problems]].
## Contents
Despite how alien my approach may seem to most estimators,
I believe its all merely extrapolation on the conventional practice.
* Industry Knowledge
* Statistics
* [[strategy]]
+24 -24
View File
@@ -1,25 +1,25 @@
---
tags:
- estimating
- software
---
# AI in Estimating
Most estimators are already pigeon holed into poor SaaS like Accubid and the rest already,
but the need to increase efficiency with AI will be the nail in the coffin.
The myth that "full package" estimating software is most efficient
will only be exacerbated by the inclusion of AI features
that ought to have been available for decades already.
It has unfortunately been the case that construction estimators have, by and large,
been unable to recognize the bushels of low hanging fruit for automation in our field for decades.
Now that AI grifters have run out of other industries to sell to,
we are first introduced to supposedly revolutionary concepts like:
* automatically reading and setting the scale of a drawing
Estimating specific AI features, being unpredictable literally by design,
will inevitably be inconsistent in reliability between implementations;
a glaring issue since they will be provided by apps with no external compatibility.
---
tags:
- estimating
- software
---
# AI in Estimating
Most estimators are already pigeon holed into poor SaaS like Accubid and the rest already,
but the need to increase efficiency with AI will be the nail in the coffin.
The myth that "full package" estimating software is most efficient
will only be exacerbated by the inclusion of AI features
that ought to have been available for decades already.
It has unfortunately been the case that construction estimators have, by and large,
been unable to recognize the bushels of low hanging fruit for automation in our field for decades.
Now that AI grifters have run out of other industries to sell to,
we are first introduced to supposedly revolutionary concepts like:
* automatically reading and setting the scale of a drawing
Estimating specific AI features, being unpredictable literally by design,
will inevitably be inconsistent in reliability between implementations;
a glaring issue since they will be provided by apps with no external compatibility.
Most of these features are far better implemented with traditional computing.
-5
View File
@@ -31,8 +31,3 @@ possible with several tools an estimator should be familiar with:
* `XLOOKUP()` - Excel
* `Table.Join` - MS Power Query
* `JOIN` - SQL
## Abstraction
An abstraction is a model that intentionally ignores details
that are irrelevant to problem it is used to solve
+4
View File
@@ -15,6 +15,10 @@ More generally, it is minimizing the effort required for measurement.
## Abstract Assemblies
> [!info] Abstractions
> An abstraction is a model that intentionally ignores details
> that are irrelevant to problem it is used to solve
As useful a concept as assemblies are,
the same concept can be applied as a test of potential efficiency gains
in areas other than material takeoff.
+3
View File
@@ -0,0 +1,3 @@
# Construction Estimating
Construction estimating is a subset of cost estimation.
+6 -1
View File
@@ -5,7 +5,7 @@ tags:
---
# Estimating Culture
The nature of relationships between estimators
The nature of relationships between [[construction-estimating|estimators]]
and between estimators and adjacent professions,
is a difficult concept to navigate
for an estimator who is purely interested in improving their skills.
@@ -35,6 +35,11 @@ With intelligent work breakdown, jobs can be cleanly segmented for work in paral
Estimators working in the same room can be an invaluable resource
for brainstorming ideas and beneficial conversation.
It is the failure of [[estimating-culture]] and of [[construction-estimating-software]]
that so many estimators are wary of collaboration
The value of a second set of eyes can not be overstated.
It can be impossible for one estimator to parse the work of another;
the strategies enjoyed by some may seem counterintuitive to others.
It is not practical to mandate a single methodology
+35
View File
@@ -0,0 +1,35 @@
# Estimating Detail
In [[construction-estimating]], the acceptable level of detail of an estimate is a contentious subject.
What's worse, estimators often disagree on what makes an estimate more detailed than another.
With our [[risk-oriented-estimating]] approach,
detail is essentially the inverse of epistemic [[uncertainty]].
That said, the correct answer is this.
> As detailed as possible, given required turnaround and available estimating resources.
An estimate's detail is irrelevant to its quality.
A less detailed estimate is a more [[risk]]y bid,
but **it is not the role of the estimator to determine acceptable risk**.
## Experiment
Perform a system takeoff (lighting for example) in exacting detail,
the maximum amount you would ever consider using,
and measure the time required to do so,
as well as the cost of the scope.
Have another estimator takeoff the same scope using the proposed time saving strategy.
Repeat the test on additional projects.
Treat the detailed takeoff as the true value
and find the error of the time saving strategy.
$\frac{d\sigma}{dt}$
### Expectation
Time-saving strategies will overestimate or underestimate detailed takeoff
depending on the assumptions used in their creation.
+1 -1
View File
@@ -4,7 +4,7 @@ tags:
---
# Estimating Dimensionality
Lorem ipsum
I think of most things as existing in n-dimensional space.
## Generic
+4 -2
View File
@@ -5,6 +5,9 @@ tags:
---
# Estimating Ergonomics
[[construction-estimating-software]] consistently fails to innovate
on the stale patterns developed for marginally similar applications decades ago.
## More Optimal Patterns
It must be noted that, while these optimizations are better patterns than those of traditional applications,
@@ -76,8 +79,7 @@ that, in a lot of cases, don't even need to exist.
the language exists purely to roughly communicate ideas
that are intuitive in even a crude sketch.
Estimating is a perfect use case
for a purely stylus and handwriting recognition based workflow,
Estimating is a perfect use case for a purely stylus and handwriting recognition based workflow,
probably more perfect than whatever Ink & Switch is using.
### Spatial Indexing
-6
View File
@@ -8,12 +8,6 @@ Construction estimating is a highly opinionated field, and I am no exception.
This page collects my opinions on topics related to the subject,
usually as a response to those held by my peers.
## The Purpose of Construction Cost Estimation
The purpose of construction cost estimation in practice
is not to determine the cost of the scope,
which would take far longer than allotted for bid,
## Estimating Tools
I am likely one of likely very few estimators with the necessary background
+12
View File
@@ -0,0 +1,12 @@
# Expected Value of Perfect Information
In [[decision-theory]], the expected value of perfect information (EVPI)
is the price that one would be willing to pay
in order to gain access to [[perfect-information]]
This concept provides the basis for the solution of one or more [[open-problems]].
To reduce [[risk]] in [[construction-estimating]],
an organization pays in estimator hours.
These hours have a direct cost in salary and benefits,
however the greater cost is the opportunity cost
of tying up an estimator who could otherwise be starting a new project.
+3 -2
View File
@@ -4,10 +4,11 @@ tags:
---
# Gold Plating
Gold plating, also overengineering, is the frustratingly common design practice
Gold plating, also "overengineering", is the frustratingly common design practice
of arbitrarily requiring components or methods far more stringent than typical.
Such cases quickly reveal every error of assumption made by the estimator.
In [[construction-estimating]],
such cases quickly reveal every error of assumption made by the estimator.
## Example: Aluminum Feeders ILO Copper
+10
View File
@@ -0,0 +1,10 @@
# Gut Feel
Gut feel is the sensation one acquires with subject experience
that answers questions that the host can not.
The subconscious can recall information the conscious mind has forgotten.
The conscious mind understands concepts abstractly
Gut feel is valuable, but is often given precedent over logic.
It is not special, and is subject to the same follies as conventional logic.
+6 -6
View File
@@ -22,6 +22,12 @@ I see the same signs in other people and it reminds me of my own weakness.
I get frustrated at others for not making efforts that I don't make myself.
I don't use this notebook as often or as well as I should.
> [!note]
> I give myself a hard time here,
> but my "failure" to make lasting mental connections
> is relative to my perception of my ability,
> not to observation of others'.
## My Productivity
In as few words as possible,
@@ -48,9 +54,3 @@ around 90% progress, where I'm able to visualize the end result.
I find it near impossible to do work I'm not curious of
until my subconscious determines that we have exactly enough time
to finish it before the deadline.
## My Dreams
I want to be involved construction estimating for the rest of my working life.
Current discourse is self-similar and sanitized.
I'd like to be known as an innovator in [[estimating-philosophy]].
+7
View File
@@ -0,0 +1,7 @@
# Open Problems
[[construction-estimating]] being a nascent and unstudied field,
there are several fundamental questions of the craft
without satisfying answers.
* How detailed should an estimate be? How can you know?
+8 -1
View File
@@ -11,4 +11,11 @@ tags:
* PortableGit
* VSCode
* FlaUInspect
* gnuplot
* gnuplot
Ruby may be possible to make portable,
which may make these possible as well:
* Asciidoctor
* Antora
* taskjuggler
+6
View File
@@ -28,6 +28,12 @@ I would posit that, despite its cross-discipline language,
Project Management™ practice is only _universally_ applicable
to _software_ project management.
> [!aside]
> [[the-failure-of-risk-management]] humorously points out
> that PMI may not be in touch with _any_ part of its audience
> if they are able to release a publication "3 years overdue"
> without embarrassment (p. 103)
That's not to say that it should be overlooked in construction applications.
There's no better source for solutions to problems that our industries share.
Specialized practices like [[lean-construction]] are decades behind PMI.
+24 -1
View File
@@ -1,5 +1,11 @@
# The Purpose of Estimating
## The Purpose of Construction Cost Estimation
The purpose of [[construction-estimating]] in practice
is not to determine the cost of the scope,
which would take far longer than allotted for bid,
## For the Solicitor
* Determine feasibility of functional requirements
@@ -14,4 +20,21 @@ These owners can be expected to decline every [[value-engineering]] option offer
## For the Contractor
* Fill backlog
* Make profit to meet growth target
* Secure work for current and projected employees (fill backlog)
### The Role of the Estimator
The role of the estimator is to model the potential cost distribution of the project,
taking actions to reduce the model's uncertainty.
The progress of the estimator can be measured by $\frac{d\sigma}{dt}$
### The Role of the Executive
The role of the executive is to allocate profit and contingency
according to the potential cost distribution
weighted by the organizational desire to win the project.
$$
{E}[P]=
$$
+18
View File
@@ -0,0 +1,18 @@
# Risk Oriented Estimating
Risk-Oriented Estimating (ROE), is a methodology for [[construction-estimating]]
which prioritizes estimating tasks by their contribution to cost certainty,
and determines the appropriate level of [[estimating-detail]]
given [[risk#Risk Tolerance]]
ROE leans heavily on [[expected-value-of-perfect-information]],
which challenges the natural tendency to shy from uncertainty
with the reality of the cost of certainty.
ROE does not endorse common shortcuts which round up to "cover" uncertainty,
as these ultimately _increase_ risk by inflating the apparent project cost,
increasing the probability of loss to a competitor.
Bid risk may fit a [Taleb distribution](https://en.wikipedia.org/wiki/Taleb_distribution).
Actuarial Science
+7 -7
View File
@@ -1,8 +1,8 @@
---
tags:
- project-management
---
# Risk Registers
Risk Registers are a standard method of documenting [[risk]].
---
tags:
- project-management
---
# Risk Registers
Risk Registers are a standard method of documenting [[risk]].
They are a hallmark of [[project-management-tm]] practice.
+17 -43
View File
@@ -9,7 +9,8 @@ tags:
Risk, in common parlance, is the chance that something "bad" will happen.
As such, it is generally understood as a binary, win/loss relationship.
This model of [[discrete-probability]] is ubiquitous of [[project-management-tm|Project Management™]],
This model of [[discrete-probability]] is ubiquitous of
[[project-management-tm|Project Management™]],
and is the sort assumed when using [[risk-registers]].
> This scope of work presents a 1 in 10 chance of significant delay.
@@ -35,51 +36,24 @@ in the most likely case of each axis of uncertainty.
"Escalation" means projecting recent pricing to a later date of purchase
based on anticipated market conditions.
### The Problem
An incongruity exists between estimators and management.
Estimators know that estimation isn't even close to 100% accurate,
however for management to admit this would require them to admit to executives
that they allowed the bid despite the potential that it would not return the expected margin.
This is an obviously immature mindset.
More competent organizations would attempt to quantify this potential as risk,
however words like "risk" and "assumption" are upsetting to management
who would maintain that a "good" estimate has no risk or assumptions,
so instead of quantifying risk we use qualitative queries and expressions.
The usual call-and-response looks something like this:
> "Are you confident in this price?"
> "Yes, I feel good about it."
The reality of estimation is that it involves approximations, assumptions, and judgment under uncertainty.
Incomplete design information, market volatility, and unforeseen site conditions inherently affect accuracy.
In contrast, management often expect deterministic results,
treating estimates as precise forecasts rather than probabilistic assessments.
This expectation can stem from a lack of understanding about the estimation process
or a desire to simplify communication with higher-level executives.
The terms "risk" and "assumption" while common in mature parlance,
require acknowledgement of [[uncertainty]], a threatening concept
when personal accountability is ignorantly placed above organizational responsibility.
Assuming a manager was interested in preserving risk analysis details,
frameworks for presenting job details usually lack the detail required to do so,
and are sometimes even incompatible with the concept of multiple possible prices due to optional scope.
## ISO 31000
ISO 31000 defines risk as the "effect of [[uncertainty]] on objectives"
therefore referring to positive consequences of uncertainty,
as well as negative ones.
The standard gives a list on how to deal with risk:
> [!aside] ISO 31000
> ISO 31000 defines risk as the "effect of [[uncertainty]] on objectives"
> therefore referring to positive consequences of uncertainty, as well as negative ones.
>
> The standard gives a list on how to deal with risk:
>
> 1. Avoiding the risk by deciding not to start or continue with the activity that gives rise to the risk
> 2. Accepting or increasing the risk in order to pursue an opportunity
> 3. Removing the risk source
> 4. Changing the likelihood
> 5. Changing the consequences
> 6. Sharing the risk with another party or parties (including contracts and risk financing)
> 7. Retaining the risk by informed decision
> 7. Retaining the risk by informed decision
## Risk Tolerance
Determining risk tolerance is a task usually appropriated by executives,
often based on [[gut-feel]],
but that is better determined mathematically.
[Risk of ruin](https://en.wikipedia.org/wiki/Risk_of_ruin)
+19
View File
@@ -0,0 +1,19 @@
# Separation of Concerns
Separation of concerns is a design philosophy
of eliminating unnecessary process coupling,
or in other words preferring specialization.
It is traditionally understood as a principle strictly of _software_ design,
however its applications are universal.
## As Process Optimization
Suppose a small company has a single "administrative assistant"
whose main functions include:
1. writing the company newsletter, and
2. onboarding new hires.
Suppose this company doubles in size
and these tasks can no longer be fulfilled by one employee.
Separation of Concerns dictates that the role should be split by function.
+35 -35
View File
@@ -1,35 +1,35 @@
---
tags:
- estimating
- software
---
# Software Based Estimating
## Software Based Estimating vs Estimating Software
This document describes the philosophy of software based estimating as a concept,
independent of any specific example of [[construction-estimating-software]]
## Software Based Estimating vs Manual
Most estimating manuals treat "software based estimating" as an afterthought,
when in practice there's no meaningful difference in practice from manual.
* Manual estimation is best done in terms of [[assemblies]] anyway.
* On-screen takeoff just eliminates a single manual process.
* Any estimator trained on Accubid could do the same by hand, the methodology is quite transparent.
* At what point in Excel automation does manual estimation become software based?
There is no place for truly manual estimation (pencil and paper)
with the availability of better options,
even to teach the basics of the trade.
* Spreadsheet software is older than personal computers (LANPAR, 1969; VisiCalc, 1979)
* Dedicated estimating software has been available longer than most estimators have been in the field. (McCormick, 1979?)
I don't generally accept that dedicated estimating software
is strictly superior to spreadsheets (see [[estimating-philosophy]]),
but it usually is for less technical estimators.
Manual estimation invites inaccuracy and inconsistency,
and prohibits collaboration and flexibility.
---
tags:
- estimating
- software
---
# Software Based Estimating
## Software Based Estimating vs Estimating Software
This document describes the philosophy of software based estimating as a concept,
independent of any specific example of [[construction-estimating-software]]
## Software Based Estimating vs Manual
Most estimating manuals treat "software based estimating" as an afterthought,
when in practice there's no meaningful difference in practice from manual.
* Manual estimation is best done in terms of [[assemblies]] anyway.
* On-screen takeoff just eliminates a single manual process.
* Any estimator trained on Accubid could do the same by hand, the methodology is quite transparent.
* At what point in Excel automation does manual estimation become software based?
There is no place for truly manual estimation (pencil and paper)
with the availability of better options,
even to teach the basics of the trade.
* Spreadsheet software is older than personal computers (LANPAR, 1969; VisiCalc, 1979)
* Dedicated estimating software has been available longer than most estimators have been in the field. (McCormick, 1979?)
I don't generally accept that dedicated estimating software
is strictly superior to spreadsheets (see [[estimating-philosophy]]),
but it usually is for less technical estimators.
Manual estimation invites inaccuracy and inconsistency,
and prohibits collaboration and flexibility.
+23
View File
@@ -0,0 +1,23 @@
# Strategy
The field of strategy is concerned with the optimal solutions of problematic scenarios.
## Decision Theory
Decision theory concerns
~~internal problems~~
~~no competition~~
~~internal optimization~~
## Game Theory
Game theory concerns decisions made in competition with other intelligent actors.
Predictions of competitor behavior in bids and market movements
are made with a game-theoretic lens.
### Auction Theory
Auction theory is a subset of game theory
that specifically addresses the
+3
View File
@@ -0,0 +1,3 @@
# Supertopics
Supertopics are a concept I use to visualize and categorize my knowledge and interests.
+45 -45
View File
@@ -1,46 +1,46 @@
---
tags:
---
# This Notebook
#meta
This journal is for [[me|my]] rough ideas that I'm likely to change my opinion on
as my understanding of them develops.
It's my intent that any outside sources used here will be properly cited,
and that work can be assumed to be my own unless otherwise stated.
This is not an appropriate place for definition lists, tables,
or other resources provided without context or analysis.
## Purpose
* Compensate for my poor memory
* Make my achievements in understanding more "real"
## Tone
I write as if someone else will read these notes.
I find this beneficial for my current and future selves.
Explaining concepts completely
forces me to understand them completely
and to provide context I may be tempted to omit
because it is obvious at the time of writing.
When revisiting notes its then much easier to pick up where I left off.
I often use an arrogant tone
which helps me stop fiddling over specific wording and just write;
somewhat similar to the technique of pretending you hate your audience
to sound more confident.
## Conventions
### Semantic Line Breaks
I didn't like them at first,
but this notebook uses [semantic line breaks](https://sembr.org/)
for text wrapping.
---
tags:
---
# This Notebook
#meta
This journal is for [[me|my]] rough ideas that I'm likely to change my opinion on
as my understanding of them develops.
It's my intent that any outside sources used here will be properly cited,
and that work can be assumed to be my own unless otherwise stated.
This is not an appropriate place for definition lists, tables,
or other resources provided without context or analysis.
## Purpose
* Compensate for my poor memory
* Make my achievements in understanding more "real"
## Tone
I write as if someone else will read these notes.
I find this beneficial for my current and future selves.
Explaining concepts completely
forces me to understand them completely
and to provide context I may be tempted to omit
because it is obvious at the time of writing.
When revisiting notes its then much easier to pick up where I left off.
I often use an arrogant tone
which helps me stop fiddling over specific wording and just write;
somewhat similar to the technique of pretending you hate your audience
to sound more confident.
## Conventions
### Semantic Line Breaks
I didn't like them at first,
but this notebook uses [semantic line breaks](https://sembr.org/)
for text wrapping.
I shoot for less than 90 columns.
+4 -4
View File
@@ -2,8 +2,8 @@
Also "single-point estimation" as opposed to the standard three-point.
"Traditional estimating methods" as referenced frequently in this notebook
are those
"Traditional estimating methods" as referenced frequently in [[this notebook]]
are those [[construction-estimating]] methods that produce:
* an exhaustive and specific bill of materials
* a single definitive final price for each bid item
* an exhaustive and specific bill of material
* a single definitive final price for each bid item
+9 -9
View File
@@ -8,17 +8,17 @@ The term "uncertainty" refers to the possibility of multiple outcomes.
## Aleatory Uncertainty
Aleatory uncertainty is inherent randomness in data that can't be explained away.
> [!info] Also Known As
> * statistical uncertainty
> * stochastic uncertainty
> * random error
Also Known As:
* statistical uncertainty
* stochastic uncertainty
* random error
Aleatory uncertainty is inherent randomness in data that can't be explained away.
## Epistemic Uncertainty
Epistemic uncertainty is that which arises from a lack of knowledge.
> [!info] Also Known As
> * systematic uncertainty
> * model uncertainty
Also Known As:
* systematic uncertainty
* model uncertainty
Epistemic uncertainty is that which arises from a lack of knowledge.