here you goThings I’ve made, read and saved — shared here.

Archive

9,609 entries: 53 from X, 8,925 from Pinboard, saved 1998 to 2026.

Browse by tag, site, author, folder or language

Tags

Sites

Authors

Folders

Languages

Showing 101–150 of 547Folder notes ×

2025

Lakehouse

lake house = data lake + data warehouse.

stores raw, unstructured, and semi-structured data cheaply, often on object-storage like a data lake.

supports ACID transactions, structured data, schema enforcement, and fast SQL based Analytical Queries.

Basically, lakehouse = store all your data, and run different kind of loads on them - analytics, machine learning, Bi etc, without moving around data.

Common solutions include: Databricks lakehouse, Apache Iceberg, Apache Hudi, Delta Lake, LanceDB etc.,

notes

Image Generation

Qwen-Image lightning generation on Apple Silicon:

$ uv run https://raw.githubusercontent.com/ivanfioravanti/qwen-image-mps/refs/heads/main/qwen-image-mps.py -f -p "Generate an SVG of a pelican riding a bicycle"

This will download 1.7GB of Lora in the folder you start it from. 9:35:30-

--

Qwen-Image-Edit: Image Editing with Higher Quality and Efficiency; Aug 2025.

uv run https://raw.githubusercontent.com/ivanfioravanti/qwen-image-mps/refs/heads/main/qwen-image-mps.py generate -f -p "A rollercoaster with view on Carmel, IN Midtown"

notes

BAML

(Vaibhav Gupta and team 2024) is a simple prompting language for building reliable AI workflows and agents by BoundaryML. GitHub - BoundaryML/baml: The AI framework that adds the engineering to prompt engineering. Available for Python, typescript, golang, java etc.,

BAML makes prompt engineering easy by turning it into schema engineering -- where you mostly focus on the models of your prompt -- to get more reliable outputs.

New syntax can be incredible at expressing new ideas. Plus the idea of maintaining hundreds of f-strings for prompts kind of disgusts us 🤮. Strings are bad for maintainable codebases. We prefer structured strings.

The goal of BAML is to give you the expressiveness of English, but the structure of code.

Half the error rate, just by changing the way the schema is expressed to the LLM ! I think the lesson learned here is that:

  1. Easier to read for humans usually means easier to read for LLMs as well
  2. JSON is not easy to read for humans -- X/appenz

The new BAML adapter (which subclasses the existing JSON adapter) avoids using JSON schema for formatting the data model in the prompt. Instead, it uses the format popularized by BAML, and it instantly improves the quality of structured outputs. -- X/tech_optimist Using the BAMLAdapter in dspy is incredibly simple - just pass it as a parameter to your LM, and the adapter takes care of the rest.

import dspy
from pydantic import BaseModel, Field
from typing import Literal
from dspy.adapters.baml_adapter import BAMLAdapter

# 1. Define Pydantic models
class PatientAddress(BaseModel):
    street: str
    city: str
    country: Literal["US", "CA"]

class PatientDetails(BaseModel):
    name: str = Field(description="Full name of the patient.")
    age: int
    address: PatientAddress | None

# 2. Define a signature using the Pydantic model as an output field
class ExtractPatientInfo(dspy.Signature):
    '''Extract patient information from the clinical note.'''
    clinical_note: str = dspy.InputField()
    patient_info: PatientDetails = dspy.OutputField()

# 3. Configure dspy to use the custom adapter
llm = dspy.OpenAI(model="gpt-4.1-mini")
dspy.configure(lm=llm, adapter=BAMLAdapter())

# 4. Run your program
extractor = dspy.Predict(ExtractPatientInfo)
note = "John Doe, 45 years old, lives at 123 Main St, Anytown. Resident of the US."
result = extractor(clinical_note=note)
print(result.patient_info)

# Expected output:
# PatientDetails(
#    name='John Doe',
#    age=45,
#    address=PatientAddress(street='123 Main St', city='Anytown', country='US'))

References

  • Vaibhav Gupta, team (2024). BAML.

notes

awesome awesome

