Friday, June 5, 2009

[G] What is that number again?

| More

Google Voice Blog: What is that number again?

Numbers are important.  Whether it is a time to meet, a phone number to call, or an amount of money, catching a number correctly is a big deal.  Trying to scribble down the right number while listening to a voicemail can be a pain, which is why number accuracy is a top priority for our approach to voicemail transcriptions. Yesterday, we added number normalization to help isolate numbers, phones numbers and times and display them as numbers that are easier to read than words.

Here are a few example of how number normalization has improved some or our own transcripts:
"'s four twenty five..." is now "'s 4:25..."
"it's wednesday about a quarter to four..." is now "it's wednesday about a 3:45..."
"two hundred fifty two dollars and ninety eight cents" is now "$252.98"
"...gave you forty eight hours..." is now "48 hours"

Transcribing voicemail accurately is not a small challenge because no two people pronounce the same word exactly the same way and because background noise and mobile phone line quality can vary dramatically. Since the Google Voice transcription process if fully automated, results may vary from one message to the next, so you may want to listen to the message before you write that $252.98 check, but this should help you get the gist of a message faster.

Remember also that you can have new voicemail notifications sent by SMS to your cell phone by just checking the box in your settings.

Posted by Vincent Paquet

[G] Getting Started in Free and Open Source

| More

Google Open Source Blog: Getting Started in Free and Open Source

The Open Source Programs Office's Cat Allman and Leslie Hawthorn will be presenting at a brand new conference, Open Source Bridge, in two weeks. Their talk, "Getting started in Free and Open Source" will be held on Wednesday, June 17 from 11:20am – 12:05 PM. Leslie and Cat will share their wisdom with Open Source newbies and those looking to attract or retain them. Their talk will cover the basics of:
  • Why you might want to get involved
  • What you can get out of participating
  • What you can contribute besides code
  • How to choose a project
  • How to get started
  • Etiquette of lists and other communication
  • Dos and don’ts of joining a community
The conference is held in Portland, Oregon and runs from June 17th to the 19th. It features over 80 talks in five tracks of Open Source topics and a 24-hour hacker lounge for code sprints. One of the most exciting aspects of Open Source Bridge is that it is entirely volunteer-run, and because this conference brings together developers from all different types of Open Source projects, the structure is designed to provide developers an opportunity to learn from people they might not connect with at other events.

We hope to see you there!

By Ellen Ko, Open Source Team

[G] Analytics Blog Now in Spanish

| More

Google Analytics Blog: Web Analytics Tips & Tricks: Analytics Blog Now in Spanish

We're very happy to announce the recent launch of Central de Conversiones, a new Spanish-language blog covering Google's measurement tools including Google Analytics, Website Optimizer, Insights for Search, AdPlanner and others.

Both Googlers and GAACs from Spanish speaking countries such as Argentina, Mexico and Spain will be sharing basic tips and advanced web analytics techniques trying to help decision makers integrate data from these tools into their business strategies.

Central de Conversiones will translate important posts from this blog but will also create content and share case studies specific to the Spanish Speaking markets. We're sure that you will find it a very useful tool.

¡Esperamos lo disfruten!

Posted by Enrique Quevedo, Google Analytics Team

[G] Barcode your bookshelf with Google Books

| More

Inside Google Book Search: Barcode your bookshelf with Google Books

Posted by Ryan Sands, Google Books Online Team

This week, a Google software engineer named Matt Cutts posted a great Google Books tip on the Google Webmaster Central YouTube Channel. Using a simple USB-powered barcode scanner, Matt shows how you can easily add your books from off your bookshelf at home to the My Library feature in Google Books.

To get started, simply follow the My library link when browsing on Google Books, then click on the Import Books link. Rather than type in the ISBNs by hand, you can use a barcode scanner to read and import the ISBN from the barcode on the back of each hard copy book in your collection.

Once imported, you can rate them and view these titles in My Library on Google Books. The real power of this tip? You can then use Google Books-powered search to browse just the books in you own home library. Check out the details in this video!


[G] Top ten myths about Google Analytics

| More

Inside AdSense: Top ten myths about Google Analytics

A few weeks back, we announced that all publishers can now integrate their AdSense accounts with Google Analytics. If you're not very familiar with Analytics yet, you might be interested in reading a recent post on the Analytics blog that addresses ten common myths about the product. For example, did you know that you can use Analytics to segment visitor data in real time, or that you can use the new Analytics API to tie your website data to your financials? Check out the post to learn more about these features and other ways you can use Analytics to better understand your site stats.

If you haven't yet linked your AdSense account with Analytics, follow these steps:
  1. Sign in to AdSense.
  2. Click the link that says "Integrate your AdSense account with Google Analytics" on your Reports Overview page.
  3. Follow the onscreen instructions, and watch our video for additional guidance.
