Posted:
Author Picture By Monica Tran, Google Maps team
Cross-posted with the Google Geo Developers Blog

We love the teamwork behind AbbyPutinsky.com, designed by San Francisco illustrator Abby Putinsky, and developed by her husband Adam. In this guest blog post, Adam will walk us through how he worked with Abby to give the map a unique, illustrated look, as well as fun-to-use animations.

Abby is a designer and illustrator living in San Francisco. In building her site, Abby wanted to take users on a journey to discover and explore some of her favorite places in San Francisco, in a way that reflected her illustration style. Taking Abby's design direction into account, I began building the site, working with the Google Maps API to make the visual experience come to life for visitors of the site. The app is powered by Ember.js, so the application template includes a helper to render a MapView. Custom Overlays are used to take users on a journey around San Francisco.
Designing in Reverse 
To make the map feel like an illustration, Abby used the Styled Maps Wizard to play with colors of the map. By using very few colors and disabling most of the roads and landmarks, she was able to give the map a flat, simple look. After exporting the JSON from the Styled Maps Wizard, Abby worked with screenshots of the map to design the rest of the experience.
 
Some of Abby's favorite landmarks in San Francisco
The animated GIF in situ on the map as a custom overlay.


Defining a custom overlay 
To create a fullscreen overlay, the bounds are set to the Southwest and Northeast corners.


Positioning the overlay on the map 
The MapView has two child views. The DOM element for a custom overlay actually needs to reside inside the markup generated by Google Maps, but the overlay is an Ember.View so the MapOverlayView is actually rendered as a sibling of the MapCanvas and then moved into the correct spot later.

Keep the overlay centered while panning 
The default behavior for a custom overlay is to re-calculate the styles when the map is panned, but to build an overlay that stays centered on the map, the overlay should only be drawn once and then pan with the map.


Creating the overlay 
Finally, once the overlay has been created and rendered, resolve a promise letting the application know the map is ready.

Final Thoughts 
This project was extremely fun and was successful due to the collaboration between design and development. The Google Maps API gave us the creative freedom to completely customize the map, while Custom Overlays really pulled the experience together.

Adam and Abby Putinski are a husband and wife design/dev team located in San Francisco. Learn more about their work at abbyputinsky.com


Posted by Ashleigh Rentz, Editor Emerita

Posted:
Author Picture By Nick Mihailovski, Product Manager, Google Analytics

Many large companies have unique needs, with dozens of websites and many users. In the past, configuring Google Analytics for these companies was time-consuming and required too many clicks.

We're thrilled to announce a new set of APIs that will make it even easier for large companies to manage multiple websites. These APIs will streamline the Google Analytics setup process, allowing IT teams to programmatically manage and configure Google Analytics, so teams can focus their efforts on analysis and gaining insights.

Account Setup and Configuration APIs
To simplify account setup, we’ve added new APIs to manage Properties, Profiles, and Goals. This reduces the time it takes to build new account structures, and allows you to enable new features across all your existing accounts.



Note: These APIs are currently available in closed beta. Please sign up here to request access.


User Permissions APIs
To reduce the overhead in managing user access, we’ve also added APIs to manage user permissions across all your accounts. With these APIs, you can quickly list which users have access to your accounts. You can also now write programs to sync Google Analytics users with corporate directory services such as LDAP.


The User Permissions APIs are public and can be used today.

Getting Started
To get started, you can find all the API resources on our Google Analytics APIs for Large Companies page. This launch brings new opportunities to developers, IT Teams, and Google Analytics users. Let us know what you think!


Nick Mihailovski oversees the Google Analytics APIs. In his spare time, he likes to travel around the world.

Posted by Scott Knaster, Editor

Posted:
Author Photo By Ranjith Jayaram, Product Manager, Google+ iOS Platform

Cross-posted with the Google+ Developers Blog

