Hello.

I am Paul Kinlan.

A Developer Advocate for Chrome and the Open Web at Google.

I love the web. The web should allow anyone to access any experience that they need without the need for native install or content walled garden.

Quick Logcat - debugging android from the web

Paul Kinlan

I created Quick LogCat, a web tool for debugging Android devices without needing adb installed. It uses WebADB.js and the WebUSB API to connect to your device and display logcat output. The tool is useful for on-the-go debugging. It's powerful but also highlights the potential security implications of granting web access to USB devices. This technology opens up exciting possibilities like firmware updates and app sideloading via web interfaces. I'm curious to see what others build with WebUSB and adb access.

Read More

'Moving to a Chromebook' by Rumyra's Blog

Paul Kinlan

I temporarily switched to a Chromebook (Pixelbook) after my main machine broke. Setting up Crostini, the Linux container environment, was a little tricky due to limited information available at the time. The process involved enabling developer mode and then activating the Linux apps option in settings. While the Pixelbook is expensive, Chrome OS is a great platform for web development, allowing me to test on various mobile browsers via ARC and utilize Linux apps like Firefox, vim, and VS Code thanks to Crostini. Although Crostini has room for improvement regarding speed, GPU acceleration, and file integration, and the Pixelbook needs more ports, it's exciting to see this technology becoming available on more affordable devices.

Read More

3 predictions for the web and platforms in 2017

Paul Kinlan

Following on from my list of the things that I am [excited about on the web in 2017](/2017-exciting-times/) here are three predictions of things that I think will happen in 2017 based off reading tea-leaves and random musings of things that I have 0 direct knowledge of but I might do if I was 'them'.

Read More

Screen recording on Android with getUserMedia and WebRTC

Paul Kinlan

Finally you can record your screen directly on Android via JS... well 'finally' is a strong word.

Read More

Barcode detection using Shape Detection API

Paul Kinlan

I'm excited to share that barcode detection is now available in Chrome Canary via the Shape Detection API! This feature, along with QR code detection, offers a standardized way to access device hardware and bridge the physical and digital worlds. It's especially useful for mobile, eliminating the need for special apps just to scan barcodes. The API is simple: use BarcodeDetector.detect() with an image input to get a promise resolving to a list of barcodes. I've already integrated this into my QR Code Scanner App, and the ability to use it in worker threads is a huge bonus. It's a very promising addition to the web platform and I'm looking forward to seeing what people build with it!

Read More

Every browser should support a style of 'intent:' URL syntax

Paul Kinlan

Custom URL schemes for launching apps have limitations: single app handling, one-way data flow, lack of fallback, and limited mobile support. A better approach is needed, one that offers user choice, developer fallback, diverse data transport, web app registration, and online/offline functionality. Android's 'intent:' URL syntax offers a good starting point, abstracting service discovery and supporting fallback URLs. I propose exploring a new 'action:' scheme or 'web+action' to bridge web and native apps, providing a unified service resolution and registration system for a richer, more integrated user experience.

Read More

Launch an Android app from the web and cleanly fallback to web

Paul Kinlan

Sharing content between web and apps is difficult due to platform incompatibility. Android's intent system offers a potential solution, but it lacks portability. This post explores a workaround for sharing actions, using a server-side redirect to handle intent URLs for Android users while providing a fallback to a web service like Twitter for other platforms. This approach allows cross-platform functionality while leveraging Android's intent system when available.

Read More

Triggering a native Share intent on Android from the web

Paul Kinlan

This story starts a long time, was tickled into existing after I visited FlipKart in Bangalore and was finalized after an internal conversation about the fact that it is impossible to trigger the share dialog in Android from the web. Lots of people want it, it turns out everyone thought it wasn't possible. It is.*

Read More

There is no spoon: Why I still say Mobile

Paul Kinlan

You say Mobile, I say 'Mobile X'.

Read More

The discovery problem.

Paul Kinlan

Does the discovery problem of app stores, search and everywhere else only affect those who don't or can't market?

Read More

What do people want from a news experience?

Paul Kinlan

It might be surprising. But it's all possible on the web.

Read More

Living with Web Apps

Paul Kinlan

A spent a while living just with web apps. Here is my report.

Read More

Detecting critical above-the-fold CSS

Paul Kinlan

I recently used Page Speed Insights for Mobile to improve my blog's page load time and one of the key recommendations was to reduce render-blocking CSS above the fold. This led me to explore the concept of critical CSS, which is the minimum CSS required to render the initial view of a page. I developed a proof-of-concept tool (bookmarklet and devtools snippet) that analyzes the DOM and extracts the critical CSS by iterating through visible elements and using window.getMatchedCSS(). This tool helps identify unnecessary CSS, integrate into build processes for optimization, and potentially generate page-specific CSS files for improved performance. It currently has limitations, working only in WebKit/Blink, ignoring media queries, and not handling pseudo-elements.

Read More

Another experiment in creating a mobile friendly table of contents

Paul Kinlan

I've been working on making html5rocks.com more mobile-friendly, focusing on reducing "Time to first read". The main culprit was the Table of Contents (ToC). My initial experiment with an offscreen ToC using CSS had cross-browser inconsistencies. Now, using existing JS, the ToC is fixed to the footer and toggled into view. I'm still exploring pure CSS solutions. Initially, I favored a small scrollable ToC at the bottom, but Paul Lewis suggested a full-screen ToC, which proved better. It minimizes distractions and clutter, provides more screen space for a readable, easily navigable ToC with larger touch targets and subtle hierarchy, even for long lists. The before/after screenshots demonstrate the improvement.

Read More

Screen Recording from your Android device

Paul Kinlan

For our Google I/O 2013 talk, we needed a way to seamlessly showcase live demos on an Android device. Projector switching was clunky, so we pre-recorded the demos for smoother transitions. This post details our process. We used a Blackmagic Intensity Shuttle to capture high-quality HDMI output from a Galaxy Nexus (which thankfully doesn't enforce HDCP on HDMI). This setup, along with the Orientation Control app to maintain portrait mode, allowed us to create polished, in-line video demos. While this solution isn't cheap, the quality and seamless integration were worth the investment.

Read More

More on the Bluetooth Library for .Net

Paul Kinlan

I've been experimenting with the Bluetooth library for .NET I mentioned earlier, but I'm having trouble getting it to work. I wanted to connect my phone to my computer and transfer images, but it's not working as expected. The library itself seems fine, it's likely my understanding of Bluetooth communication that's lacking. On the plus side, detecting devices with the library is very easy!

Read More