Subscribe: Google Mac Blog
Added By: Feedage Forager Feedage Grade B rated
Language: English
apple  apps  chrome  day  email  google chrome  google mac  google  mac  mike morton  mike  new  oauth  software  time 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Google Mac Blog

Google Mac Blog

Macs inside Google.

Updated: 2018-03-05T18:05:11.100-08:00


Getting your Google Mac news


By Scott Knaster, Editor

More than five years ago, we created this blog to tell you about our software for Macs. Since then, Apple’s products have become more popular than ever, and we’ve kept up by offering strong support for OS X and iOS, including the speedy and popular Google Chrome for OS X, the amazing Google Earth, and a whole bunch of excellent iOS apps.

Our Mac and iOS support has now become so mainstream that we realized we just don’t need to keep Mac news on its own blog, so we won’t be posting here any longer. For updates, we encourage you to visit our blogs for individual products, like the Chrome Blog and the Lat Long Blog.

Thanks for reading this blog over the past five and a half years!(image)

Steve Jobs, 1955 - 2011


We at Google were shocked and saddened yesterday to hear about the death of Steve Jobs. Steve's work has inspired and delighted many of us for decades, and we will miss him.

Please read Larry and Sergey's thoughts about Steve Jobs.


A new Objective-C library for a new generation of APIs


GregTomBy Greg Robbins and Tom Van Lenten, Software EngineersCross-posted with the Google Code BlogFour years ago, we introduced an Objective-C library for Google Data APIs. At first, it supported a scant three services - Google Base, Calendar, and Spreadsheets. Perhaps more surprising is that it was written just for Mac applications; the iPhone SDK was still a year off. In the years since, the library has grown to support 16 APIs, and has been used in many hundreds of applications. In a fine example of unforeseen consequences, most of those applications run not on the Mac but on iOS.The Google Data APIs were built on XML and the Atom Publishing Protocol, a reasonable industry standard for the time. But mobile, low-power, and bandwidth-limited computers are now the biggest audience for client software. Across the Internet, XML and AtomPub have given way to the lighter-weight JSON data interchange format. Other fundamental changes have also shifted the API landscape. Password-based authentication is being supplanted by the more secure and flexible OAuth 2 standard. The number of APIs has grown dramatically, making it impractical to hand-craft data classes for all APIs and all languages. When services offer API improvements, developers want access to those changes as quickly as possible.To support this evolving world, we are introducing a brand new library for Cocoa developers, the Google APIs Client Library for Objective-C. The library supports recent Google JSON APIs, including Tasks, Latitude, Books, URL Shortener, and many others. It is designed to make efficient use of the device’s processor and memory, so it’s a great fit for iOS applications.The new library includes high-level Objective-C interfaces and data classes for each service, generated from the Google APIs Discovery Service. This lets the library model data not just as generic JSON dictionaries, but also with first-class Objective-C 2.0 objects. The classes include properties for each field, letting developers take advantage of Xcode’s code completion and syntax and type checking.Here’s how easy it is to use the library and the new Google Books API to search for and print the titles of free ebooks by Samuel Clemens:#import "GTLBooks.h"GTLServiceBooks *service = [[GTLServiceBooks alloc] init];GTLQueryBooks *query = [GTLQueryBooks queryForVolumesListWithQ:@"Mark Twain"];query.filter = kGTLBooksFilterFreeEbooks;[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) { // callback if (error == nil) { GTLBooksVolumes *results = object; for (GTLBooksVolume *volume in results) { NSLog(@"%@", volume.volumeInfo.title); } } }];The library supports Google’s partial response and partial update protocols, so even items of data-rich APIs can be retrieved and updated with minimal network overhead. It also offers a simple, efficient batch model, so many queries can be combined into one http request and response, speeding up applications.When we introduced the previous Objective-C library, it was with this assertion: When you trust your personal data to Google, it's still your data. You're free to edit it, to share it with others, or to download it and take it somewhere else entirely. We hope the new library and Google’s growing collection of APIs help iOS and Mac developers to keep that principle meaningful for many years to come. You can start using the Google APIs Client Library for Objective-C by checking it out from our open-source project site and by subscribing to the discussion group.Greg Robbins writes code to connect Mac and iOS apps to Internet services. He chases dogs in the morning, and bugs in the afternoon.Tom Van Lenten is a Software Engineer on the Google Chrome team. He is also hooked on the Google Toolbox for Mac open source projects.Posted by Scott Knaster, Editor [...]

⌘ + Q: I didn’t mean to do that


by Robert Sesek, Software Engineer

In Chrome, have you ever accidentally hit ⌘ + Q when you meant to hit ⌘ + W? It’s both frustrating and a productivity killer to close your entire browser by accident, because you then have to restart and wait for all the pages to reload. It happens to us too. But now we’ve added a new feature in Chrome for Mac that can help keep you from losing your work.

On the Mac, Chrome can now warn you before quitting so that you don’t accidentally quit the browser when you’re just trying to close a single tab. To enable this feature, go to the Chrome menu in the upper-left and select Warn Before Quitting. The next time you press ⌘ + Q, a floating window will appear, instructing you to Hold ⌘Q to Quit. This way, if your hand slips and you press Q instead of W, you can go right on browsing without interruption. If you really do want to quit, hold down ⌘Q as it says and, after a second, all the windows will fade away and you can release the keys. If you want to skip this warning and quit quickly, you can just press ⌘ + Q twice.

As a side note, if you ever accidentally close a tab or window, you can use Chrome’s tab restore feature to get it back. Simply press ⌘ + shift + T, which will reopen the most recently closed tab or window. Just like the Undo command in your word processor, you can use this shortcut multiple times to repeatedly reopen closed tabs. You can also find tabs you’ve recently closed on the bottom of the New Tab page, or in the History menu.

We hope this feature helps prevent you from losing your place accidentally. Happy browsing!(image)

WWDC 2011 Journal, Day 4


