Charl P. Botha ♡ code, data-*, Emacs, running, humans
banner
charlbotha.com
Charl P. Botha ♡ code, data-*, Emacs, running, humans
@charlbotha.com
Enjoyer of programming, data visualization / science / engineering, ML / AI, Emacs (org, evil), PKM, running and other humans.

https://charlbotha.com/

P.S. my extremely personal blog (100s of posts, more than 20 years of life) is at https://cpbotha.net
I took me a while to find a working solution to run #kitty terminal via the "Terminal" feature of #macOS #alfred, so I published it on my #til site. The focus of the effort was actually #zoxide directory jumping from #Alfred, which you might also find helpful:

charlbotha.com/til/zoxide-a...
zoxide and kitty terminal in your Alfred for faster directory navigation on macOS
Today as I was preparing emails with different bunches of attachments for my 2025 financial statements, I looked into faster directory navigation via Finder, so that I could use Dropover more effectiv...
charlbotha.com
September 14, 2025 at 6:08 PM
Reposted by Charl P. Botha ♡ code, data-*, Emacs, running, humans
Thinking about what it must’ve been like to be a fan of Trent Reznor’s new wave bands and then suddenly he comes out with Head Like a Hole and it sounds nothing like this:

www.youtube.com/watch?v=iWcc...
Trent Reznor in Slam Bamboo #1
YouTube video by Scott Hanson
www.youtube.com
September 3, 2025 at 12:55 AM
Reposted by Charl P. Botha ♡ code, data-*, Emacs, running, humans
September 2, 2025 at 8:00 PM
"bitchat location chat. chat with anyone in nearby regions (block/neighborhood/city/region/country). or teleport.

it works by using geohashes to map the world into chat channels, uses a new pseudonym per geohash for privacy, and decentralized relays to propagate (via nostr)."

x.com/jack/status/...
jack on X: "coming very soon to bitchat: location chat. chat with anyone in nearby regions (block/neighborhood/city/region/country). or teleport to anywhere in the world via a geohash. it works by using geohashes to map the world into chat channels, uses a new pseudonym per geohash for https://t.co/96k59tl7TV" / X
coming very soon to bitchat: location chat. chat with anyone in nearby regions (block/neighborhood/city/region/country). or teleport to anywhere in the world via a geohash. it works by using geohashes to map the world into chat channels, uses a new pseudonym per geohash for https://t.co/96k59tl7TV
x.com
August 24, 2025 at 4:25 PM
We don't receive wisdom; we must discover it for ourselves after a journey that no one can take for us or spare us.

Marcel Proust

(via Waking Up)
August 24, 2025 at 7:57 AM
youtube.com/watch?v=-bYp... first few minutes are an entertaining yet informative summary of #Google 's pixel 10 updates
Oh, Snap!
YouTube video by TechLinked
youtube.com
August 23, 2025 at 6:29 PM
I'm using lsd [1] as drop-in replacement for #ls instead of exa [2], as lsd is closer and I can use the same invocations.

The screenshot below shows example output, plus the small config tweaks required to render readably in a light theme.

[1] github.com/lsd-rs/lsd
[2] github.com/ogham/exa
August 22, 2025 at 9:56 AM
“It is important to expect nothing, to take every experience, including the negative ones, as merely steps on the path, and to proceed.” — Ram Dass (shared by Waking Up)
August 19, 2025 at 1:49 PM
#iPhone keeps on resetting bluetooth hardware #keyboard layout to #Qwerty, although I have only #Dvorak configured.

Work-around is to cycle through keyboards with ctrl-space on the hardware keyboard which usually gets it back to #dvorak.
August 13, 2025 at 8:13 PM
A former colleague of mine managed to ship an epic looking and especially sounding heavy metal game on Steam. Releasing tomorrow, get it while it's HOT:

store.steampowered.com/app/2221780/...

P.S. HEAVY METAL
Metavoidal on Steam
Heavy metal might be immortal, but you're not. In Metavoidal, you play as a drummer as they attempt to escape the clutches of a threatening metal band by using off-beat techniques to defeat each band ...
store.steampowered.com
August 12, 2025 at 9:44 AM
Reposted by Charl P. Botha ♡ code, data-*, Emacs, running, humans
vec3 p;for(float i,z,d,b;i++<6e1;o+=vec4(1,5,2,0)/b-(dFdx(z)*r.y-z)/exp(d/.1))p=z*(FC.rgb*2.-r.xyy)/r.y-1.,p.z+=8.,z+=min(b=length(abs(p*=.1*mat3(9,0,3,0,9,2,-7,-2,8)).xy+min(.4*p.z-2.6,0.))/(cos(d/.1-t)+2.),d=max(d=length(p)-5.,d-length(p.xy)+1.-cos(d/.1)*.1))*.5;o=tanh(o/4e3);
August 12, 2025 at 2:29 AM
Setting up #Huawei Band 10 for the 9yo. Great little smart watch BUT: 1. Huawei app on iOS disallows pasting into password fields (Argh) and 2. Child account can't pair with watch (so why support a child account in the first place?!)
August 9, 2025 at 6:08 PM
Misleading packaging (partner bought because at a glance looks like extra virgin olive oil) by Checkers here in South Africa, normally quite good.

