Compare commits
16 Commits
ef2b8bea43
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| c7eceb0055 | |||
| 27886b6cae | |||
| 62c4bf9be4 | |||
| 041489aac2 | |||
|
c34d0591fe
|
|||
|
a0a881a392
|
|||
|
b8217dd611
|
|||
|
357e5630a1
|
|||
|
37105e03fb
|
|||
|
dd3aad498f
|
|||
| fc5c467a43 | |||
| 223240947b | |||
| 2cfebc971e | |||
| 0cdbaf4f6c | |||
|
afca7f462c
|
|||
|
74e2a03567
|
@@ -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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -553,23 +553,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -565,23 +565,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -559,23 +559,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -562,23 +562,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -565,23 +565,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -566,23 +566,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -567,23 +567,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -565,23 +565,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -566,23 +566,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -559,23 +559,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -582,23 +582,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -568,23 +568,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -559,23 +559,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -593,23 +593,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -606,23 +606,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -622,23 +622,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -596,23 +596,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -308,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -364,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>
|
||||
|
||||
@@ -378,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -406,20 +420,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -450,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;">
|
||||
@@ -583,23 +583,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -565,23 +565,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -625,23 +625,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -474,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>
|
||||
@@ -771,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>
|
||||
|
||||
@@ -1155,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>
|
||||
@@ -1223,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-02-23</div>
|
||||
<a href="/2026/02/23/Why-Firefighting/"><div class="recent-posts-item-content">Why Firefighting</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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
|
||||
@@ -304,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>28</span>
|
||||
<span>34</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -363,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>
|
||||
|
||||
@@ -377,7 +377,7 @@
|
||||
<a href="/categories/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<span class="categories-list-item-badge">5</span>
|
||||
<span class="categories-list-item-badge">7</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -405,14 +405,14 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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">5</span>
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -600,23 +600,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -501,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>
|
||||
@@ -629,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>
|
||||
@@ -703,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>
|
||||
@@ -756,23 +756,23 @@ Options:
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,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;">
|
||||
@@ -624,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-02-23</div>
|
||||
<a href="/2026/02/23/Why-Firefighting/"><div class="recent-posts-item-content">Why Firefighting</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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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-25">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-25">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-25T13:57:43.000Z">
|
||||
<time datetime="2026-01-25T08:57:43.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -645,23 +645,23 @@ Thus spake the Master Programmer:<br/><br/>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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-30">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-31">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-01-31T01:39:17.000Z">
|
||||
<time datetime="2026-01-30T20:39:17.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -656,23 +656,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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-02-09">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-02-09">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-02-09T11:34:21.000Z">
|
||||
<time datetime="2026-02-09T06:34:21.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -610,23 +610,23 @@ technology 0
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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-02-23">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-03-25">
|
||||
content="2026-06-30">
|
||||
<meta
|
||||
property="og:article:author"
|
||||
content="Andrew Kesterson">
|
||||
@@ -304,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -360,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>
|
||||
|
||||
@@ -374,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -402,20 +416,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -446,7 +446,7 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-02-24T03:40:28.000Z">
|
||||
<time datetime="2026-02-23T22:40:28.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
@@ -620,6 +620,20 @@ technology 0
|
||||
</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
|
||||
@@ -676,23 +690,23 @@ technology 0
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
|
||||
878
2026/05/15/Devlog-20260518/index.html
Normal file
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
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
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
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
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
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
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
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
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
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
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
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
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
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>
|
||||
136
about/index.html
136
about/index.html
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -590,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>
|
||||
|
||||
|
||||
@@ -715,23 +751,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -778,6 +814,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -803,7 +875,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -659,23 +695,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -722,6 +758,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -747,7 +819,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -691,23 +727,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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 +790,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -779,7 +851,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -659,23 +695,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -722,6 +758,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -747,7 +819,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -707,23 +743,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -770,6 +806,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -795,7 +867,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -659,23 +695,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -722,6 +758,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -747,7 +819,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -691,23 +727,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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 +790,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -779,7 +851,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -657,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">
|
||||
@@ -755,23 +775,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -818,6 +838,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -843,7 +899,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -643,23 +679,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -706,6 +742,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -731,7 +803,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1061
archives/2026/05/index.html
Normal file
1061
archives/2026/05/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1157
archives/2026/06/index.html
Normal file
1157
archives/2026/06/index.html
Normal file
File diff suppressed because it is too large
Load Diff
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -596,106 +632,10 @@
|
||||
<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-date">2026-06-30</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-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 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>
|
||||
</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>
|
||||
@@ -708,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>
|
||||
@@ -724,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>
|
||||
@@ -740,12 +680,108 @@
|
||||
<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>
|
||||
</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-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>
|
||||
@@ -788,23 +824,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -851,6 +887,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -876,7 +948,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +629,150 @@
|
||||
<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-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-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 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>
|
||||
</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-10</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/10/libakerror/"
|
||||
class="archive-timeline-post-item">
|
||||
libakerror
|
||||
</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-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/08/News-2026-Week-1/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 1
|
||||
</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-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">
|
||||
@@ -644,23 +824,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -707,6 +887,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -732,7 +948,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -596,106 +632,10 @@
|
||||
<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-date">2026-06-30</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-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 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>
|
||||
</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>
|
||||
@@ -708,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>
|
||||
@@ -724,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>
|
||||
@@ -740,12 +680,108 @@
|
||||
<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>
|
||||
</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-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>
|
||||
@@ -788,23 +824,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -851,6 +887,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -876,7 +948,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +629,150 @@
|
||||
<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-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-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 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>
|
||||
</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-10</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/10/libakerror/"
|
||||
class="archive-timeline-post-item">
|
||||
libakerror
|
||||
</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-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/08/News-2026-Week-1/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 1
|
||||
</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-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">
|
||||
@@ -608,159 +788,6 @@
|
||||
</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
|
||||
</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-03-05</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/03/05/new-manager-pt2/"
|
||||
class="archive-timeline-post-item">
|
||||
Advice for New Managers : Part 2
|
||||
</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-03-03</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/03/03/new-manager-pt1/"
|
||||
class="archive-timeline-post-item">
|
||||
Advice for New Managers : Part 1
|
||||
</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-02-09</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/02/09/expectations/"
|
||||
class="archive-timeline-post-item">
|
||||
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>
|
||||
|
||||
<div class="nav">
|
||||
@@ -809,23 +836,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -872,6 +899,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -897,7 +960,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -590,9 +626,159 @@
|
||||
|
||||
|
||||
|
||||
<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
|
||||
</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-03-05</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/03/05/new-manager-pt2/"
|
||||
class="archive-timeline-post-item">
|
||||
Advice for New Managers : Part 2
|
||||
</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-03-03</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/03/03/new-manager-pt1/"
|
||||
class="archive-timeline-post-item">
|
||||
Advice for New Managers : Part 1
|
||||
</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-02-09</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2024/02/09/expectations/"
|
||||
class="archive-timeline-post-item">
|
||||
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">
|
||||
@@ -608,121 +794,6 @@
|
||||
</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-24</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/09/24/How-Should-We-Then-Live/"
|
||||
class="archive-timeline-post-item">
|
||||
How Should We Then Live
|
||||
</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-12</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2023/09/12/Christianity-First-3000-Years/"
|
||||
class="archive-timeline-post-item">
|
||||
Christianity: The First 3000 Years
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</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">2022-10-15</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/10/15/Live-Not-By-Lies/"
|
||||
class="archive-timeline-post-item">
|
||||
Live Not By Lies
|
||||
</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-05-19</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/05/19/Jesus-Outside-the-Lines/"
|
||||
class="archive-timeline-post-item">
|
||||
Jesus Outside the Lines
|
||||
</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-05-04</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/05/04/American-Prison/"
|
||||
class="archive-timeline-post-item">
|
||||
American Prison
|
||||
</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-05-02</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/05/02/The-Hero-Code/"
|
||||
class="archive-timeline-post-item">
|
||||
The Hero Code
|
||||
</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-03-17</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2022/03/17/The-Righteous-Mind/"
|
||||
class="archive-timeline-post-item">
|
||||
The Righteous Mind
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="nav">
|
||||
@@ -740,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>
|
||||
@@ -759,23 +842,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -822,6 +905,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -847,7 +966,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1161
archives/page/4/index.html
Normal file
1161
archives/page/4/index.html
Normal file
File diff suppressed because it is too large
Load Diff
475
atom.xml
475
atom.xml
@@ -6,7 +6,7 @@
|
||||
<link href="https://aklabs.net/atom.xml" rel="self"/>
|
||||
|
||||
<link href="https://aklabs.net/"/>
|
||||
<updated>2026-03-25T12:14:48.503Z</updated>
|
||||
<updated>2026-06-30T19:59:55.937Z</updated>
|
||||
<id>https://aklabs.net/</id>
|
||||
|
||||
<author>
|
||||
@@ -16,12 +16,201 @@
|
||||
|
||||
<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-24T03:40:28.000Z</published>
|
||||
<updated>2026-03-25T12:14:48.503Z</updated>
|
||||
<published>2026-02-23T22:40:28.000Z</published>
|
||||
<updated>2026-06-30T19:59:55.939Z</updated>
|
||||
|
||||
|
||||
|
||||
@@ -43,8 +232,8 @@
|
||||
<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-09T11:34:21.000Z</published>
|
||||
<updated>2026-02-09T12:09:07.329Z</updated>
|
||||
<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>
|
||||
@@ -62,8 +251,8 @@
|
||||
<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-31T01:39:17.000Z</published>
|
||||
<updated>2026-01-31T17:20:03.149Z</updated>
|
||||
<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>
|
||||
@@ -83,8 +272,8 @@
|
||||
<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-25T13:57:43.000Z</published>
|
||||
<updated>2026-01-25T15:57:34.000Z</updated>
|
||||
<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>
|
||||
@@ -102,8 +291,8 @@
|
||||
<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>
|
||||
@@ -123,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>
|
||||
|
||||
|
||||
|
||||
@@ -142,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>
|
||||
@@ -188,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>
|
||||
@@ -207,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>
|
||||
|
||||
|
||||
|
||||
@@ -230,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>
|
||||
@@ -243,225 +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>
|
||||
|
||||
</feed>
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -596,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>
|
||||
@@ -800,23 +836,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -863,6 +899,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -888,7 +960,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -692,23 +728,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -755,6 +791,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -780,7 +852,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,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-06-30</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/30/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">
|
||||
<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">
|
||||
@@ -641,22 +709,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">
|
||||
@@ -691,23 +743,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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 +806,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -779,7 +867,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -590,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>
|
||||
|
||||
|
||||
@@ -710,23 +765,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -773,6 +828,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -798,7 +889,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -596,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>
|
||||
@@ -745,23 +781,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -808,6 +844,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -833,7 +905,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -627,23 +663,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -690,6 +726,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +787,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +629,70 @@
|
||||
<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">
|
||||
@@ -694,23 +794,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -757,6 +857,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -782,7 +918,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,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/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">
|
||||
<div class="archive-timeline-post-date">2026-06-27</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/06/27/Devlog-20260627/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry - 27 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-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-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/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 class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
@@ -640,116 +788,21 @@
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav">
|
||||
|
||||
|
||||
<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/"
|
||||
class="archive-timeline-post-item">
|
||||
News-2026-Week-2
|
||||
</a>
|
||||
</div>
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/categories/Technology/page/2/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</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-10</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/10/libakerror/"
|
||||
class="archive-timeline-post-item">
|
||||
libakerror
|
||||
</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-08</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/08/News-2026-Week-1/"
|
||||
class="archive-timeline-post-item">
|
||||
News - 2026 - Week 1
|
||||
</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-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">2026-01-04</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/01/04/Single-Pane-of-Glass/"
|
||||
class="archive-timeline-post-item">
|
||||
Single Pane of Glass
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -771,23 +824,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -834,6 +887,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -859,7 +948,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1142
categories/Technology/page/2/index.html
Normal file
1142
categories/Technology/page/2/index.html
Normal file
File diff suppressed because it is too large
Load Diff
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -590,7 +626,7 @@
|
||||
Categories
|
||||
</div>
|
||||
<div>
|
||||
Total 28 posts
|
||||
Total 37 posts
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-content categories-page-card">
|
||||
@@ -606,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"
|
||||
@@ -613,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>
|
||||
|
||||
@@ -629,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 5 posts
|
||||
Total 6 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@@ -672,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 10 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 5 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
@@ -712,23 +748,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -775,6 +811,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -800,7 +872,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</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
|
||||
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -590,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;">
|
||||
@@ -676,23 +712,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -739,6 +775,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -764,7 +836,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
BIN
images/posts/carrying-that-weight/spike-and-vicious.jpg
Normal file
BIN
images/posts/carrying-that-weight/spike-and-vicious.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 72 KiB |
BIN
images/posts/devlog-20260608/mapphysicsproperties.png
Normal file
BIN
images/posts/devlog-20260608/mapphysicsproperties.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
BIN
images/posts/devlog-20260618/embeddedexpensivebutfun.gif
Normal file
BIN
images/posts/devlog-20260618/embeddedexpensivebutfun.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 585 KiB |
796
index.html
796
index.html
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -586,320 +622,7 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/02/23/Why-Firefighting/">
|
||||
<h1 class="post-title">
|
||||
Why Firefighting
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-02-24T03: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>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/02/23/Why-Firefighting/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/02/09/News-2026-Week-5/">
|
||||
<h1 class="post-title">
|
||||
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="2026-02-09T11: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>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/02/09/News-2026-Week-5/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/30/News-2026-Week-4/">
|
||||
<h1 class="post-title">
|
||||
News - 2026 - Week 4
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
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="2026-01-31T01: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>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/25/Two-kinds-of-programmers/">
|
||||
<h1 class="post-title">
|
||||
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="2026-01-25T13: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>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/25/Two-kinds-of-programmers/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
@@ -911,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>
|
||||
|
||||
|
||||
@@ -939,29 +662,29 @@
|
||||
</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>
|
||||
|
||||
|
||||
<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>
|
||||
@@ -969,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>
|
||||
|
||||
|
||||
@@ -1004,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>
|
||||
@@ -1012,25 +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>
|
||||
<span>2026-06-23</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -1039,9 +848,18 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Philosophy/"
|
||||
class="post-meta-link">
|
||||
Philosophy
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
@@ -1057,7 +875,7 @@
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/08/News-2026-Week-1/">Read Details </a>
|
||||
<a href="/2026/06/23/News-2026-Week-26/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -1065,24 +883,24 @@
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/06/Smart-LEGO/">
|
||||
<a href="/2026/06/18/Devlog-20260618/">
|
||||
<h1 class="post-title">
|
||||
Smart LEGO
|
||||
Devlog Entry - 18 June 2026
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
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="2026-01-07T03:11:25.000Z">
|
||||
<time datetime="2026-06-18T16:47:16.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-06</span>
|
||||
<span>2026-06-18</span>
|
||||
</time>
|
||||
|
||||
|
||||
@@ -1100,7 +918,189 @@
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/06/Smart-LEGO/">Read Details </a>
|
||||
<a href="/2026/06/18/Devlog-20260618/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/06/08/Carrying-That-Weight/">
|
||||
<h1 class="post-title">
|
||||
Carrying That Weight
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
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="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>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<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>
|
||||
@@ -1140,23 +1140,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -1203,6 +1203,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1228,7 +1264,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
132
links/index.html
132
links/index.html
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -609,23 +645,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -672,6 +708,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -697,7 +769,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
159
now/index.html
159
now/index.html
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -590,17 +626,17 @@
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-04-30T23:19:25.974Z">
|
||||
<time datetime="2026-06-30T19:59:56.002Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-04-30</span>
|
||||
<span>2026-06-30</span>
|
||||
</time>
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
<span>333 words</span>
|
||||
<span>228 words</span>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -608,23 +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>Completed a Support Firefighter academy, graduating several Marion county support firefighters</li>
|
||||
<li>Midway through a Suppression Firefighter academy, getting ready to graduate 3 new suppression firefighters</li>
|
||||
<li>Abandoned the synology DSM API automation efforts. It’s undocumented hot garbage.</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>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>When I was younger, I could remember anything, whether it had happened<br>or not; but my faculties are decaying now and soon I shall be so I<br>cannot remember any but the things that never happened. It is sad to<br>go to pieces like this but we all have to do it.<br> – Mark Twain</p>
|
||||
<p>You will stop at nothing to reach your objective, but only because your<br>brakes are defective.</p>
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
@@ -646,7 +675,7 @@
|
||||
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>
|
||||
@@ -666,23 +695,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -729,6 +758,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -754,7 +819,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
1028
page/2/index.html
1028
page/2/index.html
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1391
page/4/index.html
Normal file
1391
page/4/index.html
Normal file
File diff suppressed because it is too large
Load Diff
132
tags/index.html
132
tags/index.html
@@ -286,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>28</span>
|
||||
<span>37</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -330,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>
|
||||
|
||||
@@ -344,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">5</span>
|
||||
Current-Events
|
||||
<span class="categories-list-item-badge">6</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -372,20 +386,6 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -444,6 +444,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +505,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -619,23 +655,23 @@
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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 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-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 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-30</div>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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-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 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>
|
||||
@@ -682,6 +718,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -707,7 +779,7 @@
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">11</span>
|
||||
<span class="archive-card-list-item-badge">20</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user