Collection of "Awesome X" collections.

notes

Extract Structured Information

Extracting structured information from unstructured text using LLMs is a good tool to have in your llm toolkit.

Google's langextract is one such python library for extracting structured information from unstructured text using LLMs with precise source grounding and interactive visualization.

The other popular library is Instructor -- extracting structured data from Large Language Models (LLMs). Built on top of Pydantic, Instructor provides type-safe data extraction with automatic validation, retries, and streaming support. supports all major providers like openai, claude and local-llm like ollama etc.,

notes#llm

AI on a budget

What if you do not want to use AI SaaS products for any reason (monetary - subscriptions add up quick, privacy - do not want share your data with companies, etc.,)?

One approach is to use local-llm on your laptop, or pc. You might also be ok with doing so on a cloud hosted instance where you get to control the entire stack.

Another approach is to use some of the "free tier" as seen here -- How I Code with AI on a budget/free; via HN.

Every month so many new models come out. My new fav is GLM-4.5... Kimi K2 is also good, and Qwen3-Coder 480b, or 2507 instruct.. very good as well. All of those work really well in any agentic environment/in agent tool

notes#llm

PDFs for LLM

Extracting content, and retaining all the semantic information presented in texts, tables, charts, graphs, and other visual elements in a manner that is most suitable for consumption by LLMs, especially when used in conjunction with RAG is still a hard problem.

There are many compnanies, research teams and open source projects attempting to solve this at the document level and as a pipeline.

Some of the ones that are the top of my head right now (2025-08) are:

Open Source Projects

  • Docling by IBM Zurich Research, and SmolDocling; see (Team 2024)
  • Dolphin by ByteDance; see (Feng et al. 2025)
  • roe-ai/vectorless by AI SaaS -- "PDF chatbot that uses no vector embeddings or traditional RAG. Instead, it leverages Large Language Models for intelligent document selection and page relevance detection, providing a completely stateless and privacy-first experience."

Supporting Libraries

Companies

See Running Notes on RAG

References

notes

streamlit

Streamlit is a python library to build data apps. This is similar to observable, and evidence.

With uv, it is easy to see what streamlit looks like -- uv run --with streamlit streamlit hello -- this launches a demo app with a couple different visualization screens.

This is more along the lines of "UI controls that allow you to change the parameters of a chart/visualization" than evidence's "Dynamic report" approach.

Streamlit is a pythonic middle ground between reporting oriented evidence and a very visualization oriented observable.

another way to look at these three: streamlit is python, observable is javascript, and evidence is sql.

notes#dataapps#python

Evidence

Evidence is "Business Intelligence as Code"; which means it allows you to build reports, and standard business data visualization ( charts, and basic graphics) using sql with markdown as the glue between various data and visualization elements. You can put to gether a dynamic report with a few interactive elements (e.g: filter data, change date ranges) that can be exported as "static" web pages. The exported web pages will also have interactive elements (e.g: tooltip on hover, charts that re-render when you change the data criteria). You can see the github; and examples

datasette is another player in this space -- "data applications using sql" space, but evidence goes much further by supporting various data backends, and having first class support for thinking in terms of reports, and standard visualization components like charts. Support for markdown is naturally expected.

The combination of markdown + code does put it in a group with jupyter, but the availability of dynamic controls also make you think of streamlit, but does not go as far as observable because observable, given it's pedigree with d3 etc., is a lot more capable visulization tool (think maps, and advanced dataviz techniques).

notes#dataapps#sql#visualization

Pennsylvania

Pennsylvania is low key the king of American urbanism. It's like a time capsule, you've got hundreds of little towns and dozens of midsized cities where normal middle class people are still living in townhouses, shopping at corner shops, and walking for a daily errands. -- via

notes

statichost-eu

GDPR-compliant European static site hosting - statichost.eu is a static hosting website that is an alternative to cloudflare and github pages.

It works by pulling your git repositories hosted elsewhere (github, gitlab, codeberg etc.,) and using a docker container to execute build scripts. it supports quite a few javascript based JAM stacks, and also hugo (golang), and zola (rust). It should be possible to create your own docker container and use it to build a site.

