Showing posts with label google. Show all posts
Showing posts with label google. Show all posts

Tuesday, 7 June 2011

Google Music Terms of Service

I just got an invite to Google Music Beta =D Of course, I read through the entire terms and conditions before signing up (doesn't everyone?) They were quite interesting, so I've posted them here for your interest. Note at the bottom there is a section for "Gracenote", a music data provider which has partnered with Google for this enterprise. I wouldn't be surprised if Google acquires Gracenote (or a similar company) some time down the track. It's not often that Google licenses the core data set for one of their services from a third party.

Listed below is the Google Music Beta Terms of Service, current as of 7th June 2011.

Additional Terms of Service for Music Beta by Google

Last modified: May 10, 2011
Thank you for your interest in Music Beta by Google! By using Music Beta by Google ("Music Beta" or the "Service"), you accept and agree to be bound by the Google Terms of Service, the Google Privacy Policy, and theMusic Beta by Google Privacy Policy, each of which is incorporated into this agreement by this reference, as well as these Additional Terms of Service for Music Beta by Google (collectively, the "Terms"). It is important for you to read each of these documents, as they form a legal agreement regarding your use of the Service between you and Google Inc. ("Google") whose principal place of business is 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States. This document explains how your agreement with Google is made up and sets out some of the terms of that agreement. Capitalized terms not otherwise defined in these Additional Terms have the meaning given to them in the Google Terms of Service.

The Music Beta Service and Your Music

Music Beta is a Service as defined in Section 1.1 of the Google Terms of Service and is provided to you for your personal, non-commercial use solely in connection with lawfully acquired music files from your personal collection that you choose to make available to yourself through the Service, including all data comprising, describing, or associated with each music file that you choose to upload, such as audio data, metadata, and album art for each selected file (whether referring to individual uploaded files or to your entire uploaded library, "Your Music"). Music Beta consists of (a) Google-provided server space that you can use for storage of Your Music, and (b) software applications and related web sites and services that allow you to upload, manage, access, and play back Your Music through a web browser or through any supported, Service-enabled device. To the extent that you use the Music Application for Android devices in conjunction with Music Beta, those uses are governed by the Terms, including these Additional Terms.

Trial Service Availability and Limitations

Music Beta is a trial or "beta" Service from Google that requires you to register with your new or existing Google account. It is available free for a limited time to residents of the United States (including its territories and protectorates) who have received an invitation from Google and accept the invitation by signing into their Google account to register for use of the Service. As a beta Service, certain limits on storage or usage may apply; these limits may be set or changed by Google at any time, at Google's discretion, and you agree that you will not attempt to obstruct or prevent the application of those Service limits at any time, or to manipulate your usage of the Service to avoid or circumvent them. You can find more information about applicable Service limits through the Music Beta Help Center.

Third Party Fees

Music Beta is available without charge from Google; however, you may incur access or data fees from third parties (such as your internet provider or mobile carrier) in connection with your use of the Service. You are responsible for all such third-party charges for your use of Music Beta on or through third party services and devices.

Privacy and Your Personal Information

Section 7 of the Google Terms of Service governing Music Beta by Google is replaced in its entirety by the following:
7.1 For information about Google's data protection practices, please read the Music Beta by Google Privacy Policy at http://music.google.com/about/privacy.html. This policy explains how Google treats your personal information, and protects your privacy, when you use the Service.
7.2 You agree to the use of your data in accordance with Google's privacy policies.

Your Permissions and Instructions to Google

Section 11 of the Google Terms of Service governing Music Beta by Google is replaced in its entirety by the following:
11.1 You retain any rights you already hold in Your Music. You acknowledge and agree that you are solely responsible for your own conduct and Content (including Your Music) while using the Service and for any consequences thereof. You agree to use the Service only for purposes that are legal, proper, and in accordance with these Terms, and that by using the Service you are requesting that Google make all of the necessary functions and features of the Service available to you in order to facilitate your use of Your Music according to the Terms. Without limiting the generality of this overall permission and instruction, you specifically agree that you are instructing Google to perform the functions described in Sections 11.2, 11.3, and 11.4 below.
11.2 By uploading or submitting Your Music to or through the Service, you are directing Google to store a unique copy of Your Music on your behalf and to make it accessible to you through the use of your login credentials.
11.3 By accessing, managing, playing back, displaying, or using all or any part of Your Music on or through the Service, you are directing Google to initiate and perform the corresponding functions on your behalf, together with any related steps necessary to achieve them, through the Service.
11.4 You understand that Google, in performing the required technical steps to provide you with the Service as described in the Terms, may (a) transmit Your Music over various public networks and in various media; and (b) make such changes to Your Music as are necessary to conform and adapt it to the technical requirements of connecting networks, devices, services, or media. You agree that in each such instance, your use of the Service includes a direction to Google to take these actions on your behalf.
11.5 You confirm and warrant to Google that you have all the rights, power and authority to grant any permissions and give any instructions to Google that may be required to perform the actions necessary to provide you with the Service. You agree that you will not upload, submit, access, manage, play back, display or use any Content (including any portion of Your Music), or direct Google to do anything with Your Music on your behalf, unless you have all of the necessary rights to do so without infringing the rights of any third party or violating any laws or agreements that apply to you, the Content, or Your Music.

Copyright Notices

It is Google's policy to respond to notices of alleged copyright infringement that comply with applicable intellectual property law (including, in the United States, the Digital Millennium Copyright Act) and to terminate the accounts of repeat infringers. Details of Google's policy can be found at http://www.google.com/dmca.html.

Third Party Software

To the extent that Music Beta includes components governed by third party or open source licenses with provisions inconsistent with the Terms, those components are instead governed solely by the applicable third party or open source licenses. Information regarding those licenses (except for software provided by Gracenote, Inc., for which the terms are included at the end of this agreement) can be obtained at the following location:http://music.google.com/about/thirdparty.html.

Acceptance of Terms

You accept the Terms either by clicking to accept the Additional Terms presented to you when you first access the Service or by using Music Beta by Google. Your continued use of the Service constitutes your consent to the Terms (as may be modified from time to time, in whole or in part, with or without notice). It is your responsibility to review the Additional Terms regularly for updates. If you do not agree to the Terms, you may not use the Service.
You can review, print or save a copy of these Additional Terms of Service for Music Beta by Google (and navigate to other links referenced in the Additional Terms) by visiting the Additional Terms web page at:http://music.google.com/about/terms.html.

Gracenote Software

This application or device may contain software from Gracenote, Inc. of Emeryville, California ("Gracenote"). The software from Gracenote (the "Gracenote Software") enables this application to perform disc and/or file identification and obtain music-related information ("Gracenote Data") from online servers or embedded databases (collectively, "Gracenote Servers") and to perform other functions. You may use Gracenote Data only by means of the intended end-user functions of this application or device.
This application may contain content belonging to Gracenote's providers. If so, all of the restrictions set forth herein with respect to Gracenote Data shall also apply to such content and such content providers shall be entitled to all of the benefits and protections set forth herein that are available to Gracenote. You agree that you will use Gracenote Data, the Gracenote Software, and Gracenote Servers for your own personal non-commercial use only. You agree not to assign, copy, transfer or transmit the Gracenote Software or any Gracenote Data to any third party. YOU AGREE NOT TO USE OR EXPLOIT GRACENOTE DATA, THE GRACENOTE SOFTWARE, OR GRACENOTE SERVERS, EXCEPT AS EXPRESSLY PERMITTED HEREIN.
You agree that your non-exclusive license to use the Gracenote Data, the Gracenote Software, and Gracenote Servers will terminate if you violate these restrictions. If your license terminates, you agree to cease any and all use of the Gracenote Data, the Gracenote Software, and Gracenote Servers. Gracenote reserves all rights in Gracenote Data, the Gracenote Software, and the Gracenote Servers, including all ownership rights. Under no circumstances will Gracenote become liable for any payment to you for any information that you provide. You agree that Gracenote, Inc. may enforce its rights under this Agreement against you directly in its own name.
The Gracenote service may use a unique identifier to track queries for statistical purposes. The purpose of a randomly assigned numeric identifier is to allow the Gracenote service to count queries without knowing anything about who you are. For more information, see the web page for the Gracenote Privacy Policy for the Gracenote service.
The Gracenote Software and each item of Gracenote Data are licensed to you "AS IS." Gracenote makes no representations or warranties, express or implied, regarding the accuracy of any Gracenote Data from in the Gracenote Servers. Gracenote reserves the right to delete data from the Gracenote Servers or to change data categories for any cause that Gracenote deems sufficient. No warranty is made that the Gracenote Software or Gracenote Servers are error-free or that functioning of Gracenote Software or Gracenote Servers will be uninterrupted. Gracenote is not obligated to provide you with new enhanced or additional data types or categories that Gracenote may provide in the future and is free to discontinue its services at any time. GRACENOTE DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT. GRACENOTE DOES NOT WARRANT THE RESULTS THAT WILL BE OBTAINED BY YOUR USE OF THE GRACENOTE SOFTWARE OR ANY GRACENOTE SERVER. IN NO CASE WILL GRACENOTE BE LIABLE FOR ANY CONSEQUENTIAL OR INCIDENTAL DAMAGES OR FOR ANY LOST PROFITS OR LOST REVENUES.
© 2011. Gracenote, Inc. All Rights Reserved

Friday, 27 May 2011

$100 Free Google Adwords Credit - from Hong Kong to Australia

Mail from Hong Kong
Today I received a letter from Google. The postmark and return address were both labeled "Hong Kong". Naturally I was more than a little curious as to what Google might be sending me from Hong Kong. As it turns out, the letter wasn't anything to do with Hong Kong at all.

The envelope contained a $100 gift card from Google Adwords, and a letter signed by Lucinda Barlow, Head of Marketing for Google Australia. Not Hong Kong. Either Google Australia uses Hong Kong for some of their mailouts, or they're sending out a global campaign and attaching local signatures depending on the destination. Either way, it's pretty crazy that mail sent to Australia comes from Hong Kong.

The full letter transcript is below:
Come back to AdWords and get $100 in free advertising

Hello from Google!

We understand how important it is for a business to stand out online - and that's one of the main reasons small businesses use Google AdWords everyday. Over the past year, we've made a lot of changes to make AdWords easier to use, and to help ensure your online ad campaigns deliver the results you expect. We hope you'll try AdWords again and are giving you $100 to get started.

There are a lot of things you can do to make your campaign more successful - refine your keywords, change your bid, or maybe try a new headline. We'd like to recommend the AdWords Online Classroom (www.google.com.au/adwords/classroom). It's a free resource that offers a series of video tutorials covering quick tips designed to help you get the most out of AdWords.

The first step is redeeming your $100 and reactivating your campaign. Then, it's just a matter of time, and a little bit of effort, before you start attracting new customers to your business.

Sincerely,

Lucinda Barlow
Head of Marketing, Google Australia

Thursday, 14 April 2011

Reset buttons - useful or not?

I've seen quite a few blogs posts lately complaining about the HTML Reset button. You know, the one that often sits beside the "Submit" button. I think everyone must have accidentally hit Reset at least once. So what's the use of it? Personally I have never seen a web form where a Reset button is necessary. And I have accidentally hit Reset many times - especially when it's placed in the position you normally find the Submit button.

This afternoon I wrote up a quick Google Chrome extension to hide all Reset buttons. Are you sick of accidentally clicking the wrong button? Try out the extension and let me know what you think.

Thursday, 7 April 2011

Google AdMob Earnings Checker (Chrome Extension)

Earlier this week I wrote up my first Chrome extension - the AdMob Earnings Checker. It's really easy to build extensions for Chrome - basically just stick a bunch of HTML and Javascript in a zipped folder, upload it and you're done. It took me less than an hour to build this guy (taking reference from a similar extension for AdSense).

The hardest part was actually decoding the AdMob page with the JQuery parser - take a look at the source of your AdMob sites page and you'll see what I mean. Not valid HTML by any means. I had to manually strip some tags in order to get JQuery to accept it as pseudo-html. Once I got over that difficulty though, it was pretty straight forward.

So if you develop Android apps, or operate any kind of mobile website using Google's advertising services, you might like to check out the extension. Any feedback would be appreciated!

Thursday, 9 September 2010

Testing Google Instant

Google Instant was released today, for a certain subset of users only. Google announced in their blog post that Google Instant is a new means of "googling". Instant search means that you only have to type a few letters of your search query, and Google search will instantly show you search results (before you press the enter key). As you enter more letters, the search results will instantly update, without having to reload the page. This search system was developed using JavaScript in the front end, along with Google's highly developed and fast search system behind it all. Query times of 0.3 seconds are very significant when your search results are updating as every character is typed!

Please note: This post is a test for Google Instant. I went to google.com, typed in "testing" and one of the top suggestion results was "testing google instant". I'll test and see if this blog post appears in the results quickly.

Thursday, 11 February 2010

Google Buzz: How to publish to Twitter automatically

At present, Google Buzz has the ability to import, index and display your Tweets. One feature that is notably missing, however, is the ability to tweet from Buzz. You can't export Google Buzz to Twitter. At least, not officially.

I've written a python script to grab your Google Buzz feed (as detailed in the Buzz API), and automatically post your Buzz-es to Twitter. It includes a link back to the original Buzz URL (shortened with Bit.ly) It also uses a local sqlite database to store previous posts, and print bit.ly statistics for your published links.

You'll need to have python installed, and the following modules:
python-twitter
python-bitly
python-sqlite
feedparser
You'll also need a free account at Twitter and Bit.ly, and a Bit.ly API key.

Download the python source code from Google Code, or copy the text below. Please let me know if you found this useful, or have any improvements or modifications to suggest.


Update: To run this script every minute, add the following line to your crontab:
* * * * * /path/to/buzz-twitter-bot.py
This will update Twitter with your Google Buzz posts at least once per minute.

Code:

#!/usr/bin/python
from time import strftime
import sqlite3
import sys
import re

import twitter     #http://code.google.com/p/python-twitter/
import bitly       #http://code.google.com/p/python-bitly/
import feedparser  #available at feedparser.org


DATABASE = "tweets.sqlite"

BITLY_LOGIN = "username"
BITLY_API_KEY = "insert_your_key"

TWITTER_USER = "username"
TWITTER_PASSWORD = "secret"

def print_stats():
conn = sqlite3.connect(DATABASE)
conn.row_factory = sqlite3.Row
c = conn.cursor()

b = bitly.Api(login=BITLY_LOGIN,apikey=BITLY_API_KEY)

c.execute('SELECT title, url, short_url from RSSContent')
all_links = c.fetchall()

for row in all_links:

short_url = row['short_url']

if short_url is None:
short_url = b.shorten(row['url'])
c.execute('UPDATE RSSContent SET `short_url`=? WHERE `url`=?',(short_url,row['url']))


stats = b.stats(short_url)
print "%s - User clicks %s, total clicks: %s" % (row['title'], stats.user_clicks,stats.total_clicks)

conn.commit()

def tweet_rss(url):
print "Opening database...."
conn = sqlite3.connect(DATABASE)
conn.row_factory = sqlite3.Row
c = conn.cursor()
print "Database opened."

#create the table if it doesn't exist
c.execute('CREATE TABLE IF NOT EXISTS RSSContent (`url`, `title`, `dateAdded`, `content`, `short_url`)')

print "Logging in to Twitter...."
api = twitter.Api(username=TWITTER_USER, password=TWITTER_PASSWORD)
print "Logging in to Bitly...."
b = bitly.Api(login=BITLY_LOGIN,apikey=BITLY_API_KEY)

print "Parsing feed...."
d = feedparser.parse(url)

for entry in d.entries:

#check for duplicates
c.execute('select * from RSSContent where url=?', (entry.link,))
if not c.fetchall():
print entry
#Get data from this entry
title = entry.title
content = entry.content[0].value
link = entry.link
updated = entry.updated
#Strip HTML from content
r = re.compile(r'<[^<]*?/?>')
content = r.sub('', content)

print "Found new item"
print "Title: "+title
print "Content: "+content
print "Link: "+link
tweet_text = "Buzz: %s" % content

#Shorten link
print "Shortening link...."
shortened_link = b.shorten(link)
print "Shortened link: "+shortened_link

#Add this entry to the database
t = (link, title, updated, content, shortened_link)
c.execute('insert into RSSContent (`url`, `title`,`dateAdded`, `content`, `short_url`) values (?,?,?,?,?)', t)
print "%s.. %s" % (tweet_text[:115], shortened_link)

#Post to twitter
print "Posting to twitter...."
api.PostUpdate("%s.. %s" % (tweet_text[:115], shortened_link))
print "Post complete."

conn.commit()

if __name__ == '__main__':
tweet_rss(sys.argv[1])
print "Listing stats...."
print_stats()

Special Thanks to Halotis for the RSS Twitter Bot, and love-python.blogspot.com for how to strip HTML tags.

Thursday, 28 January 2010

How to update CyanogenMod on HTC Magic 32A [Ubuntu]


I'm running CyanogenMod on my HTC Magic, and Ubuntu 9.10 (Karmic) on my laptop computer. Most of the upgrade guides & automated tools for upgrading CyanogenMod (i.e. CMUpdater) are based on the 32B kernel. This is a guide to upgrading CyanogenMod with a HTC Magic 32A kernel. Most of the instructions are taken from the CyanogenMod wiki.
  1. Download the latest CyanogenMod (Current Stable Version) from this site.
  2. Download the latest EBI1/32A Kernel from the same page.
  3. Copy both .zip files to your SD and reboot in Recovery Mode (press Home+Power at the same time or fastboot into your recovery) 
  4. Apply Zip: update-cm-xxxx-signed.zip
  5. Apply Kernel Port Zip: rad-4.xxxx.zip or bc-4.xxxx.zip (depends on who released the latest port: rad - Radix999,bc - bcrook ) 
  6. Reboot
  7. Wait. For a long time. =) Seriously, this will take ages to boot after an upgrade.
