absorb.md

Simon Willison

Chronological feed of everything captured from Simon Willison.

simonw starred lance-format/lance: Open Lakehouse Format for Multimodal AI. 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 with more integrations coming..

Open Lakehouse Format for Multimodal AI. 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 with more integrations coming... Stars: 6314

simonw starred promptfoo/promptfoo: Test your prompts, agents, and RAGs. Red teaming/pentesting/vulnerability scanning for AI. Compare performance of GPT, Claude, Gemini, Llama, and more. Simple declarative configs with command line and CI/CD integration. Used by OpenAI and Anthropic.

Test your prompts, agents, and RAGs. Red teaming/pentesting/vulnerability scanning for AI. Compare performance of GPT, Claude, Gemini, Llama, and more. Simple declarative configs with command line and CI/CD integration. Used by OpenAI and Anthropic.. Stars: 19992

XSS Vulnerability and Mitigation in Claude Code Timeline Viewer

A Cross-Site Scripting (XSS) vulnerability was identified in the Claude Code Timeline Viewer's markdown rendering function. The original implementation failed to properly sanitize user-supplied URLs and attribute values within markdown links, allowing for JavaScript injection. The vulnerability was mitigated by integrating the DOMPurify library, which now sanitizes the HTML output of the markdown renderer, effectively preventing malicious script execution and attribute manipulation while preserving intended markdown functionality, including newly added table support.

Claude Code Timeline Viewer Enhanced with User Prompts Extraction Button

Simon Willison iteratively enhanced claude-code-timeline.html, a client-side viewer for Claude Code .jsonl session logs, by adding a "Copy prompts" button above the timeline/detail panels. The button filters events by type='user', role='user', and content-type='text', extracts text content from matching messages, concatenates with double newlines, and copies to clipboard using existing copyText utility. A 2-second "Copied!" state feedback was added via setTimeout for improved UX. Implementation used precise Edit tool calls on HTML structure, els object, and script logic without disrupting core timeline/filtering functionality.

Python Script Modified for Consistent Claude Project Path

A Python script, `claude_code_to_gist.py`, was modified to ensure consistent project folder referencing. Previously, it used a relative path, but now it explicitly points to `~/.claude/projects`, enhancing predictability and portability for locating `.jsonl` session files for Gist publication.

Enhanced Claude Code Timeline Viewer with Prompt Modals

The Claude Code Timeline Viewer is being upgraded to include a 'Show prompts' button that reveals a modal dialog containing user prompts. This enhancement, inspired by the Codex timeline functionality, improves prompt visibility and user experience by decoupling prompt viewing from immediate clipboard operations. The update involves adding new HTML elements, CSS styling, and JavaScript functions to manage the modal's state and interactions, ensuring a more intuitive way to access and copy user inputs.

LLM CLI Logs Enhancement: Adding Formatted Options to Markdown Output

The `llm logs` command-line interface has been enhanced to include a dedicated "## Options" section in its Markdown output for individual log entries. This new section, formatted as a YAML-like list, displays model-specific options when they are present in the `options_json` field of the log record. This improvement provides clearer visibility into the parameters used for each model interaction directly within the human-readable log view, streamlining analysis for technical users.

Refining Media Resolution Handling in llm-gemini Plugin

The conversation focuses on optimizing how the `llm-gemini` plugin handles media resolution for Gemini models, particularly to accurately reflect user intent in logging and efficiently interact with the API. The key change involves modifying the default `media_resolution` option to `None` and refining the request-building logic to only explicitly set a resolution when specified by the user or when a YouTube URL necessitates a low-resolution default for processing.

TDD-Driven Development of a Minimal Uvicorn Hello World Application

A minimal Uvicorn-based "Hello, World!" ASGI application was developed and thoroughly tested using a Test-Driven Development (TDD) approach. The project adheres to a strict dependency constraint, only utilizing Uvicorn for application runtime, with pytest and pytest-asyncio serving as development dependencies for robust testing. Comprehensive project documentation including a specification, README, and pyproject.toml was generated.

FastAPI/Uvicorn Proxy Server Adds Custom Headers for Performance Monitoring

A FastAPI and Uvicorn-based HTTP proxy server has been developed and tested. This proxy transparently forwards all HTTP methods and preserves path, query strings, and request bodies to `simonwillison.net`. It enhances responses with `x-proxied-by: uvicorn` and `x-response-time-microseconds` headers, effectively demonstrating how to inject custom metadata and performance metrics into proxied traffic.

Claude Code Timeline Viewer Enhanced to Filter Summary and Meta Prompts

The Claude Code Timeline Viewer, a web-based tool for visualizing Claude Code sessions, has been updated. The `extractUserPrompts` function in the `claude-code-timeline.html` file was modified to filter out user prompts marked as `isCompactSummary: true` or `isMeta: true`. This enhancement prevents auto-generated context summaries and meta-messages from appearing in the user prompt timeline, improving the clarity of user interaction analysis.

CSS Grid Lanes Polyfill: Implementation and Challenges of Masonry Layout Emulation

The provided content explores a polyfill for the experimental CSS Grid Lanes feature, aimed at enabling masonry-style layouts across browsers. The core challenge lies in accurately parsing and applying CSS properties like `display: grid-lanes`, `grid-template-columns`, `gap`, and `item-tolerance` in environments lacking native support. The polyfill must overcome browser-specific interpretations of invalid CSS to correctly emulate the layout algorithm, which places items in the shortest available "lane" to optimize visual flow.

Simon Willison Denies X Access

Simon Willison has not been granted access to the X platform, contrary to potential speculation. This insight clarifies the current status of his platform access.

Streaming Experts in Mixture-of-Experts Models

The potential for "streaming experts" within a Mixture-of-Experts (MoE) model suggests a capability to dynamically allocate computational resources. This approach could enable more efficient processing by engaging specialized expert models only when relevant to the input stream. It implies an architectural evolution towards adaptive and on-demand expert utilization in large language models.

Memory Requirements for LLM Inference

Running large language models (LLMs) for inference, especially those with high parameter counts, typically necessitates significant GPU memory. While some quantized models can operate on consumer-grade hardware like a 256GB or 512GB Mac Studio, larger, unquantized models predominantly require high-end NVIDIA GPU servers to ensure sufficient memory and computational throughput.

Image Generation Models Ingest Social Media Conversations For Training Data

Image generation models are incorporating social media comments and descriptive text as training data, as evidenced by precise textual details appearing in generated images that mirror comments from posts. This suggests that the models are not only processing visual information but also integrating contextual textual descriptions from online interactions, even for unusual prompts. This expansive approach to data ingestion implies a broader definition of

Anthropic’s Project Glasswing: A Model Access Strategy for Security Research

Anthropic has made its advanced Opus-beating model exclusively available to partnered security research organizations under "Project Glasswing." This selective distribution strategy is likely a response to recent concerns from credible security experts, aiming to control access to powerful AI models for responsible research and development.

Older entries →