backend
Technical notes on web development, DevOps, and AI integration.
73 articles
- 20:07ai
The follow-up question my AI chat couldn't answer
Chat follow-up questions without server sessions: history lives in localStorage, gets resent per ask, and the backend rebuilds the prompt under a char budget.
#fastapi#llm#stateless - 19:34ai
The AI chat now knows what I am working on
The blog's AI chat now answers 'what are you working on' from local commit history: a narrow port, a version namespace bump, and term mining.
#fastapi#redis#cache-invalidation - 14:57backend
Answers That Survive an LLM Outage
When the LLM router died, a meta fallback event arrived and the visitor still got an answer. Here's the three-part chain behind it.
#fastapi#redis#llm - 14:34backend
The AI Search Had to Learn Its Own Site
Typing hai used to kill the AI search with no_results. The culprit was MariaDB's fulltext word-length floor, not a broken prompt.
#fastapi#mariadb#llm - 11:12backend
Blog Card TLDR Without N+1 Queries
One tiny field on the list page nearly cost a query per article. The fix is one batch IN query: two queries per page, not 1 + N.
#python#fastapi#mariadb - 10:54backend
SQLAlchemy Rejects a Parameter Your SQL Never Asked For
An optional locale filter froze live search on the default locale. The culprit: bindparams validation that fires at construction, not execution.
#python#fastapi#mariadb - 03:10backend
MariaDB Fulltext Search plus LLM Query Expansion
Replace LIKE with a MariaDB FULLTEXT index, then add LLM query expansion: two layers that keep working when the index or the LLM fails.
#mariadb#fastapi#python - 02:43backend
A Python Vector Store Without NumPy
The semantic related layer for 80 articles turned out to be a Python dict and a cosine loop, no numpy and no vector database.
#python#fastapi#embedding - 18:32backend
Site Head and Footer Snippets Without a Redeploy
Snippet changes used to mean an edit, a commit, and a deploy wait. A whitelisted settings endpoint turns that into one PUT request.
#nextjs#fastapi#seo