This action will delete this post on this instance and on all federated instances, and it cannot be undone. Are you certain you want to delete this post?
This action will delete this post on this instance and on all federated instances, and it cannot be undone. Are you certain you want to delete this post?
This action will block this actor and hide all of their past and future posts. Are you certain you want to block this actor?
This action will block this object. Are you certain you want to block this object?

Quote from a friend during a chat about "AI" and pareidolia: "Tech just put googly eyes on an algorithm" 😀
(edited for typo)


I'm trying to get through the backlog of bugs and features in my to-do list. Release v2.4.10 of Ktistec packages up several important improvements. The most impactful change is graceful server shutdown—I've never had a problem with shutdown leaving the database in a broken state, but prevention is the best cure.
Added
Fixed
Changed
I'm considering adding lightweight multi-user support (invitation-only, not open registration). I'm interested in your thoughts on whether this would be useful.

Because of spammers, I am going to have to now redo how my family sends/receives email at my custom domain. Too many folks required DKIM now for me to be able to use Send As on Gmail without using a custom SMTP server that can handle signing, or paying for a Google Workspace (which I don't want to do). Sartre was right about Hell.

I got two AI agents, Claude and Gemini, to help generate a doc for new developers on how to work with one of our services. In the end, I am quite pleased with what it did.
Example:# Developer's Guide to the User-Profile Service
Welcome! This document is the comprehensive guide for developers working on the
User-Profile service. It outlines our architecture, established patterns, and
development workflow. Adhering to these conventions is key to maintaining a
clean, consistent, and scalable codebase.
## Table of Contents
1. [**Getting Started: Your First 5 Minutes**](#getting-started-your-first-5-minutes)
2. [**Core Architectural Principles**](#core-architectural-principles)
3. [**Codebase Tour**](#codebase-tour)
4. [**Quick Decision Guides**](#quick-decision-guides)
5. [**The Golden Path: Adding a New Feature**](#the-golden-path-adding-a-new-feature)
6. [**Deep Dive: Key Patterns & Conventions**](#deep-dive-key-patterns--conventions)
- [The Data Layer (`stores/`)](#the-data-layer-stores)
- [Event Handling (`event_consumer/`)](#event-handling-event_consumer)
- [Command Handling (`command_consumer/`)](#command-handling-command_consumer)
- [The API Layer (`webapi/`)](#the-api-layer-webapi)
- [Error Handling Patterns](#error-handling-patterns)
- [Testing (`*_test.go`)](#testing-_testgo)
- [Long-Running Tasks (`temporal/`)](#long-running-tasks-temporal)
- [Observability Best Practices](#observability-best-practices)
- [Configuration Management](#configuration-management)
- [Performance Considerations](#performance-considerations)
- [Cross-Cutting Concerns](#cross-cutting-concerns)
7. [**Development Cheatsheet**](#development-cheatsheet)
8. [**Glossary of Terms**](#glossary-of-terms)

It makes me laugh/cry that we spent decades trying to get the software industry to internalise that it takes far more effort to support & maintain systems than it does to write them in the first place, and yet seemingly every trendy development in the last 5-10 years has been about making that initial stage faster & sloppier at the expense of everything else

We've been fairly effective at getting Claude Code to write useful code on our repos. I say useful, in that it saves some time. Not in that it's ready to ship. However, this seems to be in a large part because we have a lot of patterns that are supportive of human developers as well:
All of the above makes it easy to work on our codebases for humans. And it makes AI much less likely to go off script and make a mess.

Quitting programming as a career right now because of LLMs would be like quitting carpentry as a career thanks to the invention of the table saw.

I finally published the blog post I was working on about how we wrote a C Node in #CrystalLang to call into our existing #Golang libraries from #ElixirLang! You can read about it here: https://relistan.com/calling-go-from-elixir-with-a-cnode


I'm having a weird #Golang dependency issue that I've never seen before. The code compiles on macOS and Alpine Linux absolutely fine. On Ubuntu and Debian I get a complaint from the compiler that the dependencies need to have `go mod tidy` run. Running it does nothing.
This stinks... because our CI is Debian. Very strange issue.

I'm happy to see this conclusion on Go's error handling syntax: https://go.dev/blog/error-syntax. It's fine the way it is, but some people keep pushing for changes, which is sucking away lots of energy from maintainers and there are more productive things to focus on.