Removing ‘Video Call’ default in Google Calendar

This ‘feature’ has been annoying me for a while and after this has caused some confusion with some of my clients I decided to go and look where to disable this. Why this has been made a system wide default is beyond me.

Rather than in the users Calendar Settings this is actually in the Google Apps Admin Console (https://admin.google.com/)

Console –> Google Apps –> Settings for Calendar –> Sharing Settings

Disable the “Automatically add video calls to events created by a user” setting.

Direct Link: https://admin.google.com/AdminHome?fral=1#AppDetails:service=Calendar&flyout=sharing

Galaxy Nexus Firmware Upgrade on Ubuntu (manual)

As a Galaxy Nexus Owner I have been waiting for months for an OTA (over the air) upgrade to the factory installed Firmware (4.0.2). I am finally sick of waiting and complaining to Google (an absolute lost cause).

After some research it turns out that (contrary to popular opinion) not every unlocked Google Nexus actually has the ‘official’ Google Firmware. Some of them have a Samsung variant (WTF !?) of the firmware. Now I really don’t want to get off the technical topic, but I personally think that this means Google is misleading their most loyal customer base. The reason I chose a Nexus device over the (from a hardware perspective) superior HTC One X was the fact that they were supposed to have the official Google Firmware and I did not have to wait forever for bugfixes from the manufacturers.

There are a reportedly several different versions out there. Google’s ‘official’ build for the GSM version of the Galaxy Nexus is named ‘yakju’. Samsung builds ‘yakjusc’, ‘yakjuxw’ and ‘yakjuux’. While they appear mostly the same, only Google’s yakju build is likely to get updates as they happen. Go figure why there was a need for others … :(

To find out which version your Nexus uses you can use this key combination (in the phone app)

*#*#4636#*#*

or for a more permanent option grab “Android System Info” from the Google Market.

Disclaimer: this procedure obiously has the potential to ‘brick’ your mobile. Only attempt this if you are absolutely comfortable with flashing device firmware. Proceed at your own risk !!! If you decide to proceed – BACKUP YOUR DEVICE FIRST ! Check the documentation for ‘adb backup‘.

All the notes below are for GSM (HSPDA+) NEXUS (GT I9250 – maguro) devices !

Android SDK Install

The Android SDK can be downloaded from the Androide Site: http://developer.android.com/sdk/index.html)

Android Fastboot Mode

For all the following procedures to work the device needs to be in ‘Fastboot Mode’
How put your phone in fastboot mode:

  1. Power off the phone
  2. Hold the Volume Up Key + Volume Down Key pressed and at the same time press the Power button.

You should now see an Android robot with it’s body opened (see photo).


wget http://dl.google.com/android/android-sdk_r18-linux.tgz
tar -xzf android-sdk_r18-linux.tgz
android-sdk-linux/tools/android update sdk --no-ui
#test fastboot mode
#this should show the serial number of the connected device
cd android-sdk-linux/platform-tools/
fastboot devices

Adding the USB Driver definitions for the Galaxy Nexus

vim /etc/udev/rules.d/70-android.rules
#add this line:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

Unlocking the Bootloader

NOTE: This command will erase the whole device. Make sure backups have been taken before (check the ‘adb backup’ tool http://developer.android.com/guide/developing/tools/adb.html).

fastboot oem unlock

Flashing the new Firmware

The ‘factory images’ for Nexus devices can be found here: https://developers.google.com/android/nexus/images – make sure to choose the correct model. The commands below are for the European GSM/HSPDA+ version of 4.0.4 (yakju)

wget https://dl.google.com/dl/android/aosp/yakju-imm76i-factory-8001e72f.tgz
tar -xzf yakju-imm76i-factory-8001e72f.tgz
fastboot flash bootloader yakju-imm76i/bootloader-maguro-primela03.img
fastboot reboot-bootloader
fastboot flash radio yakju-imm76i/radio-maguro-i9250xxla02.img
fastboot reboot-bootloader
fastboot -w update yakju-imm76i/image-yakju-imm76i.zip

After the last step the handset will reboot and you should be presented with a Google “Stock” device and go through the normal Android setup wizard. As it should have been when I purchased this “Google” branded device in the first place – thank you Google (and of course SAMSUNG) for wasting my time !

If you want to lock your bootloader after the upgrade (not necessary) you can go into Fastboot Mode again and issue the following command:

fastboot oem lock

Using Google Goggles in mobile learning projects

One of the lesser known free Google services in our experience is Google Goggles. Specially in it’s lastest release (Version 1.7) it has received a few enhancements that make it very useful for some mobile learning applications

Scanning of barcodes

Google Googles will scan most standard barcodes and provide information on the product scanned.

Here is an example from the Google Mobile Blog:

Let’s say you’re reading a magazine article you really like and want to share it with your friends. Just point Goggles at a part of the page, and instantly find a link to an online version to share immediately or read again later. You won’t even need the entire article in the frame. Goggles will also pull up more information from pages around the web where that text is mentioned, so its easier to learn about what you’re seeing.

Text recognition

You can use Google Googles to take images of printed text and have the result converted to text using OCR (Optical Character Recognition). Whil the results may vary our own test have shown good results on newspaper and magazines.

To download Google Goggles you can scan the QR code below

Google Goggles are currently available for both Android and iOS phones (just install via Android Market or Apple App Store. See http://www.google.com/mobile/goggles/ for further details.

Google Adsense – or when is big TOO big ?

I am not generally one for writing blog entries about customer support failures. Thanks to my technical work I have had my fair share of dealing with call queues and help-desk systems over the last 20 years. But compared with my experience with Google AdSense over the last weeks all of these just pale into funny memories. I have never experienced the outright refusal to acknowledge an issue and blanket denial of communications.

Speak No Evil, See No Evil, Hear No Evil by Alicakes*, on FlickrCreative Commons Attribution-Noncommercial-No Derivative Works 2.0 Generic License  by  Alicakes* 

 

The whole disaster began with an email we received in early August that our (Business) AdSense Account has been disabled.

This message was sent from a notification-only email address that does not accept incoming email. Please do not reply to this message.

Hello, After reviewing our records, we've determined that your AdSense account poses a risk of generating invalid activity. Because we have a responsibility to protect our AdWords advertisers from inflated costs due to invalid activity, we've found it necessary to disable your AdSense account. Your outstanding balance and Google's share of the revenue will both be fully refunded to the affected advertisers. Please understand that we need to take such steps to maintain the effectiveness of Google's advertising system, particularly the advertiser-publisher relationship. 

We understand the inconvenience that this may cause you, and we thank you in advance for your understanding and cooperation. If you have any questions or concerns about the actions we've taken, how you can appeal this decision or invalid activity in general, you can find more information by visiting http://www.google.com/adsense/support/bin/answer.py?answer=57153. Yours sincerely, The Google AdSense Team

We have had our AdSense Account for quite a number of years and it had accumulated the enormous sum of ~$50 over the last few years (I do have no way of checking this figure since we have not been able to log into this account since it has been disabled). The auto-generated email contained a single link to a FAQ which lists some generic options on what could have possibly been happening.

At the time the account was disabled I did not think much of it as I thought it might be related to some work our developers had done in preparation for a new free service we were launching for the online learning community (http://ims2moodle.brightcookie.com) and we were wondering if we could use this as some way of getting a bit of a return for this service. We also made some changes to our account to reflect a recent change in naming and emails. However I immediately contacted Google AdSense using a form linked from the support forum. I filled in the form to lodge an appeal asking Google to please provide us with an explanation as to what had gone wrong so we could take actions to prevent this from happening in future. We received an auto-reply that the appeal had been received.  On the 16th August we received the following.

Hello,

Thank you for your appeal. We appreciate the additional information you've
provided, as well as your continued interest in the AdSense program.
However, after thoroughly re-reviewing your account data and taking your
feedback into consideration, our specialists have confirmed that we're
unable to reinstate your AdSense account.

As a reminder, if you have any questions or concerns about your account,
the actions we've taken, or invalid activity in general, you can find more
information by visiting
http://www.google.com/adsense/support/bin/answer.py?answer=57153.

Sincerely,

The Google AdSense Team

Another copy & paste response. This was the last we have heard from Google AdSense. We have not have had a single response from Google Adsense since despite repeated attempts.

Since we had launched our service in the meantime we decided to create another AdSense Account using another GoogleID and after a week had this declined with no information as to why. I had also created another (personal) AdSense Account to use with this blog. This account was created and I was able to create an ad-channel for this blog (you might still see the empty spot at bottom of this entry (which I will remove in the next days or so).

However after roughly 2 weeks I received another email advising that my personal AdSense Account has been disabled as well – NO EXPLANATION. After another one or two emails over the next month to the above suport account which yielded (surprise !) no reply I decided in my despair to ring Google’s Australian Office in Sydney as a last ditch effort. As soon as I even mentioned the word ‘AdSense’ the person on the phone interrupted me an rattled down some script that there is “no support for Google AdSense available” (NO KIDDING !). After 10 minutes or so of repeating myself and feeling my adrenaline levels rise to unhealthy levels I decided to give up and do as the (not so) friendly person on the phone told me – send another email to – your guessed it – adsense-support@google.com with the familiar auto-response message. As per all the previous correspondence (or more likely monologue) I have to this day not received a reply. At that point in time I had given up on Google AdSense and started to look at alternative services.

However after receiving some excellent help from another member of an unrelated Enterprise Support in Sydney (hereinafter referred to as ” GoodSupportPerson“) on another (totally unrelated to AdSense) matter, which was taken care of in an exemplary manner, I got asked if there was anything else I needed assistance with. Poor GoodSupportPerson probably regretted asking this polite rethorical question at the end of a customer support incident ;-)

GoodSupportPerson forwarded my (in the meantime grown to 4) Case Numbers to the local AdSense team (even though he could have just rattled off the official AdSense “no support available” script). And GoodSupportPerson also followed this up personally with a reply after he got internal feedback (which if nothing else reveals there is human life within AdSense after all). He seemingly got a similar enthusiastic response from them [this is reading between the lines – as he obviously did not state this directly].

Apparently some “highly sophisticated pattern-identification technology” was the reason for disabling our account. If we would have gone to this degree of sophistication for fraudulent purposes surely this would just be ridiculous. We only had a couple of thousand hits on these sites over years (without major changes). Any monkey could create more than that just by doing random clicks by hand.

And if this was not caused by myself (which if this is really the cause I could say with certainty) why can I not even create a new account ?

Now I certainly do not blame Google for taking fraud seriously to protect their clients – to the contrary – I would expect nothing else. However I would at least expect there to be some procedure to address legitimate errors where activity turns out to be either in error or caused by a third party (with possibly dubios intent). Specially since this Service is obviously related to Google’s holy cash cow – AdWords (and I be damned if I ever use Adwords after this experience).

I was not asking to see proof of the alleged illegal activity. I would have even been happy to return any credits that from the time of discovery even though we have not been able to find anything wrong on our end.  I also do not care about the technology used to discover this. However we are a reputable business with for over 10 years in the web-application game. I think as a Google client that has been recommending Google Services for years I think we would deserve the courtesy of at least having a chance to continue using a service if we did not do anything wrong.

At the end of these conversation GoodSupportPerson basically suggested giving up on AdSense and was hoping the experience would not cause me loosing faith in Google.

Reflection Time – what can be learned from this experience

Serious

  1. For me this raises a serious question about the fact that some corporations are getting bigger than whole countries. These companies are able to make up their own rules without accountability  and get away with behavior most would consider highly unethical. What else could you call cancelling services and ceasing of funds without any possibility of any explanation ? When is big TOO big ?
  2. From my working perspective also has highlighted some of the dangers of placing your business in the hands of a third party (outsourcing / cloud-computing). It is something that I have always mentioned to my clients when discussing cloud-based services. I think that after this first hand experience I will probably have to put more emphasis on this when looking at risk management for these types of projects
  3. Don’t bet your business on Google Adsense – they won’t give a damn

Other

  1. This puts a whole new meaning to the Google Motto “do no evil” – if you do nothing (ignore everything) it not hard to do no evil …
  2. I might have cursed the support teams of similarly sized 800 pound Gorilla Corporates Microsoft and Sun in the past – i have done you wrong. YOU GUYS ROCK compared to Google’s AdSense Team
  3. Don’t waste your time trying to get any support from Google AdSense adsense-support@google.com is obviously just a pointer to /dev/null masked by a confirmation receipt
  4. The person responsible for setting the “non-SUPPORT” guidelines deserves an award. You seriously could not have made this s..t up even if you tried really hard
  5. It’s time to explore other options for (might write this up after some research)
  6. Don’t waste you time trying to proof a principle to a corporation of this size
  7. if you ever need an example on HOW NOT TO DO SUPPORT – try Google AdSense, you won’t find much better
  8. I never knew writing blogs can be such a cathargic experience (and a good way to kill 2 hours on a plane flight).
  9. I might need to get a life. Time to move on …

 

Hopefully this will help some bloggers that are seeking to find some way to get a return for the hours spent writing. I would be EXTREMELY hesitant to put my faith in a company that behaves in the way described above. I don’t care about a the few dollars Google ‘cancelled’ without any way to even get an explanation. But if somebody really needs this as some income – don’t waste your time like we had to learn the hard way – have a good think and consider some alternatives.

PS: Again my personal thanks go the member of the unrelated Support Team within Google Sydney, which has gone out of his way to try to forward my issues to the Google AdSense Support. That does give some hope that there are obviously people within Google that do understand what the word SUPPORT means. THANK YOU !

Alternatives to Google Adsense

Due to a recent absolute Customer Service failure with Google Adsense I have done some research on the alternative to Google Adsense as a content-sensitive mobile and web advertisements.

We are currently reviewing the following services:

Once we have some results I will update this post. Please add your comments should you have any (good or bad) experiences with similar services.

Hat tip goes to the following listing pages to get started:
http://generoustroopers.com/websites/the-biggest-list-of-google-adsense-alternatives/
http://www.tech-faq.com/alternatives-to-google-adsense.html

Back up Google Apps Mail using getmail4 + IMAP

Just a quick note on how to configure backups of Google Apps email to a local machine.

Install getmail

apt-get install getmail4

create config directory

Create a subdirectory in users home folder (and change permissions)

mkdir .getmail
touch .getmail

create config file

Create a file such as .getmail/username.gmail

[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
username = username@domain.tld
password = password
mailboxes = ("[Gmail]/All Mail",)

[destination]
type = Maildir
path = /path/to/storage/directory/

[options]
# print messages about each action (verbose = 2)
# Other options:
# 0 prints only warnings and errors
# 1 prints messages about retrieving and deleting messages only
verbose = 1
message_log = ~/.getmail/gmail.log

create data directories for storage

Create 3 sub-directories in your designated data directory

mkdir cur new tmp

run getmail

getmail -r username.gmail

Whilst this is more a ‘note to self’ rather than actual documentation – maybe it’s of use to somebody.

Thanks go to Matt Cutts: http://www.mattcutts.com/blog/backup-gmail-in-linux-with-getmail/ for the start.

Nokia Bluetooth Keyboard on Android

One of my oldest pieces of hardware is a trusty Nokia SU-8W Bluetooth Keyboard. I have tried to revive it on an Android 1.6 & 2.0 device with not much luck. However I got it working successfully on a Gingerbread (2.3.4) Google Nexus S.

Pre-requisites

Steps

  1. Install the BlueKeyboard JP from the Android Market
  2. Go to Settings > Wireless & Networks > Bluetooth Settings
  3. Scan for devices and click to pair the Nokia SU-8W
  4. Enter a passcode (I used the highly inventive 0000 combinaton) on the phone and click ‘OK’
  5. Enter the same on the SU-8W (need to use green ‘fn’ keys for numbers) and hit enter
  6. The phone should show the Nokia SU-8W as paired but not connected
  7. Go to Settings > Language & keyboard > BlueKeyboard JP Settings
  8. Select the Nokia SU-8W as the keyboard and make any other changes you might need
  9. Click the ‘Back’ symbol and tick the option box to enable the ‘BlueKeyboard JP’ keyboard
  10. In any data entry field (i.e. GMail) hold the finger on the input box and click ‘Input method’ and select BlueKeyboard JP
  11. Wait for the keyboard to connect.

 

Enjoy !