{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"blog_post","url":"https://ejfox.com/blog/week-notes/2025-14","json_url":"https://ejfox.com/blog/week-notes/2025-14.json","generator":"ejfox.com/json-twin@1","data":{"cacheVersion":"2026-05-13-gear-cards","html":"<figure role=\"figure\" aria-label=\"Typing performance metrics showing 140.99 WPM, 98.88% accuracy, and 77.73% consistency for a completed test.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743443082/Screenshot_2025-03-31_at_1.44.30_PM.png\" alt=\"Typing performance metrics showing 140.99 WPM, 98.88% accuracy, and 77.73% consistency for a completed test.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743443082/Screenshot_2025-03-31_at_1.44.30_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743443082/Screenshot_2025-03-31_at_1.44.30_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743443082/Screenshot_2025-03-31_at_1.44.30_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743443082/Screenshot_2025-03-31_at_1.44.30_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Typing performance metrics showing 140.99 WPM, 98.88% accuracy, and 77.73% consistency for a completed test.\" width=\"910\" height=\"218\" style=\"--splay-rot:0.6deg;\" data-dimensions=\"910×218\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Typing performance metrics showing 140.99 WPM, 98.88% accuracy, and 77.73% consistency for a completed test.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Vue.js component code implementing staggered animations for three DOM sections using anime.js library with rotation and color transitions.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743455196/Screenshot_2025-03-31_at_5.06.20_PM.png\" alt=\"Vue.js component code implementing staggered animations for three DOM sections using anime.js library with rotation and color transitions.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743455196/Screenshot_2025-03-31_at_5.06.20_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743455196/Screenshot_2025-03-31_at_5.06.20_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743455196/Screenshot_2025-03-31_at_5.06.20_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743455196/Screenshot_2025-03-31_at_5.06.20_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Vue.js component code implementing staggered animations for three DOM sections using anime.js library with rotation and color transitions.\" width=\"3600\" height=\"2338\" style=\"--splay-rot:1.58deg;\" data-dimensions=\"3600×2338\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Vue.js component code implementing staggered animations for three DOM sections using anime.js library with rotation and color transitions.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Database archive of 134,562 private messages and 45,269 media files from American paramilitary groups and militias spanning multiple years.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743811505/Screenshot_2025-04-04_at_8.04.15_PM.png\" alt=\"Database archive of 134,562 private messages and 45,269 media files from American paramilitary groups and militias spanning multiple years.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743811505/Screenshot_2025-04-04_at_8.04.15_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743811505/Screenshot_2025-04-04_at_8.04.15_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743811505/Screenshot_2025-04-04_at_8.04.15_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743811505/Screenshot_2025-04-04_at_8.04.15_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Database archive of 134,562 private messages and 45,269 media files from American paramilitary groups and militias spanning multiple years.\" width=\"1932\" height=\"2398\" style=\"--splay-rot:0.6deg;\" data-dimensions=\"1932×2398\" class=\"img-full my-8 rounded-sm img-splay aspect-[3/4] w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Database archive of 134,562 private messages and 45,269 media files from American paramilitary groups and militias spanning multiple years.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Typography asking &#x22;Why Coach Artie?&#x22; against a dark silhouetted cityscape background.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743818345/Screenshot_2025-04-04_at_9.58.50_PM.png\" alt=\"Typography asking &#x22;Why Coach Artie?&#x22; against a dark silhouetted cityscape background.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743818345/Screenshot_2025-04-04_at_9.58.50_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743818345/Screenshot_2025-04-04_at_9.58.50_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743818345/Screenshot_2025-04-04_at_9.58.50_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743818345/Screenshot_2025-04-04_at_9.58.50_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Typography asking &#x22;Why Coach Artie?&#x22; against a dark silhouetted cityscape background.\" width=\"1752\" height=\"2014\" style=\"--splay-rot:-0.6deg;\" data-dimensions=\"1752×2014\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Typography asking \"Why Coach Artie?\" against a dark silhouetted cityscape background.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Website landing page asking &#x27;Why Coach Artie?&#x27; with silhouetted cityscape backdrop\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743818370/Screenshot_2025-04-04_at_9.59.08_PM.png\" alt=\"Website landing page asking &#x27;Why Coach Artie?&#x27; with silhouetted cityscape backdrop\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743818370/Screenshot_2025-04-04_at_9.59.08_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743818370/Screenshot_2025-04-04_at_9.59.08_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743818370/Screenshot_2025-04-04_at_9.59.08_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743818370/Screenshot_2025-04-04_at_9.59.08_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Website landing page asking &#x27;Why Coach Artie?&#x27; with silhouetted cityscape backdrop\" width=\"3824\" height=\"2486\" style=\"--splay-rot:-1.01deg;\" data-dimensions=\"3824×2486\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Website landing page asking 'Why Coach Artie?' with silhouetted cityscape backdrop</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Palindrome number validator function failing test case: input 121 returns false instead of expected true.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743830741/Screenshot_2025-04-05_at_1.25.26_AM.png\" alt=\"Palindrome number validator function failing test case: input 121 returns false instead of expected true.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743830741/Screenshot_2025-04-05_at_1.25.26_AM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743830741/Screenshot_2025-04-05_at_1.25.26_AM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743830741/Screenshot_2025-04-05_at_1.25.26_AM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743830741/Screenshot_2025-04-05_at_1.25.26_AM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Palindrome number validator function failing test case: input 121 returns false instead of expected true.\" width=\"1932\" height=\"2398\" style=\"--splay-rot:1.35deg;\" data-dimensions=\"1932×2398\" class=\"img-full my-8 rounded-sm img-splay aspect-[3/4] w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Palindrome number validator function failing test case: input 121 returns false instead of expected true.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"JavaScript palindrome validator using two-pointer algorithm that passed 11,511 test cases with optimal runtime and memory performance.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743868421/Screenshot_2025-04-05_at_11.53.26_AM.png\" alt=\"JavaScript palindrome validator using two-pointer algorithm that passed 11,511 test cases with optimal runtime and memory performance.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743868421/Screenshot_2025-04-05_at_11.53.26_AM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743868421/Screenshot_2025-04-05_at_11.53.26_AM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743868421/Screenshot_2025-04-05_at_11.53.26_AM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743868421/Screenshot_2025-04-05_at_11.53.26_AM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"JavaScript palindrome validator using two-pointer algorithm that passed 11,511 test cases with optimal runtime and memory performance.\" width=\"2020\" height=\"2486\" style=\"--splay-rot:1.14deg;\" data-dimensions=\"2020×2486\" class=\"img-full my-8 rounded-sm img-splay aspect-[3/4] w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">JavaScript palindrome validator using two-pointer algorithm that passed 11,511 test cases with optimal runtime and memory performance.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"23andMe data retrieval notifications listing downloads and requests for genetic data, ancestry records, and user activity logs.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743868694/Screenshot_2025-04-05_at_11.58.01_AM.png\" alt=\"23andMe data retrieval notifications listing downloads and requests for genetic data, ancestry records, and user activity logs.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743868694/Screenshot_2025-04-05_at_11.58.01_AM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743868694/Screenshot_2025-04-05_at_11.58.01_AM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743868694/Screenshot_2025-04-05_at_11.58.01_AM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743868694/Screenshot_2025-04-05_at_11.58.01_AM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"23andMe data retrieval notifications listing downloads and requests for genetic data, ancestry records, and user activity logs.\" width=\"1370\" height=\"772\" style=\"--splay-rot:2.61deg;\" data-dimensions=\"1370×772\" class=\"img-full my-8 rounded-sm img-splay aspect-video w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">23andMe data retrieval notifications listing downloads and requests for genetic data, ancestry records, and user activity logs.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Streamgraph showing Twitter sentiment across three 2016 presidential debates in October, with red indicating negative, green positive, and blue neutral mentions of Trump.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743883580/Screenshot_2025-04-05_at_4.06.07_PM.png\" alt=\"Streamgraph showing Twitter sentiment across three 2016 presidential debates in October, with red indicating negative, green positive, and blue neutral mentions of Trump.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743883580/Screenshot_2025-04-05_at_4.06.07_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743883580/Screenshot_2025-04-05_at_4.06.07_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743883580/Screenshot_2025-04-05_at_4.06.07_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743883580/Screenshot_2025-04-05_at_4.06.07_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Streamgraph showing Twitter sentiment across three 2016 presidential debates in October, with red indicating negative, green positive, and blue neutral mentions of Trump.\" width=\"1576\" height=\"768\" style=\"--splay-rot:-2.54deg;\" data-dimensions=\"1576×768\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Streamgraph showing Twitter sentiment across three 2016 presidential debates in October, with red indicating negative, green positive, and blue neutral mentions of Trump.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Timeline visualization showing First debate and #Blacklivesmatter occurring in September, displayed as layered colored bands.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743883592/Screenshot_2025-04-05_at_4.06.20_PM.png\" alt=\"Timeline visualization showing First debate and #Blacklivesmatter occurring in September, displayed as layered colored bands.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743883592/Screenshot_2025-04-05_at_4.06.20_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743883592/Screenshot_2025-04-05_at_4.06.20_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743883592/Screenshot_2025-04-05_at_4.06.20_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743883592/Screenshot_2025-04-05_at_4.06.20_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Timeline visualization showing First debate and #Blacklivesmatter occurring in September, displayed as layered colored bands.\" width=\"1370\" height=\"420\" style=\"--splay-rot:0.72deg;\" data-dimensions=\"1370×420\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Timeline visualization showing First debate and #Blacklivesmatter occurring in September, displayed as layered colored bands.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Cyberpunk Alias Wizard command-line tool displaying newly created &#x27;test&#x27; alias that runs &#x27;echo test&#x27;, followed by a list of 26 existing shell aliases including git, npm, and utility shortcuts.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743884042/Screenshot_2025-04-05_at_4.13.46_PM.png\" alt=\"Cyberpunk Alias Wizard command-line tool displaying newly created &#x27;test&#x27; alias that runs &#x27;echo test&#x27;, followed by a list of 26 existing shell aliases including git, npm, and utility shortcuts.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743884042/Screenshot_2025-04-05_at_4.13.46_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743884042/Screenshot_2025-04-05_at_4.13.46_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743884042/Screenshot_2025-04-05_at_4.13.46_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743884042/Screenshot_2025-04-05_at_4.13.46_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Cyberpunk Alias Wizard command-line tool displaying newly created &#x27;test&#x27; alias that runs &#x27;echo test&#x27;, followed by a list of 26 existing shell aliases including git, npm, and utility shortcuts.\" width=\"3824\" height=\"2486\" style=\"--splay-rot:-0.77deg;\" data-dimensions=\"3824×2486\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Cyberpunk Alias Wizard command-line tool displaying newly created 'test' alias that runs 'echo test', followed by a list of 26 existing shell aliases including git, npm, and utility shortcuts.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Shell alias management menu showing 26 existing aliases including node, yarn, git, SSH, and utility commands with prompt to modify an alias number.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743884050/Screenshot_2025-04-05_at_4.13.53_PM.png\" alt=\"Shell alias management menu showing 26 existing aliases including node, yarn, git, SSH, and utility commands with prompt to modify an alias number.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743884050/Screenshot_2025-04-05_at_4.13.53_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743884050/Screenshot_2025-04-05_at_4.13.53_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743884050/Screenshot_2025-04-05_at_4.13.53_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743884050/Screenshot_2025-04-05_at_4.13.53_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Shell alias management menu showing 26 existing aliases including node, yarn, git, SSH, and utility commands with prompt to modify an alias number.\" width=\"3824\" height=\"2486\" style=\"--splay-rot:-2.58deg;\" data-dimensions=\"3824×2486\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Shell alias management menu showing 26 existing aliases including node, yarn, git, SSH, and utility commands with prompt to modify an alias number.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Desktop application displaying cyberpunk-themed 3D ASCII art composed of dollar signs, semicolons, and special characters across overlapping panels.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743884268/Screenshot_2025-04-05_at_4.17.34_PM.png\" alt=\"Desktop application displaying cyberpunk-themed 3D ASCII art composed of dollar signs, semicolons, and special characters across overlapping panels.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743884268/Screenshot_2025-04-05_at_4.17.34_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743884268/Screenshot_2025-04-05_at_4.17.34_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743884268/Screenshot_2025-04-05_at_4.17.34_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743884268/Screenshot_2025-04-05_at_4.17.34_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Desktop application displaying cyberpunk-themed 3D ASCII art composed of dollar signs, semicolons, and special characters across overlapping panels.\" width=\"3824\" height=\"2486\" style=\"--splay-rot:-1.32deg;\" data-dimensions=\"3824×2486\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Desktop application displaying cyberpunk-themed 3D ASCII art composed of dollar signs, semicolons, and special characters across overlapping panels.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Draft Assistant listing markdown documents with word counts, including files about anime, codebases, podcast editing, cursor rules, and morning routines.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743884865/Screenshot_2025-04-05_at_4.27.31_PM.png\" alt=\"Draft Assistant listing markdown documents with word counts, including files about anime, codebases, podcast editing, cursor rules, and morning routines.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743884865/Screenshot_2025-04-05_at_4.27.31_PM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743884865/Screenshot_2025-04-05_at_4.27.31_PM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743884865/Screenshot_2025-04-05_at_4.27.31_PM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743884865/Screenshot_2025-04-05_at_4.27.31_PM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Draft Assistant listing markdown documents with word counts, including files about anime, codebases, podcast editing, cursor rules, and morning routines.\" width=\"2784\" height=\"1664\" style=\"--splay-rot:-0.6deg;\" data-dimensions=\"2784×1664\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Draft Assistant listing markdown documents with word counts, including files about anime, codebases, podcast editing, cursor rules, and morning routines.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Developer authorizing OpenRouter API access through browser dialog while Aider CLI tool installs in terminal background.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743938732/Screenshot_2025-04-06_at_7.25.16_AM.png\" alt=\"Developer authorizing OpenRouter API access through browser dialog while Aider CLI tool installs in terminal background.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743938732/Screenshot_2025-04-06_at_7.25.16_AM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743938732/Screenshot_2025-04-06_at_7.25.16_AM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743938732/Screenshot_2025-04-06_at_7.25.16_AM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743938732/Screenshot_2025-04-06_at_7.25.16_AM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Developer authorizing OpenRouter API access through browser dialog while Aider CLI tool installs in terminal background.\" width=\"3600\" height=\"2338\" style=\"--splay-rot:1.15deg;\" data-dimensions=\"3600×2338\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Developer authorizing OpenRouter API access through browser dialog while Aider CLI tool installs in terminal background.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Data processing script fetching 10 years of RescueTime activity data with Python code transforming it into JSON format for D3 visualization dashboard.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743938894/Screenshot_2025-04-06_at_7.27.58_AM.png\" alt=\"Data processing script fetching 10 years of RescueTime activity data with Python code transforming it into JSON format for D3 visualization dashboard.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743938894/Screenshot_2025-04-06_at_7.27.58_AM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743938894/Screenshot_2025-04-06_at_7.27.58_AM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743938894/Screenshot_2025-04-06_at_7.27.58_AM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743938894/Screenshot_2025-04-06_at_7.27.58_AM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Data processing script fetching 10 years of RescueTime activity data with Python code transforming it into JSON format for D3 visualization dashboard.\" width=\"3600\" height=\"2338\" style=\"--splay-rot:-1.21deg;\" data-dimensions=\"3600×2338\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Data processing script fetching 10 years of RescueTime activity data with Python code transforming it into JSON format for D3 visualization dashboard.</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Journal entry dated February 8 describing a solitary drive on Route 9 where the author waved at another passing driver, both relieved the road still existed beyond their windshields.\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743948937/Screenshot_2025-04-06_at_10.15.25_AM.png\" alt=\"Journal entry dated February 8 describing a solitary drive on Route 9 where the author waved at another passing driver, both relieved the road still existed beyond their windshields.\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/v1743948937/Screenshot_2025-04-06_at_10.15.25_AM.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/v1743948937/Screenshot_2025-04-06_at_10.15.25_AM.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/v1743948937/Screenshot_2025-04-06_at_10.15.25_AM.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/v1743948937/Screenshot_2025-04-06_at_10.15.25_AM.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Journal entry dated February 8 describing a solitary drive on Route 9 where the author waved at another passing driver, both relieved the road still existed beyond their windshields.\" width=\"1650\" height=\"1522\" style=\"--splay-rot:-0.6deg;\" data-dimensions=\"1650×1522\" class=\"img-full my-8 rounded-sm img-splay aspect-square w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Journal entry dated February 8 describing a solitary drive on Route 9 where the author waved at another passing driver, both relieved the road still existed beyond their windshields.</figcaption>\n</figure>\n<p class=\"\"><img src=\"https://res.cloudinary.com/ejf/video/upload/c_scale,f_auto,q_auto:good,w_1280/v1743952303/Screen_Recording_2025-04-06_at_11.10.51_AM.mov\" alt=\"Screenshot - 2025-04-06 11:11 - Screen Recording 2025-04-06 at 11.10.51 AM.mov\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/video/upload/c_scale,f_auto,q_auto:good,w_640/v1743952303/Screen_Recording_2025-04-06_at_11.10.51_AM.mov 640w, https://res.cloudinary.com/ejf/video/upload/c_scale,f_auto,q_auto:good,w_960/v1743952303/Screen_Recording_2025-04-06_at_11.10.51_AM.mov 960w, https://res.cloudinary.com/ejf/video/upload/c_scale,f_auto,q_auto:good,w_1280/v1743952303/Screen_Recording_2025-04-06_at_11.10.51_AM.mov 1280w, https://res.cloudinary.com/ejf/video/upload/c_scale,f_auto,q_auto:good,w_1920/v1743952303/Screen_Recording_2025-04-06_at_11.10.51_AM.mov 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" style=\"--splay-rot:-0.67deg;\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\"></p>","title":"2025 14","metadata":{"date":"2025-03-31T17:44:43.000Z","modified":"2025-04-06T18:21:40.000Z","tags":["development","personal"],"words":331,"images":18,"imageDetails":{"total":18,"cloudinary":18,"withDimensions":0},"links":18,"codeBlocks":0,"headers":{},"toc":[],"type":"post"}},"_links":{"self":"https://ejfox.com/blog/week-notes/2025-14.json","html":"https://ejfox.com/blog/week-notes/2025-14","index":"/blog.json"}}