"Vegetable oils (canola seed and/or maize and/or sunflower seed andor soybean" and olive fruit (10 %))."
August 9, 2025 at 8:08 AM
Usually I let my experiencing self drive during #running but this scene was so epic that narrative self briefly took the wheel to take a photo before I could stuff him back in his box
August 6, 2025 at 1:44 PM
Reposted by Charl P. Botha ♡ code, data-*, Emacs, running, humans
Please enjoy this Klimt Eastwood
August 1, 2025 at 8:36 PM
Reposted by Charl P. Botha ♡ code, data-*, Emacs, running, humans
'Prepone' dates back to the early 1500s and originally meant “to place in front of, to set before.”

Now, it is primarily used in Indian English to mean the opposite of 'postpone.'
July 31, 2025 at 1:46 PM
Dear @aptshadow.bsky.social - thank you for Alien Clay. I can't remember another book which made me feel this much. 50 million stars from an extremely grateful fan who is in awe. #booksky
July 31, 2025 at 6:26 AM
My 2018 paperwhite #kindle (my fourth kindle) is driving me up the walls, because it crashes hard at least once per week (see my linked review).

Can anyone recommend a third-party android e-ink device that can run the kindle app? Boox Poke4 / 5, Go 6? #ereaders

www.amazon.com/review/RRA4L...
Check out this Amazon review of International Version – Kindle Paperwhite – (previous generation - 2018 release) Now Waterproof with 2x the Storage - 8 GB
Fourth and worst Kindle: Crashes often, battery problems
www.amazon.com
July 29, 2025 at 8:13 AM
Reposted by Charl P. Botha ♡ code, data-*, Emacs, running, humans
Een boek om als neerlandicus jaloers op te zijn.

neerlandistiek.nl/2025/07/een-...
Taal uit de pressure cooker
Een boek om als neerlandicus jaloers op te zijn.
neerlandistiek.nl
July 29, 2025 at 5:03 AM
Fascinating idea and demo: Interfacing MCP with Combinatorial, Convex, and SMT Solvers by Stephen Diehl

www.stephendiehl.com/posts/smt_an...

via alper.nl on LinkedIn
Interfacing MCP with Combinatorial, Convex, and SMT Solvers
Personal Blog
www.stephendiehl.com
July 27, 2025 at 9:10 AM
I'm super excited that it's possible to query delta tables using @duckdb.org ! However, file filtering with timestamp / date predicates don't work yet, which can result in long query times:

The issue: github.com/duckdb/duckd...

The feature: duckdb.org/2025/03/21/m...

#databs
File scanning not done properly on date type, it scans all files. · Issue #220 · duckdb/duckdb-delta
My query is this query = f""" SELECT count(*) FROM delta_scan('{abfs_path}') where date between '2025-05-02'AND and '2025-05-12' """ And I even generated the profiling file { "result_set_size": 8, ...
github.com
July 26, 2025 at 11:28 AM
Wait what?! You can use the #macbook trackpad as a scale?!

youtube.com/shorts/Yd89S...
MacBook Trackpad Scale
YouTube video by UFD Tech
youtube.com
July 24, 2025 at 5:27 PM
Email, hosting, messaging, and so on being hosted in Switzerland might not be the #privacy feature that many people perceive. Read here the story about how US + German intelligence secretly bought a whole Swiss company, Crypto AG, to spy better!

www.washingtonpost.com/graphics/202...

#infosec
The CIA secretly bought a company that sold encryption devices across the world. Then its spies sat back and listened.
U.S. and German intelligence agencies partnered on a scheme to dupe dozens of nations into buying rigged encryption systems — taking their money and stealing their secrets.
www.washingtonpost.com
July 22, 2025 at 12:50 PM
In a remote location with low bandwidth, I needed to find out which process on my macbook was sucking up data in the background.

Activity Monitor only shows accumulated totals.

Fortunately, "nettop -Pd" will show you instantaneous network bandwidth by process!

culprit was #icloud drive

#macos
July 18, 2025 at 11:19 AM
Been a NiN fan since '93. Grew up with the original Tron movie. I just melted a little bit watching this trailer. 🥹
TRON: ARES - ONLY IN THEATERS OCTOBER 10TH

TRON: ARES (ORIGINAL MOTION PICTURE SOUNDTRACK) - AVAILABLE SEPTEMBER 19TH
"AS ALIVE AS YOU NEED ME TO BE" - LISTEN NOW
July 18, 2025 at 6:44 AM