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?

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.

I shipped an app some months back that uses Badger (#Golang) as the data store. I wanted to be able to see what was in the store easily when debugging, so I stuck a simple Redis API into the app using redeo as a local-only port. I exposed a few Redis commands to make it easy to see what was in the store, walk keys by prefix, etc. This took maybe 1.5 hours to add. It has been super useful. I think I'll do this again next time I ship something with Badger.

Open source pro tip: harassing your potential users is not a way to build positive sentiment for your project.