by Mike Morton, Google Mac TeamGoogle Engineer Mike Morton is finished with Apple's 2011 Worldwide Developer Conference. Here's his final journal entry, written before he hopped a plane for home earlier today, where he's probably catching up on sleep and email, in that order.My last day in town began with a short – OK, very short – visit to the hotel gym, then the usual breakfast at Moscone of pastries (have these folks not heard that carbs are out of fashion?) and coffee. The guy across the table was wearing a t-shirt that read "I was a Mac user when Apple was doomed". It’s nice to be not doomed again.Early in the day, I went to a talk on accessibility on iOS. This included a great demo of iOS features to help people who are blind, visually impaired, deaf, or motor-impaired. There were also details of how to make sure our apps are useful for everyone. We also saw a short video of the Wearabraille system, which is the most high-tech accessory I’ve seen for an iPhone. width="480" height="390" src="" frameborder="0" allowfullscreen>Most talks include a demonstration app, sometimes with an Apple engineer creating the app one piece at a time. Since they paste in prepared snippets of code, that kind of demo moves fast, occasionally leaving me with the feeling of watching a cooking show on fast forward. Building an app on the fly, even with prepared ingredients, can be tough on the Apple folks, too. Even though it’s scripted, the parts done manually are an invitation for the Demo Gods to fling a few thunderbolts. Audiences are very patient, as most of us have been hit with thunderbolts ourselves, but it’s still tough on the person giving the talk.One of today's highlights was a performance by James Dempsey and the Breakpoints. James is the funniest guy at Apple, and does a song every year. I got there early and scored a front-row seat. Worth the effort, not only to see James perform "The Accessibility Song" on iPad instead of his usual guitar, but also for the number of words rhymed with "accessibility". I don’t think the performance has hit YouTube yet, but you can find several other performances online.The other music news of the morning was speculation about which musical act would show up at the traditional Thursday night WWDC bash. Rumors flew about The Edge, Michael Franti and Spearhead, Arcade Fire, and others. Some thought it would be someone whose music was played before the sessions. That would suggest the equally unlikely possibilities of a James Brown gig or a Beatles reunion.Those wanting to drink at the party had to show IDs to get wristbands. Perhaps they were expecting some serious drinking: the wristbands said "If found, return me to WWDC". The Franti faction was right, and the band rocked Yerba Buena Gardens, driving some of us old folks to the far edge of the garden, where the volume was more tolerable.Tomorrow’s special event is Buzz Aldrin speaking, but I’ll be airborne while he talks about orbit. I hope he repeats next year! Tickets for next year are already on my mind — WWDC 2010 sold out in eight days, and 2011 in eleven hours. Pressure for tickets will be intense in the future. I wonder if we’ll see scalping, or perhaps ’bots which will buy your ticket for you.WWDC 2012 will bring new things, but it will also be the same thing all over again: long lines, repeated sleep deprivation, seeing friends. I wonder how we can keep this blog from being the same thing all over again. What should my intrepid editor and I do? Interviews with attendees? Writing in lolcat for teh intire confuhrens? Capturing each day in a single haiku? Using nothing but memes built at We'll have to work on that. See you next year! [...]

WWDC 2011 Journal, Day 3


by Mike Morton, Google Mac Team

Every June, Mike Morton travels to San Francisco for Apple's Worldwide Developer Conference so you don't have to. WWDC content is covered by a non-disclosure agreement, so Mike's observations focus on ambiance, human behavior, and the effects of sleep deprivation.

I thought I was smart when I asked for a room across the hall from one of my team members, so we could easily get together for breakfast. It didn’t feel so smart when he knocked on my door early this morning. When I stuck my head out the door, he apparently noticed that my hair was going in enough directions to inspire Stephen Hawking to new theories about the nature of space, and helpfully observed "Oh, I woke you up." I didn’t have the presence of mind to reply, "No, no, I had to get up to answer the door anyway."

A few of us headed to Moscone and found a line of people waiting to get in. I knew I shouldn’t have answered the door. But it wasn’t much of a wait, and we soon had caffeine and pastries and were heading for the first session of the morning. I hit four talks today, skipping a couple of slots in a struggle to keep up with work email. (I got down to under 100 messages, but it’s back up since then).

Queues continued inside Moscone, with thousands of people waiting for the most popular topics. At one point, I left a small room and walked halfway around the building to a large one, only to find and follow a line of engineers reaching right back to where I started. The veneer of civilization wore a little thin as some attendees snuck in exit doors to avoid the wait and get good seats, but Apple staff mostly stopped that. I watched one Apple staffer trying and mostly succeeding to keep us in line, and asked him whether it was more like herding cats or herding sheep. He didn’t hesitate in answering — “Sheep”.

During lunch, Michael Johnson from Pixar spoke to a huge audience about Pixar’s technology and people. I caught him last year, but he always works in new material. There may or may not have been sneak previews of future films, but the non-disclosure agreement probably means I shouldn’t go into detail. As always, his talk was a lot of fun, a nice break from the serious stuff. That serious stuff does weigh on some people after a while. In the last session, I heard snoring a few rows back.

I keep seeing old colleagues and friends I but don’t have enough time to talk. I also wind up confessing that I flat out can’t remember a few names, but nobody seems to mind.

I’ve written in past years about the value of labs, where you can talk one-on-one with Apple engineers for help with learning new areas or solving problems. Unlike past years, I didn’t come with many questions, but some people sure did. There were huge waits in some labs. Unfortunately for the Apple folks, they wear distinctive t-shirts, so I bet they get cornered in the halls by people who didn’t get to them in the labs.

Tomorrow is my last day at this conference. I’m heading home early Friday morning. We’ll see if I can balance talks, email, and socializing – and oh, yeah, that gym in the hotel.(image)

WWDC 2011 Journal, Day 2