Even if you use AdSense in a language that's not supported by Analytics, you can still link your accounts and view your Analytics reports in a different language.

Posted by Sebastian Tonkin - Analytics Product Marketing

[G] Senator of the Week: Grab Your Seat at the Health Care Table

| More

YouTube Blog: Senator of the Week: Grab Your Seat at the Health Care Table

Currently, the Senate is writing major health care legislation that has the potential to affect millions of Americans who currently lack coverage, as well as businesses and families who are getting hit with rising costs.

That's why YouTube Senator of the Week Chris Dodd (D-CT) wants to hear your ideas on health care reform: is your current coverage is working for you or do you have a better solution in mind?

As a Senior Member of the Senate's Health, Education, Labor and Pensions Committee, one of the two committees in charge of drafting the upcoming health care reform bill, Senator Dodd wants to make sure that citizen voices are guiding the process.

Want to have a virtual seat at the health care table? Head over to the YouTube Senate Hub and use the Moderator gadget to offer up your thoughts or vote on others. Senator Dodd will return next week to respond to your top-rated suggestions.


Ramya Raghavan

YouTube News & Politics

[G] Palm Pre launching with Google Search, Google Maps, and YouTube

| More

Official Google Mobile Blog: Palm Pre launching with Google Search, Google Maps, and YouTube

As mobile technology geeks, we're really excited to see a new smartphone launch from our friends at Palm. Palm Pre phone's webOS works great with Google Search, Google Maps, and YouTube, which are built into the device. You can also easily sync your Gmail, Google Calendar, and Google Contacts to Palm Pre.

We're big fans of Palm Pre phone's universal search feature. Just start typing a query from the home screen (no need to launch the browser). If your query doesn’t match any contact info or the name of an application on your phone, you’ll be prompted to search either the web with Google, local places on Google Maps, articles on Wikipedia, or Twitter.

What's neat about launching Google Maps in this way is that it will use your location to conduct a search for nearby businesses and points of interest (if you choose to allow Location Services, of course). Similar to some other mobile phones, Google Maps is built into Palm Pre phone's operating system -- you'll notice a Google Maps icon amongst the phone's built-in applications. However, the implementation of Google Maps on Palm Pre is actually very different from how we built Maps on platforms like Android or BlackBerry. Palm is calling its operating system webOS for good reason -- all applications running on webOS leverage a WebKit-based rendering engine for content, which made it easy to port Google Maps to the platform. You can use familiar Google Maps features such as My Location, local search, driving directions, and traffic.

Palm Pre also includes a YouTube application that Palm built using Palm’s Native application MoJo SDK, and much like a web app, it uses HTML, CSS, and JavaScript. YouTube on Palm Pre makes it easy to watch your favorite videos. When you play a video, it auto-rotates to landscape orientation to take full advantage of the phone's screen.

Palm Pre wouldn't be complete without productivity functions and we're happy to report that Gmail, Google Calendar and Google Contacts work well on the device. Simply enter your account name and password and Palm Pre will sync your email, calendar events, and contacts to the device. Palm Pre supports the IMAP IDLE protocol so you can enjoy push Gmail.

This is just the beginning for Google applications on Palm Pre. The good news is that since our applications are built using web standards along with Palm's MoJo SDK, we can iterate quickly and provide new functionality, often without requiring you to install anything new. We look forward to rolling out new features for our mobile applications at a rapid clip.

Posted by by Stefan Haustein and Mat Balez

Thursday, June 4, 2009

[G] Celebrate World Environment Day with Luc Besson's film premiere

| More

YouTube Blog: Celebrate World Environment Day with Luc Besson's film premiere

Today, we're proud to celebrate the 37th annual World Environment Day with the world premiere of "Home," a documentary about the survival of our planet, from award-winning filmmaker Luc Besson and photographer Yann Arthus-Bertrand.

Not only does this film give us a glimpse of our planet from never-before-seen perspectives that demonstrate the urgency for more sustainable living, but it also marks the first time a global audience can watch a movie online, in movie theaters, on TV stations, and on outdoor screens around the world at the exact same time - a fitting debut for a film that asks us all to work together for the benefit of our planet.

"Home" will be available on YouTube in French, English, Spanish, German, Russian, and Portuguese through June 14th, which means you have 10 days to watch, discuss, and share on YouTube. We hope the experience inspires you to action.

Sustainably yours,

The YouTube Team

[G] Introducing the orkut Mobile App

| More

Official Google Mobile Blog: Introducing the orkut Mobile App

About a year ago, we introduced the orkut mobile site to help everyone on orkut stay in touch on the go with scraps, status updates, and photo viewing. Shortly after that, we optimized the orkut mobile experience for S60 phones, allowing photo uploads and click-to-call features. Now, we're excited to introduce the first downloadable orkut mobile app, with even more features to keep you connected to your orkut friends and phone contacts.

