Hello.

I am Paul Kinlan.

I lead the Chrome and the Open Web Developer Relations team at Google.

Some clean-up

Reading time: 1 minute

There's not that many people who read this blog - but for those of you who do, I'm making some minor changes. Removed the journal - I stopped personal journalling in the middle of the year (I still do it for work) - I don't think there was a huge amount of value in the bulleted lists for everyone else, so I've removed it from the blog. Added projects to the RSS feed. 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'm trialing a newsletter, you can subscribe below (thank you!)

Chat GPT Code Interpreter and Browser Compat Data

Reading time: 5 minutes

One of the problems that I have with LLMs is knowing when they will be useful and how to apply them to any given problem. A lot of it just feels alien to me because with a background in computer programing I've been trained over 30 years that we frequently will get a deterministic set of results. I like to experiment and break new mental ground, so when I saw that Chat GPT had a code interpreter, I was was interested and yet had no clue what I would do with it. Read More

IndexedDB as a Vector Database

Reading time: 3 minutes

As I started to play with Open AI and some Generative ML ideas, I said "There are database companies that just focus on Vector search :mind-blown:". My mind is still blown that this is an industry, but as I play with Polymath and Pinecone it is clear that they are useful services, and the tinkerer that I am wanted to tinker about with the idea of running this type of database directly in the browser. Read More

Bookmarklet: Eyedropper

Reading time: 1 minute

I was reading Stefan Judis's awesome "Web Weekly" and in this weeks post he mentioned the EyeDropper API in Chromium Desktop browsers only - I totally missed this and because I frequently have to grab color information for slide design I need something quick to hand. Bookmarklets are quick to hand, so I built one for you. const e = new EyeDropper(); e.open().then(d => { alert(d.sRGBHex); }).catch(console.error) EyeDropper <— Just drag this to your bookmark bar. Read More

Querying browser compat data with a LLM

Reading time: 3 minutes

I've been noodling about a lot with LLMs recently and naturally I wanted to see if they could help me with my role. There's a lot of places I've found them to be useful, but an area where I've struggled is their data sources not being up to date with the current state of the web. I build a lot of sites and speak to a lot of Web Developers and a huge problem we have is knowing what APIs are supported so that I can use and rely on it in my sites without having to worry about compatibility as much. Read More

Building Ask Paul

Reading time: 5 minutes

I've been doing a lot of experimentation with Generative Machine Learning and one of the demo's that I've build is called "Ask Paul". You can ask me nearly any front-end web development question and the software will give you a direct answer if it can and links to further reading across the sites that I create content for (this blog, web.dev and developer.chrome.com) You can try it with a couple more queries: Read More

Talk: "Aiming for the future" at Bangor University

Reading time: 3 minutes

I was honoured to be able to present at the "School of Computer Science and Electronic Engineering" last week with a talk called "Aiming for the Future" [pdf]. I had a lot of fun creating this talk where I could go from the earliest computing with the Difference Engine all the way to today and try and talk about the evolutions of computing and possibility at every transition (I tied the transitions to delivery of content/data). Read More

BCD - Experimental APIs

Reading time: 2 minutes

This is just a small update. I've spent a bit of time adding some features to "time-to-stable". As I try to think about what is stable across the web platform it is useful to think about what APIs are marked as experimental. I added a new page to the site which lets you discover the APIs across a selected list of browsers that are still marked as experimental in BCD (Browser Compat Data). Read More

The local-only web

Reading time: 3 minutes

I was very happy to do a keynote session for the Tokyo and New York Google Developer Groups. I love doing talks that are centred around "The web in 202x" and these where no different. The New York keynote was a little different to the event in Tokyo because I had an extra 15 minutes to talk, and I like talking. One area that I got to spend more time on was using talking about areas that I am personally excited in 2023 and beyond. Read More

Support during layoffs

Reading time: 1 minute

If you are impacted by any of the layoffs at Google or across the industry, please reach out and I will try and help in any way that I can. I am happy to make connections and intros, LinkedIn recommendations, resume review, interview prep, a listening ear. For over a year now I've been running calls and I want to try and help you all as much as I can. My calendar is open, please use me in anyway that you think I might be able to help. Read More

Using ML to Create a Simple Lighthouse Audit to Detect a Button

Reading time: 4 minutes

This post wraps up the series of posts I created about applying ML to some developer tasks that are hard to do programatically. Specifically, I wanted to create a tool that would let me detect if an anchor on a page <a> was styled to look like a button or not (woot, it worked!) You can check out the previous posts here: Scraping images of links and buttons to train an ML model Read More

Creating a Lighthouse Gatherer to generate high-res screenshots for your Audit

Reading time: 2 minutes

I created a custom Lighthouse Gatherer that captures high-resolution screenshots of web pages, using the Puppeteer API. Despite the complexity of the task, the process was surprisingly easy and efficient. Read More

Creating a web app with Deno, Fresh and TensorflowJS

Reading time: 3 minutes

After I trained a simple machine learning model that can detect if an image looks like a link or a button. I created a web app to help me test it using Deno, Fresh and TensorflowJS. My demo allows for dragging and dropping many images on a page and automatically classifying them. Read More

Training the Button detector ML model

Reading time: 5 minutes

A guide on how I trained an ML model that detects Buttons and Links in a web page. Read More

Button and Link Scraping for ML training

Reading time: 5 minutes

After over 20 years I'm getting back in to ML. I looking at a simple (but practical) example that I can get back up to speed on Read More

Adding ActivityPub to your static site

Reading time: 11 minutes

This is a short post about I how I added ActivityPub to my Hugo static blog Read More

Post Deploy Webhook for Vercel

Reading time: 2 minutes

This custom integration was created because Vercel does not currently offer the ability to configure webhooks for project-related events such as Deploy Successful. Read More

Thoughts on a "Web Follow" protocol

Reading time: 4 minutes

Thinking about the follow action on the web. Read More

Using ML to improve developer experience.

Reading time: 3 minutes

My world has been shook. I started writing this post in March 2021 and am revisiting it today. I discussed how watching Corridor Crew inspired me to look for ways ML can improve developer experience. After researching, I identified four challenges: inferring what developers meant for the DOM, aiding with accessibility, helping with performance, and creating layouts and images. Finally, I questioned how GPT-Chat has changed my job as a DevRel lead. Read More

Detecting if a URL scheme can be handled

Reading time: 5 minutes

Can we detect if a url with a custom URL scheme can be handled? Why yes. Yes we can. Read More