Today we are announcing version 1.4.0 of the Google+ iOS SDK. The new version includes two of the most highly requested features from the developer community:
  1. In-app share box. Now your users can share with their Google+ circles, directly from your iOS app! In addition, the native in-app share box supports image and video attachments. If you've already implemented browser-based sharing, you can switch to the native in-app share box with a single line change:
              Just update this:
     [[GPPShare sharedInstance] shareDialog]
              to this:
     [[GPPShare sharedInstance] nativeShareDialog]
                             
The native iOS in-app share box                                            
   

2.  ID token support. ID tokens allow you to securely verify the identity of users of your iOS                     clients to your application servers.

To download or to learn more about the Google+ iOS SDK, visit our Google+ Developers site.


Ranjith Jayaram is a Product Manager on the Google+ Platform team. While he's not working, he enjoys reading and occasionally writing fiction.

Posted by +Scott Knaster, Editor

Posted:
Author PhotoBy Peter Lubbers, Chrome Developer Relations

Massive open online courses (MOOCs) such as our free Udacity HTML5 Game Development course (CS255) have the incredible ability to reach a global audience, but language barriers still prevent many students from participating. Today we’re announcing some steps we have taken to break these barriers down.

As part of an initiative to empower developers in emerging markets with high-quality training content in local languages, Google funded a project to translate a large portion of the Udacity web development curriculum into Spanish and Brazilian Portuguese. Specifically, we teamed up with Udacity to add fully translated subtitles for CS253 (Web development), CS255 (HTML5 games), and CS256 (Mobile Web Dev, launching soon—register free today!).

+Nick Bortolotti, a Developer Relations Program Manager at Google in Buenos Aires who played an instrumental role in getting the project off the ground said: “This is a tremendous contribution to the ecosystem and the regional community. I am very excited about the new ways and possibilities. No doubt, talented Latin American developers will be inspired with this high quality, localized content from top speakers.”

screenshot from Udacity course
 ¡Que empiece la fiesta!

To see the translations live, go to, for example, www.udacity.com/course/cs255 and start taking the class. When you're in the classroom watching videos, click on the Closed Captions (CC) button on the YouTube player and select Spanish (Mexico) or Portuguese (Brazil).

One of the CS255 students, Edwin Rodolfo Maldonado Perez from Guatemala City, Guatemala, told us: "In Latin America, if you study in a public school you won't have access to learning a second language like English. When public school students grow up and look for jobs, they don't have time or money to go to a decent language school. From there it becomes a chicken-and-egg situation, where to get a new job or improve technical skills like learning a new programming language, people find that almost all developer documentation is in English."

The translations for CS253 and CS255 are already live. Enjoy!


+Peter Lubbers is a Program Manager on the Chrome Developer Relations Team, spreading HTML5 and Open Web goodness. He is the founder of the San Francisco HTML5 User Group--the world's first and largest HTML5 meetup with over 8,000 members. Peter is the author of "Pro HTML5 Programming" (Apress) and, yes, his car's license plate is HTML5. In his spare time he likes to run around Lake Tahoe in one go and jump out of airplanes.

Posted by +Scott Knaster, Editor

Posted:
Author PhotoBy Alex Maier, Google Cloud Platform Community Manager

Cross-posted with the Google Cloud Platform Blog

Developers using Google Cloud Platform can now talk to each other, and to Googlers, in a brand-new Google+ Community.

The new community is where we will share information about official Google Cloud Platform developer programs and events with you, to help more people get engaged. You can also get help from your peers, share your own stories and contributions, and find great developers to invite to join your project.

Along with our other forums, such as StackOverflow, the Google+ community helps newcomers find the right resources more quickly.