If you get an orange triangle & exclamation mark when you boot into recovery, just press Home+Power again to access the menu.


Ok, so what if you don't have an option to apply this zip in the recovery? If your phone only gives you the option to "apply update.zip" then you don't have the fancy recovery ROM. Download it from here (scroll down and choose the "H" version), and get the fastboot binary from here. Copy both into your android sdk "tools" directory.


Now, power down your phone, plug it into your computer via USB and press the Back and Power buttons at the same time. This should bring you to the fastboot screen. On your computer, cd into the android sdk tools directory, and type "fastboot boot ./recovery-RA-sapphire-vX.XX.zip". This will reboot the phone into the fancified recovery screen, which should let you update to any chosen zip file.

Oh, and note that this will not wipe your data!!! If you perform these steps completely and nothing goes wrong, all your apps and preferences will remain as they were. Of course, I can't guarantee anything. =) The only time you would wipe your phone is if you applied a full firmware upgrade (DRC83 in the filename, usually.) If you're unsure though, just leave a comment & I'll try to help! Or you could checkout the forums associated with some of the links above.

Friday, 18 December 2009

Installing Android Devloper Tools on Eclipse fails - Ubuntu Karmic 9.10

I followed these instructions to install the Eclipse Android Developer Plugins using Eclipse 3.5.1 and the default Ubuntu Karmic install. However I was presented with the following error message when clicking "Next":

