Hello.

I am Paul Kinlan.

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

An API to detect if a Chrome Extension has updated

Paul Kinlan

As you might have been able to tell from my previous posts, I am a bit of a nut when it comes to the Management API in the Chrome Extension framework. I got asked a question recently about detecting if a Chrome Extension has been updated. The good news is that there is an API for that. The bad news is that I told a little fib: there isn’t actually a specific API for detecting if an Extension/App had been updated.

Read More

Paul Kinlan

Trying to make the web and developers better.

RSS Github Medium

Is it an App or a Link

Paul Kinlan

Quick answer: it is nearly always an App. Long Answer: I have seen a lot of Comment for some apps in the Chrome Webstore that are along the lines of “This is just a link”. In some cases, the users are correct but they are missing an important point. The webstore is a channel for users to discover great Web Apps, many users who visit the Web Store will have never seen your app.

Read More

Omni Launch: Launch Installed Web apps from the URL bar

Paul Kinlan

Yes, I know, three posts today about the Management API. Anyway, I have created an Awesome extension that allows you to use your URL Bar (The Omnibox) to find an launch apps by their name. It is pretty cool, just type “go TAB or SPACE app name” in your URL bar and that is it. It will search through your installed extensions and let you launch it very quickly. The remarkable thing is that this extension took 20 minutes to create, and I will try and show you how in this post.

Read More

Web app launcher as a browser_action

Paul Kinlan

In my previous post “Creating a New New Tab Page For Chrome” I showed how you can take advantage of the Management API and the Override Pages framework to make your own custom App Launcher. This in itself was pretty cool, however it didn’t address a real problem – Users still like to keep their existing custom NTP AND use Apps installed from the Webstore. To address this, I made a really simple “browser_action” for a new extension called Quick Launch.

Read More

Creating a New New Tab Page for Chrome

Paul Kinlan

For a long time Chrome Extensions have had the ability to create a new tab page in side Chrome. An excellent example of this is SpeedDial. With the introduction of the new Chrome Web Store there is a new boy in town. Apps. Apps are installed on to the New Tab Page and if your extension doesn’t handle them, then you need to update it because users will not be able to run the new apps that they have installed or purchased.

Read More

Drag to Desktop in JS

Paul Kinlan

When I created appmator, I want to remove a lot of the traditional webism that we see in apps. Specifically, I am not overly keen on “Save As” buttons, so I made sure I didn’t include one in the application The question then becomes how do you get data quickly to a directory of the users choice. I have chosen two operations, a standard click of a url that downloads the data clientside (another post to come shortly).

Read More

Flashing in to the Web Store

Paul Kinlan

I have seen a lot of the talk in the media that the Chrome Web Store is been about pushing the web forwards with just HTML5 and JavaScript. For example, there are some awesome HTML based games in the store, such as Canvas Rider, Shredder Chess and Sinous all accessible in any modern web browser written using HTML. It seems to me at least that Flash has been missed by the media elements reporting on the Web store.

Read More

Relative times. A Chrome Extension I would love to see

Paul Kinlan

I was walking back from the train station, it is late at night, well it is now very early morning, but you can’t tell that from my post time… Well maybe you can. But anyway it gave me an idea for a Chrome Extension that I would love to see, but I don’t have the time myself to create. I would love a Chrome Extension that detected dates and times in a web page and converted them into the Timezone I am currently in.

Read More

Announcing Appmator. Get your apps in the Web Store in under a minute!

Paul Kinlan

I am excited (<– every “press release” starts like this, but this isn’t a press release) to announce Appmator, a tool that I have developed for you, developers of great web apps to help you get your apps in to the Chrome Web Store in under a minute! With the recent release of the Google Chrome Webstore (literally 10 minutes ago) developers now have an amazing channel to reach over 100 million users of Chrome.

Read More

A couple of things that I would love to see

Paul Kinlan

There are a few little services that I would love to see on the web, but I can't seem to find them anywhere. Twitter Favourites -> Instapaper (or xyz)I can't seem to find anything like this, but I would love to see a webhook that sends things to Instapaper, I hate that I have to wait for integration of a 3rd party app to be able to send things to Instapaper or another service that I use.