The orkut Mobile App, available for most Java-enabled devices, offers some fun new ways to interact:

- Take a photo on your phone and upload it right to your orkut album.
- Share photos with orkut friends or SMS the photos to phone contacts not yet on orkut.
- Call or SMS any of your orkut friends or phone contacts without leaving the app.
- View scraps, updates from friends, and photo albums in offline mode.



Of course, you'll still have all the features of orkut mobile at your fingertips, including writing/reading scraps, updating your status, searching for users, viewing/accepting friend requests, and more!

To install the beta version of the app, visit on your phone. While the app is free to download and use, your mobile provider's regular data charges will apply. Check out more details in our help center, and feel free to leave feedback about your orkut mobile experience in the orkut Help Forum.

Hope to see you in orkut soon, and don't forget to keep your orkut profile updated with your mobile number!

Posted by Robin Norvell, Google Mobile Consumer Operations

[G] Featured Modeler: Newfangled

| More

Google LatLong: Featured Modeler: Newfangled

[Cross-posted from the Official Google SketchUp Blog]

Newfangled is a 3D Building pioneer. From the earliest days of modeling with SketchUp for Google Earth, Christian (aka "Newfangled") started creating the buildings in his home town of Edmonton, Alberta in the Great North of Canada. In fact, part of his motivation for modeling was to put North America's most northern city on the map. To date, he has placed over 150 models in the 3D building layer of Google Earth and Edmonton's metropolitan status is easy to see.

"I got started after a trip I took to Calgary," Christian said, "I was actually looking for a place for dinner, and when I searched in Google Earth all these buildings started popping up. I thought it would be cool to have the same thing in Edmonton. I actually got in contact with IntoTheWest, who put up the buildings in Calgary." You may remember that Andrew (aka "IntotheWest") was our first Featured Modeler.

"The first model I created was my apartment building," Christian continued, "and once that was done I realized how easy it was and started doing the surrounding buildings. I walk to work, so I took pictures along the way, modeled those buildings, and from there I figured I might as well do the whole downtown."

Having Edmonton on the map remains a prime motivator for Christian, but he also enjoys the process of modeling in its own right. "It's relaxing. I'm a Gen-Y guy, so a lot of my friends play XBox or World of Warcraft, but what I do for fun is make buildings."

Christian is a mechanical engineer so he was familiar with CAD before he got started. After watching some of our online video tutorials and getting some hands-on practice, he was up and running.

"I picked up SketchUp pretty quickly. And once I got the hang of taking pictures that would make good textures, the process was pretty smooth, although some of my earliest buildings make me cringe a little now. Getting around trees and power lines with the camera isn't easy, so I use GIMP (a free image manipulation tool) to edit the photos before I apply them to my models in SketchUp. And I also use repeating textures to cover tall buildings."

In addition to modeling Edmonton as it exists today, Christian has begun reconstructing historic locations.

"I like the idea that I can reconstruct something that is no longer there. Using historic information I am able to bring buildings back to life." His collection on Historic Edmonton can be found on the Google 3D Warehouse. Along with a collection of proposed structures in his Future Edmonton set. "You guys should allow Google Earth to show past, future in addition to current buildings." He's right, we should.

"Recently I completed a local River Boat attraction and our Convention Center. It's great that someone planning a trip here could do a search and get informed about what's around." Christian is planning to keep on building, in fact, the mission statement on his blog is "Edmonton - one building at a time... Or maybe sometimes two."

Posted by James Therrien, Google SketchUp Team

[G] Tip: Slice and dice your mail with search operators

| More

Official Gmail Blog: Tip: Slice and dice your mail with search operators

Posted by Zach Yeskel, Product Marketing Manager

My friends email me all the time with ideas for improving Gmail. Just this weekend, my friend Dave said he wanted a way to select all of his messages with a certain label (like "important"). Two weeks ago, Adam came up with the idea of a button that would filter his inbox to only show unread items. Good ideas, but it turns out that doing stuff like this (and much more) is already possible using search operators.

For example, Dave would just need to search for "in:important" to get all items labeled "important," and Adam would just search for "is:unread in:inbox" to see all the unread messages in his inbox.

Here are a few other useful ways to filter your inbox:
  • "to:me is:starred" shows all messages sent directly to you that are starred
  • "is:chat from:heather" shows all chat conversations you had with Heather
  • "is:starred -in:inbox" shows all your starred messages that aren't in your inbox (a good way to find anything important that you might have accidentally archived)
  • "from:elliot filename:pdf" shows all messages from Elliot that have a pdf attachment

We've written about search operators here before, but lots of people find them hard to remember. That's why we built Search Autocomplete in Gmail Labs, designed to make searching in Gmail much easier. Instead of having to remember the exact syntax for advanced searches, you can just start typing, and search autocomplete will help you fill in the rest. If you find yourself doing some of the same searches over and over again, consider creating a permanent link to them using Quick Links in Labs.

