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.

Some thoughts on the microbit

Paul Kinlan

I gave my son a micro:bit for his birthday, hoping to introduce him to programming. While he preferred FIFA, I ended up having a blast exploring the device myself. I found it incredibly easy to use and a perfect starting point for hardware and software programming. I even coded a (buggy) Breakout clone to test its capabilities! While the web editor is excellent, I believe integrating WebUSB for direct deployment and improving debugging capabilities would greatly enhance the experience.

Read More

Landing my first WebKit patch. OnPopState Lock and Load.

Paul Kinlan

I found and fixed a bug in WebKit! My LeviRoutes framework needed to simulate 'onpopstate' events for testing, but WebKit's createEvent(\"PopStateEvent\") was broken. After some digging in the WebKit source code, I found the problem in Document.cpp, added the missing PopStateEvent handling, created a test case, and submitted a patch. It got reviewed and accepted! Now my fix is part of WebKit, used by tons of people, and I can finally get back to LeviRoutes.

Read More

Array.prototype.splice and a schoolboy error.

Paul Kinlan

In a previous post, I discussed the lack of a direct method in JavaScript for deleting arbitrary elements from an array. I had attempted a solution, but misread the documentation for Array.prototype.splice. While I believe my solution is still useful for removing elements without needing to find their indices first, splice does allow removing arbitrary elements by index. To remove one element at a specific position, use values.splice(index, 1). This modifies the original array and returns an array of the removed elements. Thanks to @dezfowler for pointing this out!

Read More

Call Me Stupid

Paul Kinlan

I'm struggling to create a C# plugin for Windows Live Writer. Even a simple "Hello World" plugin isn't showing up in the available plugins list, despite the documentation and example seeming straightforward. The example code compiles and works fine, but my copied version doesn't. I'm completely stumped and wondering if there are any logs I can check for Windows Live Writer.

Read More

C# 3.0

Paul Kinlan

I recently commented on an old blog post about C# 3.0, expressing initial agreement with a sentiment against functional programming in the industry. However, upon reflection, I realized C# 3.0 isn't purely functional but rather integrates some academic concepts into a practical context for industry use. While still learning C# 3.0, functional programming, and LINQ, I've found my tests using these features to be clearer and more presentable. Although there's a learning curve, especially with the generic delegate syntax and translating between "SQL" and object syntax, I'm embracing the ongoing learning process.

Read More

A new .Net Blogger

Paul Kinlan

My friend, Paul Pierce, has started a new blog! He plans to cover various topics, including .Net. He's already got a helpful post up about using NMock 2. I encourage you to check it out, it is very good - possibly even better than mine. Visit his blog here: http://www.paulpierce.co.uk

Read More

Error Codes vs. Exceptions

Paul Kinlan

This post discusses the differences between using error codes and exceptions for error handling in application programming. It references an article by Damien Katz that explores the topic in detail, highlighting the challenges of proper error handling, even in critical systems. The article uses analogies and strong language to make its points. It also links to the original article and a Digg story about the topic.

Read More

All Visual Studio Express Editions are now Permanently Free!

Paul Kinlan