As an experiment, I put up AI Engineer website using hugo, with a private repo on github. In order to pull from a private repo, you can add an SSH public key provided by statichost as a Github Access Key. In order to trigger a build you can use the Webhook from github.

#static-sitegen

notes

Litestar

Litestar is a python framework that makes different set of choices compared to many popular frameworks likd fastapi, and flask, that help you in growing the application much better while not sacrificing speed. It also makes good use of #sqlalchemy while not being too tightly coupled with it. The routing system is also well thought out and helps in building a modular architecture.

See 2025-32.

#python #web-frameworks #fastapi

notes

Running Notes on AI Agents

Note: Similar to Running Notes on RAG.

AI Agents will likely shine in areas where there is demand for solutions, but is constrained by demand on talent to do so. Good examples are coding agents, security agents, legal agents etc., In these areas, the demand for solving problems exceeds the talent available.

The playbook for building #ai-agents is to deep on context engineering (bring all the data) required for the vertical or domain, figure out the User Experience that fits into the existing workflows naturally, and connect to relevant data sources and tools.

We are trending to more agents given narrowly scoped, well defined narrow tasks. These will be defined by professionals -- martin_casado.

I think when combined with smol-llms, they can be unobtrusive doing their well defined tasks in the background, without much human intervention. "Manage by exception" or "manage by failure" instead of active human feedback. Human attention in precious, and should be overwhelmed with attention to even more computers. 2025-08-05 10:57

notes

Models as a Service

Models as a Service (MaaS). huggingface is the main player here.

bring together most advanced machine learning models from the AI community, and streamlines the process of leveraging AI models in real-world applications

The above definition is from modelscope, a chinese company.