[G] New Interface Thursdays: Exploring the Ads tab

| More

Inside AdWords: New Interface Thursdays: Exploring the Ads tab

Today on New Interface Thursdays, we'll take a quick look at the Ads tab in AdWords. The Ads tab lets you view and edit all of your ads, as well as check their status and performance. In the new AdWords interface, you have access to the Ads tab within individual ad groups, whole campaigns, or for your entire account.

Like in the other tables in the new interface, you can make edits right in the table, customize columns, and filter your ads within the Ads tab. One feature we've added to the new interface is the ability to see which ads are pending approval. While in the previous interface you could only see when ads had been disapproved, the new interface allows you to see if they're pending review or have been approved. This will take the guesswork out of determining when your ad is eligible to start running on the Google Network.

You can use filtering to quickly identify all ads that are pending review. Click on Filter and views and select Filter Ads. From the drop-down, select Approval Status, and then check the box for Pending. Click Apply and the table will only show ads that are pending approval.

You can do the same with disapproved ads. If you have a disapproved ad, you can click the bubble icon in the Status column to learn why it was disapproved

We've also recently added the Display Ad Builder to the new interface. You can get to the tool by clicking New ad and then selecting Display ad builder. If you've wanted to expand your campaigns beyond text ads but haven't had the time to create a display ad from scratch, the Display Ad Builder is a great tool to try.

We hope you find the Ads tab helpful in managing your AdWords campaigns.

Posted by Dan Friedman, Inside AdWords crew

[G] The Fast and The Full-Screen

| More

Google Photos Blog: The Fast and The Full-Screen

As you may have read on the Google Blog today, we just gave Picasa Web Albums a major tune-up -- flipping through photos is now a whole lot faster.

You can see for yourself by visiting any album and hitting the arrow keys as you flip through pictures. Better, yet, take your browser full-screen, and fire up a slideshow -- if you've got a decent broadband connection, you can see our responsiveness at high-resolution by pressing (or holding) the arrow keys.

We're proud of the fact that we've managed to accelerate the photo-viewing experience without compromising on quality -- as always, we still dynamically retrieve and display the largest-size photo that'll fit inside your browser window, up to a whopping 1600px. (Sure beats looking at small, blurry photos.)

For many of us, the early constraints of the web ingrained the habit of hunting-and-pecking through thumbnails, trying to isolate the few gems in each album. Around the office, we've noticed that we're often skipping this step altogether, now, and flipping through entire albums at full-size -- it just seemed faster and easier.

Give it a try, yourself -- here's a demo album, and an example of what you can see when you turn on the "Full-Screen" view. Let us know what you think!

Posted by Justin Zaren, Software Engineer

[G] Picasa Web Albums stays big, gets faster

| More

Official Google Blog: Picasa Web Albums stays big, gets faster

I use Picasa to manage the photos on my computer in part because it's the fastest way to manage all of the pictures I take. When I started working on Picasa Web Albums, the speed and responsiveness of the desktop program were a tough act to follow. Typically, when you move your photos from the desktop to the web, you have to choose between viewing high resolution photos that take forever to download, and tiny photos that lack any detail. For Picasa Web Albums, we thought we could do better.

We chose to show large images, the very biggest we can fit into your browser window. If you open up a slideshow or full-screen view, we can fill your entire monitor. But it wasn't snappy enough for us, so we had a choice to make: either use smaller images, make the Internet faster, or make our code smarter. We think large images are important, because seeing a photo's little details can make a big difference, and as much as we wanted to, making the whole Internet faster was a little impractical in the short term. So we went deep into the code and gave it a thorough tune-up.