Read More

Chrome Extension: Adding Context menus

Paul Kinlan

This is the final part of the “Buzz This” Chrome Extension series, in the first post I showed you how to create a basic Chrome Extension. We then expanded on it in the 2nd post showing you how to use XHR and some advanced features of browser_actions. In this post, I will show you how to quickly integrate Context Menus into Chrome Extensions. Why am I integrating Context Menus? Because they are a powerful hook in to your extension, and I want to be able to let users “Buzz” about specific things on any page, for instance, if they find an interesting image, they can Buzz just that rather than the entire page.

Read More

JS: classList, yipee!

Paul Kinlan

I remember the first time I used jQuery and probably the biggest thing that impressed me (by the way I am pretty much a nerd++) was not the compress syntax, the ability to do XHR, or live events (ok, live events came a lot later, and I used them all over the place on http://www.frienddeck.com) it was the ability to quickly manipulate the class attribute. For a long time I have been using the class attribute to hold state, but also naturally to providing styling.

Read More

-webkit-appearance your little known friend

Paul Kinlan

Remember years ago, when you styled your site up just the way you wanted and then you included a < input type=“file” and then everything went to pot. You couldn’t style it up, so you had to hide it, create your “button” and then simulate a click via javascript to get it to open. Well, I say years ago, nearly every browser today still can’t style the system provided buttons.

Read More

Chrome Extension "Post to Buzz": Getting some stats

Paul Kinlan

In my last post we had a functioning Chrome Extensions, that lets you Buzz about the current page you are on. It is pretty simplistic, but a nice example of how easy it is to create a Chrome Extension, but also how to perform some basic interactions with the Buzz API. In this part of the tutorial, I am going to show you how you can do some cross domain requests and how you can interact with the “browser_action” (the buttons on the top right).

Read More

Array.prototype.splice and a schoolboy error.

Paul Kinlan

The other day I posted about there being no “delete an arbitrary element” method on Array in Javascrip. The problem being that I tried the solution I am about to present, but made the biggest School Boy Error possible – I didn’t read the documentation correctly! Whilst I maintain that my solution removes the need to first find the elements, and then delete them (which is better ;). It must be noted that Array.

Read More

Chrome Extension "Post to Buzz": The basics

Paul Kinlan

In this quick tutorial, we are going to start to build the super simple Buzz This Chrome Extension. At the end of each tutorial, you will have something that works. In this tutorial, we are going to create the basic manifest, First thing to do is to create a folder where you are going to store your extension. I am not going to tell you how to do that, you should know.

Read More

Chrome Extension Example: Post to buzz Post 1

Paul Kinlan

The other day I post a simple Chrome extension that allows you to post the current page to Google Buzz, but also allows you to see how popular the current page is on Buzz. Over the next couple of posts, I will use this app to show you how to build a Chrome Extension and how easy it is to add some awesome features (and also show you how cool Google Buzz is).

Read More

JS: quickly removing an arbitrary element from an Array

Paul Kinlan

Unless I am mistaken (and I could be), Arrays in JavaScript have no direct way to delete an arbitrary element. I had a little problem where I knew the index of the item I want to remove, there was no easy way to do this. I can’t just say “array.remove(5)”. A way that I have seen some people use get around this problem is to use Array.prototype.join to push the contents into a string, then do a string replace on an element value and then String.

Read More

Thoughts about the GDD's

Paul Kinlan

Last week I arrived back from the European Tour for the Google Developer Days. We had 3 major events in about 10 days. We started in Munich, moved to Moscow and finally visited Prauge in the Czech Republic. The whole trip was pretty damn amazing.I had two talks at each event, (apart from in Munich where we had an awesome local Chrome engineer give the talk - thanks Jochen). The first talk was a Chrome Extension talk shared with @Mahemoff and was about developing Chrome extensions.

Read More

Using Canvas to create beautiful custom markers in Google Maps

Paul Kinlan

I have been playing with Google MapsĀ a little recently and I want to dynamically create a set of Markers without resorting to a server. I noticed that the Marker class can take a string URL as a parameter, so it seemed to make sense that if it was a url to an icon, it could also be a dataUri to an image that I can control via a canvas.

Read More