Discovered this while looking at [dot.ocr](https://github.com/rednote-hilab/dots.ocr)'s `tools/download_model.py`

notes

Running Notes on RAG

RAG is at the heart of many AI deployments going on today, and pershaps my own interest in the topic, and engaging with it, I see many articles, and new items related to it.

These are some of the primary aspects of improving RAG:

  1. Semantic understanding of documents, including applying Visual LLMs to make sense of embedded pictures, diagrams and other non-textual content
  2. Chunking
  3. Embedding
  4. Having a good evaluation ("eval")
  5. Not ignoring search as the first line of attack; I find Joe Bergum a reliable authority in understanding search better. Most recently, he said - Search becomes the infrastructure for agents, agents are the new users.

RAG Companies ^fb946e

If you think of RAG as an Information Architecture problem, then there are ways to improve the value without changing the model:

  1. Audit user queries to look for higher frequency searches that are returning irrelavent results, or zero-result queries, and repeated questions in the face of such results (frustration).
  2. Cluster unmet needs - what is common among failed queries? internal docs, product metadata?
  3. Fix the inventory (of documents indexed)
  4. Tighten the feedback loop by tracking query success/failure, satisfaction, and document retrieval coverage.

The pain of chunking and bad context retrieval can be mitigated by using better search tools which will provide the context needed by the foundation models. RAG isn't dead, just the context that is being provided is hindered by not getting chunking etc right.

To quote Jo Bergum

A significant portion of the rag is dead movement is imho related to the pain of chunking and how bad the vector databases are at managing the overall context of the source document. Splitting data across rows and records and reconciliation at run time never scales, plus you need to manage that state in case the source document changes. -- via

RAG Explorer by Respeak "An interactive journey through the Retrieval Augmented Generation pipeline — explore each component, understand pitfalls, and master implementation.". Has a good step step by explanation of how various phases of a RAG system flow from one to another.

Start thinking LLM as infrastructure. Lean into integrating LLM into scalable system design much like any other important piece. Remember:

RAG is the evolution of search.

Search is the natural abstraction for augmenting AI with moving context -- -- Jo Bergum

90% of RAG deployments are running with chunk and embed using 3.5 with 8K context window

(on why embedding seems to be disfavored these days) ... Part is that many were mislead in the late 2022 days to think that embedding retrieval was the only way to do RAG and that chunk-and-embed is a pain to manage.

Task specific sub agents with their own set of tools and context window is a strong trend

Armand Ruiz on LinkedIn mentioned, IBM Granite; I have to investigate if I can plug this into the RAG pipeline to extract content from tables, charts, and diagrams for structured data analysis.

Elysia: Building an end-to-end agentic RAG app | Weaviate; Note: elysia has a hard dependency on Weaviate cloud. ^7d2c87

what if your AI could dynamically decide not just what to say, but how to show it? What if it could learn from your preferences, intelligently categorize, label, and search through your data, and provide complete transparency into its decision-making process?

Few things that make Elysia interesting

  1. Decision Trees and Decision Agents
  2. Displaying data sources in dynamic formats
  3. an automatic expert on your data -- "an LLM analyzes your collections to examine the data structure, create summaries, generate metadata, and choose display types. This isn't just useful information for users to see - it significantly enhances Elysia's ability to handle complex queries and provide knowledgeable responses"
  4. Feedback system -- "Each user maintains their own set of feedback examples stored in within their Weaviate instance. When you make a query, Elysia first searches for similar past queries you've rated positively using vector similarity matching."
  5. Elysia serves content through Static HTML -- this pleases me.
  6. Multi Model Strategy -- "routes different tasks to appropriate model sizes based on task complexity"
  7. DSPy serves as the LLM interaction layer.

Another Summary of Elysia by X/victorialslocum

--

Building Graph RAG Pipelines with Kuzu, DSPy and marimo - YouTube by Prashanth Rao

--

run-llama/semtools: Semantic search and document parsing tools for the command line

  • parse - Parse documents (PDF, DOCX, etc.) using, by default, the LlamaParse API into markdown format. Parse uses Llamaparse ( Cloud hosted). #todo how to parse using a different model?
  • search - Local semantic keyword search using multilingual embeddings with cosine similarity matching and per-line context matching

notes

Zen To Go

Zen to Go, is one of my all time favorite book of #quotation

It is an eminently #easy-to-pickup book.

notes

Writing well

Writing well comes to down to holding the reader's attention.

  • Make sentences flow from one to another, make sure the reader is never surprised, anticipate objections
  • Edit, and edit again. Remove all fluff. Use short sentences. Read your own writing with a "red pen"
  • Delete anything that makes you pause and go back and look around for clues.
  • Practice #writing. Make your own opportunities to write by putting your name on it... "You can have an unreasonable amount of influence by being the person who writes stuff down".
  • Writing well starts with writing stuff down.

Couple of points from CS Lewis advice on writing, I liked:

  1. Write with the ear, not the eye
  2. Write what interests you
  3. Don't use words (or phrases, or sentences, or paragraphs) you don't understand -- say no to Copy-Pasting.
C S Lewis on writing (1959)
C S Lewis on writing (1959)

notes

Pico della Mirandola

... at the age of 23, he proposed to defend 900 theses on religion, philosophy, natural philosophy, and magic against all comers, for which he wrote the Oration on the Dignity of Man, which has been called the "Manifesto of the Renaissance". -- wikipedia

The author Pico Iyer's middle name (he now uses Pico as his first) is for Pico della Mirandola.

notes

Thriftbooks

2025-08-03: I have purchased many books from Thriftbooks, I always liked that if I my order totalled up to more than $10, they would ship the books for free. I have been buying books from them since 2018 or so. Today I found out that you can download all kinds of data (yours of course) from your account.

notes

Pico Iyer

Pico Iyer an author born in Britain to Indian parents, educated in America (and England), and now living in Japan, married to a Japanese. I am reading The Lady and the Monk, and want to read A Beginner's Guide to Japan, The Art of Stillness, and Video Night in Kathmandu.

Through his biography I discovered Pico della Mirandola, because Pico Iyer is named after him.

notes

png

Some png tools I use

  • pngpaste -- pngpaste > thefile.png -- Paste PNG into files, much like pbpaste does for text.
  • pngquant -- is a command-line utility and a library for lossy compression of PNG images. The conversion reduces file sizes significantly (often as much as 70%) and preserves full alpha transparency. I used to use pngcrush before for the same.

#png #tools #macos #linux

notes

Weights and Biases

wandb.ai "is for experiment tracking and metric visualization". As observed in (Wang et al. 2025)'s github repo (Sapient Intelligence, Singapore).

Important things to note from this:

  • #llmops -- traces, evaluations, playground, agents, guardrails, monitors.
  • #mlops -- experiments, sweeps (optimizing hyperparams), tables (explore and visualize data)
  • platform features -- explore hosted, OSS models, model & data registry, artifacts, reports, SDK, automations. (nb. a lot of this sounds like huggingface).

References

notes

Emanote

Emanote by Sridhar Ratnakumar is a haskell program that helps you build websites (blog, wiki, zettelkasten notebooks) using plain text formats like markdown.

Aug 2025

Previously, I had tried to install it locally and also as github action, and found the experience difficult. I had totally ignored the docker related instructions.

This time, I tried the container instructions, adjusting them for my orbstack setup and it worked beautifully.

docker run -it --rm \
  -p 8080:8080 \
  -v ./content:/notebook:z \
  ghcr.io/srid/emanote run -p 8080 -h 0.0.0.0

notes

IUPUI

I got my Masters in Computer Science from Purdue University attending IUPUI from 2008-2016 while I worked at EnthEnergy, and Proofpoint.

These are some of the things I produced while I was there:

Unikernel operating systems as network security appliances: a survey PDF

Unikernel Survey

**Composition in Internet-of-Things using Unikernel ** PDF

Unikernel IOT Composition

Presentation on Unikernels; Dec 11, 2015.

An archive of my home page https://cs.iupui.edu/~pgowda lives on cloudflare at pgowda-iupages.pages.dev; The source files are on GitHub; see also read-eval-print-love.

notes#iupui

Linux

Linux: The Unix Clone by the Git author

I have been a git user since 1997 or so. The first versions of this domain started out as a CD shop shipping Linux and Open Source Software on CDs to buyers in India.


AlmaLinux OS An Open Source, community owned and governed, forever-free enterprise Linux distribution, focused on long-term stability, providing a robust production-grade platform. AlmaLinux OS is 1:1 binary compatible with RHEL® and pre-Stream CentOS.


My View of Linux via github.com/lsc4719 via github.com/lsc4719

notes#linux

Vinfast VF8

Leased this car in November 2024 from Tomwood Vinfast. I had originally called them to enquire about Subaru's EV, and the salesman convinced me to take a look at this car insted for a better deal. And I did.

  • Zero down.
  • $343/Mo
  • Insurance $855/6months = $142.5 = $485.5 (In comparison, my 2025 Mazda CX90 costs $482/6months )

If I drive thousand miles per month, I'm spending almost $2/mile, accounting for most of my EV charging happens at work.

notes

Citations

About doing citations correctly...

  • See Citation File Format (.cff) on github. Github, Zotero all support this yaml format.

notes

A2A

Agent-to-Agent - A2A enables multiple agents to communicate, coordinate, and delegate tasks to each other, even if they come from different vendors or frameworks.

Key Components of A2A:

  • Agent Card -- JSON File. lists agent's capabilities, endpoint URL, and authentication method.
  • Task -- Unit of Work. Task has lifecycle: submitted, working, completed of failed
  • Message -- Structured communication between agents, exchanged within the context of a Task
  • Part -- blocks within messages
  • Artifact -- final result of a Completed Task, returned to client

Read more here: MCP vs A2A Clearly Explained


See also MCP

notes

MCP

Model Context Protocol -  is designed to let a single agent securely access tools, APIs, and data sources in a standardized way.

On average, RAG, MCP, and NLWeb reach about 0.75 F1, while HTML stays near 0.67 and misses more. HTML agents also burn more compute, needing about 3x more tokens and 5x more time per task than others. So the study recommends RAG agents, often with GPT5 or cheaper GPT5 mini, and keeping HTML browsing only as backup. -- (Steiner et al. 2025)

--

Let your Coding Agent debug your browser session with Chrome DevTools MCP  |  Blog  |  Chrome for Developers


See also A2A

References

notes#google-chrome

SHAP & LIME Coding Example

Note: AI Generated, and augmented by me.

pip install scikit-learn xgboost shap lime matplotlib pandas
import numpy as np
import pandas as pd
import shap
import lime
import lime.lime_tabular
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from xgboost import XGBRegressor

# ✅ Load dataset
data = load_diabetes()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.target

# ✅ Train-test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# ✅ Train XGBoost regressor
model = XGBRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# ✅ Predict on test set
preds = model.predict(X_test)

# ==============================================
# 🔷 Part A: SHAP Values
# ==============================================

# ✅ Initialize SHAP explainer
explainer = shap.Explainer(model, X_train)

# ✅ Explain predictions on test set
shap_values = explainer(X_test)

# ✅ Visualize feature importance (global)
shap.plots.beeswarm(shap_values)

# ✅ Explain a single prediction (local)
shap.plots.waterfall(shap_values[0])

# ==============================================
# 🔷 Part B: LIME
# ==============================================

# ✅ Initialize LIME explainer
lime_explainer = lime.lime_tabular.LimeTabularExplainer(
    X_train.values,
    feature_names=X_train.columns.tolist(),
    verbose=True,
    mode='regression'
)

# ✅ Explain a single instance
i = 0  # index of sample to explain
lime_exp = lime_explainer.explain_instance(
    X_test.values[i],
    model.predict,
    num_features=5
)

# ✅ Visualize LIME explanation
lime_exp.show_in_notebook(show_table=True)
# If running in script, use
# lime_exp.as_pyplot_figure()
# plt.show()

- SHAP provides both global and local explanations with theoretical guarantees based on Shapley values (fair feature attribution). - LIME builds a local surrogate model to approximate the black-box behavior near a specific prediction, giving intuitive explanations quickly. - Limitations: SHAP can be computationally heavy; LIME explanations may vary due to random perturbations.

  • Both are widely used for model interpretability in regulated industries like life sciences, where explainability is critical for compliance and stakeholder trust.

notes

kannada-hangul

Here is a concise Kannada-Hangul alphabet chart mapping roughly equivalent sounds. Note: Korean lacks many exact equivalents, so these are approximate phonetic mappings.

Kannada Sound Hangul Example
ಅ a 아 아빠 (appa)
ಆ aa 아 (long) -
ಇ i 이 이 (i)
ಈ ii 이 (long) -
ಉ u 우 우유 (uyu)
ಊ uu 우 (long) -
ಋ ru 르 르노 (Reno)
ಎ e 에 에어 (aeo)
ಏ ee 에 (long) -
ಐ ai 아이 아이 (ai)
ಒ o 오 오이 (oi)
ಓ oo 오 (long) -
ಔ au 아우 아우 (au)
ಅಂ am 암 암 (am)
ಅಃ ah 아ㅎ -
Kannada Sound Hangul Example
ಕ ka 카 카메라 (kamera)
ಖ kha 카 (aspirated) -
ಗ ga 가 가방 (gabang)
ಘ gha 가 (strong) -
ಙ nga 응 응 (eung)
ಚ cha 차 차 (cha)
ಛ chha 차 (aspirated) -
ಜ ja 자 자 (ja)
ಝ jha 자 (strong) -
ಞ nya 냐 냐 (nya)
ಟ Ta 타 타 (ta)
ಠ Tha 타 (aspirated) -
ಡ Da 다 다 (da)
ಢ Dha 다 (strong) -
ಣ Na 나 나 (na)
ತ ta 타 타 (ta)
ಥ tha 타 (aspirated) -
ದ da 다 다 (da)
ಧ dha 다 (strong) -
ನ na 나 나 (na)
ಪ pa 파 파 (pa)
ಫ pha 파 (aspirated) -
ಬ ba 바 바 (ba)
ಭ bha 바 (strong) -
ಮ ma 마 마 (ma)
ಯ ya 야 야 (ya)
ರ ra 라/르 라디오 (radio)
ಲ la 라 라 (la)
ವ va 바 / 와 바 (ba) approximates
ಶ sha 샤 샤워 (syawo)
ಷ Sha 샤 (retroflex not present) -
ಸ sa 사 사 (sa)
ಹ ha 하 하 (ha)
ಳ La 라 (retroflex not present) -
ಕ್ಷ ksha 크샤 -
ಜ್ಞ gya 갸 갸 (gya)

Generated by chatgpt

#kannada #hangul #korean

notes

AI Evals

EvalOps

EvalOps is the control plane for AI evaluation and routing. It helps teams compare LLMs, track performance, and automatically send each request to the best LLM. EvalOps turns evals into your release contract

  • scorecards,
  • scenarios,
  • monitors, and
  • CI gates that keep quality from drifting and get you out of POC purgatory.

The Pillar worklow:

  1. Define -- Scorecards establish quality metrics
  2. Test -- Scenarios provide comprehensive coverage
  3. Gate -- CI Gates block regressions
  4. Monitor -- Continuous production oversight

The LLM quality problem -- Traditional testing breaks down with LLMs. Non-deterministic outputs, subjective quality metrics, and emergent behaviors make it impossible to ensure quality with conventional approaches.

60% of teams deploy untested changes -- No systematic way to validate LLM quality before production

Average 4 hours per regression -- Time spent debugging issues that reach production Manual evaluation bottlenecks -- Human reviewers can't scale with deployment frequency

notes

sphinx

Sphinx is a powerful documentation generator that supports multiple programming languages and markup formats. It is widely used in the Python community and is the documentation generator for many popular Python projects.

Furo -- A clean customisable Sphinx documentation theme, as seen here - Powerful Suite of Default Applications - JOHNAIC: Personal AI Computer

Shibuya -- "Beautiful responsive theme for Sphinx documentation generator. Great supports for Jupyter extensions.", as seen here - Advanced Alchemy (a companion library for SQLAlchemy).

Esbonio is a Language Server for Sphinx documentation projects.

Esbonio aids the writing process by resolving references, providing completion suggestions and highlighting errors. It ensures your local build is always up to date, allowing you to preview your changes in (almost!) real-time. The server itself can even be extended to better suit the needs of your project.

The primary goal of Esbonio is to reduce the friction that comes from trying to remember the specifics of a markup language, so that you can focus on your content and not your tooling.

notes

Desktop AI Tools

  • ollama is a lightweight, open-source AI inference engine that allows users to run large language models on their desktops.
  • FlowDown AI/LLM client application designed to provide users with an efficient AI interaction experience on the desktop.

notes

exif

You can use the exiftool (available on MacOS and other Unixes) to remove GPS information etc from your photos.

$ brew install exiftool
$ exiftool IMG.HEIC
.... prints out a long list of exif information ...
$ exiftool -all= IMG.HEIC
... strips out exif info ..
$ exiftool IMG.HEIC # to confirm reduced exif infor
Original Image with embedded EXIF data
Original Image with embedded EXIF data
Altered Image with reduced EXIF data
Altered Image with reduced EXIF data

notes

Rerankers

Rerankers and Two-Stage Retrieval | Pinecone

Boosting Your Search and RAG with Voyage’s Rerankers – Voyage AI

A reranker is often used as a refinement step in a two-stage retrieval system. In the first stage, embedding-based methods (or lexical search algorithms such as BM25 and TF-IDF) produce a broad set of initial search results. Following this, a re-ranker evaluates the relevance scores between the query and the candidate documents and selects the most pertinent subset of candidate documents based on the scores.

notes

Embeddings

Tools

Embedding Atlas  is a tool from Apple that provides interactive visualizations for large embeddings. It allows you to visualize, cross-filter, and search embeddings and metadata.

Nice exploration UX with hover and tool tip for single data points. Shows you nearest neighbors, which is cool. Coloring based on metadata for better insights -- via

A notebook showing how you can visualize the data stored in Weaviate vector database with Embedding Atlas

Papers

(Weller et al. 2025)

References

notes