How can you contribute? There are many ways:
  • If you blog or know of any articles about Google Cloud Platform, you can share them with your fellow cloud developers in the new community.
  • This also goes for podcasters and video bloggers (vloggers). If your content is relevant to the Google Cloud Platform community, you can share it here.
  • If you are a public speaker, you can use the community to share a link to the event where you’ll be giving your relevant talk.
  • If you spend a lot of time helping people with technical questions, you can use the community to help new folks find answers and get started, for example by pointing them to the correct StackOverflow tag.
  • Got other kinds of relevant content? Share it here! Tutorials, podcast episodes, and videos of presentations about Google Cloud Platform—they’re all welcome in the new community space.

We’re just starting out with this new community, but we have big plans, and we want your ideas for making this space more useful and engaging for you, too. Share them with us in the community.


Alex Maier’s goal in life is to grow the Google Cloud Platform community stronger and more vibrant every day. She loves discoveries, science, and racing cars.

Posted by Scott Knaster, Editor

Posted:
Author PhotoBy +Scott Knaster, Google Developers Blog Editor

This week Google and the Comparative Constitutions Project launched Constitute, which puts constitutions online for people everywhere to explore. Constitute includes 177 constitutions, many of which weren’t online previously.



Each country’s constitution is tagged for easier navigation, marking such attributes as citizenship, foreign policy, and electoral oversight. Having them all online together, tagged and searchable, enables unprecedented research. For example, you can quickly see which countries grant rights to minorities, and even how each country defines a minority. You can also watch the progress of trends such as marriage equality and voting rights.

With dozens of new and amended constitutions in the world each year, Constitute can become a central source for exploring what’s new and for helping drafters of future constitutions think about how to proceed with their work.

Constitutions have been around for thousands of years, but a discovery in the Yukon earlier this year revealed something far older: dinosaur tracks. Dozens of fossilized dinosaur footprints were found by scientists from the University of Alaska on an expedition near the Arctic Circle. According to researcher Paul McCarthy, “The tracks were so abundant along the Yukon River that we could find and collect as many as 50 specimens in as little as 10 minutes”. That’s a lot of footprints made by a lot of big feet.

Finally, we congratulate the winners and participants in this year’s Google Science Fair. First place went to Eric Chen, who studied ways to fight the spread of flu. Other winners included Vinay Kumar, Ann Makosinski, and Elif Bilgin. But we think the best part is the cool Lego trophy each winner gets to take home.


All we are is dust in the wind, or tracks in the Yukon, or something similarly temporary. But while we’re here, there’s Fridaygram to bring some fun nerdy news for your weekend. Thanks to our Yukon correspondent +Louis Gray for the dinosaur tip.

Posted:
Author PhotoBy Josh Livni, Maps Developer Relations Team

Cross-posted with the Google Geo Developers Blog

Last week Felipe and Michael from the Google Cloud Platform Developer Relations team released a video demonstrating the new Pearson correlation analysis available in Google BigQuery. Their example used more than 70 million flight records to find correlations on departure times, which could be used to predict whether your plane would be late. Specifically, you can find out which set of airports best predict your airport’s possible flight delays the following day.

As you can see from their code (watch the video for context), they’re using iPython Notebook to work with the BigQuery results, and matplotlib to get a quick visual of results. But one aspect that’s hard to see in these results is the spatial relationship of the airports. Maps to the rescue!

My goal was to create a simple visualization, where selecting any airport would highlight which airports you should look at to predict delays the next day. Using the Google Maps JavaScript API I went ahead and did just that:



To create this map, using the same code noted above, we first created a JSON dump of the correlations on departure time for each airport to each other airport. Then, using an article on visualizing earthquakes as a template, I modified the code so that we have a simple dictionary of all airports, keyed by their airport id. Last but not least, I added a function that gets called when an airport marker is clicked in order to restyle all the other airport markers according to their correlation. This method checks the selected season (winter, for example, has different correlations than spring), and highlights correlated markers by setting the color and scale of the circle symbol.


Thanks to BigQuery, running complex correlations over billions or trillions of attributes is surprisingly easy. But don’t forget if your data does have some spatial component, a quick mapping visual can add some great context to your results.


