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.

Serializing OPML via an OPML Object Model

Paul Kinlan

I've just posted the C# source code for serializing and deserializing OPML files using a simple object model. The code demonstrates basic serialization and deserialization, creating an OPML structure with a head, body, and outline elements. While the object model is functional, it's not perfect and could be refined. The example code shows how to create an OPML object, populate it with sample data, serialize it to XML, and then deserialize it back into an object, useful for anyone working with OPML in C#.

Read More

OPML .Net Object Model

Paul Kinlan

I'm working on a .NET object model for OPML 2.0 to easily serialize and deserialize OPML files. Serialization is working well and creates correctly formatted files thanks to constraints based on the OPML spec. Deserialization is proving tricky as the XML Deserializer isn't enforcing those same constraints, allowing incorrectly structured OPML files to be loaded. I'll share the code and continue working on it.

Read More

OPML JavaScript Object Model Updates

Paul Kinlan

I've updated the OPML JavaScript Object Model to support OPML Attributes for Outlines, increasing flexibility for developers. I've also incorporated an instanceOf method (source unknown - please let me know if you recognize it!) to add type checking when inserting OPMLOutlineAttributes into the attribute array. The added instanceOf function is as follows:

function instanceOf(object, constructor)  while (object != null) {       if (object == constructor.prototype)          return true;       object = object.__proto__;    }    return false; }

Read More

JavaScript OPML Object Model Update

Paul Kinlan

I'm working on a JavaScript Object Model for OPML and have found areas for improvement. I initially misunderstood the OPML spec, particularly regarding the attributes of the outline element, which are more flexible than I realized. This is important for handling things like files, links, HTML, and RSS. The current model has issues with proper quoting of characters like quotes and ampersands, but otherwise, the generated OPML XML seems good. I'll be updating the model to handle these attributes soon and will post more about the specific attributes in a future post.

Read More

OPML JavaScript Object Model

Paul Kinlan

I've created a basic JavaScript Object Model for OPML, which you can find here: http://www.kinlan.co.uk/AjaxExperiments/opml.js. It's not entirely finished yet, but the core structure is in place. I plan to write proper documentation soon.

Read More

OPML JavaScript Object.

Paul Kinlan

I'm developing a JavaScript Object Model for OPML, a first as far as I know! This is essential for my AJAX Tagger version 2, enabling dynamic OPML creation, flexible saving options, and real-time user interaction updates.

Read More

The Successes of my first AJAX Application: Part 2

Paul Kinlan

In part 2 of my AJAX application journey, I'm tackling browser compatibility issues between Firefox and Internet Explorer. Key differences include handling XML node text, event triggers for synchronous XmlHttpRequests, and table object model inconsistencies. Looking ahead, I'm planning to componentize my JavaScript for better management and browser caching, and create an event-driven object model for my next application to improve structure and cross-browser functionality. My focus will be on supporting the lowest common denominator for broader browser compatibility.

Read More

The Successes of my first AJAX Application: Part 1

Paul Kinlan

In this first installment of a series about my AJAX application journey, I'm sharing my initial success: learning to think asynchronously. The current app takes user-entered text, sends it to a Yahoo web service (via a local Perl script), gets "interesting" words, and then makes synchronous calls to Technorati for tag counts. This synchronous approach locks the browser, especially with multiple tags. The next version will use a queue and multiple asynchronous XMLHttpRequest objects managed by a thread manager to avoid browser lock-up. This will create a more responsive app where results appear as they become available. Key requirements for v2 include full asynchronicity, XMLHttpRequest management, a generic work queue, background task indicators, and a non-blocking UI. I'm also planning to develop a reusable object model.

Read More