Browse Source

rm bm from index

windhamdavid 6 days ago
parent
commit
f8f8197081
8 changed files with 255 additions and 93 deletions
  1. 85 0
      bookmarks.html
  2. 2 1
      package.json
  3. 63 0
      scripts/build-recent.mjs
  4. 34 0
      src/components/Recent/index.jsx
  5. 46 0
      src/css/custom.css
  6. 1 0
      src/data/recent.json
  7. 2 8
      src/pages/about.md
  8. 22 84
      src/pages/index.mdx

+ 85 - 0
bookmarks.html

@@ -0,0 +1,85 @@
+<!DOCTYPE NETSCAPE-Bookmark-file-1>
+<!-- Exported from davidawindham.com/til index. Netscape/Firefox bookmark format. -->
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
+<TITLE>Bookmarks</TITLE>
+<H1>TIL Bookmarks</H1>
+<DL><p>
+    <DT><H3>TIL — 2021</H3>
+    <DL><p>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Redd_Foxx#Death" ADD_DATE="1614556800">When Redd Foxx died, everyone laughed because they thought it was a reference to Fred Sanford</A>
+    </DL><p>
+    <DT><H3>TIL — 2020</H3>
+    <DL><p>
+        <DT><A HREF="https://www.socialprogress.org/index/global/results" ADD_DATE="1598918400">The U.S. now ranks 28th in the Global Social Progress rankings</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Eisegesis" ADD_DATE="1598918400">Eisegesis - v. is the process of interpreting text in such a way as to introduce one's own presuppositions</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Meetings,_Bloody_Meetings" ADD_DATE="1596240000">Meetings, Bloody Meetings</A>
+        <DT><A HREF="https://github.com/jgm/pandoc" ADD_DATE="1583020800">Pandoc is the way to convert doc types</A>
+    </DL><p>
+    <DT><H3>TIL — 2019</H3>
+    <DL><p>
+        <DT><A HREF="https://en.wikipedia.org/wiki/A_Night_in_Casablanca" ADD_DATE="1546300800">Groucho Marx told Warner Brothers that he owned 'brothers'</A>
+    </DL><p>
+    <DT><H3>TIL — 2017</H3>
+    <DL><p>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Disinformation" ADD_DATE="1509494400">Disinformation - dezinformatsiya</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Eliminative_materialism" ADD_DATE="1506816000">Eliminative materialism</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/List_of_pantheists" ADD_DATE="1506816000">List of Pantheists</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Metcalfe%27s_law" ADD_DATE="1506816000">Metcalfe's law</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Regulatory_capture" ADD_DATE="1506816000">Regulatory Capture</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Charles_Harrelson" ADD_DATE="1506816000">Woody Harrelson's Father was a hit man</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Epic_of_Gilgamesh" ADD_DATE="1506816000">Epic of Gilgamesh</A>
+        <DT><A HREF="https://www.salon.com/2017/09/16/33-13-devo-excerpt/" ADD_DATE="1506816000">Whip It (Devo song) intended to satirize American optimism</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/Gaslighting" ADD_DATE="1501545600">Gaslighting (term)</A>
+        <DT><A HREF="http://bookshelfjs.org/" ADD_DATE="1501545600">Bookshelf.js</A>
+        <DT><A HREF="http://knexjs.org/" ADD_DATE="1501545600">Knex.js</A>
+        <DT><A HREF="https://mariadb.com/resources/blog/json-mariadb-102" ADD_DATE="1501545600">JSON MariaDB 10.2</A>
+        <DT><A HREF="https://dev.mysql.com/doc/refman/5.7/en/json.html" ADD_DATE="1501545600">JSON MySQL Data Type</A>
+        <DT><A HREF="https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html" ADD_DATE="1501545600">JSON Function Reference</A>
+        <DT><A HREF="https://scotch.io/tutorials/working-with-json-in-mysql" ADD_DATE="1501545600">Working with JSON in MySQL</A>
+        <DT><A HREF="https://expo.io/" ADD_DATE="1501545600">Expo</A>
+        <DT><A HREF="https://helmetjs.github.io/" ADD_DATE="1501545600">Helmet - Express.js security with HTTP headers</A>
+        <DT><A HREF="https://github.com/lukehoban/es6features" ADD_DATE="1501545600">ECMAScript 6 features</A>
+        <DT><A HREF="https://github.com/prettier/prettier" ADD_DATE="1501545600">Prettier - code formatter</A>
+        <DT><A HREF="https://library.panic.com/transmit5/sftp-authentication/" ADD_DATE="1498867200">Transmit 5 SSH key handling</A>
+        <DT><A HREF="https://w3.usa.siemens.com/powerdistribution/us/en/product-portfolio/electricvehicle/versicharge/pages/ev-charging-station.aspx" ADD_DATE="1498867200">Siemens VersiCharge - 220V</A>
+        <DT><A HREF="https://seekingalpha.com/article/4089390-netflix-growth-justify-valuation" ADD_DATE="1498867200">Netflix Stock Valuation</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding" ADD_DATE="1496275200">H.265 - (HVEC)</A>
+        <DT><A HREF="https://nokiatech.github.io/heif/" ADD_DATE="1496275200">High Efficiency Image File Format(HEIF)</A>
+        <DT><A HREF="https://github.com/nokiatech/heif" ADD_DATE="1496275200">https://github.com/nokiatech/heif</A>
+        <DT><A HREF="https://github.com/babel/babili" ADD_DATE="1496275200">babili - ES6 minifier</A>
+        <DT><A HREF="http://www.muse-ui.org/#/index" ADD_DATE="1496275200">k6 load testing</A>
+        <DT><A HREF="https://github.com/loadimpact/k6" ADD_DATE="1496275200">https://github.com/loadimpact/k6</A>
+        <DT><A HREF="http://www.muse-ui.org/#/index" ADD_DATE="1496275200">Muse UI - Vuejs Material Design</A>
+        <DT><A HREF="https://blog.docker.com/2017/04/introducing-the-moby-project/" ADD_DATE="1496275200">The Moby Project (docker blog)</A>
+        <DT><A HREF="https://mobyproject.org/" ADD_DATE="1496275200">https://mobyproject.org/</A>
+        <DT><A HREF="https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V8.md#8.0.0" ADD_DATE="1493596800">Node 8.x (Carbon) LTS release in October</A>
+        <DT><A HREF="https://medium.com/npm-inc/npm-5-is-now-npm-latest-d674e9e3b0ec" ADD_DATE="1493596800">npm@5 is now npm@latest</A>
+        <DT><A HREF="https://github.com/airbnb/react-sketchapp" ADD_DATE="1493596800">Render React compaonents to Sketch</A>
+        <DT><A HREF="https://nuclide.io/docs/features/debugger/" ADD_DATE="1493596800">Atom Nuclide for React Debugging</A>
+        <DT><A HREF="https://nuclide.io/docs/languages/flow/" ADD_DATE="1493596800">Nuclide Flow</A>
+        <DT><A HREF="https://flow.org/en/docs/" ADD_DATE="1493596800">Flow Static Type Checker</A>
+        <DT><A HREF="https://nuclide.io/docs/features/remote/#nuclide-server" ADD_DATE="1493596800">Nuclide Server</A>
+        <DT><A HREF="https://en.wikipedia.org/wiki/HTTP/2_Server_Push" ADD_DATE="1493596800">HTTP/2 Server Push</A>
+        <DT><A HREF="http://php.net/manual/en/migration71.php" ADD_DATE="1493596800">http://php.net/manual/en/migration71.php</A>
+        <DT><A HREF="http://php.net/manual/en/migration71.deprecated.php" ADD_DATE="1493596800">mcrypt is deprecated</A>
+        <DT><A HREF="https://www.google.com/culturalinstitute/beta/exhibit/AQfyFcoI" ADD_DATE="1493596800">Searching for the Seventies - U.S. National Archives</A>
+        <DT><A HREF="https://www.google.com/culturalinstitute/beta/asset/yoichi-okamoto-washington-dc-may-1973/XgFH0-MGK4AKmw" ADD_DATE="1493596800">Yoichi Okamoto - Photographer (son, Philip, of Greenville, S.C)</A>
+        <DT><A HREF="https://www.washingtonpost.com/archive/local/1985/04/25/photographer-yoichi-okamoto-dies-at-69/49e170df-c57b-420e-b6b9-6963f3fd66b4/?utm_term=.7d2f0d0b339a" ADD_DATE="1493596800">Photographer Yoichi Okamoto Dies at 69</A>
+        <DT><A HREF="https://www.washingtonpost.com/archive/local/1992/05/21/paula-okamoto-broadcaster-for-voa-dies/02b93dc7-ff3f-4df3-bbf8-3edbf68de527/?utm_term=.fc1a7d820c0f" ADD_DATE="1493596800">PAULA OKAMOTO, BROADCASTER FOR VOA, DIES</A>
+        <DT><A HREF="https://githubengineering.com/how-four-native-developers-wrote-an-electron-app/" ADD_DATE="1493596800">How Four Native Developers Wrote An Electron App</A>
+        <DT><A HREF="http://stackoverflow.com/questions/43665243/chrome-invalid-self-signed-ssl-cert-subject-alternative-name-missing" ADD_DATE="1493596800">Chrome: Invalid self signed SSL cert - “Subject Alternative Name Missing”</A>
+        <DT><A HREF="https://yarnpkg.com/en/docs/getting-started" ADD_DATE="1493596800">Getting Started - Yarn package manager</A>
+        <DT><A HREF="https://medium.freecodecamp.com/an-animated-guide-to-flexbox-d280cf6afc35" ADD_DATE="1493596800">How Flexbox works — explained with big, colorful, animated gifs</A>
+        <DT><A HREF="https://github.com/browniefed/react-native-animation-book" ADD_DATE="1493596800">React Native Animation Book</A>
+        <DT><A HREF="https://blog.feathersjs.com/ssr-vuejs-app-with-feathers-and-nuxt-bb7dfd3e6397" ADD_DATE="1493596800">Integrating Nuxt into your Feathers application</A>
+        <DT><A HREF="https://github.com/lwdgit/gitbook-plugin-search-plus" ADD_DATE="1493596800">Gitbook Search any character</A>
+        <DT><A HREF="https://github.com/louischatriot/nedb" ADD_DATE="1493596800">NeDB - Javascript Database</A>
+        <DT><A HREF="https://rollupjs.org/" ADD_DATE="1493596800">rollup.js</A>
+        <DT><A HREF="https://medium.com/webpack/webpack-and-rollup-the-same-but-different-a41ad427058c" ADD_DATE="1493596800">Webpack and Rollup: the same but different</A>
+        <DT><A HREF="https://nuxtjs.org/" ADD_DATE="1493596800">Nuxt.js</A>
+        <DT><A HREF="http://www.icynic.com/~don/psych.html" ADD_DATE="1493596800">Psychological JuJitsu - Card game</A>
+        <DT><A HREF="https://medium.com/reloading/javascript-start-up-performance-69200f43b201" ADD_DATE="1491004800">JavaScript Start-up Performance - Addy Osmani</A>
+        <DT><A HREF="https://medium.com/elemefe/upgrading-ele-me-to-progressive-web-app-2a446832e509" ADD_DATE="1491004800">Upgrading Ele.me to Progressive Web App</A>
+        <DT><A HREF="https://github.com/react-community/create-react-native-app" ADD_DATE="1491004800">Introducing Create React Native App</A>
+    </DL><p>
+</DL><p>