By Mike Morton, Google Mac TeamGoogle Engineer Mike Morton continues his nerd's-eye-view report from the Apple Worldwide Developer Conference in San Francisco. Today Mike starts with a festive breakfast and finishes at this year's edition of the legendary Stump the Experts.My team had a 7:00 a.m. meeting at a nearby restaurant so I woke early, dashed through the shower, glanced guiltily at the hotel gym, and headed out, only to find the restaurant is closed on Tuesdays. I continued on to a 7:30 breakfast for folks who coordinate chapters of CocoaHeads. I had a great time talking with people from around the world, everything from small talk about the conference to challenges in getting people to present technical talks. Mark Dalrymple, who helped found the organization, showed up and was mobbed by friends and well-wishers, about five steps from the food table. I helped disengage him and steered him to the food.There were door prizes, with iTunes gift cards going to the oldest chapter (besides Mark’s), the person who traveled the farthest, and the one who had the earliest Mac model. There was a tense moment on that last one when another guy and I both said we had original 128KB Macintoshes. I challenged "September, 1984. Full price!" He admitted he got his for two bucks at a yard sale — score!Mark talked a little about founding Cocoaheads with the mysterious Agent M. (I’ve never known Agent M’s name, and have gotten kind of resigned to that little mystery. I was kind of alarmed to see that nobody else there seemed to know it either.) Mark graciously said that Agent M had the vision to plan a global organization, joking that left to himself he would have named it "the Western Pennsylvania Macintosh Programmer’s Cooperative". We posed for a group photo. Someone yelled "Java!" at the right moment and got a good group laugh.I headed to Moscone and played hooky only once in six sessions. Apple works hard to make their engineers give polished talks with polished slides, and it shows. Most presentations were good — and crowded. Lines to get into the most popular sessions snaked randomly around the waiting areas.A few sessions had hiccups: A missing slide, a demo application not working. Presenters rolled with the punches. One cheerfully moved on with "imagine you saw a demo, and it was great!". (He got a round of applause.)I went to lunch in the Moscone cafeteria for the first time this week and found that every table had power strips and fast, wired network connections. Nerdvana! As so often happens when traveling, network connections are iffy. My hotel’s wi-fi and wired connections are both flaky, and Moscone’s wireless net is variable, depending on how crowded the room is. My iPhone’s tethering makes a nice Plan B at any location.After dinner out, I poked my head in for the Apple Design Awards. It was crowded, so I left and took a break at the hotel to try to catch up on email and other things. I returned about 9:00 p.m. in time for Stump The Experts, my first time seeing this famous event. It’s a manic, disorganized, geekier-than-thou fest, with serious technical trivia about products (way back to the Apple I, even) and programming, but also some wild hats, a lot of improv, rebus puzzles, trying to guess a "will it blend" mystery object from its blended remains, a Mountain Dew tasting, and a "crazy Swiss guy". If I had attended any of the 19 previous years, maybe I would have understood what that last was all about.Stump The Experts in a typically organized poseThe event is a competition between the audience and the on-stage experts. The format is… well, I couldn’t figure out if there was one. Competition is high-spirited, with lots of argument about who’s right. Example: "I quote the Wikipedia page, which we didn't even have to lie and edit". Some questions are asked on the spot by the audience. The biggest laugh of the night came when a[...]

WWDC 2011 Journal, Day 1


by Mike Morton, Google Mac TeamGoogle engineer Mike Morton is back with his annual report from Apple's Worldwide Developer Conference in San Francisco. Today Mike blogs about lines, coffee, a parking garage, and even more lines (or is it the same line?).My alarm went off at 4:30 a.m. and I stumbled out of the hotel before realizing I hadn’t checked Google Maps for the short walk to Moscone. I figured I could follow the stream of geeks in WWDC sweatshirts instead, but I didn’t see a lot of people. Some salmonic instinct from past conferences kicked in and I found the conference anyway. (It’s not hard — when you get near it, the line of attendees outside is obvious.)I walked a couple of blocks to near the end of the line and found my colleague Pat (cutting in line to join friends is always accepted). He told me someone had been by counting and he was about number 700 in line. By this time, it was nearly 5:30 and a lot lighter. Many WWDC’ers were huddled against the wall of Moscone, trying to avoid the chill and looking unnervingly like homeless folks I’d seen a couple of blocks before on Market Street. Someone was playing saxophone on the sidewalk across the street. Most attendees looked pretty tired. A lot had brought folding chairs.The line stretched around the blockOther Google colleagues and some friends-of-colleagues joined us. Paul, another engineer on the iOS Books team, brought coffee. (I owe him big time.) Lots of catching up, introductions, schmoozing, talk of past WWDCs, and speculation about this one. One great speculation game was the Expo Bingo app, which gives you a couple of dozen phrases to watch for. My board looked like this before I started…and I didn’t do very well.Apple staff encouraged us to close gaps and stand four abreast, later six abreast, to try to reduce the length of the line. Engineers aren’t especially good at following simple orders, but the Apple folks tried anyway. Lots of people came by promoting various companies -- giving away freebies or coupons, hiring, and so on. We spent hours on the north side of Moscone West, looking at a big parking garage. I’m surprised nobody has paid to hang ads on it.When registration reopened at 7 a.m., I took a break to go inside for that. Everyone got a nice "WWDC 11" sweatshirt. I’m giving mine to my friend Andy, who’s crazy enough that he flew all the way from New York to San Francisco despite having no ticket for the conference. (Andy was not crazy enough to wake up and join us for hours in line, though.)Staff let us in a little before 8:00 a.m. A staffer counted as I went by, and I was number 935. Inside it was warmer, with coffee, juice, and pastries. We crowded into long, broad lines in the hallways…and waited some more. Some folks sat; a few lay down. At one point the line surged then stopped as suddenly — a security guy explained that someone had picked up a backpack and others had followed suit and…well, these things happen. We debated whether we should be more properly compared to sheep or to lemmings. Security folks weren’t entirely reliable: another told us that we were too far back to fit in the main room, and would be in an overflow room, which would have sharply reduced the RDF. He turned out to be wrong.By 9:45 we got to sit down in the main room. One friend, who’ll remain nameless, exclaimed loudly “This is the best thing that’s happened to me today”. We’d been standing for 4 to 5 hours. I suppose I shouldn’t complain — rumor had it that the guy at the front of the line had been waiting since noon yesterday.About 10:00 a.m., James Brown’s “I Feel Good” blasted, and soon after that Steve Jobs walked on. He looked gaunt, but smiled broadly at the standing ovation he got. An audience member yelled “We love you!”. I’ll let you read more detailed accounts of the announcements in the many blogs and[...]

