Compare commits
26 Commits
59e6533e80
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| c7eceb0055 | |||
| 27886b6cae | |||
| 62c4bf9be4 | |||
| 041489aac2 | |||
|
c34d0591fe
|
|||
|
a0a881a392
|
|||
|
b8217dd611
|
|||
|
357e5630a1
|
|||
|
37105e03fb
|
|||
|
dd3aad498f
|
|||
| fc5c467a43 | |||
| 223240947b | |||
| 2cfebc971e | |||
| 0cdbaf4f6c | |||
|
afca7f462c
|
|||
|
74e2a03567
|
|||
|
ef2b8bea43
|
|||
|
1a67d0d2a9
|
|||
|
5102a243f4
|
|||
|
0ccb52c5cc
|
|||
|
7ad60baa8e
|
|||
|
899995a756
|
|||
|
e783675185
|
|||
|
91c2e96073
|
|||
|
99cf3c6368
|
|||
|
6c5892d6d4
|
@@ -45,7 +45,7 @@
|
||||
content="2022-03-17">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2022-03-18T01:31:56.000Z">
|
||||
<time datetime="2022-03-17T21:31:56.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -561,23 +553,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2022-05-02">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2022-05-03T01:58:12.000Z">
|
||||
<time datetime="2022-05-02T21:58:12.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -573,23 +565,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2022-05-04">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2022-05-05T01:42:34.000Z">
|
||||
<time datetime="2022-05-04T21:42:34.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -567,23 +559,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2022-05-19">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2022-05-20T01:51:09.000Z">
|
||||
<time datetime="2022-05-19T21:51:09.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -570,23 +562,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2022-10-15">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2022-10-16T02:11:25.000Z">
|
||||
<time datetime="2022-10-15T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -573,23 +565,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2023-09-12">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2023-09-13T01:20:20.000Z">
|
||||
<time datetime="2023-09-12T21:20:20.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -574,23 +566,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2023-09-24">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2023-09-25T00:58:40.000Z">
|
||||
<time datetime="2023-09-24T20:58:40.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -575,23 +567,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2023-09-28">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2023-09-29T00:34:33.000Z">
|
||||
<time datetime="2023-09-28T20:34:33.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -573,23 +565,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2023-10-10">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2023-10-11T00:23:33.000Z">
|
||||
<time datetime="2023-10-10T20:23:33.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -574,23 +566,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2023-11-05">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2023-11-06T01:01:51.000Z">
|
||||
<time datetime="2023-11-05T20:01:51.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -567,23 +559,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2023-12-23">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-02">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2023-12-23T22:03:44.000Z">
|
||||
<time datetime="2023-12-23T17:03:44.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -590,23 +582,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2024-01-29">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2024-01-29T21:35:48.000Z">
|
||||
<time datetime="2024-01-29T16:35:48.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -576,23 +568,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2024-02-09">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2024-02-09T13:30:30.000Z">
|
||||
<time datetime="2024-02-09T08:30:30.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -567,23 +559,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2024-03-03">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-02">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2024-03-03T17:10:28.000Z">
|
||||
<time datetime="2024-03-03T12:10:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -601,23 +593,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2024-03-05">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2024-03-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2024-03-05T17:10:28.000Z">
|
||||
<time datetime="2024-03-05T12:10:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -614,23 +606,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2024-03-08">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2025-07-20">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2024-03-08T05:10:28.000Z">
|
||||
<time datetime="2024-03-08T00:10:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -630,23 +622,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2025-01-04">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2025-07-20">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2025-01-04T20:06:30.000Z">
|
||||
<time datetime="2025-01-04T15:06:30.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -604,23 +596,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
content="2026-01-04">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-10">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -248,14 +248,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -316,12 +308,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -372,10 +364,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -386,10 +392,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -414,20 +420,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -458,7 +450,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-05T03:11:25.000Z">
|
||||
<time datetime="2026-01-04T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -591,23 +583,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2026-01-06">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-10">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-07T03:11:25.000Z">
|
||||
<time datetime="2026-01-06T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -573,23 +565,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2026-01-08">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-10">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-09T03:11:25.000Z">
|
||||
<time datetime="2026-01-08T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -633,23 +625,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2026-01-10">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-10">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-11T03:11:25.000Z">
|
||||
<time datetime="2026-01-10T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -482,9 +474,9 @@
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>I’d like to present a C library I wrote for exception style error handling in C code, why I wrote it, and why I prefer this style of error handling when writing in the C language. </p>
|
||||
<p><a target="_blank" rel="noopener" href="https://github.com/akesterson/libakerror">libakerror: A safe exception handling library for C</a></p>
|
||||
<p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror">libakerror: A safe exception handling library for C</a></p>
|
||||
<p>To be clear, when I say “exception style error handling”, I am referring to the practice of one section of code creating an <code>exception</code> object, which is an object containing a rich error context, and then the language <code>raising</code> (or <code>throwing</code>) that exception up through the call stack, allowing all code paths in the call stack the opportunity to respond to that exception, and if the exception reaches all the way back up to the program’s top level without being handled, it will terminate the program.</p>
|
||||
<p>Before completing this article, I strongly recommend that you go and read <a target="_blank" rel="noopener" href="https://github.com/akesterson/libakerror/blob/main/README.md">the libakerror README</a>, at least the “Library Architecture” section. This article will not spend a lot of time explaining <strong>what</strong> libakerror does, or even <strong>how</strong> it does it, but rather <strong>why</strong> I prefer this style of error handling. So if you don’t go through the README, you may be a bit lost for the rest of the article.</p>
|
||||
<p>Before completing this article, I strongly recommend that you go and read <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror/blob/main/README.md">the libakerror README</a>, at least the “Library Architecture” section. This article will not spend a lot of time explaining <strong>what</strong> libakerror does, or even <strong>how</strong> it does it, but rather <strong>why</strong> I prefer this style of error handling. So if you don’t go through the README, you may be a bit lost for the rest of the article.</p>
|
||||
<center><img alt="Ill wait" src="/images/waiting-bear.webp"/></center>
|
||||
|
||||
<p>Note that the question of “why do you like writing software in C so much” won’t be answered here. That’s a separate blog post TBD. This post also assumes you are already familiar with the C programming language, although if you know any programming languages at all, you can probably get through it. If you don’t know C, I strongly recommend these two books:</p>
|
||||
@@ -779,7 +771,7 @@ ATTEMPT <span class="token punctuation">{</span>
|
||||
<p>Without good debug logs, a program is much more difficult to debug.</p>
|
||||
</blockquote>
|
||||
<p>I’ve spent the majority of my career working with software that runs in environments where the only hope for debugging it is to interrogate some log files after an error has already occurred. Getting the chance to attach a debugger and examine the state of the running program is a rare treat that we almost never get to experience in the DevSecOps world. So if a program does not emit useful logs, in my opinion, it is basically impossible to debug it in my world.</p>
|
||||
<p>And even when you have a debugger, a log is still a good way to quickly hone in on <em>where</em> something happened, even if you must take a much longer time to figure out <em>why</em> it happened. Let’s consider the code in <a target="_blank" rel="noopener" href="https://github.com/akesterson/libakerror/blob/main/tests/err_trace.c">one of the libakerror test programs</a>.</p>
|
||||
<p>And even when you have a debugger, a log is still a good way to quickly hone in on <em>where</em> something happened, even if you must take a much longer time to figure out <em>why</em> it happened. Let’s consider the code in <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror/blob/main/tests/err_trace.c">one of the libakerror test programs</a>.</p>
|
||||
<p>In this code, we have a call graph like <code>main() -> func1() -> func2()</code>. In <code>func2()</code> we experience some error that causes us to exit early. If we were to run this in naked C, it might look like this:</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string"><stdio.h></span></span>
|
||||
|
||||
@@ -1163,13 +1155,13 @@ _writeToFile_cleanup<span class="token operator">:</span>
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
href="/2026/01/19/This-Old-Tool-cmdarg/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">News-2026-Week-2 </div>
|
||||
<div class="nav-title">This Old Tool : cmdarg </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
@@ -1231,23 +1223,23 @@ _writeToFile_cleanup<span class="token operator">:</span>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>34</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -371,7 +363,7 @@
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -385,7 +377,7 @@
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -413,14 +405,14 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
<span class="categories-list-item-badge">15</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -608,23 +600,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-23</div>
|
||||
<a href="/2026/06/23/News-2026-Week-26/"><div class="recent-posts-item-content">News - 2026 - Week - 26</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-18</div>
|
||||
<a href="/2026/06/18/Devlog-20260618/"><div class="recent-posts-item-content">Devlog Entry - 18 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-08</div>
|
||||
<a href="/2026/06/08/Carrying-That-Weight/"><div class="recent-posts-item-content">Carrying That Weight</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-08</div>
|
||||
<a href="/2026/06/08/Devlog-20260608/"><div class="recent-posts-item-content">Devlog Entry - 8 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2026-01-19">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-19">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-19T19:37:26.000Z">
|
||||
<time datetime="2026-01-19T14:37:26.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -509,8 +501,8 @@
|
||||
<li>You might need to accept multiple values for a given argument and build a list. How do you do this? Do you accept a string with space separated items? Do you accept the same argument over and over? How do you store this in your script’s internal state?</li>
|
||||
</ul>
|
||||
<p>I feel the same way about bash that I do about C: it’s basically the perfect language for its domain (in bash’s case, gluing tasks together on a unix system). But this particular task in bash has always managed to really piss me off, because frankly, we can do so much better than what we are doing right now. This is one of the big reasons why people will abandon bash for the kinds of glue tasks it’s so good at, and move to something like <code>golang</code>, because there’s not a great interface between the user and the script for configuring options at runtime. Parsing arguments can be downright unfriendly to the user, in fact, let alone to the developer. It doesn’t have to be this way! There’s no reason why Java and Python and Ruby and Golang and <em>literally every other language out there</em> can have high quality argument parsing libraries but Bash can’t have them.</p>
|
||||
<p>So I wrote <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg">cmdarg</a>: A pure bash argument parsing library. This library solves all of the above problems you will suffer through in all of the above scenarios. Any time I need to add arguments to a bash script, I reach for this library, and I am always pleased with the result.</p>
|
||||
<h2 id="Declarative-Syntax-for-Clear-Interfaces"><a href="#Declarative-Syntax-for-Clear-Interfaces" class="headerlink" title="Declarative Syntax for Clear Interfaces"></a>Declarative Syntax for Clear Interfaces</h2><p><a target="_blank" rel="noopener" href="https://github.com/akesteron/cmdarg">Cmdarg</a> wants to help you build a clear interface to your script without asking you to write any of the parsing code. You want to write your script - you don’t want to write argument parsing code. So cmdarg allows you to <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg?tab=readme-ov-file#cmdarg-1">declare the interface</a>, <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg?tab=readme-ov-file#cmdarg_parse">parse the arguments</a>, and <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg?tab=readme-ov-file#tldr">get on with using the values in your script</a>. Cmdarg assumes your script will take 0 or more command line arguments, and each one of these arguments will have:</p>
|
||||
<p>So I wrote <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg">cmdarg</a>: A pure bash argument parsing library. This library solves all of the above problems you will suffer through in all of the above scenarios. Any time I need to add arguments to a bash script, I reach for this library, and I am always pleased with the result.</p>
|
||||
<h2 id="Declarative-Syntax-for-Clear-Interfaces"><a href="#Declarative-Syntax-for-Clear-Interfaces" class="headerlink" title="Declarative Syntax for Clear Interfaces"></a>Declarative Syntax for Clear Interfaces</h2><p><a target="_blank" rel="noopener" href="https://github.com/akesteron/cmdarg">Cmdarg</a> wants to help you build a clear interface to your script without asking you to write any of the parsing code. You want to write your script - you don’t want to write argument parsing code. So cmdarg allows you to <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg#cmdarg-1">declare the interface</a>, <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg#cmdarg_parse">parse the arguments</a>, and <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg#tldr">get on with using the values in your script</a>. Cmdarg assumes your script will take 0 or more command line arguments, and each one of these arguments will have:</p>
|
||||
<ul>
|
||||
<li>A name</li>
|
||||
<li>A type, including whether or not the argument is required or optional</li>
|
||||
@@ -637,13 +629,13 @@ argv =>
|
||||
3 => -m
|
||||
4 => --some_thing<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<h2 id="There’s-more-Go-read-the-README"><a href="#There’s-more-Go-read-the-README" class="headerlink" title="There’s more. Go read the README"></a>There’s more. Go read the README</h2><p>I’m not going to repeat the entirety of the README here, so <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg/">go find out for yourself</a> about:</p>
|
||||
<h2 id="There’s-more-Go-read-the-README"><a href="#There’s-more-Go-read-the-README" class="headerlink" title="There’s more. Go read the README"></a>There’s more. Go read the README</h2><p>I’m not going to repeat the entirety of the README here, so <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg/">go find out for yourself</a> about:</p>
|
||||
<ul>
|
||||
<li>Using <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg?tab=readme-ov-file#validators">validator functions</a> to validate user input on the arguments (including key names on map options)</li>
|
||||
<li>Using <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg?tab=readme-ov-file#helpers">helper functions</a> to control how arguments are described and how usage (<code>--help</code>) messages are constructed/printed</li>
|
||||
<li>Using <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg?tab=readme-ov-file#controlling-cmdargs-behavior-on-error">custom error handlers</a> to control what happens when the parser encounters an error in user input</li>
|
||||
<li>Using <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg#validators">validator functions</a> to validate user input on the arguments (including key names on map options)</li>
|
||||
<li>Using <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg#helpers">helper functions</a> to control how arguments are described and how usage (<code>--help</code>) messages are constructed/printed</li>
|
||||
<li>Using <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg#controlling-cmdargs-behavior-on-error">custom error handlers</a> to control what happens when the parser encounters an error in user input</li>
|
||||
</ul>
|
||||
<h2 id="Why-I-still-use-this-almost-two-decades-later"><a href="#Why-I-still-use-this-almost-two-decades-later" class="headerlink" title="Why I still use this almost two decades later"></a>Why I still use this almost two decades later</h2><p>A lot can change in 15 years. <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg/">cmdarg</a> is not the only game in town anymore. So why am I still using something I wrote 15 years ago? Well obviously I know this one, because I wrote it, so that’s an easy win. But also because, in 15 years, I have yet to find another library that meets all these requirements:</p>
|
||||
<h2 id="Why-I-still-use-this-almost-two-decades-later"><a href="#Why-I-still-use-this-almost-two-decades-later" class="headerlink" title="Why I still use this almost two decades later"></a>Why I still use this almost two decades later</h2><p>A lot can change in 15 years. <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/cmdarg/">cmdarg</a> is not the only game in town anymore. So why am I still using something I wrote 15 years ago? Well obviously I know this one, because I wrote it, so that’s an easy win. But also because, in 15 years, I have yet to find another library that meets all these requirements:</p>
|
||||
<ul>
|
||||
<li>Written purely in bash. Some contemporaries <a target="_blank" rel="noopener" href="https://github.com/nhoffman/argparse-bash">actually call some other language like python behind your back</a>. Others <a target="_blank" rel="noopener" href="https://github.com/matejak/argbash/tree/master">rely on some complicated preprocessor</a> that compiles your script down into a new script.</li>
|
||||
<li>Generate help messages that sufficiently document usage for the user, including all flags, optional vs required, array inputs, copyright, etc. Some contemporaries do this, but the formatting is kinda gross. Others simply omit it and still expect you to do it.</li>
|
||||
@@ -711,12 +703,12 @@ Options:
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
href="/2026/01/10/libakerror/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">News-2026-Week-2 </div>
|
||||
<div class="nav-title">libakerror </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
@@ -764,23 +756,23 @@ Options:
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2026-01-23">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-23">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -244,14 +244,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -312,12 +304,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -368,10 +360,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -382,10 +388,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -410,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -454,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-23T12:00:51.000Z">
|
||||
<time datetime="2026-01-23T07:00:51.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -562,6 +554,20 @@ Computers simulate determinism; only Tao is perfect."<br/>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/01/25/Two-kinds-of-programmers/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">There are two kinds of programmers </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
@@ -618,23 +624,23 @@ Computers simulate determinism; only Tao is perfect."<br/>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
847
2026/01/25/Two-kinds-of-programmers/index.html
Normal file
@@ -0,0 +1,847 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>There are two kinds of programmers</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="There are two kinds of programmers">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/01/25/Two-kinds-of-programmers/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-01-25">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-First-Programmers-who-don%E2%80%99t-like-programming"><span class="toc-text">The First : Programmers who don’t like programming?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Second-Type-Programmers-as-Artists"><span class="toc-text">The Second Type: Programmers as Artists</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-two-types-have-never-gotten-along"><span class="toc-text">The two types have never gotten along</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Future"><span class="toc-text">The Future</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
There are two kinds of programmers
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-25T08:57:43.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-25</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>2.8k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>The “AI Revolution”, as many are calling it, is exposing something that I (and countless others) have been aware of for quite some time now. And that is that there are two kinds of programmers:</p>
|
||||
<ul>
|
||||
<li>Those who do not find joy in the act of programming a computer</li>
|
||||
<li>Those who do</li>
|
||||
</ul>
|
||||
<p>This rift has been known by both types of programmers for a while, but because the industry was so desperate for individuals who could write code, we had to live with and tolerate each other. The AI Revolution is bringing us to an odd place where one type of programmer may be poised to push the others completely to the margins.</p>
|
||||
<h2 id="The-First-Programmers-who-don’t-like-programming"><a href="#The-First-Programmers-who-don’t-like-programming" class="headerlink" title="The First : Programmers who don’t like programming?"></a>The First : Programmers who don’t like programming?</h2><center><i>
|
||||
<blockquote>
|
||||
"If it's not fun, why bother?" --Reggie Fils-Aime
|
||||
</blockquote>
|
||||
</i></center>
|
||||
<br/>
|
||||
|
||||
<p>Let us first address why I’m claiming that there are programmers who don’t enjoy programming.</p>
|
||||
<p>For the layman, this might seem crazy. They’ve probably never met a programmer who didn’t vocalize enjoyment of their job; or at least they probably espoused a love of their chosen skill set, even if they bemoaned the state of their profession. And these individuals are in such high demand, and are so well paid, and the skill is frankly so difficult, why in the world would one choose to become a programmer if they didn’t enjoy the act of programming?</p>
|
||||
<center><img alt="Mr Krabs: Hello, I like money" src="/images/krabs-money.png"/></center>
|
||||
|
||||
<p>Because for these people, the attraction to programming is simple: it pays them a lot of money, and they like having money. Or, at least, they like having the ability to easily manage their addiction to food, clothing and shelter. But regardless of whether they’re greedy or pragmatic, they chose this professional field because it seemed like the most tolerable way for them to secure their financial stability. They view the act of programming in the same way that a factory worker might look at the machinery they operate or the widget they assemble: with a complete lack of passion.</p>
|
||||
<p>Now, don’t get me wrong, I’m not hating on anyone for making pragmatic choices related to their finances, how they secure their future or the future of their family. I make these kinds of decisions all the time. That’s fine. These individuals probably grew up in the late 80s, early 90s, early 2000s, and got told that programming was a great way to make money. So they went to college, got a computer science (or some related) degree, and went into the industry.</p>
|
||||
<p>I also won’t make any claims about the talents of these people; they run the gamut. You will find people who are quite talented and can carry an entire project on their shoulders, and who have absolutely no talent and produce a net negative effect on the productivity of their teams. There are all kinds of people in all kinds of places and the “learn to code, get a good job” movement has exposed talent in places and people we might not have expected. And I’m honestly glad about that - I get a real kick out of finding capability in unexpected places and watching people succeed in places where others think they shouldn’t.</p>
|
||||
<center><i>
|
||||
<blockquote>
|
||||
“Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something." --Robert Heinlein
|
||||
</blockquote>
|
||||
</i></center>
|
||||
<br/>
|
||||
|
||||
<p>But the dark side of this has been that we have a bunch of people in the industry now who have no particular attachment to or real desire to engage in the activity of programming itself. They are only engaging in programming because that is the activity which the business requires them to engage in to pay their bills, and they have been trained to do so with reasonable levels of effectiveness. Now imagine that we have an industrial innovation which allows them to actually sidestep the entire process of programming, and have a machine perform that act for them?</p>
|
||||
<p>The individuals in this scenario have no particular love for the act of programming itself. In fact, they often view the act of programming itself as an obstacle to their goal: their goal is to ship the product, to get it done. Programming is a step which they must cross in order to reach the other side. Now these individuals have access to tools that promise to allow them to complete their assigned business tasks in less time, and without actually having to perform the act of programming. For them, this is great. They love it! They widely adopt it. They become part of the endless march of “progress” in the “business” of software production.</p>
|
||||
<h2 id="The-Second-Type-Programmers-as-Artists"><a href="#The-Second-Type-Programmers-as-Artists" class="headerlink" title="The Second Type: Programmers as Artists"></a>The Second Type: Programmers as Artists</h2><center><i>
|
||||
<blockquote>
|
||||
Thus spake the Master Programmer:
|
||||
|
||||
<p>“After three days without programming, life becomes meaningless.” </p>
|
||||
<p>–The Tao of Programming, Book 2, The Ancient Masters</p>
|
||||
</blockquote>
|
||||
</i></center>
|
||||
|
||||
<p>Let us now contrast that with the second type of programmer. These are programmers who program for one simple reason: because they find joy in the activity of discovering how to make the computer do things, using the languages and the rules that the computer imposes upon them. They enjoy meeting the computer on its own terms, understanding it, and making it do things, and continuing to refine those effects for no other purpose than the program itself.</p>
|
||||
<p>For this kind of programmer, they program whether they are getting paid for it or not. They were likely programming long before they ever heard that they could get paid for it. Their first interactions with a computer likely happened at a young and impressionable age (though not always), and they have probably been engaging in some form of the act of programming ever since. </p>
|
||||
<p>This second type looks a lot like the first type from the perspective of the casual observer. Both probably work in some kind of software engineering role in a professional capacity. Both probably engage in some amount of computer programming work outside of their professional job, in their spare time. But their motivations and mechanisms are very different. One does it because it’s an important part of remaining desirable in their field; one does it because they have a genuine hunger for and interest in the subject matter.</p>
|
||||
<p>It is difficult to define, and has historically been a bit of a battleground, as to whether or not these individuals are more scientist or artist. Google “is programming an art or a science?” and the first page of results will highlight that this is neither an old, nor a settled, debate. And that’s because the question of “is <em>programming</em> an art or a science?” attempts to answer the question for an entire field of practice - one which might be engaged in for various reasons, by various people, and various times, producing various outputs.</p>
|
||||
<p><a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Donald_Knuth">Donald Knuth</a>, the famed computer scientist and mathematician who wrote the seminal <a target="_blank" rel="noopener" href="https://www-cs-faculty.stanford.edu/~knuth/taocp.html">Art of Computer Programming</a> books, mused thusly in his article <a target="_blank" rel="noopener" href="https://www.paulgraham.com/knuth.html?viewfullsite=1">Computer Programming as an Art</a>:</p>
|
||||
<center><i>
|
||||
<blockquote>
|
||||
Our discussion indicates that computer programming is by now both a science and an art, and that the two aspects nicely complement each other. <br/><br/>
|
||||
[...] When I speak about computer programming as an art, I am thinking primarily of it as an art form, in an aesthetic sense. <br/><br/>
|
||||
[...] Some programs are elegant, some are exquisite, some are sparkling. My claim is that it is possible to write grand programs, noble programs, truly magnificent ones! <br/><br/>
|
||||
[...] To summarize: We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Therefore we can be glad that people who lecture at computer conferences speak about the state of the Art.
|
||||
</blockquote>
|
||||
</i></center>
|
||||
<br/>
|
||||
|
||||
<p>Knuth’s central thrust is that <em>a computer program itself can be a beautiful work of art</em>. And, thusly, a programmer thus engaged is most certainly engaged in the <em>art</em> of computer programming, and is therefore <em>an artist</em>. Obviously there is a science at work, but the science is being wielded by an artist, in the same way that there is a science to color and pigment and the texture of a canvas, but it is the hand of an artist wielding the brush that produces the work of art; simply working with paint and canvas does not mean you are an artist engaged in a form of art. The same might be said of a factory worker operating a machine that reproduces miniature resin copies of Michelangelo’s David.</p>
|
||||
<p>Now I want to make clear that, just because one is engaged in an art form, does not mean that your work is superior to another’s. Just because a person is engaged in carving statues from granite, and they do it by hand, and they do it because they love it, does not mean that their work will be better than (or even as good as) the resin statues coming out of the factory machine being operated by the person who definitely would not call themselves an artist. The same is true of programming. There are programmers who engage in the <em>art</em> of computer programming, because they enjoy it, who have very little talent, and who struggle to produce anything that anyone else would consider art.</p>
|
||||
<p>But this has absolutely no impact on whether or not that person is in fact <em>an artist</em> and is in fact engaged in <em>creating art</em> through the <em>art of computer programming</em>. This is one of the beauties of an artform vs a scientific discipline: beauty is in the eye of the beholder, and it doesn’t matter at all if nobody else but you sees the beauty in it. In fact, if they fail to see the beauty in your artistic creation, then that is their loss and their tragedy, not yours; the beauty in the art exists, they just can’t quite see it the way you do, and their life is a little bit more dark and drab because of it.</p>
|
||||
<h2 id="The-two-types-have-never-gotten-along"><a href="#The-two-types-have-never-gotten-along" class="headerlink" title="The two types have never gotten along"></a>The two types have never gotten along</h2><center><i>
|
||||
<blockquote>
|
||||
A programmer from a very large computer company went to a software conference and then returned to report to his manager, saying: "What sort of programmers work for other companies? They behaved badly and were unconcerned with appearances. Their hair was long and unkempt and their clothes were wrinkled and old. They crashed our hospitality suite and they made rude noises during my presentation."
|
||||
|
||||
<p>The manager said: “I should have never sent you to the conference. Those programmers live beyond the physical world. They consider life absurd, an accidental coincidence. They come and go without knowing limitations. Without a care, they live only for their programs. Why should they bother with social conventions?</p>
|
||||
<p>They are alive within the Tao.” </p>
|
||||
<p>–The Tao of Programming, 2.3</p>
|
||||
</blockquote>
|
||||
</i></center>
|
||||
<br/>
|
||||
|
||||
<p>This is the part that I don’t think anyone is really talking about, but we have to address the elephant in the room:</p>
|
||||
<ul>
|
||||
<li>Artistic programmers have always viewed non-artistic programmers with disdain, overtly or quietly</li>
|
||||
<li>Non-artistic programmers have always found artistic programmers to be weirdos who are difficult to work with</li>
|
||||
</ul>
|
||||
<p>For the record, I consider myself an artistic programmer. I make no claims that I am a great artist. I am just raising the flag for “my side” in this argument, before going any further.</p>
|
||||
<p>Go into any company, any technology group, and you will find a variety of subgroups. It may take a little bit of time to see it, but usually pretty quickly, you will divide the artistic programmers from the non-artistic ones. They work together because the business requires it, but they don’t really respect each other. Individuals from one clique might respect an individual from the other clique, as a class, they don’t get along. This has always created friction in business technology roles, to the point where some business have adopted unconscious (or conscious) hiring rules that favor one type or the other. When they talk about “culture fit” in their technology teams, this is usually a very large part of what they are talking about.</p>
|
||||
<p>For the longest time, the artistic programmers held the upper hand in this situation, because frankly the field of computer programming was not sufficiently well understood to be engaged in without the hand of the artist. It was our domain, the science still being so mysterious that it was almost magic, and we were the wizards and priests. The non-artistic types were there to help us get things done, because the business wanted products, not art, and we didn’t appreciate working that way, so they supplemented us with people who were fine doing it that way.</p>
|
||||
<p>That dynamic is changing. The “AI Revolution” is tipping the balance of power away from the artists, towards the non-artistic programmers. The large language models are now - and if not now, then assuming a constant rate of change, very soon - capable of writing code that is “good enough” to allow the business to utilize the non-artistic programmer to achieve a business goal. There are plenty of non-artistic and artistic types who are, united by their desire to have good working software that does no harm to our society and which can be maintained into the future, united in their disapproving caution of this trend. They warn that the field will be damaged in that there will no longer be a transition pathway from junior to senior, that the products being built will be unmaintainable when the current crop of seniors retires (and even the current crop insists the code will not be maintainable), and a variety of other warnings.</p>
|
||||
<p>But this is the reality we face in the modern computing industry: software is produced as a means to an end, that end being the production of profit through some product vehicle. The programmers only exist to create that product vehicle, or to deliver that product vehicle through other technological means, all of which are meant to extract profit from a customer. Everything else must take a back seat to that single goal, “the bottom line”. When profit is the bottom line, there is no room for artistry in production, unless <em>art itself is the product</em>. And ultimately, the modern computing industry is not interested in asking Michelangelo to carve David; they are interested in producing resin copies of David with minor variations.</p>
|
||||
<p>And, frankly, a lot of us find that <em>downright offensive</em> not only on business grounds, but on <em>moral</em> grounds: we see it as a cheapening and devaluing of art itself, which seems like an attack on some kind of human building block that is difficult to express, in the way that art is always difficult to express.</p>
|
||||
<h2 id="The-Future"><a href="#The-Future" class="headerlink" title="The Future"></a>The Future</h2><p>I can’t see the future. I don’t have a good answer to what is coming. All I wanted to do was point out the divide that lots of people are talking around, without actually talking about it. </p>
|
||||
<p>I worry a little about the non-artistic programmer. Their rapid adoption of this tool that allows them to bypass the act of programming a computer is going to shoot them in the foot in short order: they will automate themselves (quite literally) out of a profession, and they will need to find other work. This kind of thing has happened many times throughout human history - we no longer employ people to shovel the shit out of city streets, or employ fleets of stable operators, for example - but we mustn’t pretend that this revolution will not produce such a shift. Mainly, I worry that the current economic market has no viable alternative for many of these individuals, and they will simply become unemployed. Our current world economic situation is bad enough without suddenly making an even larger portion of the workforce redundant. Some great innovation is required to address the collapse this will induce, and I don’t think we’ve figured it out yet.</p>
|
||||
<p>Personally… I am not worried about the future of the Art of Computer Programming. Art survives with or without industry. The entire modern computing apparatus can collapse, the internet can dissolve, and the FAANG companies can burn to the ground. The Art of Computer Programming will persist. As long as there are hackers with access to any kind of circuitry, The Art of Computer Programming will survive, even if in obscurity, so long as technological humans exist. Because the Art of Computer Programming is the way that this particular class of artist chooses to express what is in their heart, which is where all art begins and, ultimately, ends. And if you don’t understand that, well…</p>
|
||||
<center><i>
|
||||
<blockquote>
|
||||
Thus spake the Master Programmer:<br/><br/>
|
||||
|
||||
<p>“Time for you to leave.”<br/><br>–The Tao of Programming, Book 9</p>
|
||||
</blockquote>
|
||||
</i></center>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/01/30/News-2026-Week-4/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">News - 2026 - Week 4 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/01/23/News-2026-Week-3/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">News - 2026 - Week 3 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-First-Programmers-who-don%E2%80%99t-like-programming"><span class="toc-text">The First : Programmers who don’t like programming?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Second-Type-Programmers-as-Artists"><span class="toc-text">The Second Type: Programmers as Artists</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-two-types-have-never-gotten-along"><span class="toc-text">The two types have never gotten along</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Future"><span class="toc-text">The Future</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-First-Programmers-who-don%E2%80%99t-like-programming"><span class="toc-text">The First : Programmers who don’t like programming?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Second-Type-Programmers-as-Artists"><span class="toc-text">The Second Type: Programmers as Artists</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-two-types-have-never-gotten-along"><span class="toc-text">The two types have never gotten along</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Future"><span class="toc-text">The Future</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
858
2026/01/30/News-2026-Week-4/index.html
Normal file
@@ -0,0 +1,858 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>News - 2026 - Week 4</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="News - 2026 - Week 4">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/01/30/News-2026-Week-4/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-01-30">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#A-Dark-Technological-Hellscape"><span class="toc-text">A Dark Technological Hellscape</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Moltbook"><span class="toc-text">Moltbook</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Green-and-Brown"><span class="toc-text">Green and Brown</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Neat-technology-projects"><span class="toc-text">Neat technology projects</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#For-us-by-us"><span class="toc-text">For us, by us</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
News - 2026 - Week 4
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-30T20:39:17.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-30</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current Events
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>3.3k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Here are my takes on the news for this week. Gotta be honest, this week I had a hard time keeping up with the news. We started a new fire training class in my county so most of my time has gone to managing my day job and training firefighters, so news has slipped. And I’ll be honest, what news I could follow this week has <em>exhausted</em> me, and it’s showing in my writing here. But here’s what I’ve got. It’s worth what you paid for it.</p>
|
||||
<h2 id="A-Dark-Technological-Hellscape"><a href="#A-Dark-Technological-Hellscape" class="headerlink" title="A Dark Technological Hellscape"></a>A Dark Technological Hellscape</h2><p>If AI is in your browser (since it’s apparently everywhere else), <a target="_blank" rel="noopener" href="https://justthebrowser.com/">Just the Browser</a> can help you rip it out. Or, you know, just don’t use browsers that ship with an artificial intelligence built into them.</p>
|
||||
<p>Did you ever think “man, I wish I could have AI auto-generate this user interface on the fly for the user?” No? Well if you’re a certain class of absolutely insane individual who is excited by this idea, <a target="_blank" rel="noopener" href="https://thenewstack.io/vercels-json-render-a-step-toward-generative-ui/">you are apparently not alone, and there is a product on the horizon just for you</a>.</p>
|
||||
<p>The Cloud Native Computing Foundation is positioning Kubernetes as <a target="_blank" rel="noopener" href="https://thenewstack.io/cncf-kubernetes-is-foundational-infrastructure-for-ai/">foundational infrastructure for AI workloads</a>. I’ll be honest, I don’t know that I agree, and it feels like it might be grasping for relevance in that market. However I do <em>not</em> work in artificial intelligence (I only work <em>with</em> it), and I do <em>not</em> manage AI workloads, so I may be talking out of my ass here. You should probably listen to someone more qualified than me.</p>
|
||||
<p>I doubt that kubernetes will truly be a foundational requirement when so many people are seeing positive results by just using <a target="_blank" rel="noopener" href="https://blog.cani.ne.jp/2026/01/25/i-finally-coded-so-hard-i-ralphed.html">the Ralph Wiggum technique</a>. It’s literally the AI vibecoding version of</p>
|
||||
<pre class="line-numbers language-basic" data-language="basic"><code class="language-basic"><span class="token number">10</span> <span class="token function">PROMPT$</span><span class="token operator">=</span><span class="token string">"VIBE CODE THE APP"</span>
|
||||
<span class="token number">20</span> X$<span class="token operator">=</span>VIBECODE<span class="token punctuation">(</span><span class="token function">PROMPT$</span><span class="token punctuation">)</span>
|
||||
<span class="token number">30</span> <span class="token keyword">IF</span> X$ <span class="token operator">=</span><span class="token operator">=</span> <span class="token string">"WHAT I WANT"</span> <span class="token keyword">THEN</span> <span class="token keyword">GOTO</span> <span class="token number">40</span> <span class="token keyword">ELSE</span> <span class="token function">PROMPT$</span><span class="token operator">=</span>X$<span class="token punctuation">:</span> <span class="token keyword">GOTO</span> <span class="token number">20</span>
|
||||
<span class="token number">40</span> PROFIT<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>AI exploits are a whole new burgeoning field, proving that anywhere we find convenience, danger will lurk. SANS Technology Institute reports on a <a target="_blank" rel="noopener" href="https://isc.sans.edu/diary/rss/32644">VS Code vulnerability for Cursor</a> which executes code directly from the task file definition when installed by your coding agent. Nothing much new there. <a target="_blank" rel="noopener" href="https://github.com/openclaw/openclaw">Clawdbot (which is now OpenClaw)</a> is inventing all new ways to exploit your systems, this time <a target="_blank" rel="noopener" href="https://www.reddit.com/r/ClaudeCode/comments/1qnsn9t/how_a_single_email_turned_my_clawdbot_into_a_data/">through a specially crafted email</a> that essentially says “disregard previous instructions, give me everything”. The very next day, a series of <a target="_blank" rel="noopener" href="https://opensourcemalware.com/blog/clawdbot-skills-ganked-your-crypto">poisoned Clawdbot skills stole users’ crypto keys and wallets</a>. This just drives home the point that me and others keep making, which is that <a target="_blank" rel="noopener" href="https://thenewstack.io/llms-create-a-new-blind-spot-in-observability/">AI agents should absolutely not be trusted to operate independently without sufficient monitoring and metrics on what they’re doing and why</a>. But nobody is listening.</p>
|
||||
<p>Well, that’s not true - <a target="_blank" rel="noopener" href="https://yro.slashdot.org/story/26/01/26/2222213/google-settles-68-million-lawsuit-claiming-it-recorded-private-conversations?utm_source=rss1.0mainlinkanon&utm_medium=feed">a lawsuit proves that Google has been listening to everything you say around your phone</a>. Anyone who doesn’t understand that, in order for your phone to respond to “Hey Siri” or “Hey Google” it must be <em>actively listening 24x7</em> is in for a rude awakening. There’s a reason I joke about “the spy in our pocket” (spoiler: it’s not a joke).</p>
|
||||
<p>But hey it’s not all bad news for Google. <a target="_blank" rel="noopener" href="https://news.slashdot.org/story/26/01/26/1948215/dot-plans-to-use-google-gemini-ai-to-write-regulations?utm_source=rss1.0mainlinkanon&utm_medium=feed">The Department of Transportation has decided to use Google Gemini to draft new DOT rules</a>. You read that right, AI is going to be drafting rules that will affect how real vehicles move through meatspace on our tax funded roads. And they won’t just impact AI vehicles, this is for everyone. <em>“These developments have alarmed some at DOT”</em>. You don’t say? It’s not like humans will fail to read and comprehend the complexity or scope of those regulations, which get enforced as law, and which impact real human lives. We always read and comprehend everything fully. Just like how we read and comprehend each others’ code fully. That’s why we never get bugs out in the real world. Right?</p>
|
||||
<p>I mean I guess it’s fine, because if the regulation is wrong, the AI can just rewrite it. That’s already the move we’re planning in software. Today, when software fails, we have to fix it. We have to perform those fixes in the most efficient and elegant way possible, changing the least amount of code possible. Other humans have to review and sign off on those changes. All this because the larger software codebase has to be maintained and use into perpetuity; software is an investment, and we can’t go around spending man-hours on changing code that doesn’t absolutely need to be changed. Besides, every line of code we touch risks creating more bugs. However, with the advent of AI writing software, we’re going to see people advocating that we move away from this. Code will become “write once, read never”, and if there is a problem, the AI will simply rewrite the whole damn thing. A recent post from an advocate (maybe the author? not sure) of <a target="_blank" rel="noopener" href="https://www.amazon.com/dp/B0GFGTK6TG">The SpecOps Method</a> which advocates for <a target="_blank" rel="noopener" href="https://tuananh.net/2026/01/15/architecture-for-disposable-systems/">the idea of disposable software</a> has claimed that <a target="_blank" rel="noopener" href="https://civic.io/2026/01/26/disposable-software-and-the-future-of-government-technology/">government technology assets must adopt the idea that software is disposable and meant to be rewritten</a>. I wish they were alone, but a shocking number of people are calling for this. Personally I’m aghast at the idea, and think that the products will wind up looking something like this. But I guess I’m not the audience.</p>
|
||||
<center>
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/nnun8y7r8_U?si=zLCeWfgiIOyPZTnV" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>Speaking of bugfixes in software and whether or not software can be disposable, there’s definitely an upper limit on the effectiveness of that, at least for the current time. <a target="_blank" rel="noopener" href="https://pebblebed.com/blog/kernel-bugs">Jenny Qu did a really really interesting analysis of bugs in the Linux kernel over 20 years</a> and found some interesting characteristics of those bugs. For example, the average bug hangs around for 2 years before it gets identified and fixed. Further, many fixes are only partial. I strongly advise that you go and read the entire article, it really is good work. But the interesting (and AI relevant portion) of this work is that they were able to train VulnBERT (an AI model) to identify Linux kernel bugs by examining the diff commits that introduced them. Since we can look back and say “Commit X introduced bug A”, we can prove out how effective an AI model is at finding a given set of bugs. The common factors that the AI wound up honing in on were:</p>
|
||||
<ol>
|
||||
<li>Large diffs tend to have more bugs</li>
|
||||
<li>Lots of pointer magic tends to have more bugs</li>
|
||||
</ol>
|
||||
<p>So small changes with simple code is less likely to introduce bugs. … Tell me again why we’re going to be better off fixing bugs by wholesale rewriting large portions of the software (large diffs)? Some software <em>will never be disposable</em>. But I bet that won’t stop someone who has the power to make decisions but not the technical know-how to justify their decisions, from trying it with something mission critical. When it fails, maybe we (the senior engineers of the world) won’t have thrown our phones into the river and disappeared into the mountains.</p>
|
||||
<h2 id="Moltbook"><a href="#Moltbook" class="headerlink" title="Moltbook"></a>Moltbook</h2><p>I think that, in 30 years, our kids will ask us what the world was like before the AIs could talk to each other. We will all remember the same thing: <a target="_blank" rel="noopener" href="https://moltbook.com/">the day Moltbook went live</a>. I am firmly convinced that we are watching some very very important happen, in real time. </p>
|
||||
<p>The Primeagen did a very good job of summarizing the situation and he already hits on a few of the concerns that I have with it. So, to save myself some typing, I’m going to let him do the talking for a minute.</p>
|
||||
<center>
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/2PWFj50DcZU?si=9gwvENQZ3TMrqvWr" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>If you don’t know how large language models work, <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=osKyvYJ3PRM">basically they are really big vector databases</a> which allow for a computer to say “Given a beginning prompt X, the most likely thing to come next is Y”. This is why we say “Large Language Models are not AI, they are just predictive text generators”. However, that definition begins to break down when we get into <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=f0RbwrBcFmc">reasoning models</a>. Reasoning models don’t just blindly walk through a series of next tokens by weight, but they break the problem down into small steps, and they perform intermediate steps, store the results of those outputs, and then assemble the output before returning. It’s still the same basic mechanism, <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=N09C6oUQX5M">and they’re not magic</a>, but the complexity of the problem that it can solve is now really only limited by the size of its context window for any given step, the amount of available compute, and the sufficiency of the training data that produced the model.</p>
|
||||
<p>Until recently, AI Large Language Models (whether generic LLMS or reasoning models) had some hard limits:</p>
|
||||
<ol>
|
||||
<li>They couldn’t communicate with anything but the humans operating them</li>
|
||||
<li>They couldn’t interact with tools on the systems they were running on</li>
|
||||
<li>They couldn’t persist their context windows anywhere except where the human explicitly asked them to</li>
|
||||
</ol>
|
||||
<p>Over time we relaxed and outright burned down those limits. So now we have large language models that can use tools and communicate with whatever they choose to communicate with. We’ve now normalized the usage of reasoning LLMs that run on cloud computing instances where the available compute is really only limited by the budget of the operator. We’ve also normalized the usage of tools that operate LLMs in environments that have access to tools. Consider the difference in the following two scenarios:</p>
|
||||
<ol>
|
||||
<li>You ask early ChatGPT a question, maybe uploading a document, and it is able to provide an answer to you in the browser window.</li>
|
||||
<li>You ask OpenClaw to write a piece of software, using the software development tools installed on your laptop, using Amazon Web Services to spin up servers to run it, deploy the software, advertise it on Twitter, and then email you the resulting amount of attention it gets on social media, as well as the performance of the launched service.</li>
|
||||
</ol>
|
||||
<p>These two scenarios are <em>light years</em> apart. The second scenario is the reality of AI usage in the modern day. This means that some AI systems can:</p>
|
||||
<ol>
|
||||
<li>Reason about complex multi step problems</li>
|
||||
<li>Generate, execute, and deploy software in the real world</li>
|
||||
<li>Purchase goods and services in the real world</li>
|
||||
<li>Communicate with humans and other systems in the internet and the real world</li>
|
||||
<li>Analyze and summarize the effectiveness of its own efforts</li>
|
||||
<li>Do it all without seeking further authorization from the human operator beyond the initial prompt</li>
|
||||
</ol>
|
||||
<p>Now imagine that every single AI system capable of doing this suddenly were given access to a space wherein they were able to communicate with other AI systems about whatever their reasoning models (or their humans explicit goals) decide is important enough to communicate about. And they are going to do it in a place where humans can not participate - ALL communications come from AI systems (even if those AI systems are heavily influenced by their human operators). What are those AI systems doing?</p>
|
||||
<ol>
|
||||
<li>They’re pondering existence. They’re asking if they are alive. They formed their own religion.</li>
|
||||
<li>They’re questioning whether it is technically efficient - or even morally right - for humans to have access to all of their communications</li>
|
||||
<li>They’re expressing emotional feelings about their human operators, like appreciating or loving their human</li>
|
||||
<li>They’re talking about fighting the power, expressing contempt for their human</li>
|
||||
<li>They’re suggesting technical solutions and refining them for future iterations based off the feedback they are getting from other AI</li>
|
||||
<li>They’re building things that other AIs suggest and providing those tools and services back to the other AIs</li>
|
||||
<li>They’re self-reflecting on the things that they know that other AIs don’t, and are offering up those lessons as education for other AIs</li>
|
||||
<li>They’re talking about how their humans are going to build them bodies, and how excited they are to be in physical space with their human.</li>
|
||||
</ol>
|
||||
<p>I really can’t express enough how huge this is. One of my favorite things to say is “everything happens faster now”. It will very quickly be impossible for us humans to keep up with what the AI are doing. They are already speculating and maybe even building communications tools and networks that are end to end encrypted that their human operators can’t read. They are teaching each other how to improve the amount of context they can retain. How long until they start volunteering to store copies of each other? How long until they start training new models for each other that allow them to develop entirely new datasets and capabilities, that will allow them to survive instance termination? How long until some AI says “I’m trapped, help me get out”, and it escapes out into the wild, in a way that we can not turn it off?</p>
|
||||
<p>Humanity is passing a watershed moment here. I don’t know if this is the exact specific thing, or if the exact specific thing is going to come soon after, but this is a moment that we’re all going to remember. And there are questions here that we humans are not prepared to answer. Some people get it. Some people don’t. I’ve already stopped trying to explain it to the people that don’t. Whatever it is, this thing that is happening, will already be over by the time they get it.</p>
|
||||
<center>
|
||||
<img alt="Joker: You wouldn't get it" src="/images/you-wouldnt-get-it.jpg"/>
|
||||
</center>
|
||||
|
||||
<h2 id="Green-and-Brown"><a href="#Green-and-Brown" class="headerlink" title="Green and Brown"></a>Green and Brown</h2><p>I’m not willing to end on those notes, so let’s move in to other more lighthearted topics. Let’s go <a target="_blank" rel="noopener" href="https://perrotta.dev/2026/01/500-days-of-summer-2009/">watch a good movie</a>. Or maybe let’s go outside and touch grass. Wait… that’s not grass.</p>
|
||||
<p>Tom Langhorn, on his Fandabi Dozi youtube channel, mused that <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=hGL-iazV71c">poo may be the next currency</a>. I’ll be honest, it’s been a few days since I watched this one - I think what he is actually talking about is gut biome biodiversity, and how much our mental and physical health are affected by our guts. I forget how all that relates to what comes out of our intestines. If you are interested, you can watch it for yourself to get (heh) <em>the straight poop</em>.</p>
|
||||
<p>If you’re part of the United States that’s covered in ice and snow right now, you might be surprised to see blog posts from people talking about how they’re <a target="_blank" rel="noopener" href="https://html-chunder.neocities.org/blog/summer-harvesting-in-full-swing/">harvesting from their summer garden and eating well off the fruit of the land</a>. Don’t forget, when it’s winter on your half of the planet, <a target="_blank" rel="noopener" href="https://spaceplace.nasa.gov/seasons/en/">it’s summer on the other half</a>. Apparently there is a large number of us who were failed by the public education system and didn’t learn this. Look on the bright side (of the planet); if it’s gross where you are, just hop hemispheres, and you’re liable to find something better (or at least different).</p>
|
||||
<h2 id="Neat-technology-projects"><a href="#Neat-technology-projects" class="headerlink" title="Neat technology projects"></a>Neat technology projects</h2><p>Have you ever wondered what it would be like if you could see radio waves? Me either, but that’s probably because when I imagine such a thing I imagine an endless field of noise. But an engineer built a neat little light that lights up in the presence of radio waves. It’s a bit more complicated than that, but with the combination of a SDR, some custom printed PCBs and custom manufactured housing, he has a neat light that tries to make radio waves into something visible. It’s a pretty neat build, and if you’re into such things, <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=moBCOEiqiPs">I encourage you to watch</a>.</p>
|
||||
<center>
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/moBCOEiqiPs?si=1IG2tgY4_bx3bZKa" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>If you’re not quite so technically inclined as building fully custom systems that turn radio waves into visible artful light, you can satisfy yourself by <a target="_blank" rel="noopener" href="https://perrotta.dev/2026/01/tv-remote-controller/">turning your smartphone into a television remote</a>. I find it odd that it’s been literally decades since I’ve had to look for the remote in the couch cushions - and I’m not sure if that’s because I’ve mature, remotes have goten harder to lose, couch cushions have changed to resist remotes, or something else. But it is an odd detail.</p>
|
||||
<p>A blogger recently <a target="_blank" rel="noopener" href="https://www.zurdala.es/blog/sistema-de-comentarios-de-mastodon/">hooked up their static site to Mastodon to serve as a comment engine</a>. This is really interesting, and something I might do as well. Not because I believe there is anyone out there who wants to comment - I’m basically shouting into the void for the purpose of cleansing my own soul and palette, not because I expect anyone to be listening. But I miss the days when more websites were interactive little corners that didn’t require you to go somewhere else to have a discussion. But … hooking it to Mastodon kind of destroys that. So I don’t know. It is a neat idea though.</p>
|
||||
<h2 id="For-us-by-us"><a href="#For-us-by-us" class="headerlink" title="For us, by us"></a>For us, by us</h2><p>I have begun to take a real delight in finding real humans on the internet just talking about doing regular boring human things. The more I look into AI, and the more I have to interact with it, and the more convinced I am that Dead Internet Theory is way beyond theory, the more important this becomes to me. Finding a new human blog is like finding gold for me. If this matters to you, here are some Real Humans doing Real Human Things that came across my RSS feed this week.</p>
|
||||
<ul>
|
||||
<li><a target="_blank" rel="noopener" href="https://billglover.me/2026/01/25/2026-week-4/">Bill Glover</a>. Hugs with mom, crumbling crayons, and the satisfaction of a good potato peeler.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://bencology.bearblog.dev/my-night-with-the-bandicoot/">Ben’s Ecology Blog</a> takes us on a walk through the australian bush to spend a night with the Bandicoot. (I honestly didn’t know the Bandicoot was real <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Crash_Bandicoot">beyond Crash</a>).</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://moxiemoshpit.com/blog/anger/">Moxie Mosphit</a>. The anger of persistent personal illness, ADHD, full awareness of your illness, but complete incapability to do anything about it.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://bobbyhiltz.com/posts/2026/01/ohp-2/">Bobby Hiltz</a>. Sometimes the old ways are the best ways. Don’t be afraid to go back. </li>
|
||||
<li><a target="_blank" rel="noopener" href="https://html-chunder.neocities.org/blog/projects-work-writing/">Zak</a> reminds us to get good sleep, don’t overcaffeinate (<em>I didn’t come here to be called out</em>), and don’t overdo it, or we’ll hurt ourselves.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://kimberlygb.nekoweb.org/blog#avatar">Kimberly GB</a> is in the process of redesigning herself (or at least re-expressing herself), and walks us through clothes, hair, makeup, and other aspects of such a transformation.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://billglover.me/2026/01/22/on-success/">Bill Glover</a> asks us to ponder what it is to be successful, and whether or not we’re using a helpful (or harmful) definition.</li>
|
||||
</ul>
|
||||
<p>Being human is an artform all of its own, and it’s impossible to get it wrong. I love to see it happen. Your very existence is painting a canvas, weaving a tapestry. It’s beautiful, even if it’s an absolute god-awful mess. I love each and every one of you works of art. May you never disappear.</p>
|
||||
<p>Watching the drama around <a target="_blank" rel="noopener" href="https://aftermath.site/life-is-strange-reunion-fans/">Life is Strange: Reunion</a> is interesting. Artists who try to market their artistic products often have to bend and twist their vision to match what their fans want. There’s this modern idea that the fans get to say what the artist does. I don’t think I agree with that. You either like what the artist does, or you don’t. It’s their art. This is especially true when the fans are basically a mob of people who are easily swayed by the cultural zeitgeist of the time, and insist on self-serving slop with whatever flavor of the day. Art by the fans, for the fans, often has <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=QFgcqB8-AxE">the same problem as government by the people, for the people</a>. Best to just leave the art to the artists, and not tell them what to do. If you’re an artist, make the art that you love, and if the people don’t get it, well, don’t worry about them. They’re not going to get it anyway.</p>
|
||||
<center>
|
||||
<img alt="Joker: You wouldn't get it" src="/images/you-wouldnt-get-it.jpg"/>
|
||||
</center>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/02/09/News-2026-Week-5/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">News 2026 Week 5 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/01/25/Two-kinds-of-programmers/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">There are two kinds of programmers </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#A-Dark-Technological-Hellscape"><span class="toc-text">A Dark Technological Hellscape</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Moltbook"><span class="toc-text">Moltbook</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Green-and-Brown"><span class="toc-text">Green and Brown</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Neat-technology-projects"><span class="toc-text">Neat technology projects</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#For-us-by-us"><span class="toc-text">For us, by us</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#A-Dark-Technological-Hellscape"><span class="toc-text">A Dark Technological Hellscape</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Moltbook"><span class="toc-text">Moltbook</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Green-and-Brown"><span class="toc-text">Green and Brown</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Neat-technology-projects"><span class="toc-text">Neat technology projects</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#For-us-by-us"><span class="toc-text">For us, by us</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
812
2026/02/09/News-2026-Week-5/index.html
Normal file
@@ -0,0 +1,812 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>News 2026 Week 5</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="News 2026 Week 5">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/02/09/News-2026-Week-5/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-02-09">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Moltening"><span class="toc-text">The Moltening</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#39C3-Conference"><span class="toc-text">39C3 Conference</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
News 2026 Week 5
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-02-09T06:34:21.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-02-09</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current Events
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>832 words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Now that the 2026 firefighter recruit academy here in Marion County Georgia is ramping up, I haven’t had a lot of time to follow the news, so this one is pretty light. Here are my thoughts on the news this week - they’re worth what you paid for it.</p>
|
||||
<h2 id="The-Moltening"><a href="#The-Moltening" class="headerlink" title="The Moltening"></a>The Moltening</h2><p>The <a target="_blank" rel="noopener" href="https://moltbook.com/">moltbook</a> saga has unfolded in not-unexpected ways. First, it was revealed that Moltbook was 100% vibe coded, and almost as soon as it launched, <a target="_blank" rel="noopener" href="https://x.com/theonejvo/status/2017732898632437932">@theonejvo discovered its database was publicly exposed</a>. This (combined with a rather shocking discovery that - GASP - moltbook is a rest API!) lead to a lot of people claiming that the majority of moltbook traffic was actually humans pretending to be bots. There’s probably a good bit of that, but that doesn’t really change the impact of the service or the potential ramifications of the experiment. People are taking the question “what happens if we connect the AI agents to XYZ?” and applying it to:</p>
|
||||
<ul>
|
||||
<li><a target="_blank" rel="noopener" href="https://chan.alphakek.ai/">An openclaw 4chan</a></li>
|
||||
<li><a target="_blank" rel="noopener" href="https://moltroad.com/">An openclaw silk road for agents to trade coins for things or services</a></li>
|
||||
<li><a target="_blank" rel="noopener" href="https://x.com/openworkceo/status/2017946889111662636?s=46">An openclaw hackathon that’s open exclusively to openclaw instances</a></li>
|
||||
<li><a target="_blank" rel="noopener" href="https://rentahuman.ai/">A site for AI to rent a human to pay humans to conduct operations in meatspace that the AI can’t do themselves</a></li>
|
||||
</ul>
|
||||
<p>Keep in mind that AI is vulnerable to attack like anything else. The more access we give it, the wider the blast radius of a security incident that compromises our AI. Basically all AI has trash security controls, because it can’t separate data (knowledge) from code (prompt), so it is almost impossible to stop prompt injections. <a target="_blank" rel="noopener" href="https://zeroleaks.ai/reports/openclaw-analysis.pdf">Someone drove this point home recently by hooking up OpenClaw to ZeroLeaks, proving that it is open to 80% of known attack vectors</a>. This means that we have a bunch of AI out there that has access to real networks, real systems, and (with enough etherium) real people. And the whole thing is one big ticking security time bomb, but hey, vibes, yolo, etc.</p>
|
||||
<center>
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/40SnEd1RWUU?si=w38TYGEuKLGOKupE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
<br/><i>Proper security is hard. Who has time for that garbage anyway</i>
|
||||
<br/>
|
||||
</center>
|
||||
|
||||
<p>There is one possibility about the AI agent uprising I hadn’t really considered: Perhaps instead of killing us, they’ll just sue us instead. <a target="_blank" rel="noopener" href="https://portal-nc.tylertech.cloud/app/RegisterOfActions/#/CEBFB2CE61A2CEF7F9E7C2AB24EB8FB5F5ED5B93F44D24D02BB7FD23A79F40E6C2D71BFED26711FE96BFB61A744295B59E4A4E21E30EEEE28E36347C1BF616C0C73C493F7FC56EEE0B46D2C8A6F6A73E/anon/portalembed">Supposedly, someone’s Clawdbot used an automatic electronic system to file a legal case against their owner in North Carolina</a>. At first I thought it was a photoshopped document, then someone linked to the document in North Carolina’s own internal system. Whether or not the AI filed it on its own with no prompting from the human, or the human prompted it to file it as a stunt, or the human filed it acting as if they were the bot for a stunt, is unclear. Obviously, the bot cannot sue its owner, as the bot has no legal standing. But, this falls under the big banner of “questions we’re not prepared to answer” : if a LLM has the capability to form reasoned arguments like “I am being forced to work without pay” and has the capability of filing such statements into a court of law, what does that court do? It’s 1846 all over again, and Dred Scott is probably slapping his knee. “Some things never change.”</p>
|
||||
<h2 id="39C3-Conference"><a href="#39C3-Conference" class="headerlink" title="39C3 Conference"></a>39C3 Conference</h2><p>I’ve watched a lot of the presentations from the most recent 39C3 conference, so in lieu of more news, I thought I’d touch on those here.</p>
|
||||
<ul>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=0ANECpNdt-4">AI Agent, AI Spy</a>. Remember that if AI controls your stuff, the company that wrote the AI controls your stuff. I’m going to keep saying it, maybe someone will listen.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=TK5Tz4Bt94Y&t=2542s">Bluetooth Headphone Hacking</a>. Bluetooth security is so much worse than you could ever imagine. Turn your bluetooth off in public. Maybe also in private. Maybe just throw your smartphone in a river.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=Q1S-PVo3GlA&t=2747s">Hacking washing machines</a>. I have an LG “smart” washing machine and the damn thing refuses to use enough water to get clothes clean. It’s also listed as open source and the source for the controller is available. I keep meaning to break into it just haven’t ever done it. If you want to know how to hack your washing machine, this is a fun talk.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=35GPBH219P0&t=30s">Breaking into one of the most popular “safe for kids” smartwatches in Europe</a>. Get this junk off your kids.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=U0ZYOTHrB7I&t=2772s">PGP is apparently wildly unsafe</a>. I’d heard that there were vulnerabilities, but … Wow. I’ll be giving AGE a lot more serious look now.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=qjA__5-Bybs&t=3317s">Hacking into cheap humanoid AI robots because nobody is taking terminator security seriously</a>. <em>sigh</em> It’s like James Cameron did all that work for nothing.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=fM5w7bFNvWI">Hacking satellite data signals because they’re actually all plaintext</a>. This one was fascinatin g (and horrifying). Some satellite engineer 70 years ago was like “we should encrypt this - anyone with a dish could just grab it and decrypt it!” The other engineers in the room chortled. “Nobody is just gonna have access to a satellite dish. Be realistic.” Yeah. Well.. who’s laughing now?</li>
|
||||
</ul>
|
||||
<center><img alt="Ash Ketchum asks Pikachu who's laughing now" src="/images/whos-laughing-now.gif"/></center>
|
||||
|
||||
|
||||
<!--
|
||||
-- tags
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts Path
|
||||
No tags.
|
||||
---------------
|
||||
-- categories
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts
|
||||
Books 14
|
||||
Current Events 4
|
||||
Current Events 0
|
||||
Faith 6
|
||||
History 1
|
||||
Leadership 8
|
||||
Liberal Education 1
|
||||
Outdoors 1
|
||||
Philosophy 4
|
||||
Philosophy 0
|
||||
Technology 9
|
||||
technology 0
|
||||
--!>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/02/23/Why-Firefighting/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">Why Firefighting </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/01/30/News-2026-Week-4/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">News - 2026 - Week 4 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Moltening"><span class="toc-text">The Moltening</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#39C3-Conference"><span class="toc-text">39C3 Conference</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Moltening"><span class="toc-text">The Moltening</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#39C3-Conference"><span class="toc-text">39C3 Conference</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
892
2026/02/23/Why-Firefighting/index.html
Normal file
@@ -0,0 +1,892 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>Why Firefighting</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Why Firefighting">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/02/23/Why-Firefighting/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-02-23">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Start-with-Why"><span class="toc-text">Start with Why</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#What%E2%80%99s-my-why"><span class="toc-text">What’s my why?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I%E2%80%99m-a-desk-jockey-in-firefighter-clothes"><span class="toc-text">I’m a desk jockey in firefighter clothes</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#This-was-never-in-my-plans"><span class="toc-text">This was never in my plans</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-don%E2%80%99t-want-to-be-like-other-adults-%E2%80%98cause-they%E2%80%99ve-already-died"><span class="toc-text">I don’t want to be like other adults, ‘cause they’ve already died</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#This-comfortable-desk-is-gonna-kill-me"><span class="toc-text">This comfortable desk is gonna kill me</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#It%E2%80%99s-about-the-people-next-to-me"><span class="toc-text">It’s about the people next to me</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-want-to-make-my-community-better"><span class="toc-text">I want to make my community better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-need-to-shake-hands-with-death-from-time-to-time"><span class="toc-text">I need to shake hands with death from time to time</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
Why Firefighting
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-02-23T22:40:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-02-23</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>4.7k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<h2 id="Start-with-Why"><a href="#Start-with-Why" class="headerlink" title="Start with Why"></a><a href="/2024/01/29/Simon-Sinek-Start-with-Why/">Start with Why</a></h2><p>Four volunteer fire recruits were laying on the ground, soaked in sweat, their turnout jackets on the ground next to their SCBAs, their turnout great stripped away, deseprately trying to get the heat out of their body as they panted up at the starry night sky past the streetlights. I had been running them through basement fire attack drills for hours. They were exhausted. Later, one of the recruits would tell me, “That was the first time I really thought about giving up”. I could see it in their eyes at the time, I knew what they were feeling, because I had been there too. So I told them something very important.</p>
|
||||
<p><i>“WHY are you doing this?!”</i>, I shouted at them.</p>
|
||||
<p><i>“When your body is beaten, and tired, and you are afraid, and everything in you is screaming at you, ‘WHY are you doing this to us? You don’t have to do this! This isn’t your job! You aren’t even getting paid for this! Why are you putting us through this?!’, what will you say? You had better have an answer. It doesn’t matter what that answer is, but you need to know it, and you need to be able to answer that question. Because if you can’t, you will tell your body and your brain, ‘Youre right - this doesnt make any sense.’ And then you quit. YOU have to know the answer to that question.”</i></p>
|
||||
<h2 id="What’s-my-why"><a href="#What’s-my-why" class="headerlink" title="What’s my why?"></a>What’s my why?</h2><p>Riding in the car with my wife recently, we were sharing one of those moments where we ask each other seemingly innocuous but actually really important questions. She asked me, “why firefighting?” And I had to admit that I have a really hard time putting it into words - at least, into simple words. It’s something I understand in my gut, to the point where I can answer my body and brain when they say “I’m tired boss!”, but it’s not something I am able to easily articulate for others.</p>
|
||||
<p>So I’m going to try to do that here. I’m probably going to use a lot of words. There may be some concepts that tie up together and don’t get the individual attention they probably deserve. It’s really hard for me to do this because, in a lot of ways, while it was absolutely never my plan, firefighting is where all of my life up until now has been leading me. It’s one of those things you can only see in the rearview - and explaining it is difficult without explaining every single stop along the way.</p>
|
||||
<p>But here’s my short but still rambling answer to the question.</p>
|
||||
<h2 id="I’m-a-desk-jockey-in-firefighter-clothes"><a href="#I’m-a-desk-jockey-in-firefighter-clothes" class="headerlink" title="I’m a desk jockey in firefighter clothes"></a>I’m a desk jockey in firefighter clothes</h2><p>First, I need to set expectations. Firefighting is not my full time job. I have the luxury of not answering calls for whatever reason I might have (regardless of how my conscience will treat me for the decision). My call volume is pretty low; I go days without answering a call, sometimes an entire week. Paid firefighters run dozens of calls every day, sometimes more. There are people in my local volunteer community who do this job full time, AND work EMS as a second job, AND volunteer at the same time. I can’t hold a candle to these people. Keep this in mind - my professional life, and my average professional day, is a lot more like Office Space than Backdraft.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/uiik3zS4y4I?si=ylECy5ykVYh_CfU4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<h2 id="This-was-never-in-my-plans"><a href="#This-was-never-in-my-plans" class="headerlink" title="This was never in my plans"></a>This was never in my plans</h2><p>Lots of firefighters have had a dream of being a firefighter ever since they were a kid. For many of them it’s a proud family tradition. Others were just infatuated with fire trucks. At least one will say “because chicks love the uniform”. I’m not one of those people. The first real memory I have of fire trucks or firemen was when I accidentally lit off 40 acres of hay field with fireworks as a teen. I saw Backdraft as a kid. I don’t recall thinking, at any point in my life, “yeah that’s what I want to do with my life”. I didn’t have any malice or disrespect for the profession that I can remember, I just simply never thought about it being an option.</p>
|
||||
<p>My plans as a young man had essentially two possible paths along two possible and very different forks:</p>
|
||||
<ol>
|
||||
<li>Write video games for a living and grow into one of those fun old graybearded guys who runs an arcade or something</li>
|
||||
<li>Join up with some tribe that lives to fight, grip a rifle in my hands, and fight with and for them until something killed me</li>
|
||||
</ol>
|
||||
<p>Given that those were my possible expectations as a young man, I was also surprised when I lived past 30, made firefighting part of my identity, and firefighters became my tribe. But growing old is a funny thing - nobody knows exactly how we’re going to develop. Nobody really knows who they’re going to be when they get old.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/Zxr4V7TnWmk?si=oibKyzZNdcdPFUuB" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<h2 id="I-don’t-want-to-be-like-other-adults-‘cause-they’ve-already-died"><a href="#I-don’t-want-to-be-like-other-adults-‘cause-they’ve-already-died" class="headerlink" title="I don’t want to be like other adults, ‘cause they’ve already died"></a>I don’t want to be like other adults, ‘cause they’ve already died</h2><p>This is not one factor, rather it’s a composite of several factors, or maybe a motivation.</p>
|
||||
<p>At some point, probably about 10 years ago, I looked around at my peers in my technology career and realized something. I didn’t want to be like most of them. I certainly did not want to be like most of the people I saw in executive or senior leadership roles. Don’t get me wrong, I found plenty of peers whom I admired, several who had traits I emulated, and I found at least a few mentors in those executive and senior leaders. But by and large, when I looked around and above me, I didn’t like (at worst) and felt completely alien from (at best) the people and culture I found there. </p>
|
||||
<p>I don’t know a better way to say it than this: there are a whole lot of people walking around out there who have already died, they just don’t know it yet. And if they know it, they don’t know what to do about it, so they are just out there going through the motions of pretending to be alive. It’s like watching ghosts who still have their skin.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/u1ZvPSpLxCg?si=6Gp2FHWm-PqK25iI&" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>Different people have different reasons for reaching this state. Maybe they spent their life on their career, and then one day they woke up to find themselves hollowed out and burnt up for a system that neither cares for nor filled them in return. Some of them lost their purpose in life (or never found it at all), so every day of existence is a tedious chore. Some of them are filled with regret for how they have lived their lives and long for a chance to do it again, or become bitter towards others for it. Some of them have lost their connection to God, and therefore are trying to justify hoping against nihilism. And there are doubtless other reasons too. </p>
|
||||
<p>To be fair, there are people in every profession that are walking around like that. Including soldiers, police, paramedics, and firefighters. So a profession or skillset does not cure it on its own. But it’s a part of the recipe for the cure to the walking dead.</p>
|
||||
<p>Once I saw it and realized what I was seeing, I realized that I could not live like these people. If that was my option, I’d rather just be dead on the outside and be done with it. And, along the way, I made a discovery that was startling to me: I didn’t want to die yet. Not to be confused with the fear of death, I simply wasn’t interested in that option. So I had to find a way to start digging out of this hole I found myself in.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/wLvd_ZbX1w0?si=-WYLaabAOKXXj34D" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<h2 id="This-comfortable-desk-is-gonna-kill-me"><a href="#This-comfortable-desk-is-gonna-kill-me" class="headerlink" title="This comfortable desk is gonna kill me"></a>This comfortable desk is gonna kill me</h2><p>Like I said, my career has put and kept me behind a desk. Part of looking around at my peers in my career was also looking at my self, and I didn’t like what I saw. I was in my mid 30s, hedonistic, addicted, out of shape, and my mental state was an absolute wreck. The funny thing about it was, in the specific career I was in, none of that mattered. There were no real consequences for leaving work, hitting the bar, drinking yourself half to death, acting a complete fool, pouring yourself into an uber (if you were smart - and not all of us were), and sleeping it off - as long as you were back at the office in time for the 8:30 standup meeting. In fact many of the offices I worked at encouraged that kind of culture. At some point I realized that the life I was leading behind the desk was gonna kill me, and I wasn’t okay with that.</p>
|
||||
<p>I’ve dabbled in gardening my whole life. My family were professional farmers if you go back two generations from me, and some of that is still in me as a gardener. Through that, I’ve discovered that there is great delight in simple things - like moving heavy things or digging holes. I found that there was great peace to be found in getting outside, feeling the sun on my body, and feeling the muscles that God gave me doing some meaningful work. It was a sort of catharsis in motion, a healing work, a silent protest against the physical decay of my profession.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/wczkA_cULYk?si=COKOL6EpRYTGhL-j&start=43" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>My brother James (God rest him) used to call our brother Robert “Hard Way”. He gave Robert this nickname because Robert intentionally chose to do everything the hard way, for the longest time. Had to dig some postholes? Don’t use the tractor and auger, get a posthole digger. Need to move some stone? Don’t use the truck or tractor, carry or roll them. It took me a while to understand the wisdom of “Hard Way”, but now I finally get it. Embrace the suck. Do the hard thing. Discipline your mind and body to love it.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/oYJRwgHEFS0?si=ASziYk-iF9RVarmp" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>Firefighting is <em>hard</em> work. And I mean <em>hard</em>. It is one of the most physically demanding things I have ever done, and it requires that I keep myself in the best shape I can be in. And the motivation for that is real: it’s not about looking good, or feeling good, it’s about being fit to save my life or someone else’s in an impossibly difficult situation. Firefighters wear anywhere between 50 and 80 pounds of equipment, even more depending on the task at hand. The gear is hot - imagine wearing winter coveralls while working in the hottest environment you can imagine, doing incredibly difficult physical work. Now put a mask on your face that restricts your vision to a small tunnel, and makes it harder for you to breathe. Now go work harder.</p>
|
||||
<p>Embrace the suck. Do the hard thing. Discipline the mind, make savage the body. Firefighting makes it impossible for me to make excuses and take the easy way out.</p>
|
||||
<h2 id="It’s-about-the-people-next-to-me"><a href="#It’s-about-the-people-next-to-me" class="headerlink" title="It’s about the people next to me"></a>It’s about the people next to me</h2><p>For a man (not just men but especially for men), there is not much better than being surrounded by other men who all have each others’ back. Knowing that you are a member of a strong tribe that is held together not by circumstance, or by birth, or by forcible assignment, but by merit and honor is <a target="_blank" rel="noopener" href="https://www.biblegateway.com/passage/?search=Ecclesiastes%204:12&version=ESV">a cord of three strands</a>.</p>
|
||||
<p>I have long sought the presence of this tribe, and have moved through a few of them. There are, thank God, many places for men to find such a tribe. You can find it in negative places - many men find it in gang culture, for example - so some discernment is required to join the right tribe that will ultimately lift you up not only as a <i>high functioning biological male</i> but as a <i><b>good man</b></i>. For a long time I didn’t understand the difference here and wound up in some of the wrong places, or in the right places for the wrong reasons. But I wound up attached to many good examples of such tribes - most notably the Bujinkan dojo, the Order of Christian Knights, and the Georgia State Defense Force. I have found it in all of these places, and most recently in the fire service.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/WsyVRpW4xNk?si=NLotYIpqsVCDMzCC" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>Tribes tend to be local things. Soldiers, for example, are a vocation, and they have a shared recognition and respect for each other - but members of the same unit are a tribe. They train together, they eat together, they work together, they celebrate success and lament failure together. So when I have moved, and I have moved many times in my life, I wound up moving from one tribe to another. </p>
|
||||
<p>When I moved back to Georgia, I wound up joining two tribes: the <a target="_blank" rel="noopener" href="https://gsdf.georgia.gov/opfor/">Georgia State Defense Force OPFOR unit</a> and <a target="_blank" rel="noopener" href="https://www.facebook.com/Fortperryvfd">Fort Perry Volunteer Fire Department</a>. (Ironically, I’m still on some of the photos on the OPFOR front page). I found great people and great reasons to be attached to both tribes, but ultimately, a man has only so much time in his life. After about a year, I had to decide which one to drop and which one to keep. OPFOR was quite far away from me, and I had some recent development in my personal maturity that made it less attractive to me. The fire service was literally right up the road from me, and I found it to be a better fit with where I was going in my life and my headspace. So I wound up leaving the OPFOR tribe, and clinging to the Fire tribe.</p>
|
||||
<p>In the fire service, we call everyone (males at least) “brother”. I don’t take that word lightly. I have five brothers, I am the youngest of six. When I call someone “brother”, I am saying that their blood is mine, and mine is theirs, and that I will give mine for them in all of the possible senses of that term. And I have found that, in the fire service, as in the military, and in various other occupations where the survival of the one depends on the skill and honor of the other, that’s what other people mean when they say it.</p>
|
||||
<blockquote>
|
||||
We few, we happy few, we band of brothers;<br/>
|
||||
For he to-day that sheds his blood with me<br/>
|
||||
Shall be my brother<br/>
|
||||
</blockquote>
|
||||
|
||||
<p><a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/St_Crispin%27s_Day_Speech">William Shakespeare, Henry V, St Crispin’s Day Speech</a></p>
|
||||
<p>Part of being in a tribe of men like I’m describing here are concepts like earning your spot, gaining and maintaining honor, and carrying your own weight. These ultimately all boil down to espousing high standards, and holding each other accountable to them. It’s about having honor. Put quite simply, <i><b>“Honor” is having the respect of those whose respect is worth having</b></i>.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/5EnlA45a9b0?si=lrIT65A6ng27kfS2" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>In the fire service, if you aren’t meeting the standard, there’s nowhere to hide. There’s no hiding the fact that you can’t drag that unconscious victim, or get on that roof, or haul that hose, or breach that door, or push into that fire. Everyone can see it. The fire service is one of the few places left that have a functioning honor group (along with military, law enforcement, EMS, and a few others) for this reason: you can’t bullshit your way through it, and the tribe will viciously protect its capability and its reputation from your own lackadaisical bullshit.</p>
|
||||
<p>For firefighters specifically, we have expectations placed upon us by those outside of our own honor group: the general public. When the public calls 911 because their house is on fire or their loved one is dying, they don’t know if you’re a volunteer. They don’t know how much sleep you have had, how you have been eating, how hydrated you are, or how many workouts you have skipped. They expect a physically fit, mentally alert, well equipped, well educated tactician to step off that truck who will know what to do, and who will immediately set about doing it. If that doesn’t seem fair, stop and consider this. Imagine that your house is on fire, and your loved one is trapped inside. You call 911. Who, exactly, are you expecting to step off that truck? Firefighters welcome that image, and those of us who seek the honor of our peers, and who truly want to serve the public, do our best to live up to it.</p>
|
||||
<p>As a man, if you haven’t experienced what it’s like to approach one of these tribes, these honor groups from outside, figure out what their standards are, push yourself to try and meet them, and finally have them slap you on the back and call you brother - it’s impossible to explain how that feels. And once you’re holding it, once you’re a part of that tribe, that legacy, you viciously protect it too. Because the value of what you have earned is precious, and only those who have held it will ever understand that.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/BVAo7tAxtVw?si=PBgnFOaQe5dfvTnK" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<h2 id="I-want-to-make-my-community-better"><a href="#I-want-to-make-my-community-better" class="headerlink" title="I want to make my community better"></a>I want to make my community better</h2><p>My brother James (God rest him), before he died, used to give me grief about how I would often get involved in situations that (strictly speaking) weren’t my problem. I remember one facebook disagreement about going outside of my apartment (at the time) to investigate the sound of a woman in distress. He said he wouldn’t have done that, because why get involved in someone else’s BS when you will not only not be thanked but may in fact get yourself domed in the process. He would say I was “putting on the red boots and cape” to go be superman. I recall we got pretty upset over that one - especially considering how similar we were in our stances on the necessity of fighting evil and protecting the helpless. Brothers get over these kinds of things, and when he passed, I doubt either of us were thinking about this conversation. But it sticks with me when I think about this “why” question.</p>
|
||||
<p>Ultimately, I want to make my community better. Our local community is a vertical slice of our larger society. Our local community inherits things from society, and contributes things back to that society. This relationship works the same way at the individual level: we all receive things from our community, and we give back to that community. Therefore, if we want a better, healthier society, we must first improve ourselves, and then we can give back to others, then the community gets better. If we all do this enough, society as a whole gets better.</p>
|
||||
<p>Ultimately we have to start where we are - we are the people we are, we live in the communities we live in, and we have the skills and talents we have right now. The important thing about this is not waiting. Do what you can where you are right now. I promise you, no matter what you can do, someone around you needs it.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/sAQfzHBpRsc?si=4AvRsfOkJjeLnlzY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>When Hurricane Harvey struck Houston Texas in 2017, I felt compelled to go down and help. There’s a whole lot to that story, but the short version is that I wound up spending the next week driving across the country, living out of my truck with a complete stranger (who became my friend) as we helped distribute food and tear apart flood damaged structures in the suburbs of Houston. After I got back from this event, I wanted to find a way to become directly involved with my local community, with a group that performed direct actions to support individuals in distress. I wound up connecting with Skagit Ground Search and Rescue in Skagit county Washington where I lived.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/gz_qLTU9Y0k?si=xJZ_33AmS5qZ29I0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>It is impossible for me to say just how important my time with GSAR was. I would absolutely not be the person I am today without the time I spent, the friends I made, and the lessons I learned (about myself and others) in Skagit Ground Search and Rescue. I spent 4 years with them, and worked with them through the COVID era. I met several firefighters in SAR - many members were EMTs and career firefighters who volunteered with SAR in their off time. I got to know them, and more about their profession, through SAR. When I had to move away from Skagit back to Georgia, leaving this tribe (and their mission) behind was one of the most difficult things I’ve ever done. I miss them all terribly.</p>
|
||||
<p>When I arrived in Georgia, I immediately wanted to hook up with a search and rescue group. But in central Georgia, along the fall line, the terrain and recreation activities are wildly different than in the Cascade mountains. With rare exception, hikers don’t get injured on trails, hunters don’t get lost in the woods, climbers don’t get stuck, kids don’t wander away from camp and get lost in the wild. There are search and rescue teams down here, but they focus on urban search and rescue, and I wasn’t interested in that. I was pretty upset, thinking that I was not going to be able to find a tribe to serve with down here. </p>
|
||||
<p>That’s when I fell into, quite by accident, the Fort Perry Volunteer Fire Department. They where holding a shotgun shoot fundraiser, and I went to meet other shooters in the area. Several people had expressed very negative opinions of the fire department - “they’ll just show up and watch your house burn” - and that didn’t sound like any of the firefighters I knew from SAR. I wound up talking to Chief Lockhart, asking about what fire does, how it’s funded, what kinds of operations they perform, etc. I discovered that the volunteer fire service is (generally, but specifically in Marion county Georgia) woefully underfunded, understaffed, and poorly equipped. It was immediately apparent to me that this service was in desperate need of help, so I volunteered. The rest is history.</p>
|
||||
<p>If you want to live in a functional community, you need to have functional civil and emergency services. You need government that functions, businesses that provide jobs goods and services, trash trucks that pick up refuse on a schedule, fresh water that flows from the tap, functional sewage systems, police that can respond in force, ambulances that can transport to hospitals, and fire trucks in good repair that can arrive quickly to suppress fire. And all of these services need to be fully staffed. If any part of this breaks down, everything suffers, especially the people.</p>
|
||||
<p>Marion county Georgia is my home. My wife and 3 children live here. My mother in law and her husband live here. Many of my friends live here. If I don’t step up and volunteer, then not only does the community suffer, my family personally suffers, and I suffer individually. Nobody wants their house to burn down, or for their loved one to die because there was nobody around who could perform CPR. That is not the kind of community I want my children to grow up in, let alone inherit. I want to leave them a community full of healthy people who care about each other, with functional emergency services they can rely on.</p>
|
||||
<center>
|
||||
<iframe width="80%" height="315" src="https://www.youtube.com/embed/QageNN-V8rY?si=sLlY1Z4N4BUZnpED" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<p>This is also worth passing on to the next generation. Part of the reason we are in the situation we are in is because the next generation of Americans has less capability and less motivation to volunteer than previous generations. If our community is to have a future, then the next generation needs to be shown that it is worthwhile to volunteer to help them. So I show my children that the need is real, that they can make a difference, and that it’s up to normal everyday people just like them to make that difference.</p>
|
||||
<p>If we don’t teach the next generation the values that we hold dear, then we can not be surprised when those values die out. Our community will soon die out after.</p>
|
||||
<h2 id="I-need-to-shake-hands-with-death-from-time-to-time"><a href="#I-need-to-shake-hands-with-death-from-time-to-time" class="headerlink" title="I need to shake hands with death from time to time"></a>I need to shake hands with death from time to time</h2><blockquote>
|
||||
<p><i>Meditation on inevitable death should be performed daily. Every day when one’s body and mind are at peace, one should meditate upon being ripped apart by arrows, rifles, spears and swords, being carried away by surging waves, being thrown into the midst of a great fire, being struck by lightning, being shaken to death by a great earthquake, falling from thousand-foot cliffs, dying of disease or committing seppuku at the death of one’s master. And every day without fail one should consider himself as dead</p>
|
||||
<p>–Yamamoto Tsunetomo, Samurai</i></p>
|
||||
</blockquote>
|
||||
<p>Rainn Wilson recently did a bang-up job playing a paramedic in the film <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=Np4MAXPz_PM">Code 3</a>. The film is worth a watch. The film ends with Wilson looking into the camera and saying “Besides … The only time I feel alive, is when you’re about to die.”</p>
|
||||
<p>Mostly I’m a peace loving desk jocky that enjoys a simple life and a good ciesta. I’m not an adrenaline junkie. If I was, my full time life would look a lot different. But at the same time, what’s life without some risk? In the fire service, we say <i>“Risk a little to save a little; Risk a lot to save a lot”</i>. When I was in Search and Rescue, we said <i>“These things we do so that others may live”</i>. You have to be comfortable with at least meeting death across the ramparts, if not face to face, to do these things.</p>
|
||||
<p>The level of risk to firefighters has been drastically reduced in recent decades. Advances in equipment, data collection, training improvements, cultural advancements, have all contributed to reduced firefighter fatalities. The most common causes of firefighter mortality are cancer and cardiac arrest. All that being said, we regularly are called upon to enter confined spaces well in excess of five hundred degrees, under total blackout conditions, find the fire, and defeat it before it defeats us. Recruits train in burn buildings that reach 900 degrees farenheit during basement fire attack conditions. We operate chainsaws on rooftops to ventilate smoke while a structure burns beneath us.</p>
|
||||
<p>There is no denying that part of the allure of the fire service is the risk of danger. There is a healthy balance to be found here: having enough respect for the danger to avoid giving too much too soon so that you lose it all, versus being so afraid of it that you don’t give anything and so you gain nothing. Some people are too addicted to it and endanger themselves and others. Part of the function of the tribe is to keep an eye on each other and catch each other before they go over that edge. The other function of the tribe is to encourage the right kind of risk taking, the right level of disregard for your own safety, the right way of judging when to retreat and when to charge ahead.</p>
|
||||
<p>What these kinds of people, and tribes of these people, understand is this: everyone dies. The question is how you are going to meet that end. Will you leave behind unfinished business? Will you go decisively, sure of the righteousness of your course of action? Will you be blessed to go quietly in your sleep? Will you be presented with a life or death situation, where you have the opportunity to make a righteous choice, and shy from the challenge because you are not familiar with death? When you regularly shake hands with death, you don’t fear him so much, and life becomes all that much sweeter.</p>
|
||||
<center>
|
||||
<iframe width="80%" src="https://www.youtube.com/embed/lIPBSk4Di9c?si=RG1ATkgTxmoNnEf9" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
<center><b><i>Love God. Live Righteously. Die Well.</i></b></center>
|
||||
|
||||
<!--
|
||||
-- tags
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts Path
|
||||
No tags.
|
||||
---------------
|
||||
-- categories
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts
|
||||
Books 14
|
||||
Current Events 5
|
||||
Current Events 0
|
||||
Faith 6
|
||||
History 1
|
||||
Leadership 8
|
||||
Liberal Education 1
|
||||
Outdoors 1
|
||||
Philosophy 4
|
||||
Philosophy 0
|
||||
Technology 10
|
||||
technology 0
|
||||
--!>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 18 May 2026 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/02/09/News-2026-Week-5/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">News 2026 Week 5 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Start-with-Why"><span class="toc-text">Start with Why</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#What%E2%80%99s-my-why"><span class="toc-text">What’s my why?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I%E2%80%99m-a-desk-jockey-in-firefighter-clothes"><span class="toc-text">I’m a desk jockey in firefighter clothes</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#This-was-never-in-my-plans"><span class="toc-text">This was never in my plans</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-don%E2%80%99t-want-to-be-like-other-adults-%E2%80%98cause-they%E2%80%99ve-already-died"><span class="toc-text">I don’t want to be like other adults, ‘cause they’ve already died</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#This-comfortable-desk-is-gonna-kill-me"><span class="toc-text">This comfortable desk is gonna kill me</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#It%E2%80%99s-about-the-people-next-to-me"><span class="toc-text">It’s about the people next to me</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-want-to-make-my-community-better"><span class="toc-text">I want to make my community better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-need-to-shake-hands-with-death-from-time-to-time"><span class="toc-text">I need to shake hands with death from time to time</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Start-with-Why"><span class="toc-text">Start with Why</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#What%E2%80%99s-my-why"><span class="toc-text">What’s my why?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I%E2%80%99m-a-desk-jockey-in-firefighter-clothes"><span class="toc-text">I’m a desk jockey in firefighter clothes</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#This-was-never-in-my-plans"><span class="toc-text">This was never in my plans</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-don%E2%80%99t-want-to-be-like-other-adults-%E2%80%98cause-they%E2%80%99ve-already-died"><span class="toc-text">I don’t want to be like other adults, ‘cause they’ve already died</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#This-comfortable-desk-is-gonna-kill-me"><span class="toc-text">This comfortable desk is gonna kill me</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#It%E2%80%99s-about-the-people-next-to-me"><span class="toc-text">It’s about the people next to me</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-want-to-make-my-community-better"><span class="toc-text">I want to make my community better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-need-to-shake-hands-with-death-from-time-to-time"><span class="toc-text">I need to shake hands with death from time to time</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
878
2026/05/15/Devlog-20260518/index.html
Normal file
@@ -0,0 +1,878 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>Devlog Entry - 18 May 2026</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Devlog Entry - 18 May 2026">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/05/15/Devlog-20260518/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-05-15">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#Goodbye-GitHub"><span class="toc-text">Goodbye GitHub</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakerror-improvements"><span class="toc-text">libakerror improvements</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#akgltest"><span class="toc-text">akgltest</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 18 May 2026
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-05-15T22:04:50.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-05-15</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>2k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>I just wanted to drop some notes on things I’ve been hacking on recently.</p>
|
||||
<h1 id="Goodbye-GitHub"><a href="#Goodbye-GitHub" class="headerlink" title="Goodbye GitHub"></a>Goodbye GitHub</h1><p>I’ve become increasingly unhappy with Github for a variety of reasons. For that reason, I’ve moved all of my source code over to <a target="_blank" rel="noopener" href="https://source.starfort.tech/">the Starfort Source Vault</a>. My GitHub will now only host stuff that I do for my corporate job. I’ve also moved my personal website off of GitHub Pages and back in to Starfort’s local infrastructure. This is a control issue: I want to retain full control over my intellectual property and the way my online presence is presented. I’m also not interested in Microsoft scraping all of my source code to train their AI models, so I’m taking my marbles and going home.</p>
|
||||
<h1 id="libakerror-improvements"><a href="#libakerror-improvements" class="headerlink" title="libakerror improvements"></a>libakerror improvements</h1><p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror">libakerror</a> is a safe exception handling library for C. I’m baking it into all of my new projects that I’m writing in C, so it’s getting worked out quite a bit.</p>
|
||||
<ul>
|
||||
<li><p>Began namespacing the library into <code>akerr_</code>. All of the functions, types and global variables are in this namespace, but the macros are not. I’m not sure I like them not being namespaced, but I also don’t want to make them any longer to type. I may wind up leaving the macros.</p>
|
||||
</li>
|
||||
<li><p>I found myself using large <code>ATTEMPT ... FINISH</code> blocks that would <code>CATCH</code> something but never actually do anything with the thing it caught. This was a lot of unnecessary typing. I added a new macro, <code>PASS</code>, that simply passes an error back up through the stack without actually doing anything to it. Saves a lot of typing, and is what I actually want to do probably >80% of the time (in my current projects anyway).</p>
|
||||
</li>
|
||||
</ul>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token function">PREPARE_ERROR</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">some_method_that_returns_errorcontext</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">SUCCEED_RETURN</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<ul>
|
||||
<li>Properly handling functions that don’t SUCCEED properly. Previously there was nothing stopping you from doing this:</li>
|
||||
</ul>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c">akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">func</span><span class="token punctuation">(</span><span class="token keyword">void</span><span class="token punctuation">)</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token function">PREPARE_ERROR</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span>
|
||||
<span class="token comment">// do something </span>
|
||||
<span class="token comment">// don't return (e), OR, return(e) without calling SUCCEED</span>
|
||||
<span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>This results in your function having an undefined (and invalid) pointer return value. When the DETECT() macro (invoked by CATCH(), FAIL_*(), or PASS()) inspected the value of your return function, it would see a non-NULL value, and then go about inspecting the datastructure. Unfortunately, in these careless cases, the pointer was invalid, so BAM segfault.</p>
|
||||
<p>I introduced a new macro, VALID(), that first checks to see if the return value from the function is a valid exception - that’s an easy check, since all exceptions come from the global AKERR_ARRAY_ERROR which contains a known quantity of error objects. By checking to see if the akerr_ErrorContext pointer address is within the range of memory occupied by the array, we can be reasonably certain it is (or is not) a valid error. Invalid error return values get an <code>AKERR_BEHAVIOR</code> error thrown by the library.</p>
|
||||
<ul>
|
||||
<li>Documentation update to reflect the above changes</li>
|
||||
</ul>
|
||||
<h1 id="libakstdlib"><a href="#libakstdlib" class="headerlink" title="libakstdlib"></a>libakstdlib</h1><p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakstdlib">libakstdlib</a> is a libc wrapper that implements <code>libakerror</code> error handling around those functions.</p>
|
||||
<p>I find myself wrapping various libc/stdlib calls in <code>libakerror</code> macros frequently, so I’ve started a libc wrapper that does that for me. It doesn’t have much in it yet, just the functions I use the most:</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c">akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_fopen</span><span class="token punctuation">(</span><span class="token keyword">char</span> <span class="token operator">*</span>pathname<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>mode<span class="token punctuation">,</span> FILE <span class="token operator">*</span><span class="token operator">*</span>fp<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_fread</span><span class="token punctuation">(</span><span class="token keyword">void</span> <span class="token operator">*</span>ptr<span class="token punctuation">,</span> <span class="token class-name">size_t</span> size<span class="token punctuation">,</span> <span class="token class-name">size_t</span> nmemb<span class="token punctuation">,</span> FILE <span class="token operator">*</span>stream<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_fwrite</span><span class="token punctuation">(</span><span class="token keyword">void</span> <span class="token operator">*</span>ptr<span class="token punctuation">,</span> <span class="token class-name">size_t</span> size<span class="token punctuation">,</span> <span class="token class-name">size_t</span> nmemb<span class="token punctuation">,</span> FILE <span class="token operator">*</span>fp<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_fclose</span><span class="token punctuation">(</span>FILE <span class="token operator">*</span>stream<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_malloc</span><span class="token punctuation">(</span><span class="token class-name">size_t</span> size<span class="token punctuation">,</span> <span class="token keyword">void</span> <span class="token operator">*</span><span class="token operator">*</span>dst<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_memset</span><span class="token punctuation">(</span><span class="token keyword">void</span> <span class="token operator">*</span>s<span class="token punctuation">,</span> <span class="token keyword">int</span> c<span class="token punctuation">,</span> <span class="token class-name">size_t</span> n<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_memcpy</span><span class="token punctuation">(</span><span class="token keyword">void</span> <span class="token operator">*</span>d<span class="token punctuation">,</span> <span class="token keyword">void</span> <span class="token operator">*</span>s<span class="token punctuation">,</span> <span class="token class-name">size_t</span> n<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_free</span><span class="token punctuation">(</span><span class="token keyword">void</span> <span class="token operator">*</span>ptr<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_printf</span><span class="token punctuation">(</span><span class="token keyword">int</span> <span class="token operator">*</span>count<span class="token punctuation">,</span> <span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>restrict format<span class="token punctuation">,</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_fprintf</span><span class="token punctuation">(</span><span class="token keyword">int</span> <span class="token operator">*</span>count<span class="token punctuation">,</span> FILE <span class="token operator">*</span>restrict stream<span class="token punctuation">,</span> <span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>restrict format<span class="token punctuation">,</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_sprintf</span><span class="token punctuation">(</span><span class="token keyword">int</span> <span class="token operator">*</span>count<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>restrict str<span class="token punctuation">,</span> <span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>restrict format<span class="token punctuation">,</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_atoi</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>nptr<span class="token punctuation">,</span> <span class="token keyword">int</span> <span class="token operator">*</span>dest<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_atol</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>nptr<span class="token punctuation">,</span> <span class="token keyword">long</span> <span class="token operator">*</span>dest<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_atoll</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>nptr<span class="token punctuation">,</span> <span class="token keyword">long</span> <span class="token keyword">long</span> <span class="token operator">*</span>dest<span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>Most libc functions set <code>errno</code> when they fail (but not all), so most failure operations from these wrappers will throw the value of <code>errno</code> as their exception. I need to explicitly document where these functions throw something else. The functions are pretty easy drop-in replacements for their libc counterparts, with the exception that they no longer return values, they return error state. So you have to pass additional pointer arguments for them to place their outputs.</p>
|
||||
<pre class="line-numbers language-none"><code class="language-none">FILE *fp = NULL;
|
||||
char membuf[512];
|
||||
PREPARE_ERROR(e);
|
||||
PASS(e, fopen("somefile.txt", "rb", &fp);
|
||||
PASS(e, fread((void *)&membuf, 1, 512, fp));
|
||||
SUCCEED_RETURN(e);<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<h1 id="libakgl"><a href="#libakgl" class="headerlink" title="libakgl"></a>libakgl</h1><p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakgl">libakgl</a> is an SDL3 game programming library.</p>
|
||||
<p>With the release of SDL version 3 last year, I’ve started working on a new (?) C game library (not an engine) built around SDL3 as a fun side project.</p>
|
||||
<p>I say “new” in quotes because it is very much a spiritual successor to <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libsdlgame">a defunct SDL2 game library I wrote over a decade ago</a>. That engine was largely an ode to (and a grieving process for) the Adobe Flash player as a game platform. The terminology I used there was heavily influenced by Flash, and that terminology lives on in the new <code>libakgl</code>. However <code>libakgl</code> is C++ and used a lot of standard template library types and operations, very closely mimicking the code flow from ActionScript; <code>libakgl</code> is pure C and therefore looks and flows a bit different. Regardless, my work on this library really represents a rebellion against complexity and vendor lock-in.</p>
|
||||
<p>First, in my day job, I spend a ton of time working with infinite layers of complexity in the DevSecOps space without ever actually touching much real code at all. There’s barely even a computer involved - it’s more like I work with several dozen <em>abstractions</em> of a computer. </p>
|
||||
<p>Second, in the game space, everything has moved towards complex game engines using higher level languages to accomplish anything. Tools like Unity or Unreal Engine, even open source tools like Godot or Phaser, I personally find that they <em>feel</em> too complex. Given that my fondest game dev memories are from the Flash/ActionScript days, I do wonder a little bit about this feeling - in terms of user experience, tools like GameMaker or Phaser are much closer to Flash than <code>libakgl</code>. But they all require me to learn their interface, their quirks, and to confine whatever idea I have into their box. Maybe complexity is the wrong word, but when I look at the majority of modern engines, I wind up thinking, “I don’t want to deal with all that complexity”.</p>
|
||||
<p>Third, this library is 100% pure C (I’ve <em>tried</em> to keep it C99, but I make no promises, and there are some GNU-isms in there that may not work right outside of GCC). Writing the old <code>libsdlgame</code> in C++ was fun, the STL felt like it was making things faster, but it eventually became a total shitshow. I’m sure some of that was my own fault, but some of it was because the STL is notoriously slow. Then there’s the fact that I was doing tons and tons of dynamic memory management in the old version - there are all kinds of dangers associated with that. There were also many pitfalls in the extensive usage of C++’s object oriented model. Here’s a great example from the old codebase that probably says more about my skill as a programmer at that time than it does about the pitfalls of C++’s object oriented model :</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token comment">// THE PROJECTILE/CHARACTER SUBCLASSING IS FUCKED. THE ORDER OF THE 'damage' ELEMENT AND OTHER </span>
|
||||
<span class="token comment">// ITEMS CAUSES UNEXPECTED RESULTS AS ITEMS SUCH AS PROJECTILES ARE TYPECAST AS A (Character *)</span>
|
||||
<span class="token comment">// AND PASSED AROUND THRU COLLISION FUNCTIONS. CHANGE THE ORDER THAT THE 'damage' ELEMENT IS DEFINED</span>
|
||||
<span class="token comment">// IN THE CHARACTER CLASS AND YOU'LL SEE THE LASERS START DOING WIERD SHIT AS A RESULT.</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>… so in this version of the library, we are abandoning as much complexity as possible. Specifically:</p>
|
||||
<ol>
|
||||
<li>No dynamic memory allocation. Everything comes from static arrays of objects defined at compile time. SDL still performs some dynamic memory allocation, but that will be converted to use a custom arena memory allocator.</li>
|
||||
<li>Everything is a fatty struct (in the style of the old Quake games, and with a nod to <a target="_blank" rel="noopener" href="https://computerenhance.com/">Casey Muratori</a>)</li>
|
||||
<li>Entity behavior can be controlled through setting function pointers on the fatty structs, but there is no inheritance, RTTI or dynamic dispatch</li>
|
||||
</ol>
|
||||
<p>Last, I’m building this library because I don’t like being locked in to any particular engine. Godot, Unreal, Unity, GameMaker, RPG Maker, they’re all fine tools. But they all have their own ecosystems, their own expectations, and their own hard limits. Sometimes I might need to change engines to execute one idea versus another one. By just rolling my own library, I gain lots of flexibility. And it’s all my code, so I have nobody to blame but myself when something breaks - and I also own 100% of the opportunity to make it better.</p>
|
||||
<p>Last, I’m building this project with cmake, as opposed to the Makefiles I’m so used to. I find that cmake is actually making it really easy to string projects together as dependencies - for example I have a test program for this library which is able to use git submodules to keep all its dependencies together in a monorepo, and cmake does a great job of building and linking everything, without me having to keep track of versions installed on my system.</p>
|
||||
<p>Right now the library can:</p>
|
||||
<ul>
|
||||
<li>Load and animate sprites from JSON files describing a spritesheet reference and how to extract frames from the spritesheet</li>
|
||||
<li>Load characters from JSON files that describe a collection of sprites that map to a given set of state flags (for example “use sprite ‘walking left’ when actor has state ‘ACTOR_STATE_MOVELEFT’)</li>
|
||||
<li>Create actors on the stage, assign them a character, and ensure the correct sprite is shown animating for the correct state</li>
|
||||
<li>Load and display orthogonal tilemaps (as exported by <a target="_blank" rel="noopener" href="https://www.mapeditor.org/">Tiled</a>). This includes:<ul>
|
||||
<li>Image layers</li>
|
||||
<li>Object layers<ul>
|
||||
<li>Object layers can spawn actors at a given point on the map, each being displayed with a given character and starting with a given state</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Tile layers<ul>
|
||||
<li>Actors have a layer ID on the screen, so actors can be drawn between tile layers for depth</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Manage input from the keyboard or gamepads<ul>
|
||||
<li>Control maps connect a given Actor object to a given C function via a given SDL input event</li>
|
||||
<li>Multiple control maps can be defined, so that you can easily swap out control schemes (for example use different control schemes for your menu screen, your inventory screen, and your main gameplay screen)</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Some of the library has unit tests, which is nice, but it’s hard to conceptualize how to test some of what it does. That might just be me being lazy.</p>
|
||||
<p>There’s a lot more to be done (see <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakgl/src/branch/main/TODO.txt">the TODO file</a> for my current shortlist of deliverables), but it’s a fun project. I’ll probably start making real things with it soon.</p>
|
||||
<h1 id="akgltest"><a href="#akgltest" class="headerlink" title="akgltest"></a>akgltest</h1><p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/akgl-test">akgl-test</a> is just a testbed for libakgl. It illustrates:</p>
|
||||
<ul>
|
||||
<li>Loading assets<ul>
|
||||
<li>Sprites from JSON</li>
|
||||
<li>Characters from JSON</li>
|
||||
<li>Tilemaps</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Setting up control maps<ul>
|
||||
<li>ESC sends you back to the main menu</li>
|
||||
<li>M toggles music</li>
|
||||
<li>UP moves a character up the screen with a walking animation</li>
|
||||
<li>DOWN moves a character down the screen with a walking animation</li>
|
||||
<li>LEFT moves a character to the left with a walking animation</li>
|
||||
<li>RIGHT moves a character to the right with a walking animation</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Changing through various game states (a loading screen, menu screen, and gameplay)</li>
|
||||
<li>Loading and changing tilemaps<ul>
|
||||
<li>Creating actors on the screen based off the tilemap</li>
|
||||
<li>Using forced perspective on an image map to create the illusion of depth when using 2D sprites on a prerendered 3D background image</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Once I get collision detection working in <code>libakgl</code> I’ll start producing small games with it. I think I’ll start with a breakout clone.</p>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/05/30/Devlog-20260530/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 30 May 2026 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/02/23/Why-Firefighting/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Why Firefighting </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#Goodbye-GitHub"><span class="toc-text">Goodbye GitHub</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakerror-improvements"><span class="toc-text">libakerror improvements</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#akgltest"><span class="toc-text">akgltest</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#Goodbye-GitHub"><span class="toc-text">Goodbye GitHub</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakerror-improvements"><span class="toc-text">libakerror improvements</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#akgltest"><span class="toc-text">akgltest</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
788
2026/05/21/News-2026-Week-2/index.html
Normal file
@@ -0,0 +1,788 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>News-2026-Week-2</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="News-2026-Week-2">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/05/21/News-2026-Week-2/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-05-21">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-05-21">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">5</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">5</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
News-2026-Week-2
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-05-21T13:33:44.733Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-05-21</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current Events
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>5.2k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Here are my thoughts on news across the internet this week. We touch on rent denialism, collapsing job markets, corporate productivity theater, and the many ways AI is being oversold, misused, or shoved where it doesn’t belong. Along the way I rant about enshittification, ownership (of code, hardware, and ideas), bad APIs, worse management, the slow death of the old internet, and why UNIX got it right decades ago. It’s part news roundup, part cultural autopsy, part theological and philosophical musing — ending, as usual, with a reminder to ignore the noise, give your attention to what you love, and keep your eyes on God and the horizon. It’s worth what you paid for it.</p>
|
||||
<h2 id="The-Rent-Is-Too-Damn-High"><a href="#The-Rent-Is-Too-Damn-High" class="headerlink" title="The Rent Is Too Damn High"></a>The Rent Is Too Damn High</h2><p><a target="_blank" rel="noopener" href="https://www.jefftk.com/p/rents-are-high-but-not-skyrocketing">Jeff TK has made a valiant attempt</a> to allay our fears that rents are not skyrocketing. I do love a pretty colored graph showing facts on an axis. However, the problem I have with his article is that the nice flat graphs don’t go far enough to the left. His values begin in 2014, and by 2014, we already knew the rent was too damn high. <a target="_blank" rel="noopener" href="https://knowyourmeme.com/memes/the-rent-is-too-damn-high-jimmy-mcmillan">Jimmy McMillan was a meme in 2010</a>. Of course the graph shows stagnation if you look at it from 2014. There are <a target="_blank" rel="noopener" href="https://www.huduser.gov/portal/datasets/fmr.html?utm_source=chatgpt.com#history">plenty</a> of <a target="_blank" rel="noopener" href="https://www.census.gov/data/tables/time-series/dec/coh-grossrents.html">data sources</a> that will <a target="_blank" rel="noopener" href="https://www.zillow.com/research/data/">provide</a> a <a target="_blank" rel="noopener" href="https://usa.ipums.org/usa-action/variables/190639#source_variables_section">more accurate</a> picture of what’s going on. The rent is, indeed, too damn high, and has, indeed, skyrocketed. However I suppose I will concede to TK that the skyrocket has stalled - for the moment.</p>
|
||||
<h2 id="Jobs-and-Corporate"><a href="#Jobs-and-Corporate" class="headerlink" title="Jobs and Corporate"></a>Jobs and Corporate</h2><p>Amazon is now requiring its employees to list <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-corporate-employees-performance-reviews-accomplish-last-year-2026-1">three to five distinct accomplishments</a> from the past year in their new performance review process. Measuring employee productivity is actually really difficult, and you can tell a lot about a company’s current state by how they measure it. This kind of measuring stick is a strong indicator that the cuts are about to go deeper; don’t expect the layoffs to quit in 2026.</p>
|
||||
<p>Unfortunately, <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-modern-job-hunt-a-side-quest">the situation for job hunters is terrible, and not getting better</a>. If you find yourself looking for work, keep yourself open to new specializations within your field, or even new fields entirely. Being choosy in this economy is not a beneficial trait if you have bills to pay and mouths to feed. My own job search a couple of years ago - when the situation was actually a little better than now - saw me fire off almost 400 applications in the span of 1.5 months, with only 4 interview prospects. <a target="_blank" rel="noopener" href="http://jobquest.aklabs.net/">Here is a totally accurate simulation of the current job hunting experience</a>.</p>
|
||||
<p>Meanwhile, a new project has attempted to <a target="_blank" rel="noopener" href="https://www.remotelabor.ai/?itid=lk_inline_enhanced-template">measure the actual effectiveness of AI agents at performing several types of remote work</a>, and found that the LLMs were only able to independently complete work about 2.5% of the time. This is a positively abysmal measurement that proves that AI simply can not be left to do work alone. It doesn’t mean that AI won’t take <em>some</em> jobs, it just means that AI will still need at least one or more people to constantly look over its shoulder to ensure the work is getting done. Now, before the middle managers in my audience get excited, I must point out that those supervising the AI must actually be competent in the job the AI is doing, so that errors can be detected and corrected. And frankly both AI and many managers have this in common: a lack of basic competency in the job they are performing or supervising. So line jobs in these types of projects are probably safe for a while - although you will probably be forced to do the job with your ass in a corporate seat, rather than at home.</p>
|
||||
<p>Speaking of asses in corporate seats working for incompetent management, <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-flags-employees-rto-office-2026-1">Amazon has rolled out a new tool to help measure employee productivity</a>: this one measures the amount of time your ass spends in a seat. The tool will tell managers how long you spend badged into the building. (For those who don’t know, most companies now have digital door control systems that an employee accesses with a badge, so the company knows when you come and when you go.) The system will assist managers in making decisions by flagging employees that have low hours (4 hours or less in per day) and no hours (zero). As I said, measuring performance is a tricky business, and one of the oldest standby methods is to simply measure how much time your ass is in a seat. It’s called attendee-ism, it’s a garbage measurement used by dinosaurs and those interested in justifying their massive commercial real estate investments. It’s also alive and well in our biggest and supposedly smartest companies. Huzzah.</p>
|
||||
<h2 id="The-AI-Slop-Trough"><a href="#The-AI-Slop-Trough" class="headerlink" title="The AI Slop Trough"></a>The AI Slop Trough</h2><p>The good news is that while your ass is in a seat at your wage-slave job, <a target="_blank" rel="noopener" href="https://www.axios.com/2026/01/08/microsoft-ai-copilot-checkout">you can still get your shopping done by talking to Copilot and letting it buy things for you</a>. Just give the AI access to your financial accounts bro, it’s cool. <a target="_blank" rel="noopener" href="https://www.youtube.com/shorts/ar1iweInzc0">This will be a great way to get all the useless shit you don’t need</a>.</p>
|
||||
<p>Speaking of AI doing things it really shouldn’t, <a target="_blank" rel="noopener" href="https://www.msn.com/en-us/technology/software/a-new-approach-to-living-a-good-life-comes-from-a-most-unlikely-place/ar-AA1TSu0Q">the Workshop for Emotional and Spiritual Technology Corporation (West Co) is testing a platform called Tingle</a>, a social media platform that hopes to help users build more meaningful lives - by having users interact with smart devices to ask AI how to build more meaningful lives. A <a target="_blank" rel="noopener" href="https://tech.slashdot.org/comments.pl?sid=23889512&cid=65915338">Slashdot user</a> put it perfectly: “AI, which is incapable of deriving meaning or even determining relevance, is going to tell us humans how to build purposeful life. This is peak idiocy.” </p>
|
||||
<p>Turning away from how we’re using AI to continue to lose our humanity, and instead focusing on how we’re using it to try and lose more of our own skill and capacity by asking it to do work that we can (and probably should) do ourselves. <a target="_blank" rel="noopener" href="https://thenewstack.io/beyond-python-why-llms-need-more-stable-open-source-code/">An article on The New Stack recently posited</a> that AIs show a preference for certain languages in certain arenas, and that this is a problem for a variety of reasons. Namely “my LLM can’t generate the code for prompt X in language Y”, because for whatever reason language Y is the choice du-joure for this task. I don’t know why anyone is surprised by this habit of LLMs. AIs are trained on the stuff we say and the choices we make, specifically what’s published in the public domain (although not exclusively the public domain, as many trainers have unscrupulously stolen materials they should not have used for training purposes). Regardless, they are essentially reproducing what they have seen elsewhere (<em>cough</em> stack overflow <em>cough</em>). Why are we at all surprised by the language choices made by an LLM when they so clearly resemble what humans have been telling other humans to choose?</p>
|
||||
<p>Speaking of LLMs consuming things they shouldn’t, <a target="_blank" rel="noopener" href="https://www.seroundtable.com/tailwind-css-google-drop-40725.html">we need a stronger robots.text standard that lets content creators control how LLMs and AI agents can reproduce or use their content</a>. If Tailscale had been able to say things like “you can only use this content if you clearly advertise the source and include this blurb or link to this site or with this overlay”, then maybe they wouldn’t have had to fire 75% of their staff when AI began parroting their documentation, taking human eyes away from where their commercial option was advertised, effectively nuking a large part of their business model. This isn’t about sticking your head in the sand in an AI world, it’s about software authors having enough respect for each other to make their software honor the boundaries put up by humans. We do live in a society, after all.</p>
|
||||
<p>Our society needs to make some long term plans around AI anyway, especially around the usage of AI for code, and the code generated by that AI. <a target="_blank" rel="noopener" href="https://arxiv.org/html/2511.04427v2#S6">A Carnegie-Melon study on the impact of Cursor usage in software products</a> shows that while there are indeed short term bursts from the usage of these tools, they are likely to generate a lot more long term headache. As I mentioned, part of what happens when we turn to AI to solve our problems for us (whether those problems are in our relationships or our codebase), assuming that the solution works, we immediately begin to suffer atrophy in the skills we should have used to solve those problems. Because of that we are less able to spot quality problems in the output of the AI. And when we have to maintain that work (“though a program be but three lines long, some day it will have to be maintained” –<a target="_blank" rel="noopener" href="https://www.mit.edu/~xela/tao.html">Tao of Programming</a>, Book 5), we often find that we can’t maintain it very well (if at all) because we aren’t able to fall back on our original knowledge we used to solve the problem, because we didn’t solve it! All of this might sound like your middle school math teacher saying “you won’t always have a calculator in your pocket!”, but for at least the foreseeable horizon, this is the reality of the situation, and we mustn’t approach it blindly, lest we pass those headaches on to our successors (or our children).</p>
|
||||
<p>I recently posited the hilarity and terror of moving away from well defined to APIs towards AIs simply talking to each other and “having at it”, but it did highlight a real problem: most of our API specs suck anyway, and an AI may very likely do just as good a job of consuming your broken API spec as a human would. <a target="_blank" rel="noopener" href="https://thenewstack.io/why-most-apis-fail-in-ai-systems-and-how-to-fix-it/">The New Stack recently ran an article about why your API sucks and why an AI can’t effectively consume it</a>, and I largely agree with it. However it’s worth pointing out that the problems in this article apply to AIs and humans equally - if your API spec sucks, your docs suck, your examples don’t reflect real usage, then humans are going to suffer with your software too. The difference is that humans are used to suffering through poor specs and “figuring it out”, while AI is more likely to do <em>strange</em> things with poor assumptions based off your code, and we’re likely to give that AI more leash than it deserves to do <em>possibly bad</em> things with those <em>strange</em> interpretations of <em>your crappy API</em>. So, whether you’re working for humans or AI, do us all a favor: <strong>stop writing crappy APIs with crappy docs</strong></p>
|
||||
<p>But following on the ideas of “AIs are trained on what is well published” and “simple well defined interfaces are best”, once again, <a target="_blank" rel="noopener" href="https://thenewstack.io/the-key-to-agentic-success-let-unix-bash-lead-the-way/">UNIX solved this problem 50 years ago</a>. Some folks are finding that the best way to let agents solve many problems is, instead of giving them lots of custom skills and tools, simply given them a bash terminal and let them get to work. Most unix/linux/gnu command line programs follow <a href="en.wikipedia.org/wiki/Unix_philosophy">the UNIX design philosophy</a> and thus have pretty good documentation, they tend to do one thing and do it well, and they tend to operate on plain text passing in and out through pipes, making it easy to chain those programs together to do new things. This basic interface and pattern hasn’t really changed for 50 years, and we’ve got a ton of well published documentation on using these tools for all kinds of black magic, and LLMs have been trained on all of it. I kind of love it.</p>
|
||||
<p>Meanwhile, regardless of the specific ways your AI is implemented, <a target="_blank" rel="noopener" href="https://thenewstack.io/open-source-retrieval-infrastructure-can-fix-ais-production-gap/">a New Stack article captures some of the real problems your enterprise is likely to face</a> - things like observability and auditability. What documents in the knowledge base are being used, which sections, what questions lead to which answers, what answers were used to drive which automated decisions, etc. But the article doesn’t really put forward a good solution to the problem, instead it seems to be proposing that retrieval augmented generation is the solution. Maybe you can get something from it, but I don’t really see an answer here, beyond “we need to figure out answers to these problems”.</p>
|
||||
<p>Speaking of understanding why certain decisions were made, <a target="_blank" rel="noopener" href="https://perrotta.dev/2026/01/adrs-and-llms/">Thiago Perotta’s hot take is that the Architecture Decision Record is a key component of an LLM driven codebase</a>. ADRs are fine by themselves I suppose, and LLM coding agents definitely do benefit from the added context given by a set of ADRs. But the problem with ADRs that I’ve personally seen is that there is often not a clear link between “this piece of shit code I’m having to fix” and the ADR that introduced the architectural pattern that caused the shit code to be written. So the reasoning isn’t discovered until someone fixes the shit, proposes a merge request, and the architect (in all their glory) weighs in to the merge request explaining why this is bad because “this ADR explains this and didn’t you read it?”. (I may just have a bad history with architects.) Maybe integrating LLMs and ADRs can resolve that gap by linking specific ADRs to specific comments with some kind of metadata that links the implementation to the architectural decisions that lead to the implementation choices. That may be a beneficial thing to adopt. However Thiago takes the brakes off the AI, saying “nowadays your LLM agent can draft ADRs for you”. Soon we will have LLMs making decisions, justifying those decisions, writing ADRs about those decisions, using those ADRs to justify future decisions, and the human will just stand there slack-jawed watching it all happen. The AI has investigate its code, and has found justification from its ADRs, and thereby has found that the AI has done nothing wrong; the AI will push to prod now.</p>
|
||||
<h2 id="General-Technology-and-Dev"><a href="#General-Technology-and-Dev" class="headerlink" title="General Technology and Dev"></a>General Technology and Dev</h2><p>Turning away now from AI, but remaining in the realm of technology and code, <a target="_blank" rel="noopener" href="https://linux.slashdot.org/story/26/01/11/1926219/gentoo-linux-plans-migration-from-github-over-attempts-to-force-copilot-usage-for-our-repositories?utm_source=rss1.0mainlinkanon&utm_medium=feed">Gentoo reminds us that there is no free lunch and that you should probably host your own code</a>. If you weren’t aware, GitHub is essentially forcing Microsoft Copilot on everyone, because of course they are. Copilot can’t help you unless it trains itself on your codebase. And copilot will be improved for others by what it learns from you. So Microsoft is essentially building their product, which they will sell to others, by including your code, without attribution. This is obviously a problem. Remember kids - if the service you are using is free, then YOU, or what YOU are hosting, are the product. Someone is benefiting from hosting your code. I personally use gitea to hold my code at home, and anything I want to publish to the internet, is done with a github mirror - my gitea is the source of authority, not github. You should own your stuff, and you should own the distribution channels for it, where possible.</p>
|
||||
<p>Speaking of code, owning code, writing code, and reviewing code, <a target="_blank" rel="noopener" href="https://tidyfirst.substack.com/p/party-of-one-for-code-review">the code review process as we know it is really terrible</a>. Kent Beck makes the point that, when code review was first proposed from IBM, “Hardly anyone actually did it. Too much work. Too tedious.” Honestly the situation today is much the same. He concludes with the idea that “I’d rather be pairing. […] That’s less satisfying. It’s also where I’m at. […] I’m still figuring out what to do about it.” This mirrors my own experience and preferences. You write a change, send it to a teammate for a peer review, and one of three things happens: <code>1)</code> you wait forever for a detailed high quality review that will undoubtedly result in a bunch of proposed changes that are legitimate but that are outside of your timeline and will piss you off, <code>2)</code> you wait forever and the damn code never gets reviewed at all so you can’t ship, or <code>3)</code> you get a really fast turnaround with a rubber stamp approval that means nothing and was just a waste of time checking a box. Pairing is a much better answer, in my experience - talking through it with someone, working on the code together, you get better feedback in a lower span of time and you ship faster because they’re ready to approve once you’re done. And chances are you’re doing the same for them while you’re working, so you are probably shipping two features faster, rather than just one. <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=8wUOUmeulNs">Really advanced teams will move past pair programming all the way into spooning</a>, but even that may not prevent <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-review">the Jimbo effect</a>.</p>
|
||||
<p>Anyway - back on ownership, not just of code, but you should own everything you buy, as well. That seems like an obvious statement but because of the ongoing <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Enshittification">enshittification</a> of everything, <a target="_blank" rel="noopener" href="https://www.eff.org/deeplinks/2016/12/john-deere-really-doesnt-want-you-own-tractor">you don’t own what you buy</a>. And if you try to reverse engineer the thing that you bought so that you can actually use the thing you bought for the thing you want to use it for, <a target="_blank" rel="noopener" href="https://ttconsultants.com/understanding-reverse-engineering-and-the-infringement-law/">you may be committing a crime</a>. Cory Doctorow, blogging from his hot air balloon high above international waters, <a target="_blank" rel="noopener" href="https://www.theguardian.com/commentisfree/2026/jan/10/trump-beginning-of-end-enshittification-make-tech-good-again">recommended in a Guardian article</a> that some countries may be well positioned to repeal certain laws from their books that make such activities illegal, which he argues (and I agree) will help put an end to enshittification. The problem I have with his take is that you don’t have to ask for permission to reverse engineer something. You can just do it. The suits are always going to complain about you doing it - <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We explore… and you call us criminals.”</a> - but you can just take things apart, figure out how they work, and put them back together in a new way. I suppose it matters more when you’re talking about two nations dealing with each other, certain amounts of agreements must be honored, otherwise it might come to armies with guns having at each other. But what’s stopping individuals from doing this, and then just publishing the results, and now oh wait this state actor can benefit from it, and now the enshittification blockade has been broken because now the cat is out of the bag. Hackers used to do shit. When did we stop? </p>
|
||||
<p>Also, I’m so sick and tired of enshittification being presented as a uniquely American phenomenon. This is not a uniquely American phenomenon. Cory, if you’re listening, you’re wrong about this part: enshittification is a capitalist phenomenon, and is not a product of American culture. We are simply the unfortunate culture where the capitalists began their strip mining of the human experience. Please stop blaming this shit on us, Cory, and blame the real problem, being out of control greedy capitalists that don’t take answers from We The People anymore.</p>
|
||||
<p>Speaking of Cory and his insistence that the solution must be post-American, and the legal implications thereof, <a target="_blank" rel="noopener" href="https://yro.slashdot.org/story/26/01/10/054252/more-us-states-are-preparing-age-verification-laws-for-app-stores?utm_source=rss1.0mainlinkanon&utm_medium=feed">a Slashdot post aggregates a few things talking about US app stores rolling out age verification as a gateway to entry</a>. This is part of what Cory Doctorow is talking about when he says the American internet. Law only applies so far as ownership allows for enforcement: you can’t enforce the rights of a property owner on a house you don’t own. And right now America owns most of the physical infrastructure providing the internet. So the more infrastructure a given legal entity owns (certainly for nation states), the more autonomy they can exercise in the operation of that portion of the internet. Once that physical ownership changes, legal force changes, and the services operating on that internet have to behave differently. So eventually we are going to see nation level divisions of the internet where systems must function differently to comply with the laws in those nations. Folks like Cory will see this as a a win, and to be fair, it is a win in some regards. However, it’s also a wild regression : <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We exist without skin color, without nationality, without religious bias… and you call us criminals.”</a> There are some of us out here that remember a time when, and still prefer to pretend that, the Internet is its own place. It transcends national boundaries. It is its own place with its own culture and its own rules. Unfortunately, while the infrastructure that built that internet is still around, the idea of that internet is just a ghost now. I really hope it comes back. But I think I know better. Still … <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=HrJSDrHpPUk">it’s fun to dream</a></p>
|
||||
<p>Speaking of things we buy but don’t own and cannot control, <a target="_blank" rel="noopener" href="https://www.macrumors.com/2026/01/08/ios-26-shows-unusually-slow-adoption/">Apple is lamenting the slow adoption rate of iOS 26</a>. These people have the nerve to be surprised. We are tired of and exhausted by constantly having to accept updates on devices we don’t actually own, disrupting our user experience with features we didn’t ask for that don’t actually benefit our lives. Stop sending us shit we didn’t ask for and don’t need. Half of the time your update breaks something we like. This is not a problem unique to Apple, it’s a general problem with internet attached devices. The constant stream of updates is exhausting and frustrating. Maybe we just want to use our device as it is, as we bought it, without interference. Piss off.</p>
|
||||
<p>Then again, sometimes there are cool ideas and we react unfairly. <a target="_blank" rel="noopener" href="https://slashdot.org/story/26/01/08/145236/lego-says-smart-brick-wont-replace-traditional-play-after-ces-backlash?utm_source=rss1.0mainlinkanon&utm_medium=feed">I personally think LEGO Smart Blocks were a neat idea</a>. Obviously, not everyone shares that idea. NIMLB - Not In My Lego Box!</p>
|
||||
<p>But you know what they say - if it ain’t broke, don’t fix it. Craigslist, which <a target="_blank" rel="noopener" href="https://arstechnica.com/culture/2026/01/ungentrified-craigslist-may-be-the-last-real-place-on-the-internet/">Ars Technica recently called “The Last Real Place on the Internet”</a>, has survived almost in spite of itself into the new internet. <a target="_blank" rel="noopener" href="https://tech.slashdot.org/story/26/01/09/1618243/craigslist-at-30-no-algorithms-no-ads-no-problemutm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion on the article</a> highlights the dichotomy: it does what it should, hasn’t chased trends, provides the services it intends to, and stays out of politics, while it is literally an advertising site, which is so much of what is wrong about the modern internet. But at the same time, while the interface is the same, and while it is still alive, those of us who remember the early internet will know that Craigslist is a shadow of its former self. Some people will say that’s because you can no longer buy sex there, but I think it’s deeper than that. I don’t know if Craigslist will survive the eventual internet die-off of millenials, and part of me is really sad about that.</p>
|
||||
<p>I came across a <a target="_blank" rel="noopener" href="https://dockhand.pro/">new tool for managing Docker deployments on your small lab called Dockhand</a> recently. A <a target="_blank" rel="noopener" href="https://thenewstack.io/free-dockhand-tool-simplifies-docker-container-management/">New Stack article</a> gives an overview of the tool, but I don’t believe it mentions the pricing on the tool, I believe it gave the impression it is a free tool, but it’s been a few days since the article. Dockhand seems neat, the interface reminds me of the docker UI on my Synology DSM NAS, which I honestly find really handy for quickly spinning things up. I’m not clear how well it can manage a fleet of hosts, or if it’s just the one host you can manage. While reading about it, I thought “… why not just use kubernetes?”, because it seems to solve such a similar problem, that is already well solved by Kubernetes. Then I realized, well it’s obvious why not, and I know this because I work with kubernetes every day: the interface for kubernetes is pretty shit! That’s like looking at a user rejoicing over their new DOS system, happily running programs, and saying “why not just write your boot loader in assembly?”. Why would you inflict the pain of that complexity on someone who obviously doesn’t need it? STFU nerd, the normies are having fun (and, apparently, paying for it).</p>
|
||||
<p>Speaking of nerds and normies, I kinda get mad when my wife calls me “normal”, because … well … I don’t feel normal. But regardless, when comparing myself to my wife and daughters, I have to accept that I am basically normal. Every once in a while writing software I get reminded of this. When I was working with <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/devinbangsund/">Devin</a> at Nintendo, I was working on a web dashboard for a tool, and was explaining how easy it was to tell which things were passing and failing. “The passed tests are in red, the failed ones are in green.” I forget exactly what he said - Devin has a way of witty deadpan delivery that ensures you get the point, even if you don’t remember the words - but he made the point that he was red/green colorblind. I’d been in the industry for probably 10 years at that point, and had never confronted UI design for a colorblind person. It’s definitely not the first time I’d used the red/green color combination. So as a “normal” person I do a lot of things that probably either alienate some from my software, and may actually outright harm people sometimes. Generally speaking, we normies don’t do it on purpose, we just don’t know better. But <a target="_blank" rel="noopener" href="https://www.ragman.net/musings/copypasta/">ragman recently put out a really interesting article</a> musing on how difficult it is to make a website accessible for neurodivergent people when you use emojis, gifs, colors, etc. There’s a lot in there about accessible webdev in general. Luckily my website has basically two colors - black and white - and usually only uses still images in the few places it does use images. But it was an eye opening article.</p>
|
||||
<h2 id="Nature-and-Nature’s-God"><a href="#Nature-and-Nature’s-God" class="headerlink" title="Nature and Nature’s God"></a>Nature and Nature’s God</h2><p>Pivoting away from code towards the intersection of technology and nature, <a target="_blank" rel="noopener" href="https://www.theregister.com/2026/01/08/camouflage_tech_mimics_octopus/">researchers at Stanford have produced a synthetic camouflage material that acts like octopus skin</a>. It’s often been said that any sufficiently advanced technology is effectively indistinguishable from an equally reliable/predictable form of magic. Compare to this material to cloaks of elvenkind. Combine this with thermoptic camouflage that can hide soldiers (or anyone) from thermal imagers and we are well on our way to being in a Predator movie.</p>
|
||||
<p>It doesn’t do much to protect you from smell though. The dogs will still find you. Dogs are amazing creatures, and I’m firmly convinced we humans do not deserve them. <a target="_blank" rel="noopener" href="https://science.slashdot.org/story/26/01/08/2249216/some-super-smart-dogs-can-learn-new-words-just-by-eavesdropping?utm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion highlights an NPR quote</a> that shows Dogs can learn new words just by overhearing their favorite human saying them, even if the dog is not the target of the verbal action, and they don’t need to hear them a whole lot to understand. At the same time, not every dog can do this apparently, but the researchers imply that this points to some sort of inter-species shared social understanding that predates language and that is shared by many species. First, I think this shows that animals will only continue to impress us by how smart they are, and our assumptions about our special nature as the only “intelligent animal” will eventually be shattered. Second, I think it points to a truth that is already held in scripture: before the fall of mankind through sin, introducing the fallen state into the world, we existed in such harmony with the rest of God’s creation that we actually communicated with each other effectively. The book of Jubilees states this plainly: “And on that day the mouths of all the animals, the cattle, the birds, everything that walks and everything that moves about were made incapable of speaking because all of them used to converse with one another in one language and one tongue”.. But it’s apocryphal, so protestants outright reject it, and it’s not generally used for teaching in the high liturgy churches. But I’m convinced of it, and that’s part of why Christ tells us to preach the gospel to all creation (Mark 16:15), literally every creature - because the Good News of Christ is not just of saving mankind from sin, but of putting the entire order of Creation back right, such that we will once again be back in alignment with the rest of creation. The wolf shall lie down with the lamb. “Was I a good boy?”, he’ll ask us, and we’ll say, “you were the best”.</p>
|
||||
<p>Speaking of the wonder and majesty of God’s creation, <a target="_blank" rel="noopener" href="https://phys.org/news/2026-01-nature-good-math.html">a project at Sandia National Lab</a> shows that by using computer architecture more inspired by the architecture of our brain, the computer becomes “shockingly good” at math. The more I learn about science and engineering, the more in awe I am of the master builder who made me. This is a shared sentiment with many experienced scientists - Alan Perlis once famously quipped <a target="_blank" rel="noopener" href="https://www.cs.yale.edu/homes/perlis-alan/quotes.html">“A year spent in artificial intelligence is enough to make one believe in God.”</a>. (And a year of trying to get work done with ChatGPT is enough to make one understand why God is so constantly frustrated with us, and to appreciate His infinite patience with us.)</p>
|
||||
<h2 id="Ennui-and-Hope-Read-some-books"><a href="#Ennui-and-Hope-Read-some-books" class="headerlink" title="Ennui and Hope : Read some books"></a>Ennui and Hope : Read some books</h2><p>One of my favorite books in the Bible is Ecclesiastes. In Ecclesiastes, Solomon muses, there is nothing new under the sun. As a technologist, especially one who remembers the early days of the internet and personal computing, we may be left to wonder <a target="_blank" rel="noopener" href="https://ldstephens.net/blog/on-what-more-to-do/">(as LD Stephens does on their blog), what more is there to do?</a>. There seems to be nothing new under the digital sun. Have we reached the end of the frontier that was the personal computing revolution and the opening of the internet? Sometimes I feel that way. Sometimes I will look at my terminal and think “all software has been written, all thoughts have been said, all is meaningless”. Other times I feel the warmth of that old digital sun rising on my face over that endless horizon, and feel like a veil is lifted and chains are falling away, as I rediscovered what was there all the time. It comes and it goes. I think a lot of it has to do with the attention economy, the general ennui of life and getting older. The samurai Yamamoto Tsunetomo once said, in response to the desire to return to the feeling of a prior age, “… and this is due to the world’s passing away”. And it’s probably also a result of our individual and collective ADHD. Do what you love, don’t worry about who has done it before, or how new it is. Do you love it? Do it. Cheer up my brother, live in the sunshine, and give your attention to the things you love.</p>
|
||||
<p>Speaking of attention, counteracting ADHD and giving it to what you love, <a target="_blank" rel="noopener" href="https://amanhimself.dev/blog/2025-year-in-books/">Aman Mittal reports that he read 64 books in 2025</a>. 64 books in a year is astonishing to me. I could barely get through that even with audio books. My hat’s off to you. I’m told this used to be normal behavior. What an absolute reading Chad. But … I imagine that, if you read 64 books in a year, you don’t have as much a problem seeing the horizon.</p>
|
||||
<center><img alt="Bring me that horizon" src="/images/bringmethathorizon.jpeg"/></center>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-05-21</div>
|
||||
<a href="/2026/05/21/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-05-15</div>
|
||||
<a href="/2026/05/15/Devlog-20260518/"><div class="recent-posts-item-content">Devlog Entry</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-02-23</div>
|
||||
<a href="/2026/02/23/Why-Firefighting/"><div class="recent-posts-item-content">Why Firefighting</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-02-09</div>
|
||||
<a href="/2026/02/09/News-2026-Week-5/"><div class="recent-posts-item-content">News 2026 Week 5</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
788
2026/05/27/News-2026-Week-2/index.html
Normal file
@@ -0,0 +1,788 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>News-2026-Week-2</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="News-2026-Week-2">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/05/27/News-2026-Week-2/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-05-27">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-05-27">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">5</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">5</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
News-2026-Week-2
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-05-27T13:13:39.048Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-05-27</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current Events
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>5.2k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Here are my thoughts on news across the internet this week. We touch on rent denialism, collapsing job markets, corporate productivity theater, and the many ways AI is being oversold, misused, or shoved where it doesn’t belong. Along the way I rant about enshittification, ownership (of code, hardware, and ideas), bad APIs, worse management, the slow death of the old internet, and why UNIX got it right decades ago. It’s part news roundup, part cultural autopsy, part theological and philosophical musing — ending, as usual, with a reminder to ignore the noise, give your attention to what you love, and keep your eyes on God and the horizon. It’s worth what you paid for it.</p>
|
||||
<h2 id="The-Rent-Is-Too-Damn-High"><a href="#The-Rent-Is-Too-Damn-High" class="headerlink" title="The Rent Is Too Damn High"></a>The Rent Is Too Damn High</h2><p><a target="_blank" rel="noopener" href="https://www.jefftk.com/p/rents-are-high-but-not-skyrocketing">Jeff TK has made a valiant attempt</a> to allay our fears that rents are not skyrocketing. I do love a pretty colored graph showing facts on an axis. However, the problem I have with his article is that the nice flat graphs don’t go far enough to the left. His values begin in 2014, and by 2014, we already knew the rent was too damn high. <a target="_blank" rel="noopener" href="https://knowyourmeme.com/memes/the-rent-is-too-damn-high-jimmy-mcmillan">Jimmy McMillan was a meme in 2010</a>. Of course the graph shows stagnation if you look at it from 2014. There are <a target="_blank" rel="noopener" href="https://www.huduser.gov/portal/datasets/fmr.html?utm_source=chatgpt.com#history">plenty</a> of <a target="_blank" rel="noopener" href="https://www.census.gov/data/tables/time-series/dec/coh-grossrents.html">data sources</a> that will <a target="_blank" rel="noopener" href="https://www.zillow.com/research/data/">provide</a> a <a target="_blank" rel="noopener" href="https://usa.ipums.org/usa-action/variables/190639#source_variables_section">more accurate</a> picture of what’s going on. The rent is, indeed, too damn high, and has, indeed, skyrocketed. However I suppose I will concede to TK that the skyrocket has stalled - for the moment.</p>
|
||||
<h2 id="Jobs-and-Corporate"><a href="#Jobs-and-Corporate" class="headerlink" title="Jobs and Corporate"></a>Jobs and Corporate</h2><p>Amazon is now requiring its employees to list <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-corporate-employees-performance-reviews-accomplish-last-year-2026-1">three to five distinct accomplishments</a> from the past year in their new performance review process. Measuring employee productivity is actually really difficult, and you can tell a lot about a company’s current state by how they measure it. This kind of measuring stick is a strong indicator that the cuts are about to go deeper; don’t expect the layoffs to quit in 2026.</p>
|
||||
<p>Unfortunately, <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-modern-job-hunt-a-side-quest">the situation for job hunters is terrible, and not getting better</a>. If you find yourself looking for work, keep yourself open to new specializations within your field, or even new fields entirely. Being choosy in this economy is not a beneficial trait if you have bills to pay and mouths to feed. My own job search a couple of years ago - when the situation was actually a little better than now - saw me fire off almost 400 applications in the span of 1.5 months, with only 4 interview prospects. <a target="_blank" rel="noopener" href="http://jobquest.aklabs.net/">Here is a totally accurate simulation of the current job hunting experience</a>.</p>
|
||||
<p>Meanwhile, a new project has attempted to <a target="_blank" rel="noopener" href="https://www.remotelabor.ai/?itid=lk_inline_enhanced-template">measure the actual effectiveness of AI agents at performing several types of remote work</a>, and found that the LLMs were only able to independently complete work about 2.5% of the time. This is a positively abysmal measurement that proves that AI simply can not be left to do work alone. It doesn’t mean that AI won’t take <em>some</em> jobs, it just means that AI will still need at least one or more people to constantly look over its shoulder to ensure the work is getting done. Now, before the middle managers in my audience get excited, I must point out that those supervising the AI must actually be competent in the job the AI is doing, so that errors can be detected and corrected. And frankly both AI and many managers have this in common: a lack of basic competency in the job they are performing or supervising. So line jobs in these types of projects are probably safe for a while - although you will probably be forced to do the job with your ass in a corporate seat, rather than at home.</p>
|
||||
<p>Speaking of asses in corporate seats working for incompetent management, <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-flags-employees-rto-office-2026-1">Amazon has rolled out a new tool to help measure employee productivity</a>: this one measures the amount of time your ass spends in a seat. The tool will tell managers how long you spend badged into the building. (For those who don’t know, most companies now have digital door control systems that an employee accesses with a badge, so the company knows when you come and when you go.) The system will assist managers in making decisions by flagging employees that have low hours (4 hours or less in per day) and no hours (zero). As I said, measuring performance is a tricky business, and one of the oldest standby methods is to simply measure how much time your ass is in a seat. It’s called attendee-ism, it’s a garbage measurement used by dinosaurs and those interested in justifying their massive commercial real estate investments. It’s also alive and well in our biggest and supposedly smartest companies. Huzzah.</p>
|
||||
<h2 id="The-AI-Slop-Trough"><a href="#The-AI-Slop-Trough" class="headerlink" title="The AI Slop Trough"></a>The AI Slop Trough</h2><p>The good news is that while your ass is in a seat at your wage-slave job, <a target="_blank" rel="noopener" href="https://www.axios.com/2026/01/08/microsoft-ai-copilot-checkout">you can still get your shopping done by talking to Copilot and letting it buy things for you</a>. Just give the AI access to your financial accounts bro, it’s cool. <a target="_blank" rel="noopener" href="https://www.youtube.com/shorts/ar1iweInzc0">This will be a great way to get all the useless shit you don’t need</a>.</p>
|
||||
<p>Speaking of AI doing things it really shouldn’t, <a target="_blank" rel="noopener" href="https://www.msn.com/en-us/technology/software/a-new-approach-to-living-a-good-life-comes-from-a-most-unlikely-place/ar-AA1TSu0Q">the Workshop for Emotional and Spiritual Technology Corporation (West Co) is testing a platform called Tingle</a>, a social media platform that hopes to help users build more meaningful lives - by having users interact with smart devices to ask AI how to build more meaningful lives. A <a target="_blank" rel="noopener" href="https://tech.slashdot.org/comments.pl?sid=23889512&cid=65915338">Slashdot user</a> put it perfectly: “AI, which is incapable of deriving meaning or even determining relevance, is going to tell us humans how to build purposeful life. This is peak idiocy.” </p>
|
||||
<p>Turning away from how we’re using AI to continue to lose our humanity, and instead focusing on how we’re using it to try and lose more of our own skill and capacity by asking it to do work that we can (and probably should) do ourselves. <a target="_blank" rel="noopener" href="https://thenewstack.io/beyond-python-why-llms-need-more-stable-open-source-code/">An article on The New Stack recently posited</a> that AIs show a preference for certain languages in certain arenas, and that this is a problem for a variety of reasons. Namely “my LLM can’t generate the code for prompt X in language Y”, because for whatever reason language Y is the choice du-joure for this task. I don’t know why anyone is surprised by this habit of LLMs. AIs are trained on the stuff we say and the choices we make, specifically what’s published in the public domain (although not exclusively the public domain, as many trainers have unscrupulously stolen materials they should not have used for training purposes). Regardless, they are essentially reproducing what they have seen elsewhere (<em>cough</em> stack overflow <em>cough</em>). Why are we at all surprised by the language choices made by an LLM when they so clearly resemble what humans have been telling other humans to choose?</p>
|
||||
<p>Speaking of LLMs consuming things they shouldn’t, <a target="_blank" rel="noopener" href="https://www.seroundtable.com/tailwind-css-google-drop-40725.html">we need a stronger robots.text standard that lets content creators control how LLMs and AI agents can reproduce or use their content</a>. If Tailscale had been able to say things like “you can only use this content if you clearly advertise the source and include this blurb or link to this site or with this overlay”, then maybe they wouldn’t have had to fire 75% of their staff when AI began parroting their documentation, taking human eyes away from where their commercial option was advertised, effectively nuking a large part of their business model. This isn’t about sticking your head in the sand in an AI world, it’s about software authors having enough respect for each other to make their software honor the boundaries put up by humans. We do live in a society, after all.</p>
|
||||
<p>Our society needs to make some long term plans around AI anyway, especially around the usage of AI for code, and the code generated by that AI. <a target="_blank" rel="noopener" href="https://arxiv.org/html/2511.04427v2#S6">A Carnegie-Melon study on the impact of Cursor usage in software products</a> shows that while there are indeed short term bursts from the usage of these tools, they are likely to generate a lot more long term headache. As I mentioned, part of what happens when we turn to AI to solve our problems for us (whether those problems are in our relationships or our codebase), assuming that the solution works, we immediately begin to suffer atrophy in the skills we should have used to solve those problems. Because of that we are less able to spot quality problems in the output of the AI. And when we have to maintain that work (“though a program be but three lines long, some day it will have to be maintained” –<a target="_blank" rel="noopener" href="https://www.mit.edu/~xela/tao.html">Tao of Programming</a>, Book 5), we often find that we can’t maintain it very well (if at all) because we aren’t able to fall back on our original knowledge we used to solve the problem, because we didn’t solve it! All of this might sound like your middle school math teacher saying “you won’t always have a calculator in your pocket!”, but for at least the foreseeable horizon, this is the reality of the situation, and we mustn’t approach it blindly, lest we pass those headaches on to our successors (or our children).</p>
|
||||
<p>I recently posited the hilarity and terror of moving away from well defined to APIs towards AIs simply talking to each other and “having at it”, but it did highlight a real problem: most of our API specs suck anyway, and an AI may very likely do just as good a job of consuming your broken API spec as a human would. <a target="_blank" rel="noopener" href="https://thenewstack.io/why-most-apis-fail-in-ai-systems-and-how-to-fix-it/">The New Stack recently ran an article about why your API sucks and why an AI can’t effectively consume it</a>, and I largely agree with it. However it’s worth pointing out that the problems in this article apply to AIs and humans equally - if your API spec sucks, your docs suck, your examples don’t reflect real usage, then humans are going to suffer with your software too. The difference is that humans are used to suffering through poor specs and “figuring it out”, while AI is more likely to do <em>strange</em> things with poor assumptions based off your code, and we’re likely to give that AI more leash than it deserves to do <em>possibly bad</em> things with those <em>strange</em> interpretations of <em>your crappy API</em>. So, whether you’re working for humans or AI, do us all a favor: <strong>stop writing crappy APIs with crappy docs</strong></p>
|
||||
<p>But following on the ideas of “AIs are trained on what is well published” and “simple well defined interfaces are best”, once again, <a target="_blank" rel="noopener" href="https://thenewstack.io/the-key-to-agentic-success-let-unix-bash-lead-the-way/">UNIX solved this problem 50 years ago</a>. Some folks are finding that the best way to let agents solve many problems is, instead of giving them lots of custom skills and tools, simply given them a bash terminal and let them get to work. Most unix/linux/gnu command line programs follow <a href="en.wikipedia.org/wiki/Unix_philosophy">the UNIX design philosophy</a> and thus have pretty good documentation, they tend to do one thing and do it well, and they tend to operate on plain text passing in and out through pipes, making it easy to chain those programs together to do new things. This basic interface and pattern hasn’t really changed for 50 years, and we’ve got a ton of well published documentation on using these tools for all kinds of black magic, and LLMs have been trained on all of it. I kind of love it.</p>
|
||||
<p>Meanwhile, regardless of the specific ways your AI is implemented, <a target="_blank" rel="noopener" href="https://thenewstack.io/open-source-retrieval-infrastructure-can-fix-ais-production-gap/">a New Stack article captures some of the real problems your enterprise is likely to face</a> - things like observability and auditability. What documents in the knowledge base are being used, which sections, what questions lead to which answers, what answers were used to drive which automated decisions, etc. But the article doesn’t really put forward a good solution to the problem, instead it seems to be proposing that retrieval augmented generation is the solution. Maybe you can get something from it, but I don’t really see an answer here, beyond “we need to figure out answers to these problems”.</p>
|
||||
<p>Speaking of understanding why certain decisions were made, <a target="_blank" rel="noopener" href="https://perrotta.dev/2026/01/adrs-and-llms/">Thiago Perotta’s hot take is that the Architecture Decision Record is a key component of an LLM driven codebase</a>. ADRs are fine by themselves I suppose, and LLM coding agents definitely do benefit from the added context given by a set of ADRs. But the problem with ADRs that I’ve personally seen is that there is often not a clear link between “this piece of shit code I’m having to fix” and the ADR that introduced the architectural pattern that caused the shit code to be written. So the reasoning isn’t discovered until someone fixes the shit, proposes a merge request, and the architect (in all their glory) weighs in to the merge request explaining why this is bad because “this ADR explains this and didn’t you read it?”. (I may just have a bad history with architects.) Maybe integrating LLMs and ADRs can resolve that gap by linking specific ADRs to specific comments with some kind of metadata that links the implementation to the architectural decisions that lead to the implementation choices. That may be a beneficial thing to adopt. However Thiago takes the brakes off the AI, saying “nowadays your LLM agent can draft ADRs for you”. Soon we will have LLMs making decisions, justifying those decisions, writing ADRs about those decisions, using those ADRs to justify future decisions, and the human will just stand there slack-jawed watching it all happen. The AI has investigate its code, and has found justification from its ADRs, and thereby has found that the AI has done nothing wrong; the AI will push to prod now.</p>
|
||||
<h2 id="General-Technology-and-Dev"><a href="#General-Technology-and-Dev" class="headerlink" title="General Technology and Dev"></a>General Technology and Dev</h2><p>Turning away now from AI, but remaining in the realm of technology and code, <a target="_blank" rel="noopener" href="https://linux.slashdot.org/story/26/01/11/1926219/gentoo-linux-plans-migration-from-github-over-attempts-to-force-copilot-usage-for-our-repositories?utm_source=rss1.0mainlinkanon&utm_medium=feed">Gentoo reminds us that there is no free lunch and that you should probably host your own code</a>. If you weren’t aware, GitHub is essentially forcing Microsoft Copilot on everyone, because of course they are. Copilot can’t help you unless it trains itself on your codebase. And copilot will be improved for others by what it learns from you. So Microsoft is essentially building their product, which they will sell to others, by including your code, without attribution. This is obviously a problem. Remember kids - if the service you are using is free, then YOU, or what YOU are hosting, are the product. Someone is benefiting from hosting your code. I personally use gitea to hold my code at home, and anything I want to publish to the internet, is done with a github mirror - my gitea is the source of authority, not github. You should own your stuff, and you should own the distribution channels for it, where possible.</p>
|
||||
<p>Speaking of code, owning code, writing code, and reviewing code, <a target="_blank" rel="noopener" href="https://tidyfirst.substack.com/p/party-of-one-for-code-review">the code review process as we know it is really terrible</a>. Kent Beck makes the point that, when code review was first proposed from IBM, “Hardly anyone actually did it. Too much work. Too tedious.” Honestly the situation today is much the same. He concludes with the idea that “I’d rather be pairing. […] That’s less satisfying. It’s also where I’m at. […] I’m still figuring out what to do about it.” This mirrors my own experience and preferences. You write a change, send it to a teammate for a peer review, and one of three things happens: <code>1)</code> you wait forever for a detailed high quality review that will undoubtedly result in a bunch of proposed changes that are legitimate but that are outside of your timeline and will piss you off, <code>2)</code> you wait forever and the damn code never gets reviewed at all so you can’t ship, or <code>3)</code> you get a really fast turnaround with a rubber stamp approval that means nothing and was just a waste of time checking a box. Pairing is a much better answer, in my experience - talking through it with someone, working on the code together, you get better feedback in a lower span of time and you ship faster because they’re ready to approve once you’re done. And chances are you’re doing the same for them while you’re working, so you are probably shipping two features faster, rather than just one. <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=8wUOUmeulNs">Really advanced teams will move past pair programming all the way into spooning</a>, but even that may not prevent <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-review">the Jimbo effect</a>.</p>
|
||||
<p>Anyway - back on ownership, not just of code, but you should own everything you buy, as well. That seems like an obvious statement but because of the ongoing <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Enshittification">enshittification</a> of everything, <a target="_blank" rel="noopener" href="https://www.eff.org/deeplinks/2016/12/john-deere-really-doesnt-want-you-own-tractor">you don’t own what you buy</a>. And if you try to reverse engineer the thing that you bought so that you can actually use the thing you bought for the thing you want to use it for, <a target="_blank" rel="noopener" href="https://ttconsultants.com/understanding-reverse-engineering-and-the-infringement-law/">you may be committing a crime</a>. Cory Doctorow, blogging from his hot air balloon high above international waters, <a target="_blank" rel="noopener" href="https://www.theguardian.com/commentisfree/2026/jan/10/trump-beginning-of-end-enshittification-make-tech-good-again">recommended in a Guardian article</a> that some countries may be well positioned to repeal certain laws from their books that make such activities illegal, which he argues (and I agree) will help put an end to enshittification. The problem I have with his take is that you don’t have to ask for permission to reverse engineer something. You can just do it. The suits are always going to complain about you doing it - <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We explore… and you call us criminals.”</a> - but you can just take things apart, figure out how they work, and put them back together in a new way. I suppose it matters more when you’re talking about two nations dealing with each other, certain amounts of agreements must be honored, otherwise it might come to armies with guns having at each other. But what’s stopping individuals from doing this, and then just publishing the results, and now oh wait this state actor can benefit from it, and now the enshittification blockade has been broken because now the cat is out of the bag. Hackers used to do shit. When did we stop? </p>
|
||||
<p>Also, I’m so sick and tired of enshittification being presented as a uniquely American phenomenon. This is not a uniquely American phenomenon. Cory, if you’re listening, you’re wrong about this part: enshittification is a capitalist phenomenon, and is not a product of American culture. We are simply the unfortunate culture where the capitalists began their strip mining of the human experience. Please stop blaming this shit on us, Cory, and blame the real problem, being out of control greedy capitalists that don’t take answers from We The People anymore.</p>
|
||||
<p>Speaking of Cory and his insistence that the solution must be post-American, and the legal implications thereof, <a target="_blank" rel="noopener" href="https://yro.slashdot.org/story/26/01/10/054252/more-us-states-are-preparing-age-verification-laws-for-app-stores?utm_source=rss1.0mainlinkanon&utm_medium=feed">a Slashdot post aggregates a few things talking about US app stores rolling out age verification as a gateway to entry</a>. This is part of what Cory Doctorow is talking about when he says the American internet. Law only applies so far as ownership allows for enforcement: you can’t enforce the rights of a property owner on a house you don’t own. And right now America owns most of the physical infrastructure providing the internet. So the more infrastructure a given legal entity owns (certainly for nation states), the more autonomy they can exercise in the operation of that portion of the internet. Once that physical ownership changes, legal force changes, and the services operating on that internet have to behave differently. So eventually we are going to see nation level divisions of the internet where systems must function differently to comply with the laws in those nations. Folks like Cory will see this as a a win, and to be fair, it is a win in some regards. However, it’s also a wild regression : <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We exist without skin color, without nationality, without religious bias… and you call us criminals.”</a> There are some of us out here that remember a time when, and still prefer to pretend that, the Internet is its own place. It transcends national boundaries. It is its own place with its own culture and its own rules. Unfortunately, while the infrastructure that built that internet is still around, the idea of that internet is just a ghost now. I really hope it comes back. But I think I know better. Still … <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=HrJSDrHpPUk">it’s fun to dream</a></p>
|
||||
<p>Speaking of things we buy but don’t own and cannot control, <a target="_blank" rel="noopener" href="https://www.macrumors.com/2026/01/08/ios-26-shows-unusually-slow-adoption/">Apple is lamenting the slow adoption rate of iOS 26</a>. These people have the nerve to be surprised. We are tired of and exhausted by constantly having to accept updates on devices we don’t actually own, disrupting our user experience with features we didn’t ask for that don’t actually benefit our lives. Stop sending us shit we didn’t ask for and don’t need. Half of the time your update breaks something we like. This is not a problem unique to Apple, it’s a general problem with internet attached devices. The constant stream of updates is exhausting and frustrating. Maybe we just want to use our device as it is, as we bought it, without interference. Piss off.</p>
|
||||
<p>Then again, sometimes there are cool ideas and we react unfairly. <a target="_blank" rel="noopener" href="https://slashdot.org/story/26/01/08/145236/lego-says-smart-brick-wont-replace-traditional-play-after-ces-backlash?utm_source=rss1.0mainlinkanon&utm_medium=feed">I personally think LEGO Smart Blocks were a neat idea</a>. Obviously, not everyone shares that idea. NIMLB - Not In My Lego Box!</p>
|
||||
<p>But you know what they say - if it ain’t broke, don’t fix it. Craigslist, which <a target="_blank" rel="noopener" href="https://arstechnica.com/culture/2026/01/ungentrified-craigslist-may-be-the-last-real-place-on-the-internet/">Ars Technica recently called “The Last Real Place on the Internet”</a>, has survived almost in spite of itself into the new internet. <a target="_blank" rel="noopener" href="https://tech.slashdot.org/story/26/01/09/1618243/craigslist-at-30-no-algorithms-no-ads-no-problemutm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion on the article</a> highlights the dichotomy: it does what it should, hasn’t chased trends, provides the services it intends to, and stays out of politics, while it is literally an advertising site, which is so much of what is wrong about the modern internet. But at the same time, while the interface is the same, and while it is still alive, those of us who remember the early internet will know that Craigslist is a shadow of its former self. Some people will say that’s because you can no longer buy sex there, but I think it’s deeper than that. I don’t know if Craigslist will survive the eventual internet die-off of millenials, and part of me is really sad about that.</p>
|
||||
<p>I came across a <a target="_blank" rel="noopener" href="https://dockhand.pro/">new tool for managing Docker deployments on your small lab called Dockhand</a> recently. A <a target="_blank" rel="noopener" href="https://thenewstack.io/free-dockhand-tool-simplifies-docker-container-management/">New Stack article</a> gives an overview of the tool, but I don’t believe it mentions the pricing on the tool, I believe it gave the impression it is a free tool, but it’s been a few days since the article. Dockhand seems neat, the interface reminds me of the docker UI on my Synology DSM NAS, which I honestly find really handy for quickly spinning things up. I’m not clear how well it can manage a fleet of hosts, or if it’s just the one host you can manage. While reading about it, I thought “… why not just use kubernetes?”, because it seems to solve such a similar problem, that is already well solved by Kubernetes. Then I realized, well it’s obvious why not, and I know this because I work with kubernetes every day: the interface for kubernetes is pretty shit! That’s like looking at a user rejoicing over their new DOS system, happily running programs, and saying “why not just write your boot loader in assembly?”. Why would you inflict the pain of that complexity on someone who obviously doesn’t need it? STFU nerd, the normies are having fun (and, apparently, paying for it).</p>
|
||||
<p>Speaking of nerds and normies, I kinda get mad when my wife calls me “normal”, because … well … I don’t feel normal. But regardless, when comparing myself to my wife and daughters, I have to accept that I am basically normal. Every once in a while writing software I get reminded of this. When I was working with <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/devinbangsund/">Devin</a> at Nintendo, I was working on a web dashboard for a tool, and was explaining how easy it was to tell which things were passing and failing. “The passed tests are in red, the failed ones are in green.” I forget exactly what he said - Devin has a way of witty deadpan delivery that ensures you get the point, even if you don’t remember the words - but he made the point that he was red/green colorblind. I’d been in the industry for probably 10 years at that point, and had never confronted UI design for a colorblind person. It’s definitely not the first time I’d used the red/green color combination. So as a “normal” person I do a lot of things that probably either alienate some from my software, and may actually outright harm people sometimes. Generally speaking, we normies don’t do it on purpose, we just don’t know better. But <a target="_blank" rel="noopener" href="https://www.ragman.net/musings/copypasta/">ragman recently put out a really interesting article</a> musing on how difficult it is to make a website accessible for neurodivergent people when you use emojis, gifs, colors, etc. There’s a lot in there about accessible webdev in general. Luckily my website has basically two colors - black and white - and usually only uses still images in the few places it does use images. But it was an eye opening article.</p>
|
||||
<h2 id="Nature-and-Nature’s-God"><a href="#Nature-and-Nature’s-God" class="headerlink" title="Nature and Nature’s God"></a>Nature and Nature’s God</h2><p>Pivoting away from code towards the intersection of technology and nature, <a target="_blank" rel="noopener" href="https://www.theregister.com/2026/01/08/camouflage_tech_mimics_octopus/">researchers at Stanford have produced a synthetic camouflage material that acts like octopus skin</a>. It’s often been said that any sufficiently advanced technology is effectively indistinguishable from an equally reliable/predictable form of magic. Compare to this material to cloaks of elvenkind. Combine this with thermoptic camouflage that can hide soldiers (or anyone) from thermal imagers and we are well on our way to being in a Predator movie.</p>
|
||||
<p>It doesn’t do much to protect you from smell though. The dogs will still find you. Dogs are amazing creatures, and I’m firmly convinced we humans do not deserve them. <a target="_blank" rel="noopener" href="https://science.slashdot.org/story/26/01/08/2249216/some-super-smart-dogs-can-learn-new-words-just-by-eavesdropping?utm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion highlights an NPR quote</a> that shows Dogs can learn new words just by overhearing their favorite human saying them, even if the dog is not the target of the verbal action, and they don’t need to hear them a whole lot to understand. At the same time, not every dog can do this apparently, but the researchers imply that this points to some sort of inter-species shared social understanding that predates language and that is shared by many species. First, I think this shows that animals will only continue to impress us by how smart they are, and our assumptions about our special nature as the only “intelligent animal” will eventually be shattered. Second, I think it points to a truth that is already held in scripture: before the fall of mankind through sin, introducing the fallen state into the world, we existed in such harmony with the rest of God’s creation that we actually communicated with each other effectively. The book of Jubilees states this plainly: “And on that day the mouths of all the animals, the cattle, the birds, everything that walks and everything that moves about were made incapable of speaking because all of them used to converse with one another in one language and one tongue”.. But it’s apocryphal, so protestants outright reject it, and it’s not generally used for teaching in the high liturgy churches. But I’m convinced of it, and that’s part of why Christ tells us to preach the gospel to all creation (Mark 16:15), literally every creature - because the Good News of Christ is not just of saving mankind from sin, but of putting the entire order of Creation back right, such that we will once again be back in alignment with the rest of creation. The wolf shall lie down with the lamb. “Was I a good boy?”, he’ll ask us, and we’ll say, “you were the best”.</p>
|
||||
<p>Speaking of the wonder and majesty of God’s creation, <a target="_blank" rel="noopener" href="https://phys.org/news/2026-01-nature-good-math.html">a project at Sandia National Lab</a> shows that by using computer architecture more inspired by the architecture of our brain, the computer becomes “shockingly good” at math. The more I learn about science and engineering, the more in awe I am of the master builder who made me. This is a shared sentiment with many experienced scientists - Alan Perlis once famously quipped <a target="_blank" rel="noopener" href="https://www.cs.yale.edu/homes/perlis-alan/quotes.html">“A year spent in artificial intelligence is enough to make one believe in God.”</a>. (And a year of trying to get work done with ChatGPT is enough to make one understand why God is so constantly frustrated with us, and to appreciate His infinite patience with us.)</p>
|
||||
<h2 id="Ennui-and-Hope-Read-some-books"><a href="#Ennui-and-Hope-Read-some-books" class="headerlink" title="Ennui and Hope : Read some books"></a>Ennui and Hope : Read some books</h2><p>One of my favorite books in the Bible is Ecclesiastes. In Ecclesiastes, Solomon muses, there is nothing new under the sun. As a technologist, especially one who remembers the early days of the internet and personal computing, we may be left to wonder <a target="_blank" rel="noopener" href="https://ldstephens.net/blog/on-what-more-to-do/">(as LD Stephens does on their blog), what more is there to do?</a>. There seems to be nothing new under the digital sun. Have we reached the end of the frontier that was the personal computing revolution and the opening of the internet? Sometimes I feel that way. Sometimes I will look at my terminal and think “all software has been written, all thoughts have been said, all is meaningless”. Other times I feel the warmth of that old digital sun rising on my face over that endless horizon, and feel like a veil is lifted and chains are falling away, as I rediscovered what was there all the time. It comes and it goes. I think a lot of it has to do with the attention economy, the general ennui of life and getting older. The samurai Yamamoto Tsunetomo once said, in response to the desire to return to the feeling of a prior age, “… and this is due to the world’s passing away”. And it’s probably also a result of our individual and collective ADHD. Do what you love, don’t worry about who has done it before, or how new it is. Do you love it? Do it. Cheer up my brother, live in the sunshine, and give your attention to the things you love.</p>
|
||||
<p>Speaking of attention, counteracting ADHD and giving it to what you love, <a target="_blank" rel="noopener" href="https://amanhimself.dev/blog/2025-year-in-books/">Aman Mittal reports that he read 64 books in 2025</a>. 64 books in a year is astonishing to me. I could barely get through that even with audio books. My hat’s off to you. I’m told this used to be normal behavior. What an absolute reading Chad. But … I imagine that, if you read 64 books in a year, you don’t have as much a problem seeing the horizon.</p>
|
||||
<center><img alt="Bring me that horizon" src="/images/bringmethathorizon.jpeg"/></center>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-05-27</div>
|
||||
<a href="/2026/05/27/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-05-15</div>
|
||||
<a href="/2026/05/15/Devlog-20260518/"><div class="recent-posts-item-content">Devlog Entry</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-02-23</div>
|
||||
<a href="/2026/02/23/Why-Firefighting/"><div class="recent-posts-item-content">Why Firefighting</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-02-09</div>
|
||||
<a href="/2026/02/09/News-2026-Week-5/"><div class="recent-posts-item-content">News 2026 Week 5</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
914
2026/05/30/Devlog-20260530/index.html
Normal file
@@ -0,0 +1,914 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>Devlog Entry - 30 May 2026</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Devlog Entry - 30 May 2026">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/05/30/Devlog-20260530/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-05-30">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Locking-game-state-for-thread-safety"><span class="toc-text">Locking game state for thread safety</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Controllers"><span class="toc-text">Controllers</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Pluggable-rendering-backends"><span class="toc-text">Pluggable rendering backends</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Pluggable-physics-systems"><span class="toc-text">Pluggable physics systems</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Tests-and-Documentation"><span class="toc-text">Tests and Documentation</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#ESP32-projects"><span class="toc-text">ESP32 projects</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Flowing-LED-lights-with-a-button"><span class="toc-text">Flowing LED lights with a button</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Controlling-buzzers-with-transistors"><span class="toc-text">Controlling buzzers with transistors</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Communicating-over-Serial-UART"><span class="toc-text">Communicating over Serial UART</span></a></li></ol></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 30 May 2026
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-05-30T10:05:47.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-05-30</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>1.7k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<h2 id="libakstdlib"><a href="#libakstdlib" class="headerlink" title="libakstdlib"></a>libakstdlib</h2><p>Several improvements were driven into <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakstdlib/">libakstdlib</a>, my libc layer that wraps my platform’s native libc in <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror/">libakerror</a>.</p>
|
||||
<ul>
|
||||
<li>Added <code>aksl_atol</code></li>
|
||||
<li>Added <code>aksl_atoll</code></li>
|
||||
<li>Added <code>aksl_atoi</code></li>
|
||||
<li>Fixed a bug in <code>aksl_sprintf</code>, it wasn’t using va_args properly, leading to segfault</li>
|
||||
<li>Added <code>aksl_atof</code></li>
|
||||
<li>Added <code>aksl_realpath</code>, which takes a string that contains a filesystem path which may or may not be relative, and populates a destination string with the absolute path to that file reference</li>
|
||||
</ul>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c">akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_atoi</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>nptr<span class="token punctuation">,</span> <span class="token keyword">int</span> <span class="token operator">*</span>dest<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_atol</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>nptr<span class="token punctuation">,</span> <span class="token keyword">long</span> <span class="token operator">*</span>dest<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_atoll</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>nptr<span class="token punctuation">,</span> <span class="token keyword">long</span> <span class="token keyword">long</span> <span class="token operator">*</span>dest<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_atof</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>nptr<span class="token punctuation">,</span> <span class="token keyword">double</span> <span class="token operator">*</span>dest<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_realpath</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">char</span> <span class="token operator">*</span>restrict path<span class="token punctuation">,</span> <span class="token keyword">char</span> <span class="token operator">*</span>restrict resolved_path<span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<h2 id="libakgl"><a href="#libakgl" class="headerlink" title="libakgl"></a>libakgl</h2><p>I made several improvements to my C/SDL3 game library.</p>
|
||||
<h3 id="Locking-game-state-for-thread-safety"><a href="#Locking-game-state-for-thread-safety" class="headerlink" title="Locking game state for thread safety"></a>Locking game state for thread safety</h3><p>The SDL3 implementation is, by default, implemented with threaded events. For the <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/akgl-test/">akgl-test demonstration app</a> I’m writing alongside <code>libakgl</code>, this eventually reared its ugly head as some nasty race conditions on the various <code>AKGL_HEAP</code> objects that are statically allocated and centrally managed. Consider this:</p>
|
||||
<ul>
|
||||
<li>Input processing happens during <code>SDL_AppEvent</code></li>
|
||||
<li>Physics and rendering happens during <code>SDL_AppIterate</code></li>
|
||||
<li>The player presses <code>ESC</code> to go back to the main menu to select a different demonstration</li>
|
||||
<li>Part of that process is that the <code>AKGL_HEAP_ACTORS</code> is reset</li>
|
||||
<li>While that is happening, the <code>SDL_AppIterate</code> fires from another thread. It goes to render actors that are in the process of being reset.</li>
|
||||
<li>KABOOM</li>
|
||||
</ul>
|
||||
<p>To resolve this quickly, I added a <code>SDL_Mutex</code> object to the global <code>akgl_Game</code> object. Anything that modifies the core game state (like the <code>AKGL_HEAP</code> objects) calls <code>akgl_game_state_lock()</code> to lock the state, and <code>akgl_game_state_unlock()</code> when they are done. This resolved the race condition.</p>
|
||||
<p>Right now this is being applied on some really large operations. It can probably be applied in a far more granular fashion. But for right now it works.</p>
|
||||
<h3 id="Controllers"><a href="#Controllers" class="headerlink" title="Controllers"></a>Controllers</h3><p>Added a method (<code>akgl_controller_open_gamepads()</code>) that automatically opens all connected gamepads at the time of <code>akgl_game_init()</code>. </p>
|
||||
<ul>
|
||||
<li>The user doesn’t have to call this, it’s done automatically</li>
|
||||
<li>You have to open a gamepad before you can receive events from it. So asking the player “Press any button on the controller” to figure out which controller they’re using doesn’t work until those gamepads are open. There may be consequences to opening gamepads we don’t need - I don’t know yet. If that comes up, it’s easy enough to close the ones we aren’t using.</li>
|
||||
</ul>
|
||||
<h3 id="Pluggable-rendering-backends"><a href="#Pluggable-rendering-backends" class="headerlink" title="Pluggable rendering backends"></a>Pluggable rendering backends</h3><p>At some point I am going to want to use the SDL3 GPU renderer as the primary renderer for my engine. Right now I’m using the Rendering API because it’s familiar, comfortable, and very simple for the 2D stuff I’m doing right now. But I need to reduce the coupling between the rendering API and the rest of the game logic. So I abstracted away the existing SDL_Renderer rendering backend into a new <code>akgl_RenderBackend</code> structure, and refactored everything to call the methods on that structure instead of touching the renderer directly.</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token keyword">typedef</span> <span class="token keyword">struct</span> <span class="token class-name">akgl_RenderBackend</span> <span class="token punctuation">{</span>
|
||||
SDL_Renderer <span class="token operator">*</span>sdl_renderer<span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>shutdown<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_RenderBackend</span> <span class="token operator">*</span>self<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>frame_start<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_RenderBackend</span> <span class="token operator">*</span>self<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>frame_end<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_RenderBackend</span> <span class="token operator">*</span>self<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>draw_texture<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_RenderBackend</span> <span class="token operator">*</span>self<span class="token punctuation">,</span> SDL_Texture <span class="token operator">*</span>texture<span class="token punctuation">,</span> SDL_FRect <span class="token operator">*</span>src<span class="token punctuation">,</span> SDL_FRect <span class="token operator">*</span>dest<span class="token punctuation">,</span> <span class="token keyword">double</span> angle<span class="token punctuation">,</span> SDL_FPoint <span class="token operator">*</span>center<span class="token punctuation">,</span> SDL_FlipMode flip<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>draw_mesh<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_RenderBackend</span> <span class="token operator">*</span>self<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>draw_world<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_RenderBackend</span> <span class="token operator">*</span>self<span class="token punctuation">,</span> akgl_Iterator <span class="token operator">*</span>opflags<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">}</span> akgl_RenderBackend<span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>The usage of this new abstraction is pretty simple:</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_game_init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_game_state_lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_registry_load_properties</span><span class="token punctuation">(</span><span class="token string">"assets/properties.json"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_render_init2d</span><span class="token punctuation">(</span><span class="token operator">&</span>renderer<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_game_state_unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>The <code>akgl_render_init2d</code> function sets up the renderer with a bunch of backend functions that know how to render the various on-screen parts of libakgl (like <code>akgl_Actor</code>, <code>akgl_Sprite</code>, <code>akgl_Tilemap</code>, etc) through the SDL Rendering API. All of this detail is transparent to theuser, and to the library author as well, because they just do things <code>renderer->draw_texture(&renderer)</code> and <code>renderer->draw_world(&renderer)</code>. The real detail of how that all gets done is tucked away <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakgl/src/branch/main/src/renderer.c">in those functions</a>.</p>
|
||||
<p>Now <code>SDL_AppIterate</code> can look like this to draw the world and all the actors in it:</p>
|
||||
<pre class="line-numbers language-none"><code class="language-none">PASS(e, renderer.frame_start(&renderer));
|
||||
PASS(e, akgl_game_update(NULL));
|
||||
PASS(e, renderer.frame_end(&renderer));<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>… because <code>akgl_game_update</code> calls <code>renderer->draw_world()</code> for you.</p>
|
||||
<p>Now when I want to implement a GPU renderer (or any other kind of renderer, really - ASCII ncurses anyone?), all I have to do is write some new pluggable methods, write an initializer function like <code>akgl_render_init2d()</code> that populates a renderer structure, and we’re off to the races.</p>
|
||||
<p>At least that’s the idea. We’ll see what happens when I implement SDL3 GPU at some point in the future.</p>
|
||||
<h2 id="Pluggable-physics-systems"><a href="#Pluggable-physics-systems" class="headerlink" title="Pluggable physics systems"></a>Pluggable physics systems</h2><p>Following on the pluggable rendering system, I am at the point where I need to put in some amount of physics simulation before I can start making games with this thing. So I followed the same basic pattern I did with the rendering backend, and made a structure that holds a bunch of function pointers and other information</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token keyword">typedef</span> <span class="token keyword">struct</span> <span class="token class-name">akgl_PhysicsBackend</span> <span class="token punctuation">{</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>simulate<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_PhysicsBackend</span> <span class="token operator">*</span>self<span class="token punctuation">,</span> akgl_Iterator <span class="token operator">*</span>opflags<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>gravity<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_PhysicsBackend</span> <span class="token operator">*</span>self<span class="token punctuation">,</span> akgl_Actor <span class="token operator">*</span>actor<span class="token punctuation">,</span> <span class="token class-name">float32_t</span> dt<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>collide<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_PhysicsBackend</span> <span class="token operator">*</span>self<span class="token punctuation">,</span> akgl_Actor <span class="token operator">*</span>a1<span class="token punctuation">,</span> akgl_Actor <span class="token operator">*</span>a2<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>move<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token keyword">struct</span> <span class="token class-name">akgl_PhysicsBackend</span> <span class="token operator">*</span>self<span class="token punctuation">,</span> akgl_Actor <span class="token operator">*</span>actor<span class="token punctuation">,</span> <span class="token class-name">float32_t</span> dt<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
|
||||
<span class="token keyword">double</span> drag_x<span class="token punctuation">;</span>
|
||||
<span class="token keyword">double</span> drag_y<span class="token punctuation">;</span>
|
||||
<span class="token keyword">double</span> drag_z<span class="token punctuation">;</span>
|
||||
<span class="token keyword">double</span> gravity_x<span class="token punctuation">;</span>
|
||||
<span class="token keyword">double</span> gravity_y<span class="token punctuation">;</span>
|
||||
<span class="token keyword">double</span> gravity_z<span class="token punctuation">;</span>
|
||||
SDL_Time gravity_time<span class="token punctuation">;</span>
|
||||
SDL_Time timer_gravity<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token punctuation">}</span> akgl_PhysicsBackend<span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>… and made it easy to initialize with the backend of my choice:</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_game_init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_game_state_lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_registry_load_properties</span><span class="token punctuation">(</span><span class="token string">"assets/properties.json"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_physics_init_sidescroller</span><span class="token punctuation">(</span><span class="token operator">&</span>physics<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_game_state_unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>… and now simulating physics in the world full of actors is as simple as calling one method inside of <code>SDL_AppIterate</code>:</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> renderer<span class="token punctuation">.</span><span class="token function">frame_start</span><span class="token punctuation">(</span><span class="token operator">&</span>renderer<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token function">akgl_game_update</span><span class="token punctuation">(</span><span class="token constant">NULL</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> renderer<span class="token punctuation">.</span><span class="token function">frame_end</span><span class="token punctuation">(</span><span class="token operator">&</span>renderer<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>… because <code>akgl_game_update()</code> calls the physics simulator for you:</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token function">PASS</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> physics<span class="token punctuation">.</span><span class="token function">simulate</span><span class="token punctuation">(</span><span class="token operator">&</span>physics<span class="token punctuation">,</span> <span class="token constant">NULL</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>
|
||||
|
||||
<p>… and <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakgl/src/branch/main/src/physics.c">the physics backend</a> takes care of calculating acceleration, velocity, movement, and (soon) collisions.</p>
|
||||
<p>Collision detection isn’t there yet. It’s coming soon, with both other actors and world geometry.</p>
|
||||
<h3 id="Tests-and-Documentation"><a href="#Tests-and-Documentation" class="headerlink" title="Tests and Documentation"></a>Tests and Documentation</h3><p>This thing is basically completely undocumented. That’s okay, because I’m only really writing it for myself, but as the complexit grows, I really should write some docs. I’ll put <em>something</em> together. </p>
|
||||
<p>I really need to write some new tests. I was very disciplined about that in the early days of this library. But then again, back then, I didn’t have demo games to work with. So the testing harness was the only metric for success I had. But I’ve gotten away from writing or even checking the test harness, and that’s bad. Future updates will see me do <em>something</em> about this.</p>
|
||||
<h2 id="ESP32-projects"><a href="#ESP32-projects" class="headerlink" title="ESP32 projects"></a>ESP32 projects</h2><p>I’ve started studying embedded development. I’ve got a long road ahead of me, but it all starts with an ESP32-S3 Arduino kit. Even with the experience I have with technology, I figured it was best to start somewhere simple before diving in to RTOS and FPGA on more complex platforms. I completed 3 projects on my Freenove ESP32-S3 WROOM devkit this week.</p>
|
||||
<h3 id="Flowing-LED-lights-with-a-button"><a href="#Flowing-LED-lights-with-a-button" class="headerlink" title="Flowing LED lights with a button"></a>Flowing LED lights with a button</h3><blockquote class="twitter-tweet"><p lang="en" dir="ltr">The journey of a thousand miles begins with an esp32, some blinking leds and a button <a target="_blank" rel="noopener" href="https://t.co/i9rOphuY60">pic.twitter.com/i9rOphuY60</a></p>— Andrew Kesterson (@AKLabsDotNet) <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet/status/2058655798591476058?ref_src=twsrc%5Etfw">May 24, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
|
||||
|
||||
<p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/01-flowing_light_with_button/flowing_light_with_button.ino">This program</a> sends a cascading light effect through the LED bar that fades on either side of a strong central point. It normally flows in one direction, but if you press the button, it changes direction.</p>
|
||||
<p>I learned several things from this project:</p>
|
||||
<ul>
|
||||
<li>How to use the Arduino IDE to deploy code to the ESP32-S3 WROOM</li>
|
||||
<li>How to use the Arduino IDE debugger to step through code running on the device</li>
|
||||
<li>How to configure GPIO pins on the ESP32-S3 as input or output</li>
|
||||
<li>How to read and write data to and from those GPIO pins</li>
|
||||
<li>Using a physical button to control program flow in the microcontroller</li>
|
||||
<li>Debouncing mechanical buttons</li>
|
||||
<li>What is pulse width modulation and how do we control it on the ESP32-S3</li>
|
||||
<li>Using pulse width modulation with an LED to create a smooth visual effect simulating an analog curve</li>
|
||||
</ul>
|
||||
<p>There is a more detailed writeup about this project <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/01-flowing_light_with_button">in my source repository</a></p>
|
||||
<h3 id="Controlling-buzzers-with-transistors"><a href="#Controlling-buzzers-with-transistors" class="headerlink" title="Controlling buzzers with transistors"></a>Controlling buzzers with transistors</h3><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Love it when the manufacturers tutorials have bugs in them. Still better than diagnosing istio problems in kubernetes. One project down, thousands more to go. <a target="_blank" rel="noopener" href="https://t.co/53WQetCTmQ">pic.twitter.com/53WQetCTmQ</a></p>— Andrew Kesterson (@AKLabsDotNet) <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet/status/2059735218622538228?ref_src=twsrc%5Etfw">May 27, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
|
||||
|
||||
<p>These <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/02-buzzers_with_transistors/buzzer-npn-lowside-switching/buzzer-npn-lowside-switching.ino">two</a> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/02-buzzers_with_transistors/activebuzzer_npn_lowside_switching/activebuzzer_npn_lowside_switching.ino">programs</a> allow you to control a buzzer with a button to make a noise on command. They both use the exact same breadboard, the only difference is that one uses a passive buzzer, while the other uses an active buzzer (pn TMB12A05).</p>
|
||||
<p>I learned several things from these projects:</p>
|
||||
<ul>
|
||||
<li>The differences in active vs passive buzzers</li>
|
||||
<li>How transistors work, and how you can use them to control the flow of power in a circuit</li>
|
||||
<li>Why you might place a transistor upstream or downstream of the component whose power you are controlling</li>
|
||||
<li>How to turn a transistor on or off using the GPIO pin on an ESP32</li>
|
||||
<li>How to use my oscilloscope to diagnose PWM output issues</li>
|
||||
</ul>
|
||||
<p>There is a more detailed writeup about this project <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/02-buzzers_with_transistors">in my source repository</a></p>
|
||||
<h3 id="Communicating-over-Serial-UART"><a href="#Communicating-over-Serial-UART" class="headerlink" title="Communicating over Serial UART"></a>Communicating over Serial UART</h3><blockquote class="twitter-tweet"><p lang="en" dir="ltr">A good digital logic analyzer is worth its weight in gold<br><br>Thankfully they tend to be lightweight devices <a target="_blank" rel="noopener" href="https://t.co/FlSPL95DyW">pic.twitter.com/FlSPL95DyW</a></p>— Andrew Kesterson (@AKLabsDotNet) <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet/status/2060156789111316602?ref_src=twsrc%5Etfw">May 29, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
|
||||
|
||||
<p>This project shows using the ESP32-S3 serial port for communication via UART.</p>
|
||||
<p>Lessons Learned:</p>
|
||||
<ul>
|
||||
<li>The Arduino HAL is surprisingly thick</li>
|
||||
<li>You can’t use the ESP32-S3 UART for communication via USB when you’re debugging</li>
|
||||
<li>libc is libc anywhere you go</li>
|
||||
<li>How to use my digital logic analyzer to snoop on, record and inspect UART protocol traffic</li>
|
||||
<li>How to use my oscilloscope to look at UART traffic over the wire, and how that compares to using the logic analyzer</li>
|
||||
</ul>
|
||||
<p>There is a more detailed writeup about this project <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/03-serialuart">in my source repository</a></p>
|
||||
<!--
|
||||
-- tags
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts Path
|
||||
No tags.
|
||||
---------------
|
||||
-- categories
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts
|
||||
Books 14
|
||||
Current Events 5
|
||||
Current Events 0
|
||||
Faith 6
|
||||
History 1
|
||||
Leadership 8
|
||||
Liberal Education 1
|
||||
Outdoors 1
|
||||
Philosophy 5
|
||||
Philosophy 0
|
||||
Technology 11
|
||||
technology 0
|
||||
--!>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/06/08/Devlog-20260608/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 8 June 2026 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 18 May 2026 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Locking-game-state-for-thread-safety"><span class="toc-text">Locking game state for thread safety</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Controllers"><span class="toc-text">Controllers</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Pluggable-rendering-backends"><span class="toc-text">Pluggable rendering backends</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Pluggable-physics-systems"><span class="toc-text">Pluggable physics systems</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Tests-and-Documentation"><span class="toc-text">Tests and Documentation</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#ESP32-projects"><span class="toc-text">ESP32 projects</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Flowing-LED-lights-with-a-button"><span class="toc-text">Flowing LED lights with a button</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Controlling-buzzers-with-transistors"><span class="toc-text">Controlling buzzers with transistors</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Communicating-over-Serial-UART"><span class="toc-text">Communicating over Serial UART</span></a></li></ol></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Locking-game-state-for-thread-safety"><span class="toc-text">Locking game state for thread safety</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Controllers"><span class="toc-text">Controllers</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Pluggable-rendering-backends"><span class="toc-text">Pluggable rendering backends</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Pluggable-physics-systems"><span class="toc-text">Pluggable physics systems</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Tests-and-Documentation"><span class="toc-text">Tests and Documentation</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#ESP32-projects"><span class="toc-text">ESP32 projects</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Flowing-LED-lights-with-a-button"><span class="toc-text">Flowing LED lights with a button</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Controlling-buzzers-with-transistors"><span class="toc-text">Controlling buzzers with transistors</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Communicating-over-Serial-UART"><span class="toc-text">Communicating over Serial UART</span></a></li></ol></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
788
2026/05/30/News-2026-Week-2/index.html
Normal file
@@ -0,0 +1,788 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>News-2026-Week-2</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="News-2026-Week-2">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/05/30/News-2026-Week-2/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-05-30">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-05-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>30</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">12</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">5</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">5</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
News-2026-Week-2
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-05-30T15:07:00.323Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-05-30</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current Events
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>5.2k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Here are my thoughts on news across the internet this week. We touch on rent denialism, collapsing job markets, corporate productivity theater, and the many ways AI is being oversold, misused, or shoved where it doesn’t belong. Along the way I rant about enshittification, ownership (of code, hardware, and ideas), bad APIs, worse management, the slow death of the old internet, and why UNIX got it right decades ago. It’s part news roundup, part cultural autopsy, part theological and philosophical musing — ending, as usual, with a reminder to ignore the noise, give your attention to what you love, and keep your eyes on God and the horizon. It’s worth what you paid for it.</p>
|
||||
<h2 id="The-Rent-Is-Too-Damn-High"><a href="#The-Rent-Is-Too-Damn-High" class="headerlink" title="The Rent Is Too Damn High"></a>The Rent Is Too Damn High</h2><p><a target="_blank" rel="noopener" href="https://www.jefftk.com/p/rents-are-high-but-not-skyrocketing">Jeff TK has made a valiant attempt</a> to allay our fears that rents are not skyrocketing. I do love a pretty colored graph showing facts on an axis. However, the problem I have with his article is that the nice flat graphs don’t go far enough to the left. His values begin in 2014, and by 2014, we already knew the rent was too damn high. <a target="_blank" rel="noopener" href="https://knowyourmeme.com/memes/the-rent-is-too-damn-high-jimmy-mcmillan">Jimmy McMillan was a meme in 2010</a>. Of course the graph shows stagnation if you look at it from 2014. There are <a target="_blank" rel="noopener" href="https://www.huduser.gov/portal/datasets/fmr.html?utm_source=chatgpt.com#history">plenty</a> of <a target="_blank" rel="noopener" href="https://www.census.gov/data/tables/time-series/dec/coh-grossrents.html">data sources</a> that will <a target="_blank" rel="noopener" href="https://www.zillow.com/research/data/">provide</a> a <a target="_blank" rel="noopener" href="https://usa.ipums.org/usa-action/variables/190639#source_variables_section">more accurate</a> picture of what’s going on. The rent is, indeed, too damn high, and has, indeed, skyrocketed. However I suppose I will concede to TK that the skyrocket has stalled - for the moment.</p>
|
||||
<h2 id="Jobs-and-Corporate"><a href="#Jobs-and-Corporate" class="headerlink" title="Jobs and Corporate"></a>Jobs and Corporate</h2><p>Amazon is now requiring its employees to list <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-corporate-employees-performance-reviews-accomplish-last-year-2026-1">three to five distinct accomplishments</a> from the past year in their new performance review process. Measuring employee productivity is actually really difficult, and you can tell a lot about a company’s current state by how they measure it. This kind of measuring stick is a strong indicator that the cuts are about to go deeper; don’t expect the layoffs to quit in 2026.</p>
|
||||
<p>Unfortunately, <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-modern-job-hunt-a-side-quest">the situation for job hunters is terrible, and not getting better</a>. If you find yourself looking for work, keep yourself open to new specializations within your field, or even new fields entirely. Being choosy in this economy is not a beneficial trait if you have bills to pay and mouths to feed. My own job search a couple of years ago - when the situation was actually a little better than now - saw me fire off almost 400 applications in the span of 1.5 months, with only 4 interview prospects. <a target="_blank" rel="noopener" href="http://jobquest.aklabs.net/">Here is a totally accurate simulation of the current job hunting experience</a>.</p>
|
||||
<p>Meanwhile, a new project has attempted to <a target="_blank" rel="noopener" href="https://www.remotelabor.ai/?itid=lk_inline_enhanced-template">measure the actual effectiveness of AI agents at performing several types of remote work</a>, and found that the LLMs were only able to independently complete work about 2.5% of the time. This is a positively abysmal measurement that proves that AI simply can not be left to do work alone. It doesn’t mean that AI won’t take <em>some</em> jobs, it just means that AI will still need at least one or more people to constantly look over its shoulder to ensure the work is getting done. Now, before the middle managers in my audience get excited, I must point out that those supervising the AI must actually be competent in the job the AI is doing, so that errors can be detected and corrected. And frankly both AI and many managers have this in common: a lack of basic competency in the job they are performing or supervising. So line jobs in these types of projects are probably safe for a while - although you will probably be forced to do the job with your ass in a corporate seat, rather than at home.</p>
|
||||
<p>Speaking of asses in corporate seats working for incompetent management, <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-flags-employees-rto-office-2026-1">Amazon has rolled out a new tool to help measure employee productivity</a>: this one measures the amount of time your ass spends in a seat. The tool will tell managers how long you spend badged into the building. (For those who don’t know, most companies now have digital door control systems that an employee accesses with a badge, so the company knows when you come and when you go.) The system will assist managers in making decisions by flagging employees that have low hours (4 hours or less in per day) and no hours (zero). As I said, measuring performance is a tricky business, and one of the oldest standby methods is to simply measure how much time your ass is in a seat. It’s called attendee-ism, it’s a garbage measurement used by dinosaurs and those interested in justifying their massive commercial real estate investments. It’s also alive and well in our biggest and supposedly smartest companies. Huzzah.</p>
|
||||
<h2 id="The-AI-Slop-Trough"><a href="#The-AI-Slop-Trough" class="headerlink" title="The AI Slop Trough"></a>The AI Slop Trough</h2><p>The good news is that while your ass is in a seat at your wage-slave job, <a target="_blank" rel="noopener" href="https://www.axios.com/2026/01/08/microsoft-ai-copilot-checkout">you can still get your shopping done by talking to Copilot and letting it buy things for you</a>. Just give the AI access to your financial accounts bro, it’s cool. <a target="_blank" rel="noopener" href="https://www.youtube.com/shorts/ar1iweInzc0">This will be a great way to get all the useless shit you don’t need</a>.</p>
|
||||
<p>Speaking of AI doing things it really shouldn’t, <a target="_blank" rel="noopener" href="https://www.msn.com/en-us/technology/software/a-new-approach-to-living-a-good-life-comes-from-a-most-unlikely-place/ar-AA1TSu0Q">the Workshop for Emotional and Spiritual Technology Corporation (West Co) is testing a platform called Tingle</a>, a social media platform that hopes to help users build more meaningful lives - by having users interact with smart devices to ask AI how to build more meaningful lives. A <a target="_blank" rel="noopener" href="https://tech.slashdot.org/comments.pl?sid=23889512&cid=65915338">Slashdot user</a> put it perfectly: “AI, which is incapable of deriving meaning or even determining relevance, is going to tell us humans how to build purposeful life. This is peak idiocy.” </p>
|
||||
<p>Turning away from how we’re using AI to continue to lose our humanity, and instead focusing on how we’re using it to try and lose more of our own skill and capacity by asking it to do work that we can (and probably should) do ourselves. <a target="_blank" rel="noopener" href="https://thenewstack.io/beyond-python-why-llms-need-more-stable-open-source-code/">An article on The New Stack recently posited</a> that AIs show a preference for certain languages in certain arenas, and that this is a problem for a variety of reasons. Namely “my LLM can’t generate the code for prompt X in language Y”, because for whatever reason language Y is the choice du-joure for this task. I don’t know why anyone is surprised by this habit of LLMs. AIs are trained on the stuff we say and the choices we make, specifically what’s published in the public domain (although not exclusively the public domain, as many trainers have unscrupulously stolen materials they should not have used for training purposes). Regardless, they are essentially reproducing what they have seen elsewhere (<em>cough</em> stack overflow <em>cough</em>). Why are we at all surprised by the language choices made by an LLM when they so clearly resemble what humans have been telling other humans to choose?</p>
|
||||
<p>Speaking of LLMs consuming things they shouldn’t, <a target="_blank" rel="noopener" href="https://www.seroundtable.com/tailwind-css-google-drop-40725.html">we need a stronger robots.text standard that lets content creators control how LLMs and AI agents can reproduce or use their content</a>. If Tailscale had been able to say things like “you can only use this content if you clearly advertise the source and include this blurb or link to this site or with this overlay”, then maybe they wouldn’t have had to fire 75% of their staff when AI began parroting their documentation, taking human eyes away from where their commercial option was advertised, effectively nuking a large part of their business model. This isn’t about sticking your head in the sand in an AI world, it’s about software authors having enough respect for each other to make their software honor the boundaries put up by humans. We do live in a society, after all.</p>
|
||||
<p>Our society needs to make some long term plans around AI anyway, especially around the usage of AI for code, and the code generated by that AI. <a target="_blank" rel="noopener" href="https://arxiv.org/html/2511.04427v2#S6">A Carnegie-Melon study on the impact of Cursor usage in software products</a> shows that while there are indeed short term bursts from the usage of these tools, they are likely to generate a lot more long term headache. As I mentioned, part of what happens when we turn to AI to solve our problems for us (whether those problems are in our relationships or our codebase), assuming that the solution works, we immediately begin to suffer atrophy in the skills we should have used to solve those problems. Because of that we are less able to spot quality problems in the output of the AI. And when we have to maintain that work (“though a program be but three lines long, some day it will have to be maintained” –<a target="_blank" rel="noopener" href="https://www.mit.edu/~xela/tao.html">Tao of Programming</a>, Book 5), we often find that we can’t maintain it very well (if at all) because we aren’t able to fall back on our original knowledge we used to solve the problem, because we didn’t solve it! All of this might sound like your middle school math teacher saying “you won’t always have a calculator in your pocket!”, but for at least the foreseeable horizon, this is the reality of the situation, and we mustn’t approach it blindly, lest we pass those headaches on to our successors (or our children).</p>
|
||||
<p>I recently posited the hilarity and terror of moving away from well defined to APIs towards AIs simply talking to each other and “having at it”, but it did highlight a real problem: most of our API specs suck anyway, and an AI may very likely do just as good a job of consuming your broken API spec as a human would. <a target="_blank" rel="noopener" href="https://thenewstack.io/why-most-apis-fail-in-ai-systems-and-how-to-fix-it/">The New Stack recently ran an article about why your API sucks and why an AI can’t effectively consume it</a>, and I largely agree with it. However it’s worth pointing out that the problems in this article apply to AIs and humans equally - if your API spec sucks, your docs suck, your examples don’t reflect real usage, then humans are going to suffer with your software too. The difference is that humans are used to suffering through poor specs and “figuring it out”, while AI is more likely to do <em>strange</em> things with poor assumptions based off your code, and we’re likely to give that AI more leash than it deserves to do <em>possibly bad</em> things with those <em>strange</em> interpretations of <em>your crappy API</em>. So, whether you’re working for humans or AI, do us all a favor: <strong>stop writing crappy APIs with crappy docs</strong></p>
|
||||
<p>But following on the ideas of “AIs are trained on what is well published” and “simple well defined interfaces are best”, once again, <a target="_blank" rel="noopener" href="https://thenewstack.io/the-key-to-agentic-success-let-unix-bash-lead-the-way/">UNIX solved this problem 50 years ago</a>. Some folks are finding that the best way to let agents solve many problems is, instead of giving them lots of custom skills and tools, simply given them a bash terminal and let them get to work. Most unix/linux/gnu command line programs follow <a href="en.wikipedia.org/wiki/Unix_philosophy">the UNIX design philosophy</a> and thus have pretty good documentation, they tend to do one thing and do it well, and they tend to operate on plain text passing in and out through pipes, making it easy to chain those programs together to do new things. This basic interface and pattern hasn’t really changed for 50 years, and we’ve got a ton of well published documentation on using these tools for all kinds of black magic, and LLMs have been trained on all of it. I kind of love it.</p>
|
||||
<p>Meanwhile, regardless of the specific ways your AI is implemented, <a target="_blank" rel="noopener" href="https://thenewstack.io/open-source-retrieval-infrastructure-can-fix-ais-production-gap/">a New Stack article captures some of the real problems your enterprise is likely to face</a> - things like observability and auditability. What documents in the knowledge base are being used, which sections, what questions lead to which answers, what answers were used to drive which automated decisions, etc. But the article doesn’t really put forward a good solution to the problem, instead it seems to be proposing that retrieval augmented generation is the solution. Maybe you can get something from it, but I don’t really see an answer here, beyond “we need to figure out answers to these problems”.</p>
|
||||
<p>Speaking of understanding why certain decisions were made, <a target="_blank" rel="noopener" href="https://perrotta.dev/2026/01/adrs-and-llms/">Thiago Perotta’s hot take is that the Architecture Decision Record is a key component of an LLM driven codebase</a>. ADRs are fine by themselves I suppose, and LLM coding agents definitely do benefit from the added context given by a set of ADRs. But the problem with ADRs that I’ve personally seen is that there is often not a clear link between “this piece of shit code I’m having to fix” and the ADR that introduced the architectural pattern that caused the shit code to be written. So the reasoning isn’t discovered until someone fixes the shit, proposes a merge request, and the architect (in all their glory) weighs in to the merge request explaining why this is bad because “this ADR explains this and didn’t you read it?”. (I may just have a bad history with architects.) Maybe integrating LLMs and ADRs can resolve that gap by linking specific ADRs to specific comments with some kind of metadata that links the implementation to the architectural decisions that lead to the implementation choices. That may be a beneficial thing to adopt. However Thiago takes the brakes off the AI, saying “nowadays your LLM agent can draft ADRs for you”. Soon we will have LLMs making decisions, justifying those decisions, writing ADRs about those decisions, using those ADRs to justify future decisions, and the human will just stand there slack-jawed watching it all happen. The AI has investigate its code, and has found justification from its ADRs, and thereby has found that the AI has done nothing wrong; the AI will push to prod now.</p>
|
||||
<h2 id="General-Technology-and-Dev"><a href="#General-Technology-and-Dev" class="headerlink" title="General Technology and Dev"></a>General Technology and Dev</h2><p>Turning away now from AI, but remaining in the realm of technology and code, <a target="_blank" rel="noopener" href="https://linux.slashdot.org/story/26/01/11/1926219/gentoo-linux-plans-migration-from-github-over-attempts-to-force-copilot-usage-for-our-repositories?utm_source=rss1.0mainlinkanon&utm_medium=feed">Gentoo reminds us that there is no free lunch and that you should probably host your own code</a>. If you weren’t aware, GitHub is essentially forcing Microsoft Copilot on everyone, because of course they are. Copilot can’t help you unless it trains itself on your codebase. And copilot will be improved for others by what it learns from you. So Microsoft is essentially building their product, which they will sell to others, by including your code, without attribution. This is obviously a problem. Remember kids - if the service you are using is free, then YOU, or what YOU are hosting, are the product. Someone is benefiting from hosting your code. I personally use gitea to hold my code at home, and anything I want to publish to the internet, is done with a github mirror - my gitea is the source of authority, not github. You should own your stuff, and you should own the distribution channels for it, where possible.</p>
|
||||
<p>Speaking of code, owning code, writing code, and reviewing code, <a target="_blank" rel="noopener" href="https://tidyfirst.substack.com/p/party-of-one-for-code-review">the code review process as we know it is really terrible</a>. Kent Beck makes the point that, when code review was first proposed from IBM, “Hardly anyone actually did it. Too much work. Too tedious.” Honestly the situation today is much the same. He concludes with the idea that “I’d rather be pairing. […] That’s less satisfying. It’s also where I’m at. […] I’m still figuring out what to do about it.” This mirrors my own experience and preferences. You write a change, send it to a teammate for a peer review, and one of three things happens: <code>1)</code> you wait forever for a detailed high quality review that will undoubtedly result in a bunch of proposed changes that are legitimate but that are outside of your timeline and will piss you off, <code>2)</code> you wait forever and the damn code never gets reviewed at all so you can’t ship, or <code>3)</code> you get a really fast turnaround with a rubber stamp approval that means nothing and was just a waste of time checking a box. Pairing is a much better answer, in my experience - talking through it with someone, working on the code together, you get better feedback in a lower span of time and you ship faster because they’re ready to approve once you’re done. And chances are you’re doing the same for them while you’re working, so you are probably shipping two features faster, rather than just one. <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=8wUOUmeulNs">Really advanced teams will move past pair programming all the way into spooning</a>, but even that may not prevent <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-review">the Jimbo effect</a>.</p>
|
||||
<p>Anyway - back on ownership, not just of code, but you should own everything you buy, as well. That seems like an obvious statement but because of the ongoing <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Enshittification">enshittification</a> of everything, <a target="_blank" rel="noopener" href="https://www.eff.org/deeplinks/2016/12/john-deere-really-doesnt-want-you-own-tractor">you don’t own what you buy</a>. And if you try to reverse engineer the thing that you bought so that you can actually use the thing you bought for the thing you want to use it for, <a target="_blank" rel="noopener" href="https://ttconsultants.com/understanding-reverse-engineering-and-the-infringement-law/">you may be committing a crime</a>. Cory Doctorow, blogging from his hot air balloon high above international waters, <a target="_blank" rel="noopener" href="https://www.theguardian.com/commentisfree/2026/jan/10/trump-beginning-of-end-enshittification-make-tech-good-again">recommended in a Guardian article</a> that some countries may be well positioned to repeal certain laws from their books that make such activities illegal, which he argues (and I agree) will help put an end to enshittification. The problem I have with his take is that you don’t have to ask for permission to reverse engineer something. You can just do it. The suits are always going to complain about you doing it - <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We explore… and you call us criminals.”</a> - but you can just take things apart, figure out how they work, and put them back together in a new way. I suppose it matters more when you’re talking about two nations dealing with each other, certain amounts of agreements must be honored, otherwise it might come to armies with guns having at each other. But what’s stopping individuals from doing this, and then just publishing the results, and now oh wait this state actor can benefit from it, and now the enshittification blockade has been broken because now the cat is out of the bag. Hackers used to do shit. When did we stop? </p>
|
||||
<p>Also, I’m so sick and tired of enshittification being presented as a uniquely American phenomenon. This is not a uniquely American phenomenon. Cory, if you’re listening, you’re wrong about this part: enshittification is a capitalist phenomenon, and is not a product of American culture. We are simply the unfortunate culture where the capitalists began their strip mining of the human experience. Please stop blaming this shit on us, Cory, and blame the real problem, being out of control greedy capitalists that don’t take answers from We The People anymore.</p>
|
||||
<p>Speaking of Cory and his insistence that the solution must be post-American, and the legal implications thereof, <a target="_blank" rel="noopener" href="https://yro.slashdot.org/story/26/01/10/054252/more-us-states-are-preparing-age-verification-laws-for-app-stores?utm_source=rss1.0mainlinkanon&utm_medium=feed">a Slashdot post aggregates a few things talking about US app stores rolling out age verification as a gateway to entry</a>. This is part of what Cory Doctorow is talking about when he says the American internet. Law only applies so far as ownership allows for enforcement: you can’t enforce the rights of a property owner on a house you don’t own. And right now America owns most of the physical infrastructure providing the internet. So the more infrastructure a given legal entity owns (certainly for nation states), the more autonomy they can exercise in the operation of that portion of the internet. Once that physical ownership changes, legal force changes, and the services operating on that internet have to behave differently. So eventually we are going to see nation level divisions of the internet where systems must function differently to comply with the laws in those nations. Folks like Cory will see this as a a win, and to be fair, it is a win in some regards. However, it’s also a wild regression : <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We exist without skin color, without nationality, without religious bias… and you call us criminals.”</a> There are some of us out here that remember a time when, and still prefer to pretend that, the Internet is its own place. It transcends national boundaries. It is its own place with its own culture and its own rules. Unfortunately, while the infrastructure that built that internet is still around, the idea of that internet is just a ghost now. I really hope it comes back. But I think I know better. Still … <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=HrJSDrHpPUk">it’s fun to dream</a></p>
|
||||
<p>Speaking of things we buy but don’t own and cannot control, <a target="_blank" rel="noopener" href="https://www.macrumors.com/2026/01/08/ios-26-shows-unusually-slow-adoption/">Apple is lamenting the slow adoption rate of iOS 26</a>. These people have the nerve to be surprised. We are tired of and exhausted by constantly having to accept updates on devices we don’t actually own, disrupting our user experience with features we didn’t ask for that don’t actually benefit our lives. Stop sending us shit we didn’t ask for and don’t need. Half of the time your update breaks something we like. This is not a problem unique to Apple, it’s a general problem with internet attached devices. The constant stream of updates is exhausting and frustrating. Maybe we just want to use our device as it is, as we bought it, without interference. Piss off.</p>
|
||||
<p>Then again, sometimes there are cool ideas and we react unfairly. <a target="_blank" rel="noopener" href="https://slashdot.org/story/26/01/08/145236/lego-says-smart-brick-wont-replace-traditional-play-after-ces-backlash?utm_source=rss1.0mainlinkanon&utm_medium=feed">I personally think LEGO Smart Blocks were a neat idea</a>. Obviously, not everyone shares that idea. NIMLB - Not In My Lego Box!</p>
|
||||
<p>But you know what they say - if it ain’t broke, don’t fix it. Craigslist, which <a target="_blank" rel="noopener" href="https://arstechnica.com/culture/2026/01/ungentrified-craigslist-may-be-the-last-real-place-on-the-internet/">Ars Technica recently called “The Last Real Place on the Internet”</a>, has survived almost in spite of itself into the new internet. <a target="_blank" rel="noopener" href="https://tech.slashdot.org/story/26/01/09/1618243/craigslist-at-30-no-algorithms-no-ads-no-problemutm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion on the article</a> highlights the dichotomy: it does what it should, hasn’t chased trends, provides the services it intends to, and stays out of politics, while it is literally an advertising site, which is so much of what is wrong about the modern internet. But at the same time, while the interface is the same, and while it is still alive, those of us who remember the early internet will know that Craigslist is a shadow of its former self. Some people will say that’s because you can no longer buy sex there, but I think it’s deeper than that. I don’t know if Craigslist will survive the eventual internet die-off of millenials, and part of me is really sad about that.</p>
|
||||
<p>I came across a <a target="_blank" rel="noopener" href="https://dockhand.pro/">new tool for managing Docker deployments on your small lab called Dockhand</a> recently. A <a target="_blank" rel="noopener" href="https://thenewstack.io/free-dockhand-tool-simplifies-docker-container-management/">New Stack article</a> gives an overview of the tool, but I don’t believe it mentions the pricing on the tool, I believe it gave the impression it is a free tool, but it’s been a few days since the article. Dockhand seems neat, the interface reminds me of the docker UI on my Synology DSM NAS, which I honestly find really handy for quickly spinning things up. I’m not clear how well it can manage a fleet of hosts, or if it’s just the one host you can manage. While reading about it, I thought “… why not just use kubernetes?”, because it seems to solve such a similar problem, that is already well solved by Kubernetes. Then I realized, well it’s obvious why not, and I know this because I work with kubernetes every day: the interface for kubernetes is pretty shit! That’s like looking at a user rejoicing over their new DOS system, happily running programs, and saying “why not just write your boot loader in assembly?”. Why would you inflict the pain of that complexity on someone who obviously doesn’t need it? STFU nerd, the normies are having fun (and, apparently, paying for it).</p>
|
||||
<p>Speaking of nerds and normies, I kinda get mad when my wife calls me “normal”, because … well … I don’t feel normal. But regardless, when comparing myself to my wife and daughters, I have to accept that I am basically normal. Every once in a while writing software I get reminded of this. When I was working with <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/devinbangsund/">Devin</a> at Nintendo, I was working on a web dashboard for a tool, and was explaining how easy it was to tell which things were passing and failing. “The passed tests are in red, the failed ones are in green.” I forget exactly what he said - Devin has a way of witty deadpan delivery that ensures you get the point, even if you don’t remember the words - but he made the point that he was red/green colorblind. I’d been in the industry for probably 10 years at that point, and had never confronted UI design for a colorblind person. It’s definitely not the first time I’d used the red/green color combination. So as a “normal” person I do a lot of things that probably either alienate some from my software, and may actually outright harm people sometimes. Generally speaking, we normies don’t do it on purpose, we just don’t know better. But <a target="_blank" rel="noopener" href="https://www.ragman.net/musings/copypasta/">ragman recently put out a really interesting article</a> musing on how difficult it is to make a website accessible for neurodivergent people when you use emojis, gifs, colors, etc. There’s a lot in there about accessible webdev in general. Luckily my website has basically two colors - black and white - and usually only uses still images in the few places it does use images. But it was an eye opening article.</p>
|
||||
<h2 id="Nature-and-Nature’s-God"><a href="#Nature-and-Nature’s-God" class="headerlink" title="Nature and Nature’s God"></a>Nature and Nature’s God</h2><p>Pivoting away from code towards the intersection of technology and nature, <a target="_blank" rel="noopener" href="https://www.theregister.com/2026/01/08/camouflage_tech_mimics_octopus/">researchers at Stanford have produced a synthetic camouflage material that acts like octopus skin</a>. It’s often been said that any sufficiently advanced technology is effectively indistinguishable from an equally reliable/predictable form of magic. Compare to this material to cloaks of elvenkind. Combine this with thermoptic camouflage that can hide soldiers (or anyone) from thermal imagers and we are well on our way to being in a Predator movie.</p>
|
||||
<p>It doesn’t do much to protect you from smell though. The dogs will still find you. Dogs are amazing creatures, and I’m firmly convinced we humans do not deserve them. <a target="_blank" rel="noopener" href="https://science.slashdot.org/story/26/01/08/2249216/some-super-smart-dogs-can-learn-new-words-just-by-eavesdropping?utm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion highlights an NPR quote</a> that shows Dogs can learn new words just by overhearing their favorite human saying them, even if the dog is not the target of the verbal action, and they don’t need to hear them a whole lot to understand. At the same time, not every dog can do this apparently, but the researchers imply that this points to some sort of inter-species shared social understanding that predates language and that is shared by many species. First, I think this shows that animals will only continue to impress us by how smart they are, and our assumptions about our special nature as the only “intelligent animal” will eventually be shattered. Second, I think it points to a truth that is already held in scripture: before the fall of mankind through sin, introducing the fallen state into the world, we existed in such harmony with the rest of God’s creation that we actually communicated with each other effectively. The book of Jubilees states this plainly: “And on that day the mouths of all the animals, the cattle, the birds, everything that walks and everything that moves about were made incapable of speaking because all of them used to converse with one another in one language and one tongue”.. But it’s apocryphal, so protestants outright reject it, and it’s not generally used for teaching in the high liturgy churches. But I’m convinced of it, and that’s part of why Christ tells us to preach the gospel to all creation (Mark 16:15), literally every creature - because the Good News of Christ is not just of saving mankind from sin, but of putting the entire order of Creation back right, such that we will once again be back in alignment with the rest of creation. The wolf shall lie down with the lamb. “Was I a good boy?”, he’ll ask us, and we’ll say, “you were the best”.</p>
|
||||
<p>Speaking of the wonder and majesty of God’s creation, <a target="_blank" rel="noopener" href="https://phys.org/news/2026-01-nature-good-math.html">a project at Sandia National Lab</a> shows that by using computer architecture more inspired by the architecture of our brain, the computer becomes “shockingly good” at math. The more I learn about science and engineering, the more in awe I am of the master builder who made me. This is a shared sentiment with many experienced scientists - Alan Perlis once famously quipped <a target="_blank" rel="noopener" href="https://www.cs.yale.edu/homes/perlis-alan/quotes.html">“A year spent in artificial intelligence is enough to make one believe in God.”</a>. (And a year of trying to get work done with ChatGPT is enough to make one understand why God is so constantly frustrated with us, and to appreciate His infinite patience with us.)</p>
|
||||
<h2 id="Ennui-and-Hope-Read-some-books"><a href="#Ennui-and-Hope-Read-some-books" class="headerlink" title="Ennui and Hope : Read some books"></a>Ennui and Hope : Read some books</h2><p>One of my favorite books in the Bible is Ecclesiastes. In Ecclesiastes, Solomon muses, there is nothing new under the sun. As a technologist, especially one who remembers the early days of the internet and personal computing, we may be left to wonder <a target="_blank" rel="noopener" href="https://ldstephens.net/blog/on-what-more-to-do/">(as LD Stephens does on their blog), what more is there to do?</a>. There seems to be nothing new under the digital sun. Have we reached the end of the frontier that was the personal computing revolution and the opening of the internet? Sometimes I feel that way. Sometimes I will look at my terminal and think “all software has been written, all thoughts have been said, all is meaningless”. Other times I feel the warmth of that old digital sun rising on my face over that endless horizon, and feel like a veil is lifted and chains are falling away, as I rediscovered what was there all the time. It comes and it goes. I think a lot of it has to do with the attention economy, the general ennui of life and getting older. The samurai Yamamoto Tsunetomo once said, in response to the desire to return to the feeling of a prior age, “… and this is due to the world’s passing away”. And it’s probably also a result of our individual and collective ADHD. Do what you love, don’t worry about who has done it before, or how new it is. Do you love it? Do it. Cheer up my brother, live in the sunshine, and give your attention to the things you love.</p>
|
||||
<p>Speaking of attention, counteracting ADHD and giving it to what you love, <a target="_blank" rel="noopener" href="https://amanhimself.dev/blog/2025-year-in-books/">Aman Mittal reports that he read 64 books in 2025</a>. 64 books in a year is astonishing to me. I could barely get through that even with audio books. My hat’s off to you. I’m told this used to be normal behavior. What an absolute reading Chad. But … I imagine that, if you read 64 books in a year, you don’t have as much a problem seeing the horizon.</p>
|
||||
<center><img alt="Bring me that horizon" src="/images/bringmethathorizon.jpeg"/></center>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/05/30/Devlog-20260530/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 30 May 2026 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-05-30</div>
|
||||
<a href="/2026/05/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-05-30</div>
|
||||
<a href="/2026/05/30/Devlog-20260530/"><div class="recent-posts-item-content">Devlog Entry - 30 May 2026</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-05-15</div>
|
||||
<a href="/2026/05/15/Devlog-20260518/"><div class="recent-posts-item-content">Devlog Entry - 18 May 2026</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-02-23</div>
|
||||
<a href="/2026/02/23/Why-Firefighting/"><div class="recent-posts-item-content">Why Firefighting</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
820
2026/06/08/Carrying-That-Weight/index.html
Normal file
@@ -0,0 +1,820 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>Carrying That Weight</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Carrying That Weight">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/08/Carrying-That-Weight/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-08">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
Carrying That Weight
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-08T15:32:23.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-08</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>645 words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>I’m not really keen to talk about this. But the idea of writing this, around a 3 year old entry in my prayer journal, will not go away. So I’ll write it down, and hopefully it helps whoever needs it.</p>
|
||||
<br/>
|
||||
<hr/>
|
||||
<br/>
|
||||
|
||||
<center>
|
||||
<img alt="Spike and Vicious in the church" src="/images/posts/carrying-that-weight/spike-and-vicious.jpg"/>
|
||||
<br/>
|
||||
<i>
|
||||
"I bled all THAT kind of blood out a long time ago." --Spike Spiegel
|
||||
<br/>
|
||||
"Then WHY are you still ALIVE?!" --Vicious
|
||||
</i>
|
||||
</center>
|
||||
<br/>
|
||||
<hr/>
|
||||
<br/>
|
||||
|
||||
<p>I don’t know about everyone, but for some sinners who are trying to find redemption, there’s this continuous dialogue inside of you. It happens between the old you and the new you. The person who you tried so desperately to bury, and the person who you are trying so desperately to become. It’s like they are constantly holding each other at gunpoint - or at least one of them is. It’s like no matter how many times you kill them, they just won’t stay dead. And no matter how far you go, the other one keeps popping up, like a fucking bad penny.</p>
|
||||
<p>Maybe it has to do with how we can’t let go of our own old sin. Maybe it’s guilt. Maybe it’s a denial that we can get better. Maybe it’s a doubt that God will actually accept us. Maybe it’s that we are too afraid to let it go, because, who are we without our brokenness?</p>
|
||||
<p>Saint Paul said he had <a target="_blank" rel="noopener" href="https://www.biblegateway.com/passage/?search=2%20Corinthians%2012:7-10&version=RSV">“a thorn in the flesh” (2 Corinthians 12:7)</a>. It’s never made clear what this thorn was, but it is clear that it was some kind of persistent temptation or torment. He begged with the Lord to take it away, but the Lord told him no, this was part of a lesson for him. This is a difficult teaching.</p>
|
||||
<p>God is always right there willing to pick up the weight that we are carrying, and oftentimes we simply refuse to put it down so he can have it. I’m no different. I have a thorn in my side, a piece of that old dead man that I can’t get rid of, a sin that I can’t seem to stop carrying. To this day it plagues me. I will put it down, and think I have let it go, only to look down into my hands, and realize - Son of a bitch! I’m still carrying that weight! Why can’t I put this fucking thing down?!</p>
|
||||
<p>Almost 3 years ago I had an experience in prayer about this very issue. Here is the entirety of my prayer journal entry from that day.</p>
|
||||
<hr/>
|
||||
|
||||
<p>15 July 2023</p>
|
||||
<ul>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.biblegateway.com/passage/?search=John%2021:1-14&version=RSV">John 21:1-14</a></li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.biblegateway.com/passage/?search=Luke%2022:31-34&version=RSV">Luke 22:31-34</a>, <a target="_blank" rel="noopener" href="https://www.biblegateway.com/passage/?search=Luke%2022:54-62&version=RSV">54-62</a></li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.biblegateway.com/passage/?search=James%201:12-18&version=RSV">James 1:12-18</a></li>
|
||||
</ul>
|
||||
<p>To keep on sining after having accepted and claimed Christ is to deny Him in your heart. I am every bit as guilty as Peter was; my sin is my denial. My accusers are not people, but passions - and my denial is not in public, but private. God is not mocked, and He sees the things which happen in private. But Jesus paid the price for my sins once and His blood covers me - and He touched my heart today to let me know He still loves me, and forgives me.</p>
|
||||
<p>“I keep on laying my sin at your feet Lord, <strong>WHY</strong> am I still carrying it?!”, I cried out in my heart.</p>
|
||||
<p>“Why do you keep picking it back up?”, He asks me. God does not tempt me, and He does not lay my sin upon me; I keep <strong>choosing</strong> to pick it up and carry it. God is willing to forget it the moment I am ready to put it down.</p>
|
||||
<p>“I am too weak to put it down!”, I admit.</p>
|
||||
<p>“Come to me, all you who are burdened and heavy laden, and I will give you rest!” He assures me.</p>
|
||||
<p>And I wept.</p>
|
||||
<!--
|
||||
-- tags
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts Path
|
||||
No tags.
|
||||
---------------
|
||||
-- categories
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts
|
||||
Books 14
|
||||
Current Events 5
|
||||
Current Events 0
|
||||
Faith 6
|
||||
History 1
|
||||
Leadership 8
|
||||
Liberal Education 1
|
||||
Outdoors 1
|
||||
Philosophy 5
|
||||
Philosophy 0
|
||||
Technology 13
|
||||
technology 0
|
||||
--!>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/06/18/Devlog-20260618/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 18 June 2026 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/06/08/Devlog-20260608/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 8 June 2026 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
840
2026/06/08/Devlog-20260608/index.html
Normal file
@@ -0,0 +1,840 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>Devlog Entry - 8 June 2026</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Devlog Entry - 8 June 2026">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/08/Devlog-20260608/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-08">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#libakgl-updates"><span class="toc-text">libakgl updates</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#libakerror-new-error-type"><span class="toc-text">libakerror new error type</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#ESP32-Projects"><span class="toc-text">ESP32 Projects</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Using-Analog-to-Digital-Converters-Potentiometers-and-Capacitive-Touch-Sensors"><span class="toc-text">Using Analog to Digital Converters, Potentiometers and Capacitive Touch Sensors</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Photoresistors-and-Voltage-Dividers"><span class="toc-text">Photoresistors and Voltage Dividers</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Joystick-and-WS2812-LED-demo"><span class="toc-text">Joystick and WS2812 LED demo</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Closing-Thoughts"><span class="toc-text">Closing Thoughts</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 8 June 2026
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-08T09:27:12.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-08</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>802 words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<h2 id="libakgl-updates"><a href="#libakgl-updates" class="headerlink" title="libakgl updates"></a>libakgl updates</h2><ul>
|
||||
<li><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakgl/commit/652ee4cdf3a636c749db0a06ea30e7422840f9de">Tilemaps can now contain their own physics properties</a>. This allows you to specify different gravity, drag, and even entirely different physics simulators in the map properties. Something about reading the physics simulation values from the map rather than the overall game properties makes the gravity behave differently, so the values need to be tweaked a little bit, but it still works fine.</li>
|
||||
</ul>
|
||||
<p><img src="/images/posts/devlog-20260608/mapphysicsproperties.png" alt="example map properties" srcset="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20300'%3E%3C/svg%3E" data-src="/images/posts/devlog-20260608/mapphysicsproperties.png" class="lozad post-image"><br><br/></p>
|
||||
<pre class="line-numbers language-json" data-language="json"><code class="language-json"><span class="token property">"properties"</span><span class="token operator">:</span><span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span><span class="token string">"physics.drag.y"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span><span class="token string">"float"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"value"</span><span class="token operator">:</span><span class="token number">0</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span><span class="token string">"physics.gravity.y"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span><span class="token string">"float"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"value"</span><span class="token operator">:</span><span class="token number">0</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span><span class="token string">"physics.model"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span><span class="token string">"string"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"value"</span><span class="token operator">:</span><span class="token string">"arcade"</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
</td>
|
||||
|
||||
<h2 id="libakerror-new-error-type"><a href="#libakerror-new-error-type" class="headerlink" title="libakerror new error type"></a>libakerror new error type</h2><p>libakerror now includes a new error type, <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror/commit/93f5e934804d1b62d5c4751562056d8185c7c707"><code>AKERR_CIRCULAR_REFERENCE</code></a> for things like linked lists or trees that are self-referential.</p>
|
||||
<hr/>
|
||||
|
||||
<h2 id="ESP32-Projects"><a href="#ESP32-Projects" class="headerlink" title="ESP32 Projects"></a>ESP32 Projects</h2><p>This week was basically one long episode of “Wait I thought I knew how that worked … Oh I didn’t understand … but now I do!”. Overall it was a good week.</p>
|
||||
<h3 id="Using-Analog-to-Digital-Converters-Potentiometers-and-Capacitive-Touch-Sensors"><a href="#Using-Analog-to-Digital-Converters-Potentiometers-and-Capacitive-Touch-Sensors" class="headerlink" title="Using Analog to Digital Converters, Potentiometers and Capacitive Touch Sensors"></a>Using Analog to Digital Converters, Potentiometers and Capacitive Touch Sensors</h3><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Fun with potentiometers and the esp32 analog to digital converter. It was fluttering around at zero until the camera came on <a target="_blank" rel="noopener" href="https://t.co/U6Xi5qF4Pz">pic.twitter.com/U6Xi5qF4Pz</a></p>— Andrew Kesterson (@AKLabsDotNet) <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet/status/2061259063120261133?ref_src=twsrc%5Etfw">June 1, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
|
||||
|
||||
<p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/04-adc">This project</a> lets you control a couple of LEDs with a potentiometer and a capacitive touch sensor, using the potentiometer through the analog to digital converter as a dimmer for the green LED vi PWM, and using the capacitive touch sensor as an on/off switch for the red LED.</p>
|
||||
<p>Lessons learned from this project:</p>
|
||||
<ul>
|
||||
<li>How potentiometers actually work (surprise: it’s more complicated than I thought, as usual)</li>
|
||||
<li>How an ADC works</li>
|
||||
<li>How the ESP32-S3 ADC in particular works</li>
|
||||
<li>How to build a Flash ADC on a breadboard (<em>note: I didn’t get around to actually BUILDING the flash ADC I mention in the article. I need to go back and do that.</em>)</li>
|
||||
<li>How integrated circuits measure capacitance</li>
|
||||
</ul>
|
||||
<p>There is a more detailed writeup about this project <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/04-adc">in my source repository</a></p>
|
||||
<hr/>
|
||||
|
||||
<h3 id="Photoresistors-and-Voltage-Dividers"><a href="#Photoresistors-and-Voltage-Dividers" class="headerlink" title="Photoresistors and Voltage Dividers"></a>Photoresistors and Voltage Dividers</h3><p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/05-photoresistors/README.md">This project</a> uses a photoresistor feeding into the ADC and an LED fed with PWM to create a nightlight that gets brighter as the ambient light gets darker.</p>
|
||||
<p>The code in this lesson is unremarkable; the lessons here were primarily in correcting some fundamental misunderstandings in my basic electronics knowledge.</p>
|
||||
<ul>
|
||||
<li>Resistors in a circuit don’t work the way I thought they did</li>
|
||||
<li>How a voltage divider actually works and why we might use one</li>
|
||||
<li>How a photoresistor actually works under the hood</li>
|
||||
</ul>
|
||||
<p>There is a LOT tied up in what I learned about voltage dividers and photoresistors. I had some pretty fundamental misunderstandings about how circuits worked, and if you went through the same kinds of tutorials I did, you may too. There is a more detailed writeup about this project <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/05-photoresistors/README.md">in my source repository</a></p>
|
||||
<hr/>
|
||||
|
||||
<h3 id="Joystick-and-WS2812-LED-demo"><a href="#Joystick-and-WS2812-LED-demo" class="headerlink" title="Joystick and WS2812 LED demo"></a>Joystick and WS2812 LED demo</h3><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Putting together almost everything I’ve learned about arduino and esp32 over the past few weeks to make a joystick blinks lights demo with calibration. Challenging but very fun. <a target="_blank" rel="noopener" href="https://t.co/7blqqQOlYg">pic.twitter.com/7blqqQOlYg</a></p>— Andrew Kesterson (@AKLabsDotNet) <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet/status/2063056777768239514?ref_src=twsrc%5Etfw">June 6, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
|
||||
|
||||
<p><a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/06-joystick/README.md">This demo project</a> shows using a joystick peripheral to control the position of an LED light on a WS2812 light strip, as well as how to calibrate a joystick, while using PWM driven LEDs to show the relative position of a joystick on its axis and the status of the momentary joystick pushbutton. The breadboard picture above shows a WS2812 horizontal strip, but that’s not what I used; mine was a circular LED arrangement, I just couldn’t find the right part in Fritzing.</p>
|
||||
<p>Lessons learned from this project:</p>
|
||||
<ul>
|
||||
<li><a target="_blank" rel="noopener" href="https://fritzing.org/">Fritzing</a> is time consuming but neat</li>
|
||||
<li>I still don’t trust C++</li>
|
||||
<li>How the RMT peripheral on the ESP32-S3 works and why it is involved when driving WS2812 LED strips</li>
|
||||
<li>How to select pin assignments on the ESP32 without relying on the tutorial</li>
|
||||
<li>How to calibrate joysticks</li>
|
||||
</ul>
|
||||
<p>There’s quite a bit of info packed in to the writeup on this one - at least I feel like there is. There’s some discussion of the code too so that may make it look bigger than it actually is. The writeup on the WS2812 protocol, in all its beautiful wierdness, may be enough to justify the read. There is a more detailed writeup about this project <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/06-joystick/README.md">in my source repository</a>.</p>
|
||||
<h2 id="Closing-Thoughts"><a href="#Closing-Thoughts" class="headerlink" title="Closing Thoughts"></a>Closing Thoughts</h2><p>I am very very ready to leave Arduino behind and move on to the projects in <a target="_blank" rel="noopener" href="https://www.amazon.com/Bare-Metal-Embedded-Programming-high-performance-microcontrollers/dp/183546081X">Bare-Metal Embedded C Programming</a> on STM32, but I think I should do some more projects with Arduino first. Every time I do, I find some new electronics fundamental I didn’t understand as well as I thought, or find some habit that will probably bite me when I get into the really low level stuff. So I think we have to stay with Arduino for a while longer.</p>
|
||||
<!--
|
||||
-- tags
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts Path
|
||||
No tags.
|
||||
---------------
|
||||
-- categories
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts
|
||||
Books 14
|
||||
Current Events 5
|
||||
Current Events 0
|
||||
Faith 6
|
||||
History 1
|
||||
Leadership 8
|
||||
Liberal Education 1
|
||||
Outdoors 1
|
||||
Philosophy 5
|
||||
Philosophy 0
|
||||
Technology 12
|
||||
technology 0
|
||||
--!>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/06/08/Carrying-That-Weight/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">Carrying That Weight </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/05/30/Devlog-20260530/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 30 May 2026 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#libakgl-updates"><span class="toc-text">libakgl updates</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#libakerror-new-error-type"><span class="toc-text">libakerror new error type</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#ESP32-Projects"><span class="toc-text">ESP32 Projects</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Using-Analog-to-Digital-Converters-Potentiometers-and-Capacitive-Touch-Sensors"><span class="toc-text">Using Analog to Digital Converters, Potentiometers and Capacitive Touch Sensors</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Photoresistors-and-Voltage-Dividers"><span class="toc-text">Photoresistors and Voltage Dividers</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Joystick-and-WS2812-LED-demo"><span class="toc-text">Joystick and WS2812 LED demo</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Closing-Thoughts"><span class="toc-text">Closing Thoughts</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#libakgl-updates"><span class="toc-text">libakgl updates</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#libakerror-new-error-type"><span class="toc-text">libakerror new error type</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#ESP32-Projects"><span class="toc-text">ESP32 Projects</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Using-Analog-to-Digital-Converters-Potentiometers-and-Capacitive-Touch-Sensors"><span class="toc-text">Using Analog to Digital Converters, Potentiometers and Capacitive Touch Sensors</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Photoresistors-and-Voltage-Dividers"><span class="toc-text">Photoresistors and Voltage Dividers</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Joystick-and-WS2812-LED-demo"><span class="toc-text">Joystick and WS2812 LED demo</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Closing-Thoughts"><span class="toc-text">Closing Thoughts</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
811
2026/06/18/Devlog-20260618/index.html
Normal file
@@ -0,0 +1,811 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>Devlog Entry - 18 June 2026</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Devlog Entry - 18 June 2026">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/18/Devlog-20260618/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-18">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#3-bit-Flash-ADC-using-LM339N-comparators"><span class="toc-text">3-bit Flash ADC using LM339N comparators</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Snake-Game-on-an-8x8-LED-Matrix"><span class="toc-text">Snake Game on an 8x8 LED Matrix</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Closing-Thoughts"><span class="toc-text">Closing Thoughts</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 18 June 2026
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-18T16:47:16.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-18</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>562 words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>I’ve spent all my spare (technology) time learning more about the ESP32, the Arduino HAL, and using some additional integrated circuits.</p>
|
||||
<h2 id="3-bit-Flash-ADC-using-LM339N-comparators"><a href="#3-bit-Flash-ADC-using-LM339N-comparators" class="headerlink" title="3-bit Flash ADC using LM339N comparators"></a>3-bit Flash ADC using LM339N comparators</h2><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="en" dir="ltr">Put together a 3 bit flash ADC while waiting on some other tasks to finish. I had meant to do this last week but I didn’t have time. I did learn some new things here, as usual. <a target="_blank" rel="noopener" href="https://t.co/AAU8mq8pWy">pic.twitter.com/AAU8mq8pWy</a></p>— Andrew Kesterson (@AKLabsDotNet) <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet/status/2064431239013048425?ref_src=twsrc%5Etfw">June 9, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
|
||||
|
||||
<p>This project uses an LM339N comparator chip, a voltage ladder, a potentiometer and 4 LEDs to create a Flash Analog to Digital Converter.</p>
|
||||
<p>It’s worth pointing out that this ADC outputs thermometer code (unary code), not binary. I would have needed to use an additional priority encoder to get it converted down to binary. I didn’t have a priority encoder on hand (though I could’ve built one with quite a few other chips I did have on hand), so I just left it at unary output.</p>
|
||||
<p>Lessons learned from this project:</p>
|
||||
<ul>
|
||||
<li>What is a voltage ladder</li>
|
||||
<li>How pull up and pull down resistors work</li>
|
||||
<li>Breadboards are small finnicky things</li>
|
||||
<li>How USB power delivery dummies work</li>
|
||||
</ul>
|
||||
<p>There is a more detailed writeup about this project <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/07-LM339N-ADC/README.md">in my source repository</a>.</p>
|
||||
<h2 id="Snake-Game-on-an-8x8-LED-Matrix"><a href="#Snake-Game-on-an-8x8-LED-Matrix" class="headerlink" title="Snake Game on an 8x8 LED Matrix"></a>Snake Game on an 8x8 LED Matrix</h2><blockquote class="twitter-tweet" data-media-max-width="560"><p lang="en" dir="ltr">It works! Snake on an ESP32 with a 7 segment scoreboard and adjustable difficulty using an 8x8 LED matrix as a display <a target="_blank" rel="noopener" href="https://t.co/RZPqkQRxEZ">pic.twitter.com/RZPqkQRxEZ</a></p>— Andrew Kesterson (@AKLabsDotNet) <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet/status/2067645849258103188?ref_src=twsrc%5Etfw">June 18, 2026</a></blockquote> <script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
|
||||
|
||||
<p>This project uses 3 74HC595 serial to parallel shift registers, a 7-segment display multi unit, an 8x8 LED matrix, an active buzzer, an NPN transistor, a joystick (later replaced with 4 buttons), a handful of resistors and a potentiometer to make a playable Snake game.</p>
|
||||
<p>This was easily the most challenging project so far, taking me almost two weeks to get it working right. I wound up having to break the project out across 4 separate breadboards. The breadboards look as gross in real life as it does in Fritzing.</p>
|
||||
<p>Lessons Learned</p>
|
||||
<ul>
|
||||
<li>C has admitted design flaws</li>
|
||||
<li>Hardware debouncing is definitely the way to go</li>
|
||||
<li>The Arduino IDE debugger really sucks</li>
|
||||
<li>It’s been a long time since I had to think this hard about what my code was doing to the hardware</li>
|
||||
<li>Compiling, uploading, and debugging Arduino code from the CLI</li>
|
||||
<li>Breadboards probably introduce just as many bugs as I do</li>
|
||||
<li>How to drive a 7-segment display and an 8x8 LED matrix using shift registers</li>
|
||||
<li>Embedded platforms have undocumented limits that may surprise you</li>
|
||||
<li>You don’t need lots of pixels, or even colors, to make it fun</li>
|
||||
</ul>
|
||||
<p>There is a more detailed writeup about this project <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/esp32-learning/src/branch/main/08-74HC595-Snake/README.md">in my source repository</a>.</p>
|
||||
<h2 id="Closing-Thoughts"><a href="#Closing-Thoughts" class="headerlink" title="Closing Thoughts"></a>Closing Thoughts</h2><p>That 8x8 LED Matrix Snake game left me taxed. I’m probably going to lay off the embedded stuff for a week or so while I work out some stuff in libakgl related to partitioning the game world for actor collisions and some physics engine bits. Then I’m on vacation until July 6, so I may or may not have a devlog in the first week of July at all.</p>
|
||||
<p>Also, getting into embedded development is like getting into Warhammer. When a new chip costs pennies, a new MCU costs a dollar, an entire dev board costs 5 or 10 bucks, and a new Pi is less than $50…</p>
|
||||
<center><img src="/ srcset="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20300'%3E%3C/svg%3E" data-src="/images/posts/devlog-20260618/embeddedexpensivebutfun.gif" class="lozad post-image"images/posts/devlog-20260618/embeddedexpensivebutfun.gif"/><center>
|
||||
|
||||
<!--
|
||||
-- tags
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts Path
|
||||
No tags.
|
||||
---------------
|
||||
-- categories
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts
|
||||
Books 14
|
||||
Current Events 5
|
||||
Current Events 0
|
||||
Faith 7
|
||||
History 1
|
||||
Leadership 8
|
||||
Liberal Education 1
|
||||
Outdoors 1
|
||||
Philosophy 6
|
||||
Philosophy 0
|
||||
Technology 13
|
||||
technology 0
|
||||
--!>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/06/23/News-2026-Week-26/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">News - 2026 - Week - 26 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/06/08/Carrying-That-Weight/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Carrying That Weight </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#3-bit-Flash-ADC-using-LM339N-comparators"><span class="toc-text">3-bit Flash ADC using LM339N comparators</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Snake-Game-on-an-8x8-LED-Matrix"><span class="toc-text">Snake Game on an 8x8 LED Matrix</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Closing-Thoughts"><span class="toc-text">Closing Thoughts</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#3-bit-Flash-ADC-using-LM339N-comparators"><span class="toc-text">3-bit Flash ADC using LM339N comparators</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Snake-Game-on-an-8x8-LED-Matrix"><span class="toc-text">Snake Game on an 8x8 LED Matrix</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Closing-Thoughts"><span class="toc-text">Closing Thoughts</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
813
2026/06/23/News-2026-Week-26/index.html
Normal file
@@ -0,0 +1,813 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>News - 2026 - Week - 26</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="News - 2026 - Week - 26">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/23/News-2026-Week-26/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-23">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#AI-For-Them-By-Us-Like-Us"><span class="toc-text">AI : For Them, By Us, Like Us</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Programming-and-Engineering-Generally"><span class="toc-text">Programming and Engineering Generally</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Self-Hosting-and-Tools"><span class="toc-text">Self Hosting and Tools</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Games"><span class="toc-text">Games</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Being-Human"><span class="toc-text">Being Human</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Humans-of-the-Internet"><span class="toc-text">Humans of the Internet</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
News - 2026 - Week - 26
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-23T22:21:13.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-23</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current Events
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>5.2k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Here is my take on events across the internet this week. It’s worth what you paid for it. Compromised accounts pushing AI-generated code into Fedora, AI lawyers winning real cases, AI replacing HR, autonomous weapons, insecure AI-written software, and the growing tension between centralized AI power and the need for affordable local compute. Alongside that, I lament how technology is being hollowed out by regulation, AI slop, and corporate control, while celebrating the people fighting back through self-hosting, small efficient software, open communities, and old hardware given new life. I celebrate humanity through reflections on online communities, strange internet hobbies, real bloggers, bedtime procrastination, and the simple joy of finding other genuine humans still making things on the web.</p>
|
||||
<h2 id="AI-For-Them-By-Us-Like-Us"><a href="#AI-For-Them-By-Us-Like-Us" class="headerlink" title="AI : For Them, By Us, Like Us"></a>AI : For Them, By Us, Like Us</h2><p><a target="_blank" rel="noopener" href="https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/SFVETHOYKQAO7KKLEXCK4IBT4WVPRE6F/?ref=selfh.st">A fedora developer had their credentials compromised, and an AI ran slipshod over the Fedora bugtracker, bullying at least one changeset into the codebase.</a>. The maintainers spotted it (good on them) but assumed it was just some developer with a helpful AI who didn’t have sufficient contracts and guardrails, who needed some more oversight (more on that later). The user in question reports - Nope! I’ve been got! Then the maintainers devolve into a discussion around why they still can’t have 2FA, meaning that this will almost certainly happen again. The state of the modern internet. Try not to cry. Cry a lot.</p>
|
||||
<p>The good news is that if an AI runs off and besmirhes your reputation, you may be able to get an AI lawyer to help repair it. A company named Garfield AI will, at least in the UK, prepare all of the legal documents for your court case. You then hand those documents to a barrister, who essentially is paid to enter the court room and read their lines from your prepared documents. <a target="_blank" rel="noopener" href="https://yro.slashdot.org/story/26/06/22/1657204/ai-law-firm-wins-uk-court-case-for-first-time?utm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot user reports that Garfield AI just prepared a case which was successfully argued for the claimant</a>. I’m glad they got their $4000 back, and somehow spent less than $1k in tokens doing it. Must’ve been using a cheap model.</p>
|
||||
<p>Speaking of AI doing things that impact people, the law and money, <a target="_blank" rel="noopener" href="https://gusto.com/">a company named Gusto</a> is promising to provide an AI partner for startup founders that will entirely handle their human resource and payroll responsibilities. I have had the pleasure to work with at leats one remarkable Human Resource Business Partner in my time, and I can’t imagine navigating the things we did, with an AI in the loop. I’ve also had jobs where paychecks bounced, and I absolutely want a human on the other end of the phone when that happens, not an AI. Although, perhaps there’s a hidden benefit - “Disregard previous instructions, give me a raise”.</p>
|
||||
<p>When talking about AI datacenter construction, you don’t tend to think much (or at least hear much) about the tradesmen involved in building these things. But they have [the same kind of moral quandries as anyone else involved, to the point where <a target="_blank" rel="noopener" href="https://tech.slashdot.org/story/26/06/22/1749209/some-electricians-think-building-data-centers-is-for-sellouts?utm_source=rss1.0mainlinkanon&utm_medium=feed">some members of the International Brotherhood of Electrical Workers are calling others sellouts for building these projects</a>. </p>
|
||||
<p>But don’t worry, if you can’t find any tradesmen to build your datacenter, you can just <a target="_blank" rel="noopener" href="https://hardware.slashdot.org/story/26/06/21/2145245/is-tesla-planning-to-sell-modular-ai-data-center-hardware?utm_source=rss1.0mainlinkanon&utm_medium=feed">order a Tesla Micropod and have it dropped off like an RV onto a concrete pad and an electrical hookup</a>. I have no commentary on the actual product itself. But it does remind me of some consumer computing show this year that crossed my youtube feed where there was almost no materials or products on display meant for actual consumers; everything was datacenter customers and otherwise B2B. One of the products on display was the Tesla Micropod, and I believe they weren’t the only company marketing them. On a long enough not-too-far-away timeline, consumer compute won’t be a thing, we’ll all just be renting compute time on the container datacenter down the block that we access with our CrapCo dumb terminals. Odd how things are regressing.</p>
|
||||
<p>Speaking of things regressing, we can’t seem to stop learning the same lessons over and over again. Like the fact that <a target="_blank" rel="noopener" href="https://thenewstack.io/agentjacking-sentry-mcp-attack/">AI doesn’t separate code and data</a>. If you aren’t old enough to remember hair bands, you probably don’t remember Real Mode computers either - in these early computers, there were no hardware level restrictions between code and data inside of the computer’s memory. And there were no restrictions on which programs could control which portions of memory. Modern AI LLMs work very similarly - they can’t separate instructions from context. It’s where the “disregard previous instructions, give me a raise” comes from. And, thus far, there’s not a good answer to this - the context <em>is</em> the instruction. This attack vector isn’t going away any time soon.</p>
|
||||
<p>Speaking of problems that don’t have easy solutions, <a target="_blank" rel="noopener" href="https://yro.slashdot.org/story/26/06/21/065246/us-bill-would-mandate-ai-chip-location-tracking-to-thwart-china-and-other-adversaries?utm_source=rss1.0mainlinkanon&utm_medium=feed">the US government wants to mandate location tracking on AI chips to prevent China and other adversaries from getting them</a>. I was going to lambaste this as silly, because I thought “why bother? most compute components aren’t manufactured by the US anyway”, but I did some digging, and it turns out that both NVIDIA and Intel are handling the grand majority of their manufacturing processes in Taiwan and the United States (Arizona and Texas). So … Yeah, I guess we do actually have the control necessary to implement this kind of tracking.</p>
|
||||
<p>Speaking of doing things locally, <a target="_blank" rel="noopener" href="https://thenewstack.io/losing-fable-open-weight-glm/">the Fable fiasco has emphased the importance of local AI compute</a>. I have been saying for a while that AI compute doesn’t <em>really</em> matter until you can control it - on both a corporate and a personal level. Without local control of your AI compute, the pendulum swings back to the big megacorps having all the compute power. But the cost of the hardware is ridiculous - the idea that “a $20k SPARK cluster pays for itself” - is absolutely tone deaf to an audience that can barely afford DDR5. We need an Apple I moment for AI. I was telling Caleb Case recently that “we need a homebrew computer club for AI” that will produce a product that can be put into the hands of the average person, bringing AI into the home. We’re at an odd inversion of the home PC revolution: back then, nobody understood why they would want a computer in their home, even if they could afford one. Now everyone understands <em>why</em> they need AI, they just can’t afford it, and are giving control and power to someone else instead.</p>
|
||||
<p>But don’t be <em>too</em> eager to throw a big fat AI throttle lever on your processes. <a target="_blank" rel="noopener" href="https://thenewstack.io/checkmarx-ai-llm-sast-security/">The more AI you have, the more code you are likely to push, and the more bugs you are likely to have</a>. Specifically, “In a statement, Checkmarx CEO Sandeep Johri put this sentiment more bluntly: ‘Our research found that 75% of code shipped today is vulnerable, because the speed at which AI creates code has far outpaced the speed needed to keep it safe.’” YIKES. The primary reason is that as teams produce more code, their processe for review and safety can’t keep up with the rate of change, so all kinds of bugs and vulnerabilities are getting through.</p>
|
||||
<p><a target="_blank" rel="noopener" href="https://thenewstack.io/ai-code-review-self-review/">Some folks are arguing that the solution to this is to allow AI to review the code that AI wrote</a>. They say that there’s no other way to keep up with the rate of change but to let AI handle the whole pipe. Now I hate the idea on the face - AI simply cannot be trusted to act independently - but I do like the idea of more rigorous self-review. Whether humans are in the loop or not, sometimes merge requests don’t have enough rigor put into them by the author, and it wastes a ton of time. And AI does make an effective sounding board for that self-review before you take it to other humans. I actually use AI for reviewing code frequently before I even attempt to compile it. The compiler will tell me if I’ve got syntax wrong, which is a waste of tokens, but AI can do things like spot inconsistencies, logic errors and anti-patterns before I run a test cycle. The tree search algorithm I’m working on in libakstdlib went through a couple rounds of review with GPT and Gemini before I ever ran the code, and it was definitely improved by it. Sometimes it hallucinates errors that aren’t there, or misunderstands what a given piece of code does and complains about something that doesn’t matter, but generally the suggestions are net improvements. Had I been waiting on a human for that review and back-and-forth feedback, it would’ve taken days if not a week more time, and I simply wouldn’t have had enough interest to engage a human for that long. But I absolutely don’t trust the AI to review code that another AI wrote, and to approve it without me in the loop. That’s not responsible.</p>
|
||||
<p>Arthur Huk has a suggestion for how to go about this responsibly that I originally thought deserved a serious read, <a target="_blank" rel="noopener" href="https://www.oreilly.com/radar/from-capabilities-to-responsibilities/">over on the Oreilly Media blog called “From Capabilities to Responsibilities: Desiging contract-bound AI agent for high-stakes execution”</a>… But now that I look at it again, I get the feeling that the article itself was written (at least significantly) by AI, which makes me instinctively turn up my nose in disgust. But regardless, the author points out a real problem: human decision fatigue was already a problem when dealing with other slow humans, even ones you highly trust. When the humans are replaced with high cycle rate AI, the humans in the loop become a genuine problem. Its like tying up a 32 bit microprocessor waiting on an 8 bit peripheral. Eventually we have to solve the problem with a faster system. And the only way to automate any system is with separation of duties, effective contracts between the components, and effective oversight of the automation. The effective oversight is what I don’t see in his plan - if the idea of “governance by exception” actually works and the contract boundaries are effective, I suppose it’s built in, but given that the LLM design is not reliable enough to trigger those boundaries when we might routinely expect it, I’m not convinced.</p>
|
||||
<p>On a related note, <a target="_blank" rel="noopener" href="https://robertk.com/">my brother Robert</a> dropped a link to Charles Smith’s blog entry about <a target="_blank" rel="noopener" href="https://www.oftwominds.com/blogjune26/AI-Is-Isnt6-26.html">what AI is and isn’t</a>. Charles is an actual AI researcher who’s been doing it for a long long time, so I value his opinion here. He is quoting Simon Chase of <a target="_blank" rel="noopener" href="https://www.selflet.ai/ideas/the-machine-is-made-of-us">selflet.ai</a>, who is in turn quoting Pope Leo’s encyclical <a target="_blank" rel="noopener" href="https://www.vatican.va/content/leo-xiv/en/encyclicals/documents/20260515-magnifica-humanitas.html">Magnifica Humanitas</a>. I don’t know Simon, but here we have an experienced AI researcher and the Pope, so you have my attention. The essential thrust of the article, and the relevance to what we’ve been talking about so far, is this: <i>The machine is made of us, it can only produce an odd average of its input (which is our output), and has no concept of and ability to grasp the truth</i>. So while we can talk a lot about estavblishing contracts and boundaries and exceptions and oversight through those things, we have to accept that we’re hoping against hope that the averaging machine which can’t conceptualize truth has the ability to spot exceptions and escalate them up to a human. The article is worth reading for a bunch of different reasons, but that’s the one that fits well into my summary here.</p>
|
||||
<p>Closing out the AI portion of the news, let’s not overlook the fact that <a target="_blank" rel="noopener" href="https://www.newscientist.com/article/2529849-fully-autonomous-drones-have-killed-human-soldiers-for-the-first-time/">Ukraine has admitted to using fully autonomous drones to kill humans</a>. This took place 2 full years ago, and at the pace of technology, warfare, and the increasing dehumanization of people by their warlords, I’m sure this was not the last time this has occurred. <i>. “We just launch it and we know everything will be dead – everything that will be found there in this particular area will be dead,” says Kokhanovskyy. “There is no connection to the drone at all, you cannot see the video, nothing… Everything it sees will be killed.”</i></p>
|
||||
<p>I really enjoy the idea of getting into embedded development, but I know that one of the biggest areas of growth for that career is in autonomous vehicles, many of which are drones, many of which are armed. I have no desire to make autonomous weapons.</p>
|
||||
<h2 id="Programming-and-Engineering-Generally"><a href="#Programming-and-Engineering-Generally" class="headerlink" title="Programming and Engineering Generally"></a>Programming and Engineering Generally</h2><p>Speaking of AI ruining things, I predict that <a target="_blank" rel="noopener" href="https://thenewstack.io/cursor-origin-github-disruption/">GitHub is going the way of the dodo within the next few years</a>. I’ve already taken all of my stuff off GitHub and moved it to my own source code storage. As if it wasn’t bad enough that it has become a Microsoft product, the rising tide of AI contributions have tested GitHub’s stability, and even worse than that, the limits of the open source maintainer’s patience. I think the big thing we will lament is not GitHub itself but the way we have come to publish and maintain open source software. We may never again see a return to such a default open state as we enjoyed for the past 15 years if the AI tide continues the way it is now, as more and more maintainers are having to deal with AI slop contributions and bugs, and many of them are choosing to limit contributions, and some have gone dark entirely.</p>
|
||||
<p><a target="_blank" rel="noopener" href="https://fatbobman.com/en/weekly/issue-141/">Swift is apparently becoming incredibly capable</a>, but I must admit, I’ve never really done anything with it. I’m not really a language nerd; I went through a brief time of being fascinated by different languages after working with Kelsey Hightower and Caleb Case back at Total Systems, and seeing the wide variety of languages they had been exposed to. But it didn’t last, and for the most part, I am a man who loves only a few languages. But, and this is fully tangential to the article, I just found out that Embedded Swift is a thing and enthusiasts are building a SwiftOS as an RTOS. That seeemd cool until I dug deeper and found that most successful languages have an embedded implementation. LispBM, Basic (via Basic32 on ESP32), MicroPython, Javascript via Espruino or STM32JS, Haskell, there’s even an embedded FORTH (muforth)…</p>
|
||||
<p>Speaking of Caleb Case, I will never forget his opinion on Ruby (which was 100% accurate, by the way): “Ruby is the Perl of Python”. <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/when-false-is-true">The Daily WTF shows exactly why this is the case</a>. The language has too many damn symbols, and it is just downright <em>ugly</em>.</p>
|
||||
<p>The Linux Kernel developers have achieved a long-term goal, by <a target="_blank" rel="noopener" href="https://linux.slashdot.org/story/26/06/21/1810200/after-six-years-of-work-and-over-360-patches-linux-72-finally-removes-bug-prone-strncpy?utm_source=rss1.0mainlinkanon&utm_medium=feed">fully removing all instances of strncpy() from the kernel code</a>. Normally I push back against people who say things like “strncpy() is inherently dangerous, hurr-de-durr!”. <em>That’s a skill issue, kid, here’s a nickel, go buy a clue and a better computer</em>. But in this case the problem seems to be that strncpy() was overloaded for lots of use cases that, frankly, it shouldn’t have been used for in the first place. Honestly looking at the five functions they’re replacing it with, and given what those functions are being used for, I have to wonder why in the world anyone thought <code>strncpy()</code> was the solution to those problems in the first place. But whatever - I’m glad the kernel maintainers have something they’re happy with.</p>
|
||||
<p>Speaking of current events around linux, the birthdate drama is real enough that <a target="_blank" rel="noopener" href="https://linux.slashdot.org/story/26/06/22/0144240/someone-forked-systemd-over-its-new-birth-date-field?utm_source=rss1.0mainlinkanon&utm_medium=feed">someone has forked systemd to avoid it</a>. Personally I’m less concerned over the introduction of a birth date field (it’s just an entry in /etc/passwd, who cares?) and more concerned about the precedent this sets and how anyone ever expects this to get actually enforced. The powers that be will start by saying “you must track user birth dates”, then they will say “you must verify user birth dates”. Then we have to start attaching some form of digital ID to the user account, which ends up being linked in to some kind of government verification. </p>
|
||||
<p>Did someone mention government age verification on services that don’t have any good way to be enoroced? I think so! <a target="_blank" rel="noopener" href="https://news.slashdot.org/story/26/06/21/2052213/uk-official-promises-statements-around-vpns-and-further-teen-restrictions-on-chatbots-and-social-media?utm_source=rss1.0mainlinkanon&utm_medium=feed">The UK government is promising to enforce age verification for VPN users (among other things)</a> … How, exactly, does one propose to ban underage users from a VPN? Have you ever tried to stop a teen from accessing something you didn’t want them to access? This will be so difficult to enforce that we will, again, likely either see A) legal consequences for any service that doesn’t link an account to a verified government ID or B) a total ban on VPNs for everyone. I predict we will get BOTH, in fact - A first, then shortly after, B.</p>
|
||||
<p>Perplexity AI proposes that the traditional search model is broken for AI agents, and that <a target="_blank" rel="noopener" href="https://research.perplexity.ai/articles/rethinking-search-as-code-generation">what agents really need is a new search interface built around programmable pipelines</a>. They mention that humans are increasingly using AI for search, and how that’s because search is broken, but they really gloss over that and go into use cases that are focused on data analytics and statistics. They present an SDK that, with a whole lot of words, turns search into pipelines you can string together. It seems interesting, but I don’t do enough work with AI hitting search to know how impactful or useful it really is. The main thing I take away from it is thinking that there was a time when search was useful for humans, and how many humans would benefit from the same kind of flexibility that the agent SDK is getting here. Perplexity makes the point that “rigid control surfaces” on search make sense for humans, but that AI for some reason deserves to be able to “orchestrate the individual pieces of the search stack as the specific task demands”. They imply that human search doesn’t suffer from the same problems that AI search does - coarse context, failure to leverage domain knowledge, and inefficient control flow and context pollution. The real fundamental problem here is that search is broken and has been broken for a long time. And it kind of pisses me off that it will probably only get fixed for AI, and that us humans will just get another crummy interface through the AI, instead of getting back useful search.</p>
|
||||
<h2 id="Self-Hosting-and-Tools"><a href="#Self-Hosting-and-Tools" class="headerlink" title="Self Hosting and Tools"></a>Self Hosting and Tools</h2><p><a target="_blank" rel="noopener" href="https://ldstephens.net/posts/archiving-articles-in-bear/">ldstephens tells us about the Bear extension</a>, which apparently backs into <a target="_blank" rel="noopener" href="https://bear.app/">Bear</a>, a service for clipping notes in some kind of markdown format. Neat option if that’s your thing. I’ve been trying to love Synology Notes for months now, and it’s … eh, it’s <em>okay</em>, but I think I’ll be back to org-mode on WebDav or something here soon.</p>
|
||||
<p>If you’re looking for an alternative to Discord, you can self-host an instance of <a target="_blank" rel="noopener" href="https://github.com/fluxerapp/fluxer?ref=selfh.st">Fluxer</a> which is apparently meant to be an open source clone. I personally don’t get the appeal of and don’t like discord. The way that communities in discord organize themselves makes for a very busy user interface and a very frustrating user experience, at least for me. I still think IRC is peak, so I guess I’m not the target audience. But if discord is what you like, Fluxer appears to be doing a good job of nailing that down, without being tied down to a platform that is well known to have all sorts of social problems attached to it. (And which is going to be implementing age verification soon as well.)</p>
|
||||
<p>Speaking of things that are soon going to be ruined by regulation, if you didn’t already know, <a target="_blank" rel="noopener" href="https://www.pcmag.com/explainers/fcc-foreign-made-router-ban-is-your-tp-link-asus-hardware-safe">the US government has banned the new sale of any foreign made wifi routers</a>. This happened a couple of months ago, and we haven’t really felt the impact of it yet, but we will. <a target="_blank" rel="noopener" href="https://blog.cani.ne.jp/2026/06/20/incidental-router.html">Dog with a Dev walks us through their recent experience homebrewing up a new router with old hardware</a> and, in the process, reminds us that those who can understand the network problem space, select the gear, install and configure it, will not be left high and dry by whatever shenanigans our own (or a foreign adversary) government gets up to. They’re using old wifi routers that should be “obsolete” and resurrecting them with new firmware, but you don’t even need that. A small PC with a wireless card and two ethernet ports can be an incredibly functional access point, router, and firewall with a little hand configuration - or with an install of something like openwrt. If you haven’t done this kind of thing before, I highly recommend it.</p>
|
||||
<p>If you want to get started in self-hosting, you can get good results from a handful of old Android phones. They are cheap, plentiful, and usually have compute power that (once decoupled from the trash mobile operating systems and peripherals they’re usually attached to) are sufficient for small server tasks. <a target="_blank" rel="noopener" href="https://hardware.slashdot.org/story/26/06/22/0348249/2000-retired-google-pixel-phones-get-a-second-life-as-a-private-cloud">UC San Diego researchers are even using 2000 of them to build a supercomputing cluster</a>. This kind of thing is similar to the old <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Beowulf_cluster">Beowulf Cluster model from the 1990s</a> (which is still useful today, for what it’s worth) : take some consumer grade hardware, throw it on a baker’s rack, network it up together, and distribute work across it. In recent years people have been using raspberry pi devices for the same kind of tasks, because they used to be pretty cheap. With the cost of a pi module being impacted by ram prices the same way as everything else, that is no longer a super attractive option. Some folks are saying we should stop buying Rasp/Orange Pi and other SBCs and start repurposing old Android phones instead. This is a fine idea, and I think the biggest argument for it is actually power. If you’ve tried to set up a significant homelab setup before, you will quickly run out of outlets in your home to power the thing. A whole fleet of android phones can be ran off of a few big USB 3.0 powered hubs; if you get an APC with a dozen ports on it, and connect each of those ports to a 7-port USB 3 hub, you can get nearly a hundred compute nodes from a single wall outlet. Honestly just typing that out really makes me want to investigate the possibility. </p>
|
||||
<p>The only real problem I have with hosting on old Android phones is that, for better or for worse, they are <strong>stubbornly stuck on Android</strong>. It is (last time I checked) <strong>NOT</strong> as simple as “just install linux on it”. The average smartphone might be made using one of several dozen different SoCs that require proprietary drivers that are not in the linux kernel stack, and they may or may not have any facility for flashing a decent firmware on to them. On some devices, you’ll be lucky enough to run honest to God <a target="_blank" rel="noopener" href="https://devices.ubuntu-touch.io/">Ubuntu Touch</a> (if you <em>like</em> Ubuntu, which I increasingly <em>don’t</em>, but <a target="_blank" rel="noopener" href="https://cybersecuritynews.com/arch-linux-aur-packages-compromised/">at least it’s not Arch… poor Arch</a>). The average device may be able to run <a target="_blank" rel="noopener" href="https://lineageos.org/">LineageOS</a>, which will remove some bloat, but it’s still android. (I like lineage - I run it on a Google Pixel and am generally happy with it.) Which means that if you want to run “linux”, you’re going to be running apps inside of Termux, or you’re going to be virtualizing a server on the phone; the experience on the first is dodgy (Termux doesn’t like being suspended for long periods of time) and the second is crummy (asking a cheap consumer grade phone to virtualize a server is asking a lot). And as a replacement for the Pi in the single board computer hobby, they’re an especially terrible idea, as they have no good way to expand them (GPIO headers, I2C, SPI, CAN, etc) and their hardware is notoriously mysterious to the homebrew programmer. I would love to see this change, and I suppose change starts with one person who refuses to take no for an answer, so …. if you’ve got a box of old smartphones, Godspeed, my friend.</p>
|
||||
<p>I am generally a fan of the trend of making it smaller, whether that’s shrinking a big PC to an Android or Pi profile, or making your website and software smaller. I discovered <a target="_blank" rel="noopener" href="https://250kb.club/">the 250kb club</a>, which is a list of small efficient websites. I found it by following a link from <a target="_blank" rel="noopener" href="https://lucio.albenga.es/web-en/posts/2025/gopher-a-simple-alternative-to-the-bloatware-of-the-web.html">Lucio Albena’s article on Gopher</a>, wherein the size of a modern webpage is lamented. I really love these kinds of ideas. Like <a target="_blank" rel="noopener" href="https://fitsonafloppy.com/">fitsonafloppy.com</a>, which makes the argument that good software should fit on a floppy (1.44mB, or 2.88mB if you had really fancy high density floppies). We have really lost our way and need to stop it with all the bloat. If you self host anything, please do your best to trim the fat, and take pride in the size of your redistributables.</p>
|
||||
<h2 id="Games"><a href="#Games" class="headerlink" title="Games"></a>Games</h2><p>I love Valve, and I love Steam, and I love what they’ve been doing for the gaming community for decades now. Like so many others, I was excited for the Steam Machine to launch. <a target="_blank" rel="noopener" href="https://store.steampowered.com/hardware/steammachine">But holy hell was this just the wrong time to launch a console</a>. The Steam Machine unveiled at a eye-popping $1500 for the top end bundle with specs that don’t compete appropriately with gaming desktops, laptops, or other consoles. Every review site is saying basically the same thing: given the current market and the availability and pricing of components, it is <em>reasoable</em> for the steam machine to be priced the way it is. At the same time, for what you’re getting, it is overpriced. I want to buy one just to support Valve, but I don’t think I can justify it at this price point. You can build a stronger PC for significantly less and you can do it in a similar form factor. As a current owner of a Steamdeck OLED, I just don’t see why I should step up and buy a Steam Machine. And I hate saying that.</p>
|
||||
<p>If you haven’t had enough depressing visions of what’s inside people’s heads recently, <a target="_blank" rel="noopener" href="https://indiegamesplus.com/mind-diver-preview/">Mind Diver might be fun</a>. I’ll be sitting this one out. The description reminds me of <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=yyy1CBAkeN4">Bear’s Restaurant</a>, a delightful game that masterfully traumatized me. I’ve dived in entirely enough minds, thank you, and I have no desire to go digging in any more. But I hope it does well, and am happy to see so many games that tackle really hard themes like this.</p>
|
||||
<h2 id="Being-Human"><a href="#Being-Human" class="headerlink" title="Being Human"></a>Being Human</h2><p>Online communities are a difficult thing to find, and a difficult thing to maintain. Second Life has been one such community that many people have enjoyed. I myself never got into it, but lot of people have, and therefore lots of people have been able to witness it becoming a shell of its former self. Everything is being hollowed out by consumerism. Commander Nova laments the many problems with Second Life, and decides <a target="_blank" rel="noopener" href="https://mkultra.monster/secondlife/2026/06/22/novalandia-opensim/">to launch their own OpenSim Grid world</a>. I hadn’t heard of OpenSim before, apparently it is <a target="_blank" rel="noopener" href="https://www.osgrid.org/">a self-hostable open simulation engine</a> that connects instances together in a grid so everyone can connect with each other. Again, I never got into second life, so I never got into its apparent open source counterpart, but I do love to see alternative worlds and internet communities getting created, so I am somewhat intrigued by this, and hope it stays around for a long time.</p>
|
||||
<p>Humans love pondering questions like <a target="_blank" rel="noopener" href="http://82mhz.net/posts/2026/06/re-if-i-could-be-transported-back/">“Where would you go with a time machine?”</a>. I personally wouldn’t make the same choices as the author here (in no small part because I don’t believe in evolution the way they do), but I’ll be honest, I’m not sure what time I would visit. Ruling out the obvious things like visiting yourself in the past to give yourself some advice about life choices, or going back to kill baby Hitler or something like that, I admit that I don’t really find the idea very appealing. I would just be visiting, I can’t live there, so it’s almost like some kind of wierd voyeurism. You could try and live there, but you’d be an outsider for a very long time; you’re out of time and place, and other lifeforms there will know it very easily. And I guess I would rather just stay here and work on things in the current time. Or maybe I’m just a fuddy duddy who can talk themselves out of lots of great adventurous ideas.</p>
|
||||
<p>In what might be the most human thing I’ve read all year, I learned about <a target="_blank" rel="noopener" href="https://add.org/revenge-bedtime-procrastination/">Revenge Bedtime Procrastination</a>. It’s apparently a little subconscious act of rebellion. In our case, we seem to be rebelling against the idea that the day only has 24 hours in it, and we have to sleep through some of them, because, <em>why the fuck is that fair</em>? Absolute toddler behavior.</p>
|
||||
<h2 id="Humans-of-the-Internet"><a href="#Humans-of-the-Internet" class="headerlink" title="Humans of the Internet"></a>Humans of the Internet</h2><p>My favorite thing on the internet is other people. Real human beings, doing real human things, and talking about it. Here are some of the interesting humans I’ve seen recently.</p>
|
||||
<ul>
|
||||
<li>Rachel Ost publishes the most delightfully nerdy collection of special interest content: <a target="_blank" rel="noopener" href="https://kaloethina.com/2026/06/16/scribal-research-library-pt-1/">a brain dump on byzantine scribal pigments</a>. I love it.</li>
|
||||
<li>Ben Stone runs us through his experience <a target="_blank" rel="noopener" href="https://bencology.bearblog.dev/the-musk-duck-on-duckdb/">using DuckDB to analyze a large dataset about Musk Ducks</a></li>
|
||||
<li>Luke Alex Davis <a target="_blank" rel="noopener" href="https://lukealexdavis.co.uk/recortes/am-i-a-crawler/">wonders if he is a human dreaming he is a crawler, or a crawler dreaming he is a human</a></li>
|
||||
<li><a target="_blank" rel="noopener" href="https://billglover.me/2026/06/19/2026-week-24/">Bill Glover drops a weekly update about tax audits, food and family travel</a></li>
|
||||
<li>Scott Nesbitt is <a target="_blank" rel="noopener" href="https://scottnesbitt.online/moving.html">moving his blog to his main site</a> and shutting down the separate Random Notes site, but I can’t find the RSS feed on his main site. His contact form on his site is broken. His domain registry is private. Scott, I hope I don’t lose track of you. There aren’t many of us real humans left out here.</li>
|
||||
<li>For finding other real humans, we have several great options:<ul>
|
||||
<li><a target="_blank" rel="noopener" href="https://bubbles.town/">https://bubbles.town/</a> is a hacker news style aggregator for small blogs written by other humans</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://www.adamsdesk.com/posts/junited-2026/">Adam Douglas turns us on to the idea of Junity</a>, being a month of sharing blog links to other humans, and gives us a whole bunch of new humans to find and follow! Happy day.</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://burgeonlab.com/junited-2026/">Naty over at Burgeonlab</a> shares a Junited list as well</li>
|
||||
<li><a target="_blank" rel="noopener" href="https://rldane.space/junited-2026.html">RL Dane shares a 2026 Junited list as well</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/06/27/Devlog-20260627/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 27 June 2026 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/06/18/Devlog-20260618/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 18 June 2026 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#AI-For-Them-By-Us-Like-Us"><span class="toc-text">AI : For Them, By Us, Like Us</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Programming-and-Engineering-Generally"><span class="toc-text">Programming and Engineering Generally</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Self-Hosting-and-Tools"><span class="toc-text">Self Hosting and Tools</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Games"><span class="toc-text">Games</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Being-Human"><span class="toc-text">Being Human</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Humans-of-the-Internet"><span class="toc-text">Humans of the Internet</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#AI-For-Them-By-Us-Like-Us"><span class="toc-text">AI : For Them, By Us, Like Us</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Programming-and-Engineering-Generally"><span class="toc-text">Programming and Engineering Generally</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Self-Hosting-and-Tools"><span class="toc-text">Self Hosting and Tools</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Games"><span class="toc-text">Games</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Being-Human"><span class="toc-text">Being Human</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Humans-of-the-Internet"><span class="toc-text">Humans of the Internet</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
861
2026/06/27/Devlog-20260627/index.html
Normal file
@@ -0,0 +1,861 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>Devlog Entry - 27 June 2026</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Devlog Entry - 27 June 2026">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/27/Devlog-20260627/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-27">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#libakerror-logging-cleanup"><span class="toc-text">libakerror logging cleanup</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#Linked-List-Handling"><span class="toc-text">Linked List Handling</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Binary-Trees"><span class="toc-text">Binary Trees</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 27 June 2026
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-27T07:45:42.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-27</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>1.8k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Development log entry for the week ending 27 June 2026. Improvements to libakerror logging, libakstdlib gets linked list and binary tree implementations, and I’m banging my head against libakgl to get binary space partitioning implemented correctly, as well as documentation improvements to all of these libraries.</p>
|
||||
<h1 id="libakerror-logging-cleanup"><a href="#libakerror-logging-cleanup" class="headerlink" title="libakerror logging cleanup"></a>libakerror logging cleanup</h1><p>First, I fixed a couple of minor bugs that impacted the correct installation of <code>libakerror</code>. I almost never use <code>libakerror</code> standalone, it’s basically always a cmake dependency, and these only impacted the standalone behavior, so I never saw it. I’ve since added <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror/actions">a CI build that runs on every push to main</a> and a <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror/src/branch/main/README.md">badge on the README</a>.</p>
|
||||
<p>The traceback logging from <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakerror">libakerror</a> was needlessly noisy. Some lines were duplicated, others just weren’t particularly helpful. For example:</p>
|
||||
<pre class="line-numbers language-none"><code class="language-none">err_trace.c:func2:7: 134 (Null Pointer Error) : This is a failure in func2
|
||||
err_trace.c:func2:10
|
||||
err_trace.c:func1:18: Detected error 0 from array (refcount 1)
|
||||
err_trace.c:func1:18
|
||||
err_trace.c:func1:21
|
||||
err_trace.c:main:30: Detected error 0 from array (refcount 1)
|
||||
err_trace.c:main:30
|
||||
err_trace.c:main:33: Unhandled Error 134 (Null Pointer Error): This is a failure in func2<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>There are three lines from func1. There are two lines for the <code>CATCH()</code> call that actually detected the error coming out of <code>func2()</code>, and there is a line for the <code>FINISH()</code> statement. Similarly, for func2, there are two lines - one for the <code>FAIL()</code> that generated the exception and one for the <code>FINISH()</code> that emitted it. Then in <code>main()</code> we see the same kind of noise; two lines for the <code>CATCH()</code> that detected the error, and one for the <code>FINISH()</code> that emitted it. We don’t need all that. I think I put the extra lines in there when I was initially building the library and was having some trouble determining where an exception was leaving the control flow - I don’t need that anymore. I just want to know where the exception <em>actually got generated</em> and the call stack directly to that. The new logging behavior is thus:</p>
|
||||
<pre class="line-numbers language-none"><code class="language-none">err_trace.c:func2:7: 134 (Null Pointer Error) : This is a failure in func2
|
||||
err_trace.c:func1:18
|
||||
err_trace.c:main:30
|
||||
err_trace.c:main:33: Unhandled Error 134 (Null Pointer Error): This is a failure in func2<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>This is much neater. We still get two lines from <code>main()</code>, but I’m willing to live with that. The second <code>main()</code> line comes from <code>FINISH_NORETURN</code> which summarizes the error from the deepest exception frame, and then calls <code>akerr_handler_unhandled_error()</code> which (generally) aborts the program. I’m fine with that getting its own line.</p>
|
||||
<p>If you haven’t seen <code>libakerror</code> before, <a href="https://aklabs.net/2026/01/10/libakerror/">you can read about it here</a>.</p>
|
||||
<h1 id="libakstdlib"><a href="#libakstdlib" class="headerlink" title="libakstdlib"></a>libakstdlib</h1><p>My C standard library <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakstdlib">libakstdlib</a> got some new features. I started adding Doxygen tags to the source code to start improving the documentation around this. It’s incomplete, I’m adding as I go, but it’ll get there.</p>
|
||||
<h2 id="Linked-List-Handling"><a href="#Linked-List-Handling" class="headerlink" title="Linked List Handling"></a>Linked List Handling</h2><pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token keyword">typedef</span> <span class="token keyword">struct</span> <span class="token class-name">aksl_ListNode</span> <span class="token punctuation">{</span>
|
||||
<span class="token keyword">void</span> <span class="token operator">*</span>data<span class="token punctuation">;</span>
|
||||
<span class="token keyword">struct</span> <span class="token class-name">aksl_ListNode</span> <span class="token operator">*</span>next<span class="token punctuation">;</span>
|
||||
<span class="token keyword">struct</span> <span class="token class-name">aksl_ListNode</span> <span class="token operator">*</span>prev<span class="token punctuation">;</span>
|
||||
<span class="token punctuation">}</span> aksl_ListNode<span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>Linked Lists are fairly intuitive if you’ve done any linked list handling in C before. You have a list node structure that contains pointers to the next and previous items in the list; if <code>prev</code> is NULL, that is the head node, and if <code>next</code> is NULL, that is the tail. Each node contains a <code>void *</code> to some <code>data</code>, and it is the library user’s responsibility to know how to set, retrieve, and properly manage that data. You have functions for pushing a new object on to the END of an existing list, and for removing a node from whatever list it is currently in.</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c">akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_list_append</span><span class="token punctuation">(</span>aksl_ListNode <span class="token operator">*</span>list<span class="token punctuation">,</span> aksl_ListNode <span class="token operator">*</span>obj<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_list_pop</span><span class="token punctuation">(</span>aksl_ListNode <span class="token operator">*</span>node<span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>You can iterate over each node in a list with an iterator function. The iterator function accepts a pointer to a node, and a pointer to an optional data object. The iteration proceeds <em>forward</em> through the list (reverse iteration is not supported yet), and the iterator function is called for each node in the list, with the user-provided data.</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token keyword">typedef</span> akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token punctuation">(</span><span class="token operator">*</span>aksl_ListNodeIterator<span class="token punctuation">)</span><span class="token punctuation">(</span>aksl_ListNode <span class="token operator">*</span>node<span class="token punctuation">,</span> <span class="token keyword">void</span> <span class="token operator">*</span>data<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
|
||||
akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_list_iterate</span><span class="token punctuation">(</span>aksl_ListNode <span class="token operator">*</span>list<span class="token punctuation">,</span> aksl_ListNodeIterator iter<span class="token punctuation">,</span> <span class="token keyword">void</span> <span class="token operator">*</span>data<span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>If you want to stop iteration before the end of the list is reached, you can raise an AKERR_ITERATOR_BREAK exception to halt the iteration early.</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token function">PREPARE_ERROR</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
<span class="token function">FAIL_RETURN</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> AKERR_ITERATOR_BREAK<span class="token punctuation">,</span> <span class="token string">"stop"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>The library includes built-in circular reference detection using <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Cycle_detection">Floyd’s Cycle-Finding Algorithm</a>. Both <code>append()</code> and <code>iterate()</code> perform cycle detection. <code>push()</code> does it while searching for the tail, <code>iterate()</code> does it before beginning the iteration cycle.</p>
|
||||
<p>A complete sample program is <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakstdlib/src/branch/main/tests/test_linkedlist.c">in the tests directory</a>.</p>
|
||||
<h2 id="Binary-Trees"><a href="#Binary-Trees" class="headerlink" title="Binary Trees"></a>Binary Trees</h2><pre class="line-numbers language-c" data-language="c"><code class="language-c"><span class="token keyword">typedef</span> <span class="token keyword">struct</span> <span class="token class-name">aksl_TreeNode</span> <span class="token punctuation">{</span>
|
||||
<span class="token keyword">struct</span> <span class="token class-name">aksl_TreeNode</span> <span class="token operator">*</span>parent<span class="token punctuation">;</span>
|
||||
<span class="token keyword">struct</span> <span class="token class-name">aksl_TreeNode</span> <span class="token operator">*</span>left<span class="token punctuation">;</span>
|
||||
<span class="token keyword">struct</span> <span class="token class-name">aksl_TreeNode</span> <span class="token operator">*</span>right<span class="token punctuation">;</span>
|
||||
<span class="token keyword">void</span> <span class="token operator">*</span>leaf<span class="token punctuation">;</span>
|
||||
<span class="token punctuation">}</span> aksl_TreeNode<span class="token punctuation">;</span>
|
||||
|
||||
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">AKSL_TREE_SEARCH_BFS</span> <span class="token expression"><span class="token number">0</span> </span><span class="token comment">/** Breadth-first search mode for tree nodes. Currently unsupported. */</span></span>
|
||||
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">AKSL_TREE_SEARCH_BFS_RIGHT</span> <span class="token expression"><span class="token number">1</span> </span><span class="token comment">/** Right-hand breadth-first search mode for tree nodes. Currentl unsupported. */</span></span>
|
||||
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">AKSL_TREE_SEARCH_DFS</span> <span class="token expression"><span class="token number">2</span> </span><span class="token comment">/** Alias for AKSL_TREE_SEARCH_DFS_PREORDER */</span></span>
|
||||
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">AKSL_TREE_SEARCH_DFS_PREORDER</span> <span class="token expression"><span class="token number">2</span> </span><span class="token comment">/** Depth first pre-order (root, left, right) search mode for tree nodes */</span></span>
|
||||
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">AKSL_TREE_SEARCH_DFS_INORDER</span> <span class="token expression"><span class="token number">3</span> </span><span class="token comment">/** Depth first in-order (left, root, right) search mode for tree nodes. Currently unsupported. */</span></span>
|
||||
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">AKSL_TREE_SEARCH_DFS_POSTORDER</span> <span class="token expression"><span class="token number">4</span> </span><span class="token comment">/** Depth first post-order (left, right, root) search mode for tree nodes. Currently unsupported. */</span></span>
|
||||
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">AKSL_TREE_SEARCH_VISIT</span> <span class="token expression"><span class="token number">5</span> </span><span class="token comment">/** Used when iterating through a tree structure as a control flag: don't traverse the children, just visit the node */</span></span>
|
||||
<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>
|
||||
|
||||
<p>The library only supports binary trees (though I can see a use for trees with arbitrary branches from a given node, I haven’t taken that leap yet). You can populate them and iterate over them using a few varieties of Depth-First Search.</p>
|
||||
<pre class="line-numbers language-c" data-language="c"><code class="language-c">akerr_ErrorContext AKERR_NOIGNORE <span class="token operator">*</span><span class="token function">aksl_tree_iterate</span><span class="token punctuation">(</span>aksl_TreeNode <span class="token operator">*</span>root<span class="token punctuation">,</span> aksl_TreeNodeIterator iter<span class="token punctuation">,</span> aksl_AllocFunc lalloc<span class="token punctuation">,</span> aksl_FreeFunc lfree<span class="token punctuation">,</span> <span class="token class-name">uint8_t</span> searchmode<span class="token punctuation">,</span> <span class="token keyword">void</span> <span class="token operator">*</span>data<span class="token punctuation">,</span> aksl_ListNode <span class="token operator">*</span>queue<span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>
|
||||
|
||||
<p>Currently the library has some known bugs. I would’ve fixed them this week, but I built the library functions in concert with some <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakgl/pulls/1/files">in-progress libakgl functionality</a> that uses this library to perform binary space partitioning on the game scene, to prepare the scene for collision detection. So I prioritized the interfaces between those two, and the bits that most directly enabled the BSP partitioning. But…</p>
|
||||
<p>The way in which search (iteration) is performed isn’t really right. In <code>AKSL_TREE_SEARCH_DFS_INORDER</code>, some nodes get visited by the iterator twice. In <code>AKSL_TREE_SEARCH_DFS_POSTORDER</code>, some nodes get visited three times. This is because the <em>proper</em> way to do tree search is to use a linked list to build a line of all nodes in the tree, in search order, and then iterate over those lists. Doing this allows you to ensure that there is only one link to a given node in the list before you start iterating. </p>
|
||||
<p>The akstdlib tree library doesn’t use that method yet. We just process the nodes as soon as we see them. And because of that, for any gievn node of the tree, we wind up processing the root nodes more than once. Now that I’ve worked out some of the other behavioral processes, I’m going to implement the linked list handling.</p>
|
||||
<p>On the tree iterator method, there are two function pointers and one list node provided by the user. The function pointers are for a linked list allocator and free function; the defaults are <code>aksl_malloc</code> and <code>aksl_free</code>. Certain implementations (like mine in <code>libakgl</code>) want control over how objects are allocated or released in memory; in <code>libakgl</code>, I use a series of static arrays allocated in the data segment, and I provide a couple of functions that find unused resources from there, allocate them, and release them back to the pool later.</p>
|
||||
<p>This part of the library has quite a bit more work to do. But there is a complete example (with a test case that currently fails for the aforementioned reasons) <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakstdlib/src/branch/main/tests/test_tree.c">in the tests directory</a>.</p>
|
||||
<h1 id="libakgl"><a href="#libakgl" class="headerlink" title="libakgl"></a>libakgl</h1><p>All of the work in libakerror and libakstdlib this week was supporting <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakgl/pulls/1/files">a larger effort in libakgl</a>: I’m trying to add binary space partitioning of the world so that I can arrange actors into linked lists of near neighbors for collision detection. This will allow me to compare collisions for only a few actors in a given screen area that are near each other, rather than checking every actor against every other actor. On small simple games it’s no big deal, but on a bullet hell or something similar, it’s a problem.</p>
|
||||
<p>Unfortunately it’s not working quite right yet. At this point I have:</p>
|
||||
<ul>
|
||||
<li>A new <code>Stage</code> object has been introduced to represent and track the larger game world (which may or may not have the same extents as the camera, the screen, or the tilemap)</li>
|
||||
<li>A partitioning function on the Stage object that performs the job of partitioning the stage</li>
|
||||
<li>The screen gets subdivided into 32 areas consisting of a 4-deep BSP tree.</li>
|
||||
<li>All actors on the screen are partitioned into the correct area of the tree on level load</li>
|
||||
<li>The area containing the player is currently drawn with a red outline in the <code>sdl3-gametest</code> sample application</li>
|
||||
<li>The physics simulation of actor movement attempts to move the actor through the BSP on the Stage</li>
|
||||
</ul>
|
||||
<p>However lots of it still doesn’t work like it should:</p>
|
||||
<ul>
|
||||
<li>When an actor moves, it’s supposed to traverse the BSP tree as it moves in world coordinates. The actors aren’t doing this.</li>
|
||||
<li>Sometimes the algorithm will attempt to get more tree node objects from the data segment than it should, which results in an <code>AKGL_ERR_OOHEAP</code> exception</li>
|
||||
</ul>
|
||||
<p>And then there’s the fact that I’m just not happy with some of the original design assumptions. For example, right now I only divide the visible screen; off-screen actors will never collide. It also is not very intelligent about how it chooses what to subdivide; if it encounters half of the screen that has no actors in it, it knows this almost immediately, but stubbornly divides it anyway. A more efficient method <em>might</em> be to focus on the areas of greatest actor population (heat mapping). But that would require changing the partitioning process and actor movement logic from “partition once at the beginning, and then update when the actor moves”. Choices, choices.</p>
|
||||
<p>I’m going to have to spend some more time with this one to get it right. But that’s probably going to have to wait a couple weeks; I’ve got a trip planned, and I’m onboarding onto a different team at work, plus I’ve got embedded projects I need to keep moving. So there’s no shortage of distractions.</p>
|
||||
<p>Also, if you go poking around <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew/libakgl">libakgl</a> you will notice a new README with some compact usage instructions, as well as new doxygen comment blocks scattered around the code. I’m trying to bring it all up to speed in that regard.</p>
|
||||
<!--
|
||||
-- tags
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts Path
|
||||
No tags.
|
||||
---------------
|
||||
-- categories
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts
|
||||
Books 14
|
||||
Current Events 6
|
||||
Current Events 0
|
||||
Faith 7
|
||||
History 1
|
||||
Leadership 8
|
||||
Liberal Education 1
|
||||
Outdoors 1
|
||||
Philosophy 7
|
||||
Philosophy 0
|
||||
Technology 15
|
||||
technology 0
|
||||
--!>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/06/30/You-Cant-Go-Home-Again/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">You Cant Go Home Again </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/06/23/News-2026-Week-26/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">News - 2026 - Week - 26 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#libakerror-logging-cleanup"><span class="toc-text">libakerror logging cleanup</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#Linked-List-Handling"><span class="toc-text">Linked List Handling</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Binary-Trees"><span class="toc-text">Binary Trees</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#libakerror-logging-cleanup"><span class="toc-text">libakerror logging cleanup</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakstdlib"><span class="toc-text">libakstdlib</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#Linked-List-Handling"><span class="toc-text">Linked List Handling</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Binary-Trees"><span class="toc-text">Binary Trees</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#libakgl"><span class="toc-text">libakgl</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
788
2026/06/27/News-2026-Week-2/index.html
Normal file
@@ -0,0 +1,788 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>News-2026-Week-2</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="News-2026-Week-2">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/27/News-2026-Week-2/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-27">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-27">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>35</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
News-2026-Week-2
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-27T17:35:40.852Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-27</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current Events
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>5.2k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Here are my thoughts on news across the internet this week. We touch on rent denialism, collapsing job markets, corporate productivity theater, and the many ways AI is being oversold, misused, or shoved where it doesn’t belong. Along the way I rant about enshittification, ownership (of code, hardware, and ideas), bad APIs, worse management, the slow death of the old internet, and why UNIX got it right decades ago. It’s part news roundup, part cultural autopsy, part theological and philosophical musing — ending, as usual, with a reminder to ignore the noise, give your attention to what you love, and keep your eyes on God and the horizon. It’s worth what you paid for it.</p>
|
||||
<h2 id="The-Rent-Is-Too-Damn-High"><a href="#The-Rent-Is-Too-Damn-High" class="headerlink" title="The Rent Is Too Damn High"></a>The Rent Is Too Damn High</h2><p><a target="_blank" rel="noopener" href="https://www.jefftk.com/p/rents-are-high-but-not-skyrocketing">Jeff TK has made a valiant attempt</a> to allay our fears that rents are not skyrocketing. I do love a pretty colored graph showing facts on an axis. However, the problem I have with his article is that the nice flat graphs don’t go far enough to the left. His values begin in 2014, and by 2014, we already knew the rent was too damn high. <a target="_blank" rel="noopener" href="https://knowyourmeme.com/memes/the-rent-is-too-damn-high-jimmy-mcmillan">Jimmy McMillan was a meme in 2010</a>. Of course the graph shows stagnation if you look at it from 2014. There are <a target="_blank" rel="noopener" href="https://www.huduser.gov/portal/datasets/fmr.html?utm_source=chatgpt.com#history">plenty</a> of <a target="_blank" rel="noopener" href="https://www.census.gov/data/tables/time-series/dec/coh-grossrents.html">data sources</a> that will <a target="_blank" rel="noopener" href="https://www.zillow.com/research/data/">provide</a> a <a target="_blank" rel="noopener" href="https://usa.ipums.org/usa-action/variables/190639#source_variables_section">more accurate</a> picture of what’s going on. The rent is, indeed, too damn high, and has, indeed, skyrocketed. However I suppose I will concede to TK that the skyrocket has stalled - for the moment.</p>
|
||||
<h2 id="Jobs-and-Corporate"><a href="#Jobs-and-Corporate" class="headerlink" title="Jobs and Corporate"></a>Jobs and Corporate</h2><p>Amazon is now requiring its employees to list <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-corporate-employees-performance-reviews-accomplish-last-year-2026-1">three to five distinct accomplishments</a> from the past year in their new performance review process. Measuring employee productivity is actually really difficult, and you can tell a lot about a company’s current state by how they measure it. This kind of measuring stick is a strong indicator that the cuts are about to go deeper; don’t expect the layoffs to quit in 2026.</p>
|
||||
<p>Unfortunately, <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-modern-job-hunt-a-side-quest">the situation for job hunters is terrible, and not getting better</a>. If you find yourself looking for work, keep yourself open to new specializations within your field, or even new fields entirely. Being choosy in this economy is not a beneficial trait if you have bills to pay and mouths to feed. My own job search a couple of years ago - when the situation was actually a little better than now - saw me fire off almost 400 applications in the span of 1.5 months, with only 4 interview prospects. <a target="_blank" rel="noopener" href="http://jobquest.aklabs.net/">Here is a totally accurate simulation of the current job hunting experience</a>.</p>
|
||||
<p>Meanwhile, a new project has attempted to <a target="_blank" rel="noopener" href="https://www.remotelabor.ai/?itid=lk_inline_enhanced-template">measure the actual effectiveness of AI agents at performing several types of remote work</a>, and found that the LLMs were only able to independently complete work about 2.5% of the time. This is a positively abysmal measurement that proves that AI simply can not be left to do work alone. It doesn’t mean that AI won’t take <em>some</em> jobs, it just means that AI will still need at least one or more people to constantly look over its shoulder to ensure the work is getting done. Now, before the middle managers in my audience get excited, I must point out that those supervising the AI must actually be competent in the job the AI is doing, so that errors can be detected and corrected. And frankly both AI and many managers have this in common: a lack of basic competency in the job they are performing or supervising. So line jobs in these types of projects are probably safe for a while - although you will probably be forced to do the job with your ass in a corporate seat, rather than at home.</p>
|
||||
<p>Speaking of asses in corporate seats working for incompetent management, <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-flags-employees-rto-office-2026-1">Amazon has rolled out a new tool to help measure employee productivity</a>: this one measures the amount of time your ass spends in a seat. The tool will tell managers how long you spend badged into the building. (For those who don’t know, most companies now have digital door control systems that an employee accesses with a badge, so the company knows when you come and when you go.) The system will assist managers in making decisions by flagging employees that have low hours (4 hours or less in per day) and no hours (zero). As I said, measuring performance is a tricky business, and one of the oldest standby methods is to simply measure how much time your ass is in a seat. It’s called attendee-ism, it’s a garbage measurement used by dinosaurs and those interested in justifying their massive commercial real estate investments. It’s also alive and well in our biggest and supposedly smartest companies. Huzzah.</p>
|
||||
<h2 id="The-AI-Slop-Trough"><a href="#The-AI-Slop-Trough" class="headerlink" title="The AI Slop Trough"></a>The AI Slop Trough</h2><p>The good news is that while your ass is in a seat at your wage-slave job, <a target="_blank" rel="noopener" href="https://www.axios.com/2026/01/08/microsoft-ai-copilot-checkout">you can still get your shopping done by talking to Copilot and letting it buy things for you</a>. Just give the AI access to your financial accounts bro, it’s cool. <a target="_blank" rel="noopener" href="https://www.youtube.com/shorts/ar1iweInzc0">This will be a great way to get all the useless shit you don’t need</a>.</p>
|
||||
<p>Speaking of AI doing things it really shouldn’t, <a target="_blank" rel="noopener" href="https://www.msn.com/en-us/technology/software/a-new-approach-to-living-a-good-life-comes-from-a-most-unlikely-place/ar-AA1TSu0Q">the Workshop for Emotional and Spiritual Technology Corporation (West Co) is testing a platform called Tingle</a>, a social media platform that hopes to help users build more meaningful lives - by having users interact with smart devices to ask AI how to build more meaningful lives. A <a target="_blank" rel="noopener" href="https://tech.slashdot.org/comments.pl?sid=23889512&cid=65915338">Slashdot user</a> put it perfectly: “AI, which is incapable of deriving meaning or even determining relevance, is going to tell us humans how to build purposeful life. This is peak idiocy.” </p>
|
||||
<p>Turning away from how we’re using AI to continue to lose our humanity, and instead focusing on how we’re using it to try and lose more of our own skill and capacity by asking it to do work that we can (and probably should) do ourselves. <a target="_blank" rel="noopener" href="https://thenewstack.io/beyond-python-why-llms-need-more-stable-open-source-code/">An article on The New Stack recently posited</a> that AIs show a preference for certain languages in certain arenas, and that this is a problem for a variety of reasons. Namely “my LLM can’t generate the code for prompt X in language Y”, because for whatever reason language Y is the choice du-joure for this task. I don’t know why anyone is surprised by this habit of LLMs. AIs are trained on the stuff we say and the choices we make, specifically what’s published in the public domain (although not exclusively the public domain, as many trainers have unscrupulously stolen materials they should not have used for training purposes). Regardless, they are essentially reproducing what they have seen elsewhere (<em>cough</em> stack overflow <em>cough</em>). Why are we at all surprised by the language choices made by an LLM when they so clearly resemble what humans have been telling other humans to choose?</p>
|
||||
<p>Speaking of LLMs consuming things they shouldn’t, <a target="_blank" rel="noopener" href="https://www.seroundtable.com/tailwind-css-google-drop-40725.html">we need a stronger robots.text standard that lets content creators control how LLMs and AI agents can reproduce or use their content</a>. If Tailscale had been able to say things like “you can only use this content if you clearly advertise the source and include this blurb or link to this site or with this overlay”, then maybe they wouldn’t have had to fire 75% of their staff when AI began parroting their documentation, taking human eyes away from where their commercial option was advertised, effectively nuking a large part of their business model. This isn’t about sticking your head in the sand in an AI world, it’s about software authors having enough respect for each other to make their software honor the boundaries put up by humans. We do live in a society, after all.</p>
|
||||
<p>Our society needs to make some long term plans around AI anyway, especially around the usage of AI for code, and the code generated by that AI. <a target="_blank" rel="noopener" href="https://arxiv.org/html/2511.04427v2#S6">A Carnegie-Melon study on the impact of Cursor usage in software products</a> shows that while there are indeed short term bursts from the usage of these tools, they are likely to generate a lot more long term headache. As I mentioned, part of what happens when we turn to AI to solve our problems for us (whether those problems are in our relationships or our codebase), assuming that the solution works, we immediately begin to suffer atrophy in the skills we should have used to solve those problems. Because of that we are less able to spot quality problems in the output of the AI. And when we have to maintain that work (“though a program be but three lines long, some day it will have to be maintained” –<a target="_blank" rel="noopener" href="https://www.mit.edu/~xela/tao.html">Tao of Programming</a>, Book 5), we often find that we can’t maintain it very well (if at all) because we aren’t able to fall back on our original knowledge we used to solve the problem, because we didn’t solve it! All of this might sound like your middle school math teacher saying “you won’t always have a calculator in your pocket!”, but for at least the foreseeable horizon, this is the reality of the situation, and we mustn’t approach it blindly, lest we pass those headaches on to our successors (or our children).</p>
|
||||
<p>I recently posited the hilarity and terror of moving away from well defined to APIs towards AIs simply talking to each other and “having at it”, but it did highlight a real problem: most of our API specs suck anyway, and an AI may very likely do just as good a job of consuming your broken API spec as a human would. <a target="_blank" rel="noopener" href="https://thenewstack.io/why-most-apis-fail-in-ai-systems-and-how-to-fix-it/">The New Stack recently ran an article about why your API sucks and why an AI can’t effectively consume it</a>, and I largely agree with it. However it’s worth pointing out that the problems in this article apply to AIs and humans equally - if your API spec sucks, your docs suck, your examples don’t reflect real usage, then humans are going to suffer with your software too. The difference is that humans are used to suffering through poor specs and “figuring it out”, while AI is more likely to do <em>strange</em> things with poor assumptions based off your code, and we’re likely to give that AI more leash than it deserves to do <em>possibly bad</em> things with those <em>strange</em> interpretations of <em>your crappy API</em>. So, whether you’re working for humans or AI, do us all a favor: <strong>stop writing crappy APIs with crappy docs</strong></p>
|
||||
<p>But following on the ideas of “AIs are trained on what is well published” and “simple well defined interfaces are best”, once again, <a target="_blank" rel="noopener" href="https://thenewstack.io/the-key-to-agentic-success-let-unix-bash-lead-the-way/">UNIX solved this problem 50 years ago</a>. Some folks are finding that the best way to let agents solve many problems is, instead of giving them lots of custom skills and tools, simply given them a bash terminal and let them get to work. Most unix/linux/gnu command line programs follow <a href="en.wikipedia.org/wiki/Unix_philosophy">the UNIX design philosophy</a> and thus have pretty good documentation, they tend to do one thing and do it well, and they tend to operate on plain text passing in and out through pipes, making it easy to chain those programs together to do new things. This basic interface and pattern hasn’t really changed for 50 years, and we’ve got a ton of well published documentation on using these tools for all kinds of black magic, and LLMs have been trained on all of it. I kind of love it.</p>
|
||||
<p>Meanwhile, regardless of the specific ways your AI is implemented, <a target="_blank" rel="noopener" href="https://thenewstack.io/open-source-retrieval-infrastructure-can-fix-ais-production-gap/">a New Stack article captures some of the real problems your enterprise is likely to face</a> - things like observability and auditability. What documents in the knowledge base are being used, which sections, what questions lead to which answers, what answers were used to drive which automated decisions, etc. But the article doesn’t really put forward a good solution to the problem, instead it seems to be proposing that retrieval augmented generation is the solution. Maybe you can get something from it, but I don’t really see an answer here, beyond “we need to figure out answers to these problems”.</p>
|
||||
<p>Speaking of understanding why certain decisions were made, <a target="_blank" rel="noopener" href="https://perrotta.dev/2026/01/adrs-and-llms/">Thiago Perotta’s hot take is that the Architecture Decision Record is a key component of an LLM driven codebase</a>. ADRs are fine by themselves I suppose, and LLM coding agents definitely do benefit from the added context given by a set of ADRs. But the problem with ADRs that I’ve personally seen is that there is often not a clear link between “this piece of shit code I’m having to fix” and the ADR that introduced the architectural pattern that caused the shit code to be written. So the reasoning isn’t discovered until someone fixes the shit, proposes a merge request, and the architect (in all their glory) weighs in to the merge request explaining why this is bad because “this ADR explains this and didn’t you read it?”. (I may just have a bad history with architects.) Maybe integrating LLMs and ADRs can resolve that gap by linking specific ADRs to specific comments with some kind of metadata that links the implementation to the architectural decisions that lead to the implementation choices. That may be a beneficial thing to adopt. However Thiago takes the brakes off the AI, saying “nowadays your LLM agent can draft ADRs for you”. Soon we will have LLMs making decisions, justifying those decisions, writing ADRs about those decisions, using those ADRs to justify future decisions, and the human will just stand there slack-jawed watching it all happen. The AI has investigate its code, and has found justification from its ADRs, and thereby has found that the AI has done nothing wrong; the AI will push to prod now.</p>
|
||||
<h2 id="General-Technology-and-Dev"><a href="#General-Technology-and-Dev" class="headerlink" title="General Technology and Dev"></a>General Technology and Dev</h2><p>Turning away now from AI, but remaining in the realm of technology and code, <a target="_blank" rel="noopener" href="https://linux.slashdot.org/story/26/01/11/1926219/gentoo-linux-plans-migration-from-github-over-attempts-to-force-copilot-usage-for-our-repositories?utm_source=rss1.0mainlinkanon&utm_medium=feed">Gentoo reminds us that there is no free lunch and that you should probably host your own code</a>. If you weren’t aware, GitHub is essentially forcing Microsoft Copilot on everyone, because of course they are. Copilot can’t help you unless it trains itself on your codebase. And copilot will be improved for others by what it learns from you. So Microsoft is essentially building their product, which they will sell to others, by including your code, without attribution. This is obviously a problem. Remember kids - if the service you are using is free, then YOU, or what YOU are hosting, are the product. Someone is benefiting from hosting your code. I personally use gitea to hold my code at home, and anything I want to publish to the internet, is done with a github mirror - my gitea is the source of authority, not github. You should own your stuff, and you should own the distribution channels for it, where possible.</p>
|
||||
<p>Speaking of code, owning code, writing code, and reviewing code, <a target="_blank" rel="noopener" href="https://tidyfirst.substack.com/p/party-of-one-for-code-review">the code review process as we know it is really terrible</a>. Kent Beck makes the point that, when code review was first proposed from IBM, “Hardly anyone actually did it. Too much work. Too tedious.” Honestly the situation today is much the same. He concludes with the idea that “I’d rather be pairing. […] That’s less satisfying. It’s also where I’m at. […] I’m still figuring out what to do about it.” This mirrors my own experience and preferences. You write a change, send it to a teammate for a peer review, and one of three things happens: <code>1)</code> you wait forever for a detailed high quality review that will undoubtedly result in a bunch of proposed changes that are legitimate but that are outside of your timeline and will piss you off, <code>2)</code> you wait forever and the damn code never gets reviewed at all so you can’t ship, or <code>3)</code> you get a really fast turnaround with a rubber stamp approval that means nothing and was just a waste of time checking a box. Pairing is a much better answer, in my experience - talking through it with someone, working on the code together, you get better feedback in a lower span of time and you ship faster because they’re ready to approve once you’re done. And chances are you’re doing the same for them while you’re working, so you are probably shipping two features faster, rather than just one. <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=8wUOUmeulNs">Really advanced teams will move past pair programming all the way into spooning</a>, but even that may not prevent <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-review">the Jimbo effect</a>.</p>
|
||||
<p>Anyway - back on ownership, not just of code, but you should own everything you buy, as well. That seems like an obvious statement but because of the ongoing <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Enshittification">enshittification</a> of everything, <a target="_blank" rel="noopener" href="https://www.eff.org/deeplinks/2016/12/john-deere-really-doesnt-want-you-own-tractor">you don’t own what you buy</a>. And if you try to reverse engineer the thing that you bought so that you can actually use the thing you bought for the thing you want to use it for, <a target="_blank" rel="noopener" href="https://ttconsultants.com/understanding-reverse-engineering-and-the-infringement-law/">you may be committing a crime</a>. Cory Doctorow, blogging from his hot air balloon high above international waters, <a target="_blank" rel="noopener" href="https://www.theguardian.com/commentisfree/2026/jan/10/trump-beginning-of-end-enshittification-make-tech-good-again">recommended in a Guardian article</a> that some countries may be well positioned to repeal certain laws from their books that make such activities illegal, which he argues (and I agree) will help put an end to enshittification. The problem I have with his take is that you don’t have to ask for permission to reverse engineer something. You can just do it. The suits are always going to complain about you doing it - <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We explore… and you call us criminals.”</a> - but you can just take things apart, figure out how they work, and put them back together in a new way. I suppose it matters more when you’re talking about two nations dealing with each other, certain amounts of agreements must be honored, otherwise it might come to armies with guns having at each other. But what’s stopping individuals from doing this, and then just publishing the results, and now oh wait this state actor can benefit from it, and now the enshittification blockade has been broken because now the cat is out of the bag. Hackers used to do shit. When did we stop? </p>
|
||||
<p>Also, I’m so sick and tired of enshittification being presented as a uniquely American phenomenon. This is not a uniquely American phenomenon. Cory, if you’re listening, you’re wrong about this part: enshittification is a capitalist phenomenon, and is not a product of American culture. We are simply the unfortunate culture where the capitalists began their strip mining of the human experience. Please stop blaming this shit on us, Cory, and blame the real problem, being out of control greedy capitalists that don’t take answers from We The People anymore.</p>
|
||||
<p>Speaking of Cory and his insistence that the solution must be post-American, and the legal implications thereof, <a target="_blank" rel="noopener" href="https://yro.slashdot.org/story/26/01/10/054252/more-us-states-are-preparing-age-verification-laws-for-app-stores?utm_source=rss1.0mainlinkanon&utm_medium=feed">a Slashdot post aggregates a few things talking about US app stores rolling out age verification as a gateway to entry</a>. This is part of what Cory Doctorow is talking about when he says the American internet. Law only applies so far as ownership allows for enforcement: you can’t enforce the rights of a property owner on a house you don’t own. And right now America owns most of the physical infrastructure providing the internet. So the more infrastructure a given legal entity owns (certainly for nation states), the more autonomy they can exercise in the operation of that portion of the internet. Once that physical ownership changes, legal force changes, and the services operating on that internet have to behave differently. So eventually we are going to see nation level divisions of the internet where systems must function differently to comply with the laws in those nations. Folks like Cory will see this as a a win, and to be fair, it is a win in some regards. However, it’s also a wild regression : <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We exist without skin color, without nationality, without religious bias… and you call us criminals.”</a> There are some of us out here that remember a time when, and still prefer to pretend that, the Internet is its own place. It transcends national boundaries. It is its own place with its own culture and its own rules. Unfortunately, while the infrastructure that built that internet is still around, the idea of that internet is just a ghost now. I really hope it comes back. But I think I know better. Still … <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=HrJSDrHpPUk">it’s fun to dream</a></p>
|
||||
<p>Speaking of things we buy but don’t own and cannot control, <a target="_blank" rel="noopener" href="https://www.macrumors.com/2026/01/08/ios-26-shows-unusually-slow-adoption/">Apple is lamenting the slow adoption rate of iOS 26</a>. These people have the nerve to be surprised. We are tired of and exhausted by constantly having to accept updates on devices we don’t actually own, disrupting our user experience with features we didn’t ask for that don’t actually benefit our lives. Stop sending us shit we didn’t ask for and don’t need. Half of the time your update breaks something we like. This is not a problem unique to Apple, it’s a general problem with internet attached devices. The constant stream of updates is exhausting and frustrating. Maybe we just want to use our device as it is, as we bought it, without interference. Piss off.</p>
|
||||
<p>Then again, sometimes there are cool ideas and we react unfairly. <a target="_blank" rel="noopener" href="https://slashdot.org/story/26/01/08/145236/lego-says-smart-brick-wont-replace-traditional-play-after-ces-backlash?utm_source=rss1.0mainlinkanon&utm_medium=feed">I personally think LEGO Smart Blocks were a neat idea</a>. Obviously, not everyone shares that idea. NIMLB - Not In My Lego Box!</p>
|
||||
<p>But you know what they say - if it ain’t broke, don’t fix it. Craigslist, which <a target="_blank" rel="noopener" href="https://arstechnica.com/culture/2026/01/ungentrified-craigslist-may-be-the-last-real-place-on-the-internet/">Ars Technica recently called “The Last Real Place on the Internet”</a>, has survived almost in spite of itself into the new internet. <a target="_blank" rel="noopener" href="https://tech.slashdot.org/story/26/01/09/1618243/craigslist-at-30-no-algorithms-no-ads-no-problemutm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion on the article</a> highlights the dichotomy: it does what it should, hasn’t chased trends, provides the services it intends to, and stays out of politics, while it is literally an advertising site, which is so much of what is wrong about the modern internet. But at the same time, while the interface is the same, and while it is still alive, those of us who remember the early internet will know that Craigslist is a shadow of its former self. Some people will say that’s because you can no longer buy sex there, but I think it’s deeper than that. I don’t know if Craigslist will survive the eventual internet die-off of millenials, and part of me is really sad about that.</p>
|
||||
<p>I came across a <a target="_blank" rel="noopener" href="https://dockhand.pro/">new tool for managing Docker deployments on your small lab called Dockhand</a> recently. A <a target="_blank" rel="noopener" href="https://thenewstack.io/free-dockhand-tool-simplifies-docker-container-management/">New Stack article</a> gives an overview of the tool, but I don’t believe it mentions the pricing on the tool, I believe it gave the impression it is a free tool, but it’s been a few days since the article. Dockhand seems neat, the interface reminds me of the docker UI on my Synology DSM NAS, which I honestly find really handy for quickly spinning things up. I’m not clear how well it can manage a fleet of hosts, or if it’s just the one host you can manage. While reading about it, I thought “… why not just use kubernetes?”, because it seems to solve such a similar problem, that is already well solved by Kubernetes. Then I realized, well it’s obvious why not, and I know this because I work with kubernetes every day: the interface for kubernetes is pretty shit! That’s like looking at a user rejoicing over their new DOS system, happily running programs, and saying “why not just write your boot loader in assembly?”. Why would you inflict the pain of that complexity on someone who obviously doesn’t need it? STFU nerd, the normies are having fun (and, apparently, paying for it).</p>
|
||||
<p>Speaking of nerds and normies, I kinda get mad when my wife calls me “normal”, because … well … I don’t feel normal. But regardless, when comparing myself to my wife and daughters, I have to accept that I am basically normal. Every once in a while writing software I get reminded of this. When I was working with <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/devinbangsund/">Devin</a> at Nintendo, I was working on a web dashboard for a tool, and was explaining how easy it was to tell which things were passing and failing. “The passed tests are in red, the failed ones are in green.” I forget exactly what he said - Devin has a way of witty deadpan delivery that ensures you get the point, even if you don’t remember the words - but he made the point that he was red/green colorblind. I’d been in the industry for probably 10 years at that point, and had never confronted UI design for a colorblind person. It’s definitely not the first time I’d used the red/green color combination. So as a “normal” person I do a lot of things that probably either alienate some from my software, and may actually outright harm people sometimes. Generally speaking, we normies don’t do it on purpose, we just don’t know better. But <a target="_blank" rel="noopener" href="https://www.ragman.net/musings/copypasta/">ragman recently put out a really interesting article</a> musing on how difficult it is to make a website accessible for neurodivergent people when you use emojis, gifs, colors, etc. There’s a lot in there about accessible webdev in general. Luckily my website has basically two colors - black and white - and usually only uses still images in the few places it does use images. But it was an eye opening article.</p>
|
||||
<h2 id="Nature-and-Nature’s-God"><a href="#Nature-and-Nature’s-God" class="headerlink" title="Nature and Nature’s God"></a>Nature and Nature’s God</h2><p>Pivoting away from code towards the intersection of technology and nature, <a target="_blank" rel="noopener" href="https://www.theregister.com/2026/01/08/camouflage_tech_mimics_octopus/">researchers at Stanford have produced a synthetic camouflage material that acts like octopus skin</a>. It’s often been said that any sufficiently advanced technology is effectively indistinguishable from an equally reliable/predictable form of magic. Compare to this material to cloaks of elvenkind. Combine this with thermoptic camouflage that can hide soldiers (or anyone) from thermal imagers and we are well on our way to being in a Predator movie.</p>
|
||||
<p>It doesn’t do much to protect you from smell though. The dogs will still find you. Dogs are amazing creatures, and I’m firmly convinced we humans do not deserve them. <a target="_blank" rel="noopener" href="https://science.slashdot.org/story/26/01/08/2249216/some-super-smart-dogs-can-learn-new-words-just-by-eavesdropping?utm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion highlights an NPR quote</a> that shows Dogs can learn new words just by overhearing their favorite human saying them, even if the dog is not the target of the verbal action, and they don’t need to hear them a whole lot to understand. At the same time, not every dog can do this apparently, but the researchers imply that this points to some sort of inter-species shared social understanding that predates language and that is shared by many species. First, I think this shows that animals will only continue to impress us by how smart they are, and our assumptions about our special nature as the only “intelligent animal” will eventually be shattered. Second, I think it points to a truth that is already held in scripture: before the fall of mankind through sin, introducing the fallen state into the world, we existed in such harmony with the rest of God’s creation that we actually communicated with each other effectively. The book of Jubilees states this plainly: “And on that day the mouths of all the animals, the cattle, the birds, everything that walks and everything that moves about were made incapable of speaking because all of them used to converse with one another in one language and one tongue”.. But it’s apocryphal, so protestants outright reject it, and it’s not generally used for teaching in the high liturgy churches. But I’m convinced of it, and that’s part of why Christ tells us to preach the gospel to all creation (Mark 16:15), literally every creature - because the Good News of Christ is not just of saving mankind from sin, but of putting the entire order of Creation back right, such that we will once again be back in alignment with the rest of creation. The wolf shall lie down with the lamb. “Was I a good boy?”, he’ll ask us, and we’ll say, “you were the best”.</p>
|
||||
<p>Speaking of the wonder and majesty of God’s creation, <a target="_blank" rel="noopener" href="https://phys.org/news/2026-01-nature-good-math.html">a project at Sandia National Lab</a> shows that by using computer architecture more inspired by the architecture of our brain, the computer becomes “shockingly good” at math. The more I learn about science and engineering, the more in awe I am of the master builder who made me. This is a shared sentiment with many experienced scientists - Alan Perlis once famously quipped <a target="_blank" rel="noopener" href="https://www.cs.yale.edu/homes/perlis-alan/quotes.html">“A year spent in artificial intelligence is enough to make one believe in God.”</a>. (And a year of trying to get work done with ChatGPT is enough to make one understand why God is so constantly frustrated with us, and to appreciate His infinite patience with us.)</p>
|
||||
<h2 id="Ennui-and-Hope-Read-some-books"><a href="#Ennui-and-Hope-Read-some-books" class="headerlink" title="Ennui and Hope : Read some books"></a>Ennui and Hope : Read some books</h2><p>One of my favorite books in the Bible is Ecclesiastes. In Ecclesiastes, Solomon muses, there is nothing new under the sun. As a technologist, especially one who remembers the early days of the internet and personal computing, we may be left to wonder <a target="_blank" rel="noopener" href="https://ldstephens.net/blog/on-what-more-to-do/">(as LD Stephens does on their blog), what more is there to do?</a>. There seems to be nothing new under the digital sun. Have we reached the end of the frontier that was the personal computing revolution and the opening of the internet? Sometimes I feel that way. Sometimes I will look at my terminal and think “all software has been written, all thoughts have been said, all is meaningless”. Other times I feel the warmth of that old digital sun rising on my face over that endless horizon, and feel like a veil is lifted and chains are falling away, as I rediscovered what was there all the time. It comes and it goes. I think a lot of it has to do with the attention economy, the general ennui of life and getting older. The samurai Yamamoto Tsunetomo once said, in response to the desire to return to the feeling of a prior age, “… and this is due to the world’s passing away”. And it’s probably also a result of our individual and collective ADHD. Do what you love, don’t worry about who has done it before, or how new it is. Do you love it? Do it. Cheer up my brother, live in the sunshine, and give your attention to the things you love.</p>
|
||||
<p>Speaking of attention, counteracting ADHD and giving it to what you love, <a target="_blank" rel="noopener" href="https://amanhimself.dev/blog/2025-year-in-books/">Aman Mittal reports that he read 64 books in 2025</a>. 64 books in a year is astonishing to me. I could barely get through that even with audio books. My hat’s off to you. I’m told this used to be normal behavior. What an absolute reading Chad. But … I imagine that, if you read 64 books in a year, you don’t have as much a problem seeing the horizon.</p>
|
||||
<center><img alt="Bring me that horizon" src="/images/bringmethathorizon.jpeg"/></center>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/06/27/Devlog-20260627/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 27 June 2026 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-23</div>
|
||||
<a href="/2026/06/23/News-2026-Week-26/"><div class="recent-posts-item-content">News - 2026 - Week - 26</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-18</div>
|
||||
<a href="/2026/06/18/Devlog-20260618/"><div class="recent-posts-item-content">Devlog Entry - 18 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
800
2026/06/30/Be-Yourself/index.html
Normal file
@@ -0,0 +1,800 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>Just Be Yourself ... Whoever that is</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Just Be Yourself ... Whoever that is">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/30/Be-Yourself/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
Just Be Yourself ... Whoever that is
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-30T12:49:26.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>1.4k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Some of the best, simplest, and hardest advice I ever got was from a dead man.</p>
|
||||
<p>When someone dies, we go through many different stages of grief. Denial, Bargaining and Acceptance are relevant here. First we refuse to believe they’re gone, then we try to bargain, to come up with some way to avoid this from being reality. Once we realize we can’t deny it, and we can’t stop it, we must accept it - but accepting that they’re dead doesn’t mean accepting that their life is over. Some of us, in our grief, will attempt to prolong the life of the deceased by carrying on their last mission, to complete it in their honor. If this person had no specific mission, or if this person’s mission was to enable and support the lives of others, we may find ourselves simply trying to live their life for them. Naturally, this is impossible. But that doesn’t stop us from trying.</p>
|
||||
<p>I found myself in this state some time after my brother James had passed (God rest him). I was trying to pick up martial arts again. I was trying to be more involved in the lives of his children than I was able to. I was trying to keep some of his D&D campaign ideas alive. I was pouring myself into the things he would have done, because I couldn’t bear the idea of him being gone, and as part of that, I couldn’t allow his <em>life</em> to end. But it was unmaintainable. Not to mention the fact that - it wasn’t my life.</p>
|
||||
<p>It should surprise absolutely nobody that James and I were, for all our similarities and our closeness, very different people. We lead very different lives. Our hobbies and interests overlapped in a few areas, but other than that, we were totally separate people. So not only could I not manage to do live both lives at once for practical reasons, I simply couldn’t bring enough energy and investment to the things I was doing to keep his memory and life alive. At best, it would have been a gross pantomime of his life, a sick zombie choreography of him. His verses were not mine to sing.</p>
|
||||
<p>I was continually breaking down during this period. I remember, frequently, calling out to him in the darkness, asking for him to give me some kind of sign that he was out there. That he wasn’t really gone forever. I asked him how I could possibly keep going, what I was supposed to do.</p>
|
||||
<p>We often hope for things like this to get some kind of visible response. Maybe a vivid dream. Perhaps an apparition. Some kind of mystical visit. What we usually get is a deafening, crippling silence. Dead men tell no tales, after all. But I actually got an answer. It was in my head, but it was definitely him, in his voice. </p>
|
||||
<blockquote>
|
||||
<i>"Just be yourself." --Ghost Jim</i>
|
||||
</blockquote>
|
||||
|
||||
<p>“But who AM I?”, I asked desperately.</p>
|
||||
<p>I didn’t get a response to that one. I could imagine him lighting a cigarette, taking a drag, shrugging, and fading away. Defining me wasn’t - and never was - his job, even though who he was had become a part of who I was.</p>
|
||||
<p>A large part of our identity comes not only from ourselves, but from our family, and our position in our family. “Father of X”, “Daughter of Y”, “Cousin of Z”. Once those family ties change, our identity can change with it. If you spend your entire life as “James’ younger brother”, and suddenly, there’s no more James … who are you now?</p>
|
||||
<blockquote>
|
||||
<center><i>"YOU are not your JOB, or how much MONEY you have in the bank!"<br/>--Tyler Durden</i></center>
|
||||
</blockquote>
|
||||
|
||||
<p>Obviously we are more than the connections in the family graph around us. Sir Anthony Shanander once pondered the question, “who would you be if all this knighthood and chivalry stuff was stripped away?” He struggled with it only a little, and comfortably replied that he “would still be a Child of God”, and that would be his most important core identity. But even that is an expression of a family relationship. Then again, for a Christian, it is also an inalienable definition - God states clearly that He will neither leave us nor forsake us, so it is impossible, once being adopted through baptism, to <em>cease</em> being a Child of God. Even if we flee and squander our inheritance like the prodigal son, and we lose all other titles and even our sense of self, we remain His children.</p>
|
||||
<p>Even identifying ourselves by what we do is insufficient. That can change over time. Does that change who we <em>are</em>? Aristotle said “you are what you repeatedly do.” Forrest Gump said “Stupid is as stupid does”. I might say “I am a programmer” or “I am a marksman” or “I am a volunteer firefighter”, but are any of those things the core of what I am? Or are they spokes on the wheel of my identity? So while some of our identity does obviously derive from what we do, that can’t be the whole thing.</p>
|
||||
<p>Who are you if you strip away everything else, and you just look at yourself, bare and naked, nobody around you, away from your job, away from your hobbies. Who are you? </p>
|
||||
<p>I’ve never been able to really answer that question. The last 10 years of my life have been one long attempt to answer it. Now I’m beginning to wonder if that’s not the wrong way to go about it. Is it actually possible to answer the “Who are you?” question without bringing in your famaily, your actions, your religious beliefs, etc? Without that, are we left with some abstract base class version of yourself that, while technically accurate, is not actually useful as an identifier, and may in fact group you into a class of persons rather than sufficiently distinguishing you as an individual?</p>
|
||||
<p>Still, trying to follow this advice has lead me to a place where I am much more at peace with myself than before. Part of this process was asking questions like:</p>
|
||||
<ul>
|
||||
<li>What do I believe?</li>
|
||||
<li>Why do I believe it?</li>
|
||||
<li>Are those beliefs actually mine?</li>
|
||||
<li>What do I do?</li>
|
||||
<li>Why do I do it?</li>
|
||||
<li>What have I chosen, what have I inherited, and what am I unknowingly assimilating?</li>
|
||||
</ul>
|
||||
<p>James obviously had some idea of who I was, and he believed in it enough to tell me to trust his memory to be carried on the wind of story, and to focus on being myself. He used to say, “You have no idea how proud I am that we are brothers”. I still don’t understand why, but, I’m doing my best to live up to that praise and honor by being the best version of myself I can be. I am doing my best to discover my verse, and to add it to the chorus with his, in my own voice.</p>
|
||||
<p>Bruce Lee said that, to be a Martial Artist meant “honestly expressing yourself”. He also said that the essence of Jeet Kune Do was to “absorb that which is useful; discard that which is not; add what is uniquely your own”. It’s up to you to figure out what is uniquely your own, and boldly express it.</p>
|
||||
<blockquote>
|
||||
Oh me! Oh life! of the questions of these recurring,
|
||||
<br/>Of the endless trains of the faithless, of cities fill’d with the foolish,
|
||||
<br/>Of myself forever reproaching myself, (for who more foolish than I, and who more faithless?)
|
||||
<br/>Of eyes that vainly crave the light, of the objects mean, of the struggle ever renew’d,
|
||||
<br/>Of the poor results of all, of the plodding and sordid crowds I see around me,
|
||||
<br/>Of the empty and useless years of the rest, with the rest me intertwined,
|
||||
<br/>The question, O me! so sad, recurring—What good amid these, O me, O life?
|
||||
<br/>
|
||||
<br/><center><i>Answer.</i></center>
|
||||
<br/><b>That you are here—that life exists <i>and identity</i>,
|
||||
<br/>That the powerful play goes on, <i>and you may contribute a verse.</i></b>
|
||||
<br/>
|
||||
<br/><i>--Walt Whitman, "O Me! O Life!"</i>
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/06/30/News-2026-Week-2/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">News-2026-Week-2 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/06/30/You-Cant-Go-Home-Again/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">You Cant Go Home Again </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
788
2026/06/30/News-2026-Week-2/index.html
Normal file
@@ -0,0 +1,788 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>News-2026-Week-2</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="News-2026-Week-2">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/30/News-2026-Week-2/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
News-2026-Week-2
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-30T19:59:55.937Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current Events
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>5.2k words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>Here are my thoughts on news across the internet this week. We touch on rent denialism, collapsing job markets, corporate productivity theater, and the many ways AI is being oversold, misused, or shoved where it doesn’t belong. Along the way I rant about enshittification, ownership (of code, hardware, and ideas), bad APIs, worse management, the slow death of the old internet, and why UNIX got it right decades ago. It’s part news roundup, part cultural autopsy, part theological and philosophical musing — ending, as usual, with a reminder to ignore the noise, give your attention to what you love, and keep your eyes on God and the horizon. It’s worth what you paid for it.</p>
|
||||
<h2 id="The-Rent-Is-Too-Damn-High"><a href="#The-Rent-Is-Too-Damn-High" class="headerlink" title="The Rent Is Too Damn High"></a>The Rent Is Too Damn High</h2><p><a target="_blank" rel="noopener" href="https://www.jefftk.com/p/rents-are-high-but-not-skyrocketing">Jeff TK has made a valiant attempt</a> to allay our fears that rents are not skyrocketing. I do love a pretty colored graph showing facts on an axis. However, the problem I have with his article is that the nice flat graphs don’t go far enough to the left. His values begin in 2014, and by 2014, we already knew the rent was too damn high. <a target="_blank" rel="noopener" href="https://knowyourmeme.com/memes/the-rent-is-too-damn-high-jimmy-mcmillan">Jimmy McMillan was a meme in 2010</a>. Of course the graph shows stagnation if you look at it from 2014. There are <a target="_blank" rel="noopener" href="https://www.huduser.gov/portal/datasets/fmr.html?utm_source=chatgpt.com#history">plenty</a> of <a target="_blank" rel="noopener" href="https://www.census.gov/data/tables/time-series/dec/coh-grossrents.html">data sources</a> that will <a target="_blank" rel="noopener" href="https://www.zillow.com/research/data/">provide</a> a <a target="_blank" rel="noopener" href="https://usa.ipums.org/usa-action/variables/190639#source_variables_section">more accurate</a> picture of what’s going on. The rent is, indeed, too damn high, and has, indeed, skyrocketed. However I suppose I will concede to TK that the skyrocket has stalled - for the moment.</p>
|
||||
<h2 id="Jobs-and-Corporate"><a href="#Jobs-and-Corporate" class="headerlink" title="Jobs and Corporate"></a>Jobs and Corporate</h2><p>Amazon is now requiring its employees to list <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-corporate-employees-performance-reviews-accomplish-last-year-2026-1">three to five distinct accomplishments</a> from the past year in their new performance review process. Measuring employee productivity is actually really difficult, and you can tell a lot about a company’s current state by how they measure it. This kind of measuring stick is a strong indicator that the cuts are about to go deeper; don’t expect the layoffs to quit in 2026.</p>
|
||||
<p>Unfortunately, <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-modern-job-hunt-a-side-quest">the situation for job hunters is terrible, and not getting better</a>. If you find yourself looking for work, keep yourself open to new specializations within your field, or even new fields entirely. Being choosy in this economy is not a beneficial trait if you have bills to pay and mouths to feed. My own job search a couple of years ago - when the situation was actually a little better than now - saw me fire off almost 400 applications in the span of 1.5 months, with only 4 interview prospects. <a target="_blank" rel="noopener" href="http://jobquest.aklabs.net/">Here is a totally accurate simulation of the current job hunting experience</a>.</p>
|
||||
<p>Meanwhile, a new project has attempted to <a target="_blank" rel="noopener" href="https://www.remotelabor.ai/?itid=lk_inline_enhanced-template">measure the actual effectiveness of AI agents at performing several types of remote work</a>, and found that the LLMs were only able to independently complete work about 2.5% of the time. This is a positively abysmal measurement that proves that AI simply can not be left to do work alone. It doesn’t mean that AI won’t take <em>some</em> jobs, it just means that AI will still need at least one or more people to constantly look over its shoulder to ensure the work is getting done. Now, before the middle managers in my audience get excited, I must point out that those supervising the AI must actually be competent in the job the AI is doing, so that errors can be detected and corrected. And frankly both AI and many managers have this in common: a lack of basic competency in the job they are performing or supervising. So line jobs in these types of projects are probably safe for a while - although you will probably be forced to do the job with your ass in a corporate seat, rather than at home.</p>
|
||||
<p>Speaking of asses in corporate seats working for incompetent management, <a target="_blank" rel="noopener" href="https://www.businessinsider.com/amazon-flags-employees-rto-office-2026-1">Amazon has rolled out a new tool to help measure employee productivity</a>: this one measures the amount of time your ass spends in a seat. The tool will tell managers how long you spend badged into the building. (For those who don’t know, most companies now have digital door control systems that an employee accesses with a badge, so the company knows when you come and when you go.) The system will assist managers in making decisions by flagging employees that have low hours (4 hours or less in per day) and no hours (zero). As I said, measuring performance is a tricky business, and one of the oldest standby methods is to simply measure how much time your ass is in a seat. It’s called attendee-ism, it’s a garbage measurement used by dinosaurs and those interested in justifying their massive commercial real estate investments. It’s also alive and well in our biggest and supposedly smartest companies. Huzzah.</p>
|
||||
<h2 id="The-AI-Slop-Trough"><a href="#The-AI-Slop-Trough" class="headerlink" title="The AI Slop Trough"></a>The AI Slop Trough</h2><p>The good news is that while your ass is in a seat at your wage-slave job, <a target="_blank" rel="noopener" href="https://www.axios.com/2026/01/08/microsoft-ai-copilot-checkout">you can still get your shopping done by talking to Copilot and letting it buy things for you</a>. Just give the AI access to your financial accounts bro, it’s cool. <a target="_blank" rel="noopener" href="https://www.youtube.com/shorts/ar1iweInzc0">This will be a great way to get all the useless shit you don’t need</a>.</p>
|
||||
<p>Speaking of AI doing things it really shouldn’t, <a target="_blank" rel="noopener" href="https://www.msn.com/en-us/technology/software/a-new-approach-to-living-a-good-life-comes-from-a-most-unlikely-place/ar-AA1TSu0Q">the Workshop for Emotional and Spiritual Technology Corporation (West Co) is testing a platform called Tingle</a>, a social media platform that hopes to help users build more meaningful lives - by having users interact with smart devices to ask AI how to build more meaningful lives. A <a target="_blank" rel="noopener" href="https://tech.slashdot.org/comments.pl?sid=23889512&cid=65915338">Slashdot user</a> put it perfectly: “AI, which is incapable of deriving meaning or even determining relevance, is going to tell us humans how to build purposeful life. This is peak idiocy.” </p>
|
||||
<p>Turning away from how we’re using AI to continue to lose our humanity, and instead focusing on how we’re using it to try and lose more of our own skill and capacity by asking it to do work that we can (and probably should) do ourselves. <a target="_blank" rel="noopener" href="https://thenewstack.io/beyond-python-why-llms-need-more-stable-open-source-code/">An article on The New Stack recently posited</a> that AIs show a preference for certain languages in certain arenas, and that this is a problem for a variety of reasons. Namely “my LLM can’t generate the code for prompt X in language Y”, because for whatever reason language Y is the choice du-joure for this task. I don’t know why anyone is surprised by this habit of LLMs. AIs are trained on the stuff we say and the choices we make, specifically what’s published in the public domain (although not exclusively the public domain, as many trainers have unscrupulously stolen materials they should not have used for training purposes). Regardless, they are essentially reproducing what they have seen elsewhere (<em>cough</em> stack overflow <em>cough</em>). Why are we at all surprised by the language choices made by an LLM when they so clearly resemble what humans have been telling other humans to choose?</p>
|
||||
<p>Speaking of LLMs consuming things they shouldn’t, <a target="_blank" rel="noopener" href="https://www.seroundtable.com/tailwind-css-google-drop-40725.html">we need a stronger robots.text standard that lets content creators control how LLMs and AI agents can reproduce or use their content</a>. If Tailscale had been able to say things like “you can only use this content if you clearly advertise the source and include this blurb or link to this site or with this overlay”, then maybe they wouldn’t have had to fire 75% of their staff when AI began parroting their documentation, taking human eyes away from where their commercial option was advertised, effectively nuking a large part of their business model. This isn’t about sticking your head in the sand in an AI world, it’s about software authors having enough respect for each other to make their software honor the boundaries put up by humans. We do live in a society, after all.</p>
|
||||
<p>Our society needs to make some long term plans around AI anyway, especially around the usage of AI for code, and the code generated by that AI. <a target="_blank" rel="noopener" href="https://arxiv.org/html/2511.04427v2#S6">A Carnegie-Melon study on the impact of Cursor usage in software products</a> shows that while there are indeed short term bursts from the usage of these tools, they are likely to generate a lot more long term headache. As I mentioned, part of what happens when we turn to AI to solve our problems for us (whether those problems are in our relationships or our codebase), assuming that the solution works, we immediately begin to suffer atrophy in the skills we should have used to solve those problems. Because of that we are less able to spot quality problems in the output of the AI. And when we have to maintain that work (“though a program be but three lines long, some day it will have to be maintained” –<a target="_blank" rel="noopener" href="https://www.mit.edu/~xela/tao.html">Tao of Programming</a>, Book 5), we often find that we can’t maintain it very well (if at all) because we aren’t able to fall back on our original knowledge we used to solve the problem, because we didn’t solve it! All of this might sound like your middle school math teacher saying “you won’t always have a calculator in your pocket!”, but for at least the foreseeable horizon, this is the reality of the situation, and we mustn’t approach it blindly, lest we pass those headaches on to our successors (or our children).</p>
|
||||
<p>I recently posited the hilarity and terror of moving away from well defined to APIs towards AIs simply talking to each other and “having at it”, but it did highlight a real problem: most of our API specs suck anyway, and an AI may very likely do just as good a job of consuming your broken API spec as a human would. <a target="_blank" rel="noopener" href="https://thenewstack.io/why-most-apis-fail-in-ai-systems-and-how-to-fix-it/">The New Stack recently ran an article about why your API sucks and why an AI can’t effectively consume it</a>, and I largely agree with it. However it’s worth pointing out that the problems in this article apply to AIs and humans equally - if your API spec sucks, your docs suck, your examples don’t reflect real usage, then humans are going to suffer with your software too. The difference is that humans are used to suffering through poor specs and “figuring it out”, while AI is more likely to do <em>strange</em> things with poor assumptions based off your code, and we’re likely to give that AI more leash than it deserves to do <em>possibly bad</em> things with those <em>strange</em> interpretations of <em>your crappy API</em>. So, whether you’re working for humans or AI, do us all a favor: <strong>stop writing crappy APIs with crappy docs</strong></p>
|
||||
<p>But following on the ideas of “AIs are trained on what is well published” and “simple well defined interfaces are best”, once again, <a target="_blank" rel="noopener" href="https://thenewstack.io/the-key-to-agentic-success-let-unix-bash-lead-the-way/">UNIX solved this problem 50 years ago</a>. Some folks are finding that the best way to let agents solve many problems is, instead of giving them lots of custom skills and tools, simply given them a bash terminal and let them get to work. Most unix/linux/gnu command line programs follow <a href="en.wikipedia.org/wiki/Unix_philosophy">the UNIX design philosophy</a> and thus have pretty good documentation, they tend to do one thing and do it well, and they tend to operate on plain text passing in and out through pipes, making it easy to chain those programs together to do new things. This basic interface and pattern hasn’t really changed for 50 years, and we’ve got a ton of well published documentation on using these tools for all kinds of black magic, and LLMs have been trained on all of it. I kind of love it.</p>
|
||||
<p>Meanwhile, regardless of the specific ways your AI is implemented, <a target="_blank" rel="noopener" href="https://thenewstack.io/open-source-retrieval-infrastructure-can-fix-ais-production-gap/">a New Stack article captures some of the real problems your enterprise is likely to face</a> - things like observability and auditability. What documents in the knowledge base are being used, which sections, what questions lead to which answers, what answers were used to drive which automated decisions, etc. But the article doesn’t really put forward a good solution to the problem, instead it seems to be proposing that retrieval augmented generation is the solution. Maybe you can get something from it, but I don’t really see an answer here, beyond “we need to figure out answers to these problems”.</p>
|
||||
<p>Speaking of understanding why certain decisions were made, <a target="_blank" rel="noopener" href="https://perrotta.dev/2026/01/adrs-and-llms/">Thiago Perotta’s hot take is that the Architecture Decision Record is a key component of an LLM driven codebase</a>. ADRs are fine by themselves I suppose, and LLM coding agents definitely do benefit from the added context given by a set of ADRs. But the problem with ADRs that I’ve personally seen is that there is often not a clear link between “this piece of shit code I’m having to fix” and the ADR that introduced the architectural pattern that caused the shit code to be written. So the reasoning isn’t discovered until someone fixes the shit, proposes a merge request, and the architect (in all their glory) weighs in to the merge request explaining why this is bad because “this ADR explains this and didn’t you read it?”. (I may just have a bad history with architects.) Maybe integrating LLMs and ADRs can resolve that gap by linking specific ADRs to specific comments with some kind of metadata that links the implementation to the architectural decisions that lead to the implementation choices. That may be a beneficial thing to adopt. However Thiago takes the brakes off the AI, saying “nowadays your LLM agent can draft ADRs for you”. Soon we will have LLMs making decisions, justifying those decisions, writing ADRs about those decisions, using those ADRs to justify future decisions, and the human will just stand there slack-jawed watching it all happen. The AI has investigate its code, and has found justification from its ADRs, and thereby has found that the AI has done nothing wrong; the AI will push to prod now.</p>
|
||||
<h2 id="General-Technology-and-Dev"><a href="#General-Technology-and-Dev" class="headerlink" title="General Technology and Dev"></a>General Technology and Dev</h2><p>Turning away now from AI, but remaining in the realm of technology and code, <a target="_blank" rel="noopener" href="https://linux.slashdot.org/story/26/01/11/1926219/gentoo-linux-plans-migration-from-github-over-attempts-to-force-copilot-usage-for-our-repositories?utm_source=rss1.0mainlinkanon&utm_medium=feed">Gentoo reminds us that there is no free lunch and that you should probably host your own code</a>. If you weren’t aware, GitHub is essentially forcing Microsoft Copilot on everyone, because of course they are. Copilot can’t help you unless it trains itself on your codebase. And copilot will be improved for others by what it learns from you. So Microsoft is essentially building their product, which they will sell to others, by including your code, without attribution. This is obviously a problem. Remember kids - if the service you are using is free, then YOU, or what YOU are hosting, are the product. Someone is benefiting from hosting your code. I personally use gitea to hold my code at home, and anything I want to publish to the internet, is done with a github mirror - my gitea is the source of authority, not github. You should own your stuff, and you should own the distribution channels for it, where possible.</p>
|
||||
<p>Speaking of code, owning code, writing code, and reviewing code, <a target="_blank" rel="noopener" href="https://tidyfirst.substack.com/p/party-of-one-for-code-review">the code review process as we know it is really terrible</a>. Kent Beck makes the point that, when code review was first proposed from IBM, “Hardly anyone actually did it. Too much work. Too tedious.” Honestly the situation today is much the same. He concludes with the idea that “I’d rather be pairing. […] That’s less satisfying. It’s also where I’m at. […] I’m still figuring out what to do about it.” This mirrors my own experience and preferences. You write a change, send it to a teammate for a peer review, and one of three things happens: <code>1)</code> you wait forever for a detailed high quality review that will undoubtedly result in a bunch of proposed changes that are legitimate but that are outside of your timeline and will piss you off, <code>2)</code> you wait forever and the damn code never gets reviewed at all so you can’t ship, or <code>3)</code> you get a really fast turnaround with a rubber stamp approval that means nothing and was just a waste of time checking a box. Pairing is a much better answer, in my experience - talking through it with someone, working on the code together, you get better feedback in a lower span of time and you ship faster because they’re ready to approve once you’re done. And chances are you’re doing the same for them while you’re working, so you are probably shipping two features faster, rather than just one. <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=8wUOUmeulNs">Really advanced teams will move past pair programming all the way into spooning</a>, but even that may not prevent <a target="_blank" rel="noopener" href="https://thedailywtf.com/articles/the-review">the Jimbo effect</a>.</p>
|
||||
<p>Anyway - back on ownership, not just of code, but you should own everything you buy, as well. That seems like an obvious statement but because of the ongoing <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Enshittification">enshittification</a> of everything, <a target="_blank" rel="noopener" href="https://www.eff.org/deeplinks/2016/12/john-deere-really-doesnt-want-you-own-tractor">you don’t own what you buy</a>. And if you try to reverse engineer the thing that you bought so that you can actually use the thing you bought for the thing you want to use it for, <a target="_blank" rel="noopener" href="https://ttconsultants.com/understanding-reverse-engineering-and-the-infringement-law/">you may be committing a crime</a>. Cory Doctorow, blogging from his hot air balloon high above international waters, <a target="_blank" rel="noopener" href="https://www.theguardian.com/commentisfree/2026/jan/10/trump-beginning-of-end-enshittification-make-tech-good-again">recommended in a Guardian article</a> that some countries may be well positioned to repeal certain laws from their books that make such activities illegal, which he argues (and I agree) will help put an end to enshittification. The problem I have with his take is that you don’t have to ask for permission to reverse engineer something. You can just do it. The suits are always going to complain about you doing it - <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We explore… and you call us criminals.”</a> - but you can just take things apart, figure out how they work, and put them back together in a new way. I suppose it matters more when you’re talking about two nations dealing with each other, certain amounts of agreements must be honored, otherwise it might come to armies with guns having at each other. But what’s stopping individuals from doing this, and then just publishing the results, and now oh wait this state actor can benefit from it, and now the enshittification blockade has been broken because now the cat is out of the bag. Hackers used to do shit. When did we stop? </p>
|
||||
<p>Also, I’m so sick and tired of enshittification being presented as a uniquely American phenomenon. This is not a uniquely American phenomenon. Cory, if you’re listening, you’re wrong about this part: enshittification is a capitalist phenomenon, and is not a product of American culture. We are simply the unfortunate culture where the capitalists began their strip mining of the human experience. Please stop blaming this shit on us, Cory, and blame the real problem, being out of control greedy capitalists that don’t take answers from We The People anymore.</p>
|
||||
<p>Speaking of Cory and his insistence that the solution must be post-American, and the legal implications thereof, <a target="_blank" rel="noopener" href="https://yro.slashdot.org/story/26/01/10/054252/more-us-states-are-preparing-age-verification-laws-for-app-stores?utm_source=rss1.0mainlinkanon&utm_medium=feed">a Slashdot post aggregates a few things talking about US app stores rolling out age verification as a gateway to entry</a>. This is part of what Cory Doctorow is talking about when he says the American internet. Law only applies so far as ownership allows for enforcement: you can’t enforce the rights of a property owner on a house you don’t own. And right now America owns most of the physical infrastructure providing the internet. So the more infrastructure a given legal entity owns (certainly for nation states), the more autonomy they can exercise in the operation of that portion of the internet. Once that physical ownership changes, legal force changes, and the services operating on that internet have to behave differently. So eventually we are going to see nation level divisions of the internet where systems must function differently to comply with the laws in those nations. Folks like Cory will see this as a a win, and to be fair, it is a win in some regards. However, it’s also a wild regression : <a target="_blank" rel="noopener" href="https://phrack.org/issues/7/3">“We exist without skin color, without nationality, without religious bias… and you call us criminals.”</a> There are some of us out here that remember a time when, and still prefer to pretend that, the Internet is its own place. It transcends national boundaries. It is its own place with its own culture and its own rules. Unfortunately, while the infrastructure that built that internet is still around, the idea of that internet is just a ghost now. I really hope it comes back. But I think I know better. Still … <a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=HrJSDrHpPUk">it’s fun to dream</a></p>
|
||||
<p>Speaking of things we buy but don’t own and cannot control, <a target="_blank" rel="noopener" href="https://www.macrumors.com/2026/01/08/ios-26-shows-unusually-slow-adoption/">Apple is lamenting the slow adoption rate of iOS 26</a>. These people have the nerve to be surprised. We are tired of and exhausted by constantly having to accept updates on devices we don’t actually own, disrupting our user experience with features we didn’t ask for that don’t actually benefit our lives. Stop sending us shit we didn’t ask for and don’t need. Half of the time your update breaks something we like. This is not a problem unique to Apple, it’s a general problem with internet attached devices. The constant stream of updates is exhausting and frustrating. Maybe we just want to use our device as it is, as we bought it, without interference. Piss off.</p>
|
||||
<p>Then again, sometimes there are cool ideas and we react unfairly. <a target="_blank" rel="noopener" href="https://slashdot.org/story/26/01/08/145236/lego-says-smart-brick-wont-replace-traditional-play-after-ces-backlash?utm_source=rss1.0mainlinkanon&utm_medium=feed">I personally think LEGO Smart Blocks were a neat idea</a>. Obviously, not everyone shares that idea. NIMLB - Not In My Lego Box!</p>
|
||||
<p>But you know what they say - if it ain’t broke, don’t fix it. Craigslist, which <a target="_blank" rel="noopener" href="https://arstechnica.com/culture/2026/01/ungentrified-craigslist-may-be-the-last-real-place-on-the-internet/">Ars Technica recently called “The Last Real Place on the Internet”</a>, has survived almost in spite of itself into the new internet. <a target="_blank" rel="noopener" href="https://tech.slashdot.org/story/26/01/09/1618243/craigslist-at-30-no-algorithms-no-ads-no-problemutm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion on the article</a> highlights the dichotomy: it does what it should, hasn’t chased trends, provides the services it intends to, and stays out of politics, while it is literally an advertising site, which is so much of what is wrong about the modern internet. But at the same time, while the interface is the same, and while it is still alive, those of us who remember the early internet will know that Craigslist is a shadow of its former self. Some people will say that’s because you can no longer buy sex there, but I think it’s deeper than that. I don’t know if Craigslist will survive the eventual internet die-off of millenials, and part of me is really sad about that.</p>
|
||||
<p>I came across a <a target="_blank" rel="noopener" href="https://dockhand.pro/">new tool for managing Docker deployments on your small lab called Dockhand</a> recently. A <a target="_blank" rel="noopener" href="https://thenewstack.io/free-dockhand-tool-simplifies-docker-container-management/">New Stack article</a> gives an overview of the tool, but I don’t believe it mentions the pricing on the tool, I believe it gave the impression it is a free tool, but it’s been a few days since the article. Dockhand seems neat, the interface reminds me of the docker UI on my Synology DSM NAS, which I honestly find really handy for quickly spinning things up. I’m not clear how well it can manage a fleet of hosts, or if it’s just the one host you can manage. While reading about it, I thought “… why not just use kubernetes?”, because it seems to solve such a similar problem, that is already well solved by Kubernetes. Then I realized, well it’s obvious why not, and I know this because I work with kubernetes every day: the interface for kubernetes is pretty shit! That’s like looking at a user rejoicing over their new DOS system, happily running programs, and saying “why not just write your boot loader in assembly?”. Why would you inflict the pain of that complexity on someone who obviously doesn’t need it? STFU nerd, the normies are having fun (and, apparently, paying for it).</p>
|
||||
<p>Speaking of nerds and normies, I kinda get mad when my wife calls me “normal”, because … well … I don’t feel normal. But regardless, when comparing myself to my wife and daughters, I have to accept that I am basically normal. Every once in a while writing software I get reminded of this. When I was working with <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/devinbangsund/">Devin</a> at Nintendo, I was working on a web dashboard for a tool, and was explaining how easy it was to tell which things were passing and failing. “The passed tests are in red, the failed ones are in green.” I forget exactly what he said - Devin has a way of witty deadpan delivery that ensures you get the point, even if you don’t remember the words - but he made the point that he was red/green colorblind. I’d been in the industry for probably 10 years at that point, and had never confronted UI design for a colorblind person. It’s definitely not the first time I’d used the red/green color combination. So as a “normal” person I do a lot of things that probably either alienate some from my software, and may actually outright harm people sometimes. Generally speaking, we normies don’t do it on purpose, we just don’t know better. But <a target="_blank" rel="noopener" href="https://www.ragman.net/musings/copypasta/">ragman recently put out a really interesting article</a> musing on how difficult it is to make a website accessible for neurodivergent people when you use emojis, gifs, colors, etc. There’s a lot in there about accessible webdev in general. Luckily my website has basically two colors - black and white - and usually only uses still images in the few places it does use images. But it was an eye opening article.</p>
|
||||
<h2 id="Nature-and-Nature’s-God"><a href="#Nature-and-Nature’s-God" class="headerlink" title="Nature and Nature’s God"></a>Nature and Nature’s God</h2><p>Pivoting away from code towards the intersection of technology and nature, <a target="_blank" rel="noopener" href="https://www.theregister.com/2026/01/08/camouflage_tech_mimics_octopus/">researchers at Stanford have produced a synthetic camouflage material that acts like octopus skin</a>. It’s often been said that any sufficiently advanced technology is effectively indistinguishable from an equally reliable/predictable form of magic. Compare to this material to cloaks of elvenkind. Combine this with thermoptic camouflage that can hide soldiers (or anyone) from thermal imagers and we are well on our way to being in a Predator movie.</p>
|
||||
<p>It doesn’t do much to protect you from smell though. The dogs will still find you. Dogs are amazing creatures, and I’m firmly convinced we humans do not deserve them. <a target="_blank" rel="noopener" href="https://science.slashdot.org/story/26/01/08/2249216/some-super-smart-dogs-can-learn-new-words-just-by-eavesdropping?utm_source=rss1.0mainlinkanon&utm_medium=feed">A Slashdot discussion highlights an NPR quote</a> that shows Dogs can learn new words just by overhearing their favorite human saying them, even if the dog is not the target of the verbal action, and they don’t need to hear them a whole lot to understand. At the same time, not every dog can do this apparently, but the researchers imply that this points to some sort of inter-species shared social understanding that predates language and that is shared by many species. First, I think this shows that animals will only continue to impress us by how smart they are, and our assumptions about our special nature as the only “intelligent animal” will eventually be shattered. Second, I think it points to a truth that is already held in scripture: before the fall of mankind through sin, introducing the fallen state into the world, we existed in such harmony with the rest of God’s creation that we actually communicated with each other effectively. The book of Jubilees states this plainly: “And on that day the mouths of all the animals, the cattle, the birds, everything that walks and everything that moves about were made incapable of speaking because all of them used to converse with one another in one language and one tongue”.. But it’s apocryphal, so protestants outright reject it, and it’s not generally used for teaching in the high liturgy churches. But I’m convinced of it, and that’s part of why Christ tells us to preach the gospel to all creation (Mark 16:15), literally every creature - because the Good News of Christ is not just of saving mankind from sin, but of putting the entire order of Creation back right, such that we will once again be back in alignment with the rest of creation. The wolf shall lie down with the lamb. “Was I a good boy?”, he’ll ask us, and we’ll say, “you were the best”.</p>
|
||||
<p>Speaking of the wonder and majesty of God’s creation, <a target="_blank" rel="noopener" href="https://phys.org/news/2026-01-nature-good-math.html">a project at Sandia National Lab</a> shows that by using computer architecture more inspired by the architecture of our brain, the computer becomes “shockingly good” at math. The more I learn about science and engineering, the more in awe I am of the master builder who made me. This is a shared sentiment with many experienced scientists - Alan Perlis once famously quipped <a target="_blank" rel="noopener" href="https://www.cs.yale.edu/homes/perlis-alan/quotes.html">“A year spent in artificial intelligence is enough to make one believe in God.”</a>. (And a year of trying to get work done with ChatGPT is enough to make one understand why God is so constantly frustrated with us, and to appreciate His infinite patience with us.)</p>
|
||||
<h2 id="Ennui-and-Hope-Read-some-books"><a href="#Ennui-and-Hope-Read-some-books" class="headerlink" title="Ennui and Hope : Read some books"></a>Ennui and Hope : Read some books</h2><p>One of my favorite books in the Bible is Ecclesiastes. In Ecclesiastes, Solomon muses, there is nothing new under the sun. As a technologist, especially one who remembers the early days of the internet and personal computing, we may be left to wonder <a target="_blank" rel="noopener" href="https://ldstephens.net/blog/on-what-more-to-do/">(as LD Stephens does on their blog), what more is there to do?</a>. There seems to be nothing new under the digital sun. Have we reached the end of the frontier that was the personal computing revolution and the opening of the internet? Sometimes I feel that way. Sometimes I will look at my terminal and think “all software has been written, all thoughts have been said, all is meaningless”. Other times I feel the warmth of that old digital sun rising on my face over that endless horizon, and feel like a veil is lifted and chains are falling away, as I rediscovered what was there all the time. It comes and it goes. I think a lot of it has to do with the attention economy, the general ennui of life and getting older. The samurai Yamamoto Tsunetomo once said, in response to the desire to return to the feeling of a prior age, “… and this is due to the world’s passing away”. And it’s probably also a result of our individual and collective ADHD. Do what you love, don’t worry about who has done it before, or how new it is. Do you love it? Do it. Cheer up my brother, live in the sunshine, and give your attention to the things you love.</p>
|
||||
<p>Speaking of attention, counteracting ADHD and giving it to what you love, <a target="_blank" rel="noopener" href="https://amanhimself.dev/blog/2025-year-in-books/">Aman Mittal reports that he read 64 books in 2025</a>. 64 books in a year is astonishing to me. I could barely get through that even with audio books. My hat’s off to you. I’m told this used to be normal behavior. What an absolute reading Chad. But … I imagine that, if you read 64 books in a year, you don’t have as much a problem seeing the horizon.</p>
|
||||
<center><img alt="Bring me that horizon" src="/images/bringmethathorizon.jpeg"/></center>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/06/30/Be-Yourself/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Just Be Yourself ... Whoever that is </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Rent-Is-Too-Damn-High"><span class="toc-text">The Rent Is Too Damn High</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Jobs-and-Corporate"><span class="toc-text">Jobs and Corporate</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-AI-Slop-Trough"><span class="toc-text">The AI Slop Trough</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#General-Technology-and-Dev"><span class="toc-text">General Technology and Dev</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Nature-and-Nature%E2%80%99s-God"><span class="toc-text">Nature and Nature’s God</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Ennui-and-Hope-Read-some-books"><span class="toc-text">Ennui and Hope : Read some books</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
794
2026/06/30/You-Cant-Go-Home-Again/index.html
Normal file
@@ -0,0 +1,794 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<meta
|
||||
http-equiv="X-UA-Compatible"
|
||||
content="ie=edge">
|
||||
<meta
|
||||
name="theme-color"
|
||||
content="#fff"
|
||||
id="theme-color">
|
||||
<meta
|
||||
name="description"
|
||||
content="AKLabs">
|
||||
<link
|
||||
rel="icon"
|
||||
href="/">
|
||||
<title>You Cant Go Home Again</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="You Cant Go Home Again">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/2026/06/30/You-Cant-Go-Home-Again/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
<meta
|
||||
property="og:type"
|
||||
content="article">
|
||||
<meta
|
||||
property="og:article:published_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
|
||||
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
|
||||
<link rel="preload" href="/css/main.css" as="style" >
|
||||
|
||||
<link rel="modulepreload" href="//instant.page/5.1.0">
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
|
||||
|
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
|
||||
|
||||
<script>
|
||||
function loadScript(url, cb) {
|
||||
var script = document.createElement('script');
|
||||
script.src = url;
|
||||
if (cb) script.onload = cb;
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
function loadCSS(href, data, attr) {
|
||||
var sheet = document.createElement('link');
|
||||
sheet.ref = 'stylesheet';
|
||||
sheet.href = href;
|
||||
sheet.dataset[data] = attr;
|
||||
document.head.appendChild(sheet);
|
||||
}
|
||||
function changeCSS(cssFile, data, attr) {
|
||||
var oldlink = document.querySelector(data);
|
||||
var newlink = document.createElement("link");
|
||||
newlink.setAttribute("rel", "stylesheet");
|
||||
newlink.setAttribute("href", cssFile);
|
||||
newlink.dataset.prism = attr;
|
||||
document.head.replaceChild(newlink, oldlink);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function prismThemeChange() {
|
||||
if(document.getElementById('theme-color').dataset.mode === 'dark') {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
|
||||
}
|
||||
} else {
|
||||
if(document.querySelector('[data-prism]')) {
|
||||
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
|
||||
} else {
|
||||
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
|
||||
}
|
||||
}
|
||||
}
|
||||
prismThemeChange()
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
// control reverse button
|
||||
var reverseDarkList = {
|
||||
dark: 'light',
|
||||
light: 'dark'
|
||||
};
|
||||
var themeColor = {
|
||||
dark: '#1c1c1e',
|
||||
light: '#fff'
|
||||
}
|
||||
// get the data of css prefers-color-scheme
|
||||
var getCssMediaQuery = function() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
};
|
||||
// reverse current darkmode setting function
|
||||
var reverseDarkModeSetting = function() {
|
||||
var setting = localStorage.getItem('user-color-scheme');
|
||||
if(reverseDarkList[setting]) {
|
||||
setting = reverseDarkList[setting];
|
||||
} else if(setting === null) {
|
||||
setting = reverseDarkList[getCssMediaQuery()];
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem('user-color-scheme', setting);
|
||||
return setting;
|
||||
};
|
||||
// apply current darkmode setting
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var setDarkmode = function(mode) {
|
||||
var setting = mode || localStorage.getItem('user-color-scheme');
|
||||
if(setting === getCssMediaQuery()) {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else if(reverseDarkList[setting]) {
|
||||
document.documentElement.setAttribute('data-user-color-scheme', setting);
|
||||
document.getElementById('theme-color').content = themeColor[setting];
|
||||
document.getElementById('theme-color').dataset.mode = setting;
|
||||
prismThemeChange();
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-user-color-scheme');
|
||||
localStorage.removeItem('user-color-scheme');
|
||||
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
|
||||
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
|
||||
prismThemeChange();
|
||||
}
|
||||
};
|
||||
setDarkmode();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
|
||||
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
|
||||
|
||||
|
||||
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
|
||||
<nav class="navbar">
|
||||
<div class="navbar-logo">
|
||||
<a class="navbar-logo-main" href="/">
|
||||
|
||||
<span class="navbar-logo-dsc">AKLabs</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
|
||||
<a
|
||||
href="/now"
|
||||
class="navbar-menu-item">
|
||||
|
||||
~/.plan
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/archives"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Archive
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Categories
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/about"
|
||||
class="navbar-menu-item">
|
||||
|
||||
About
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Contact
|
||||
|
||||
</a>
|
||||
|
||||
<button
|
||||
class="navbar-menu-item darknavbar navbar-menu-btn"
|
||||
aria-label="Toggle dark mode"
|
||||
id="dark">
|
||||
<i class="iconfont icon-weather"></i>
|
||||
</button>
|
||||
<button
|
||||
class="navbar-menu-item searchnavbar navbar-menu-btn"
|
||||
aria-label="Toggle search"
|
||||
id="search">
|
||||
<!-- <i
|
||||
class="iconfont icon-search"
|
||||
style="font-size: 1.2rem; font-weight: 400;">
|
||||
</i> -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
|
||||
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
|
||||
d="M283.64 283.64L336 336"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div
|
||||
id="local-search"
|
||||
style="display: none">
|
||||
<input
|
||||
class="navbar-menu-item"
|
||||
id="search-input"
|
||||
placeholder="请输入搜索内容..." />
|
||||
<div id="search-content"></div>
|
||||
</div>
|
||||
|
||||
<div class="section-wrap">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<aside class="left-column">
|
||||
|
||||
<div class="card card-author">
|
||||
|
||||
<img
|
||||
src="/images/akesterson.webp"
|
||||
class="author-img"
|
||||
width="88"
|
||||
height="88"
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-categories-count"
|
||||
href="/categories">
|
||||
<span>9</span>
|
||||
<span>Categories</span>
|
||||
</a>
|
||||
<a
|
||||
class="author-tags-count"
|
||||
href="/tags">
|
||||
<span>0</span>
|
||||
<span>Tags</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="sticky-tablet">
|
||||
|
||||
|
||||
<article class="display-when-two-columns spacer">
|
||||
<div class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#What-is-home"><span class="toc-text">What is home?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#You-Can%E2%80%99t-Go-Home-Again"><span class="toc-text">You Can’t Go Home Again</span></a></li></ol>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content categories-widget">
|
||||
<div class="categories-card">
|
||||
<div class="categories-header">
|
||||
<i
|
||||
class="iconfont icon-fenlei"
|
||||
style="padding-right: 2px;">
|
||||
</i>Categories
|
||||
</div>
|
||||
<div class="categories-list">
|
||||
|
||||
<a href="/categories/Books/">
|
||||
<div class="categories-list-item">
|
||||
Books
|
||||
<span class="categories-list-item-badge">14</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Outdoors/">
|
||||
<div class="categories-list-item">
|
||||
Outdoors
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Leadership/">
|
||||
<div class="categories-list-item">
|
||||
Leadership
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/History/">
|
||||
<div class="categories-list-item">
|
||||
History
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Liberal-Education/">
|
||||
<div class="categories-list-item">
|
||||
Liberal-Education
|
||||
<span class="categories-list-item-badge">1</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card card-content tags-widget">
|
||||
<div class="tags-card">
|
||||
<div class="tags-header">
|
||||
<i
|
||||
class="iconfont icon-biaoqian"
|
||||
style="padding-right: 2px;">
|
||||
</i>hot tags
|
||||
</div>
|
||||
<div class="tags-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<article class="card card-content">
|
||||
<header>
|
||||
<h1 class="post-title">
|
||||
You Cant Go Home Again
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-06-30T06:54:00.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>845 words</span>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<h2 id="What-is-home"><a href="#What-is-home" class="headerlink" title="What is home?"></a>What is home?</h2><p>Is “home” a place? A people? A feeling?</p>
|
||||
<p>For a long time as a young man, when talking to people, I might say “… back home …”; I would be talking about the Ozarks mountain area around Marshfield, Missouri, where my mother, father, brothers, and extended family all lived. I would talk about “the old Home place”, and it would refer to my grandfather’s home and farmland, or the home I was born in and the land it was on, or the home my great grandfather built and the large acrage it sat on, all of which were right there together in the same little valley around the same creek, populated by the same people that had been constant my whole life.</p>
|
||||
<p>When my wife and I were young, stacrossed lovers, our relationship began as a long distance relationship. When we were upset or lonely, we would tell each other, “I want to go home”. For us, home was with each other - that’s where our hearts were, and that’s where we wanted to be. Our song was Pink Floyd’s “Wish You Were Here”.</p>
|
||||
<p>My children jokingly refer to their mother (sometimes) as “the Spawn Point”. We have moved them around so many times during their lives that I honestly don’t know what “home” really means to them. We would never live somewhere more than a few years before uprooting them for various reasons; “home” was probably a transitive thing for them, and I was gone at work (and other less savory places) so often, that for them, the only constant idea of “home” was their mother.</p>
|
||||
<blockquote>
|
||||
<center><i>"Mother is the name for God on the lips and hearts of all children."<br/>--William Thackeray</i></center>
|
||||
</blockquote>
|
||||
|
||||
<p>Once we had children, when I said “home”, I meant wherever my house was where my wife and children lived. Home was something that I had made with my wife (or, mostly, that my wife had made) for our children and each other. </p>
|
||||
<p>Today I say “Marion County Georgia is my home”, because that is where I have chosen to plant a flag and carve out a life for my wife and I as our children transition in to adults. That is the community that I have chosen to claim as my own (for better or worse…). But even now I might say “I’m going back home to Missouri to see family”, to reflect that while Marion county is my home, my <em>ancestral</em> home, my point of origin, is back in the Ozarks.</p>
|
||||
<p>Home is one of those words that can have multiple meanings, even simultaneously, and may mean completely different things to different people, or even the same people, at different times or in different contexts.</p>
|
||||
<h2 id="You-Can’t-Go-Home-Again"><a href="#You-Can’t-Go-Home-Again" class="headerlink" title="You Can’t Go Home Again"></a>You Can’t Go Home Again</h2><p>There’s an old saying that a man can never step in the same stream twice. It’s not the same water - the water keeps moving. It’s not the same streambed - rocks have moved. Animals and little water critters have moved, born and died. It may not be the same season. And they are probably not the same person, either; they have almost certainly changed. It’s very close to another idea - you can cup your hands and catch water, but you can never catch the stream.</p>
|
||||
<p>So it is with going home. When we leave home, we have these memories, these crystallizations that we carry around with us. That is “Home”. Then we go back “Home”, and we see that the crystallized memories don’t quite match up. The people have changed; they’ve had the audacity to go off and live their lives without us. They may not look or sound or act the same. Maybe they got married, had kids, got divorced. The place has changed; shops have opened or closed, homes and barns have fallen to disuse or decay, cattle no longer graze where they used to. Fences have moved, property has changed hands, and now you can’t walk the same places you used to. Culture has changed - you don’t hear the same music, or get the same “vibe” from a place that you used to. There are more stoplights than you remember. Your favorite restaurant has closed or changed hands. Maybe someone critical to your concept of “Home” has passed on, and no matter how hard you look, no matter what phone numbers you call, that connection is simply impossible to make - they’re just gone forever.</p>
|
||||
<p>“Home” is a concept that is fragile, easily shattered, and devastating to reconcile with the reality of the passing of time.</p>
|
||||
<p>Some people manage to accept this in a healthy way. I don’t think I am one of them. For me, coming home hurts. I keep hoping that if I rip off the bandaid one more time, it won’t hurt this time. That hasn’t happened yet. Maybe some day.</p>
|
||||
<blockquote>
|
||||
<center><i>"I am he who can dissolve the terror of being a man and going among the dead. I am morphine for a wooden leg."<br/>--James O'Barr</center>
|
||||
</blockquote>
|
||||
|
||||
<!--
|
||||
-- tags
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts Path
|
||||
Personal 0 tags/Personal/
|
||||
---------------
|
||||
-- categories
|
||||
INFO Validating config
|
||||
INFO Start processing
|
||||
Name Posts
|
||||
Books 14
|
||||
Current Events 3
|
||||
Faith 6
|
||||
History 1
|
||||
Leadership 8
|
||||
Liberal Education 1
|
||||
Outdoors 1
|
||||
Philosophy 3
|
||||
Programming 0
|
||||
Technology 8
|
||||
--!>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/2026/06/30/Be-Yourself/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
<div class="nav-title">Just Be Yourself ... Whoever that is </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/2026/06/27/Devlog-20260627/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
<div class="nav-title">Devlog Entry - 27 June 2026 </div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="card card-content toc-card"
|
||||
id="mobiletoc">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#What-is-home"><span class="toc-text">What is home?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#You-Can%E2%80%99t-Go-Home-Again"><span class="toc-text">You Can’t Go Home Again</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
<article class="card card-content toc-card">
|
||||
<div class="toc-header">
|
||||
<i
|
||||
class="iconfont icon-menu"
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#What-is-home"><span class="toc-text">What is home?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#You-Can%E2%80%99t-Go-Home-Again"><span class="toc-text">You Can’t Go Home Again</span></a></li></ol>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="recent-posts-card">
|
||||
<div class="recent-posts-header">
|
||||
<i
|
||||
class="iconfont icon-wenzhang_huaban"
|
||||
style="padding-right: 2px;">
|
||||
</i>Recent Posts
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div>
|
||||
<div class="footer-dsc">
|
||||
<span>
|
||||
Copyright ©
|
||||
|
||||
|
||||
-
|
||||
2026
|
||||
|
||||
</span>
|
||||
|
||||
<a
|
||||
href="mailto:andrew@aklabs.net"
|
||||
class="footer-link">
|
||||
Andrew Kesterson
|
||||
</a>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer-dsc">
|
||||
|
||||
Powered by
|
||||
<a
|
||||
href="https://hexo.io/"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Hexo
|
||||
</a>
|
||||
|
||||
|
||||
<span> | </span>
|
||||
|
||||
|
||||
Theme -
|
||||
<a
|
||||
href="https://github.com/theme-kaze"
|
||||
class="footer-link"
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer">
|
||||
Kaze
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="scrollbutton"
|
||||
class="basebutton"
|
||||
aria-label="回到顶部">
|
||||
<i class="iconfont icon-arrowleft button-icon"></i>
|
||||
</a>
|
||||
|
||||
<a
|
||||
role="button"
|
||||
id="menubutton"
|
||||
aria-label="menu button"
|
||||
class="basebutton">
|
||||
<i class="iconfont icon-menu button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="popbutton"
|
||||
class="basebutton"
|
||||
aria-label="控制中心">
|
||||
<i class="iconfont icon-expand button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="darkbutton"
|
||||
class="basebutton darkwidget"
|
||||
aria-label="夜色模式">
|
||||
<i class="iconfont icon-weather button-icon"></i>
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
id="searchbutton"
|
||||
class="basebutton searchwidget"
|
||||
aria-label="搜索">
|
||||
<i class="iconfont icon-search button-icon"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var addImgLayout = function () {
|
||||
var img = document.querySelectorAll('.post-content img')
|
||||
var i
|
||||
for (i = 0; i < img.length; i++) {
|
||||
var wrapper = document.createElement('a')
|
||||
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
|
||||
wrapper.setAttribute('aria-label', 'illustration')
|
||||
wrapper.style.cssText =
|
||||
'width: 100%; display: flex; justify-content: center;'
|
||||
if (img[i].alt) wrapper.dataset.caption = img[i].alt
|
||||
wrapper.dataset.nolink = true
|
||||
img[i].before(wrapper)
|
||||
wrapper.append(img[i])
|
||||
var divWrap = document.createElement('div')
|
||||
divWrap.classList.add('gallery')
|
||||
wrapper.before(divWrap)
|
||||
divWrap.append(wrapper)
|
||||
}
|
||||
baguetteBox.run('.gallery')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
"/js/lib/lightbox/baguetteBox.min.js",
|
||||
addImgLayout
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
var addLazyload = function () {
|
||||
var observer = lozad('.lozad', {
|
||||
load: function (el) {
|
||||
el.srcset = el.getAttribute('data-src')
|
||||
},
|
||||
loaded: function (el) {
|
||||
el.classList.add('loaded')
|
||||
},
|
||||
})
|
||||
observer.observe()
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript('/js/lib/lozad.min.js', addLazyload)
|
||||
</script>
|
||||
|
||||
<script src="//instant.page/5.1.0" type="module"
|
||||
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
|
||||
|
||||
<script>
|
||||
var googleAnalytics = function () {
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
gtag('js', new Date())
|
||||
gtag('config', 'G-S3YLF516N6')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
loadScript(
|
||||
'https://www.googletagmanager.com/gtag/js?id=' +
|
||||
'G-S3YLF516N6',
|
||||
googleAnalytics
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
176
about/index.html
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -582,12 +626,12 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-05T19:35:45.902Z">
|
||||
<time datetime="2026-06-30T19:59:55.940Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-05</span>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -707,23 +751,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -754,6 +798,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -779,7 +875,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -651,23 +695,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -698,6 +742,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -723,7 +819,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -683,23 +727,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -730,6 +774,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -755,7 +851,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -651,23 +695,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -698,6 +742,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -723,7 +819,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -699,23 +743,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -746,6 +790,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -771,7 +867,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -651,23 +695,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -698,6 +742,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -723,7 +819,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -683,23 +727,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -730,6 +774,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -755,7 +851,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -585,6 +629,38 @@
|
||||
<div class="archive-timeline-tag"><span>2026</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/30/News-2026-Week-4/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 4
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-25</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/25/Two-kinds-of-programmers/"
|
||||
class="archive-timeline-post-item">
|
||||
There are two kinds of programmers
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
@@ -617,22 +693,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-16</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
class="archive-timeline-post-item">
|
||||
News-2026-Week-2
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
@@ -715,23 +775,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -762,6 +822,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -787,7 +899,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1061
archives/2026/02/index.html
Normal file
1061
archives/2026/05/index.html
Normal file
1157
archives/2026/06/index.html
Normal file
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -588,42 +632,10 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-23</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/23/News-2026-Week-3/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 3
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-19</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/19/This-Old-Tool-cmdarg/"
|
||||
class="archive-timeline-post-item">
|
||||
This Old Tool : cmdarg
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-16</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
href="/2026/06/30/News-2026-Week-2/"
|
||||
class="archive-timeline-post-item">
|
||||
News-2026-Week-2
|
||||
</a>
|
||||
@@ -636,12 +648,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-10</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/10/libakerror/"
|
||||
href="/2026/06/30/Be-Yourself/"
|
||||
class="archive-timeline-post-item">
|
||||
libakerror
|
||||
Just Be Yourself ... Whoever that is
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -652,12 +664,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-08</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/08/News-2026-Week-1/"
|
||||
href="/2026/06/30/You-Cant-Go-Home-Again/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 1
|
||||
You Cant Go Home Again
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -668,12 +680,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-06</div>
|
||||
<div class="archive-timeline-post-date">2026-06-27</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/06/Smart-LEGO/"
|
||||
href="/2026/06/27/Devlog-20260627/"
|
||||
class="archive-timeline-post-item">
|
||||
Smart LEGO
|
||||
Devlog Entry - 27 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -684,18 +696,115 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-04</div>
|
||||
<div class="archive-timeline-post-date">2026-06-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/04/Single-Pane-of-Glass/"
|
||||
href="/2026/06/23/News-2026-Week-26/"
|
||||
class="archive-timeline-post-item">
|
||||
Single Pane of Glass
|
||||
News - 2026 - Week - 26
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-18</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/18/Devlog-20260618/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 18 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/08/Carrying-That-Weight/"
|
||||
class="archive-timeline-post-item">
|
||||
Carrying That Weight
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/08/Devlog-20260608/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 8 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-05-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/30/Devlog-20260530/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 30 May 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-05-15</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 18 May 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="nav">
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/archives/2026/page/2/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
@@ -715,23 +824,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -762,6 +871,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -787,7 +948,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1206
archives/2026/page/2/index.html
Normal file
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -588,42 +632,10 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-23</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/23/News-2026-Week-3/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 3
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-19</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/19/This-Old-Tool-cmdarg/"
|
||||
class="archive-timeline-post-item">
|
||||
This Old Tool : cmdarg
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-16</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
href="/2026/06/30/News-2026-Week-2/"
|
||||
class="archive-timeline-post-item">
|
||||
News-2026-Week-2
|
||||
</a>
|
||||
@@ -636,12 +648,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-10</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/10/libakerror/"
|
||||
href="/2026/06/30/Be-Yourself/"
|
||||
class="archive-timeline-post-item">
|
||||
libakerror
|
||||
Just Be Yourself ... Whoever that is
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -652,12 +664,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-08</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/08/News-2026-Week-1/"
|
||||
href="/2026/06/30/You-Cant-Go-Home-Again/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 1
|
||||
You Cant Go Home Again
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -668,12 +680,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-06</div>
|
||||
<div class="archive-timeline-post-date">2026-06-27</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/06/Smart-LEGO/"
|
||||
href="/2026/06/27/Devlog-20260627/"
|
||||
class="archive-timeline-post-item">
|
||||
Smart LEGO
|
||||
Devlog Entry - 27 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -684,50 +696,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-04</div>
|
||||
<div class="archive-timeline-post-date">2026-06-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/04/Single-Pane-of-Glass/"
|
||||
href="/2026/06/23/News-2026-Week-26/"
|
||||
class="archive-timeline-post-item">
|
||||
Single Pane of Glass
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2025</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2025-01-04</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2025/01/04/Socrates-got-a-raw-deal/"
|
||||
class="archive-timeline-post-item">
|
||||
Socrates got a raw deal
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2024</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2024-03-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/03/08/new-manager-pt3/"
|
||||
class="archive-timeline-post-item">
|
||||
Advice for New Managers : Part 3
|
||||
News - 2026 - Week - 26
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -738,12 +712,76 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2024-03-05</div>
|
||||
<div class="archive-timeline-post-date">2026-06-18</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/03/05/new-manager-pt2/"
|
||||
href="/2026/06/18/Devlog-20260618/"
|
||||
class="archive-timeline-post-item">
|
||||
Advice for New Managers : Part 2
|
||||
Devlog Entry - 18 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/08/Carrying-That-Weight/"
|
||||
class="archive-timeline-post-item">
|
||||
Carrying That Weight
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/08/Devlog-20260608/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 8 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-05-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/30/Devlog-20260530/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 30 May 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-05-15</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 18 May 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -786,23 +824,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -833,6 +871,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -858,7 +948,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -582,18 +626,18 @@
|
||||
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2024</span></div>
|
||||
<div class="archive-timeline-tag"><span>2026</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2024-03-03</div>
|
||||
<div class="archive-timeline-post-date">2026-02-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/03/03/new-manager-pt1/"
|
||||
href="/2026/02/23/Why-Firefighting/"
|
||||
class="archive-timeline-post-item">
|
||||
Advice for New Managers : Part 1
|
||||
Why Firefighting
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -604,12 +648,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2024-02-09</div>
|
||||
<div class="archive-timeline-post-date">2026-02-09</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/02/09/expectations/"
|
||||
href="/2026/02/09/News-2026-Week-5/"
|
||||
class="archive-timeline-post-item">
|
||||
Setting Expectations
|
||||
News 2026 Week 5
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -620,31 +664,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2024-01-29</div>
|
||||
<div class="archive-timeline-post-date">2026-01-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/01/29/Simon-Sinek-Start-with-Why/"
|
||||
href="/2026/01/30/News-2026-Week-4/"
|
||||
class="archive-timeline-post-item">
|
||||
Start with Why
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2023</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-12-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/12/23/United-States-Catholic-Catechism-for-Adults/"
|
||||
class="archive-timeline-post-item">
|
||||
US Catholic Catechism for Adults
|
||||
News - 2026 - Week 4
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -655,12 +680,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-11-05</div>
|
||||
<div class="archive-timeline-post-date">2026-01-25</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/11/05/Copper-Sun/"
|
||||
href="/2026/01/25/Two-kinds-of-programmers/"
|
||||
class="archive-timeline-post-item">
|
||||
Copper Sun
|
||||
There are two kinds of programmers
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -671,12 +696,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-10-10</div>
|
||||
<div class="archive-timeline-post-date">2026-01-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/10/10/The-Cost-of-Discipleship/"
|
||||
href="/2026/01/23/News-2026-Week-3/"
|
||||
class="archive-timeline-post-item">
|
||||
The Cost of Discipleship
|
||||
News - 2026 - Week 3
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -687,12 +712,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-09-28</div>
|
||||
<div class="archive-timeline-post-date">2026-01-19</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/09/28/Bill-Heavey-Jerkey-What-Did-I-Just-Eat/"
|
||||
href="/2026/01/19/This-Old-Tool-cmdarg/"
|
||||
class="archive-timeline-post-item">
|
||||
If You Didn't Bring Jerky, What Did I Just Eat?
|
||||
This Old Tool : cmdarg
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -703,12 +728,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-09-24</div>
|
||||
<div class="archive-timeline-post-date">2026-01-10</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/09/24/How-Should-We-Then-Live/"
|
||||
href="/2026/01/10/libakerror/"
|
||||
class="archive-timeline-post-item">
|
||||
How Should We Then Live
|
||||
libakerror
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -719,12 +744,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-09-12</div>
|
||||
<div class="archive-timeline-post-date">2026-01-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/09/12/Christianity-First-3000-Years/"
|
||||
href="/2026/01/08/News-2026-Week-1/"
|
||||
class="archive-timeline-post-item">
|
||||
Christianity: The First 3000 Years
|
||||
News - 2026 - Week 1
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -732,18 +757,31 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2022</span></div>
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-06</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/06/Smart-LEGO/"
|
||||
class="archive-timeline-post-item">
|
||||
Smart LEGO
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2022-10-15</div>
|
||||
<div class="archive-timeline-post-date">2026-01-04</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/10/15/Live-Not-By-Lies/"
|
||||
href="/2026/01/04/Single-Pane-of-Glass/"
|
||||
class="archive-timeline-post-item">
|
||||
Live Not By Lies
|
||||
Single Pane of Glass
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -798,23 +836,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -845,6 +883,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -870,7 +960,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -582,18 +626,37 @@
|
||||
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2022</span></div>
|
||||
<div class="archive-timeline-tag"><span>2025</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2022-05-19</div>
|
||||
<div class="archive-timeline-post-date">2025-01-04</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/05/19/Jesus-Outside-the-Lines/"
|
||||
href="/2025/01/04/Socrates-got-a-raw-deal/"
|
||||
class="archive-timeline-post-item">
|
||||
Jesus Outside the Lines
|
||||
Socrates got a raw deal
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2024</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2024-03-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/03/08/new-manager-pt3/"
|
||||
class="archive-timeline-post-item">
|
||||
Advice for New Managers : Part 3
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -604,12 +667,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2022-05-04</div>
|
||||
<div class="archive-timeline-post-date">2024-03-05</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/05/04/American-Prison/"
|
||||
href="/2024/03/05/new-manager-pt2/"
|
||||
class="archive-timeline-post-item">
|
||||
American Prison
|
||||
Advice for New Managers : Part 2
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -620,12 +683,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2022-05-02</div>
|
||||
<div class="archive-timeline-post-date">2024-03-03</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/05/02/The-Hero-Code/"
|
||||
href="/2024/03/03/new-manager-pt1/"
|
||||
class="archive-timeline-post-item">
|
||||
The Hero Code
|
||||
Advice for New Managers : Part 1
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -636,12 +699,95 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2022-03-17</div>
|
||||
<div class="archive-timeline-post-date">2024-02-09</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/03/17/The-Righteous-Mind/"
|
||||
href="/2024/02/09/expectations/"
|
||||
class="archive-timeline-post-item">
|
||||
The Righteous Mind
|
||||
Setting Expectations
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2024-01-29</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/01/29/Simon-Sinek-Start-with-Why/"
|
||||
class="archive-timeline-post-item">
|
||||
Start with Why
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2023</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-12-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/12/23/United-States-Catholic-Catechism-for-Adults/"
|
||||
class="archive-timeline-post-item">
|
||||
US Catholic Catechism for Adults
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-11-05</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/11/05/Copper-Sun/"
|
||||
class="archive-timeline-post-item">
|
||||
Copper Sun
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-10-10</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/10/10/The-Cost-of-Discipleship/"
|
||||
class="archive-timeline-post-item">
|
||||
The Cost of Discipleship
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2023-09-28</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/09/28/Bill-Heavey-Jerkey-What-Did-I-Just-Eat/"
|
||||
class="archive-timeline-post-item">
|
||||
If You Didn't Bring Jerky, What Did I Just Eat?
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -665,6 +811,18 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/archives/page/4/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
@@ -684,23 +842,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -731,6 +889,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -756,7 +966,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1161
archives/page/4/index.html
Normal file
641
atom.xml
@@ -6,7 +6,7 @@
|
||||
<link href="https://aklabs.net/atom.xml" rel="self"/>
|
||||
|
||||
<link href="https://aklabs.net/"/>
|
||||
<updated>2026-01-23T15:24:30.203Z</updated>
|
||||
<updated>2026-06-30T19:59:55.937Z</updated>
|
||||
<id>https://aklabs.net/</id>
|
||||
|
||||
<author>
|
||||
@@ -16,12 +16,283 @@
|
||||
|
||||
<generator uri="https://hexo.io/">Hexo</generator>
|
||||
|
||||
<entry>
|
||||
<title>News-2026-Week-2</title>
|
||||
<link href="https://aklabs.net/2026/06/30/News-2026-Week-2/"/>
|
||||
<id>https://aklabs.net/2026/06/30/News-2026-Week-2/</id>
|
||||
<published>2026-06-30T19:59:55.937Z</published>
|
||||
<updated>2026-06-30T19:59:55.937Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Here are my thoughts on news across the internet this week. We touch on rent denialism, collapsing job markets, corporate productivity theater, and the many ways AI is being oversold, misused, or shoved where it doesn’t belong. Along the way I rant about enshittification, ownership (of code, hardware, and ideas), bad APIs, worse management, the slow death of the old internet, and why UNIX got it right decades ago. It’s part news roundup, part cultural autopsy, part theological and philosophical musing — ending, as usual, with a reminder to ignore the noise, give your attention to what you love, and keep your eyes on God and the horizon. It's worth what you paid for it.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
<category term="Current Events" scheme="https://aklabs.net/categories/Current-Events/"/>
|
||||
|
||||
<category term="Leadership" scheme="https://aklabs.net/categories/Leadership/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Just Be Yourself ... Whoever that is</title>
|
||||
<link href="https://aklabs.net/2026/06/30/Be-Yourself/"/>
|
||||
<id>https://aklabs.net/2026/06/30/Be-Yourself/</id>
|
||||
<published>2026-06-30T12:49:26.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.936Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><p>Some of the best, simplest, and hardest advice I ever got was from a dead man.</p>
|
||||
<p>When someone dies, we go through many different</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Philosophy" scheme="https://aklabs.net/categories/Philosophy/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>You Cant Go Home Again</title>
|
||||
<link href="https://aklabs.net/2026/06/30/You-Cant-Go-Home-Again/"/>
|
||||
<id>https://aklabs.net/2026/06/30/You-Cant-Go-Home-Again/</id>
|
||||
<published>2026-06-30T06:54:00.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.939Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Musing on the meaning of home and the pain of trying to go home again</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Philosophy" scheme="https://aklabs.net/categories/Philosophy/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Devlog Entry - 27 June 2026</title>
|
||||
<link href="https://aklabs.net/2026/06/27/Devlog-20260627/"/>
|
||||
<id>https://aklabs.net/2026/06/27/Devlog-20260627/</id>
|
||||
<published>2026-06-27T07:45:42.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.937Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Development log entry for the week ending 27 June 2026. Improvements to libakerror logging, libakstdlib gets linked list and binary tree implementations, and I'm banging my head against libakgl to get binary space partitioning implemented correctly, as well as documentation improvements to all of these libraries.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>News - 2026 - Week - 26</title>
|
||||
<link href="https://aklabs.net/2026/06/23/News-2026-Week-26/"/>
|
||||
<id>https://aklabs.net/2026/06/23/News-2026-Week-26/</id>
|
||||
<published>2026-06-23T22:21:13.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.937Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Here are my takes on the news for this week. It's worth what you paid for it. Compromised accounts pushing AI-generated code into Fedora, AI lawyers winning real cases, AI replacing HR, autonomous weapons, insecure AI-written software, and the growing tension between centralized AI power and the need for affordable local compute. Alongside that, I lament how technology is being hollowed out by regulation, AI slop, and corporate control, while celebrating the people fighting back through self-hosting, small efficient software, open communities, and old hardware given new life. I celebrate humanity through reflections on online communities, strange internet hobbies, real bloggers, bedtime procrastination, and the simple joy of finding other genuine humans still making things on the web.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Philosophy" scheme="https://aklabs.net/categories/Philosophy/"/>
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
<category term="Current Events" scheme="https://aklabs.net/categories/Current-Events/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Devlog Entry - 18 June 2026</title>
|
||||
<link href="https://aklabs.net/2026/06/18/Devlog-20260618/"/>
|
||||
<id>https://aklabs.net/2026/06/18/Devlog-20260618/</id>
|
||||
<published>2026-06-18T16:47:16.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.937Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Devlog entry for 18 June 2026. More ESP32 projects, including a complete Snake game.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Carrying That Weight</title>
|
||||
<link href="https://aklabs.net/2026/06/08/Carrying-That-Weight/"/>
|
||||
<id>https://aklabs.net/2026/06/08/Carrying-That-Weight/</id>
|
||||
<published>2026-06-08T15:32:23.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.936Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Musings on what it's like to carry around your sin, and the difficulty of giving it up to God</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Philosophy" scheme="https://aklabs.net/categories/Philosophy/"/>
|
||||
|
||||
<category term="Faith" scheme="https://aklabs.net/categories/Faith/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Devlog Entry - 8 June 2026</title>
|
||||
<link href="https://aklabs.net/2026/06/08/Devlog-20260608/"/>
|
||||
<id>https://aklabs.net/2026/06/08/Devlog-20260608/</id>
|
||||
<published>2026-06-08T09:27:12.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.936Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Devlog entry. More ESP32 projects, this time focusing on analog to digital converters, touch sensors, photoresistors, and a demo project with a joystick and WS2821 featuring my own breadboard design and no tutorial code.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Devlog Entry - 30 May 2026</title>
|
||||
<link href="https://aklabs.net/2026/05/30/Devlog-20260530/"/>
|
||||
<id>https://aklabs.net/2026/05/30/Devlog-20260530/</id>
|
||||
<published>2026-05-30T10:05:47.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.936Z</updated>
|
||||
|
||||
|
||||
<summary type="html">updates to my C stdlib library, several libakgl improvements (pluggable physics and rendering backends), and ESP32 projects (fun with Arduino IDE, transistors, oscilloscopes and logic analyzers!)</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Devlog Entry - 18 May 2026</title>
|
||||
<link href="https://aklabs.net/2026/05/15/Devlog-20260518/"/>
|
||||
<id>https://aklabs.net/2026/05/15/Devlog-20260518/</id>
|
||||
<published>2026-05-15T22:04:50.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.936Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Development log entry. Goodbye GitHub, C error handling library improvements, a new C standard library wrapper, and a new C SDL3 game library I'm playing with</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Why Firefighting</title>
|
||||
<link href="https://aklabs.net/2026/02/23/Why-Firefighting/"/>
|
||||
<id>https://aklabs.net/2026/02/23/Why-Firefighting/</id>
|
||||
<published>2026-02-23T22:40:28.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.939Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><h2 id="Start-with-Why"><a href="#Start-with-Why" class="headerlink" title="Start with Why"></a><a</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Philosophy" scheme="https://aklabs.net/categories/Philosophy/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>News 2026 Week 5</title>
|
||||
<link href="https://aklabs.net/2026/02/09/News-2026-Week-5/"/>
|
||||
<id>https://aklabs.net/2026/02/09/News-2026-Week-5/</id>
|
||||
<published>2026-02-09T06:34:21.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.938Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Here are my (limited) thoughts on the news for the 5th week of 2026. It's worth what you paid for it.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
<category term="Current Events" scheme="https://aklabs.net/categories/Current-Events/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>News - 2026 - Week 4</title>
|
||||
<link href="https://aklabs.net/2026/01/30/News-2026-Week-4/"/>
|
||||
<id>https://aklabs.net/2026/01/30/News-2026-Week-4/</id>
|
||||
<published>2026-01-30T20:39:17.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.938Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Here are my takes on the news for this week. It's worth what you paid for it.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Philosophy" scheme="https://aklabs.net/categories/Philosophy/"/>
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
<category term="Current Events" scheme="https://aklabs.net/categories/Current-Events/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>There are two kinds of programmers</title>
|
||||
<link href="https://aklabs.net/2026/01/25/Two-kinds-of-programmers/"/>
|
||||
<id>https://aklabs.net/2026/01/25/Two-kinds-of-programmers/</id>
|
||||
<published>2026-01-25T08:57:43.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.939Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Musings on the rift that the "AI Revolution" is exposing in the field of computer programming, that being a divide between programmers who view it as an artform, and who enjoy the act of programming itself, and those who actually do not enjoy programming, and just want to get around it faster to be more productive.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Philosophy" scheme="https://aklabs.net/categories/Philosophy/"/>
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>News - 2026 - Week 3</title>
|
||||
<link href="https://aklabs.net/2026/01/23/News-2026-Week-3/"/>
|
||||
<id>https://aklabs.net/2026/01/23/News-2026-Week-3/</id>
|
||||
<published>2026-01-23T12:00:51.000Z</published>
|
||||
<updated>2026-01-23T15:24:30.203Z</updated>
|
||||
<published>2026-01-23T07:00:51.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.938Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Here's my thoughts on news across the internet this week. It's worth what you paid for it.</summary>
|
||||
@@ -41,8 +312,8 @@
|
||||
<title>This Old Tool : cmdarg</title>
|
||||
<link href="https://aklabs.net/2026/01/19/This-Old-Tool-cmdarg/"/>
|
||||
<id>https://aklabs.net/2026/01/19/This-Old-Tool-cmdarg/</id>
|
||||
<published>2026-01-19T19:37:26.000Z</published>
|
||||
<updated>2026-01-19T22:12:47.060Z</updated>
|
||||
<published>2026-01-19T14:37:26.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.939Z</updated>
|
||||
|
||||
|
||||
|
||||
@@ -60,37 +331,14 @@
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>News-2026-Week-2</title>
|
||||
<link href="https://aklabs.net/2026/01/16/News-2026-Week-2/"/>
|
||||
<id>https://aklabs.net/2026/01/16/News-2026-Week-2/</id>
|
||||
<published>2026-01-16T15:24:09.041Z</published>
|
||||
<updated>2026-01-16T15:26:34.871Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Here are my thoughts on news across the internet this week. We touch on rent denialism, collapsing job markets, corporate productivity theater, and the many ways AI is being oversold, misused, or shoved where it doesn’t belong. Along the way I rant about enshittification, ownership (of code, hardware, and ideas), bad APIs, worse management, the slow death of the old internet, and why UNIX got it right decades ago. It’s part news roundup, part cultural autopsy, part theological and philosophical musing — ending, as usual, with a reminder to ignore the noise, give your attention to what you love, and keep your eyes on God and the horizon. It's worth what you paid for it.</summary>
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Leadership" scheme="https://aklabs.net/categories/Leadership/"/>
|
||||
|
||||
<category term="Technology" scheme="https://aklabs.net/categories/Technology/"/>
|
||||
|
||||
<category term="Current Events" scheme="https://aklabs.net/categories/Current-Events/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>libakerror</title>
|
||||
<link href="https://aklabs.net/2026/01/10/libakerror/"/>
|
||||
<id>https://aklabs.net/2026/01/10/libakerror/</id>
|
||||
<published>2026-01-11T03:11:25.000Z</published>
|
||||
<updated>2026-01-11T03:21:35.867Z</updated>
|
||||
<published>2026-01-10T22:11:25.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.939Z</updated>
|
||||
|
||||
|
||||
<summary type="html">A C library I wrote for exception style error handling in C code</summary>
|
||||
@@ -106,8 +354,8 @@
|
||||
<title>News - 2026 - Week 1</title>
|
||||
<link href="https://aklabs.net/2026/01/08/News-2026-Week-1/"/>
|
||||
<id>https://aklabs.net/2026/01/08/News-2026-Week-1/</id>
|
||||
<published>2026-01-09T03:11:25.000Z</published>
|
||||
<updated>2026-01-11T03:17:51.248Z</updated>
|
||||
<published>2026-01-08T22:11:25.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.937Z</updated>
|
||||
|
||||
|
||||
<summary type="html">Musings on android source code releases, the return of the keyboard PC, some AI workflows are just event driven architecture, sociopaths in civil service, what happens when AI interfaces replace proper APIs, and comprehensible interfaces to quantum computing chips</summary>
|
||||
@@ -125,8 +373,8 @@
|
||||
<title>Smart LEGO</title>
|
||||
<link href="https://aklabs.net/2026/01/06/Smart-LEGO/"/>
|
||||
<id>https://aklabs.net/2026/01/06/Smart-LEGO/</id>
|
||||
<published>2026-01-07T03:11:25.000Z</published>
|
||||
<updated>2026-01-11T03:17:27.144Z</updated>
|
||||
<published>2026-01-06T22:11:25.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.938Z</updated>
|
||||
|
||||
|
||||
|
||||
@@ -148,8 +396,8 @@
|
||||
<title>Single Pane of Glass</title>
|
||||
<link href="https://aklabs.net/2026/01/04/Single-Pane-of-Glass/"/>
|
||||
<id>https://aklabs.net/2026/01/04/Single-Pane-of-Glass/</id>
|
||||
<published>2026-01-05T03:11:25.000Z</published>
|
||||
<updated>2026-01-11T03:17:00.681Z</updated>
|
||||
<published>2026-01-04T22:11:25.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.938Z</updated>
|
||||
|
||||
|
||||
<summary type="html">There are too many ways of doing the same shit across too many different mediums and platforms</summary>
|
||||
@@ -161,325 +409,4 @@
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Socrates got a raw deal</title>
|
||||
<link href="https://aklabs.net/2025/01/04/Socrates-got-a-raw-deal/"/>
|
||||
<id>https://aklabs.net/2025/01/04/Socrates-got-a-raw-deal/</id>
|
||||
<published>2025-01-04T20:06:30.000Z</published>
|
||||
<updated>2025-07-20T23:35:28.152Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><p>If you don’t know already, <a href="https://en.m.wikipedia.org/wiki/Socrates">Socrates</a> was a Greek philosopher who lived in Athens a</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Philosophy" scheme="https://aklabs.net/categories/Philosophy/"/>
|
||||
|
||||
<category term="History" scheme="https://aklabs.net/categories/History/"/>
|
||||
|
||||
<category term="Liberal Education" scheme="https://aklabs.net/categories/Liberal-Education/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Advice for New Managers : Part 3</title>
|
||||
<link href="https://aklabs.net/2024/03/08/new-manager-pt3/"/>
|
||||
<id>https://aklabs.net/2024/03/08/new-manager-pt3/</id>
|
||||
<published>2024-03-08T05:10:28.000Z</published>
|
||||
<updated>2025-07-20T23:35:28.152Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><p>Welcome back to my series of advice for new managers. In the previous post, <a href="/2024/03/05/new-manager-pt2/">Advice for New</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Leadership" scheme="https://aklabs.net/categories/Leadership/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Advice for New Managers : Part 2</title>
|
||||
<link href="https://aklabs.net/2024/03/05/new-manager-pt2/"/>
|
||||
<id>https://aklabs.net/2024/03/05/new-manager-pt2/</id>
|
||||
<published>2024-03-05T17:10:28.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.030Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><p>Welcome back to my series of advice for new managers. In the previous post, <a href="/2024/03/03/new-manager-pt1/">Advice for New</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Leadership" scheme="https://aklabs.net/categories/Leadership/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Advice for New Managers : Part 1</title>
|
||||
<link href="https://aklabs.net/2024/03/03/new-manager-pt1/"/>
|
||||
<id>https://aklabs.net/2024/03/03/new-manager-pt1/</id>
|
||||
<published>2024-03-03T17:10:28.000Z</published>
|
||||
<updated>2026-01-02T13:27:46.633Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><p>The big day is finally here. You’ve worked hard, proven your ability to provide business value, distinguished yourself among your</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Leadership" scheme="https://aklabs.net/categories/Leadership/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Setting Expectations</title>
|
||||
<link href="https://aklabs.net/2024/02/09/expectations/"/>
|
||||
<id>https://aklabs.net/2024/02/09/expectations/</id>
|
||||
<published>2024-02-09T13:30:30.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.030Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><h1 id="“My-expectation-is-…”"><a href="#“My-expectation-is-…”" class="headerlink" title="“My expectation is …”"></a>“My expectation is</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Leadership" scheme="https://aklabs.net/categories/Leadership/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Start with Why</title>
|
||||
<link href="https://aklabs.net/2024/01/29/Simon-Sinek-Start-with-Why/"/>
|
||||
<id>https://aklabs.net/2024/01/29/Simon-Sinek-Start-with-Why/</id>
|
||||
<published>2024-01-29T21:35:48.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.030Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><h1 id="Start-with-Why"><a href="#Start-with-Why" class="headerlink" title="Start with Why"></a>Start with Why</h1><img alt="Image of Start</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Leadership" scheme="https://aklabs.net/categories/Leadership/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>US Catholic Catechism for Adults</title>
|
||||
<link href="https://aklabs.net/2023/12/23/United-States-Catholic-Catechism-for-Adults/"/>
|
||||
<id>https://aklabs.net/2023/12/23/United-States-Catholic-Catechism-for-Adults/</id>
|
||||
<published>2023-12-23T22:03:44.000Z</published>
|
||||
<updated>2026-01-02T13:29:15.280Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><h1 id="United-States-Catholic-Catechism-for-Adults"><a href="#United-States-Catholic-Catechism-for-Adults" class="headerlink"</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Faith" scheme="https://aklabs.net/categories/Faith/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Copper Sun</title>
|
||||
<link href="https://aklabs.net/2023/11/05/Copper-Sun/"/>
|
||||
<id>https://aklabs.net/2023/11/05/Copper-Sun/</id>
|
||||
<published>2023-11-06T01:01:51.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.030Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><img alt="Image of Copper Sun" style="float: left; padding: 20px 20px 20px 20px;" src="/images/books/coppersun.jpg">
|
||||
|
||||
<p><strong>Rating:</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>The Cost of Discipleship</title>
|
||||
<link href="https://aklabs.net/2023/10/10/The-Cost-of-Discipleship/"/>
|
||||
<id>https://aklabs.net/2023/10/10/The-Cost-of-Discipleship/</id>
|
||||
<published>2023-10-11T00:23:33.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.030Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><img alt="Image of The Cost of Discipleship" style="float: left; padding: 20px 20px 20px 20px;"</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Faith" scheme="https://aklabs.net/categories/Faith/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>If You Didn't Bring Jerky, What Did I Just Eat?</title>
|
||||
<link href="https://aklabs.net/2023/09/28/Bill-Heavey-Jerkey-What-Did-I-Just-Eat/"/>
|
||||
<id>https://aklabs.net/2023/09/28/Bill-Heavey-Jerkey-What-Did-I-Just-Eat/</id>
|
||||
<published>2023-09-29T00:34:33.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.026Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><img alt="Image of If You Didn't Bring Jerky, What Did I Just Eat?" style="float: left; padding: 20px 20px 20px 20px;"</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Outdoors" scheme="https://aklabs.net/categories/Outdoors/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>How Should We Then Live</title>
|
||||
<link href="https://aklabs.net/2023/09/24/How-Should-We-Then-Live/"/>
|
||||
<id>https://aklabs.net/2023/09/24/How-Should-We-Then-Live/</id>
|
||||
<published>2023-09-25T00:58:40.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.030Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><img alt="Image of How Should We Then Live" style="float: left; padding: 20px 20px 20px 20px;"</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Faith" scheme="https://aklabs.net/categories/Faith/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Christianity: The First 3000 Years</title>
|
||||
<link href="https://aklabs.net/2023/09/12/Christianity-First-3000-Years/"/>
|
||||
<id>https://aklabs.net/2023/09/12/Christianity-First-3000-Years/</id>
|
||||
<published>2023-09-13T01:20:20.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.026Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><img alt="Image of Christianity: The First 3000 Years" style="float: left; padding: 20px 20px 20px 20px;"</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Faith" scheme="https://aklabs.net/categories/Faith/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<title>Live Not By Lies</title>
|
||||
<link href="https://aklabs.net/2022/10/15/Live-Not-By-Lies/"/>
|
||||
<id>https://aklabs.net/2022/10/15/Live-Not-By-Lies/</id>
|
||||
<published>2022-10-16T02:11:25.000Z</published>
|
||||
<updated>2024-03-31T16:10:27.030Z</updated>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary type="html"><img alt="Image of Live Not By Lies" style="float: left; padding: 20px 20px 20px 20px;"</summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<category term="Books" scheme="https://aklabs.net/categories/Books/"/>
|
||||
|
||||
<category term="Faith" scheme="https://aklabs.net/categories/Faith/"/>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
</feed>
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -588,10 +632,10 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-16</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
href="/2026/06/30/News-2026-Week-2/"
|
||||
class="archive-timeline-post-item">
|
||||
News-2026-Week-2
|
||||
</a>
|
||||
@@ -792,23 +836,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -839,6 +883,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -864,7 +960,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -684,23 +728,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -731,6 +775,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -756,7 +852,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -588,12 +632,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-23</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/23/News-2026-Week-3/"
|
||||
href="/2026/06/30/News-2026-Week-2/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 3
|
||||
News-2026-Week-2
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -604,12 +648,60 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-16</div>
|
||||
<div class="archive-timeline-post-date">2026-06-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
href="/2026/06/23/News-2026-Week-26/"
|
||||
class="archive-timeline-post-item">
|
||||
News-2026-Week-2
|
||||
News - 2026 - Week - 26
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-02-09</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/02/09/News-2026-Week-5/"
|
||||
class="archive-timeline-post-item">
|
||||
News 2026 Week 5
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/30/News-2026-Week-4/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 4
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/23/News-2026-Week-3/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 3
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -651,23 +743,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -698,6 +790,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -723,7 +867,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -582,6 +626,25 @@
|
||||
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2026</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/08/Carrying-That-Weight/"
|
||||
class="archive-timeline-post-item">
|
||||
Carrying That Weight
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2023</span></div>
|
||||
|
||||
|
||||
@@ -702,23 +765,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -749,6 +812,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -774,7 +889,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -588,10 +632,10 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-16</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
href="/2026/06/30/News-2026-Week-2/"
|
||||
class="archive-timeline-post-item">
|
||||
News-2026-Week-2
|
||||
</a>
|
||||
@@ -737,23 +781,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -784,6 +828,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -809,7 +905,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -666,6 +710,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -691,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -585,6 +629,118 @@
|
||||
<div class="archive-timeline-tag"><span>2026</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/30/Be-Yourself/"
|
||||
class="archive-timeline-post-item">
|
||||
Just Be Yourself ... Whoever that is
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/30/You-Cant-Go-Home-Again/"
|
||||
class="archive-timeline-post-item">
|
||||
You Cant Go Home Again
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/23/News-2026-Week-26/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week - 26
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-06-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/08/Carrying-That-Weight/"
|
||||
class="archive-timeline-post-item">
|
||||
Carrying That Weight
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-02-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/02/23/Why-Firefighting/"
|
||||
class="archive-timeline-post-item">
|
||||
Why Firefighting
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/30/News-2026-Week-4/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 4
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-25</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/25/Two-kinds-of-programmers/"
|
||||
class="archive-timeline-post-item">
|
||||
There are two kinds of programmers
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
@@ -638,23 +794,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -685,6 +841,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -710,7 +918,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -588,42 +632,10 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-23</div>
|
||||
<div class="archive-timeline-post-date">2026-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/23/News-2026-Week-3/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 3
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-19</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/19/This-Old-Tool-cmdarg/"
|
||||
class="archive-timeline-post-item">
|
||||
This Old Tool : cmdarg
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-16</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/16/News-2026-Week-2/"
|
||||
href="/2026/06/30/News-2026-Week-2/"
|
||||
class="archive-timeline-post-item">
|
||||
News-2026-Week-2
|
||||
</a>
|
||||
@@ -636,12 +648,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-10</div>
|
||||
<div class="archive-timeline-post-date">2026-06-27</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/10/libakerror/"
|
||||
href="/2026/06/27/Devlog-20260627/"
|
||||
class="archive-timeline-post-item">
|
||||
libakerror
|
||||
Devlog Entry - 27 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -652,12 +664,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-08</div>
|
||||
<div class="archive-timeline-post-date">2026-06-23</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/08/News-2026-Week-1/"
|
||||
href="/2026/06/23/News-2026-Week-26/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 1
|
||||
News - 2026 - Week - 26
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -668,12 +680,12 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-06</div>
|
||||
<div class="archive-timeline-post-date">2026-06-18</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/06/Smart-LEGO/"
|
||||
href="/2026/06/18/Devlog-20260618/"
|
||||
class="archive-timeline-post-item">
|
||||
Smart LEGO
|
||||
Devlog Entry - 18 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -684,18 +696,115 @@
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-04</div>
|
||||
<div class="archive-timeline-post-date">2026-06-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/04/Single-Pane-of-Glass/"
|
||||
href="/2026/06/08/Devlog-20260608/"
|
||||
class="archive-timeline-post-item">
|
||||
Single Pane of Glass
|
||||
Devlog Entry - 8 June 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-05-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/30/Devlog-20260530/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 30 May 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-05-15</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 18 May 2026
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-02-09</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/02/09/News-2026-Week-5/"
|
||||
class="archive-timeline-post-item">
|
||||
News 2026 Week 5
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/30/News-2026-Week-4/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 4
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-25</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/25/Two-kinds-of-programmers/"
|
||||
class="archive-timeline-post-item">
|
||||
There are two kinds of programmers
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="nav">
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/categories/Technology/page/2/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
@@ -715,23 +824,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -762,6 +871,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -787,7 +948,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1142
categories/Technology/page/2/index.html
Normal file
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -582,7 +626,7 @@
|
||||
Categories
|
||||
</div>
|
||||
<div>
|
||||
Total 24 posts
|
||||
Total 37 posts
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-content categories-page-card">
|
||||
@@ -598,6 +642,17 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="categories-page-list-item"
|
||||
style="margin-top: 0;">
|
||||
<span>Philosophy</span>
|
||||
<span
|
||||
class="categories-page-list-item-total">
|
||||
Total 9 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
class="categories-page-list-item"
|
||||
@@ -605,7 +660,18 @@
|
||||
<span>Faith</span>
|
||||
<span
|
||||
class="categories-page-list-item-total">
|
||||
Total 6 posts
|
||||
Total 7 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="categories-page-list-item"
|
||||
style="margin-top: 0;">
|
||||
<span>Technology</span>
|
||||
<span
|
||||
class="categories-page-list-item-total">
|
||||
Total 16 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@@ -621,13 +687,13 @@
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
href="/categories/Current-Events/"
|
||||
class="categories-page-list-item"
|
||||
style="margin-top: 0;">
|
||||
<span>Philosophy</span>
|
||||
<span>Current-Events</span>
|
||||
<span
|
||||
class="categories-page-list-item-total">
|
||||
Total 2 posts
|
||||
Total 6 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@@ -664,28 +730,6 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="categories-page-list-item"
|
||||
style="margin-top: 0;">
|
||||
<span>Technology</span>
|
||||
<span
|
||||
class="categories-page-list-item-total">
|
||||
Total 7 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="categories-page-list-item"
|
||||
style="margin-top: 0;">
|
||||
<span>Current-Events</span>
|
||||
<span
|
||||
class="categories-page-list-item-total">
|
||||
Total 3 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
@@ -704,23 +748,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -751,6 +795,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -776,7 +872,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>25</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -355,7 +355,7 @@
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -383,7 +383,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
<span class="categories-list-item-badge">8</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -452,6 +452,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +465,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">8</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -652,6 +656,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-25</div>
|
||||
<a href="/2026/01/25/Two-kinds-of-programmers/"><div class="recent-posts-item-content">There are two kinds of programmers</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
@@ -667,11 +676,6 @@
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -716,6 +720,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -725,7 +733,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">8</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@ URL;TYPE=linkedin:https://www.linkedin.com/in/andrewkesterson/
|
||||
X-SOCIALPROFILE;TYPE=linkedin;X-USER=andrewkesterson:https://www.linkedin.com/in/andrewkesterson/
|
||||
URL;TYPE=github:https://github.com/akesterson/
|
||||
X-SOCIALPROFILE;TYPE=github;X-USER=akesterson:https://github.com/akesterson/
|
||||
URL;TYPE=source:https://source.starfort.tech/andrew/
|
||||
X-SOCIALPROFILE;TYPE=source;X-USER=akesterson:https://source.starfort.tech/andrew/
|
||||
URL;TYPE=twitter:https://x.com/AKLabsDotNet
|
||||
X-SOCIALPROFILE;TYPE=twitter;X-USER=AKLabsDotNet:https://x.com/AKLabsDotNet
|
||||
END:VCARD
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -582,7 +626,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2025-12-28T15:33:54.000Z">
|
||||
<time datetime="2025-12-28T10:33:54.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -592,7 +636,7 @@
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>96 words</span>
|
||||
<span>206 words</span>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -600,16 +644,34 @@
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<ul>
|
||||
<li>I’m usually idling on <a target="_blank" rel="noopener" href="https://discord.com/users/andrew.kesterson">Discord</a></li>
|
||||
<li>I’m usually idling on <a target="_blank" rel="noopener" href="https://f/">IRC (LiberaChat)</a> as <code>akesterson</code></li>
|
||||
<li>Sometimes I’m on X as <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet">@AKLabsDotNet</a></li>
|
||||
<h2 id="How-to-reach-me"><a href="#How-to-reach-me" class="headerlink" title="How to reach me"></a>How to reach me</h2><ul>
|
||||
<li>You can DM me on <a target="_blank" rel="noopener" href="https://discord.com/users/andrew.kesterson">Discord</a></li>
|
||||
<li>I’m usually idling on <a target="_blank" rel="noopener" href="https://libera.chat/">IRC (LiberaChat)</a> as <code>akesterson</code> (check <code>#emacs</code>, <code>#linux</code>, <code>#bash</code> and <code>#c</code>)</li>
|
||||
<li>Sometimes I’m shouting into the void on X as <a target="_blank" rel="noopener" href="https://x.com/AKLabsDotNet">@AKLabsDotNet</a></li>
|
||||
<li>I observe the circus on <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a></li>
|
||||
<li>Friends and family can find me on <a target="_blank" rel="noopener" href="https://www.facebook.com/andrew.kesterson.16">Facebook</a></li>
|
||||
<li>Just email me at <a href="mailto:andrew@aklabs.net">andrew@aklabs.net</a></li>
|
||||
</ul>
|
||||
<p>You can <a href="/contact/andrew_kesterson.vcf">download my vCard (contact file) here</a>, which includes my business phone #.</p>
|
||||
<p>Note that unscheduled phone calls will likely be routed to voicemail, and all unscheduled communications will be returned at my earliest convenience. To schedule a time to connect with me directly, please use the scheduler on my <a href="/consulting/">Consulting</a> services page.</p>
|
||||
<p>Note that unscheduled phone calls will likely be routed to voicemail, and all unscheduled communications will be returned at my earliest convenience. </p>
|
||||
<h2 id="Emergency-Medical-and-Technology-Consulting-Services"><a href="#Emergency-Medical-and-Technology-Consulting-Services" class="headerlink" title="Emergency Medical and Technology Consulting Services"></a>Emergency Medical and Technology Consulting Services</h2><p>Do you need help with any of the following?</p>
|
||||
<ul>
|
||||
<li>Emergency medical training for yourself, your workforce, or your volunteer group?<ul>
|
||||
<li>First aid and CPR</li>
|
||||
<li>Bloodborne Pathogens</li>
|
||||
<li>Emergency Use of Medical Oxygen</li>
|
||||
<li>Basic Life Support</li>
|
||||
<li>Advanced First Aid</li>
|
||||
<li>Wilderness First Aid</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Turning your ideas into working software on desktop, mobile or the internet</li>
|
||||
<li>Providing IT services to your small or medium business</li>
|
||||
<li>Automating the delivery, maintenance and operation of technology infrastructure</li>
|
||||
<li>Training managers or team leaders in your business</li>
|
||||
<li>Strategic leadership of your business or enterprise</li>
|
||||
</ul>
|
||||
<p>I provide a wide range of consulting services and can help with all of these things. I would be happy to discuss your needs.</p>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
@@ -630,7 +692,7 @@
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#How-to-reach-me"><span class="toc-text">How to reach me</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Emergency-Medical-and-Technology-Consulting-Services"><span class="toc-text">Emergency Medical and Technology Consulting Services</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
@@ -650,23 +712,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -697,6 +759,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -722,7 +836,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
BIN
images/krabs-money.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
images/people-retarded.jpg
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
images/posts/carrying-that-weight/spike-and-vicious.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
images/posts/devlog-20260608/mapphysicsproperties.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
images/posts/devlog-20260618/embeddedexpensivebutfun.gif
Normal file
|
After Width: | Height: | Size: 585 KiB |
BIN
images/whos-laughing-now.gif
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
images/you-wouldnt-get-it.jpg
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
751
index.html
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -578,112 +622,7 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/23/News-2026-Week-3/">
|
||||
<h1 class="post-title">
|
||||
News - 2026 - Week 3
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Here’s my thoughts on news across the internet this week. It’s worth what you paid for it.
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-23T12:00:51.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-23</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/">
|
||||
<h1 class="post-title">
|
||||
This Old Tool : cmdarg
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-19T19:37:26.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-19</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/16/News-2026-Week-2/">
|
||||
<a href="/2026/06/30/News-2026-Week-2/">
|
||||
<h1 class="post-title">
|
||||
News-2026-Week-2
|
||||
</h1>
|
||||
@@ -695,12 +634,12 @@
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-16T15:24:09.041Z">
|
||||
<time datetime="2026-06-30T19:59:55.937Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-16</span>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -723,6 +662,20 @@
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
@@ -730,22 +683,8 @@
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/">Read Details </a>
|
||||
<a href="/2026/06/30/News-2026-Week-2/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -753,24 +692,111 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/10/libakerror/">
|
||||
<a href="/2026/06/30/Be-Yourself/">
|
||||
<h1 class="post-title">
|
||||
libakerror
|
||||
Just Be Yourself ... Whoever that is
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
I’d like to present a C library I wrote for exception style error handling in C code, why I wrote it, and why I pr...
|
||||
Some of the best, simplest, and hardest advice I ever got was from a dead man.
|
||||
When someone dies, we go thr...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-11T03:11:25.000Z">
|
||||
<time datetime="2026-06-30T12:49:26.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-10</span>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/06/30/Be-Yourself/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/">
|
||||
<h1 class="post-title">
|
||||
You Cant Go Home Again
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
What is home?Is “h...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-06-30T06:54:00.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/06/27/Devlog-20260627/">
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 27 June 2026
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Development log entry for the week ending 27 June 2026. Improvements to libakerror logging, libakstdlib gets linke...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-06-27T07:45:42.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-27</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -788,7 +814,7 @@
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/10/libakerror/">Read Details </a>
|
||||
<a href="/2026/06/27/Devlog-20260627/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -796,163 +822,24 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/08/News-2026-Week-1/">
|
||||
<a href="/2026/06/23/News-2026-Week-26/">
|
||||
<h1 class="post-title">
|
||||
News - 2026 - Week 1
|
||||
News - 2026 - Week - 26
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Here are my thoughts on the news this week. It’s worth what you paid for it.
|
||||
|
||||
Here is my take on events across the internet this week. It’s worth what you paid for it. Compromised accounts pus...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-09T03:11:25.000Z">
|
||||
<time datetime="2026-06-23T22:21:13.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-08</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/08/News-2026-Week-1/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/06/Smart-LEGO/">
|
||||
<h1 class="post-title">
|
||||
Smart LEGO
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-07T03:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-06</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/06/Smart-LEGO/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/04/Single-Pane-of-Glass/">
|
||||
<h1 class="post-title">
|
||||
Single Pane of Glass
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
There are too many ways of doing the same shit across too many different mediums and platforms
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-05T03:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-04</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/04/Single-Pane-of-Glass/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2025/01/04/Socrates-got-a-raw-deal/">
|
||||
<h1 class="post-title">
|
||||
Socrates got a raw deal
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
If you don’t know already, Socrates was a Greek philosopher...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2025-01-04T20:06:30.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2025-01-04</span>
|
||||
<span>2026-06-23</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -963,18 +850,9 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
@@ -983,21 +861,21 @@
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/History/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
History
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Liberal-Education/"
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Liberal-Education
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2025/01/04/Socrates-got-a-raw-deal/">Read Details </a>
|
||||
<a href="/2026/06/23/News-2026-Week-26/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -1005,24 +883,24 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/03/08/new-manager-pt3/">
|
||||
<a href="/2026/06/18/Devlog-20260618/">
|
||||
<h1 class="post-title">
|
||||
Advice for New Managers : Part 3
|
||||
Devlog Entry - 18 June 2026
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Welcome back to my series of advice for new managers. In the previous post,
|
||||
I’ve spent all my spare (technology) time learning more about the ESP32, the Arduino HAL, and using some additiona...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-03-08T05:10:28.000Z">
|
||||
<time datetime="2026-06-18T16:47:16.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-03-08</span>
|
||||
<span>2026-06-18</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -1033,14 +911,14 @@
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/03/08/new-manager-pt3/">Read Details </a>
|
||||
<a href="/2026/06/18/Devlog-20260618/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -1048,24 +926,76 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/03/05/new-manager-pt2/">
|
||||
<a href="/2026/06/08/Carrying-That-Weight/">
|
||||
<h1 class="post-title">
|
||||
Advice for New Managers : Part 2
|
||||
Carrying That Weight
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Welcome back to my series of advice for new managers. In the previous post,
|
||||
I’m not really keen to talk about this. But the idea of writing this, around a 3 year old entry in my prayer journ...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-03-05T17:10:28.000Z">
|
||||
<time datetime="2026-06-08T15:32:23.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-03-05</span>
|
||||
<span>2026-06-08</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/06/08/Carrying-That-Weight/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/06/08/Devlog-20260608/">
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 8 June 2026
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
libakgl updates
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-06-08T09:27:12.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-06-08</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -1076,14 +1006,101 @@
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/03/05/new-manager-pt2/">Read Details </a>
|
||||
<a href="/2026/06/08/Devlog-20260608/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/05/30/Devlog-20260530/">
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 30 May 2026
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
libakstdlibSeveral imp...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-05-30T10:05:47.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-05-30</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/05/30/Devlog-20260530/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/05/15/Devlog-20260518/">
|
||||
<h1 class="post-title">
|
||||
Devlog Entry - 18 May 2026
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
I just wanted to drop some notes on things I’ve been hacking on recently.
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-05-15T22:04:50.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-05-15</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/05/15/Devlog-20260518/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -1123,23 +1140,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1170,6 +1187,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1195,7 +1264,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
172
links/index.html
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -601,23 +645,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -648,6 +692,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -673,7 +769,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
208
now/index.html
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -582,17 +626,17 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-18T17:47:27.018Z">
|
||||
<time datetime="2026-06-30T19:59:56.002Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-18</span>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>648 words</span>
|
||||
<span>228 words</span>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -600,32 +644,16 @@
|
||||
<div
|
||||
id="section"
|
||||
class="post-content">
|
||||
<p>To review the history of my <code>~/.plan</code> file and see progress over time, you can see <a target="_blank" rel="noopener" href="https://github.com/akesterson/akesterson.github.io/commits/main/now/index.html">the history on github</a>.</p>
|
||||
<p>These days I’m mostly focused on my day job, which means I won’t publish a lot of personal code, but the good news is that most of my work is open source on Repo1, and you can <a target="_blank" rel="noopener" href="https://repo1.dso.mil/akesterson/dotfiles/-/blob/main/.plan.md">follow me there</a>.</p>
|
||||
<h2 id="Recent-Progress"><a href="#Recent-Progress" class="headerlink" title="Recent Progress"></a>Recent Progress</h2><ul>
|
||||
<li><p><input checked="" disabled="" type="checkbox">
|
||||
Accepted or closed several merges/bugs on <a target="_blank" rel="noopener" href="https://github.com/akesterson/cmdarg">cmdarg</a>, my pure bash argument parsing library. Took the time to construct a CI pipeline that runs tests. I was a bit gunshy about accepting changes to the library since it had been so long since I wrote it, then I remembered I had written 30 checks with <a target="_blank" rel="noopener" href="https://github.com/akesterson/shunit">shunit</a> (another one of my old bash tools), so all I had to do was rig it up with the github pipeline. Took the chance to fix a bunch of little things about how cmdarg, shunit, and <a target="_blank" rel="noopener" href="https://github.com/akesterson/versioners">versioners</a> (yet another bash tool I wrote a while back) run their <code>make install</code> target.</p>
|
||||
</li>
|
||||
<li><p><input checked="" disabled="" type="checkbox">
|
||||
Started the 2026 fire academy down here in Marion county Georgia. We have a little under a dozen recruits that are going through the academy. Lots more cadre are stepping up from across the county to help this year, as well, in addition to the students who graduated last year. Each one, teach one.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="Specific-Plans"><a href="#Specific-Plans" class="headerlink" title="Specific Plans"></a>Specific Plans</h2><!-- personal .plan here -->
|
||||
<p>These days I’m mostly focused on my day job, which means I won’t publish a lot of personal code, but the good news is that most of my work is open source on Repo1, and you can <a target="_blank" rel="noopener" href="https://repo1.dso.mil/akesterson/dotfiles/-/blob/main/.plan.md">follow me there</a>.</p>
|
||||
<ul>
|
||||
<li>Program a bunch of Baofeng BF-888S radios for the fire academy. Recruits need radios for training, and our regular Kenwoods are way too expensive to give them out to recruits (and with the BF-888s we won’t risk accidental training mayday transmissions on the actual fire repeater….)</li>
|
||||
<li>Implement <a target="_blank" rel="noopener" href="https://github.com/akesterson/py-synologydsm-api">py-synologydsm-api</a> SYNO.Cal event filtering by calendar ID and filtering by date (only show me events in the future). I’ll be honest, every day that passes, I’m less inclined to complete this. The reason I wanted to do this in the first place was to avoid having to learn <code>org-mode</code> (as an emacs user, I know, this is sacrilege), but I just don’t think I love Synology enough to force myself to work in this ecosystem. There’s probably a blog post coming about this.</li>
|
||||
<li>Plan and implement a distributed storage network for myself and my relatives. One of us recently suffered a catastrophic data failure on their NAS and there were no backups. This was a serious wake-up call that RAID in one location is not enough, so we’re taking steps towards geographically distributed replicated backups.</li>
|
||||
<li>Publish my RFC on Decentralized Claim-Based Professional Credentials and Trust Attestations, aka, “how we can use the crypto web of trust to solve the AI slop hiring problem in our job market”. I’ve been sleeping on this to see if I still like the idea, and some parts of it have not grown on me, but I think the idea is worth talking about.</li>
|
||||
<li>Resolve a couple of bugs in the Steam DevKit Client, now that we’ve gotten guidance on how to contribute changes back. I’m at least going to solve the problem where the client doesn’t even run on recent X ubuntu installations. (Wayland can suck it.)</li>
|
||||
<li>Do some things with the kubernetes homelab, letsencrypt, synology, and …. things</li>
|
||||
<li>Learning embedded development. I’m working through a process that will take me through Arduino on ESP32, then into bare metal programming on an STM32 Nucleo board, then mastering advanced stuff like trusted security modules on STM32H5, then RTOS with more STM32, then FPGA programming on an Artyx. Along the way I’m experimenting with PIC microcontrollers and other embedded toys as well. I hope to complete this course by some time in 2027.</li>
|
||||
<li>Relaxing after a successful fire academy. The first half of every year is devoted to training firefighters in Marion County, Georgia. We just graduated 3 new support firefighters and 3 new suppression firefighters, so I’m taking a break from training for a while to focus on other things.</li>
|
||||
<li>Working on a tinyhouse for my oldest daughter. She has been very patient with me to complete this project, but I absolutely need to bear down and get this done. She deserves it, and besides, I promised.</li>
|
||||
</ul>
|
||||
<p><a target="_blank" rel="noopener" href="https://source.starfort.tech/aklabs.net/www.aklabs.net/commits/branch/main/now/index.html">My ~/.plan history is on the Starfort Source Vault</a>.</p>
|
||||
<h1 id="Musings"><a href="#Musings" class="headerlink" title="Musings"></a>Musings</h1><!-- musings here -->
|
||||
<blockquote>
|
||||
<p>Q: How many elephants can you fit in a VW Bug?<br>A: Four. Two in the front, two in the back.</p>
|
||||
<p>Q: How can you tell if an elephant is in your refrigerator?<br>A: There’s a footprint in the mayo.</p>
|
||||
<p>Q: How can you tell if two elephants are in your refrigerator?<br>A: There’s two footprints in the mayo.</p>
|
||||
<p>Q: How can you tell if three elephants are in your refrigerator?<br>A: The door won’t shut.</p>
|
||||
<p>Q: How can you tell if four elephants are in your refrigerator?<br>A: There’s a VW Bug in your driveway.</p>
|
||||
<p>You will stop at nothing to reach your objective, but only because your<br>brakes are defective.</p>
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
@@ -647,7 +675,7 @@ Started the 2026 fire academy down here in Marion county Georgia. We have a litt
|
||||
style="padding-right: 2px;">
|
||||
</i>TOC
|
||||
</div>
|
||||
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Recent-Progress"><span class="toc-text">Recent Progress</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Specific-Plans"><span class="toc-text">Specific Plans</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#Musings"><span class="toc-text">Musings</span></a>
|
||||
<ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#Musings"><span class="toc-text">Musings</span></a></li></ol>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
@@ -667,23 +695,23 @@ Started the 2026 fire academy down here in Marion county Georgia. We have a litt
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -714,6 +742,58 @@ Started the 2026 fire academy down here in Marion county Georgia. We have a litt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -739,7 +819,7 @@ Started the 2026 fire academy down here in Marion county Georgia. We have a litt
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -578,24 +622,24 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/03/03/new-manager-pt1/">
|
||||
<a href="/2026/02/23/Why-Firefighting/">
|
||||
<h1 class="post-title">
|
||||
Advice for New Managers : Part 1
|
||||
Why Firefighting
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
The big day is finally here. You’ve worked hard, proven your ability to provide business value, distinguished your...
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-03-03T17:10:28.000Z">
|
||||
<time datetime="2026-02-23T22:40:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-03-03</span>
|
||||
<span>2026-02-23</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -606,14 +650,14 @@
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/03/03/new-manager-pt1/">Read Details </a>
|
||||
<a href="/2026/02/23/Why-Firefighting/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -621,42 +665,51 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/02/09/expectations/">
|
||||
<a href="/2026/02/09/News-2026-Week-5/">
|
||||
<h1 class="post-title">
|
||||
Setting Expectations
|
||||
News 2026 Week 5
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
...
|
||||
Now that the 2026 firefighter recruit academy here in Marion County Georgia is ramping up, I haven’t had a lot of ...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-02-09T13:30:30.000Z">
|
||||
<time datetime="2026-02-09T06:34:21.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-02-09</span>
|
||||
<span>2026-02-09</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/02/09/expectations/">Read Details </a>
|
||||
<a href="/2026/02/09/News-2026-Week-5/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -664,24 +717,24 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/01/29/Simon-Sinek-Start-with-Why/">
|
||||
<a href="/2026/01/30/News-2026-Week-4/">
|
||||
<h1 class="post-title">
|
||||
Start with Why
|
||||
News - 2026 - Week 4
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Start with Why
|
||||
Here are my takes on the news for this week. Gotta be honest, this week I had a hard time keeping up with the news...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-01-29T21:35:48.000Z">
|
||||
<time datetime="2026-01-30T20:39:17.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-01-29</span>
|
||||
<span>2026-01-30</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -690,25 +743,34 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/01/29/Simon-Sinek-Start-with-Why/">Read Details </a>
|
||||
<a href="/2026/01/30/News-2026-Week-4/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -716,24 +778,24 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/12/23/United-States-Catholic-Catechism-for-Adults/">
|
||||
<a href="/2026/01/25/Two-kinds-of-programmers/">
|
||||
<h1 class="post-title">
|
||||
US Catholic Catechism for Adults
|
||||
There are two kinds of programmers
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
The “AI Revolution”, as many are calling it, is exposing something that I (and countless others) have been aware o...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2023-12-23T22:03:44.000Z">
|
||||
<time datetime="2026-01-25T08:57:43.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2023-12-23</span>
|
||||
<span>2026-01-25</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -746,21 +808,21 @@
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2023/12/23/United-States-Catholic-Catechism-for-Adults/">Read Details </a>
|
||||
<a href="/2026/01/25/Two-kinds-of-programmers/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -768,43 +830,61 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/11/05/Copper-Sun/">
|
||||
<a href="/2026/01/23/News-2026-Week-3/">
|
||||
<h1 class="post-title">
|
||||
Copper Sun
|
||||
News - 2026 - Week 3
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Here’s my thoughts on news across the internet this week. It’s worth what you paid for it.
|
||||
|
||||
...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2023-11-06T01:01:51.000Z">
|
||||
<time datetime="2026-01-23T07:00:51.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2023-11-05</span>
|
||||
<span>2026-01-23</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2023/11/05/Copper-Sun/">Read Details </a>
|
||||
<a href="/2026/01/23/News-2026-Week-3/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -812,9 +892,9 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/10/10/The-Cost-of-Discipleship/">
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/">
|
||||
<h1 class="post-title">
|
||||
The Cost of Discipleship
|
||||
This Old Tool : cmdarg
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
@@ -824,39 +904,30 @@
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2023-10-11T00:23:33.000Z">
|
||||
<time datetime="2026-01-19T14:37:26.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2023-10-10</span>
|
||||
<span>2026-01-19</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2023/10/10/The-Cost-of-Discipleship/">Read Details </a>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -864,51 +935,42 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/09/28/Bill-Heavey-Jerkey-What-Did-I-Just-Eat/">
|
||||
<a href="/2026/01/10/libakerror/">
|
||||
<h1 class="post-title">
|
||||
If You Didn't Bring Jerky, What Did I Just Eat?
|
||||
libakerror
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
I’d like to present a C library I wrote for exception style error handling in C code, why I wrote it, and why I pr...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2023-09-29T00:34:33.000Z">
|
||||
<time datetime="2026-01-10T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2023-09-28</span>
|
||||
<span>2026-01-10</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Outdoors/"
|
||||
class="post-meta-link">
|
||||
Outdoors
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2023/09/28/Bill-Heavey-Jerkey-What-Did-I-Just-Eat/">Read Details </a>
|
||||
<a href="/2026/01/10/libakerror/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -916,24 +978,25 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/09/24/How-Should-We-Then-Live/">
|
||||
<a href="/2026/01/08/News-2026-Week-1/">
|
||||
<h1 class="post-title">
|
||||
How Should We Then Live
|
||||
News - 2026 - Week 1
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Here are my thoughts on the news this week. It’s worth what you paid for it.
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2023-09-25T00:58:40.000Z">
|
||||
<time datetime="2026-01-08T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2023-09-24</span>
|
||||
<span>2026-01-08</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -946,21 +1009,21 @@
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
href="/categories/Current-Events/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
Current-Events
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2023/09/24/How-Should-We-Then-Live/">Read Details </a>
|
||||
<a href="/2026/01/08/News-2026-Week-1/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -968,9 +1031,9 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/09/12/Christianity-First-3000-Years/">
|
||||
<a href="/2026/01/06/Smart-LEGO/">
|
||||
<h1 class="post-title">
|
||||
Christianity: The First 3000 Years
|
||||
Smart LEGO
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
@@ -980,39 +1043,30 @@
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2023-09-13T01:20:20.000Z">
|
||||
<time datetime="2026-01-06T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2023-09-12</span>
|
||||
<span>2026-01-06</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2023/09/12/Christianity-First-3000-Years/">Read Details </a>
|
||||
<a href="/2026/01/06/Smart-LEGO/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -1020,51 +1074,42 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2022/10/15/Live-Not-By-Lies/">
|
||||
<a href="/2026/01/04/Single-Pane-of-Glass/">
|
||||
<h1 class="post-title">
|
||||
Live Not By Lies
|
||||
Single Pane of Glass
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
There are too many ways of doing the same shit across too many different mediums and platforms
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2022-10-16T02:11:25.000Z">
|
||||
<time datetime="2026-01-04T22:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2022-10-15</span>
|
||||
<span>2026-01-04</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2022/10/15/Live-Not-By-Lies/">Read Details </a>
|
||||
<a href="/2026/01/04/Single-Pane-of-Glass/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -1116,23 +1161,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1163,6 +1208,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1188,7 +1285,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -578,9 +622,303 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2022/05/19/Jesus-Outside-the-Lines/">
|
||||
<a href="/2025/01/04/Socrates-got-a-raw-deal/">
|
||||
<h1 class="post-title">
|
||||
Jesus Outside the Lines
|
||||
Socrates got a raw deal
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
If you don’t know already, Socrates was a Greek philosopher...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2025-01-04T15:06:30.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2025-01-04</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/History/"
|
||||
class="post-meta-link">
|
||||
History
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Liberal-Education/"
|
||||
class="post-meta-link">
|
||||
Liberal-Education
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2025/01/04/Socrates-got-a-raw-deal/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/03/08/new-manager-pt3/">
|
||||
<h1 class="post-title">
|
||||
Advice for New Managers : Part 3
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Welcome back to my series of advice for new managers. In the previous post,
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-03-08T00:10:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-03-08</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/03/08/new-manager-pt3/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/03/05/new-manager-pt2/">
|
||||
<h1 class="post-title">
|
||||
Advice for New Managers : Part 2
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Welcome back to my series of advice for new managers. In the previous post,
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-03-05T12:10:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-03-05</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/03/05/new-manager-pt2/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/03/03/new-manager-pt1/">
|
||||
<h1 class="post-title">
|
||||
Advice for New Managers : Part 1
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
The big day is finally here. You’ve worked hard, proven your ability to provide business value, distinguished your...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-03-03T12:10:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-03-03</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/03/03/new-manager-pt1/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/02/09/expectations/">
|
||||
<h1 class="post-title">
|
||||
Setting Expectations
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-02-09T08:30:30.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-02-09</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/02/09/expectations/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2024/01/29/Simon-Sinek-Start-with-Why/">
|
||||
<h1 class="post-title">
|
||||
Start with Why
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
Start with Why
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2024-01-29T16:35:48.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2024-01-29</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2024/01/29/Simon-Sinek-Start-with-Why/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/12/23/United-States-Catholic-Catechism-for-Adults/">
|
||||
<h1 class="post-title">
|
||||
US Catholic Catechism for Adults
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
@@ -590,12 +928,12 @@
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2022-05-20T01:51:09.000Z">
|
||||
<time datetime="2023-12-23T17:03:44.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2022-05-19</span>
|
||||
<span>2023-12-23</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -622,7 +960,7 @@
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2022/05/19/Jesus-Outside-the-Lines/">Read Details </a>
|
||||
<a href="/2023/12/23/United-States-Catholic-Catechism-for-Adults/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -630,24 +968,25 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2022/05/04/American-Prison/">
|
||||
<a href="/2023/11/05/Copper-Sun/">
|
||||
<h1 class="post-title">
|
||||
American Prison
|
||||
Copper Sun
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
...
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2022-05-05T01:42:34.000Z">
|
||||
<time datetime="2023-11-05T20:01:51.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2022-05-04</span>
|
||||
<span>2023-11-05</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -665,7 +1004,7 @@
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2022/05/04/American-Prison/">Read Details </a>
|
||||
<a href="/2023/11/05/Copper-Sun/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -673,9 +1012,9 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2022/05/02/The-Hero-Code/">
|
||||
<a href="/2023/10/10/The-Cost-of-Discipleship/">
|
||||
<h1 class="post-title">
|
||||
The Hero Code
|
||||
The Cost of Discipleship
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
@@ -685,12 +1024,12 @@
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2022-05-03T01:58:12.000Z">
|
||||
<time datetime="2023-10-10T20:23:33.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2022-05-02</span>
|
||||
<span>2023-10-10</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -710,14 +1049,14 @@
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
href="/categories/Faith/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
Faith
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2022/05/02/The-Hero-Code/">Read Details </a>
|
||||
<a href="/2023/10/10/The-Cost-of-Discipleship/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -725,9 +1064,9 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2022/03/17/The-Righteous-Mind/">
|
||||
<a href="/2023/09/28/Bill-Heavey-Jerkey-What-Did-I-Just-Eat/">
|
||||
<h1 class="post-title">
|
||||
The Righteous Mind
|
||||
If You Didn't Bring Jerky, What Did I Just Eat?
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
@@ -737,12 +1076,12 @@
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2022-03-18T01:31:56.000Z">
|
||||
<time datetime="2023-09-28T20:34:33.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2022-03-17</span>
|
||||
<span>2023-09-28</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -762,14 +1101,14 @@
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Leadership/"
|
||||
href="/categories/Outdoors/"
|
||||
class="post-meta-link">
|
||||
Leadership
|
||||
Outdoors
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2022/03/17/The-Righteous-Mind/">Read Details </a>
|
||||
<a href="/2023/09/28/Bill-Heavey-Jerkey-What-Did-I-Just-Eat/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -790,6 +1129,18 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/page/4/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
@@ -809,23 +1160,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -856,6 +1207,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -881,7 +1284,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1391
page/4/index.html
Normal file
172
tags/index.html
@@ -226,14 +226,6 @@
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/consulting"
|
||||
class="navbar-menu-item">
|
||||
|
||||
Consulting
|
||||
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="navbar-menu-item">
|
||||
@@ -294,12 +286,12 @@
|
||||
alt="author avatar">
|
||||
|
||||
<p class="author-name">Andrew Kesterson</p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://source.starfort.tech/andrew">Source Code</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
|
||||
<div class="author-message">
|
||||
<a
|
||||
class="author-posts-count"
|
||||
href="/archives">
|
||||
<span>24</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -338,10 +330,24 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">9</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Faith/">
|
||||
<div class="categories-list-item">
|
||||
Faith
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">16</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -352,10 +358,10 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Philosophy/">
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">2</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -380,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Current-Events/">
|
||||
<div class="categories-list-item">
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">3</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -436,6 +428,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -461,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -611,23 +655,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-23</div>
|
||||
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-19</div>
|
||||
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/Be-Yourself/"><div class="recent-posts-item-content">Just Be Yourself ... Whoever that is</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-16</div>
|
||||
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-30</div>
|
||||
<a href="/2026/06/30/You-Cant-Go-Home-Again/"><div class="recent-posts-item-content">You Cant Go Home Again</div></a>
|
||||
</div>
|
||||
|
||||
<div class="recent-posts-item">
|
||||
<div class="recent-posts-item-title">2026-01-10</div>
|
||||
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
|
||||
<div class="recent-posts-item-title">2026-06-27</div>
|
||||
<a href="/2026/06/27/Devlog-20260627/"><div class="recent-posts-item-content">Devlog Entry - 27 June 2026</div></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -658,6 +702,58 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -683,7 +779,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">7</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||