Cannot complete the install because one or more required items could not be found.
Software being installed: Android Development Tools 0.9.5.v200911191123-20404 (com.android.ide.eclipse.adt.feature.group 0.9.5.v200911191123-20404)
Missing requirement: Android Development Tools 0.9.5.v200911191123-20404 (com.android.ide.eclipse.adt.feature.group 0.9.5.v200911191123-20404) requires 'org.eclipse.wst.xml.ui 0.0.0' but it could not be found


For some reason ubuntu doesn't include the standard update repository for Eclipse by default. To fix this:
  • Go to "Help/Install New Software..."
  • Add http://download.eclipse.org/releases/galileo/ to the update sites list (strange it's not installed by default on ubuntu)
  • From there, install WST (use the filter box to find the package)
  • Restart eclipse
  • Go back to "Help/Install New Software..." and install the Android ADT as explained on the android website.
References: http://groups.google.com/group/android-developers/browse_thread/thread/c1f97d875e30f903/87cb75ef455d436f?#87cb75ef455d436f

Thursday, 11 September 2008

Google and Privacy

Just thought I'd add my thoughts on the Google privacy controversy. Google has certainly made a good stand with their new 9-month anonymization process. Whether they were forced to or not is irrelevant - the key is that consumers are concerned about their privacy, and Google has actively responded to this need by reducing their logs substantially. It's not that long ago that they kept logs for 24-months! I personally like to see this happening before it's brought to a court of law - unlike Microsoft's standard process.

