Hello.

I am Paul Kinlan.

This is my project area - some for fun, some real-world.

Countdown timer

I created a simple countdown timer web app that lets you track time until important events. It's built with a focus on no-code using Replit, including a cool integration with Black Forrest Labs' image API via Replit's Agent feature. Check out the live app and source code! Read More

I lead the Chrome Developer Relations team at Google.

We want people to have the best experience possible on the web without having to install a native app or produce content in a walled garden.

Our team tries to make it easier for developers to build on the web by supporting every Chrome release, creating great content to support developers on web.dev, contributing to MDN, helping to improve browser compatibility, and some of the best developer tools like Lighthouse, Workbox, Squoosh to name just a few.

I love to learn about what you are building, and how I can help with Chrome or Web development in general, so if you want to chat with me directly, please feel free to book a consultation.

I'm trialing a newsletter, you can subscribe below (thank you!)

Reactive Agents

I'm exploring a new way to build reactive applications using an 'Agents' API. Inspired by Preact Signals and my previous reactive-prompt project, this toolkit uses Chrome's prompt API. Each Agent has a persona, task, and context, reacting to input changes. You can chain Agents, passing data between them. I've created different Agent types like a 'Human' Agent representing user input and a 'ToolCaller' that can execute JavaScript functions based on context. This experiment explores data-flow-driven LLM applications, similar to Breadboard, and leverages Preact Signals for managing this flow. Read More

Reactive Prompts

I've created a small library called reactive-prompt that lets you easily manage prompts in a reactive way, similar to how you'd build a web app with React. It uses Preact's Signals to track changes to inputs and automatically re-runs prompts when those inputs update. This allows for efficient chaining of prompts, where the output of one becomes the input of another, and only necessary prompts are re-evaluated. The library currently uses Chrome's experimental prompt API but could be adapted for other providers like OpenAI or Gemini. It makes complex prompt flows much more manageable. Read More

transformerjs-breadboard-kit

A TransformerJS kit for breadboard Read More

The Critic

A tool that helps me to review text from a number of different perspectives Read More

tldr-site.vercel.app

A simple service to summarize search and news snippets. Read More

Claude Breadboard Kit

Claude Breadboard Kit - a simple way to interface with the Claude API Read More

tldr.rocks

tldr.rocks is a simple site that summarizes the sentiment of Hacker News posts. Read More

Wordhelper.app

A simple web app that helps you with Crosswords and Codewords Read More

Puppeteer go

A simple node library for Puppeeter Read More

file-drop custom element

A simple drag and drop custom element that accepts files Read More

JakeHorner

Possibly the world's best jake. Read More

Puppeteer as a service

Being able to run a browser on a server is one of the most powerful things to hit the web. Read More

Topicdeck

Topicdeck is the module that aggregates a selection of RSS feeds into a tweetdeck style view Read More

DOMCurl

Curl, but can run JavaScript Read More

GDE Deck

An aggregation of our GDE's content Read More

Airhorner Custom Element

Possibly the world's best airhorn now as a custom element Read More

QR Snapper

The fastest QR Code scanner on the web Read More

Airhorner

Possibly the world's best airhorn. Read More

Web Fundamentals

Best pratices for web development defined and delivered Read More