iOS and Mac Sign-In Controllers graduate to OAuth 2.0


by Greg Robbins, Software EngineerIn September, we introduced OAuth 1 sign-in controllers to simplify authenticating users from iOS and Mac applications. As the Internet software industry is converging on a newer standard, Google now offers the Google Toolbox for Mac OAuth 2.0 Controllers. This new library enables Cocoa applications to sign in to Google and other services that conform to the latest draft of the OAuth 2.0 standard.From the perspective of both users and developers, the new controllers are similar to the old ones, and are just as easy to use. As before, the controllers handle displaying an embedded web view and interacting with the server, and optionally allow saving the authorization token in the keychain. The server takes care of obtaining the user’s password, describing the permissions requested by the application, and asking for captcha responses or 2-step verification or whatever tomorrow’s security requires.Here is how developers can present the sign-in view for a Google service using the OAuth 2.0 controller:NSString *scope = @""; // scope for accessing a user’s Google ContactsGTMOAuth2ViewControllerTouch *viewController = [[[GTMOAuth2ViewControllerTouch alloc] initWithScope:scope clientID:@"" clientSecret:@"PVYx34Fr" keychainItemName:@"My App: Google Contacts" delegate:self finishedSelector:@selector(viewController:finishedWithAuth:error:)] autorelease];When the user finishes signing in, the controller invokes the application’s callback method:- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error { if (error == nil) { // Authentication succeeded; retain the auth object }}There are a few important changes for developers in the new standard. The most prominent is that developers must obtain client ID and client secret strings for an installed application from Google’s API Console. Other API providers supporting OAuth will also have web pages for issuing client ID and client secret strings. The provider may require that the application register an OAuth callback URI string, depending on the details of how they support native applications.Another difference from the older OAuth protocol is that the step of authorizing a request must be asynchronous. Because OAuth 2.0 access tokens may expire, they must occasionally be refreshed when used to authorize a request. Our OAuth 2.0 authentication class hides the refresh step transparently by fetching refreshed tokens if needed when authorizing the application’s request, invoking a callback method or block once the request is finally authorized, like this:[auth authorizeRequest:myNSURLMutableRequest completionHandler:^(NSError *error) { if (error == nil) { // the request has been authorized } }];Applications using our API library service classes or the GTM HTTP Fetcher class can make authorized requests even more simply by setting the service or fetcher authorizer property:[fetcher setAuthorizer:auth];The Google Data APIs Library for Objective-C now integrates the OAuth 2.0 controllers, making it the preferred way for developers to let users sign in to the library’s many supported APIs.You can learn more about the OAuth 2.0 protocol by checking out Google’s documentation, and about the GTM OAuth 2.0 controllers by reading the introduction at the project site. Suggestions and questions on the controllers are welcome in the GTM OAuth 2.0 discussion group. [...]

Simian: Mac OS X package deployment via App Engine


Administration of software packages on the Mac platform can often be daunting. Google’s Mac Operations and Security teams evaluated several solutions for OS X package deployment, but unfortunately none of them met all of our required features. We decided to build our own solution to do the following:

  • Deploy new or updated software by targeting a single Mac or tens of thousands.
  • Push security patches, whether the Mac is on an internal network/VPN or not.
  • Force mandatory installation of some packages, while allowing others to be optional.
  • Tightly manage Apple-provided updates.
  • Scale without deploying and maintaining additional server infrastructure.
  • Obtain reports on all of this and the fleet overall.
Today we are open-sourcing Simian, our solution to enterprise-class Mac OS X package deployment. Simian uses App Engine-based hosting to scale with the needs of your growing enterprise, and a Munki-based client which will continue to evolve through the outstanding work of Greg Neagle and the Munki community. We hope this to be the first of many announcements in sharing Google's unique IT approach with the larger community.

For more information, please visit our Simian project page, join the discussion list, and download the code. For more information about Munki, please visit its project page.

By John Randolph and Justin McWilliams, Google Corporate Platforms Engineering Team

(Cross-posted from the Google Open Source blog.)(image)

Improvements up and down for Picasa Web Albums Uploader


By Greg Robbins, Software Engineer

Our new release of Picasa Web Albums Uploader for Mac OS X adds some valuable improvements suggested by users. If you share photos and videos on Picasa Web Albums with friends and family, you’ll find this update works even more smoothly with iPhoto and other photo management applications on your Mac.

The uploader application and iPhoto export plug-in now try to identify when files are duplicates of photos or videos already in the destination album, and will offer to skip uploading the copies. This is especially helpful when exporting directly from iPhoto, since now you can upload a growing iPhoto album or event repeatedly without having to carefully exclude the files you previously shared.

When photos are resized or are converted to JPEG, the new uploader also offers better image quality, and more consistent preservation of photo metadata like photo orientation and camera details.

This release is also a better foot soldier on the Data Liberation Front. When you use the Picasa Web Albums Uploader application to quickly download one or all of your albums, it will retrieve not just photos but now also a video file for each of your movies when MPEG-4 versions are available from the server. This makes Picasa Web Albums an even better choice for sharing your high-definition videos.

The latest release of the uploader, version 1.4, is available from the download page. If you have an older version of the uploader on your Mac, it may have already updated itself. To share your questions or suggestions, join the conversation in the Mac Uploader area of the Picasa Help forum.

Use Chrome like a pro