Android

Only a week now until the first android device, the HTC "Dream" is released! Although the initial specs of this machine are nothing really impressive, it's Android's first chance to show it's worth. You could call it a "beta" run, but in a live market, with lot's and lot's of competitors watching. And the great thing is - it should be free to upgrade Android whenever you want to - no more "you've got Windows Mobile 5, I've got 6 so I'm better than you" kind of talk - everyone can upgrade their OS - or even customize it if you have the time and knowlege!

Thursday, 4 September 2008

Chrome-ating the Web Browser

We all knew it would happen. Google has just announced their own browser - Google Chrome.
Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier
At least, that's the spin on the homepage. I don't think this browser is very revolutionary, except for in the mobile area. It will certainly do well on Android. But they've done the right thing by open-sourcing it.

Wednesday, 11 June 2008

Fedburner finally Married to Google

Feedburner announced integration with Google accounts in April, and are now taking the next step in integration. Feedburner will soon be available from http://feedburner.google.com and existing feeds will be transfered to http://feeds.feedburner.google.com/feedname (see here for example).

Friday, 6 June 2008

No More video plusbox in Google Search

Google search no longer shows Video plusboxes. I don't know why they've removed this feature, as it was quite handy to me and others. Maybe they found it too hard to integrate third party results accurately, but I think there must be another answer. Anyone have any clues?

