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

Archive

9,565 entries: 46 from X, 8,923 from Pinboard, saved 1998 to 2026.

Browse by tag, site, author, folder or language

Tags

Sites

Authors

Folders

Languages

Showing 1–50 of 112Folder notes ×2025 ×Clear all

December 2025

Microsoft

I worked for Microsoft from 2021-2023 via an acquistion of RiskIQ.

notes

Monte Carlo

‘Good at math’ now means actually being able to build models. You don't need to manipulate endless series of equations; you can Cursor a few MC simulations and see the results. -- via

notes

Claude Code

See Beads by people/Steve-Yegge

ensue-skill: Show HN: Stop Claude Code from forgetting everything | Hacker News

We built a shared memory layer you can drop in as a Claude Code Skill. It’s basically a tiny memory DB with recall that remembers your sessions. Not magic. Not AGI. Just state.

Install in Claude Code:

  /plugin marketplace add https://github.com/mutable-state-inc/ensue-skill
  /plugin install ensue-memory
  # restart Claude Code

What it does: (1) persists context between sessions (2) semantic & temportal search (not just string grep). Basically git for your Claude brain.

Developer Setups

  • Claude Code On-The-Go - granda where the dev uses a cloud hosted VM, and uses Tailscale tunnel to control it from mobile phones. He runs multiple CC agents on the VM. I think https://exe.dev will be a good fit to spin up virtual machines.
  • Happy - Claude Code Mobile Client "Spawn and control multiple Claude Codes in parallel. Happy Coder runs on your hardware, works from your phone and desktop, and costs nothing. Open source."

Ralph Wiggum

What is the Ralph Wiggum Approach?

RW is an AI coding approach that lets you run seriously long-running AI agents (hours, days).

  • Bash script
  • JSON-based PRD
  • progress.txt
  • Keep CI green
  • Feedback loops

notes

2025

The Harada Method

I came across "The Harada Method" used by baseball star Shohei Ohtani via this tweet

The Harada Method was created by Takashi Harada, a Japanese junior high track coach. He took a team ranked last out of 380 schools and, using his system, turned them into the #1 team in the region within 3 years. They held that top spot for the next 6 years.

You start by placing your main goal in the center of an 8x8 grid.

Next, identify 8 critical supporting pillars needed to achieve that goal. These surround the main goal.

then break down each of those 8 pillars into 8 smaller, actionable tasks or daily routines.

This fills out the entire 64-cell grid, turning a massive dream into a concrete, daily action plan.

The method goes far deeper than just technical skills. It forces you to analyze your weaknesses and build confidence. It also has a highlight on service to others, emphasizing that humility and contributing to your community are essential for personal success. The key to the system is daily execution and accountability. Once the 64-cell chart is complete, you turn the tasks and habits into a daily diary and a "Routine Check Sheet." It’s designed to transform abstract intentions into a measurable, daily practice.

notes

Flask

Hyperflask is built on top of Flask, introduces component-driven architecture to Flask apps. Seamlessly create frontend (web components, react, etc...) and backend components and use them in your jinja templates. Use HTMX to create server-backed interactive components...  file-based routing using a new file format that combines python code and a jinja template (inspired by Astro pages). Uses DaisyUI.


See also Litestar

notes

agentset-rag-notes

Notes on RAG from the creator of GitHub - agentset-ai/agentset --  open-source platform to build, evaluate, and ship production-ready RAG and agentic applications. It provides end-to-end tooling: ingestion, vector indexing, evaluation/benchmarks, chat playground, hosting, and a clean API with first-class developer experience.

What made the difference

  • Query Generation -- review the thread and generate a number of semantic + keyword queries. We processed all of those queries in parallel, and passed them to a reranker. This made us cover a larger surface area and not be dependent on a computed score for hybrid search.
  • Reranking -- "the highest value 5 lines of code you'll add. The chunk ranking shifted a lot. More than you'd expect. Reranking can many times make up for a bad setup if you pass in enough chunks."
  • Chunking Strategy -- * this takes a lot of effort, you'll probably be spending most of your time on it.*
  • Metadata to LLM -- Injecting metadata (title, author, etc.) improves context and answers by a lot.
  • Query routing: many users asked questions that can't be answered by RAG (e.g. summarize the article, who wrote this). We created a small router that detects these questions and answers them using an API call + LLM instead of the full-blown RAG set-ups.

Stack

notes

docling

Docling: The Document Alchemist from Towards Data Science. Has a good code tutorial on how to use Docling to extract text, tables, and using OCR to extract hard to extract content.

IBM Granite-Docling: End-to-end document understanding

See also: GitHub - bytedance/Dolphin: The official repo for “Dolphin: Document Image Parsing via Heterogeneous Anchor Prompting”, ACL, 2025.

This dataset was developed using docling: HuggingFaceFW/finepdfs · Datasets at Hugging Face

--

Docling + Go + Bob: The Modern Document Stack

