Hello.

I am Paul Kinlan.

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

Malformed OPML

Reading time: 1 minute

My OPML files are malformed, specifically the apostrophes in attributes aren't escaped. If you use my Ajax Tagger v2, I apologize for this error, but it seems like it hasn't impacted many users so far. 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!)

For all the XBox 360 C#'ers

Reading time: 1 minute

I'm excited about the newly announced XNA Framework from Microsoft! It's supposed to make game development for Windows and Xbox 360 easier by unifying the class libraries. Imagine the code and asset reuse possibilities! They even showed off some demos at GDC running managed code on the Xbox 360. Sadly, I doubt they'll let homebrew developers like me use it, which is a bummer. Think of the cool Xbox Live content we could make! Read More

My Very own Tag Directory

Reading time: 1 minute

I'm building a tag directory separate from my main content. This approach aims to enhance indexing and provide a centralized, dynamic display, similar to Technorati. It allows me to tag my directories and offers a new way to present related information. Check it out and let me know what features you'd like to see! Read More

AtariBoy; Thanks for the link

Reading time: 1 minute

I wanted to express my gratitude to Atariboy for the kind words and link he shared on his blog. I'm encouraged to keep up with my own blog posting schedule. Read More

Extracting bitmaps out of imagelist c#

Reading time: 1 minute

This post provides a quick solution for developers looking to extract individual bitmap images from an ImageList in C#. It demonstrates two approaches: direct saving to a file using the Save method with a specified file path and format, and saving to a MemoryStream for in-memory manipulation before further processing or storage. The MemoryStream approach offers greater flexibility for image operations. Read More

Malformed OPML

Reading time: 1 minute

My OPML files are not correctly formatted, specifically with unescaped apostrophes in attributes. This issue affects users of my Ajax Tagger v2, but I haven't received reports of any problems so far. Read More

C#/.Net on the XBox 260 360, maybe one day

Reading time: 1 minute

I've noticed a lot of searches related to C# and Xbox 360 development. While it's unclear what the future holds, some recent posts suggest that using the CLR on the Xbox 360 may be possible someday. Whether this will open up homebrew development remains uncertain, especially considering potential licensing restrictions. Though it's unlikely, we can still hold onto a glimmer of hope! Read More

Google Search: ebay asp.net api soap wsdl [part deux]

Reading time: 2 minutes

This post is a follow-up to my earlier one about using SOAP requests in ASP.Net to access the eBay API. I've finally figured out how to make it work! A few key things to note: most requests need the "version" attribute, some require the "DetailLevel" attribute, and you'll need an eBay Authentication Token (a cryptographic hash) for security. When using the WSDL URL, remember to include query string parameters so eBay knows what to do. I've included some sample C# code demonstrating how to build the request URL, set credentials, and handle the response. Read More

Google Search: ajax definition .net for dummies

Reading time: 2 minutes

This post explains AJAX (Asynchronous JavaScript and XML) and its use in .NET. AJAX allows web pages to update small sections without reloading the entire page, improving user experience. Traditional ASP.NET (1.x) struggles with this as it's designed to reload entire pages. However, .NET's flexible request pipeline allows plugins/HTTPHandlers to manage AJAX requests, enabling developers to execute specific methods within a page. The post lists several .NET AJAX frameworks, including AjaxPro, Arshad.NET, and AjaxAspects, and points readers to ajaxpatterns.org for more options. Read More

Google Search: ebay asp.net api soap wsdl

Reading time: 1 minute

I'm exploring the eBay API using ASP.NET and SOAP. It's proving a bit cumbersome due to its monolithic structure. Ideally, each API call would have its own WSDL and SOAP interface for easier management. Currently, I'm stuck on generating a User Token for authentication, having tried my developer account, regular eBay account, and a new account without success. Any advice on obtaining a User Token would be greatly appreciated! Read More

Google Search: why use sealed classes?

Reading time: 1 minute

I had a comprehensive blog post on sealed classes and their benefits within Google Search, but unfortunately, it was lost. I plan to rewrite it soon. Read More

Project Origami

Reading time: 1 minute

I'm not as impressed by Project Origami as others seem to be. While the idea of an ultra-mobile PC is appealing, and I'd like to own one, it feels like a somewhat predictable development in technology. Read More

Feed or Email Delivery

Reading time: 1 minute

I'm considering adding an email subscription option for blog updates, as an alternative to RSS/ATOM feeds. Would you subscribe to email updates if offered? Read More

Google Search: C#, Finding the Locale

Reading time: 1 minute

This post discusses how to determine a user's locale in C#. For ASP.NET applications, the Request.UserLanguages array provides the user's preferred languages, with the first element being the primary locale. This can be used to set the thread's culture using CultureInfo.CreateSpecificCulture(). In Windows Forms or services, the current culture can be accessed via Thread.CurrentThread.CurrentCulture and several properties like TwoLetterISOLanguageName or DisplayName allow retrieval of locale information. Read More

Google Search: find file extension with regex in c#

Reading time: 1 minute

This post addresses a common search query: how to find file extensions using regular expressions in C#. I provide several regex examples for this purpose, including variations for finding extensions only at the end of a string and for specifically finding three-letter extensions. Read More

Microformat proposal

Reading time: 1 minute

I'm exploring the idea of a "Questions and Answers" microformat to add semantic meaning to questions and their corresponding answers within text. I propose using <span class=qa><span class=question>Where does paul kinlan live?</span><span class=answer>liverpool</span></span> as a potential structure. This could be beneficial for search functionality, allowing search engines to index question-answer pairs instead of entire pages. I'm looking for feedback on whether this is a valuable concept, worth pursuing, or if it has already been discussed elsewhere. Read More

Updated UI

Reading time: 1 minute

I've given kinlan.co.uk a fresh coat of paint with a new Blogger Template. It's cleaner, faster, and easier on the eyes. I'm planning some more small tweaks in the near future, stay tuned! Read More

Been on training

Reading time: 1 minute

I've just completed a Mastering UML training course at IBM Education Services in London. It was a good course and I learned a lot, particularly because the instructor, Chas Weaver, incorporated his own experiences. The only downside was the lack of Internet access. Read More

Bill Hill on IE7 Cleartype

Reading time: 1 minute

In this post, I share my support for Internet Explorer 7's decision to enable ClearType by default. Bill Hill's blog post on the topic highlights research demonstrating ClearType's positive impact on reading, IE's primary use case. Personally, I've found ClearType enhances readability and focus, though IE7 Beta 2 has presented rendering issues on platforms like Blogger. Read More

C# CSS Classname Regex

Reading time: 1 minute

I've updated my C# regex for extracting CSS class names to correctly handle URLs in CSS properties like url(someimage.png). The previous version incorrectly matched file extensions. The improved regex uses a negative lookbehind assertion (?<!url\s*\(.*) to prevent matching class names within url() declarations. It now accurately extracts class names, even with variations in spacing within the url() function. Read More