Josh Livni works with maps at Google, where he helps developers tell compelling stories using the Google Maps APIs. As you read this, he's probably writing code, thinking about snowboarding, or both.

Posted by Scott Knaster, Editor

Posted:
Author PhotoBy +Scott Knaster, Google Developers Blog Editor

Regular Fridaygram readers know that Street View goes places even if there aren’t any streets, like the Galapagos Islands. This week we launched the panoramic images collected earlier this year with the Street View Trekker, and they’re pretty cool.


As we mentioned back in May, we also used an underwater camera to collect images of marine life in the waters off the Galapagos. Between the land and the sea, we collected pictures of blue-footed boobies, Magnificent Frigatebirds, and other island creatures. These images will help with Galapagos environmental research. If you’re interested, you can read more about it.

Speaking of the wonders of nature, researchers have used high-speed video cameras to record insects with natural gears that mesh to enable movement. Scientists Malcolm Burrows and Gregory Sutton of the University of Cambridge found that young planthoppers have microscopic gear teeth that synchronize their legs when they jump. Their legs move within 30 millionths of a second of each other, ensuring that their jumping is effective. As the insects mature, they lose these baby teeth and learn to jump without them.

Finally, last Wednesday’s Google Doodle honored the birthday of legendary physicist Léon Foucault, namesake of the Foucault pendulum, which shows the effect of the Earth’s rotation. The doodle itself is a working Foucault pendulum, complete with controls to change its time and location. We hope it inspires you to do some weekend inventing and adventuring of your own.


The world keeps turning, and Fridaygram keeps publishing. Look us up for nerdy cool news right before you start your weekend. And for still more amazing Galapagos stuff, see Darwin for a Day, built by the Charles Darwin Foundation and iNaturalist using the Street View API.

Posted:
Author PhotoBy Felipe Hoffa, Developer Programs Engineer

Cross-posted from the Google Cloud Platform Blog

Google BigQuery is designed to make it easy to analyze large amounts of data quickly. This year we've seen great updates: big scale JOINs and GROUP BYs, unlimited result sizes, smarter functions, bigger quotas, as well as multiple improvements to the web UI. Today we've gone even further, announcing several updates that give BigQuery the ability to work in real-time, query subsets of the latest data, more functions and browser tool improvements.

Real-time analytics
BigQuery is now able to load and analyze data in real time through a simple API call, the new tabledata().insertAll() endpoint. This enables you to store data as it comes in, rather than building and maintaining systems just to cache and upload in batches. The best part? The new data is available for querying instantaneously. This feature is great for time sensitive use cases like log analysis and alerts generation.

Using it is as easy as calling the new endpoint with your data in a JSON object (with a single row or multiple rows of data).

Here's a Python example:
body = {"rows":[
    {"json": {"column_name":7.7,}}
    ]}
response = bigquery.tabledata().insertAll(
    projectId=PROJECT_ID,
    datasetId=DATASET_ID,
    tableId=TABLE_ID,
    body=body).execute()

Streaming data into BigQuery is free for an introductory period until January 1st, 2014. After that it will be billed at a flat rate of 1 cent per 10,000 rows inserted. The traditional jobs().insert() method will continue to be free. When choosing which import method to use, check for the one that best matches your use case. Keep using the jobs().insert() endpoint for bulk and big data loading. Switch to the new tabledata().insertAll() endpoint if your use case calls for a constantly and instantly updating stream of data.

Table decorators for recent imported data
This release introduces a new syntax for "table decorators". Now you can define queries that only scan a range or spot in the previous 24 hours. Traditionally BigQuery has always done a "full column scan" when querying data, while the new syntax will allow you to focus only on a specific subset of the latest data. Querying a partial subset of data with these decorators will result in lower querying costs — proportional to the size of the subset of the queried data.

With the new capabilities you can query only the last hour of inserted data, or query only what was inserted before that hour, or get a snapshot of the table at a specific time. The table decorators also work in all table related operations (list, export, copy, and so on), giving you the ability to do operations like copying a table as it was before a bad import job.

