Files
www.aklabs.net/index.html

1462 lines
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>AKLabs</title>
<meta
property="og:title"
content="AKLabs">
<meta
property="og:url"
content="https://aklabs.net/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="/consulting"
class="navbar-menu-item">
Consulting
</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://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
<div class="author-message">
<a
class="author-posts-count"
href="/archives">
<span>24</span>
<span>Posts</span>
</a>
<a
class="author-categories-count"
href="/categories">
<span>11</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">1</span>
</div>
</a>
<a href="/categories/Leadership/">
<div class="categories-list-item">
Leadership
<span class="categories-list-item-badge">8</span>
</div>
</a>
<a href="/categories/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">7</span>
</div>
</a>
<a href="/categories/Current-Events/">
<div class="categories-list-item">
Current-Events
<span class="categories-list-item-badge">2</span>
</div>
</a>
<a href="/categories/Technology/Current-Events/">
<div class="categories-list-item">
Technology/Current-Events
<span class="categories-list-item-badge">1</span>
</div>
</a>
<a href="/categories/Technology/Current-Events/Philosophy/">
<div class="categories-list-item">
Technology/Current-Events/Philosophy
<span class="categories-list-item-badge">1</span>
</div>
</a>
</div>
</div>
</article>
<article class="card card-content tags-widget">
<div class="tags-card">
<div class="tags-header">
<i
class="iconfont icon-biaoqian"
style="padding-right: 2px;">
</i>hot tags
</div>
<div class="tags-list">
</div>
</div>
</article>
<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">7</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">
<article class="card card-content">
<a href="/2026/01/23/News-2026-Week-3/">
<h1 class="post-title">
News - 2026 - Week 3
</h1>
</a>
<div class="card-excerpt">
Heres my thoughts on news across the internet this week. Its worth what you paid for it.
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2026-01-23T12:00:51.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-23</span>
</time>
<span class="dot"></span>
<a
href="/categories/Technology/Current-Events/Philosophy/"
class="post-meta-link">
Technology/Current-Events/Philosophy
</a>
</div>
<a href="/2026/01/23/News-2026-Week-3/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2026/01/19/This-Old-Tool-cmdarg/">
<h1 class="post-title">
This Old Tool : cmdarg
</h1>
</a>
<div class="card-excerpt">
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2026-01-19T19:37:26.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-19</span>
</time>
<span class="dot"></span>
<a
href="/categories/Technology/"
class="post-meta-link">
Technology
</a>
</div>
<a href="/2026/01/19/This-Old-Tool-cmdarg/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2026/01/16/News-2026-Week-2/">
<h1 class="post-title">
News-2026-Week-2
</h1>
</a>
<div class="card-excerpt">
Here are my thoughts on news across the internet this week. We touch on rent denialism, collapsing job markets, co...
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2026-01-16T15:24:09.041Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-16</span>
</time>
<span class="dot"></span>
<a
href="/categories/Books/"
class="post-meta-link">
Books
</a>
<a
href="/categories/Leadership/"
class="post-meta-link">
Leadership
</a>
<a
href="/categories/Technology/"
class="post-meta-link">
Technology
</a>
<a
href="/categories/Current-Events/"
class="post-meta-link">
Current-Events
</a>
</div>
<a href="/2026/01/16/News-2026-Week-2/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2026/01/10/libakerror/">
<h1 class="post-title">
libakerror
</h1>
</a>
<div class="card-excerpt">
Id like to present a C library I wrote for exception style error handling in C code, why I wrote it, and why I pr...
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2026-01-11T03:11:25.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-10</span>
</time>
<span class="dot"></span>
<a
href="/categories/Technology/"
class="post-meta-link">
Technology
</a>
</div>
<a href="/2026/01/10/libakerror/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2026/01/08/News-2026-Week-1/">
<h1 class="post-title">
News - 2026 - Week 1
</h1>
</a>
<div class="card-excerpt">
Here are my thoughts on the news this week. Its worth what you paid for it.
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2026-01-09T03:11:25.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-08</span>
</time>
<span class="dot"></span>
<a
href="/categories/Technology/"
class="post-meta-link">
Technology
</a>
<a
href="/categories/Current-Events/"
class="post-meta-link">
Current-Events
</a>
</div>
<a href="/2026/01/08/News-2026-Week-1/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2026/01/06/Smart-LEGO/">
<h1 class="post-title">
Smart LEGO
</h1>
</a>
<div class="card-excerpt">
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2026-01-07T03:11:25.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-06</span>
</time>
<span class="dot"></span>
<a
href="/categories/Technology/"
class="post-meta-link">
Technology
</a>
</div>
<a href="/2026/01/06/Smart-LEGO/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2026/01/04/Single-Pane-of-Glass/">
<h1 class="post-title">
Single Pane of Glass
</h1>
</a>
<div class="card-excerpt">
There are too many ways of doing the same shit across too many different mediums and platforms
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2026-01-05T03:11:25.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-04</span>
</time>
<span class="dot"></span>
<a
href="/categories/Technology/"
class="post-meta-link">
Technology
</a>
</div>
<a href="/2026/01/04/Single-Pane-of-Glass/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2025/01/04/Socrates-got-a-raw-deal/">
<h1 class="post-title">
Socrates got a raw deal
</h1>
</a>
<div class="card-excerpt">
If you dont know already, Socrates was a Greek philosopher...
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2025-01-04T20:06:30.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2025-01-04</span>
</time>
<span class="dot"></span>
<a
href="/categories/Books/"
class="post-meta-link">
Books
</a>
<a
href="/categories/Philosophy/"
class="post-meta-link">
Philosophy
</a>
<a
href="/categories/History/"
class="post-meta-link">
History
</a>
<a
href="/categories/Liberal-Education/"
class="post-meta-link">
Liberal-Education
</a>
</div>
<a href="/2025/01/04/Socrates-got-a-raw-deal/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2024/03/08/new-manager-pt3/">
<h1 class="post-title">
Advice for New Managers : Part 3
</h1>
</a>
<div class="card-excerpt">
Welcome back to my series of advice for new managers. In the previous post,
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2024-03-08T05:10:28.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2024-03-08</span>
</time>
<span class="dot"></span>
<a
href="/categories/Leadership/"
class="post-meta-link">
Leadership
</a>
</div>
<a href="/2024/03/08/new-manager-pt3/">Read Details </a>
</div>
</article>
</div>
<div class="card">
<article class="card card-content">
<a href="/2024/03/05/new-manager-pt2/">
<h1 class="post-title">
Advice for New Managers : Part 2
</h1>
</a>
<div class="card-excerpt">
Welcome back to my series of advice for new managers. In the previous post,
</div>
<div class="card-post-footer">
<div class="post-meta">
<time datetime="2024-03-05T17:10:28.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2024-03-05</span>
</time>
<span class="dot"></span>
<a
href="/categories/Leadership/"
class="post-meta-link">
Leadership
</a>
</div>
<a href="/2024/03/05/new-manager-pt2/">Read Details </a>
</div>
</article>
</div>
<div class="nav">
<div class="nav-item-next">
<a
href="/page/2/"
class="nav-link">
<div>
<div class="nav-label">Next</div>
</div>
<i class="iconfont icon-right nav-next-icon"></i>
</a>
</div>
</div>
</main>
<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-01-23</div>
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-19</div>
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-16</div>
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-10</div>
<a href="/2026/01/10/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
</div>
</div>
</div>
</article>
<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">7</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>
&nbsp;
<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">
&nbsp;Hexo
</a>
<span>&nbsp;|&nbsp;</span>
Theme -
<a
href="https://github.com/theme-kaze"
class="footer-link"
target="_blank"
rel="nofollow noopener noreferrer">
&nbsp;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>