Files
www.aklabs.net/now/index.html

901 lines
22 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>Current Plans and Recent Updates</title>
<meta
property="og:title"
content="Current Plans and Recent Updates">
<meta
property="og:url"
content="https://aklabs.net/now/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>
// 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;
} 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;
} 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();
}
};
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>18</span>
<span>Posts</span>
</a>
<a
class="author-categories-count"
href="/categories">
<span>8</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">13</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/Technology/">
<div class="categories-list-item">
Technology
<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">7</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/History/">
<div class="categories-list-item">
History
<span class="categories-list-item-badge">1</span>
</div>
</a>
<a href="/categories/Liberal-Education/">
<div class="categories-list-item">
Liberal-Education
<span class="categories-list-item-badge">1</span>
</div>
</a>
</div>
</div>
</article>
<article class="card card-content tags-widget">
<div class="tags-card">
<div class="tags-header">
<i
class="iconfont icon-biaoqian"
style="padding-right: 2px;">
</i>hot tags
</div>
<div class="tags-list">
</div>
</div>
</article>
<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">1</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">
<article class="card card-content">
<header>
<h1 class="post-title">
Current Plans and Recent Updates
</h1>
</header>
<div class="post-meta post-show-meta">
<time datetime="2026-01-06T02:51:05.027Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-06</span>
</time>
<span class="dot"></span>
<span>180 words</span>
</div>
</header>
<div
id="section"
class="post-content">
<p>To review the history of my <code>~/.plan</code> file and see progress over time, you can see <a target="_blank" rel="noopener" href="https://github.com/akesterson/akesterson.github.io/commits/main/now/index.html">the history on github</a>.</p>
<h2 id="Progress-Since-Last-Update"><a href="#Progress-Since-Last-Update" class="headerlink" title="Progress Since Last Update"></a>Progress Since Last Update</h2><ul>
<li><p><input checked="" disabled="" type="checkbox">
Patched libsdlerror (which is now renamed to <a target="_blank" rel="noopener" href="https://github.com/akesterson/libakerror">libakerror</a>) to remove the dependency on SDL, support user defined logging backends, make the usage of stdlib optional (to better support embedding), and improve the README. <a target="_blank" rel="noopener" href="https://github.com/akesterson/libakerror/commit/cf0f2bbeacb1a3124702f13474c268a5a9dff4f8">See the diff here</a></p>
</li>
<li><p><input checked="" disabled="" type="checkbox">
Started a fork of <a target="_blank" rel="noopener" href="https://github.com/akesterson/py-synologydsm-api">py-synologydsm-api</a> to implement the various <code>SYNO.Cal.*</code> APIs necessary to fetch Calendar and Event objects. (See the WIP here](<a target="_blank" rel="noopener" href="https://github.com/akesterson/py-synologydsm-api/pull/1">https://github.com/akesterson/py-synologydsm-api/pull/1</a>)) Very primitive enumeration is working. Needs some more work before its useful for my purposes, lots more work before its suitable for contribution back upstream.</p>
</li>
</ul>
<h2 id="Next-Plans"><a href="#Next-Plans" class="headerlink" title="Next Plans"></a>Next Plans</h2><!-- personal .plan here -->
<ul>
<li>Write an article about <a target="_blank" rel="noopener" href="https://github.com/akesterson/libakerror">libakerror</a> explaining why this kind of error handling is useful in C</li>
<li>Implement <a target="_blank" rel="noopener" href="https://github.com/akesterson/py-synologydsm-api">py-synologydsm-api</a> SYNO.Cal event filtering by calendar ID and filtering by date (only show me events in the future)</li>
</ul>
<h1 id="Musings"><a href="#Musings" class="headerlink" title="Musings"></a>Musings</h1><!-- musings here -->
<blockquote>
<p>Isnt it nice that people who prefer Los Angeles to San Francisco live there?<br> Herb Caen</p>
</blockquote>
</div>
<div>
</div>
</article>
<div class="nav">
</div>
<div
class="card card-content toc-card"
id="mobiletoc">
<div class="toc-header">
<i
class="iconfont icon-menu"
style="padding-right: 2px;">
</i>TOC
</div>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Progress-Since-Last-Update"><span class="toc-text">Progress Since Last Update</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Next-Plans"><span class="toc-text">Next Plans</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#Musings"><span class="toc-text">Musings</span></a>
</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-06</div>
<a href="/2026/01/06/Single-Pane-of-Glass/"><div class="recent-posts-item-content">Single Pane of Glass</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2025-01-04</div>
<a href="/2025/01/04/Socrates-got-a-raw-deal/"><div class="recent-posts-item-content">Socrates got a raw deal</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2024-03-08</div>
<a href="/2024/03/08/new-manager-pt3/"><div class="recent-posts-item-content">Advice for New Managers : Part 3</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2024-03-05</div>
<a href="/2024/03/05/new-manager-pt2/"><div class="recent-posts-item-content">Advice for New Managers : Part 2</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">1</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 ©
2024
-
2026
</span>
&nbsp;
<a
href="/"
class="footer-link">
AKLabs
</a>
</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>