Two months ago, Chrome team members shared a list of their favorite extensions on the Official Google blog. This time around, we asked Mac aficionados on the Chrome team to share with us the extensions they like the most. Below is a list of their favorite extensions.

  • Google Voice - Make calls, send SMS, preview inbox and get notified of new messages right in your browser (US only).

  • Send from Gmail - Makes Gmail your default email application and provides a button to compose a Gmail message to quickly share a link via email.

  • iReader - View news stories and other articles in a very easy to read, clutter-free, scrollable display.

  • Google Dictionary - View definitions easily as you browse the web, similar to using ⌘-Option-D in other Mac applications.

  • delicious bookmarks - Integrate your bookmarks with Google Chrome with the official Chrome extension for Delicious, the world's leading social bookmarking service.

  • Instachrome - Collect articles from around the Internet to read them on the web with Instapaper.

These are just a few extensions to help enhance your web browsing experience and address the most requested features. If you don’t have Google Chrome yet, you can download it here. There are more than 7,000 extensions to choose from in our Google Chrome Extensions gallery, so you’ll be sure to find the right extensions for you.

Posted by Mike Pinkerton, Staff Software Engineer(image)

An HTTP Fetcher Class for Mac OS X and iOS Apps


By Greg Robbins, Software Engineer(Editor's note: Today's blog post is another cool one for programmers in the audience. Non-developer readers, thanks for bearing with us.)Mac OS X and iOS provide developers with a high-level class, NSURLConnection, that makes interacting with servers pretty easy. NSURLConnection follows the system networking preferences, navigates through proxies, and handles other details just as users expect on their devices. But in applications that require a series of server requests and responses, NSURLConnection can be inconvenient to use. All connections made by an application’s class call back into a single set of delegate methods, and when there are numerous connections to be made, sorting out the responses is a bit of a chore.So ever since Google’s first Mac application, Gmail Notifier, we’ve used a wrapper around NSURLConnection to make it easier to issue http requests. After years of being hidden away and evolving inside of other projects, the Google Toolbox for Mac HTTP Fetcher has now been promoted to its own Google Code open source project. Though simple to use for basic GETs and POSTs, it also offers a variety of convenient features for developers of networking applications.Here is an example of using the fetcher to make a request of a server:#import "GTMHTTPFetcher.h" NSURL *url = [NSURL URLWithString:@""];NSURLRequest *request = [NSURLRequest requestWithURL:url];GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];[myFetcher beginFetchWithDelegate:self didFinishSelector:@selector(myFetcher:finishedWithData:error:)];and when the request is complete, the fetcher invokes a single callback in the application:- (void)myFetcher:(GTMHTTPFetcher *)fetcher finishedWithData:(NSData *)retrievedData error:(NSError *)error { // if error is not nil, the fetch succeeded}One class can initiate many fetches, each with their own callback selectors, making it easy to pack a lot of networking into a single class. In iOS 4 and Mac OS X 10.6, Objective-C blocks simplify fetching even further, avoiding the need for callback methods:[myFetcher beginFetchWithCompletionHandler:^(NSData *retrievedData, NSError *error) { // check the error and use the retrieved data here }];As with the underlying NSURLConnection class, the fetcher’s requests are always asynchronous, so the user experience is never blocked waiting for a server response.This basic http fetcher functionality requires adding just a single source file and header to an application. But the fetcher comes with support for many more advanced features, such as automatic retry on errors, cookie handling, ETag tracking and response caching, convenient request and response logging, and multi-part MIME upload.To get started using the GTM HTTP Fetcher, read the introduction at the project site, and join the Google Toolbox for Mac discussion group. You can find even more of our open source resources for iOS and Mac developers at the Google Mac Developer Playground. [...]

OAuth Sign-in Controllers for iOS and Mac OS X Applications