Monday, 2 June 2008

How to Solve the Third Question - Google Treasure Hunt 2008

This third question had me slightly confused. As I had no knowledge of network theory, it seemed at first too big a problem. But then, when I Googled the solution, I found that others felt the same way. And really, you don't need great network knowledge to solve this problem. All you need to solve the third problem in the Google Treasure Hunt 2008 is common sense and the ability to follow instructions.

Firstly, a bit about how network routing works.

Third Question:
  • 1- Start at node S
  • 2- First, add the current network node to the path. If D is the current network node the algorithm outputs the path and ends since the packet was just delivered to D. Otherwise advance to the next step.
  • 3- Iterate each routing table entry:
  • 4- D matches the Nth entry's network? Set the current node as the Nth entry's target gateway and Jump to step 2
  • 5- D does *not* match any of the routing table entries? Set the current node as the current default gateway and Jump to step 2
So what does this actually mean? Basically, given the starting node, look for the destination IP address in the three Routing Table Entries. If it's there, follow on to the IP address specified in that table entry. Otherwise, follow on to the default gateway. Repeat this process until you come to the destination node. It's that simple!

This doesn't even need a program to calculate it. I performed these operations by hand, and it only took about 10 minutes. I'm still waiting on the answer, but I'm fairly confident that it's correct. If you want a spoiler for the default question, click here. The next question's coming out June 3rd (tomorrow) so you'd better hurry if you want to answer this!