I'm excited to share (even though it's old news) that all Visual Studio 2005 Express Editions (Visual Basic, Visual C#, Visual J#, Visual C++, and Visual Web Developer Express) are now permanently free! This is a game-changer for aspiring developers, opening up access to powerful tools for Windows and ASP.Net development. While there are some limitations (like only one project per solution), the benefits far outweigh the drawbacks. Check out the official announcement and some cool new tools!

Read More

C# Trackback, Part 2

Paul Kinlan

This is the second part of my series on implementing trackback functionality using C#. I've provided the complete source code, which is free for anyone to use and adapt. This post dives deeper into the intricacies of trackbacks and how to use them within your C# applications. Click the "read more" link for the full article and source code. If you find it useful, consider giving it a digg!

Read More

Microsoft porting C# programming to the Mac

Paul Kinlan

Microsoft is bringing a subset of the .NET Framework, including C# and VB.NET support, to the Mac platform via WPF/E. This goes beyond the JavaScript engine also included with WPF/E, allowing for richer and more complex applications.

Read More

Thanks Digger

Paul Kinlan

A big thanks to the first person who Dugg my Ajax Tagger on Digg (I think it was Zoodle)! I'd love to hear your feedback on it, good or bad. Let me know what you think! :)

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

Google Search: why use sealed classes?

Paul Kinlan

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

Google Search: find file extension with regex in c#

Paul Kinlan

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

Google Search: c# css parser

Paul Kinlan

A visitor searched Google for a "c# css parser" and landed on my site. Intrigued, I explored existing C# CSS parsers but found nothing. This sparked an idea for a personal project: creating my own parser. I envision distinct classes for each CSS type, managing their rules and attributes. A "Finder Class" would locate CSS classes and instantiate corresponding C# objects.

Read More

Ebay API... Can't really think of much.

Paul Kinlan

I was excited about the eBay API becoming free, hoping to build programs around it. However, I'm struggling to find a compelling project idea. Integrating it into my blog isn't feasible due to eBay's dynamic nature, and static integration wouldn't benefit my SEO. A potential idea is an AJAX interface for the Amazon books I feature, but my lack of commission potential is demotivating. My programs usually serve my needs first, like my AJAX Tagger, which helps me provide more info to readers. If I come up with any good eBay API ideas, I'll share them here.

Read More

Google Search: c# instanceof

Paul Kinlan

This post addresses the search query "c# instanceof" by clarifying that C# uses "is" and "as" keywords instead of "instanceof" for type checking and casting. The "is" keyword checks an object's type, while "as" performs a safe cast, returning null if the cast fails, unlike an explicit cast which throws an exception.

Read More

EBay Offering Free API Usage

Paul Kinlan

eBay has introduced a free API access program called the Unified Pricing Scheme. This is a significant change that opens up opportunities for developers, like myself, who were previously hesitant to use the API due to usage fees. This new scheme enables thousands of developers to experiment with the eBay API without cost.

Read More

Google Search: c# googledesktop

Paul Kinlan

This post discusses a reader's search query related to C# and Google Desktop. While I haven't personally worked with Google Desktop plugins, I found a relevant article in the November 2005 issue of Dr. Dobb's Journal. The article, "Improving Search Precision Using Google Desktop Search 1.0," details how to use C# to search the Citeseer database with Google Desktop, including updates for version 2.0. The article is available on www.ddj.com, but may require a subscription.

Read More

Programming Windows Presentation Foundation (WPF)

Paul Kinlan

I'm diving back into XAML after a break and reviewing "Programming: Windows Presentation Foundation." So far, the book is well-written with clear C# and XAML examples. While the initial XAML overview is a bit fast-paced, the layout section (Chapter 2) is excellent, offering helpful examples for each concept.

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

Google Search C#

Paul Kinlan

This blog post explores the meaning behind the Google search query "oops c#." It questions whether the searcher was looking for information on Object Orientated Prototyping Systems, Object-Oriented Programming Systems, or general C# errors. The author requests that the original searcher contact them to clarify the intent behind their query.

Read More

Google sending me c# searches.

Paul Kinlan

Seeing increased C# searches in my blog logs. Visitors might appreciate the lack of C# content here, so I'll start addressing C# topics.

Read More

Ajax Tagger Oops

Paul Kinlan

A quick heads-up: There's a bug in AJAX Tagger v2. I'll fix it tonight. My bad, I skipped testing a change I made yesterday.

Read More

RE: C# : Where do you define an enum

Paul Kinlan

This post discusses the best placement for enum declarations in C#. While some argue that defining enums outside the class avoids extra typing, I believe that placing them inside the class improves code clarity, reduces ambiguity, and makes it easier to handle similarly named enums from different classes. IntelliSense helps with the extra typing. The original article argues against this, prioritizing less typing, but I find that less important than clarity and proper scoping.

Read More

Note to self

Paul Kinlan

I need to remember to learn more about the Dojo Toolkit, a JavaScript library.

Read More

Untitled

Paul Kinlan

In a follow-up to my previous post about the scarcity of Bluetooth libraries for desktop PCs, Mark Arteaga brought 32feet.net to my attention. This site offers a managed Bluetooth library which I plan to investigate further. Initial impressions from the sample code suggest it's straightforward to use, with device discovery appearing as simple as calling a function and communication happening via streams.

Read More

Update Status of AJAX Tagger 2

Paul Kinlan

Quick update on the AJAX Tagger 2 development. Priority queues are working well, but might need some tweaking on queue numbers and polling intervals. Querying Technorati for tag counts is proving slow (around 2 seconds per query). Any tips on speeding this up, perhaps by limiting the number of blogs returned? Currently working on improving the related documents results, which now includes counts for all selected tags, not just the last search. Need to refine this area. More updates to come!

Read More

Finally a use for OPML

Paul Kinlan

I've figured out how to incorporate OPML into the upcoming version of the AJAX Tagger, enhancing its functionality. More details coming soon!

Read More

Update and a link

Paul Kinlan

Just a quick update on what I've been up to. I'm still working on AJAXTagger v2 whenever I can. It's coming along, but I ran into a few JavaScript issues. Big shoutout to the Dream Projections blog for a post that really helped me figure out how to call JavaScript Object methods with setInterval – super useful for the priority queueing system I'm building.

Read More

The Failures of my First AJAX application: Part 6

Paul Kinlan

This is the sixth part of my series on the failures of my first AJAX application, AJAXTagger. While I initially hoped it would be useful for everyone, it mainly ended up benefiting just me by simplifying the tagging process for my blog posts. Although it didn't meet my initial grand expectations, it was a valuable learning experience. The next version will prioritize my needs but also consider features that could benefit other users, ultimately adding value for my readers.

Read More

Comming up to a round number

Paul Kinlan

I'm about to hit 100 posts! I also realized I forgot to post my Perl request forwarding scripts as promised, so I'll do that tonight. I'll also start discussing the issues with my first AJAX application.

Read More

Image Filter Library

Paul Kinlan

I've previously mentioned the .NET Image Filter Library, and I highly recommend it to anyone interested in learning about programmatic image manipulation. The library is well-documented in an easy-to-follow CodeProject article by Andrew Krillov. You can find it here: Image Processing Lab and Motion Detection. I even created a fisheye filter for this API, which you can find here: Fisheye Example

Read More

C# 3.0 XML Generics Again

Paul Kinlan

I explored the idea of C# 3.0 XML Generics based on Matt War's blog post. I'm questioning the practicality of defining a generic from an XML Schema within the code itself, as it seems redundant compared to simply creating a class. However, the concept becomes more intriguing if the generic type could be derived from a streamed XML schema, offering dynamic type creation possibilities.

Read More

C# Generics 3.0

Paul Kinlan

This short, humorous post suggests the seriousness of the topic of C# Generics 3.0 despite its light-hearted tone. It hints at a deeper dive into the topic, perhaps planned for the future, while acknowledging its complexity and importance.

Read More

c# generics 3.0

Paul Kinlan

I'm exploring the concept of generics in C# 3.0, particularly how they might relate to XML types. I'm having trouble grasping the connection described in MattWar's blog, which suggests generics and XML are fundamentally linked. While I understand how generics allow parameterized specialization of classes (like a list of ints, longs, or custom objects), the example of XML generics like "Foo<int x="...">" confuses me. Is it parameterization, an attribute, element constraint, or class conversion? I don't see the advantage over generating classes from XSDs. I'm curious about how XML generics might be tied to schemas for constraining parameter values and eager to learn more about this potentially paradigm-shifting concept.

Read More