+ 2 - 1
package.json

@@ -5,8 +5,9 @@
   "scripts": {
   "scripts": {
     "docusaurus": "docusaurus",
     "docusaurus": "docusaurus",
     "graph": "node scripts/build-graph.mjs",
     "graph": "node scripts/build-graph.mjs",
+    "recent": "node scripts/build-recent.mjs",
     "start": "docusaurus start",
     "start": "docusaurus start",
-    "prebuild": "node scripts/build-graph.mjs",
+    "prebuild": "node scripts/build-graph.mjs && node scripts/build-recent.mjs",
     "build": "docusaurus build",
     "build": "docusaurus build",
     "swizzle": "docusaurus swizzle",
     "swizzle": "docusaurus swizzle",
     "deploy": "docusaurus deploy",
     "deploy": "docusaurus deploy",

+ 63 - 0
scripts/build-recent.mjs

@@ -0,0 +1,63 @@
+#!/usr/bin/env node
+/**
+ * build-recent.mjs — extract the latest 10 entries from each section index's
+ * `## Log` (docs/notes/lists) into src/data/recent.json, for the "Recent"
+ * column on the home page. URLs are normalized to real routes (verified against
+ * graph.json) so the sidebar links resolve. Run via `npm run recent` (and the
+ * prebuild hook). Reads graph.json, so run build-graph.mjs first.
+ */
+import { readFileSync, writeFileSync, mkdirSync } from 'fs';
+import { join, dirname } from 'path';
+import { fileURLToPath } from 'url';
+
+const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..');
+const N = 10;
+const SECTIONS = [
+  { key: 'docs', file: 'docs/index.md', base: '/docs' },
+  { key: 'notes', file: 'notes/index.md', base: '/notes' },
+  { key: 'lists', file: 'lists/index.md', base: '/lists' },
+];
+
+const graph = JSON.parse(readFileSync(join(ROOT, 'src/data/graph.json'), 'utf8'));
+const routes = new Set(graph.nodes.map((n) => n.id));
+const routesLc = new Map(graph.nodes.map((n) => [n.id.toLowerCase(), n.id]));
+
+function normalizeUrl(url, base) {
+  let u = url.split('#')[0].split('?')[0].replace(/\.mdx?$/i, '');
+  if (!u.startsWith('/')) u = `${base}/${u}`;
+  u = u.replace(/\/{2,}/g, '/');
+  if (u.length > 1) u = u.replace(/\/$/, '');
+  if (routes.has(u)) return u;
+  const ci = routesLc.get(u.toLowerCase());
+  if (ci) return ci;
+  const seg = u.split('/');                                  // folder-index collapse: /x/foo/foo → /x/foo
+  if (seg.length >= 2 && seg[seg.length - 1] === seg[seg.length - 2]) {
+    const collapsed = seg.slice(0, -1).join('/');
+    if (routes.has(collapsed)) return collapsed;
+  }
+  return u; // best effort
+}
+
+const LINK_RE = /\[([^\]]+)\]\(([^)\s]+)\)/;
+const out = {};
+
+for (const { key, file, base } of SECTIONS) {
+  const text = readFileSync(join(ROOT, file), 'utf8');
+  const logStart = text.indexOf('## Log');
+  const body = logStart === -1 ? '' : text.slice(logStart);
+  const items = [];
+  for (const line of body.split('\n')) {
+    const dm = line.match(/^\s*-\s*(\d{2}\/\d{2}(?:\/\d{2})?)\s*-\s*(.*)$/);
+    if (!dm) continue;
+    const link = dm[2].match(LINK_RE);
+    if (!link) continue;
+    items.push({ date: dm[1], title: link[1].replace(/[`*_]/g, '').trim(), url: normalizeUrl(link[2], base) });
+    if (items.length >= N) break;
+  }
+  out[key] = items;
+}
+
+mkdirSync(join(ROOT, 'src', 'data'), { recursive: true });
+writeFileSync(join(ROOT, 'src', 'data', 'recent.json'), JSON.stringify(out, null, 0) + '\n');
+console.log('recent.json →', SECTIONS.map((s) => `${s.key}=${out[s.key].length}`).join(' '));
+for (const s of SECTIONS) console.log(`  ${s.key}: ${out[s.key].slice(0, 3).map((i) => i.date + ' ' + i.url).join(' | ')} …`);

+ 34 - 0
src/components/Recent/index.jsx

@@ -0,0 +1,34 @@
+import React from 'react';
+import Link from '@docusaurus/Link';
+import recent from '@site/src/data/recent.json';
+
+// The latest entries from each section index's `## Log`, generated at build time
+// by scripts/build-recent.mjs. Rendered as a right-hand column on the home page.
+const SECTIONS = [
+  {key: 'docs', label: 'Docs', href: '/docs/'},
+  {key: 'notes', label: 'Notes', href: '/notes/'},
+  {key: 'lists', label: 'Lists', href: '/lists/'},
+];
+
+export default function Recent() {
+  return (
+    <aside className="til-recent" aria-label="Recent activity">
+      <div className="til-recent-head">Recently</div>
+      {SECTIONS.map(({key, label, href}) => (
+        <section key={key} className="til-recent-block">
+          <h3 className="til-recent-title">
+            <Link to={href}>{label}</Link>
+          </h3>
+          <ul>
+            {(recent[key] || []).map((it, i) => (
+              <li key={i}>
+                <span className="til-recent-date">{it.date}</span>
+                <Link to={it.url}>{it.title}</Link>
+              </li>
+            ))}
+          </ul>
+        </section>
+      ))}
+    </aside>
+  );
+}

+ 46 - 0
src/css/custom.css

@@ -159,6 +159,52 @@ form input {
   }
   }
 }
 }
 
 
+/* Home page "Recently" column — latest items from each section log (src/components/Recent) */
+.til-recent {
+  float: right;
+  width: 300px;
+  margin: 0.4rem 0 1.5rem 2rem;
+  padding: 0.5rem 1rem 0.75rem;
+  border: 1px solid var(--ifm-color-emphasis-300);
+  border-radius: 8px;
+  background: var(--ifm-background-surface-color);
+  /* no font-size → inherit the page content size so it matches the left column */
+}
+.til-recent-head {
+  font-weight: 700;
+  text-transform: uppercase;
+  letter-spacing: 0.04em;
+  font-size: 0.72em;
+  opacity: 0.6;
+  margin: 0.5rem 0 0.25rem;
+}
+.til-recent-title {
+  font-size: 1.05em;
+  margin: 0.75rem 0 0.35rem;
+}
+.til-recent ul {
+  list-style: none;
+  padding: 0;
+  margin: 0;
+}
+.til-recent li {
+  margin: 0.2rem 0;
+  line-height: 1.3;
+}
+.til-recent-date {
+  color: var(--ifm-color-emphasis-600);
+  font-variant-numeric: tabular-nums;
+  font-size: 0.85em;
+  margin-right: 0.4rem;
+}
+@media (max-width: 996px) {
+  .til-recent {
+    float: none;
+    width: auto;
+    margin: 1rem 0 1.5rem;
+  }
+}
+
 .ReactPiano__Key--active.ReactPiano__Key--natural {
 .ReactPiano__Key--active.ReactPiano__Key--natural {
   background: #25c2a0 !important;
   background: #25c2a0 !important;
 }
 }

+ 1 - 0
src/data/recent.json

@@ -0,0 +1 @@
+{"docs":[{"date":"26/05/24","title":"AI","url":"/docs/ai"},{"date":"26/02/23","title":"AI Agents","url":"/docs/ai"},{"date":"25/11/08","title":"Kosmo","url":"/docs/computers/kos"},{"date":"25/04/07","title":"Stu","url":"/docs/computers/stu"},{"date":"25/02/13","title":"Squid","url":"/docs/computers/squid"},{"date":"25/02/09","title":"zeke migration","url":"/docs/computers/zeke"},{"date":"25/01/22","title":"computers/ovid","url":"/docs/computers/ovid"},{"date":"24/12/01","title":"docs/saas/github","url":"/docs/saas/github"},{"date":"24/11/23","title":"Lisa","url":"/docs/computers/lisa"},{"date":"24/11/18","title":"PostgreSQL","url":"/docs/db/PostgreSQL"}],"notes":[{"date":"26/03/23","title":"house/kitchen","url":"/notes/house/kitchen"},{"date":"26/03/20","title":"notes/garden","url":"/notes/garden"},{"date":"26/02/18","title":"projects/RAG","url":"/notes/work/projects/ai-rag"},{"date":"26/01/02","title":"art/paint","url":"/notes/art/paint"},{"date":"25/08/16","title":"house/bath","url":"/notes/house/bath"},{"date":"25/04/26","title":"music/music","url":"/notes/music"},{"date":"25/03/03","title":"house/studio","url":"/notes/house/studio"},{"date":"25/02/15","title":"house/helene","url":"/notes/house/helene"},{"date":"24/12/16","title":"health","url":"/notes/health"},{"date":"24/12/08","title":"house/bath","url":"/notes/house/bath"}],"lists":[{"date":"25/11/14","title":"thanksgiving","url":"/lists/food/thanksgiving"},{"date":"25/01/26","title":"reading","url":"/lists/now/reading"},{"date":"24/12/13","title":"shopping","url":"/lists/shopping"},{"date":"24/11/19","title":"Github stars","url":"/lists/stars"},{"date":"24/11/10","title":"Todo","url":"/lists/todo"},{"date":"24/04/24","title":"Words","url":"/lists/words"},{"date":"24/02/06","title":"Github stars","url":"/lists/stars"},{"date":"24/01/27","title":"Art/Motion","url":"/lists/art/motion"},{"date":"24/01/16","title":"Travel","url":"/lists/travel"},{"date":"23/12/18","title":"Durant Quote","url":"/lists/quotes"}]}

+ 2 - 8
src/pages/about.md

@@ -13,14 +13,8 @@ This is a place to store some notes and documentation. It was originally built a
 
 
 I'm often searching online documentation for answers to commands, configurations, and error messages. I figured that since I spend most of my working time with the terminal, git, and text files, a more efficient and easier method of documenting the time I spend reading other documentation would be to build my own TIL. This way the information I learn will be easy to record, search and edit. The problem is that I've found myself repeating those searches because of the breadth and depth of the amount of functions and libraries involved in development. My wife suggested I call it TIHIDI 'this is how I did it' after explaining what I was working on. It makes sense to use a static documentation instead of database because it's quicker, easier to search, under version control, and the file formats are interoperable with other software and publishing frameworks.  
 I'm often searching online documentation for answers to commands, configurations, and error messages. I figured that since I spend most of my working time with the terminal, git, and text files, a more efficient and easier method of documenting the time I spend reading other documentation would be to build my own TIL. This way the information I learn will be easy to record, search and edit. The problem is that I've found myself repeating those searches because of the breadth and depth of the amount of functions and libraries involved in development. My wife suggested I call it TIHIDI 'this is how I did it' after explaining what I was working on. It makes sense to use a static documentation instead of database because it's quicker, easier to search, under version control, and the file formats are interoperable with other software and publishing frameworks.  
 
 
-I'm hoping it'll help me keep my bookmarks as little less cluttered and it'll leave my [desk page](https://davidawindham.com/desk) free for longer form essays. I'll keep the LOG in the [README](https://code.davidawindham.com/david/til/src/master/README.md), add a [help page](/help), and some [vi cheat sheets](/docs/shell/vi) to get started because I'm always forgetting some of them.
+I'm hoping it'll help me keep my bookmarks as little less cluttered and it'll leave my [desk page](https://davidawindham.com/desk) free for longer form essays. I'll keep the LOG in the [README](https://code.davidawindham.com/david/til/src/master/README.md), add a [help page](/help), and some [vi cheat sheets](/docs/shell/vi) to get started because I'm always forgetting some of them. You could start with a [sitemap](/map/) or the [graph](/graph/).
 
 
-You could start with a [sitemap](/map/) or the [graph](/graph/)
-
-Here's a map from June 2023👇🏼
+Here's a graph from June 2023👇🏼
 
 
 [![til_map](/img/til.png)](/img/til.png)
 [![til_map](/img/til.png)](/img/til.png)
-
-Here's a map from June 2026👇🏼
-
-[![til_map](/img/til-1.png)](/img/til-1.png)

+ 22 - 84
src/pages/index.md → src/pages/index.mdx

@@ -3,8 +3,12 @@ title: Today I Learned
 description: A place to keep notes and documentation
 description: A place to keep notes and documentation
 ---
 ---
 
 
+import Recent from "@site/src/components/Recent";
+
 # Today I Learned
 # Today I Learned
 
 
+<Recent />
+
 - **2026**
 - **2026**
   - 26/05/20 - [Wildflowers](/posts/wildflowers)
   - 26/05/20 - [Wildflowers](/posts/wildflowers)
   - 26/04/11 - [Weeds](/posts/weeds)
   - 26/04/11 - [Weeds](/posts/weeds)
@@ -127,109 +131,43 @@ description: A place to keep notes and documentation
   - 22/04 - [Lychee moved to it's own org](/docs/host/Lychee)
   - 22/04 - [Lychee moved to it's own org](/docs/host/Lychee)
   - 22/04 - [Ovid - Macbook Pro](/docs/computers/ovid)
   - 22/04 - [Ovid - Macbook Pro](/docs/computers/ovid)
   - 22/04 - [Preparing my Mac Mini to migrate to a new ARM based Mac](/docs/computers/magic)
   - 22/04 - [Preparing my Mac Mini to migrate to a new ARM based Mac](/docs/computers/magic)
-  - 22/03 - [When Redd Foxx died, everyone laughed because they thought it was a reference to Fred Sanford](https://en.wikipedia.org/wiki/Redd_Foxx#Death)
   - 22/03 - [Woozer data center migration lost the php7.4-fpm sock](https://davidawindham.com/til/docs/projects/woozer/)
   - 22/03 - [Woozer data center migration lost the php7.4-fpm sock](https://davidawindham.com/til/docs/projects/woozer/)
-  - 22/03 - [Gotta Migrate this TIL because Gitbook doesn't play nicely with Node.js v14](https://davidawindham.com/til/help)
+  - 22/03 - [Gotta Migrate this TIL because Gitbook doesn't play nicely with Node.js v14](/help)
 - **2020**  
 - **2020**  
-  - 20/09 - [The U.S. now ranks 28th in the Global Social Progress rankings](https://www.socialprogress.org/index/global/results)
-  - 20/09 - [Eisegesis - v. is the process of interpreting text in such a way as to introduce one's own presuppositions](https://en.wikipedia.org/wiki/Eisegesis)
-  - 22/08 - [Meetings, Bloody Meetings](https://en.wikipedia.org/wiki/Meetings,_Bloody_Meetings)
   - 20/03 - [Zeke setup](https://davidawindham.com/til/docs/projects/zeke/)
   - 20/03 - [Zeke setup](https://davidawindham.com/til/docs/projects/zeke/)
-  - 20/03 - [Migrate Gitbook to Docsify](https://davidawindham.com/til/help)
-  - 20/03 - [Kubernetes Commands](https://davidawindham.com/til/docs/server/kubernetes)
-  - 20/03 - [Pandoc is the way to convert doc types](https://github.com/jgm/pandoc)
-  - 20/03 - [Shall We Play a Game? - DDOS Notes](https://davidawindham.com/til/docs/saas/akamai)
-  - 20/02 - [Xiph Icecast2 GPG Key expired](https://davidawindham.com/til/docs/host/icecast)
-  - 20/02 - [Woozer Ubuntu 18.04 Upgrade](https://davidawindham.com/til/docs/saas/akamai)
+  - 20/03 - [Migrate Gitbook to Docsify](/help)
+  - 20/03 - [Kubernetes Commands](/docs/server/kubernetes)
+  - 20/03 - [Shall We Play a Game? - DDOS Notes](/docs/saas/akamai)
+  - 20/02 - [Xiph Icecast2 GPG Key expired](/docs/host/Icecast)
+  - 20/02 - [Woozer Ubuntu 18.04 Upgrade](/docs/saas/akamai)
   - 20/02 - [Jo Harvey Allen is who says "It was love that killed John F. Kennedy. He should have never messed with me. They want me to speak on 60 Minutes. Mike Wallace wants my body" in _True Stories_](https://davidawindham.com/true-stories-2/)
   - 20/02 - [Jo Harvey Allen is who says "It was love that killed John F. Kennedy. He should have never messed with me. They want me to speak on 60 Minutes. Mike Wallace wants my body" in _True Stories_](https://davidawindham.com/true-stories-2/)
 - **2020**  
 - **2020**  
   - 20/01 - [Annual overhaul of the machines](https://davidawindham.com/late-adopter/)  
   - 20/01 - [Annual overhaul of the machines](https://davidawindham.com/late-adopter/)  
   [MacOS 10.15](https://davidawindham.com/til/docs/localhost/custom) /
   [MacOS 10.15](https://davidawindham.com/til/docs/localhost/custom) /
-  [PHP 7.4.2](https://davidawindham.com/til/docs/lang/PHP) /
-  [MySQL 8.0.19](https://davidawindham.com/til/docs/db/MySQL) /
-  [Ruby 2.7.0](https://davidawindham.com/til/docs/lang/Ruby) /
-  [Rails 5.2.4.1](https://davidawindham.com/til/docs/waf/rails) /
-  [Homebrew 2.2.5](https://davidawindham.com/til/docs/localhost/brew) /
-  [Node 2.2.5](https://davidawindham.com/til/docs/localhost/brew) /
-  [NPM 6.9.2](https://davidawindham.com/til/docs/lang/npm) /
+  [PHP 7.4.2](/docs/lang/PHP) /
+  [MySQL 8.0.19](/docs/db/MySQL) /
+  [Ruby 2.7.0](/docs/lang/Ruby) /
+  [Rails 5.2.4.1](/docs/waf/rails) /
+  [Homebrew 2.2.5](/docs/localhost/brew) /
+  [Node 2.2.5](/docs/localhost/brew) /
+  [NPM 6.9.2](/docs/lang/npm) /
   [Node 10.16.3](https://davidawindham.com/til/docs/waf/nodejs) /
   [Node 10.16.3](https://davidawindham.com/til/docs/waf/nodejs) /
-  [Golang 1.13.7](https://davidawindham.com/til/docs/lang/Golang)
+  [Golang 1.13.7](/docs/lang/Golang)
 - **2019**  
 - **2019**  
   - 19/09 - [PHP 7.3 updates](/docs/lang/PHP)
   - 19/09 - [PHP 7.3 updates](/docs/lang/PHP)
-  - 19/01 - [LetsEncrypt Certbot TLS-SNI-01 deprecated](https://davidawindham.com/til/docs/server/letsencrypt)
-  - 19/01 - [Groucho Marx told Warner Brothers that he owned 'brothers'](https://en.wikipedia.org/wiki/A_Night_in_Casablanca)
+  - 19/01 - [LetsEncrypt Certbot TLS-SNI-01 deprecated](/docs/server/letsencrypt)
 - **2018**
 - **2018**
-  - 18/11 - [Update MongoDB to 4.0.2](https://davidawindham.com/til/docs/db/mongodb)  
-  - 18/11 - [Icecast Update Overwrite](https://davidawindham.com/til/docs/host/icecast)
+  - 18/11 - [Update MongoDB to 4.0.2](/docs/db/MongoDB)  
+  - 18/11 - [Icecast Update Overwrite](/docs/host/Icecast)
 - **2017**  
 - **2017**  
-  - 17/11 - [Benchmarking Sites with Firefox, Siege, and Sproxy](https://davidawindham.com/til/docs/host/siege-sproxy)
-  - 17/11 - [Disinformation - dezinformatsiya](https://en.wikipedia.org/wiki/Disinformation)
-  - 17/10 - [Eliminative materialism](https://en.wikipedia.org/wiki/Eliminative_materialism)
-  - 17/10 - [List of Pantheists](https://en.wikipedia.org/wiki/List_of_pantheists)
-  - 17/10 - [Metcalfe's law](https://en.wikipedia.org/wiki/Metcalfe%27s_law)
-  - 17/10 - [Regulatory Capture](https://en.wikipedia.org/wiki/Regulatory_capture)  
-  - 17/10 - [Woody Harrelson's Father was a hit man](https://en.wikipedia.org/wiki/Charles_Harrelson)
-  - 17/10 - [Epic of Gilgamesh](https://en.wikipedia.org/wiki/Epic_of_Gilgamesh)
-  - 17/10 - [Whip It (Devo song) intended to satirize American optimism](https://www.salon.com/2017/09/16/33-13-devo-excerpt/)
-  - 17/08 - [Gaslighting (term)](https://en.wikipedia.org/wiki/Gaslighting)
-  - 17/08 - [Bookshelf.js](http://bookshelfjs.org/)
-  - 17/08 - [Knex.js](http://knexjs.org/)
-  - 17/08 - [JSON MariaDB 10.2](https://mariadb.com/resources/blog/json-mariadb-102)
-  - 17/08 - [JSON MySQL Data Type](https://dev.mysql.com/doc/refman/5.7/en/json.html)
-  - 17/08 - [JSON Function Reference](https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html)
-  - 17/08 - [Working with JSON in MySQL](https://scotch.io/tutorials/working-with-json-in-mysql)
-  - 17/08 - [Expo](https://expo.io/)
-  - 17/08 - [Helmet - Express.js security with HTTP headers](https://helmetjs.github.io/)
-  - 17/08 - [ECMAScript 6 features](https://github.com/lukehoban/es6features)  
-  - 17/08 - [Prettier - code formatter](https://github.com/prettier/prettier)   
-  - 17/07 - [Transmit 5 SSH key handling](https://library.panic.com/transmit5/sftp-authentication/)
+  - 17/11 - [Benchmarking Sites with Firefox, Siege, and Sproxy](/docs/host/Siege-sproxy)
   - 17/07 - [BMW i3 - ( https://davidawindham.com/its-electric/ )](https://davidawindham.com/its-electric/)  
   - 17/07 - [BMW i3 - ( https://davidawindham.com/its-electric/ )](https://davidawindham.com/its-electric/)  
-  - 17/07 - [Siemens VersiCharge - 220V](https://w3.usa.siemens.com/powerdistribution/us/en/product-portfolio/electricvehicle/versicharge/pages/ev-charging-station.aspx)
-  - 17/07 - [Netflix Stock Valuation](https://seekingalpha.com/article/4089390-netflix-growth-justify-valuation)  
-  - 17/06 - [H.265 - (HVEC)](https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding)
-  - 17/06 - [High Efficiency Image File Format(HEIF)](https://nokiatech.github.io/heif/)
-  - 17/06 - [https://github.com/nokiatech/heif](https://github.com/nokiatech/heif)
-  - 17/06 - [babili - ES6 minifier](https://github.com/babel/babili)
-  - 17/06 - [k6 load testing](http://www.muse-ui.org/#/index)
-  - 17/06 - [https://github.com/loadimpact/k6](https://github.com/loadimpact/k6)
-  - 17/06 - [Muse UI - Vuejs Material Design](http://www.muse-ui.org/#/index)
-  - 17/06 - [The Moby Project (docker blog)](https://blog.docker.com/2017/04/introducing-the-moby-project/)
-  - 17/06 - [https://mobyproject.org/](https://mobyproject.org/)
   - 17/06 - [Docker Ubuntu 16.04 Linode issue](/docs/server/docker) and [Linode Kernel](/docs/saas/akamai)  
   - 17/06 - [Docker Ubuntu 16.04 Linode issue](/docs/server/docker) and [Linode Kernel](/docs/saas/akamai)  
-  - 17/05 - [Node 8.x (Carbon) LTS release in October](https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V8.md#8.0.0)
   - 17/05 - [NPM v5.0.1 release](/docs/lang/npm)
   - 17/05 - [NPM v5.0.1 release](/docs/lang/npm)
-  - 17/05 - [npm@5 is now `npm@latest`](https://medium.com/npm-inc/npm-5-is-now-npm-latest-d674e9e3b0ec)
   - 17/05 - [Zammad](/docs/host/Zammad)
   - 17/05 - [Zammad](/docs/host/Zammad)
   - 17/05 - [WordPress - Determine Current Taxonmy and List Children](/docs/host/WordPress)
   - 17/05 - [WordPress - Determine Current Taxonmy and List Children](/docs/host/WordPress)
-  - 17/05 - [Render React compaonents to Sketch](https://github.com/airbnb/react-sketchapp)
-  - 17/05 - [Atom Nuclide for React Debugging](https://nuclide.io/docs/features/debugger/)
-  - 17/05 - [Nuclide Flow](https://nuclide.io/docs/languages/flow/)
-  - 17/05 - [Flow Static Type Checker](https://flow.org/en/docs/)
-  - 17/05 - [Nuclide Server](https://nuclide.io/docs/features/remote/#nuclide-server)
-  - 17/05 - [HTTP/2 Server Push](https://en.wikipedia.org/wiki/HTTP/2_Server_Push)
   - 17/05 - [Homebrew PHP7 to PHP7.1 Upgrade](/docs/localhost/brew)
   - 17/05 - [Homebrew PHP7 to PHP7.1 Upgrade](/docs/localhost/brew)
-  - 17/05 - [http://php.net/manual/en/migration71.php](http://php.net/manual/en/migration71.php)
-  - 17/05 - [mcrypt is deprecated](http://php.net/manual/en/migration71.deprecated.php)
-  - 17/05 - [Searching for the Seventies - U.S. National Archives](https://www.google.com/culturalinstitute/beta/exhibit/AQfyFcoI)
-  - 17/05 - [Yoichi Okamoto - Photographer (son, Philip, of Greenville, S.C)](https://www.google.com/culturalinstitute/beta/asset/yoichi-okamoto-washington-dc-may-1973/XgFH0-MGK4AKmw)
-  - 17/05 - [Photographer Yoichi Okamoto Dies at 69](https://www.washingtonpost.com/archive/local/1985/04/25/photographer-yoichi-okamoto-dies-at-69/49e170df-c57b-420e-b6b9-6963f3fd66b4/?utm_term=.7d2f0d0b339a)
-  - 17/05 - [PAULA OKAMOTO, BROADCASTER FOR VOA, DIES](https://www.washingtonpost.com/archive/local/1992/05/21/paula-okamoto-broadcaster-for-voa-dies/02b93dc7-ff3f-4df3-bbf8-3edbf68de527/?utm_term=.fc1a7d820c0f)
-  - 17/05 - [How Four Native Developers Wrote An Electron App](https://githubengineering.com/how-four-native-developers-wrote-an-electron-app/)
   - 17/05 - [Fixing Chrome 58+ [missing_subjectAltName] with openssl when using self signed certificates](https://alexanderzeitler.com/articles/Fixing-Chrome-missing_subjectAltName-selfsigned-cert-openssl/)
   - 17/05 - [Fixing Chrome 58+ [missing_subjectAltName] with openssl when using self signed certificates](https://alexanderzeitler.com/articles/Fixing-Chrome-missing_subjectAltName-selfsigned-cert-openssl/)
-  - 17/05 - [Chrome: Invalid self signed SSL cert - “Subject Alternative Name Missing”](http://stackoverflow.com/questions/43665243/chrome-invalid-self-signed-ssl-cert-subject-alternative-name-missing)
-  - 17/05 - [Getting Started - Yarn package manager](https://yarnpkg.com/en/docs/getting-started)
-  - 17/05 - [How Flexbox works — explained with big, colorful, animated gifs](https://medium.freecodecamp.com/an-animated-guide-to-flexbox-d280cf6afc35)
-  - 17/05 - [React Native Animation Book](https://github.com/browniefed/react-native-animation-book)
-  - 17/05 - [Integrating Nuxt into your Feathers application](https://blog.feathersjs.com/ssr-vuejs-app-with-feathers-and-nuxt-bb7dfd3e6397)
-  - 17/05 - [Gitbook Search any character](https://github.com/lwdgit/gitbook-plugin-search-plus)
-  - 17/05 - [NeDB - Javascript Database](https://github.com/louischatriot/nedb)
-  - 17/05 - [rollup.js](https://rollupjs.org/)
-  - 17/05 - [Webpack and Rollup: the same but different](https://medium.com/webpack/webpack-and-rollup-the-same-but-different-a41ad427058c)
-  - 17/05 - [Nuxt.js](https://nuxtjs.org/)
-  - 17/05 - [Psychological JuJitsu - Card game](http://www.icynic.com/~don/psych.html)
-  - 17/04 - [JavaScript Start-up Performance - Addy Osmani](https://medium.com/reloading/javascript-start-up-performance-69200f43b201)
-  - 17/04 - [Upgrading Ele.me to Progressive Web App](https://medium.com/elemefe/upgrading-ele-me-to-progressive-web-app-2a446832e509)
-  - 17/04 - [Introducing Create React Native App](https://github.com/react-community/create-react-native-app)
   - 17/04 - [help](help)
   - 17/04 - [help](help)
   - 17/04 - [map](map)
   - 17/04 - [map](map)
   - 17/04 - [about](about)
   - 17/04 - [about](about)