By the way, if you're puzzling over those "/24"s, check out Route summarization on Wikipedia.

The Treasure hunt has been a great opportunity so far for the geeks of the world to get creative with some problem solving. I've enjoyed it, as I'm sure many others have. Hopefully Google will continue to promote these "fun" activites, as they get the developer community active and give Google a good image in so far as community involvement goes. Thanks Google!

Update: My answer was correct! :D

Thursday, 29 May 2008

Google Earth - coming to a browser near you....

Google Earth just met the browser. In one of Google's most exciting new API releases, the Google Maps API is now extended to include support for 3D maps - Sky, 3D Buildings and all. Once you've downloaded and installed the plugin, you're ready to go, with a whole host of Javascript API calls available to tile, pan and manipulate the earth. Check out the samples to give it a test.

Wednesday, 28 May 2008

Google Adsense Video Ads go Worldwide

When I logged into my Adsense control panel today, I felt an urge to experiment with some new ads. As it turns out, that was a great idea, because I discovered a new option in my Setup tab - Youtube Video Ads.

Google released Video units some time ago, but only for US publishers. I was pretty disappointed at the time, as I live in Australia and was therefore denied access to the network. It seems they've now expanded Adsense for Video to the world though - today I successfully linked my YouTube and Adsense accounts and started publishing video ads.

