4 Commits 1442f91a9a ... 8917e2eb70

Author SHA1 Message Date
  windhamdavid 8917e2eb70 power manager 2 weeks ago
  windhamdavid f69c63648e woozie davo-bot 2 weeks ago
  windhamdavid f8f8197081 rm bm from index 2 weeks ago
  windhamdavid dad6d8d097 davo-bot 2 weeks ago

+ 9 - 0
README.md

@@ -18,6 +18,15 @@ Here's a map 👇🏼
 
 
 [![md-graph map](https://davidawindham.com/til/img/til.jpg)](https://davidawindham.com/til/img/til.jpg)
 [![md-graph map](https://davidawindham.com/til/img/til.jpg)](https://davidawindham.com/til/img/til.jpg)
 
 
+## Todo
+
+Things I'd like to automate so this place stays current instead of rotting — most of them are the same shape: pull from some external source and render it to a markdown file.
+
+- [ ] **Sync Apple Reminders → [lists/todo.md](lists/todo.md)** — I keep real todos in Apple Reminders but rarely mirror them here. Find an easy export/sync (a Shortcut, or a small script via `reminders-cli` / AppleScript → markdown) so the [Todo list](https://davidawindham.com/til/lists/todo) isn't hand-maintained.
+- [ ] **Sync Last.fm → [lists/now/listening.md](lists/now/listening.md)** — pull recent scrobbles from the Last.fm API and render to markdown so [Now / Listening](https://davidawindham.com/til/lists/now/listening) updates itself.
+- [ ] **Generalize the "external source → markdown" sync** — both of the above are identical in shape, so build one small repeatable pattern (a `scripts/sync-*.mjs` per source, run on a schedule or in the prebuild step) so the next one is trivial: Letterboxd → Watching, StoryGraph/Goodreads → Reading, Strava → … etc.
+- [ ] **Import my other sites as markdown for the davo-bot corpus** — convert my other sites (davidawindham.com, davidwindham.com, srh, …) to markdown and feed them into the [ralph](https://code.davidawindham.com/david/ralph) RAG / vector pipeline, so the AI [davo-bot](https://davidawindham.com/til/ai) answers from my whole web presence, not just this TIL site — more complete retrieval and citations.
+
 ## Log
 ## Log
 
 
 - 26/06/06 - reworking the [AI page](https://davidawindham.com/til/ai): dropping Markprompt/OpenAI for a self-hosted assistant — Claude (Haiku) + local vector search over my own notes/docs/lists/posts, answers that link back to the source pages, as a little pop-up "Clippy" widget I can drop on any of my sites. Only answers from my stuff. Backend rides on my [ralph](https://code.davidawindham.com/david/ralph) RAG/MCP server (SQLite + sqlite-vec + local Ollama embeddings).
 - 26/06/06 - reworking the [AI page](https://davidawindham.com/til/ai): dropping Markprompt/OpenAI for a self-hosted assistant — Claude (Haiku) + local vector search over my own notes/docs/lists/posts, answers that link back to the source pages, as a little pop-up "Clippy" widget I can drop on any of my sites. Only answers from my stuff. Backend rides on my [ralph](https://code.davidawindham.com/david/ralph) RAG/MCP server (SQLite + sqlite-vec + local Ollama embeddings).

+ 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>

+ 4 - 0
docs/computers/woozie.md

@@ -1065,6 +1065,10 @@ sudo apt-get install -y nodejs
 david@woozie:~ » node --version
 david@woozie:~ » node --version
 v18.16.0
 v18.16.0
 
 
+#updated for dependency 26/6/9
+david@woozie:/etc/apt/sources.list.d » node --version
+v24.16.0
+
 ```
 ```
 
 
 ### PHP
 ### PHP

+ 1 - 0
docusaurus.config.js

@@ -18,6 +18,7 @@ export default {
     },
     },
   },
   },
   themes: ['@docusaurus/theme-mermaid'],
   themes: ['@docusaurus/theme-mermaid'],
+  clientModules: ['./src/clientModules/ask-widget.js'],
   plugins: [
   plugins: [
     'plugin-image-zoom',
     'plugin-image-zoom',
     require.resolve('docusaurus-plugin-matomo'),
     require.resolve('docusaurus-plugin-matomo'),

+ 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",

+ 47 - 0
posts/2026/2026-06-13-posts.md

@@ -0,0 +1,47 @@
+---
+title: Power Manager
+slug: power-manager
+description: Today I learned that Duke Energy can just cut the power off of my AC condensors with Power Manager.
+<!--- authors:
+  - name: David Windham
+    title: Something Else
+    url: https://davidawindham.com
+    image_url: https://davidawindham.com/til/img/power-manager.jpg -->
+tags: [energy, house, solar]
+image: https://davidawindham.com/til/img/power-manager.jpg
+hide_table_of_contents: true
+---
+
+Today I learned that Duke Energy can just cut the power off of my AC condensors  with Power Manager. And up until yesterday, I had no idea what Power Manager[^1] even was or that we had it. Just when it was getting nice and warm yesterday afternoon we noticed it was a tad toasty upstairs. 
+
+<!-- truncate -->
+
+I always suspect our old unit because it's 28 years old according to the last HVAC tech guy here for service. Everytime a new service dude shows up, they're always like 'that old unit is still running' as if it shouldn't be. Perhaps made back in the day when you couldn't stop a Trane[^2]. 
+
+![](/img/power-manager.jpg)
+<div style={{display: 'flex',  justifyContent:'center', alignItems:'center', fontSize:'small', marginBottom:'20px'}}>👈🏻 Old trusty & the sneaky power manager box 👉🏻</div>
+
+Thinking I might be spending the evening under fans, I did the spot check and noticed that not only was the upstairs unit not running, the other compressor wasn't running either. Checked the breakers went back outside and remembered that about a year ago during our renovations, these little boxes showed up outside and I remember thinking to myself, I suppose they're gonna want me to enroll in some new fangled thing but didn't pay any attention otherwise. 
+
+It actually didn't occur to use that Duke Energy would cut our A/C mid afternoon on the hottest day of the year until after I had called our normal HVAC guys and a backup crew. Both being off was the giveaway alongside of the red lights coming from both boxes. When I called the scheduling gal back at the HVAC places, she said 'yeah, I was going to call you back and have you check because that's been several other customers in the last hour'. 
+
+Meanwhile Ginny has already dialed the Duke Energy number on the box and started the what would become an hour and a half on the phone trying to cancel the 'Power Manager' program we had never knowingly signed up for. Found out we had saved exactly $8 whole dollars so far from the progam, which we likely ate back up trying to cool our house back down ten degrees from the 85 it had reached in the time both units were disabled. She got us unenrolled - click of setting somewhere but I asked her to follow up and have the boxes removed. 
+
+I'm all for being conservative with energy. We set our thermostats on 75. And I'm all for pitching in to have a reliable provider for everyone. I'm quite certain it's not us straining the grid and it makes me wonder what other customers thought. I glad to not have third world power outages, but I'm also not too keen on some dude coming on the property to install devices that control what I do with the electricity once it hits my house. We know our local Duke Energy rep and we thought about giving him an earful, but I'm quite certain he's heard it before. The second HVAC guy just laughed when I called back to cancel that service. He said 'pretty sneaky aren't they' and that's mostly my takeaway. 
+
+I think about the growth in our area, the failed nuclear plant down the road, and the power hungred needs of AI. It also makes me think about energy indepedence and relative it's grip on the world. The term Energy Crisis hasn't really popped up enough recently even though I suppose you could say the Hourmoz are really just that. My dad mentioned late 70s gas lines[^3] not too long ago in conversation and It reminds me a speech by Jimmy Carter[^4] mostly from how it was reference in the film _20th Century Women_[^5].
+
+<video src="https://davidawindham.com/media/20th-Century-Women.mp4" width="100%" controls="controls">
+</video>
+<div style={{display: 'flex',  justifyContent:'center', alignItems:'center', fontSize:'small', marginBottom:'20px'}}><i>20th Century Woman</i> - Mike Mills</div>
+
+
+<div><br/><br/></div>
+---
+
+[^1]: Duke Energy Power Manager - 
+[^2]: Trane XE 1200 - https://elibrary.tranetechnologies.com/public/trane-history-b/Literature/Sales/72-1143-01_04011999.pdf
+[^3]: 1970s energy crisis - https://en.wikipedia.org/wiki/1970s_energy_crisis
+[^4]: Jimmy Carter - Crisis of Confidence - https://www.pbs.org/wgbh/americanexperience/features/carter-crisis/
+[^5]: _20th Century Women_ - https://en.wikipedia.org/wiki/20th_Century_Women
+

+ 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(' | ')} …`);

+ 43 - 0
src/clientModules/ask-widget.js

@@ -0,0 +1,43 @@
+/**
+ * Loads "davo-bot 2000" (the floating launcher) site-wide.
+ *
+ * Production: the widget bundle (/ask/widget.js) and its API (/ask/api/ask) are
+ * served by the ralph RAG/MCP server behind an Apache proxy at
+ * davidawindham.com/ask/. Local dev: they're served directly by the ralph HTTP
+ * server on http://localhost:3001 (routes /ask/widget.js and /api/ask), so the
+ * dev site loads them cross-origin from there.
+ *
+ * The widget auto-initializes from this script tag's data-* attributes (it reads
+ * document.currentScript.dataset). We FIRST check that the widget URL really is
+ * JavaScript before injecting it: where the backend isn't reachable, the request
+ * returns the SPA's HTML fallback, and injecting that throws "Unexpected token
+ * '<'". The content-type probe makes this a silent no-op until the widget is
+ * actually being served. window.__dawaskLoaded (set by the widget) keeps it to a
+ * single instance across Docusaurus SPA navigation.
+ *
+ * NOTE: for it to *answer* in dev, the ralph server must include
+ * http://localhost:3000 in ALLOWED_ORIGINS (the /api/ask CORS allowlist). The
+ * button itself appears regardless (/ask/widget.js has open CORS).
+ */
+if (typeof document !== 'undefined' && typeof fetch !== 'undefined') {
+  const local = /^(localhost|127\.0\.0\.1|0\.0\.0\.0)$/.test(window.location.hostname);
+  const WIDGET_URL = local ? 'http://localhost:3001/ask/widget.js' : '/ask/widget.js';
+  const API_URL = local ? 'http://localhost:3001/api/ask' : '/ask/api/ask';
+
+  const inject = () => {
+    if (document.getElementById('dawask-script')) return; // already injected
+    const s = document.createElement('script');
+    s.id = 'dawask-script';
+    s.src = WIDGET_URL;
+    s.setAttribute('data-api-url', API_URL);
+    s.setAttribute('data-mode', 'launcher');
+    document.body.appendChild(s);
+  };
+
+  fetch(WIDGET_URL, {method: 'GET', cache: 'no-store'})
+    .then((r) => {
+      const ct = (r.headers.get('content-type') || '').toLowerCase();
+      if (r.ok && ct.includes('javascript')) inject();
+    })
+    .catch(() => {}); // backend not reachable → no widget, no error
+}

+ 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;
 }
 }

File diff suppressed because it is too large
+ 0 - 0
src/data/graph.json


+ 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)

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

@@ -3,9 +3,14 @@ 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/06/13 - [Power Manager](/posts/power-manager)
   - 26/05/20 - [Wildflowers](/posts/wildflowers)
   - 26/05/20 - [Wildflowers](/posts/wildflowers)
   - 26/04/11 - [Weeds](/posts/weeds)
   - 26/04/11 - [Weeds](/posts/weeds)
   - 26/03/27 - [Death & Taxes](/posts/death-taxes)
   - 26/03/27 - [Death & Taxes](/posts/death-taxes)
@@ -127,109 +132,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)

Some files were not shown because too many files changed in this diff