New window and statistical functions
To the previously announced window functions, we've added SUM(), COUNT(), AVG(), MIN(), MAX(), FIRST_VALUE, and LAST_VALUE(). Refer to the previous release announcement for a run through of how window functions work.

We also recently introduced the new Pearson correlation function, and showed how to find interesting and anomalous patterns in ambient sensors, or how to predict tomorrow's flight delays using 70 million flights dataset. Today's release adds new statistical functions, for even richer capabilities: COVAR_POP(), COVAR_SAMP(), STDDEV_POP(), STDDEV_SAMP(), VAR_POP() and VAR_SAMP().

BigQuery browser tool: Improved history retrieval
You can now query your history faster in the browser tool using the Query History panel: More information about the queries is being surfaced and convenient buttons have been added for common tasks.

You can try out the new UI features, table decorators, and new functions at https://bigquery.cloud.google.com/. You can post questions and get quick answers about BigQuery usage and development on Stack Overflow. We love your feedback and comments. Join the discussion on +Google Cloud Platform using the hashtag #BigQuery.


Felipe Hoffa is part of the Cloud Platform team. He'd love to see the world's data accessible for everyone in BigQuery.

Posted by Scott Knaster, Editor

Posted:
Author PhotoBy Sandor Sas, AdSense Software Engineer

Much of the signed-in web uses Hypertext Transfer Protocol Secure (HTTPS) to protect users’ sensitive information. For instance, most eCommerce and social networking websites use the HTTPS protocol to create secure sites that protect users sensitive information such as credit card and login credentials. We’ve updated the AdSense ad code so that it now supports secure ad serving through Secure Sockets Layer (SSL) on HTTPS web pages. This means that publishers with secure sites can now use AdSense ad code to serve SSL-compliant ads.

Our current ad code looks like this:

Synchronous ad code
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>


Asynchronous ad code
<script async src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>


The new HTTPS-enabled ad code replaces the old and uses a protocol-relative URL to kick off the ad request:

Synchronous ad code
<script type="text/javascript" src="//pagead2.googlesyndication.com/pagead/show_ads.js">
</script>


Asynchronous ad code
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>


Now when the user visits your secure website via HTTPS, AdSense serves the ad via HTTPS. A visit via HTTP will still serve the ad via HTTP, as before.

HTTPS-enabled sites require all resources on the page, including the ads, to be SSL compliant to protect the user against man-in-the-middle attacks. If an HTTPS page loads an HTTP resource, the page is considered mixed content, and the browser displays a mixed content warning (like the padlock with warning triangle in Chrome). New browser releases like Firefox 23 are starting to block mixed active content (scripts) but still display mixed content warnings for mixed passive content (images).

The mixed content warnings vary in aggressiveness among browsers. Here are some examples:

To make sure that all resources loaded by our ad calls on your secure page are SSL compliant, AdSense will remove non-SSL compliant ads from competing in the auction, which in theory means less auction pressure. This feature is meant to provide a monetization solution for publishers with existing HTTPS pages and not a reason for publishers to convert sites from HTTP to HTTPS. The HTTPS-compliant ads currently are text, image and Flash ads, but we are working on enabling more as we can make sure they are safe to use on secure pages.

Note that if you load your web page from the file system using the file:// protocol while developing, you won’t see the ads appear; instead, you’ll get a 404 response. In this case the asynchronous ad code - adsbygoogle.js - will put a placeholder the size of your ad slot on the page, while the synchronous ad code - show_ads.js - will not.

If you have an HTTPS-enabled website, we’d love to get your comments on our Google+ page.


Sandor Sas is a Software Engineer on the AdSense Formats team working on new, innovative ad formats. In his free time Sandor likes to play football (soccer) and he is an amateur clarinet player.

Posted by Scott Knaster, Editor