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.

Shadow DOM and Progressive Enhancement to create a Sharing component

Paul Kinlan

I explored building a progressively enhanced sharing web component using Shadow DOM. My focus was on URL visibility and manipulation within web apps, even when they behave like native applications. The component is designed to be customizable and work across browsers, with or without JavaScript, by leveraging existing elements like anchor tags. It uses a Twitter intent as a fallback sharing mechanism when Web Components aren't supported. I'm excited about the potential of web components, even without widespread custom element support.

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

The skinny on LeviRoute JS routing framework

Paul Kinlan

I've created LeviRoutes, a client-side JavaScript routing framework inspired by Rails. It's simple, fast, and focuses solely on handling URL changes. LeviRoutes works with HTML5 History APIs, hashchange events, and even gracefully degrades for older browsers. It supports named parameters like "/:category" for dynamic routing, allowing you to treat the URL as a controller input. Check it out on GitHub!

Read More

Something I have noticed from the page stats

Paul Kinlan

Many visitors are trying to access the AJAX Tagger via the non-functional AJAXTag23 test page. I need to update the link, directing them to the correct URL: http://www.kinlan.co.uk/AjaxExperiments/AjaxTag2 (AJAXTag2).

Read More

Technorati Tags on Your Server

Paul Kinlan

I discovered my Apache server doesn't require file extensions for URLs, meaning both www.kinlan.co.uk/AjaxExperiments/AjaxTag and www.kinlan.co.uk/AjaxExperiments/AjaxTag.html lead to the same resource. This is convenient for using Technorati tags, which often omit extensions.

Read More

Iterating Accross A Users Links in c#

Paul Kinlan

This post explores how to access and iterate through a user's Internet Explorer Favorites in C#. I've included C# code that retrieves the Favorites directory and recursively iterates through its folders and files. The code also parses the .URL files to extract the actual URLs. Currently, the code doesn't retrieve the friendly name displayed in the Favorites menu (e.g., "Microsoft" instead of "www.microsoft.com"), but I'm looking into using IShellLink for this and would appreciate any insights.

Read More