Simon Willison’s Weblog

Subscribe

July 2023

73 posts: 4 entries, 20 links, 7 quotes, 42 beats

July 1, 2023

Release asgi-proxy-lib 0.1a0 — An ASGI function for proxying to a backend over HTTP

Once you've found something you're excessively interested in, the next step is to learn enough about it to get you to one of the frontiers of knowledge. Knowledge expands fractally, and from a distance its edges look smooth, but once you learn enough to get close to one, they turn out to be full of gaps.

Paul Graham

# 4:14 pm / paul-graham

July 2, 2023

Release datasette-render-markdown 2.2 — Datasette plugin for rendering Markdown
TIL Custom Jinja template tags with attributes — I decided to implement a custom Jinja template block tag for my [datasette-render-markdown](https://datasette.io/plugins/datasette-render-markdown) plugin. I wanted the tag to work like this:
TIL Syntax highlighted code examples in Datasette — I wanted to add syntax highlighting to the new tutorial [Data analysis with SQLite and Python](https://datasette.io/tutorials/data-analysis).

Data analysis with SQLite and Python. I turned my 2hr45m workshop from PyCon into the latest official tutorial on the Datasette website. It includes an extensive handout which should be useful independently of the video itself.

# 4:48 pm / python, speaking, sqlite, my-talks, datasette

July 4, 2023

Stamina: tutorial (via) Stamina is Hynek’s new Python library that implements an opinionated wrapper on top of Tenacity, providing a decorator for easily implementing exponential backoff retries. This tutorial includes a concise, clear explanation as to why this is such an important concept in building distributed systems.

# 8:13 pm / python, software-architecture, hynek-schlawack

July 8, 2023

TIL Python packages with pyproject.toml and nothing else — I've been using `setuptools` and `setup.py` for my Python packages for a long time: I like that it works without me having to think about installing and learning any additional tools such as [Flit](https://flit.pypa.io/) or [pip-tools](https://pip-tools.readthedocs.io/) or [Poetry](https://python-poetry.org/) or [Hatch](https://github.com/pypa/hatch).

Tech debt metaphor maximalism (via) I’ve long been a fan of the metaphor of technical debt, because it implies that taking on some debt is OK provided you’re strategic about how much you take on and how quickly you pay it off. Avery Pennarun provides the definitive guide to thinking about technical debt, including an extremely worthwhile explanation of how financial debt works as well.

# 5:11 am / software-engineering, technical-debt, avery-pennarun

July 9, 2023

Release pocket-to-sqlite 0.2.3 — Create a SQLite database containing data from your Pocket account

It feels pretty likely that prompting or chatting with AI agents is going to be a major way that we interact with computers into the future, and whereas there’s not a huge spread in the ability between people who are not super good at tapping on icons on their smartphones and people who are, when it comes to working with AI it seems like we’ll have a high dynamic range. Prompting opens the door for non-technical virtuosos in a way that we haven’t seen with modern computers, outside of maybe Excel.

Matt Webb

# 3:29 pm / matt-webb, ai, prompt-engineering, generative-ai, llms, ai-agents

Release strip-tags 0.5.1 — CLI tool for stripping tags from HTML

July 10, 2023

TIL Using OpenAI functions and their Python library for data extraction — Here's the pattern I figured out for using the [openai](https://github.com/openai/openai-python) Python library to extract structured data from text using a single call to the model.

Why We Replaced Firecracker with QEMU (via) Hocus are building a self-hosted alternative to cloud development environment tools like GitPod and Codespaces. They moved away from Firecracker because it’s optimized for short-running (AWS Lambda style) functions—which means it never releases allocated RAM or storage volume space back to the host machine unless the container is entirely restarted. It also lacks GPU support.

# 3:09 pm / qemu, virtualization, firecracker

TIL Using git-filter-repo to set commit dates to author dates — After rebasing a branch with 60+ commits onto `main` I was disappointed to see that the commit dates on the commits (which are a different thing from the author dates) had all been reset to the same time. This meant the GitHub default UI for commits implied everything had been written at the same moment.

At The Guardian we had a pretty direct way to fix this [the problem of zombie feature flags]: experiments were associated with expiry dates, and if your team's experiments expired the build system simply wouldn't process your jobs without outside intervention. Seems harsh, but I've found with many orgs the only way to fix negative externalities in a shared codebase is a tool that says "you broke your promises, now we break your builds".

jbreckmckye

# 6:53 pm / continuous-integration, feature-flags

Lima VM—Linux Virtual Machines On macOS (via) This looks really useful: “brew install lima” to install, then “limactl start default” to start an Ubuntu VM running and “lima” to get a shell. Julia Evans wrote about the tool this morning, and here Adam Gordon Bell includes details on adding a writable directory (by default lima mounts your macOS home directory in read-only mode).

# 7:01 pm / linux, macos, virtualization, julia-evans

TIL Quickly testing code in a different Python version using pyenv — I had [a bug](https://github.com/simonw/llm/issues/82#issuecomment-1629735729) that was only showing up in CI against Python 3.8.

Latent Space: Code Interpreter == GPT 4.5 (via) I presented as part of this Latent Space episode over the weekend, talking about the newly released ChatGPT Code Interpreter mode with swyx, Alex Volkov, Daniel Wilson and more. swyx did a great job editing our Twitter Spaces conversation into a podcast and writing up a detailed executive summary, posted here along with the transcript. If you’re curious you can listen to the first 15 minutes to get a great high-level explanation of Code Interpreter, or stick around for the full two hours for all of the details.

Apparently our live conversation had 17,000+ listeners!

# 10:06 pm / podcasts, speaking, ai, swyx, generative-ai, chatgpt, llms, code-interpreter, podcast-appearances, coding-agents

Release ttok 0.2 — Count and truncate text based on tokens

July 12, 2023

Release llm 0.5 — Access large language models from the command-line

My LLM CLI tool now supports self-hosted language models via plugins

Visit My LLM CLI tool now supports self-hosted language models via plugins

LLM is my command-line utility and Python library for working with large language models such as GPT-4. I just released version 0.5 with a huge new feature: you can now install plugins that add support for additional models to the tool, including models that can run on your own hardware.

[... 1,656 words]

Release llm-palm 0.1 — Plugin for LLM adding support for Google's PaLM 2 model
Release llm-gpt4all 0.1 — Plugin for LLM adding support for the GPT4All collection of models
Release llm-markov 0.1 — Plugin for LLM adding a Markov chain generating model
Release llm-mpt30b 0.1 — LLM plugin adding support for the MPT-30B language model

claude.ai. Anthropic’s new Claude 2 model is available to use online, and it has a 100k token context window and the ability to upload files to it—I tried uploading a text file with 34,000 tokens in it (according to my ttok CLI tool, counting using the GPT-3.5 tokenizer) and it gave me a workable summary.

# 4:39 pm / ai, generative-ai, llms, anthropic, claude, llm-release

What AI can do with a toolbox... Getting started with Code Interpreter. Ethan Mollick has been doing some very creative explorations of ChatGPT Code Interpreter over the past few months, and has tied a lot of them together into this useful introductory tutorial.

# 8:57 pm / ai, openai, generative-ai, chatgpt, llms, ethan-mollick, code-interpreter, coding-agents

July 13, 2023

TIL Auto-formatting YAML files with yamlfmt — I decided to see if there was an equivalent of [Black](https://pypi.org/project/black/) or [Prettier](https://prettier.io/) for YAML files. I found [yamlfmt](https://github.com/google/yamlfmt) from Google.

Not every conversation I had at Anthropic revolved around existential risk. But dread was a dominant theme. At times, I felt like a food writer who was assigned to cover a trendy new restaurant, only to discover that the kitchen staff wanted to talk about nothing but food poisoning.

Kevin Roose

# 10:23 pm / ethics, ai, generative-ai, anthropic, kevin-roose, ai-ethics

2023 » July

MTWTFSS
     12
3456789
10111213141516
17181920212223
24252627282930
31