AudioBookshelf with Kobo sync bridge

Another thread I was following closely, is an open source alternative to Kindle’s whispersync. Combination of Audiobookshelf + Kobo reader can give you the same experience provided there is a sync service between them :)

And it was implemented recently, and is actively maintained still!

https://github.com/advplyr/audiobookshelf/issues/189#issuecomment-3575012992

https://github.com/J-Lich/abs-kosync-bridge

January 7, 2026

onMessage callback can return Promise in Chrome

I enjoy following threads on bug trackers, here is one that got fixed recently :)

this was possible in FF but not in Chrome until recently.

  chrome.runtime.onMessage.addListener(async (msg) => {
    const res = await someAsyncFunction();
    return res;
  });

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage

https://issues.chromium.org/issues/40753031

https://github.com/w3c/webextensions/issues/338

January 7, 2026

explicit eventloop factory in python3.13

https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.EventLoop

An alias to the most efficient available subclass of AbstractEventLoop for the given platform.

Before 3.13 can be implemented with:

import asyncio
import selectors

loop = asyncio.SelectorEventLoop(selectors.SelectSelector())

EventLoop came with deprecation of the policy based event loop selection: https://docs.python.org/3/library/asyncio-policy.html#asyncio-policies

January 6, 2026

debugging async python be like

while True:
    breakpoint()
    await asyncio.sleep(1)

re-enter into debugger after giving asyncio time to execute tasks.

Other discussions:

January 6, 2026

Alzheimer's , sleep and metabolism

October 27, 2025

sqlite indexing and query performance

Recommended course: https://highperformancesqlite.com/

https://emschwartz.me/subtleties-of-sqlite-indexes/

hn

September 29, 2025

Observation: quality is perceived with friction

We excel at things that bring us strong feedback - the innate feeling of quality, or a feeling of friction when the quality is not high enough. Therefore, ironically, it seems, that we excel at things that “irritate” us most.

June 14, 2025

June 6, 2025

Observation: the music we consider classics enters public domain at around the time we stop receiving student prices for streaming services .

May 31, 2025

Engineers and Engineering companies

However, there are two ways of interacting with an abstraction layer: as shorthand for an understanding of what it is doing on your behalf, or as a black box. I think engineers are most capable and most effective when abstraction layers serve as shorthand rather than a black box.

For instance, sometimes we create abstraction layers that allow people to create things on top of them explicitly without having to understand anything beneath them. We call those “platforms.” The expectation is that when we create abstraction layers like that, we should see an explosion of creativity

As we’ve made it easier to build games, we have certainly seen more of them. But the number of highly rated games (in this case as recorded by metacritic) does not seem to be increasing over time.

I think we can only truly create when we truly understand what we have to create with.

The qualities that make a good engineer are often the same ones that create a good engineering organization. Both start with deep understanding as the basis for innovation – cultivating the curiosity to look inside the black boxes.

https://moxie.org/2024/09/23/a-good-engineer.html

May 11, 2025