-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.json
481 lines (481 loc) · 13.8 KB
/
index.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
[
{
"slug": "/blog/async-filtering-javascript",
"path": "/blog/async-filtering-javascript.md",
"title": "Async filtering in Javascript",
"createdAt": "2023-06-24",
"updatedAt": "2023-06-24",
"description": "How to perform async operations when trying to filter data in an array in Javascript.",
"tags": [
"javascript"
],
"headings": [
{
"display": "Solutions",
"anchor": "solutions"
}
]
},
{
"slug": "/snippets/invariant",
"path": "/snippets/invariant.md",
"title": "Invariant",
"createdAt": "2023-06-19",
"updatedAt": "2023-06-19",
"description": "Simple function to assert a condition and for type narrowing in TypeScript.",
"tags": [
"javascript",
"typescript"
],
"headings": [
{
"display": "Example usage",
"anchor": "example-usage"
}
]
},
{
"slug": "/snippets/templater-multi-select-suggester",
"path": "/snippets/templater-multi-select-suggester.md",
"title": "Templater multi-select suggester",
"createdAt": "2023-05-10",
"updatedAt": "2023-05-10",
"description": "We can (kindof) do a multi-select suggester by sticking the suggester in a while loop.",
"tags": [
"obsidianmd",
"javascript"
],
"headings": []
},
{
"slug": "/snippets/find-and-replace-html-attributes-with-react-props",
"path": "/snippets/find-and-replace-html-attributes-with-react-props.md",
"title": "Find and replace HTML attributes with React props",
"createdAt": "2023-05-07",
"updatedAt": "2023-05-07",
"description": "Regex for finding and replacing all instances of HTML attributes with dashes to camelCase React props in VS Code.",
"tags": [
"regex",
"react"
],
"headings": []
},
{
"slug": "/blog/how-to-fix-links-in-daily-notes-not-using-daily-notes-template",
"path": "/blog/how-to-fix-links-in-daily-notes-not-using-daily-notes-template.md",
"title": "How to fix links in daily notes not using daily notes template",
"createdAt": "2023-05-04",
"updatedAt": "2023-05-04",
"description": "When clicking on a date in the Calendar plugin applies your daily note template, but clicking on a link to tomorrow's daily note doesn't apply your daily note template.",
"tags": [
"obsidianmd"
],
"headings": [
{
"display": "Turn on folder templates",
"anchor": "turn-on-folder-templates"
},
{
"display": "Other potential settings to change",
"anchor": "other-potential-settings-to-change"
},
{
"display": "Conclusion",
"anchor": "conclusion"
}
]
},
{
"slug": "/snippets/allow-list-for-tracking-changes-in-git",
"path": "/snippets/allow-list-for-tracking-changes-in-git.md",
"title": "Allow list for tracking changes in git",
"createdAt": "2023-05-03",
"updatedAt": "2023-05-03",
"description": "Setting up an allow list instead of a block list for tracking file changes in git.",
"tags": [
"git"
],
"headings": []
},
{
"slug": "/blog/obsidian-quick-capture",
"path": "/blog/obsidian-quick-capture.md",
"title": "Obsidian quick capture for Android",
"createdAt": "2023-02-22",
"description": "How to add a widget to your homescreen to quickly send data to your vault, without opening Obsidian.",
"tags": [
"obsidianmd"
],
"headings": [
{
"display": "Installing Automate and the flow",
"anchor": "installing-automate-and-the-flow"
},
{
"display": "Automate widget",
"anchor": "automate-widget"
},
{
"display": "Automate selection capture",
"anchor": "automate-selection-capture"
},
{
"display": "Obsidian inbox plugin",
"anchor": "obsidian-inbox-plugin"
}
]
},
{
"slug": "/snippets/obsidian-readable-line-length",
"path": "/snippets/obsidian-readable-line-length.md",
"title": "Obsidian readable line length",
"createdAt": "2023-02-11",
"description": "Customizing the readable line length setting.",
"tags": [
"obsidianmd",
"css"
],
"headings": [
{
"display": "Readable line length per file",
"anchor": "readable-line-length-per-file"
},
{
"display": "Custom width",
"anchor": "custom-width"
}
]
},
{
"slug": "/snippets/theming-obsidian-canvas",
"path": "/snippets/theming-obsidian-canvas.md",
"title": "Theming Obsidian canvas",
"createdAt": "2022-12-18",
"description": "Changing the default colors for Obsidian's canvas plugin.",
"tags": [
"obsidianmd",
"css"
],
"headings": [
{
"display": "Card colors",
"anchor": "card-colors"
}
]
},
{
"slug": "/blog/folder-templates-with-quick-switcher",
"path": "/blog/folder-templates-with-quick-switcher.mdx",
"title": "Folder templates with quick switcher",
"createdAt": "2022-12-13",
"updatedAt": "2023-04-23",
"description": "Setting up folder templates to work when creating files from the file explorer and from the quick switcher.",
"tags": [
"obsidianmd"
],
"headings": [
{
"display": "Templater settings",
"anchor": "templater-settings"
},
{
"display": "Templates",
"anchor": "templates"
},
{
"display": "Picker template",
"anchor": "picker-template"
},
{
"display": "Default template",
"anchor": "default-template"
},
{
"display": "Running the picker template on new file creation",
"anchor": "running-the-picker-template-on-new-file-creation"
}
]
},
{
"slug": "/blog/bookmarklets",
"path": "/blog/bookmarklets.mdx",
"title": "Bookmarklets",
"createdAt": "2022-11-06",
"description": "What they are, why they're useful, and how to create them.",
"tags": [
"javascript"
],
"headings": [
{
"display": "What is a bookmarklet?",
"anchor": "what-is-a-bookmarklet"
},
{
"display": "Why are bookmarklets useful?",
"anchor": "why-are-bookmarklets-useful"
},
{
"display": "How to create a bookmarklet",
"anchor": "how-to-create-a-bookmarklet"
}
]
},
{
"slug": "/snippets/dataview",
"path": "/snippets/dataview.md",
"title": "Dataview snippets",
"createdAt": "2022-10-21",
"description": "Snippets I've written for the Dataview Obsidian plugin.",
"tags": [
"obsidianmd",
"javascript"
],
"headings": [
{
"display": "Get days since note was created.",
"anchor": "get-days-since-note-was-created"
},
{
"display": "Get notes that have any matching interests.",
"anchor": "get-notes-that-have-any-matching-interests"
},
{
"display": "Get notes that have any matching interests and only return matching interests.",
"anchor": "get-notes-that-have-any-matching-interests-and-only-return-matching-interests"
},
{
"display": "Get links to previous and next daily notes",
"anchor": "get-links-to-previous-and-next-daily-notes"
}
]
},
{
"slug": "/snippets/download-shootproof-photos-bookmarklet",
"path": "/snippets/download-shootproof-photos-bookmarklet.md",
"title": "Download Shootproof photos bookmarklet",
"createdAt": "2022-10-21",
"description": "This bookmarklet is to download all of the photos from a Shootproof gallery. It'll go through each photo one by one and download the high quality image.",
"tags": [
"javascript"
],
"headings": [
{
"display": "Instructions",
"anchor": "instructions"
},
{
"display": "Code",
"anchor": "code"
}
]
},
{
"slug": "/snippets/get-date-for-timezone-sql",
"path": "/snippets/get-date-for-timezone-sql.md",
"title": "Get date for timezone in SQL",
"createdAt": "2022-10-12",
"description": "Get current date for specific timezone when server is in UTC timezone.",
"tags": [
"sql"
],
"headings": []
},
{
"slug": "/blog/creating-a-use-countdown-react-hook",
"path": "/blog/creating-a-use-countdown-react-hook.mdx",
"title": "Creating a useCountdown React hook",
"createdAt": "2022-08-29",
"description": "I show you the process for creating a React hook for getting the days, hours, minutes, and seconds until an event, with tests to boot!",
"tags": [
"react",
"testing"
],
"headings": [
{
"display": "Humble beginnings",
"anchor": "humble-beginnings"
},
{
"display": "Writing the tests",
"anchor": "writing-the-tests"
},
{
"display": "Creating the hook",
"anchor": "creating-the-hook"
},
{
"display": "Final code",
"anchor": "final-code"
}
]
},
{
"slug": "/snippets/click-all-unchecked-checkboxes",
"path": "/snippets/click-all-unchecked-checkboxes.md",
"title": "Click all unchecked checkboxes",
"createdAt": "2022-04-25",
"description": "Click on all unchecked checkboxes in the document.",
"tags": [
"javascript"
],
"headings": []
},
{
"slug": "/blog/how-to-use-git-bisect",
"path": "/blog/how-to-use-git-bisect.mdx",
"title": "How to use git bisect",
"createdAt": "2022-04-13",
"description": "How to find which commit introduced a bug when you have nowhere else to turn.",
"tags": [
"git"
],
"headings": [
{
"display": "The Solution",
"anchor": "the-solution"
},
{
"display": "Example",
"anchor": "example"
},
{
"display": "Resetting",
"anchor": "resetting"
}
]
},
{
"slug": "/snippets/log-entity-framework-generated-sql",
"path": "/snippets/log-entity-framework-generated-sql.md",
"title": "Log Entity Framework generated SQL",
"createdAt": "2022-03-23",
"description": "Log generated SQL from Entity Framework.",
"tags": [
"sql",
"csharp"
],
"headings": []
},
{
"slug": "/snippets/templater",
"path": "/snippets/templater.md",
"title": "Templater snippets",
"createdAt": "2022-02-07",
"description": "Snippets I've written for the Templater Obsidian plugin.",
"tags": [
"obsidianmd",
"javascript"
],
"headings": [
{
"display": "Create file if it doesn't exist",
"anchor": "create-file-if-it-doesnt-exist"
},
{
"display": "Reapply template instead of append",
"anchor": "reapply-template-instead-of-append"
},
{
"display": "Create links to all files created today",
"anchor": "create-links-to-all-files-created-today"
},
{
"display": "Opening files in new tabs",
"anchor": "opening-files-in-new-tabs"
},
{
"display": "Create links to all weekly notes in current month",
"anchor": "create-links-to-all-weekly-notes-in-current-month"
},
{
"display": "Create links to all daily notes in week",
"anchor": "create-links-to-all-daily-notes-in-week"
},
{
"display": "Suggester for files with tag",
"anchor": "suggester-for-files-with-tag"
},
{
"display": "Suggester for tags",
"anchor": "suggester-for-tags"
},
{
"display": "Get most recently modified file with specific tag",
"anchor": "get-most-recently-modified-file-with-specific-tag"
},
{
"display": "Suggester for files in a specific folder",
"anchor": "suggester-for-files-in-a-specific-folder"
},
{
"display": "Suggester for subfolders in a specific folder",
"anchor": "suggester-for-subfolders-in-a-specific-folder"
},
{
"display": "Using tp.file.include in a user script",
"anchor": "using-tpfileinclude-in-a-user-script"
},
{
"display": "Daily note links to yesterday and tomorrow",
"anchor": "daily-note-links-to-yesterday-and-tomorrow"
},
{
"display": "Retrieve frontmatter from another note",
"anchor": "retrieve-frontmatter-from-another-note"
},
{
"display": "Update frontmatter",
"anchor": "update-frontmatter"
},
{
"display": "Reuse value from prompt or suggester",
"anchor": "reuse-value-from-prompt-or-suggester"
}
]
},
{
"slug": "/blog/children-as-a-react-prop-in-typescript",
"path": "/blog/children-as-a-react-prop-in-typescript.mdx",
"title": "Children as a React prop in TypeScript",
"createdAt": "2021-12-31",
"description": "How to type the 'children' prop for React Typescript components.",
"tags": [
"react",
"typescript"
],
"headings": [
{
"display": "PropsWithChildren Type",
"anchor": "propswithchildren-type"
},
{
"display": "FunctionalComponent (FC) Type",
"anchor": "functionalcomponent-fc-type"
},
{
"display": "ReactNode Type",
"anchor": "reactnode-type"
},
{
"display": "What if I only want to pass children?",
"anchor": "what-if-i-only-want-to-pass-children"
}
]
},
{
"slug": "/blog/handling-react-state-outside-react",
"path": "/blog/handling-react-state-outside-react.mdx",
"title": "Handling React state outside of React",
"createdAt": "2021-12-13",
"description": "How to call the setState function safely when using third-party libraries that are not compatible with React.",
"tags": [
"react"
],
"headings": [
{
"display": "Solutions",
"anchor": "solutions"
}
]
}
]