The results, I hope, speak for themselves. Take a look at any album or slideshow on Picasa Web (here's one of mine) and you should notice that browsing photos is significantly faster. Give full-screen mode a try to see even bigger photos. If you've got a reasonable connection to the Internet, you should be able to hold down one of the arrow keys and zip through the entire album at a pretty good clip, flip-book style. Of course, while you could zoom past entire albums at ludicrous speed, we hope you'll enjoying spending your time looking at the photos themselves, rather than navigating between them.

Posted by Shawn Brenneman, Software Engineer

[G] Spruce Up Your Blog

| More

Blogger Buzz: Spruce Up Your Blog

Many of you have asked about Blogger templates. You've posted in the help forums, you've tweeted, one of our engineers actually got stopped in a coffee shop to talk about Blogger's classic templates. And by "classic" we mean "old". We found that many of you weren't aware of a wealth of third party sites offering quality Blogger templates, so we wanted to share some recommendations from your fellow bloggers about where they go for improved templates that work with Blogger.

Earlier this week, I asked you for your recommendations, and a number of you responded. In no particular order, here's what you suggested:

  • BTemplates. A free directory of user-submitted templates, classified by type and/or features.
  • The Cutest Blog on the Block. Run by Becky and Ashley of 2 Moms Talk, this site offers free, premade layouts, as well as customizable backgrounds.
  • Blogger Styles. Gallery of submitted templates, ranked by visitors and includes detailed configuration instructions.
  • FalconHive. Conversions of WordPress templates upon request, along with archive of past conversions.
  • All Blogspot Templates. Templates in 1-, 2- and 3-column options. Also includes AdSense-ready templates.
  • Zona Cerebral. Spanish site with dozens of templates to choose from, including several converted WordPress themes.
  • Quite Random. A number of free templates, and several Blogger-specific tutorials regarding setup and layout editing.
  • ChicaBlogger. In Spanish, templates designed primarily for women.
  • Deluxe Templates. Hundreds of templates, including many converted WordPress themes. Also has a nice "tips & tricks" section for customizing Blogger.
  • Pyzam. Thousands of templates, browsable by category and sortable by recency or popularity.
  • Our Blog Templates. 160+ free templates, all well-labeled for easy browsing to find the one you want.
  • eBlogTemplates. Combination of free and premium templates, and a wealth of tips for tweaking your Blogger blog.
Note: for the most part, sites above provide templates for Blogger's "Layouts". If you still see a "Templates" tab for your blog, you need to upgrade your blog to take advantage of these new features. This help article has some more information about using Layouts.

Finally, cheth shared a recent post he wrote where he finds his favorite templates (many taken from the sites above). It's a good overview, and gives you a good visual indication of just how varied Blogger templates can get.

Now would be a good time to remind you that before you make any changes to your template, you should download the current template and put it in a safe place. (Click "Layout", then "Edit HTML" and then "Download full template".) And just in case it's not clear from this post: every link above points to a third party site. Blogger cannot provide support for independently created templates. If you choose to use a template built by someone else, make sure to figure out how easy it is to reach them if problems arise.

We'll have more to say about Blogger templates later this summer; in the meantime, thanks to everyone who shared a recommendation. We hope the list above gives you some variety when picking the next design for your blog!

[G] Event Tracking Now Available in All Accounts

| More

Google Analytics Blog: Web Analytics Tips & Tricks: Event Tracking Now Available in All Accounts

Event Tracking is a feature of Google Analytics that allows you to track visitor actions that don't correspond directly to pageviews. It's a great fit for tracking things like:
  • Downloads of a PDF or file
  • Interaction with dynamic, AJAX sites
  • Interaction with Adobe Flash objects, embedded videos and other media
Unlike virtual pageviews, Event Tracking will not alter your pageview count. This makes it the preferred method for tracking a variety of visitor actions.

We're happy to announce that earlier today Event Tracking became available by default in all Google Analytics accounts. To access the new reports, just navigate to the Content Section of the Google Analytics interface and select the option labeled "Event Tracking."

Screenshot of Event Tracking reports

In future posts, we'll explain more about some of the ways you can put Event Tracking to good use. For now, here are some great resources to get you started:
Note, your reports will not show data until you start sending events. You can use the above resources to find about more about how to send events to Google Analytics.

We hope you enjoy the feature. Leave a comment and let us know what you think!

Posted by Nick Mihailovski, Google Analytics Team

[G] Developing and distributing social gadgets just got easier

| More

Social Web Blog: Developing and distributing social gadgets just got easier

Creating a social gadget for Google Friend Connect just became a little easier and more flexible. Here are some of the recent changes that will impact you as a developer:
  • Friend Connect now supports OpenSocial Specification v0.9, which adds a number of important features to improve the gadget development process and the performance of gadgets. These features include OS Lite, OSML, templates, proxied content and more.
  • Want to ask site owners to configure additional preferences before adding your gadget to their sites? Now you can with the gadgets.Prefs functionality. Define the preferences you need in the XML gadgets specification, and the site owner will be asked to provide the values for the preferences when they get the code for the gadget. More information on the XML definition for these preferences is available in the OpenSocial XML Reference.
  • Let site owners customize the color of your gadget to match their sites. When the site owners generate the code for the gadget, they will have the option to set the colors they want to use, ensuring that the gadget integrates well with the style of their site. For more information on OpenSocial skins, see the gadgets.skins API reference.
  • After your gadget is built, we would like to include it in the Friend Connect gadget gallery so that site owners will have more ways to engage their visitors. After testing your gadget and making sure it has the required fields in the gadget XML file, submit it for inclusion in our gallery. We will review your gadget and add it to our gallery once it is approved.
To learn more, visit Google Code. Thanks for taking the time to create your gadget and we look forward to seeing all the innovative gadgets that will make the web more social. With more than 5 million sites using Friend Connect, we're sure they'll find some good homes.

Posted by Sami Shalabi, Technical Lead, Google Friend Connect

[G] Phishing Scam Update

| More

YouTube Blog: Phishing Scam Update

We are aware of recent emails where users posing as Google or YouTube support have tried to obtain the log-in credentials of our users and partners. Security is a top concern at YouTube and we employ techniques that are both proactive and reactive to block these scams. We are taking additional steps to try to prevent something similar from happening in the future. Also, please note that YouTube will never send an unsolicited message asking for a password or other sensitive information by email or through a link.

Thank you,

The YouTube Team

[G] A new model for political interviews and debates

| More

Google Public Policy Blog: A new model for political interviews and debates

Posted by Steve Grove, YouTube News & Politics

YouTube and Google partnered with the Politico and WJLA to give Virginian voters the opportunity to submit text or video questions for the state's three Democratic gubernatorial candidates: Terry McAuliffe, Creigh Deeds, and Brian Moran. Submissions took place on a new tool called Google Moderator, which allows you not only to submit questions or ideas, but also to vote on the submissions of others, moving them up or down in importance. Thousands of Virginians took part in the interactive interview, and last night WJLA and the Politico aired the results, in which all three candidates answered the top questions on television.

As our CNN/YouTube Debates demonstrated during the 2007 presidential primary season, the web allows citizen engagement to play a prominent role in the country's most important public forums. Now with Moderator, the people's voice can be an even more powerful force in surfacing the issues that matter most to the public at large. We've used Moderator in our "Senator of the Week" series on YouTube, and President Obama employed Moderator in his "Open for Questions" initiative back in April. We look forward to taking this model to other local, national, and international elections.

We'll also be partnering with the Politco and WJLA once again this fall for another series in the Virginian general gubernatorial election, so stay tuned. And if you want to create your own debate or interview series for your state or local elections, head over to to see what this new tool can do.

[G] Mac OS X Spelunking in PowerPC and x86 Assembly, part 2

| More

Official Google Mac Blog: Mac OS X Spelunking in PowerPC and x86 Assembly, part 2

By Avi Drissman, Google Chrome Team

(Note: this is another of our occasional extra-geeky technical posts. If this isn't your thing, don't worry; our usual non-technical stuff will be back soon.)

Welcome back. In our last post we went through a simple function that made calls to other functions, and touched on stack frames and parameter passing. This time let's talk about a different function. We'll focus less on the things we've seen, and more on some more advanced actions that this function does.



<+0>: mflr    r0               // save linkage
<+4>: stmw r28,-16(r1) // stash r28, r29, r30, r31
<+8>: mr r30,r3 // save r3 (WindowData)
<+12>: bcl- 20,4*cr7+so,0x928d2bd4 <+16>
<+16>: mflr r31 // get ip in r31

Whoa... what?

Short story: <+12> is an unconditional branch-and-link.

Long story: On the PowerPC, instructions like bge, etc. are just aliases to a more primitive branch instruction, bc (branch conditional). In this case, the first parameter is 20 (0b10100), which indicates “branch always”. Since it's always going to branch, the second parameter doesn't matter, so it was set to all 1 bits (which translates to 4*cr7+so).

Why do this? Because we're going to need to access some PC-relative data, and the PowerPC chip has no PC-relative addressing mode. And the register move instructions can't access the PC register. Therefore we cheat in a way by taking an unconditional jump to the next address. Since it's a branch and link, the link register is filled with the next address (in this case, that equals the address just jumped to) which can be moved to a normal register.

Why branch-conditional with a condition “branch always”? The b opcode only provides absolute addressing. Only bc has relative addressing.

<+20>: stw     r0,8(r1)
<+24>: stwu r1,-80(r1) // make stack frame
<+28>: addis r28,r31,3533
<+32>: bl 0x928d2c50 <_Z15GetTitleForDockP10WindowData>
<+36>: lbz r0,-3364(r28) // haul initialization boolean into r0

This is where intuition comes in. We're hauling in some random byte from a PC-relative address. (lbz is load byte and zero, which loads one byte from memory and clears the high bits.) What's byte sized? A Boolean (the Carbon type; GCC makes C++ bools 4 bytes). Why a Boolean? Probably a flag. And with the value of the byte gating the call to RegisterAsDockClientPriv, it's a safe bet that it's an initialization flag.

<+40>: mr      r29,r3         // stash new title into r29
<+44>: cmpwi cr7,r0,0 // was initialized?
<+48>: bne- cr7,0x928d2c04 <+64> // if so, skip
<+52>: bl 0x9287f864 <_Z24RegisterAsDockClientPrivv> // else initialize
<+56>: li r0,1 // and set flag
<+60>: stb r0,-3364(r28) // as being intialized
<+64>: mr r3,r30
<+68>: mr r4,r29
<+72>: bl 0x928d2c68 <SyncPlatformWindowTitle> // call with (WindowData, new title)
<+76>: lwz r0,344(r30) // pull (WindowData + 344)
<+80>: andis. r2,r0,64 // and pull a flag bit out of it (minimized?)

More intuition here. r30 contains a pointer to the WindowData class instance, and we're accessing some word 344 bytes in. We don't care about the destination register (we don't touch r2 again this function) but don't miss the name of the opcode: “andis.” Remember that the period means to update cr0.

Once again, this is obviously a flag (bit-sized this time). But what does it mean? Context tells us that we only call CoreDockSetItemTitle when it's set. Thus, it's a safe guess that this is the is-minimized flag.

<+84>: beq-    0x928d2c38 <+116> // if not minimized, skip this step
<+88>: addi r1,r1,80
<+92>: lwz r3,196(r30) // load WID

How do I know that WindowData+196 is the CoreGraphics WID (CGWindowID; see CGWindow.h)? I used Quartz Debug to look at the window list for a sample app. The app only had one window, and the listed WID matched.

<+96>: mr      r4,r29 // load new title
<+100>: lwz r0,8(r1)
<+104>: lmw r28,-16(r1) // tear down stack frame
<+108>: mtlr r0
<+112>: b 0x92b58ce4 <dyld_stub_CoreDockSetItemTitle>

Note that we're tearing down the stack frame twice. In this case we're tail calling CoreDockSetItemTitle so that it's as if our caller called them directly. This is equivalent to the code return CoreDockSetItemTitle(wid, newTitle). Note from the setup of r3 and r4 that we can deduce the parameter types. Can we figure out the return type, though? Not really. The calling code ignores it, so we can ignore it too.

<+116>: addi    r1,r1,80
<+120>: li r3,0
<+124>: lwz r0,8(r1)
<+128>: lmw r28,-16(r1)
<+132>: mtlr r0
<+136>: blr


<+0>: push   %ebp                   // make stack frame
<+1>: mov %esp,%ebp
<+3>: sub $0x28,%esp
<+6>: mov %ebx,-0xc(%ebp) // save %ebx
<+9>: call 0x92e4bbe4 <+14>
<+14>: pop %ebx // IP > %ebx

We're doing the same trick here to get the PC into a register and I'm a bit stumped as to why. From what I know, the x86 has PC-relative addressing, and surely there's got to be a better way to get the PC into a normal register. Right?

<+15>: mov    %esi,-0x8(%ebp)      // save %esi
<+18>: mov 0x8(%ebp),%esi // WindowData > %esi
<+21>: mov %edi,-0x4(%ebp) // save %edi

This almost looks like it was compiled by a different compiler. In the previous function, edi and esi are pushed, and then the stack pointer dropped. Here, we create the stack space and then move the contents of three registers (edi, esi, and ebx). I suspect that things change once we also have to save ebx, though I don't know why.

<+24>: mov    %esi,%eax            // %esi (WindowData) > %eax
<+26>: call 0x92e4bc40 <_Z15GetTitleForDockP10WindowData>

Whoa. If we're calling a function we need to set the parameter via stack-relative addressing off esp. What's going on here?

The point of an ABI is that it's a documented way for functions to call each other. But if a function, say GetTitleForDock(WindowData*), is a short one that's not public and is only used under controlled circumstances, why worry about setting up the stack? In this particular case, GetTitleForDock happens to be a nine-instruction routine. Not worth the hassle of a stack frame, so it's reasonable to pass in the one parameter in eax.

<+31>: cmpb   $0x0,0xd51a36c(%ebx) // test initialization boolean
<+38>: mov %eax,%edi // window title > %edi
<+40>: jne 0x92e4bc0c <+54> // if initialized, skip
<+42>: call 0x92df9fe0 <_Z24RegisterAsDockClientPrivv> // else initialize
<+47>: movb $0x1,0xd51a36c(%ebx) // and set flag as being initialized
<+54>: mov %edi,0x4(%esp) // new title (param 2)
<+58>: mov %esi,(%esp) // WindowData (param 1)
<+61>: call 0x92e4bc52 <SyncPlatformWindowTitle>
<+66>: xor %eax,%eax // clear %eax (noErr?)
<+68>: testb $0x2,0x159(%esi) // test flag (WindowData + 0x159) (minimized?)
<+75>: je 0x92e4bc35 <+95> // if not minimized, skip this step
<+77>: mov %edi,0x4(%esp) // new title (param 2)
<+81>: mov 0xc4(%esi),%eax // (WindowData + 0xC4) WID
<+87>: mov %eax,(%esp) // (param 1)
<+90>: call 0xa0a52ad1 <dyld_stub_CoreDockSetItemTitle>
<+95>: mov -0xc(%ebp),%ebx
<+98>: mov -0x8(%ebp),%esi
<+101>: mov -0x4(%ebp),%edi
<+104>: leave
<+105>: ret


Poking around in assembly isn't usually something you do every day. But whether you need it for debugging your own code or exploring someone else's, it's a skill that is definitely worth learning. PowerPC and x86 processors might have had a bit of a different history, but the code that's generated for either is certainly not as intractable as some suggest.

Where to go from here? Look around some more. Use otool -tV to dump binaries and see what they do. Use nm to see which symbols are exported from frameworks and watch how they work.

Go exploring, and have fun.

(Thanks to my editor, Scott Knaster, and to David Shayer, whose introductory session on PowerPC assembly at the legendary MacHack conference started me on this path.)


[G] A New Model for Political Interviews and Debates

| More

YouTube Blog: A New Model for Political Interviews and Debates

YouTube Politics might just have come full circle. It all started during the 2006 midterm elections, when Senator George Allen's infamous "Macaca Moment" spread across YouTube and ultimately, many say, led to his narrow defeat in that election. Fast forward three years later, and Virginia is once again home to a YouTube Politics first: the first citizen-powered interview series for the gubernatorial primary.

YouTube and Google partnered with the Politico and WJLA to give Virginian voters the opportunity to submit text or video questions for the state's three Democratic gubernatorial candidates: Terry McAuliffe, Creigh Deeds, and Brian Moran. Submissions took place on a new tool called Google Moderator, which allows you not only to submit questions or ideas, but also to vote on the submissions of others, moving them up or down in importance. Thousands of Virginians took part in the interactive interview, and last night WJLA and the Politico aired the results, in which all three candidates answered the top questions on television.

As our CNN/YouTube Debates demonstrated during the 2007 presidential primary season, the web allows citizen engagement to play a prominent role in the country's most important public forums. Now with Moderator, the people's voice can be an even more powerful force in surfacing the issues that matter most to the public at large. We've used Moderator in our "Senator of the Week" series on YouTube, and President Obama employed Moderator in his "Open for Questions" initiative back in April. We look forward to taking this model to other local, national, and international elections.

We'll also be partnering with the Politco and WJLA once again this fall for another series in the Virginian general gubernatorial election, so stay tuned. And if you want to create your own debate or interview series for your state or local elections, head over to to see what this new tool can do.


Steve Grove

YouTube News and Politics

[G] Get to know the Omnibox

| More

Google Chrome Blog: Get to know the Omnibox

Looking at usage statistics, we've noticed that many users don't take full advantage of the search capabilities of the Omnibox, our combined search and address bar. So we decided to make the following short video to show you the basics of how it works. I hope you enjoy!

Posted by Ben Goodger, Google Chrome team

[G] Introducing smart navigation in Street View: double-click to go (anywhere!)

| More

Google LatLong: Introducing smart navigation in Street View: double-click to go (anywhere!)

Street View is a great way to see panoramas of streets from all over the world. We've launched some great improvements to this tool, including most recently overlaying user photos and the ability to view Street View in fullscreen. Until now though, the usual way to navigate through Street View has remained the forward and backward arrows along the roads which move you to the next immediate panorama.

Today, we are really excited to introduce a new mode of navigation which liberates you from the road arrows and gets you where you want to go in just a few clicks.  You can now use Street View's smart navigation to travel to a new place just by double clicking on the place or object you would like to see.  We have been able to accomplish this by making a compact representation of the building facade and road geometry for all the Street View panoramas using laser point clouds and differences between consecutive pictures. 

As you move your mouse within Street View, you'll notice that the cursor now has lightly-shaded geometry attached to it - it will show an oval when your mouse is following a road and a rectangle when moving across the facades of buildings. We affectionately refer to this cursor geometry as the "pancake" because it has the appearance of a pancake laying flat to the object where the mouse is pointing.  By giving you a sense of depth,it makes the flat image almost feel three-dimensional!

Double clicking on the pancake transports you to the best panorama in that direction.  For instance, if you pick the front door of this church, you will be taken to the view shown below. Sometimes the pancake shows a little magnifying glass in the bottom right to indicate that double clicking will zoom in on the current image rather than transport you to a closer location. This happens when we've determined that the current panorama has the best view of the selected location. 

And in case you changed you changed your mind about the place you jumped to, you can hit the return arrow shown in the Address Box to get back to the previous location. Now you can wander through Street View imagery and not worry about getting lost!

The Googlers who have been playing with and testing smart navigation have found it completely addictive. Not only is it an easier way to browse cities in Street View, it allows you to do superhuman things like jump from one side of a river to another to see a faraway building. Here are some examples of places that are fun to browse:

We hope you find it just as fun and useful, so to get you started we have put together a video to show you all the things you can now do with smart navigation. Enjoy!

Posted by Daniel Filip, Computer Vision Tech Lead, Google Z├╝rich