Google Cloud Print

cloud_print_splash

Google Cloud Print

Like an innocent, fluttering moth drawn unerringly and powerfully towards the bright light of a night-light, I just can not resist cool tech and gadgets! Google usually always come out with some really exciting stuff in their labs, things we all very rapidly take for granted after a while or think “why hasn’t someone already done this?”.

So is the case with this little project which has the all-familiar Beta label; Google Cloud Print. It’s a very simple concept and one that all of us must have thought about at last once. I’ve got something on a smart phone or slate/tablet, or I’m logged into a machine away from my home or office printer and I’d love to print this xyz off…but I can’t. I’ll have to connect my device to my machine or network or printer or copy the file over to my Google drive or Dropbox account and then remote onto my machine and print it off etc etc etc.

Well Google Cloud Print does this for us. Simply we associate a desktop that has Google Chrome installed on it (and is on and connected to the net obviously!) that has a connected printer to our Google account and then we can simply print directly to that printer wherever we are! It’s simplicity and hind-sight level of obviousness was definitely a face-palm moment for me.

How-To Configure Your Printer(s)

I’ll base this on the presumption that you don’t have one of the few “Cloud Print” enabled printers but a standard windows printer.

The first thing we need to do is enable Google Cloud Print from within the preferences in Chrome:

  • Click on the Settings button in chrome at the top right hand corner of Chrome: ChromeSettings
  • Click on “Show advanced settings…” at the bottom, then scroll to the end of the page:  GoogleCloudPrint_AddPrinters
  • Click on the “Add printers” button. If you are already signed into your Google account within Chrome, you’ll see a page like this: PrinterConfirmation
  • Click on the “Add printers” again. After a small pause which will give enough time for your Google account to add the printers (maybe 5 seconds), you can then click on the link to manage your printers.myCloudPrinters
  • We can see form the above image that we can choose to share our printers with other Gmail accounts, and it’s just as simple as it’s been so far!

So that’s the printers set-up so that we can print to them, but that does leave the question begging of “how do I actually print to my cloud printers?”. Well once again Google show themselves once again to be the masters of elegant and simplistic solution design. If your printing from any Google Docs app or Chrome you can simply choose from the print menu to use Google Cloud Print by changing the destination printer:

PrintDestination

If you are not printing from a Google App or from a page in Chrome you can simply installing either an Android or Windows (or even iOS or OS X) application onto your device from this list of currently available Apps: http://www.google.com/cloudprint/learn/apps.html

One of the things that really struck me most, apart from the overall coolness of it all, was the deep thought into the overall design of the process and the solution itself. One of the most dreary things with owning a PC is the sheer drudgery of installing and updating device drivers. Google have designed their cloud printing solution to not only be simple but also engaging. As a developer this is something that has really struck me about the majority of Google’s solutions is the sheer excellence in their approach to software engineering. Good software solutions are not only about providing the end-user with power and flexibility, but ultimately they should be intuitive and simple for the end-user and should never be a source of frustration! Fantastic work Google team!

Advertisements

Sudden Realisation!

Bruce-Lee: A goal is not always meant to be reached, it often serves simply as something to aim at.This is a bit of a personal-life blog entry and not one of my more usual tech/work related posts. Whilst I was at Perfecting ACT! this year I had the privilege of talking to and drinking with some of my great heroes from the ACT! and CRM world. During one of the conversations I was asked how I got into development, this simple conversation starter led me to a point where I recounted a part of my long journey, which is still largely unfinished, and I thought I would share here.

My background is in Biochemistry and Molecular Biology and just before I left academia and research I was working in a research lab on mitochondrial genetics. I won’t go into the story whereby I abandoned research and went into a field I knew nothing about; namely IT, except to say that to me at the time it felt that maybe this time I had over-stretched myself by over estimating my abilities to learn new skills!

During this period of learning, I discovered an interest in development and coding so proceeded towards learning HTML and Javascript (including a failed attempt to self-learn Java). I remember late one night trawling through the internet trying desperately to find a very specific kind of tool to carry out a particular task, I kept coming across the roadblock of very expensive utilities or shareware tools that I could not afford. At the time I rather whimsically thought of a future “me” that would be an experienced developer who would simply develop a tool to fulfil the task at hand. This little daydream became, at the time, all-consuming and not only drove me further in my learning, but also tormented my confused mind with, what seemed at the time, an unachievable dream.

Many years have passed and such thoughts were forgotten as I got on with my life in IT and continued study in development, till one day I was working with one of junior members in the tech team on a project of migrating a badly designed and implemented ACT! solution to a new model.

The client had been managed by another consultancy who had made some peculiar decisions which were causing major issues downstream post-implementation. Basically the client had 7 separate dBs, each had roughly 20 remote users who would synch at set times over a 24 hour schedule. The problem was that the server hosting the master had a very poor internet connection and the remote users were all working from a satellite office and synch was very unstable, failing many times.

The obvious fix to this was to migrate all 7 dBs onto a local server at the satellite office and use the scheduler to carry out synch thereby reducing the multiple points of error. This simple task was further complicated by each dB having, in some cases, in excess of 60 child dBs that had failed and so new RDBs had been re-cut but they had not removed the old RDB from the manifest. *sigh*. So we would have to manually clean up the whole system and deleted old RDBs.

Both of us were quite irritated by the time it would take to do this and my trainee/junior like a good ACC started manually disabling and then deleting RDBs from each manifest. I decided the quickest and most efficient approach would be to simply create a utility that would do this and within half an hour I had a a working (albeit ugly) tool that went into each dB and disabled and then deleted RDBs from the manifest one by one based on the last date of successful synch. If it was greater than 6 months it would remove them.
The task was completed in a very short period of time and we were ready to continue with the rest of the project. My junior remarked to me that it was lucky that I was a dev since it was like having a Genie in a Bottle!

For some reason this suddenly sparked from the darkest recesses of my brain memories of those tortured nights stooped over a cheap desktop with a copy of Visual Studio Learning Edition feeling frustrated, tired and with an over-riding sense of defeat, idly dreaming of a better time when I could code confidently but never expecting to achieve this goal.
It then suddenly hit me like a brick. I was actually living my dream! I had and continued to do the one thing that used to motivate me to not give up at my darkest times! I must admit that afterwards in the privacy of my room I did feel a little emotional since I had achieved for myself something that truly seemed impossible and I was doing these kind of things almost on a daily basis without even thinking about it.

The reason I wanted to share this out publicly was not to trumpet my own horn, but to give others an example of how not losing faith in ourselves and our dreams, but focusing on our daily hurdles/challenges and not overwhelming our minds with what seem like impossible goals, we slowly and gradually without much fuss or theatre, find ourselves at the summit wondering how we got there.

My hope is that maybe someone who is beginning the long, lonely and painful journey towards being a developer might read this and derive some hope and confidence that the dream is achievable.