desktop application engineered in Go that brings the power of IBM’s Docling service directly the users’ fingertips. Built with the sleek Fyne framework, this application transforms the complex task of document conversion into an intuitive, point-and-click experience. where IBM Bob is a AI chatbot for code IDEs.

notes

Malloy

Malloy a modern language for analyzing,
transforming, and modeling data.

run: duckdb.table('../data/airports.parquet') -> {
  select:
    id
    code
    city
  limit: 10
}

is equivalent to SELECT id, code, city FROM airports LIMIT 10 in SQL.

In Malloy, all output fields have names.

One of the main benefits of Malloy is the ability to save common calculations into a data model. The data model is made of sources, which can be thought of as tables or views, but with additional information, such as joins, dimensions and measures.

source: airports is duckdb.table('../data/airports.parquet') extend {
  dimension: county_and_state is concat(county, ', ', state)
  measure: airport_count is count()
  measure: average_elevation is avg(elevation)
}

source can be imported into another using an import statement -- import "airports.malloy"

Sources can also contain named views.

Joins are also declared as part of sources:

source: flights is duckdb.table('../data/flights.parquet') extend {
  join_one: aircraft on tail_num = aircraft.tail_num
}

where is used for filtering. Filtering can be applied to  aggregate calculation (a mesure)

nested views produce with subtables.

Literals of type date and timestamp are notated with an @, e.g. @2003-03-29 or @1994-07-14 10:23:59. Similarly, years (@2021), quarters (@2020-Q1), months (@2019-03), weeks (@WK2021-08-01), and minutes (@2017-01-01 10:53) can be expressed.

There is a special time literal now, referring to the current timestamp, which allows for relative time filters.

Numeric values can be extracted from time values, e.g. day_of_year(some_date) or minute(some_time)

Time ranges -- @2003 to @2005

The output from one stage of a query can be passed into another stage using -> ( Pipeline )

More Reading

notes

Arabic

I was interested in learning to read Arabic script and even bought a book with CD on it, in early 2020s. Didn't get around to it, and I left the book in India.

This is an interesting tutorial - Writing Arabic in English.

notes

Jujutsu

Jujutsu  is a version control system with a significantly simplified mental model and command-line interface compared to Git, without sacrificing expressibility or power (in fact, you could argue Jujutsu is more powerful). Stacked-diff workflows, seamless rebases, and ephemeral revisions are all natural with jj, and it uses Git as a backend, which means you can begin using it non-destructively with a single command and can always drop back down to Git if you need to. -- from Jujutsu For Busy Devs | maddie.wtf; Jul 2025.

I'm still investigating (Aug, 2025), and hope to slowly learn why and how. Perhaps more links to read.

See also: Jujutsu for everyone, and Switch to Jujutsu already

notes

Hetzner

I have been using Hetzner for a while, and this page is to keep notes on things that might be beneficial on Hetzner.

notes

Dokploy

Why use Dokploy -- DIY Serverless (with coreOS + dokploy)

load that VPS with a bomb-proof no-config OS like coreOS, and put Dokploy on it for a no-fuss container service UI. It gives you the hassle-free experience of a Heroku-like platform, but with the cost and independence of a VPS.

This way you can have your cake and eat it too: most of the benefits of serverless, with most of the benefits of running your own VPS.

Similar software mentioned in this HN discussion of the above article: Harbormaster

notes

AI POC to Production

Via Jason Liu on LinkedIn

The gap between AI demos and production isn't about reasoning quality anymore, it's about context.

Three critical lessons worth stealing:

  1. Domain experts are your secret weapon

• Build custom UIs that optimize for high-quality reviews, not just volume • Collect four outputs from every review: performance metrics, failure modes, suggested improvements, and input-output pairs • Use these to create failure mode datasets you can continuously test against

  1. Prompting beats fine-tuning for vertical AI

• Modern LLMs already have strong domain reasoning, they lack customer-specific context • Skip the brittle prompt engineering and focus on context augmentation instead • Use domain knowledge retrieval at inference time to inject customer-specific definitions and workflows

  1. Trust requires more than good performance

• Monitor production outputs with domain expert reviews (start with humans, not LLM judges) • Define clear sampling strategies as you scale: uncertainty-based, outlier detection, stratified sampling • Have response protocols ready when performance dips below SLAs

An important question to ask is: What's your system for incorporating domain expertise?

Teams pay too much attention to model selection but neglect the process for continuously baking in expert knowledge. Reliable vertical AI implementations aren't just about picking the right model, they're about building flywheels that systematically improve with use.

notes

LanceDB

LanceDB · GitHub where

  1. lancedb/lance is "Modern columnar data format for ML and LLMs implemented in Rust. Convert from parquet in 2 lines of code for 100x faster random access, vector index, and data versioning. Compatible with Pandas, DuckDB, Polars, Pyarrow, and PyTorch"
  2. lancedb/lancedb: is "embedded retrieval engine for multimodal AI."

notes

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