Blog of our latest news, updates, and stories for developers
Fridaygram: high school computer science, desert termites, YouTube sleuthing
Friday, March 29, 2013
By Scott Knaster,
Google Developers Blog
Editor
Computer Science for High School
(CS4HS) is a Google-sponsored program to enable professional development for high school and middle school students
around the world
interested in computer science. CS4HS holds workshops for teachers and provides funding to develop the workshops, along with help from local Googlers.
Earlier this week, we announced the
recipients
of this year’s grants, which will be the fifth year of the program (and you can see a list of previous years’ programs
here
). Computer science education isn’t just for university students any more.
Education leads to the
scientific method
, which is how researchers discovered that mysterious circles in the
Namib Desert
are probably not
fairy circles
or the work of an
underground dragon
, but are actually caused by
termites in the sand
.
Norbert Jürgens
of the University of Hamburg learned that sand termites eat the roots of grasses, creating the circles in the sand. That’s not nearly as cool as an underground dragon, but it seems more plausible.
Finally, you probably remember that
astonishing meteor that lit up the sky over Russia
last month, and you might have seen some of the
many videos that recorded the event
. So did Swedish blogger
Stefan Geens
, who figured out that he could learn more about the meteor from the videos in non-obvious ways. Geens used a
video showing shadows cast by the meteor
, along with Google Earth and Photoshop, to
roughly calculate the meteor’s trajectory and landing place
. From there,
scientists figured out more about the meteor
, including its size, track, and point of explosion. So this weekend, if you get inspired, you too can use YouTube to figure out something new.
Yes, meteor videos and sand termites are just part of the usual fun here on
Fridaygram
, where we eschew our usual developer fare and present just cool stuff instead, even if it doesn’t involve coding.
Education Awards on Google App Engine
Wednesday, March 27, 2013
By Andrea Held, Google University Relations
Cross-posted from the
Google Research Blog
Last year we
invited
proposals for innovative projects built on Google’s infrastructure. Today we are pleased to announce the 11 recipients of a
Google App Engine Education Award
. Professors and their students are using the award in cloud computing courses to study databases, distributed systems, web mashups and to build educational applications. Each selected project received $1000 in Google App Engine credits.
Awarding computational resources to classroom projects is always gratifying. It is impressive to see the creative ideas students and educators bring to these programs.
Below is a brief introduction to each project. Congratulations to the recipients!
John David N. Dionisio
, Loyola Marymount University
Project description
: The objective of this undergraduate database systems course is for students to implement one database application in two technology stacks, a traditional relational database and on Google App Engine. Students are asked to study both models and provide concrete comparison points.
Xiaohui (Helen) Gu
, North Carolina State University
Project description
:
Advanced Distributed Systems Class
The goal of the project is to allow the students to learn distributed system concepts by developing real distributed system management systems and testing them on real world cloud computing infrastructures such as Google App Engine.
Shriram Krishnamurthi
, Brown University
Project description
:
WeScheme
is a programming environment that runs in the Web browser and supports interactive development. WeScheme uses App Engine to handle user accounts, serverside compilation, and file management.
Feifei Li
, University of Utah
Project description
: A graduate-level course that will be offered in Fall 2013 on the design and implementation of large data management system kernels. The objective is to integrate features from a relational database engine with some of the new features from NoSQL systems to enable efficient and scalable data management over a cluster of commodity machines.
Mark Liffiton
, Illinois Wesleyan University
Project description
:
TeacherTap
is a free, simple classroom-response system built on Google App Engine. It lets students give instant, anonymous feedback to teachers about a lecture or discussion from any computer or mobile device with a web browser, facilitating more adaptive class sessions.
Eni Mustafaraj
, Wellesley College
Project description
: Topics in Computer Science: Web Mashups. A CS2 course that combines Google App Engine and MIT App Inventor. Students will learn to build apps with App Inventor to collect data about their life on campus. They will use Google App Engine to build web services and apps to host the data and remix it to create web mashups. Offered in the 2013 Spring semester.
Manish Parashar
, Rutgers University
Project description
: Cloud Computing for Scientific Applications -- Autonomic Cloud Computing teaches students how a hybrid HPC/Grid + Cloud cyber infrastructure can be effectively used to support real-world science and engineering applications. The goal of our efforts is to explore application formulations, Cloud and hybrid HPC/Grid + Cloud infrastructure usage modes that are meaningful for various classes of science and engineering application workflows.
Orit Shaer
, Wellesley College
Project description
:
GreenTouch
GreenTouch is a collaborative environment that enables novice users to engage in authentic scientific inquiry. It consists of a mobile user interface for capturing data in the field, a web application for data curation in the cloud, and a tabletop user interface for exploratory analysis of heterogeneous data.
Elliot Soloway
, University of Michigan
Project description
: WeLearn Mobile Platform: Making Mobile Devices Effective Tools for K-12. The platform makes mobile devices (Android, iOS, WP8) effective, essential tools for all-the-time, everywhere learning. WeLearn’s suite of productivity and communication apps enable learners to work collaboratively; WeLearn’s portal, hosted on Google App Engine, enables teachers to send assignments, review, and grade student artifacts. WeLearn is available to educators at no charge.
Jonathan White
, Harding University
Project description
: Teaching Cloud Computing in an Introduction to Engineering class for freshmen. We explore how well-designed systems are built to withstand unpredictable stresses, whether that system is a building, a piece of software or even the human body. The grant from Google is allowing us to add an overview of cloud computing as a platform that is robust under diverse loads.
Dr. Jiaofei Zhong
, University of Central Missouri
Project description
: By building an online Course Management System, students will be able to work on their team projects in the cloud. The system allows instructors and students to manage the course materials, including course syllabus, slides, assignments and tests in the cloud; the tool can be shared with educational institutions worldwide.
Andrea Held is a Program Manager on the University Relations team at Google. She grew up in Germany and has lived in California for almost 30 years.
Posted by
Scott Knaster
, Editor
Fridaygram: art project expands, tweeting in tongues, speaking to movies
Friday, March 22, 2013
By Scott Knaster,
Google Developers Blog
Editor
We posted
once before
about the
Google Art Project
, a very cool endeavor to make museum art available online to people around the world. We’re writing about it again today because the
project has just expanded
to include a bunch of great new stuff, including ancient works, contemporary art, and even urban art.
Highlights of the newly added works include hundreds of
photos
from highly regarded photographers,
centuries-old maps
, and
historical documents
. You can spend hours exploring museums from more than 40 countries while you sit in the park with your laptop.
Speaking of traveling without actually moving, a researcher has used public Twitter data to
study the use of human languages
in various places around the world. Researcher
Delia Mocanu
and her team studied languages from tweets sent in New York City and used the data to
map neighborhoods by language use
. In some cases, the secondary language used in a neighborhood matched the language spoken by original residents decades or even hundreds of years earlier. That’s even before Twitter existed.
Finally, when you’re done looking at art and learning about world language use, you can spend some time this weekend with Chrome’s new
Peanut Gallery
. This project uses Chrome’s voice recognition technology to let you add title cards to old silent films. It’s completely for fun – enjoy!
Get your API info and meaty technical details earlier in the week, because on
Friday
it’s all for fun: science, the humanities, and just general nerdiness.
SiteGround, IISpeed and Google Chrome make the web faster with PageSpeed
Thursday, March 21, 2013
By Ilya Grigorik, Developer Advocate and Web Performance Engineer
At Google we want the whole web to be faster, and there is no better way to achieve this goal than through helping our partners, both commercial and open-source, to deliver web optimization products to their users and clients. The PageSpeed Optimization Libraries, which are developed as part of our
Make the Web Faster
initiative, are a cornerstone of this strategy, enabling a growing list of products and integrations, developed both inside and outside Google.
SiteGround
, a popular web hosting provider,
announced mod_pagespeed support
to their customers: "
SuperCacher plugin is the first and only plugin that fully integrates Google’s mod_pagespeed with cPanel. Simply put, mod_pagespeed speeds up your site and reduces page load time automatically, with no additional knowledge required on the users’ side. It also optimizes your website for mobile view and for better browser rendering.
"
With SiteGround, you can enable PageSpeed optimizations on your site with one click. Then, you can hand-tune and configure your site to match your specific needs through
advanced customizations
provided by mod_pagespeed.
However, that’s not all. The portfolio of PageSpeed integrations continues to expand:
The
We-AMP
team has announced a
beta release of IISpeed
, which enables PageSpeed web content optimization within the Microsoft IIS web server. "
IIS and ASP.NET are very popular technologies on the web, powering millions of websites, and we are excited to bring the full power of PageSpeed optimization to the Windows platform
," said Otto van der Schaaf and Kees Spoelstra.
Thanks to open-source contributions, mod_pagespeed is now
integrated with CPanel and WHM
, an easy-to-use server control and management panel for web hosts and website owners.
Google Chrome has adapted PageSpeed to power the recently
announced
Chrome data compression
proxy
, which significantly reduces data usage and speeds up page load times on cellular networks.
To find out how to leverage PageSpeed on your site or service, or how to integrate the open source PageSpeed Optimization Libraries into your own product, visit the
PageSpeed site
.
Ilya Grigorik is a Developer Advocate and Web Performance Engineer at
Make the Web Faster
.
Posted by
Scott Knaster
, Editor
Build collaborative apps with Google Drive Realtime API
Tuesday, March 19, 2013
By Brian Cairns, Software Engineer
Google Drive lets users create
Docs, Sheets, and Slides
, collaborate on them in real time, and have their changes saved automatically. With the new
Google Drive Realtime API
, you can now easily add some of the same real-time collaboration that powers Google Drive to your own apps. This new API handles network communication, storage, presence, conflict resolution, and other collaborative details so you can focus on building great apps.
Developing for the Drive Realtime API is almost as simple as working with local objects. The API provides collaborative versions of familiar data objects such as maps, lists, strings, and JSON values and automatically synchronizes and stores modifications to these objects. Your application reads from and writes to these objects like any other local object. Change event handlers can be added to collaborative objects so that your app can react to changes from other collaborators.
Because the Drive Realtime API is based on
operational transformation
(OT), local changes are reflected instantly, even on high-latency networks. The Drive Realtime API automatically transforms changes to the data model so that every collaborator stays in sync.
If basic collections aren't enough for your application, the Drive Realtime API supports custom objects and references, including trees and arbitrary graph structures. As with other collaborative objects, the Drive Realtime API automatically synchronizes these objects with other collaborators and stores them in Drive.
Because presence is important in collaborative applications, the Drive Realtime API also
keeps track of who is connected
to your application and provides your app with events for when collaborators join, leave, or make changes.
Widget using the Drive Realtime API and showing the collaborators on a document
Neutron Drive
,
Gantter
and
draw.io
have enabled realtime collaboration in their apps using the Google Drive Realtime API. Check out these apps to see the Drive Realtime API in action.
Collaborative code editing with Neutron Drive
Neutron Drive
is an online editor for text and source code files stored in Google Drive. You can now collaboratively edit any text or source code files stored in Drive and get a realtime collaboration experience—shared typing, a view of active collaborators, cursor positioning, and selected text. This all comes in addition to the syntax highlighting and other advanced features offered by Neutron Drive. To learn more, watch the video:
Collaborative project scheduling with Gantter
Gantter
is a free online project scheduling tool and Gantt diagram editor. It now allows you to collaboratively—and in real time— work on your project schedules. It even features an embedded chat powered by the Drive Realtime API. Watch the video below to see Gantter’s new realtime collaboration features in action.
Collaborative diagraming with draw.io
draw.io
is a diagraming application that enables you to draw a wide variety of diagrams such as flowcharts, UML diagrams and even electronic circuits. You can now see updates from other collaborators instantaneously, with colored visual cues indicating who has changed the diagram and where that change occurred. Try the new draw.io collaborative beta at
rt.draw.io
and watch the video below.
Learn more about the Drive Realtime API
We built a
collaborative colored cube puzzle
so you can have some fun while trying out the Drive Realtime API and a
Drive Realtime API Playground
to take you through the API step-by-step. Both apps are open source so check out our
Github repos
.
Have a look at the
Google Drive Realtime API technical documentation
and start making your app realtime-enabled!
Brian Cairns joined the Google Drive team in 2011 and lives in Boulder, Colorado. He is the lead software engineer for the Drive Realtime API.
Posted by
Scott Knaster
, Editor
Using Tailbone to talk to App Engine with JavaScript
Monday, March 18, 2013
By Doug Fritz, Creative Lab
Today we’re sharing a small open source project called
Tailbone
that lets developers read and write to the
Google App Engine Datastore
using JavaScript. We’re hoping that it makes App Engine a bit more accessible to developers who aren’t familiar with Python, Java or Go, or prefer not to use them.
I share an office with three creative programmers who work almost entirely in HTML5 and JavaScript. An important part of our work is writing server-side code for new projects that read or write data to to the App Engine Datastore or use Google accounts to store authenticated user-specific information. To make that process easier for my JavaScript-fluent colleagues, I created Tailbone to act as a RESTful API for an app’s Datastore.
To get started, you still have to install App Engine’s SDK and Python, but after that you’re all set. We’ve written a
detailed tutorial
that guides you through the installation and an example app for creating an authenticated profile page with an editable name and photo.
It’s my hope that Tailbone makes App Engine a little bit less intimidating for people who don’t have much experience with server-side coding. I know there are a few in my office. If there are any others out there, this is for you.
Doug Fritz
is a programmer with the Creative Lab’s Data Arts Team. He thinks large amounts of data taste slightly purple and strongly wishes the government used bugzilla.
Posted by
Scott Knaster
, Editor
BigQuery gets big new features to make data analysis even easier
Thursday, March 14, 2013
By Michael Manoochehri, Developer Programs Engineer, Cloud Platform
Google BigQuery is designed to make it easy to analyze large amounts of data quickly. Overwhelmingly, developers have asked us for features to help simplify their work even further. Today we are launching a collection of updates that gives BigQuery a greater range of query and data types, more flexibility with table structure, and better tools for collaborative analysis.
Big JOIN and Big Group Aggregations
Extracting insights from multiple datasets can be challenging and time-consuming. This is especially true when datasets become too large to query with a traditional database system. With traditional databases, SQL functions like joining and grouping are typically used to bring together data for analysis. What happens when your data is too large to fit into a conventional database? Working with multi-terabyte datasets often requires developing complicated MapReduce workflows, investing in expensive infrastructure, and great deal of time. Very often, it's a combination of all three.
In response to developer feedback, we're launching new features that enable analysts and developers to run fast SQL-like join and aggregate queries on datasets without the need for batch-based processing. Our new
Big JOIN
feature gives users the ability to produce a result set by merging data from two large tables by a common key. Big JOIN simplifies data analysis that would otherwise require a data transformation step, by allowing users to specify JOIN operations using SQL.
Popular web applications produce user activity logs that can grow by billions of rows each week. Dividing users into smaller groups is a key step for analysis. However, each group of users can number in the millions. To handle this for such large volumes, we've enabled Big Group Aggregations, which significantly increases the number of distinct values that can be grouped in a result set.
To use these new features, simply add the EACH modifier to JOIN or GROUP BY clauses.
/* JOIN EACH example
* Selects the top 10 most edited Wikipedia pages
* of words that appear in works of Shakespeare.
*/
SELECT
TOP(wiki.title, 10), COUNT(*)
FROM
[publicdata:samples.wikipedia] AS wiki
JOIN EACH
[publicdata:samples.shakespeare] AS shakespeare
ON
shakespeare.word = wiki.title;
For more information, including best practices, when using JOIN EACH and GROUP EACH BY, visit the BigQuery
query reference
.
Native support for TIMESTAMP data type
We are also adding a new TIMESTAMP data type, in response to one of our most frequent requests from developers. This new data type lets you import date and time values in formats familiar to users of databases such as MySQL, while preserving timezone offset information.
Along with the new data type come new functions for converting TIMESTAMP fields into other formats, calculating intervals, and extracting components such as the hour, day of week, and quarter.
/* TIMESTAMP example
* Which hours in the day are the most popular for GitHub actions?
* This query converts github_timeline "created_at" date time
* strings to BigQuery TIMESTAMP, and extracts the hour from each.
*/
SELECT
HOUR
(
TIMESTAMP
(created_at)) AS event_create_hour,
COUNT(*) AS event_count
FROM
[publicdata:samples.github_timeline]
GROUP BY
event_create_hour
ORDER BY
event_count DESC;
Read more about the available TIMESTAMP functions in our
query reference
guide.
Add columns to existing BigQuery tables
When working with large amounts of fast moving data, it's not uncommon to find out that you need to add additional fields to your tables. In response to developer feedback, we have added the ability to add new columns to existing BigQuery tables.
To take advantage of this feature, simply provide a new schema with additional columns using either the "Tables: update" or "Tables: patch" BigQuery API methods.
For more information on this feature, visit the
BigQuery API reference
.
BigQuery Web UI: Dataset links and dataset sharing notifications
BigQuery has always provided project owners with very fine-grained control of how their datasets are shared. To make it easier for teams to work on collaborative data analysis, we've added direct links to individual datasets in the BigQuery Web UI. This provides a convenient way for authorized users to quickly access a dataset, and allows for bookmarking and sharing.
In addition, we've also added email notifications to inform users when they've been given dataset access privileges. When a dataset has been shared with another user via the sharing control panel, BigQuery sends a notification email containing a direct link to the dataset.
The BigQuery UI features a collection of public datasets for you to use when trying out these new features. To get started, visit our
sign up page
and
Quick Start guide
. You should take a look at
our API docs
, and ask questions about BigQuery development on
Stack Overflow
. Finally, don't forget to give us feedback and join the discussion on our
Cloud Platform Developers Google+ page
.
Michael Manoochehri
is a Developer Programs Engineer supporting the Google Cloud Platform. His goal is to help make cloud computing and data analysis universally accessible and useful.
Posted by
Scott Knaster
, Editor
Friends help friends recover their hacked sites
Tuesday, March 12, 2013
By Maile Ohye, Developer Programs Tech Lead
If you've ever helped a friend recover their hacked site, you know it can get fairly complicated – beyond just the technical issues. First, recovery might involve answering your friend’s general questions like "Why would someone do this to my site?" Second, you might wonder “What’s the process to have the ‘
This site may harm your computer
’ warning label removed from search results?” Our new
Help for hacked sites
series includes articles and 80+ minutes of video to help you, and to help you help others. In the overview video, these common questions are addressed:
Why would someone ever want to hack my site? (often asked by our trusting friends :) )
How was someone able to hack my site?
What's the process for fixing it and how long will it take?
Overview video: How and why sites are hacked
Help for hacked sites
also provides more detailed information on specific issues, such as background on the malware infection type
Error template
or
Server configuration
if your site was hacked to distribute malware.
To avoid ever needing this resource yourself, please implement a security and maintenance plan for your site if you haven't already.
Be vigilant about keeping software updated.
Understand the security practices of all applications, plug-ins, third-party software, and so on, before you install them on your server. A security vulnerability in one software application can affect the safety of your entire site.
Remove unnecessary or unused software.
Enforce creation of strong passwords.
Keep all devices used to log in to your servers secure (updated operating system and browser).
Make regular, automated site backups.
We’d like to thank the developer community for sharing tips on site recovery as well as replying to
forum questions
to assist others with hacked sites. Special thanks to
Redleg
and
Denis Sinegubko
for their amazing contributions.
Maile Ohye
is a Developer Advocate on Google's Webmaster Central Team. She very much enjoys chatting with friends and helping companies build a strategic online presence.
Posted by
Scott Knaster
, Editor
Fridaygram: women in tech, buzzing bees, storytelling rules
Friday, March 8, 2013
By Scott Knaster,
Google Developers Blog
Editor
Today is
International Women’s Day
, and one of the ways we’re celebrating is by being part of the
Voices Global Conference
. The conference includes sessions focused on women in technology, including new
Women Techmakers
episodes. You can watch live streams and archived videos, all available on the
conference site
.
Sometimes people ask the purpose of events like this. Beryl Nelson, writing in the
Official Google Blog
says it nicely: “A diverse workforce is critical in helping us build products that can help people change the world. That includes diversity of all life experiences, including gender.”
Now let’s turn to the uncommon combination of insects and coffee. Researchers in England were able to use caffeine found in some plants to
help train the long-term memory of bees
. The bees that got a hit of caffeine were far more likely to remember a particular plant than bees that received just sugar water. Coffee drinkers are probably nodding their heads knowingly at this news.
Finally, be sure to read
Pixar’s 22 Rules of Storytelling
, which has been making the Internet rounds again lately. And try to take the time to enjoy a great story yourself this weekend.
Fridaygram
: it’s not the usual yada yada. Sure, you figured out all the hidden codes on the
new Google I/O site
earlier this week, but think about this: why were those particular numbers chosen? See what you can come up with, then leave a comment on our
+Google Developers
page.
Unlock the magic: Get ready for Google I/O 2013 registration
Wednesday, March 6, 2013
By Katie Miller, Developer Marketing
With Google I/O 2013 registration only days away, on Wednesday, March 13, 2013 at 7:00 AM PDT (GMT-7), we want to make sure you’re as prepared as possible for the process.
First, we’re pleased to share that we’ve just added a lot of information to the
Google I/O 2013 site
, including information on the registration process, travel planning resources, key event details, FAQs, and (new this year) child care.
Second, we’d like to share answers to some of the most commonly asked questions we’ve received in the last few days on
+Google Developers
. Complete FAQs are available on the
Help page
of the event site.
Optimizing your registration experience
We anticipate high demand once again, but there are steps you can take to be prepared for the process.
Before registration opens:
Make sure you have set up both a
Google+
account and a
Google Wallet
account. If you’ve ever bought anything on Google Play, you already have Google Wallet.
Check your
Google Wallet settings
to make sure your postal address is complete and accurate, and your payment method is correct and up to date.
If this will be the first time you're making a large payment with Google Wallet, you may want to notify your bank or credit card company in advance that you plan to make a $900 (general ticket) or $300 (academic ticket) charge that will appear as
GOOGLE*IORegistration
. This will help ensure your payment is processed.
Be on the site before registration opens on Wednesday, March 13, 2013 at 7:00 AM PDT (GMT-7) so you can sign in to your Google+ account.
Once registration opens on March 13, 2013 at 7:00 AM PDT (GMT-7):
When you’re placed on the waiting page, don’t refresh your browser or your ticket search will restart.
Please don’t open multiple tabs or use multiple browsers. Each time you open a new connection, your ticket search will restart.
Details for academic attendees
To qualify as an academic attendee (and receive the $300 ticket price) you need to be an active full-time student, professor, faculty or staff at a high school or higher education institution. The academic rate is also available to anyone who graduated in 2013 prior to the event.
To verify that you are qualified to receive the special rate, we will require a current school ID, transcripts, credentials, or other forms of documentation when you check in at the conference. A couple of other important things to note:
Once purchased, general admission tickets can't be converted to academic tickets, and vice versa.
If you buy an academic ticket and can't provide academic documentation when you arrive at Google I/O, you won't be admitted or offered a refund, nor will you be able to convert your ticket to general admission.
Information on participating from afar
You can be part of Google I/O from wherever you are. You can watch live streams of the keynotes and many other sessions on
Google Developers Live
. Even better, be part of Google I/O by attending an I/O Extended event in your area. More details on these programs will be available soon. If you can't watch live, you can see YouTube recordings of all sessions on
Google Developers Live
after the conference.
We greatly appreciate your interest in coming to Google I/O, and we hope to see you there. Good luck!
Katie Miller leads marketing for Google I/O and other developer marketing initiatives at Google. Outside of work, Katie spends her time running (both road races and after a very active toddler) and memorizing Dr. Seuss rhymes.
Posted by
Scott Knaster
, Editor
Fridaygram: Netizen of the Year, amazing ants, mesmerizing math
Friday, March 1, 2013
By Scott Knaster,
Google Developers Blog
Editor
Each year
Reporters Without Borders
presents the
Netizen of the Year Award
to someone who makes a notable contribution in defense of online freedom of expression. This sort of activism is vital, and can be hazardous: bloggers and others are sometimes jailed for what they write online. This year, Internet users (that’s us) get to vote for the winner of the award. There are nine nominees. You can learn their compelling stories and vote for your choice at
youtube.com/netizen2013
.
The winner will be announced on March 7th and will be invited to receive the award in person at Google’s office in Paris on March 12th, which is
World Day Against Cyber Censorship
.
Moving from strong online voices to strong insects, researchers have found that
Asian weaver ants
have an
incredibly strong grip
, enabling them to hold 100 times their weight with their foot pads. These creatures can even rapidly expand their foot pads if they need more holding power, as when the wind causes the surface they’re standing on to move a bit. This will probably make us feel even worse about dropping our mobile phones.
Finally, spend some quiet time this weekend gazing at
these
animated
Mathematica
-based images. They prove that math is beautiful.
Another Friday is here, and we’re back with our
Fridaygram
, news that's both/either interesting and/or fun. Hold on tight, and enjoy your weekend!
Labels
.app
.dev
#30DaysOfFlutter
#AIY
#Contacts API
#CSEdWeek
#devfest18 #devfeststories #gdg #googledevelopers #developers #community
#freeandopen
#GDC20
#Google Workspace
#Google Workspace Add-ons
#Google Workspace Developer
#GooglePlay #AndroidDevStory #PlayStore #DeveloperConsole #StoreListingExperiments
#growwithgoogle
#io12
#io13
#io14
#io15
#io16
#io17
#io18
#io2012
#io2013
#io2014
#PeopleAPI
+1
20% project
3d
3D face mesh
about.com
accelerator
Access
accessibility
Account Linking
actions
Actions Builder
Actions console
actions on google
Actions SDK
actionsongoogle
activity
Administrative APIs
AdMob
adobe
Adobe Creative Cloud
Adobe Creative Cloud Libraries
Ads
adsense
advanced
advogato
AdWords
africa
agency program
agpl
AI
AI Principles
AIY
AIY Projects
AIYProjects
ajax
ajax apis
ajax search
ajax search books news apis
Alfred Camera
all for good
amarok
AMP
AMP Cache
analytics
and Assistant
android
Android App Development
Android Developer
android developer certification
android developers
Android Development
Android Studio
Android Things
Android Tools
Android TV
android wear
android11
androidstudio
animation
Announcement
announcements
apache
api
API.AI
apis
apis console
apis explorer
apis. charts
app
app design
App dev
App Development
app engine
app indexing
app indexing api
App Invites
apple
Application Development
apps
apps script
AR
ARCore
area 120
artifact management
Artificial Intelligence
asia
asl
assistant
atom publishing protocol
Audio
augmented faces
Augmented images
augmented reality
australia
Auth
authentication
authsub
automatic speech recognition
AutoML
awards
axsjax
barcodes
Bazel
beacon
beacons
Belarus
bespin
best practices
beta
bigquery
bitcoin
Black Consciousness Day
Blockly
blogger
Bluetooth
book search
books API
bootcamp
braintree
Brazil
british english
Brotli
browser
Build Out
building ajax apps
BuildOut
Bulgaria
business
business console
buzz
c++
Cache
caja
caldav
calendar
camino
campfire one
caption
cardboard
CardDAV
cast
Cast Connect
celebrating
Certification
certification award
channel
chinese
chrome
chrome apps
chrome dev summit
chrome devtools
chrome experiment
chrome extensions
chrome os
Chrome OS IO
Chrome OS IO19
chrome web store
Chromebooks
chromecast
chromium
chronoscope
cifs
classes
classroom api
client libraries
closure tools
cloud
Cloud anchor
Cloud Anchors
Cloud Computing
cloud datastore
Cloud Functions
cloud functions for firebase
Cloud Next
cloud platform
cloud portability
cloud services
cloud sql
cloud storage
Cloud Study Jam
cms
coca cola
CocoaPods
code for educators
code jam
code review
code-in
codeedu
codelabs
coding
coffee with a googler
Colaboratory
collada
color
Colt McAnlis
commerce
community
community connectors
compatibility
competition
Compilers
compression
compressorhead
computer science
Computer Science Education Week
computer vision
computing heritage
conference
conferences
Console
contacts api
Containers
contest
contextual gadgets
conversation design
conversations
Coral
Coral updates
Core ML
couchdb
countdown to I/O 2012
country support
courses
COVID
COVID-19
COVID19DetectProtect
CPU
crash course
Crash Reporting
crashlytics
creative commons
cricket
crisis response
Croatia
Crostini
cryptocurrency
cryptography
css
css3
Custom Elements
custom search
custom search api
Czechia
DA
danish linux forum
dart
Data Compression
Data science
Data Visualization
database
Databases
Dataset
Datasets
datastore
dataviz
Daydream
Debian
deprecation
Depth
design
desktop
desktop apps
Dev Tools
devart
develop
developer
Developer Advocate
Developer Communities
Developer Culture
developer expert
developer features
Developer Keynote
Developer Preview
developer relations
developer student clubs
developers
developers. meetup
Development
devfest
devfest developer chrome maps social wave apps
DevFest18
DevFestStories
Device
DFP
Dia da Consciência Negra
dialogflow
differential privacy
discovery service
diversity
diversity-and-inclusion
django
dns
do-it-yourself
Docker
docs
documentation
documents list api
dojo
domain
domains
doodles
dot net
doubleclick
dreamweaver
Drive
drupal
dsc
dynamic links
earn
earth
Ebay
eclipse
eclipsecon
eddystone
Edge AI
Edge TPU
Edge TPU Accelerator
Edge TPU Dev Board
educatio
education
email
EMEA
endpoints
enterprise
Entity Extraction
entrepreneurs
Error logging
Estimator
Estimators
estonia
Ethics
Europe
event
events
evolution
execution api
extensions
Fabric
face detection
Fairness
fairness in machine learning
faster web
FCM
FCP
featured
feeds
finance
fintech
Firebase
Firebase Analytics
Firebase Cloud Messaging
Firebase Dynamic Links
firebug
firefox
firestore
firevox
firstbeta
fitness
flutter
Flutter 1.2
Flutter 1.5
Flutter 1.9
Flutter 2
Flutter at IO
Flutter Clock
Flutter Create
Flutter Engage
Flutter for desktop
Flutter for web
Flutter Interact
Flutter Live
flutter release preview 1
flutter release preview 2
Follow Us
font api
Fonts
fosdem
founders
freebsd
freenet
Fridaygram
fusion tables
G Suite
G Suite Developer
G+
gadgets
Game Developers Conference
games
gaming
gcc
gci
GCP
GDA
gdata
GDC 2020
GDC17
GDD
gdd07
gdd08
gdd09
GDD11
GDE
gdg
gdl
gdl weekly
gears
General Availability
geo
geolocation
geoserver
GET
getpaid
ghop
Gigster
git
github
GKE
Glass
gmail
Gmail Add-on
Gmail API
Gmail APIs
GMTC
gnome
gnome women's summer outreach program
Go
golang
goo.gl
Google
Google AI
Google Analytics
Google APIs
google apps
google apps api
google apps for your domain
google apps marketplace
Google AR
google assistant
Google Assistant Bluetooth
Google Assistant Developer Day
Google Assistant IO
Google Assistant IO19
google assistant sdk
Google Brain
google buzz
Google Cardboard
google cast
google certification
google chart api
Google Charts
google checkout
google chrome
Google Cloud
Google Cloud Messaging
Google Cloud Platform
google cloud storage
Google Cloud Talks
Google Cloud training
google code
google code project hosting
google code search
google code university
google compute engine
Google Coral
google data apis
google data protocol
Google Data Studio
google developer day
google developer days
Google Developer Experts
Google Developer Groups
Google Developer Scholarship
google developers
Google Developers Academy
google developers certification
google developers community groups
Google Developers Groups
Google Developers Live
Google Developers site
Google Developers University Consortium
google docs
Google Docs Add-on
Google Docs API
google doctype
google domains
Google Drive
Google Drive SDK
google earth
google fit
Google Fonts
Google For Games
google for startups
google friend connect
google gadgets
google gears
google grants
Google Groups Settings
google health
Google Home Hub
Google I/O
Google Identity Platform
Google in Asia
google io
Google IOS Android
Google Maps
Google Maps Platform
google mashup editor
Google Noto fonts
google pay
google pay account
google pay api
google pay business
Google Pay Developers
Google Pay India
google pay integration
google pay support
google photos
google platform
Google Play
Google Play Developer API
Google Play Developers
google play services
Google Registry
google scholarships
Google Science Fair
Google sheets
Google Sheets Add-on
Google Sheets API
Google Slides
Google Slides Add-on
Google Slides API
google space
Google Spreadsheets API
google storage
google summer of code
Google tech talk
Google technology
google technoloy user groups
google tv
google visualization api
google wallet
Google Wave
google web elements
google web toolkit
Google Workspace
Google Workspace Add-ons
Google Workspace Developer
google.org
google+
GoogleAssistant
googlecast
googledevelopers
googleio
googlenew
GooglePlay
GooglePlay AndroidDev
googlewebelements googleio
GPE
GPGS C++ Games
GPT
Gradle
green linux
Groovy
Groups API
grow
grow with google
gsoc
GSuite
gtags
gtug
guest post
guice
gulp
GWSOP
gwt
gzip
hackathon
hacking
hackthon
hamilton
Handwriting
hangouts
Hangouts Chat
Hangouts Chat API
haproxy
Headset
hg
hibernate
howto
hpux
html
html5
http
I/O
I/O 17
I/O 2017
I/O Extended
I/O Live
ical
ICYMI
identity
ietf
ignite
igoogle
iguanas
iiw
Image Compression
image search
Imara
In-app billing
in-app payments
in-app purchase
incubator
India
indie
Indie Games Accelerator
information visualization
Instagram
integration status
intelligentwire
interactive music
International Women’s Day
internationalization
internet explorer
internet of things
internship
interviews
IO
IO17
io18
IO19
IO19 Flutter
IO2017
ios
iOS SDK
IoT
ipad
iphone
iPhone Development
israel
Issue Tracker
IWD 2020
IWD 2021
jaiku
japanese
java
javascript
jetpack
joomla
joomladayus2007
joomladayusa
JS
json
karaoke
KDE
KDE 4.0
Keras
kernel
kernel summit
keynote
khronos
kids
kids coding
kids coding team
kml
korean
Kotlin
Krakow
Kubernetes
labs
lanchpad
language
languages
laptop apps
laptops
latam accelerator
LatAm startups
Latest
Latin America
latitude
latvia
launch
launchpad
launchpad accelerator
launchpad studio
LaunchShow
lca
Leadership
Learning
lens
lessons
licenses
linux
linux foundation
Linux on Chrome OS
Linux on Chromebooks
linux summit
linux virtual server
linuxconf eu
lithuania
Local Home
Local Home SDK
localization
Location
LoCo
Logging
london
mac
MacFuse
Machine
machine intelligence
machine learning
machine learning accelerator
Mainframe Migration
maker
Makers
malware
maps
maps apis
Marketplace
material
material components
material design
MDL
MediaPipe
meetup
mercurial
Mexico startups
Micronaut
Microservices
MIT CSAIL
MIT Media Lab
ml
ML Kit
MLCC
mobile
Mobile App Development
mobile design
Mobile Development
mobile performance
mobile sites
mobile speed
mobile UX
Mobile web
Mobile World Congress
mod_pagespeed
Moderator
monetize
Monthly roundup
MOOC
mozilla
multi-platform
mylar
myspace
MySQL
mythtv
named
narratives
native ads
native client
nearby
Nest
Nest WiFi
netbsd
Next Billion Users
non-profit
nonsense
nosql
notifications
Noto Serif CJK
NPM
nss
nvidia
NYT
O3D
oauth
OAuth playground
OAuth2
Object Detection and Tracking
objective-c
OCaml
Occlusion
ocr
ODF
office hours
oha
online payments
OOXML
open data
open source
open source blog
open source releases
open web
open-source
openajax alliance
opengl
openid
opensocial
openssh
openssl
Optimization
oreilly
orkut
oscon
oscon2007
osi
oss devs
ossjam
osx
pactester
page speed
PageSpeed
palette
payment handler
payment request api
payment web standard
payments
paypal
Peer bonus program
performance
persistence
persistent AR
phone
photos
picasa
picasa web
places API
play services
playground
plone
plone sprint
podcast
poland
Poly
polymer
Polymer Summit
portugal
Pose Detection
Pose Estimation
posix
POST
PowerMeter API
prediction api
Prerender
preview
privacy
prizes
processing
production access
products - slides
programmers
programming
Progressive Web App
Project Connected Home over IP
project hosting
Project Loon
Project Tango
prototype
proximity
pubsubhubbub
PWA
py3k
python
python sprint
Qualcomm
Qualcomm Google
rails
random hacks of kindness
Rasberry Pi
React
reader
releases
Remote Config
research
reserve seats
Resources
Responsible AI
REST
result snippets
Reto Meier
review process
Rewarded Ads
Rewarded Video Ads
rhino
Saatchi
Safety & Security
safety and security
salesforce
samba
Sample dialogs
sandbox
Santa Tracker
Scala
scalability
scale-ups
Sceneform
schedule
scholarship
scholarships
scopes
Scratch
screencast
sdk
sdks
search
security
Selfie Segmentation
Serbia
serif
Serverless
service worker
sessions
seurat
shape
Sheets
Sheets API
shindig
shopping
Shoreline Amphitheatre
shortcuts
showcase
sidewiki
Sign language
sign-in
signall
silverstripe
SIMD
sitemaps
sites api
sixapart
sketchup
Slides API
small business
small businesses
small-business
Smart Home
Smart Lock for Passwords
soap search api
soc
social
social graph
solaris
solutions challenge
souders
spa2007
Space
spdy
speakers
speech
speed
speed tracer
Spring
spyware
Stable release
Stackdriver
standards
startup
Startup accelerator
startup africa roadtrip
startups
Static Sites
STEM
storage
stories
Street View
Strobe
student programs
students
stuff
style
subscribed links
subscription
subversion
summer of code
Sundar Pichai
SVG
sxsw
syndication
targeted spyware
tasks API
Team Drives (new)
techmakers
Technical Writing
technology
templates
TensorFlow
tensorflow dev summit
TensorFlow Lite
TensorFlow Research Cloud
tensorRT
Test Lab
testing
text embedding models
Tez
TF Lite
tfdevsummit
TFLite
themes
thought leadership
tool
Toolkit
tools
topp
TPU
TPU Dev Board
training
Traits
tranparency
transit
translate
translation
tutorials
tv
ubiquitous computing
ubiquity
ubucon
ubuntu
Udacity
UI
Ukraine
UN
UNDP
UNICEF
unicode
unit test
Unity
universal
Universal App Campaigns
University
unix
Update
updates
url
url shortener
URLs
UX
verification
video
videos
Vim
virtual keyboard
virtual reality
visualization
voice
voice kit
voice technology
voice user interface
VR
VUI
wattpad
Wearables
Weave
web
web animations api
web apps
web components
web design
web designer
web development
web exponents
web fonts
web performance
web platform docs
web registry
webfonts
webgl
webmaster
WebP
website optimizer
websites
webVR
weekly roundup
WhiteHouse.gov
Who's at Google I/O
win
windows
windows programming
Winter of Code
women developers
Women in Tech
Women Tech Makers
women techmakers
WomenTechmakers
writing
wtm
xauth
yahoo
young developers
Young Makers
youtube
zlib
zurich
ZXing
Archive
2021
Apr
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2017
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2015
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
2014
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2011
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2010
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2009
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2008
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2007
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2006
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2005
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Subscribe
Follow @googledevs
Visit
Google Developers
for docs, event info, and more.