Curate your own newspaper with RSS
https://www.citationneeded.news/curate-with-rss/
Escape newsletter inbox chaos and algorithmic surveillance by building your own enshittification-proof newspaper from the writers you already read
My 2.5 year old laptop can write Space Invaders in JavaScript now, using GLM-4.5 Air and MLX
https://simonwillison.net/2025/Jul/29/space-invaders/
Two years ago when I first tried LLaMA I never dreamed that the same laptop I was using then would one day be able to run models with capabilities as strong as what I’m seeing from GLM 4.5 Air—and Mistral 3.2 Small, and Gemma 3, and Qwen 3, and a host of other high quality models that have emerged over the past six months.
dkamm/pr-quiz: A GitHub Action that uses AI to generate a quiz from your pull request
https://github.com/dkamm/pr-quiz
AI Agents are starting to write more code. How do we make sure we understand what they're writing?
PR Quiz is a GitHub Action that uses AI to generate a quiz based on a pull request. It can help you, the human reviewer, test your understanding of your AI Agent's code. (And block you from deploying code you don't understand!)
Using AgentQL and Pipedream to Fix Missing RSS Feeds
https://www.raymondcamden.com/2025/07/23/using-agentql-and-pipedream-to-fix-missing-rss-feeds
Last week I blogged about how I used AgentQL to scrape a web page, this blog to be precise, into pure data. If you don't remember, AgentQL lets you pass a simple query string that is run against a web page and parsed into data. So for example, I was able to use this query on my home page to get a list of entries in pure data:
{
blogposts[] {
url
title
date
}
}
The REST API was incredibly easy, and I demonstrated in BoxLang how I could use AgentQL to turn my blog's home page into a much simpler, smaller, HTML version. This of course begs the question, how else could we transform it? What about creating a RSS feed for a blog that doesn't have one!
Developing our position on AI - Blog - Recurse Center
https://www.recurse.com/blog/191-developing-our-position-on-ai
I think a useful analogy would be to compare LLMs to e-bikes. If your goal is to get somewhere quickly, an e-bike is definitely advantageous compared to a bike with no e-assist. If your goal is to become a better / stronger cyclist, an e-bike isn’t really going to help you with that.
Split Flap
https://fx.hot.page/split-flap?ref=sidebar
As an ode to the train stations of my childhood, I bring you a skeuomorph split-flap web component
They Let Me Live
https://blog.bovid.space/they-let-me-live
"The friend-guild shows up for all kinds of people in need. We're visiting nurses. We're aid advocates. We're often first responders. My grandma lost her legs to a mine in the Horrors, and there wasn't enough medicine to keep it from getting a lot worse. I volunteered when I was sixteen so I could be the one appointed to feed her and bathe her, because she found it more dignified when it was family. She spent her last years in pain, but the guy who laid the mine? Who knows if they'll ever think about it? What would it change, if they did? The mine was laid. We can disarm the mines, we can demolish the munitions factories, we can even abolish war itself, but there was no restoring her. We have to live with the damage. We have to live in reality."
It's time for modern CSS to kill the SPA - Jono Alderson
https://www.jonoalderson.com/conjecture/its-time-for-modern-css-to-kill-the-spa/
If you’re still building your site as an SPA for the sake of “smoothness,” you’re solving a problem the browser already fixed – and you’re paying for it in complexity, performance, and maintainability.
Announcing Toad - a universal UI for agentic coding in the terminal – Will McGugan – Will McGugan's essays
https://willmcgugan.github.io/announcing-toad/
I called it Textual Code originally, which became “Toad” (the same way as Hodor got his name). Although purely a UI prototype with mocked up API interactions, it was enough for me to confidently say this is how you build a terminal based AI coding agent. We can have a jank free interface that remains light-weight and snappy without giving up the interactions we have all committed to muscle memory.
Synthetic Survey Data? It's Not Data
https://quantuxblog.com/synthetic-survey-data-its-not-data
My personal conclusion — as a matter of logic, empirical findings, statistical reasoning, and scientific principles — is that synthetic data has no place in survey research. I also believe the purported use cases for synthetic data are unconvincing; alternative approaches are superior in their results and are less risky in practice. And there are important questions about research ethics that each of us should consider.
Death by AI - Dave Barry’s Substack
https://davebarry.substack.com/p/death-by-ai
I found out about my death the way everybody finds out everything: from Google.
vanilla-extract — Zero-runtime Stylesheets-in-TypeScript.
https://vanilla-extract.style/
Use TypeScript as your preprocessor. Write type‑safe, locally scoped classes, variables and themes, then generate static CSS files at build time.
Tailwind is the Worst of All Worlds
https://colton.dev/blog/tailwind-is-the-worst-of-all-worlds/
Tailwind is the worst of all worlds. It is a regrettable step backwards that takes everything bad about CSS and modern web development and brings it all together in one library.
Qwen3-Coder: Agentic Coding in the World | Qwen
https://qwenlm.github.io/blog/qwen3-coder/
Today, we’re announcing Qwen3-Coder, our most agentic code model to date. Qwen3-Coder is available in multiple sizes, but we’re excited to introduce its most powerful variant first: Qwen3-Coder-480B-A35B-Instruct — a 480B-parameter Mixture-of-Experts model with 35B active parameters which supports the context length of 256K tokens natively and 1M tokens with extrapolation methods, offering exceptional performance in both coding and agentic tasks. Qwen3-Coder-480B-A35B-Instruct sets new state-of-the-art results among open models on Agentic Coding, Agentic Browser-Use, and Agentic Tool-Use, comparable to Claude Sonnet 4.
Advising Reasonable AI Criticism | Vale.Rocks
https://vale.rocks/posts/ai-criticism
Unfortunately, many of the people who attempt to be candid about AI’s abilities and only wish to inform find themselves in the crossfire between the pro and anti crowds, which more often than not drives them away. They’re not AI evangelists, so they fail to fit in with that crowd, and they don’t despise AI, so they aren’t welcome in that crowd.
It's rude to show AI output to people | Alex Martsinovich
https://distantprovince.by/posts/its-rude-to-show-ai-output-to-people/?ref=sidebar
There's nothing wrong with using AI. When you do, you know what you're getting. The transaction is fully consensual. But whenever you propagate AI output, you're at risk of intentionally or unintentionally legitimizing it with your good name, providing it with a fake proof-of-thought. In some cases, it's fine, because you did think it through and adopted the AI output as your own. But in other cases, it is not, and our scrambler brain feels violated.
AI Is Not Other People
https://maxmcd.com/posts/ai-is-not-other-people/
These days when I see something new on the internet. I am immediately suspicious. Did someone make this? How much? How much humanity is in this? If I like a part of it, or see a familiar pattern, can I empathize with the person making it, or was this all cooked up by a small number of keystrokes.
Stop Pretending Chatbots Have Feelings: Media's Dangerous AI Anthropomorphism Problem
https://www.readtpa.com/p/stop-pretending-chatbots-have-feelings
These aren't abstract concerns. Every anthropomorphized headline contributes to a media environment where tech companies can deploy increasingly powerful systems with decreasing accountability. The public deserves better than coverage that treats corporate products as autonomous beings while letting their creators disappear into the background.
“Powered By AI” Is Not a Value Proposition - NN/g
https://www.nngroup.com/articles/powered-by-ai-is-not-a-value-proposition/
Achieving product-market fit and practicing user-centered design become difficult when AI is presented as a product’s main value.
Is “ethical AI” an oxymoron? | hidde.blog
https://hidde.blog/ethical-ai/
If you're not sure if or how you want to use generative AI, I hope this post provides a useful overview of possible considerations. Everyone will need to decide for themselves how much AI usage they find OK for them. I do hope we'll stop pretending not to know how the sausage is made.
How to avoid that your post about AI helps the hype | hidde.blog
https://hidde.blog/ai-hype/?ref=sidebar
When we hype up the technology, we mostly help the people who put money into it. This post isn't about those people or that money, maybe they could use the help… my point is, they are irrelevant when we want to understand the merits of AI. They muddy the waters and overshadow the important questions.
There's plenty of questions to consider. Are LLM's helpful, can they solve specific problems well, should we use them? Sometimes the answer is yes, sometimes it is no. There are grey areas, some find use and others don't.
When AI Codes, What’s Left for me? - CoRecursive Podcast
https://corecursive.com/coding-agents/
Right now, these tools exist, and they’re powerful, and they’re incredibly fun to work with. I could spend my time worrying about obsolescence, or I could spend it building things that I never thought I’d have time to build. I could resist these changes, or I could lean into them and see where they lead me.
Quickstart Guide - yuzu
https://yuzu-mirror.github.io/help/quickstart/
This guide will help you copy all your system files, games, updates, and DLC from your Switch to your computer and organize them in a format yuzu understands. This process should take about 60 to 90 minutes.
My Experience With Claude Code After 2 Weeks of Adventures | sankalp's blog
https://sankalp.bearblog.dev/my-claude-code-experience-after-2-weeks-of-usage/
Overall I feel due to the CLI based nature of Claude Code, it urges the user to do more exploration. I think because of lack of visual UI cues, it encourages exploration. A lot of stuff is hidden and you need to find it. It rewards you for curiosity. It might feel better for this reason for the nerds and power users.
It's happening.
https://brilliantcrank.com/its-happening/?ref=brilliantcrank-newsletter
Let's cut through the corporate speak. These companies aren't just encouraging AI adoption—they're creating a professional caste system. There will be those who can think with machines and those who can't.
The first group will advance, lead, and thrive. The second will stagnate, struggle, and eventually be eliminated.
Amazon Requires Ring Staff to Show AI Use to Get Promoted - Business Insider
https://www.businessinsider.com/amazon-requires-staff-show-ai-use-get-promoted-ring-2025-7?ref=brilliantcrank.com
Siminoff, in his email, said employees seeking a promotion must now describe how they have used generative AI or other AI technologies to improve customer experience or increase operational efficiency. They are also asked to cite specific AI projects they've worked on and the measurable impact achieved.
Am I Becoming Irrelevant? - Jordi Villar
https://jordivillar.com/blog/becoming-irrelevant?ref=sidebar
You’re not irrelevant.
You’re just operating in a layer that doesn’t clap for itself.
And maybe, just maybe, the fact that your team is calm, focused, and shipping, while everything around them is chaotic, is the best evidence of your impact.
Even if no one’s naming it out loud.
Fascism For First Time Founders | Techdirt
https://www.techdirt.com/2025/07/17/fascism-for-first-time-founders/
The United States became the global innovation leader in part because we attracted the best and brightest from around the world. They came here because we had something other countries didn’t: a stable, democratic system where merit mattered more than connections, where you could build something without worrying that tomorrow’s political winds might destroy everything you’ve worked for.
But that’s been trashed. In mere months.
Gaslight-driven development @ tonsky.me
https://tonsky.me/blog/gaslight-driven-development/
So welcome to the new era. AI is not just using tools we gave it. It now has opinions about how these tools should’ve been made. And instead of asking nicely, it gaslights everybody into thinking that’s how it’s always been.
Changelog · Gwern.net
https://gwern.net/changelog
LLM Daydreaming · Gwern.net
https://gwern.net/ai-daydreaming
Despite impressive capabilities, large language models have yet to produce a genuine breakthrough. The puzzle is why.
A reason may be that they lack some fundamental aspects of human thought: they are frozen, unable to learn from experience, and they have no “default mode” for background processing, a source of spontaneous human insight.
sketch blog: The Unreasonable Effectiveness of an LLM Agent Loop with Tool Use
https://sketch.dev/blog/agent-loop
My co-workers and I have been working on an AI Programming Assistant called Sketch for the last few months. The thing I've been most surprised by is how shockingly simple the main loop of using an LLM with tool use is:
def loop(llm):
msg = user_input()
while True:
output, tool_calls = llm(msg)
print("Agent: ", output)
if tool_calls:
msg = [ handle_tool_call(tc) for tc in tool_calls ]
else:
msg = user_input()
How I program with Agents - crawshaw - 2025-06-08
https://crawshaw.io/blog/programming-with-agents
It is easy for the haughty to disregard the work of gluing well-known APIs together as “not real” programming, but it has been the practical experience of my career that for every hour of truly interesting programming I can do, I have had to do 10 or more hours of dreary work with APIs, libraries, dysfunctional compilers, build systems, or obtuse package managers to actually make that hour useful. Having a tool that lets me do 30 minutes of “not real” programming by writing a few carefully constructed sentences, and lets me vacuum the kids' room while it works, preserves momentum.
Writing in the Age of LLMs
https://www.sh-reya.com/blog/ai-writing/
My writing loop is built around one goal: keep the momentum going. I don’t want to get stuck staring at a blank screen or endlessly tweaking sentences that don’t quite land. Most of my writing, whether for a paper or a blog post, follows the same high-level loop: plan an outline (on paper or in my head), generate a draft, read what I wrote, critique it, and revise. The loop can run at different granularities—sometimes I work a sentence at a time; sometimes I write entire sections before editing.
Your AI Product Needs Evals – Hamel's Blog
https://hamel.dev/blog/posts/evals/index.html
I’ve found that unsuccessful products almost always share a common root cause: a failure to create robust evaluation systems.
Frequently Asked Questions (And Answers) About AI Evals – Hamel’s Blog
https://hamel.dev/blog/posts/evals-faq/
This document curates the most common questions Shreya and I received while teaching 700+ engineers & PMs AI Evals. Warning: These are sharp opinions about what works in most cases. They are not universal truths. Use your judgment.
Chain of Thought - Every
https://every.to/chain-of-thought?sort=newest
One Useful Thing | Ethan Mollick | Substack
https://www.oneusefulthing.org/
crawshaw blog
https://crawshaw.io/
Han, Not Solo
https://leehanchung.github.io/
Chip Huyen
https://huyenchip.com/blog/
Eugene Yan
https://eugeneyan.com/
I build recommendation systems and AI-powered experiences that serve customers at scale. Currently, I'm a Principal Applied Scientist at Amazon. Outside of work, I also...
Writing and mumblings - Jason Liu
https://jxnl.co/writing/
I write about a mix of consulting, open source, personal work, and applying llms. I won't email you more than twice a month, not every post I write is worth sharing but I'll do my best to share the most interesting stuff including my own writing, thoughts, and experiences.
Shreya Shankar
https://www.sh-reya.com/blog
Hamel’s Blog
https://hamel.dev/
I am a machine learning engineer with over 20 years of experience. I have worked with innovative companies such as Airbnb and GitHub, which included early LLM research used by OpenAI, for code understanding. I have also led and contributed to numerous popular open-source machine-learning tools. I am currently an independent consultant helping companies build AI products.
Kiro and the future of AI spec-driven software development - Kiro
https://kiro.dev/blog/kiro-and-the-future-of-software-development/
Generative and Agentic AI are poised to bring about a new wave of change. For the first time, there are tools developers can use to translate common-sense descriptions of desired program behavior into real, working systems. Many developers are using these tools already. Prompt-by-prompt, step-by step, they describe the system they want to build to AI code generators. This vibe coding approach to development has already been proven to be a powerful tool. But its power is limited because it is missing one important piece: a full vision of the bigger picture of what a program should do, and why it should do that.
Enter specification.
How I keep up with AI progress (and why you must too) - nilenso blog
https://blog.nilenso.com/blog/2025/06/23/how-i-keep-up-with-ai-progress/
I’ve curated a list of sources that make up an information pipeline that I consider balanced and healthy. If you’re late to the game, consider this a good starting point.
Happy 20th birthday Django! Here’s my talk on Django Origins from Django’s 10th
https://simonwillison.net/2025/Jul/13/django-birthday/#atom-everything
Ten years ago we threw a multi-day 10th birthday party for Django back in its birthtown of Lawrence, Kansas. As a personal celebration of the 20th, I’m revisiting the talk I gave at that event and writing it up here.
Happy 20th birthday Django! | Weblog | Django
https://www.djangoproject.com/weblog/2025/jul/13/happy-20th-birthday-django/
On July 13th 2005, Jacob Kaplan-Moss made the first commit to the public repository that would become Django. Twenty years and 400+ releases later, here we are – Happy 20th birthday Django! 🎉
Cidco MailStation as a Z80 Development Platform - joshua stein
https://jcs.org/2019/05/03/mailstation
The Cidco MailStation is a series of dedicated e-mail terminals sold in the 2000s as simple, standalone devices for people to use to send and receive e-mail over dialup modem. While their POP3 e-mail functionality is of little use today, the hardware is a neat Z80 development platform that integrates a 320x128 LCD, full QWERTY keyboard, and an internal modem.
After purchasing one (ok, four) on eBay some months ago, I've learned enough about the platform to write my own software that allows it to be a terminal for accessing BBSes via its modem or as a terminal for a Unix machine connected over parallel cable.
Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity - METR
https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/
We conduct a randomized controlled trial (RCT) to understand how early-2025 AI tools affect the productivity of experienced open-source developers working on their own repositories. Surprisingly, we find that when developers use AI tools, they take 19% longer than without—AI makes them slower.
Phrase origin: Why do we "call" functions? – Arthur O'Dwyer – Stuff mostly about C++
https://quuxplusone.github.io/blog/2025/04/04/etymology-of-call/
On StackExchange, someone asks why programmers talk about “calling” a function. Several possible allusions spring to mind:
Calling a function is like calling on a friend — we go, we stay a while, we come back.
Calling a function is like calling for a servant — a summoning to perform a task.
Calling a function is like making a phone call — we ask a question and get an answer from outside ourselves.
The true answer seems to be the middle one — “calling” as in “calling up, summoning” — but indirectly, originating in the notion of “calling for” a subroutine out of a library of subroutines in the same way that we’d “call for” a book out of a closed-stack library of books.
Most RESTful APIs aren’t really RESTful | Florian Krämer
https://florian-kraemer.net//software-architecture/2025/07/07/Most-RESTful-APIs-are-not-really-RESTful.html
Fielding’s rules emphasize that a truly RESTful API should embrace hypermedia (HATEOAS) as the central mechanism for interaction, not just use HTTP as a transport. REST is protocol-independent at its core; HTTP is simply a convenient way of using it. Clients should discover and navigate resources dynamically through links and standardized relations embedded in representations — not rely on hardcoded URI structures, types, or external documentation.
This makes REST systems loosely coupled, evolvable, and aligned with how the web itself operates: through representation, discovery, and transitions. REST isn’t about exposing your internal object model over HTTP — it’s about building distributed systems that behave like the web.
ADD / XOR / ROL: A non-anthropomorphized view of LLMs
https://addxorrol.blogspot.com/2025/07/a-non-anthropomorphized-view-of-llms.html
The moment that people ascribe properties such as "consciousness" or "ethics" or "values" or "morals" to these learnt mappings is where I tend to get lost. We are speaking about a big recurrence equation that produces a new word, and that stops producing words if we don't crank the shaft.
Serving 200 million requests per day with a cgi-bin | Jake Gold
https://jacob.gold/posts/serving-200-million-requests-with-cgi-bin/
Using CGI on modest hardware, it’s possible to serve 2400+ requests per second or 200M+ requests per day.
It’s almost never going to be the best choice these days, but it’s definitely viable.
Serving 200 million requests per day with a cgi-bin
https://simonwillison.net/2025/Jul/5/cgi-bin-performance/#atom-everything
Maybe we should start coding web applications like it's 1998, albeit with Go and Rust!
To clarify, I don't think most people should do this. I just think it's interesting that it's not as bad an idea as it was ~25 years ago.
operators, not users and programmers
https://jyn.dev/operators-not-users-and-programmers/
spreadsheets are hugely successful. Felienne Hermans, who has spent her career studying spreadsheets, attributes this success to "their immediate feedback system and their continuous deployment model": the spreadsheet shows you its result as soon as you open it, and it requires no steps to run other than to install Excel and double-click the file.
KAPLAY.js, HTML5 Game library for JavaScript and TypeScript. Free & Open Source.
https://kaplayjs.com/
KAPLAY (/ˈkæpleɪ/) is a JavaScript and TypeScript game library that makes it easy to create games for the web. It's free, open-source and fun.
Getting Started | Milkdown
https://milkdown.dev/docs/guide/getting-started
Milkdown is a powerful WYSIWYG markdown editor that combines the simplicity of markdown with the flexibility of a modern editor. It's designed to be lightweight yet extensible, making it perfect for both simple and complex editing needs.
Why Matt Mullenweg went to war over WordPress | The Verge
https://www.theverge.com/decoder-podcast-with-nilay-patel/693052/automattic-ceo-matt-mullenweg-wordpress-drama-wp-engine-open-source
The head of the WordPress project on the WP Engine lawsuit, Automattic turning 20, and what’s next for the web.
Joshua Schachter: How I turned frustration into creative success | TED Talk
https://www.ted.com/talks/joshua_schachter_how_i_turned_frustration_into_creative_success
Sharing his accidental journey to viral fame, digital pioneer Joshua Schachter reveals how programming a robot to make deliberate mistakes in otherwise deeply satisfying plotter art sparked millions of views (and hilariously strong reactions). Learn how to turn your frustration into creative success — and discover how quirky, unexpected art can captivate audiences worldwide. (Created in collaboration with Ignite Talks)
Strange loop - Wikipedia
https://en.wikipedia.org/wiki/Strange_loop
A strange loop is a cyclic structure that goes through several levels in a hierarchical system. It arises when, by moving only upwards or downwards through the system, one finds oneself back where one started. Strange loops may involve self-reference and paradox. The concept of a strange loop was proposed and extensively discussed by Douglas Hofstadter in Gödel, Escher, Bach, and is further elaborated in Hofstadter's book I Am a Strange Loop, published in 2007.
A tangled hierarchy is a hierarchical consciousness system in which a strange loop appears.
On Consciousness
https://v1tali.com/ai-consciousness
The question isn’t whether these systems are conscious now - they’re not. The question is whether we’ll recognise consciousness when it arrives in forms we never expected. Our response will define not just the future of AI, but the future of humanity itself.
I Still Use Vim. I Also Use AI. It Still Feels Like Me. - GoDaddy Blog
https://www.godaddy.com/resources/news/i-still-use-vim-i-also-use-ai-it-still-feels-like-me
Like many engineers, I’m still figuring out where AI fits best. But what’s clear is that it works best when it complements the way I already like to build software. It helps me move faster, stay in flow, and focus more on the parts of the work I enjoy, without losing the parts that matter most.
Resync games
https://resync-games.com/blog/engineering/llms-as-compiler
But if we squint, a compiler transforms an input into an output. If we treat the code as an intermediate layer, viewing the input as context and the output as features, then we can demonstrate that the compiler is reliable through evaluations and testing. And importantly, we don't have to get the output right in the first go, we can let it iterate over and over until it gets it right. A new kind of compiler.
Tools: Code Is All You Need | Armin Ronacher's Thoughts and Writings
https://lucumr.pocoo.org/2025/7/3/tools/
In my view, MCP suffers from two major flaws:
It isn’t truly composable. Most composition happens through inference.
It demands too much context. You must supply significant upfront input, and every tool invocation consumes even more context than simply writing and running code.
Run Your Own AI – AnthonyLewis.com
https://anthonylewis.com/2025/06/01/run-your-own-ai/
Here are some instructions that I shared with my co-workers. These are specifically for Macs with an M-series processor. On a PC, skip the steps about MLX and use Ollama to download a model. Then install the llm-llama plugin instead of llm-mlx.
Scripting News: My new linkblog feed
http://scripting.com/2025/07/01/114429.html?title=myNewLinkblogFeed
I only want really good feeds. It's time to stop being so careless about what we transmit to the world. If we want an open web we're all going to have to be good gardeners. It's like a food system where all the food is grown by family farmers and I'm running a restaurant, and only want the good stuff, and we want it to look good too! :-)#
Kevin Webb: "One of the best examples of LLM developer tooling I've heard is from a team that supports software from the 80s-90s...."
https://bsky.app/profile/triangulator.org/post/3lqqgkkst2k2r
One of the best examples of LLM developer tooling I've heard is from a team that supports software from the 80s-90s. Their only source of documentation is *video interviews* with retired employees. So they feed them into transcription software and get summarized searchable notes out the other end.
TIL: Using Playwright MCP with Claude Code
https://simonwillison.net/2025/Jul/1/using-playwright-mcp-with-claude-code/#atom-everything
I decided to figure out how to use the official Playwright MCP server with Claude Code.
It turns out it's easy:
claude mcp add playwright npx '@playwright/mcp@latest'
claude
Building a Personal AI Factory (July 2025 snapshot)
https://www.john-rush.com/posts/ai-20250701.html
I keep several claude code windows open, each on its own git-worktree. o3 and sonnet 4 create plans, sonnet 3.7 or sonnet 4 execute the plan, and o3 checks the results against the original ask. Any issues found are fed back into the plan template and the code is regenerated. The factory improves itself.
daaain/claude-code-log: A Python CLI tool that converts Claude Code transcript JSONL files into readable HTML format.
https://github.com/daaain/claude-code-log
A Python CLI tool that converts Claude Code transcript JSONL files into readable HTML format.