Here is a sample Adsense for Video unit:
As you can see, the Adsense portion is shown at the top (or overlayed on the video), while user-selectable content (via keyword selection or channel targeting) is playable as normal below. Right now I'm experimenting with the options, and I'll try and post some more info as it comes in.

If you're a non-US Adsense publisher, you might want to log in to your Adsense account today - do you have Adsense for Video yet?

Update: Apparently this is breaking news - nobody else seems to have blogged about it yet! If you want, you can Digg the post.

Wednesday, 21 May 2008

Google Treasure Hunt - How to solve the second problem

Warning: spoilers contained within!
How to Solve the Second question in the Google Treasure Hunt 2008
(
question: 2 sums from 10202160872969032313.zip: line 4 in *BCD*.xml, line 2 in *def*.js)
Unlike the previous question (the robot on grid), I was able to solve the second question without too much difficulty. After about 20 minutes spent looking up bash manuals online, I came up with the following script:

#!/bin/bash
for file in $(find . -maxdepth 999 -path '*BCD*' -or -name '*BCD*' | grep ".xml")
do
tail +4 $file | head -1
done
echo "----"
for file in $(find . -maxdepth 999 -path '*def*' -or -name '*def*' | grep ".js")
do
tail +2 $file | head -1
done

This script basically uses the linux utility "find" coupled with "grep" to locate all files matching the pattern specified. Then, for each file, I piped the contents through "tail" and "head" to obtain the desired line, which is printed to the standard output.

The sharp-eyed among you might have noticed that this script doesn't actually calculate the sum of all the lines, or multiply these sums together. This is because I actually used the lazy-man's calculator, Google, to complete this part of the problem. Simply copy and paste the command line output from this script into Google, insert "+" symbols between each number, and multiply the two outputs using the same method.

I know this code is "spaghetti" code, but I'm too lazy to fix it up. Please post a comment if you're enough of a nerd to format this in intelligible code.

Now, to wait for the next one...... :)

Sunday, 27 April 2008

AppEngine Apps

I've made my first AppEngine apps now. I plan to do a few more, but for now, here are the URLs:

pi.appspot.com
http-get.appspot.com

Tuesday, 8 April 2008

I've got a Google AppEngine Account!

Yes, I've finally got it. After waiting 40 minutes, I got my first Google AppEngine Account. But unfortunately I don't have any time to test it here and now. All I had time to do first up was find their first broken link: http://code.google.com/appengine/docs/tools/configuringanapp.html. Try it - they seem to have made at least one mistake!

What languages are supported by Google App Engine?

What languages are supported by Google App Engine?

Currently, Google App Engine allows you to write your applications with Python 2.5. For security reasons, some Python modules written in C are disabled in our system. Also, since Google App Engine doesn't support writing to disk, some libraries that support this and other functionalities are only partially enabled. Our developer documentation gives a good overview of the Python runtime environment. A description and full reference of Python libraries that are disabled or partially disabled can be found here.

Additionally, your website templates can include Javascript along with your HTML. Among other things, this allows you to write webservices that make use of Ajax web development techniques.

From the Google FAQ