By Greg Robbins, Software Engineer(Editor's note: Long-time readers know we sometimes publish posts aimed at programmers, and this is one of those. If you're not a software developer, don't worry. Our usual non-technical stuff will return.)It’s rare today for any software to live in isolation. And often, applications want to connect to data in your Google Account. Social networks seek access to your Gmail contacts, finance programs try to sync with your Google Finance portfolio, and photo editing software would like to add eyeglasses and mustaches to the photos in your Picasa Web Albums account. But you probably don’t want your photo editing program to be able to download your financial portfolio, spend money with your Google Checkout account, or have access to any of your other personal data.The fundamental problem is that giving your username and password to a program hands it access to all of your data. Recently, Internet software developers have converged on a solution called OAuth. When sites and software support OAuth, you only need to give your username and password—your credentials—to the site where your data belongs, and that site passes a token with strictly limited authorization rights back to other sites and software.For example, if you want to use the new SuperAwesomeEditor application to trim your YouTube videos, the editing program can use OAuth to ask YouTube for permission to edit your videos, and then YouTube will ask you to verify your identify. Once you give your username and password to YouTube, it will hand back to SuperAwesomeEditor a token allowing it access just to your YouTube videos for editing. SuperAwesomeEditor won’t know your password, so it won’t be able to grab your financial documents or check out your Gmail contacts. And tomorrow, if you change your mind, you can tell YouTube to cancel that token, and suddenly SuperAwesomeEditor will be unable to access your videos at all. Now you’re in control of your personal data.OAuth offers another big advantage: it gives the data provider flexibility in how it authenticates you. So today you may be asked for your username and password, and also to solve a captcha to prove you’re human. Tomorrow, with tighter security, the provider can add another means of authentication, perhaps by sending a text message to your phone with an extra passcode to type when signing in. Improvements in user authentication over time like this aren’t possible in software that only knows how to ask for a username and password.Unfortunately, the rose of OAuth comes with thorns. One bit of pain is that it takes a lot of tricky programming for applications to use OAuth for authentication. Another downside stems from OAuth having been designed to allow one website to obtain authorization from another; it is not well-suited for use in installed applications, such as native iPhone, iPad, or Mac OS X software.To encourage adoption of OAuth by Mac and iOS apps, we have released the Google Toolbox for Mac OAuth Controllers. This small set of Objective-C classes makes it easy for developers to add OAuth sign-in embedded into Cocoa apps. Since adoption of OAuth extends beyond Google, the OAuth controllers work with both Google and non-Google data providers.Here’s how easy it is for developers to let users sign in to Google Contacts with OAuth from an iPhone application:#import "GTMOAuthViewControllerTouch.h"NSString *keychainItemName = @"HotSocialNetwork: Google Contacts"NSString *scope = @""; // scope for Google Contacts APIGTMOAuthViewControllerTouch *viewController = [[[GTMOAuthViewControllerTouch alloc] initWithScope:scope language:nil appServiceName:keychainItemName delegate:[...]

WWDC 2010 Journal, last day


By Mike Morton, Google Mac TeamGoogle engineer Mike Morton has now made it home after a week of sipping at the firehose known as Apple WWDC in San Francisco. In today's post, Mike shares his thoughts and observations as the conference winds down — and so do the attendees.Thursday was a good day. I attended interesting talks, and I got lots of good info from talking to Apple folks in the labs. I left before Friday, the last half-day of the conference.As the week goes by, some attendees start nodding off in talks. I don’t think that’s a reflection on the speakers, just on the cumulative sleep deprivation of the conference. I’m pretty sure I’ve kept my eyes open the whole time, even though some of the material is review for me, and other stuff is over my head. A lot of the talks on my last day were about making applications efficient on iPhone and iPad. Here, “efficiency” is not just how quickly they respond, but other measurements, too, such as how long they can make the battery last. Battery life weighs on my mind as I try to find a seat next to a power outlet for my laptop. I sometimes feel like Shakey, an early robot whose sole purpose was to find power plugs.Labs continue to be a great source of info. I met my colleague Paul on the escalator and he excitedly told me that the answer he’d just gotten to one question was worth the whole price of the conference. I wouldn’t go quite that far, but I’m impressed at Apple engineers who are willing to sit down, look at our code, work through questions, and draw diagrams on a whiteboard. Between talks and labs, there’s non-stop schmoozing. Some of it is totally business-oriented, but much is just chatting and discovering connections. I bumped into two fellow Dartmouth grads. Both attended after my time, but at least they graduated in the same millennium as I did. I also took several breaks just to observe nerd behavior. One scary trend: some people walk around while looking at an iPhone and an iPad at the same time. Miraculously, nobody accidentally walked into a window or escalator.The famous James Dempsey and the Breakpoints performed this week. I missed it, but here's a shaky video.So Thursday ended and I walked out to catch my redeye. The end of a conference is always an anticlimax, especially so when you leave early. There ought to be some sort of reminder that we’ve come together once again, and that Apple has gone from just surviving to thriving and changing the world. Apple people have a tremendous sense of history, and love to talk about who worked on what when. We see the past more clearly than the future, but we know the future often echoes the past.I wound up at SFO in the world’s slowest security line. I removed my belt. Then I lifted my arms to get scanned. Somehow my pants didn’t fall down. Maybe it was that Moscone Center food.I fell asleep on the plane and woke up as we landed at Logan. The guy next to me was putting away a nose-hair trimmer. Perhaps he was getting ready for FaceTime.See you next year! [...]

WWDC 2010 Journal, Day 3


By Mike Morton, Google Mac TeamGoogle engineer Mike Morton eschews sleep (mostly) while attending Apple's WWDC in San Francisco. Here's his account of day 3 in the life of an iDeveloper.Things are settling into a routine. After dinner, I retreat to my hotel room and wrestle with the wifi to catch up on email and look at tomorrow’s sessions. I worry about which sessions to skip so I can visit scheduled labs and pump Apple engineers for advice. Today I attended four sessions and skipped two. That ratio seemed about right.Many labs are busy. I waited a long time to ask a couple of questions about Core Data. That’s an Apple technology for storing info, not related to the phylum chordata. After an hour, I gave up. But the busiest lab is the one for User Interface consulting, where you can show your prototype application to Apple UI gurus and get advice. This takes place in private rooms, because prototypes are often secret. Unlike other labs, this one takes reservations, and by early morning they’re booked for the whole day. That must be frustrating for folks who don’t get a slot, but I’m glad that so many people care about the fit and finish of their apps.Today’s sessions were great…but of course the non-disclosure agreement won't let me tell you about them. During one session, I took frantic notes, emailed them off to my team on the east coast, then got questions back that I asked at a session an hour later. Technology is so useful!The obligatory power adapter shotI caught most of a lunchtime talk by Pixar Senior Technologist Michael Johnson about Pixar’s internal software projects. His talk was fast-paced and witty, with a lot of lessons about how to make good in-house software. He mentioned one important deal that happened because of a conversation at WWDC’s annual beer bash. The clear lesson was that beer bashes are an important part of the industry. Just as we always suspected.In between sessions and labs I caught up with old friends and colleagues. I've been doing this for a while, and sometimes I get a little behind. I asked one friend about his toddlers, and he showed me a photo of his older daughter in an evening gown. Other parents are fretting about college choices and driver's licenses. It's nice to be reminded that geeks have a life, too.Some non-geek friends have been in touch by email, curious about what’s going on. They’re especially interested in FaceTime, and other possible uses for the front-facing camera. One friend suggested that it will make a handy mirror. That gives me a great idea for an app: Do I Have Spinach in My Teeth?Thursday is my last day. I'm taking a redeye home Thursday night. Friday is supposed to be a work day. We’ll see how that goes. And now it's time to start packing. [...]

WWDC 2010 Journal, Day 2


By Mike Morton, Google Mac TeamGoogle engineer Mike Morton somehow finds time to blog from Apple's Worldwide Developer Conference in San Francisco while also learning, socializing, eating, and occasionally sleeping. Read today's entry for more.Day 2 had barely begun, and I felt like I’d been here a week. The constant time-juggling is a challenge: attend a session, ask questions in a lab, eat, sleep, work, schmooze? Before heading to Moscone West, I chatted in the hotel lobby with other attendees about the time challenge. One first-timer told me his friends simply suggested he get to as many parties as possible.I spotted an attendee wearing a “hi, i make macintosh software” t-shirt. I noticed later that “macintosh” is an anagram of “Hm, iOS can’t".Breakfast at Moscone featured uninspiring food, but inspiring conversation. A friend and I sat at a table with four folks we didn’t know, all with different interests. One was a grad student, doing systems for kids with various disabilities. He asked the accessories engineer if one could build a simple device with just two buttons, for simple apps for his students with motor coordination problems. The accessories guy reached into a bag: “Like this one?”. He showed us Pong running on his iPhone, using the extra hardware to control it!Last year, the show had a huge display of app icons, each one jiggling each time it was downloaded. This year’s display was different: app icons fell from the top like meteors, one for each download. Popular apps showed their icons over and over. That made it a lot easier to find Google Earth, which I never did spot last year — and Google Mobile seems to be "selling" like hotcakes.The wifi and cell networks continue to struggle with the load, sometimes failing but usually somewhat usable. Apple staffers did better under load, staying quite pleasant. Some have boring jobs like using a clicker to count attendees entering each session, but they still manage to stay cheerful. I teased one clicker dude: “Don’t you have an app to do that?” He replied he did have a phone app, but that the cheap clicker was easier to use. Low tech sometimes wins.The Apple Design Awards were noticeably different this year. They didn’t list nominees, but instead just announced each winner. That takes some of the fun out of it, in my humble opinion. More significantly, all the awards were for iPhone or iPad apps — nothing for Mac OS X at all. A bunch of hardworking iPhone developers took home beautiful cubes with a glowing Apple logo and a bunch of hardware, and had their conference costs reimbursed.As in past years, John Geleynse from Apple demoed each app. This is fun because some apps involve musical skill, artistic ability, game-playing reflexes, and so on. He did pretty well, but joked that the awards committee might be picking apps that he’ll find challenging. And, as in past years, I feel like I should try each of the winning apps, even though there are so many apps, so little time. Perhaps Apple could offer a package deal on the App Store: all the winning apps together, at a discount?I’m sure the annual Stump The Experts was great [Editor's note: yeah, it was!], but the combined siren song of email backlog and sleep backlog was too great. [...]

WWDC 2010 Journal, Day 1


By Mike Morton, Google Mac TeamGoogle engineer Mike Morton is doing his annual blogging from Apple's Worldwide Developer Conference in San Francisco. Today we get Mike's insights on WWDC keynote day, with all the fun and reality distortion it brings.It’s 10 PM Monday. I’ve had six hours sleep in the last 48 hours and am verging on delirium, but it’s a happy kind of delirium. I got a good dose of Reality Distortion today (“a few molecules of Steve Jobs” as one developer said as he settled in for the keynote).Waiting for the keynote, we got to listen to music, including Satchmo’s Wonderful World, and watch on the big screen as the camera focused on various audience members. Audience folks quickly caught on to the idea that if you put an interesting message on your iPad screen, the camera would find you. The big screen showed iPads saying “This is not a PC”, a New Zealand (I think) flag, “Hi Mom!”, “Free Hugs”, and “Thank you, Steve”. There was one with a job posting for AOL, complete with a Twitter account to contact. Best of all was a set of four iPads spelling W - W - D - C, with the C taking a little extra time to get ready, and the audience cheering when it did. Perhaps presaging the mobile device emphasis of the keynote, one laptop screen just said “MACS TOO!”.Steve walked on to the usual wild applause and camera frenzy. He looked very thin, but very happy. As he usually does, he began with numbers: the number of developers attending and how many countries they're from (5,200 and 57) and the number of days it took to sell out the conference (8 despite the fact that "this is the biggest place we can get!"). He talked about the iPad working its magic on sales numbers, and the large numbers of iPad-native apps, as opposed to iPhone apps which work on the iPad in a compatibility mode.You’ve probably read a lot about the keynote already, so here are some moments that stood out for me:Steve talked about the App Store. He indirectly addressed complaints about apps being rejected or waiting for approval, listing various good reasons that apps have problems, although some in the audience thought the list of reasons provided might be incomplete.He invited three iPhone developers up to talk about their products: NetFlix, Zynga (the Farmville folks), and Activision, whose Guitar Hero demo was slick. He wrapped up by telling us that the App Store has hit 5 billion downloads, and has paid $1 billion to developers. Carl Sagan would have been right at home with this billions and billions statistic.Steve quickly moved to introducing iPhone 4. I was impressed by lots of things, especially the promise of apps that use the new gyroscope hardware. There’ll be some great virtual reality and augmented reality apps coming out of that. I was also intrigued by putting cellular, wifi, and other antennas into the metal around the edge of the case. I hope that’ll improve reception.iMovie for iPhone looks cool, too, although as a cousin to Final Cut, I wish they had called it Final Tap. It could have gone to 11.And then came the classic “One more thing”: FaceTime video calls. This is going to be huge. It’ll go viral, selling itself, because it’s so noticeable when someone is using it in public. Plus it’ll drive sales of nose-hair trimmers (note to self: invest now).Steve showed a video of people talking with FaceTime. This included a very moving moment when a soldier saw his baby on ultrasound via FaceTime. Steve said something I’ve heard him say before: "This is one of those moments that reminds us why we do what we do".The keynote conspicuo[...]

WWDC 2010 Journal, Day 0


By Mike Morton, Google Mac Team

As regular readers know, every year, Google engineer Mike Morton becomes intrepid reporter Mike Morton as he ventures to Apple's Worldwide Developer Conference in San Francisco. Except for the contents of Steve Jobs's keynote address, Apple doesn't allow attendees to disclose the technical bits of the conference, so he writes about other important observations and details, such as flights, food, lines, and plans (successful and otherwise). Here's the first part of Mike's 2010 journal.

Summer is here, and that means ice cream, hay fever, swimming in the pond, and — for people who develop Apple software — the annual gathering of the faithful called the Worldwide Developer Conference, known as WWDC to everyone.

I planned a short hop from my New Hampshire home down to Boston’s Logan airport, then to San Francisco just in time to get a few hours of sleep and head to the conference on Monday. Developers want to be in line early for the Steve Jobs keynote, because… well, actually, I don’t know why. We just always do. Some want to sit up front, but good camerawork and big screens throughout the room mean you can see from anywhere.

To my amazement, one die-hard Apple developer emailed me today that he plans to skip the keynote, and instead go eat pancakes and watch the live-blogging. (I won’t name him, because I worry he’ll lose friends over this.) He’s just tired of waiting in long lines. Personally, I enjoy the line. It's a chance to catch up with people, to see and be seen.

As I write this from my transcontinental flight, it’s about 11 PM Pacific Time, and we’re going to land around 1:15 AM. I think that’s 4:15 AM on my biological clock, which is the time I normally wake up. We’ll see how much sleep I get when I check in to the hotel.

One big discussion point this year: some Mac engineers have grumbled that Apple’s schedule of sessions seems tilted toward iPhone and iPad — and away from Mac OS X. Me, I see at least two sessions I want to attend in nearly every time slot, so I’m happy, no matter what the overall emphasis.

Time to see if I can catch some sleep before we land.(image)

Google Chrome for Mac: Ready, beta, now stable!


In the past five months, we’ve counted lines of code, given thanks in Lego, and even waxed poetic -- but most importantly, we’ve been working hard on bringing Google Chrome for Mac from its initial beta to the stable channel.

Today, I’m happy to announce that Google Chrome for Mac is being promoted out of beta to our stable channel. We believe that it provides not only the stability, performance and polish that every Mac user expects, but also a seamless native Mac application experience that Mac users will feel instantly at home with.

(First dev, then beta, now stable! Many thanks to Christoph Niemann)

Just like its Windows and Linux siblings, the stable version of Chrome for Mac comes with all the goodness of one of our biggest speed improvements to date. We’ve worked to make Chrome for Mac fast, fully-featured and extensible - with access to more than 4,500 extensions in the gallery. Some of Chrome for Mac’s most-requested features are now available, including full-screen mode (just hit Command + Shift + F!), easy and powerful bookmark management, as well as the ability to synchronize not only bookmarks, but also browser preferences across computers.

For those of you already on the beta channel, you’ll be auto-updated to the stable channel soon - or, if you don’t want to wait, you can download the stable version of Chrome for Mac today. If you later decide that you’d like to return to the beta channel to experience new, experimental features and improvements, you can always find the link back to the beta channel on


Google I/O: live keynote streams


By Greg Robbins, Software Engineer

Google I/O, which starts tomorrow, is our annual conference to help developers learn about the latest ways their applications can work with Google services. If you develop applications or just are enthusiastic about using applications that interact with your Google account, you can learn the highlights of this year’s announcements by watching the live keynote streams. See the Google Code blog for more details.(image)

New Google Chrome beta: speedy!


By Scott Knaster, Google Mac Team

There's a new beta of Google Chrome, and it's very, very fast. Check out this post over at the Google Chrome Blog for details. And if you haven't used Chrome on your Mac, why not give it a try? You can download it here.

Memeo Connect for Google Docs


Software publisher Memeo recently released Memeo Connect™, an application that provides tight integration between documents on Google Apps and the Mac and Windows desktops. Over on the Google Apps Developer Blog, Memeo's Mac developer Matthew Tonkin describes some of their experiences of using the Google Data API client libraries. Please take a look.(image)

Google Chrome Beta for Mac updated - now with extensions


The last time we put on a show
was just over two months ago.
We polished our Chrome
for Mac! It's at home
on anyone's MacBook or Pro.

It's fast, and of course, we ensure
the browser will stay more secure.
But some wrote a letter–
they wanted it better!
So clearly it had to mature.

Today, we are happy to mention
on Mac, you can use that extension!
And bookmark sync too,
plus, there's more for you
and if I still have your attention:

Read more about our release on the Google Chrome blog. If you're as psyched as we are, you can download the new Google Chrome Beta for Mac, now with extensions, bookmark sync, cookie and bookmark managers, and more. Still not convinced? Maybe a cute foam arrow would be more persuasive:

(object) (embed)


Upload Your Email to Google Apps


Several years ago, I began hosting the email for my personal domain with the free Standard Edition of Google Apps. At first I remained a curmudgeon, and set my email client to delete messages from the server after retrieving them, because I wanted my email stored just on my own computer. But Gmail's threading interface grew on me, as did the temptation of having access to all of my email from any web browser. So the cloud won me over, and soon my messages were living on the server. Since then, I've been able to search my email from home, from work, and from any computer on the Internet.

But my personal email archives stretch back to long before the advent of Google Apps and Gmail. Suddenly, the years of conversations I'd happily stored in Eudora files seemed awfully inconvenient. That inconvenience goaded me into developing Google Email Uploader for Mac. It's a free utility application that you can use to push your archives from Apple Mail, Eudora, and Thunderbird up to your Google Apps email account. If you are sometimes anxious to locate your very earliest e-commerce receipts or your threads of political discussions from bygone elections, the email uploader can make them as easy to find as last week's family letters.

The email uploader is built on our open source Google Data APIs Objective-C Client Library and the Email Migration API. There is also a Google Email Uploader for Windows, as well as online tools for migrating web-based email to Google email accounts. Unfortunately, the Mac and Windows email uploaders currently can upload only to Google Apps email accounts, not to or accounts.

Google Email Uploader for Mac is available today as an open source application at the Google Mac Developer Playground, where our Mac and iPhone developers share our toys and experiments. If you have a Google Apps-hosted account and email archives that stretch back to the Dark Ages, I hope you will download and try it.(image)