Deploying upstream@0835c6d8ae075228e93cbe4beb3cf722b5fff884: Fix Now link to point to starfort
This commit is contained in:
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -552,6 +552,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -567,11 +572,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -564,6 +564,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -579,11 +584,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -558,6 +558,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -573,11 +578,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -561,6 +561,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -576,11 +581,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -564,6 +564,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -579,11 +584,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -565,6 +565,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -580,11 +585,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -566,6 +566,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -581,11 +586,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -564,6 +564,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -579,11 +584,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -565,6 +565,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -580,11 +585,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -558,6 +558,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -573,11 +578,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -581,6 +581,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -596,11 +601,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -567,6 +567,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -582,11 +587,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -558,6 +558,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -573,11 +578,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -592,6 +592,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -607,11 +612,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -605,6 +605,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -620,11 +625,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -621,6 +621,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -636,11 +641,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -595,6 +595,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -610,11 +615,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -409,7 +409,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -582,6 +582,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -597,11 +602,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -564,6 +564,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -579,11 +584,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -624,6 +624,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -639,11 +644,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2026-01-10">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-10">
|
||||
content="2026-05-21">
|
||||
<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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -1222,6 +1222,11 @@ _writeToFile_cleanup<span class="token operator">:</span>
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -1237,11 +1242,6 @@ _writeToFile_cleanup<span class="token operator">:</span>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -599,6 +599,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -614,11 +619,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
content="2026-01-19">
|
||||
<meta
|
||||
property="og:article:modified_time"
|
||||
content="2026-01-19">
|
||||
content="2026-05-21">
|
||||
<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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -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>
|
||||
@@ -755,6 +755,11 @@ Options:
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -770,11 +775,6 @@ Options:
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -623,6 +623,11 @@ Computers simulate determinism; only Tao is perfect."<br/>
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -638,11 +643,6 @@ Computers simulate determinism; only Tao is perfect."<br/>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -644,6 +644,11 @@ Thus spake the Master Programmer:<br/><br/>
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -659,11 +664,6 @@ Thus spake the Master Programmer:<br/><br/>
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -655,6 +655,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -670,11 +675,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -609,6 +609,11 @@ technology 0
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -624,11 +629,6 @@ technology 0
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -405,7 +405,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -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 </div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
@@ -675,6 +689,11 @@ technology 0
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -690,11 +709,6 @@ technology 0
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
864
2026/05/15/Devlog-20260518/index.html
Normal file
864
2026/05/15/Devlog-20260518/index.html
Normal file
@@ -0,0 +1,864 @@
|
||||
<!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</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Devlog Entry">
|
||||
|
||||
|
||||
<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-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-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/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/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<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/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>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">11</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>
|
||||
|
||||
<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
|
||||
</h1>
|
||||
</header>
|
||||
<div class="post-meta post-show-meta">
|
||||
<time datetime="2026-05-16T02: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-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-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 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>
|
||||
|
||||
</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>
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -714,6 +718,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -729,11 +738,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -794,6 +798,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -803,7 +811,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -658,6 +662,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -673,11 +682,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -738,6 +742,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -747,7 +755,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -690,6 +694,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -705,11 +714,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -770,6 +774,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -779,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -658,6 +662,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -673,11 +682,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -738,6 +742,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -747,7 +755,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -706,6 +710,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -721,11 +730,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -786,6 +790,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -795,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -658,6 +662,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -673,11 +682,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -738,6 +742,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -747,7 +755,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -690,6 +694,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -705,11 +714,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -770,6 +774,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -779,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -754,6 +758,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -769,11 +778,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -834,6 +838,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -843,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -642,6 +646,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -657,11 +666,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -722,6 +726,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -731,7 +739,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
981
archives/2026/05/index.html
Normal file
981
archives/2026/05/index.html
Normal file
@@ -0,0 +1,981 @@
|
||||
<!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>Archive</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Archive">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/archives/2026/05/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
|
||||
<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="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">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/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<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/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>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">11</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>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
<article class="card card-content widescreen-archive archive-widget">
|
||||
<div class="archive-card">
|
||||
<div class="archive-card-header">
|
||||
<i
|
||||
class="iconfont icon-wodebaobiao"
|
||||
style="padding-right: 2px;">
|
||||
</i>Archive
|
||||
</div>
|
||||
<div class="archive-card-list">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2025"
|
||||
class="archive-card-list-item">
|
||||
2025
|
||||
<span class="archive-card-list-item-badge">1</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2024"
|
||||
class="archive-card-list-item">
|
||||
2024
|
||||
<span class="archive-card-list-item-badge">5</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2023"
|
||||
class="archive-card-list-item">
|
||||
2023
|
||||
<span class="archive-card-list-item-badge">6</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2022"
|
||||
class="archive-card-list-item">
|
||||
2022
|
||||
<span class="archive-card-list-item-badge">5</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<div class="card card-content">
|
||||
<h1 class="widget-title">Archive</h1>
|
||||
</div>
|
||||
<div class="archive-timeline">
|
||||
|
||||
|
||||
|
||||
<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-05-15</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
|
||||
<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-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 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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="archive-card">
|
||||
<div class="archive-card-header">
|
||||
<i
|
||||
class="iconfont icon-wodebaobiao"
|
||||
style="padding-right: 2px;">
|
||||
</i>Archive
|
||||
</div>
|
||||
<div class="archive-card-list">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2025"
|
||||
class="archive-card-list-item">
|
||||
2025
|
||||
<span class="archive-card-list-item-badge">1</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2024"
|
||||
class="archive-card-list-item">
|
||||
2024
|
||||
<span class="archive-card-list-item-badge">5</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2023"
|
||||
class="archive-card-list-item">
|
||||
2023
|
||||
<span class="archive-card-list-item-badge">6</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2022"
|
||||
class="archive-card-list-item">
|
||||
2022
|
||||
<span class="archive-card-list-item-badge">5</span>
|
||||
</a>
|
||||
|
||||
</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 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>
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +597,22 @@
|
||||
<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-05-15</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
@@ -736,22 +756,6 @@
|
||||
</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>
|
||||
|
||||
<div class="nav">
|
||||
@@ -787,6 +791,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -802,11 +811,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -867,6 +871,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -876,7 +884,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +597,22 @@
|
||||
<div class="archive-timeline-tag"><span>2026</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-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">
|
||||
@@ -643,6 +663,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -658,11 +683,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -723,6 +743,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -732,7 +756,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +597,22 @@
|
||||
<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-05-15</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
@@ -736,22 +756,6 @@
|
||||
</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>
|
||||
|
||||
<div class="nav">
|
||||
@@ -787,6 +791,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -802,11 +811,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -867,6 +871,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -876,7 +884,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +597,22 @@
|
||||
<div class="archive-timeline-tag"><span>2026</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-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">
|
||||
@@ -745,22 +765,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-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">
|
||||
@@ -808,6 +812,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -823,11 +832,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -888,6 +892,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -897,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +597,22 @@
|
||||
<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-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">
|
||||
@@ -758,6 +778,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -773,11 +798,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -838,6 +858,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -847,7 +871,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
48
atom.xml
48
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-05-21T12:26:00.229Z</updated>
|
||||
<id>https://aklabs.net/</id>
|
||||
|
||||
<author>
|
||||
@@ -16,6 +16,23 @@
|
||||
|
||||
<generator uri="https://hexo.io/">Hexo</generator>
|
||||
|
||||
<entry>
|
||||
<title>Devlog Entry</title>
|
||||
<link href="https://aklabs.net/2026/05/15/Devlog-20260518/"/>
|
||||
<id>https://aklabs.net/2026/05/15/Devlog-20260518/</id>
|
||||
<published>2026-05-16T02:04:50.000Z</published>
|
||||
<updated>2026-05-21T12:26:00.229Z</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/"/>
|
||||
@@ -124,7 +141,7 @@
|
||||
<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>
|
||||
<updated>2026-05-21T12:23:26.994Z</updated>
|
||||
|
||||
|
||||
|
||||
@@ -172,7 +189,7 @@
|
||||
<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>
|
||||
<updated>2026-05-21T12:28:49.565Z</updated>
|
||||
|
||||
|
||||
<summary type="html">A C library I wrote for exception style error handling in C code</summary>
|
||||
@@ -439,29 +456,4 @@
|
||||
|
||||
</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -799,6 +803,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -814,11 +823,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -879,6 +883,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -888,7 +896,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -691,6 +695,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -706,11 +715,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -771,6 +775,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -780,7 +788,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -690,6 +694,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -705,11 +714,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -770,6 +774,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -779,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -709,6 +713,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -724,11 +733,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -789,6 +793,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -798,7 +806,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -744,6 +748,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -759,11 +768,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -824,6 +828,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -833,7 +841,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -626,6 +630,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -641,11 +650,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -706,6 +710,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +723,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -693,6 +697,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -708,11 +717,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -773,6 +777,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -782,7 +790,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -593,6 +597,22 @@
|
||||
<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-05-15</div>
|
||||
<div class="archive-timeline-post-content">
|
||||
<a
|
||||
href="/2026/05/15/Devlog-20260518/"
|
||||
class="archive-timeline-post-item">
|
||||
Devlog Entry
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
@@ -736,20 +756,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-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 class="nav">
|
||||
|
||||
|
||||
<div class="nav-item-next">
|
||||
<a
|
||||
href="/categories/Technology/page/2/"
|
||||
class="nav-link">
|
||||
<div>
|
||||
<div class="nav-label">Next</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<i class="iconfont icon-right nav-next-icon"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -770,6 +791,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -785,11 +811,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -850,6 +871,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -859,7 +884,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
998
categories/Technology/page/2/index.html
Normal file
998
categories/Technology/page/2/index.html
Normal file
@@ -0,0 +1,998 @@
|
||||
<!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>Categories</title>
|
||||
|
||||
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Categories">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://aklabs.net/categories/Technology/page/2/index.html">
|
||||
|
||||
|
||||
<meta
|
||||
property="og:img"
|
||||
content="/images/akesterson.webp">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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">
|
||||
|
||||
|
||||
|
||||
<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="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">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/Philosophy/">
|
||||
<div class="categories-list-item">
|
||||
Philosophy
|
||||
<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/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>
|
||||
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">11</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>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
<article class="card card-content widescreen-archive archive-widget">
|
||||
<div class="archive-card">
|
||||
<div class="archive-card-header">
|
||||
<i
|
||||
class="iconfont icon-wodebaobiao"
|
||||
style="padding-right: 2px;">
|
||||
</i>Archive
|
||||
</div>
|
||||
<div class="archive-card-list">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2025"
|
||||
class="archive-card-list-item">
|
||||
2025
|
||||
<span class="archive-card-list-item-badge">1</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2024"
|
||||
class="archive-card-list-item">
|
||||
2024
|
||||
<span class="archive-card-list-item-badge">5</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2023"
|
||||
class="archive-card-list-item">
|
||||
2023
|
||||
<span class="archive-card-list-item-badge">6</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2022"
|
||||
class="archive-card-list-item">
|
||||
2022
|
||||
<span class="archive-card-list-item-badge">5</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<div class="card card-content category-page-card">
|
||||
<div class="categories-page-title">Categories - Technology</div>
|
||||
</div>
|
||||
<div class="archive-timeline">
|
||||
|
||||
|
||||
|
||||
<div class="archive-timeline-tag"><span>2026</span></div>
|
||||
|
||||
|
||||
<div class="archive-timeline-item">
|
||||
<div class="archive-timeline-post">
|
||||
<div class="card card-content">
|
||||
<div class="archive-timeline-post-date">2026-01-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>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="nav">
|
||||
|
||||
<div class="nav-item-prev">
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="nav-link">
|
||||
<i class="iconfont icon-left nav-prev-icon"></i>
|
||||
<div>
|
||||
<div class="nav-label">Prev</div>
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<aside class="right-column">
|
||||
<div class="sticky-widescreen">
|
||||
|
||||
|
||||
|
||||
<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-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 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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="card card-content">
|
||||
<div class="archive-card">
|
||||
<div class="archive-card-header">
|
||||
<i
|
||||
class="iconfont icon-wodebaobiao"
|
||||
style="padding-right: 2px;">
|
||||
</i>Archive
|
||||
</div>
|
||||
<div class="archive-card-list">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2026"
|
||||
class="archive-card-list-item">
|
||||
2026
|
||||
<span class="archive-card-list-item-badge">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2025"
|
||||
class="archive-card-list-item">
|
||||
2025
|
||||
<span class="archive-card-list-item-badge">1</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2024"
|
||||
class="archive-card-list-item">
|
||||
2024
|
||||
<span class="archive-card-list-item-badge">5</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2023"
|
||||
class="archive-card-list-item">
|
||||
2023
|
||||
<span class="archive-card-list-item-badge">6</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="/archives/2022"
|
||||
class="archive-card-list-item">
|
||||
2022
|
||||
<span class="archive-card-list-item-badge">5</span>
|
||||
</a>
|
||||
|
||||
</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 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>
|
||||
@@ -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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -590,7 +594,7 @@
|
||||
Categories
|
||||
</div>
|
||||
<div>
|
||||
Total 28 posts
|
||||
Total 29 posts
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-content categories-page-card">
|
||||
@@ -679,7 +683,7 @@
|
||||
<span>Technology</span>
|
||||
<span
|
||||
class="categories-page-list-item-total">
|
||||
Total 10 posts
|
||||
Total 11 posts
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@@ -711,6 +715,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -726,11 +735,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -791,6 +795,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -800,7 +808,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -675,6 +679,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -690,11 +699,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -755,6 +759,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -764,7 +772,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
115
index.html
115
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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -583,6 +587,50 @@
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/05/15/Devlog-20260518/">
|
||||
<h1 class="post-title">
|
||||
Devlog Entry
|
||||
</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-16T02: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>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
@@ -1062,49 +1110,6 @@
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/06/Smart-LEGO/">
|
||||
<h1 class="post-title">
|
||||
Smart LEGO
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-07T03:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-06</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/06/Smart-LEGO/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav">
|
||||
|
||||
@@ -1139,6 +1144,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -1154,11 +1164,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -1219,6 +1224,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1228,7 +1237,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -608,6 +612,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -623,11 +632,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -688,6 +692,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -697,7 +705,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -665,6 +669,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -680,11 +689,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -745,6 +749,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -754,7 +762,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -583,6 +587,49 @@
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2026/01/06/Smart-LEGO/">
|
||||
<h1 class="post-title">
|
||||
Smart LEGO
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2026-01-07T03:11:25.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2026-01-06</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Technology/"
|
||||
class="post-meta-link">
|
||||
Technology
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2026/01/06/Smart-LEGO/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
@@ -1016,58 +1063,6 @@
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/10/10/The-Cost-of-Discipleship/">
|
||||
<h1 class="post-title">
|
||||
The Cost of Discipleship
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2023-10-11T00:23:33.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2023-10-10</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2023/10/10/The-Cost-of-Discipleship/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nav">
|
||||
|
||||
@@ -1114,6 +1109,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -1129,11 +1129,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -1194,6 +1189,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1203,7 +1202,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -583,6 +587,58 @@
|
||||
</aside>
|
||||
<main class="main-column">
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
<a href="/2023/10/10/The-Cost-of-Discipleship/">
|
||||
<h1 class="post-title">
|
||||
The Cost of Discipleship
|
||||
</h1>
|
||||
</a>
|
||||
<div class="card-excerpt">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="card-post-footer">
|
||||
<div class="post-meta">
|
||||
<time datetime="2023-10-11T00:23:33.000Z">
|
||||
<i
|
||||
class="iconfont icon-calendar"
|
||||
style="margin-right: 2px;">
|
||||
</i>
|
||||
<span>2023-10-10</span>
|
||||
</time>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="dot"></span>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Books/"
|
||||
class="post-meta-link">
|
||||
Books
|
||||
</a>
|
||||
|
||||
|
||||
<a
|
||||
href="/categories/Faith/"
|
||||
class="post-meta-link">
|
||||
Faith
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<a href="/2023/10/10/The-Cost-of-Discipleship/">Read Details </a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
<article class="card card-content">
|
||||
@@ -1024,6 +1080,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -1039,11 +1100,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -1104,6 +1160,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1113,7 +1173,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">12</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>29</span>
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
<a
|
||||
@@ -375,7 +375,7 @@
|
||||
<a href="/categories/Technology/">
|
||||
<div class="categories-list-item">
|
||||
Technology
|
||||
<span class="categories-list-item-badge">10</span>
|
||||
<span class="categories-list-item-badge">11</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -460,6 +460,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -469,7 +473,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
@@ -618,6 +622,11 @@
|
||||
</div>
|
||||
<div class="recent-posts-list">
|
||||
|
||||
<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>
|
||||
@@ -633,11 +642,6 @@
|
||||
<a href="/2026/01/30/News-2026-Week-4/"><div class="recent-posts-item-content">News - 2026 - Week 4</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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -698,6 +702,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -707,7 +715,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">12</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user