A tribute to Bob Moog

In the mid-1960s, Dr. Robert Moog unleashed a new universe of sounds into musicdom with his invention of the electronic analog Moog Synthesizer. The timbre and tones of these keyboard instruments (true works of art in and of themselves) would come to define a generation of music, featuring heavily in songs by The Beatles, The Doors, Stevie Wonder, Kraftwerk and many others.

When people hear the word “synthesizer” they often think “synthetic”—fake, manufactured, unnatural. In contrast, Bob Moog’s synthesizers produce beautiful, organic and rich sounds that are, nearly 50 years later, regarded by many professional musicians as the epitome of an electronic instrument. “Synthesizer,” it turns out, refers to the synthesis embedded in Moog’s instruments: a network of electronic components working together to create a whole greater than the sum of the parts.

With his passion for high-tech toolmaking in the service of creativity, Bob Moog is something of a patron saint of the nerdy arts and a hero to many of us here. So for the next 24 hours on our homepage, you’ll find an interactive, playable logo inspired by the instruments with which Moog brought musical performance into the electronic age. You can use your mouse or computer keyboard to control the mini-synthesizer’s keys and knobs to make nearly limitless sounds. Keeping with the theme of 1960s music technology, we’ve patched the keyboard into a 4-track tape recorder so you can record, play back and share songs via short links or Google+.

Much like the musical machines Bob Moog created, this doodle was synthesized from a number of smaller components to form a unique instrument. When experienced with Google Chrome, sound is generated natively using the Web Audio API—a doodle first (for other browsers the Flash plugin is used). This doodle also takes advantage of JavaScript, Closure libraries, CSS3 and tools like Google Web Fonts, the Google+ API, the Google URL Shortener and App Engine.

Special thanks to engineers Reinaldo Aguiar and Rui Lopes and doodle team lead Ryan Germick for their work, as well as the Bob Moog Foundation and Moog Music for their blessing. Now give those knobs a spin and compose a tune that would make Dr. Moog smile!

Introducing the SketchUp Showcase

 

It’s our sincere pleasure to unveil The SketchUp Showcase, a home for the most impressive, interesting, and inspiring project stories that have been shared with us.

Why a new showcase? Often, when you find an amazing model in the 3D Warehouse, it doesn’t tell the full story behind a project. You can download it and see how it was built. But you probably wouldn’t get a sense of why it was built. Where did the inspiration come from? What were the design challenges the modeler faced? What happened after the model was finished? The story just isn’t complete.

The Showcase is a space where the stories, images, renders, animations, and 3D models of passionate SketchUppers can shine a bit brighter.

 

 

What was the inspiration behind this 3D model? | Image courtesy of Roberto Bergamo 

 

But that’s not all – the Showcase is also a first look at a new element of SketchUp technology: an online 3D model viewer. This 3D viewer lets you orbit, zoom, and pan 3D models right in your browser! To see it in action, find a project marked with a red flag or simply click here. Please note: you’ll need to use the latest version of Google Chrome to take advantage of the WebGL goodness that makes this viewer possible.

Go ahead and start exploring now; content is organized by category filters, so you can easily find projects based on your interests.

A project page featuring the new online 3D viewer | The Catalyst Playground in VietnamFinally, our team would like to dedicate the SketchUp Showcase to all the passionate SketchUppers who’ve supported us for over a decade. As we enter a new chapter with Trimble, we hope the Showcase and the online viewer are proof that SketchUp is only getting better. It’s clichéd to say we wouldn’t be much of anywhere without you, but that doesn’t make it any less true. Thank you for all of the love (sometimes tough) you’ve sent our way. Your passion for SketchUp is still what gets us out of bed in the morning.

Ice Cream Sandwich on the Galaxy Nexus

Beaming a video with a single tap or unlocking a device with only a smile sounds like science fiction. Now, you can actually do these things (and more) with a phone that fits in the palm of your hand.

Wednesday morning in Hong Kong—together with Samsung—we unveiled Galaxy Nexus, the first phone designed for the latest release of Android 4.0, also known as Ice Cream Sandwich.

With a super slim profile, Galaxy Nexus features a 4.65” Contour Display with true high definition (720p) resolution and a lightning-fast dual core 1.2ghz processor combined with 4G LTE or HSPA+ technology. Galaxy Nexus also features the latest in software: Ice Cream Sandwich makes Android simple and beautiful, and takes the smartphone to beyond smart.

Beauty and simplicity
With Ice Cream Sandwich, our mission was to build a mobile OS that works on both phones and tablets, and to make the power of Android enticing and intuitive. We created a new font that’s optimized for HD displays and eliminated all hardware buttons in favor of adaptable software buttons. We also dramatically improved the keyboard, made notifications more interactive and created resizable widgets.

The desktop-class browser is significantly faster, featuring a refined tab manager and the ability to sync your bookmarks with Google Chrome. Ice Cream Sandwich also features the best mobile Gmail experience to date, with a new design that lets you quickly swipe through your inbox and search messages even when you’re offline. Calendar boasts a clean new look and you can zoom into your schedule with a pinch.

Connect and share
People are at the heart of Ice Cream Sandwich. We rethought how you browse your contacts with the new People app, which combines high-resolution photos and updates from Google+ and other social services. It’s also easier to capture and share your life with family and friends. Galaxy Nexus sports a high-end camera with zero shutter lag, automatic focus, top notch low-light performance and a simple way to capture panoramic pictures. Shoot amazing photos or 1080p video, and then edit and share them directly from your phone.

Beyond smart
Galaxy Nexus isn’t just a smartphone—it’s beyond smart. Ice Cream Sandwich gives you complete control over the amount of mobile data you use by helping you better understand and manage it. We’re also introducing Android Beam, which uses near field communication (NFC) to instantly share webpages, YouTube videos, maps, directions and apps by simply tapping two phones together. Face Unlock uses state-of-the-art facial recognition technology to unlock your phone with nothing more than a smile.

This weekend marks the third birthday of the G1, the first-ever Android phone. Nine releases later, more than 550,000 Android devices are activated daily.

Starting in November, Galaxy Nexus will be available in the United States, Canada, Europe and Asia. Check out the Nexus website for a product tour and more info.

OAuth 2.0 for native applications

Following our previous post on OAuth 2.0 for web applications, we are now taking a look at how to use the OAuth 2.0 authentication protocol for native applications, presenting examples for the languages that we are supporting at the moment of writing: Java and Python.
Background

We strongly recommend reading Using OAuth 2.0 to Access Google APIs to learn about the Google implementations of OAuth 2.0 before proceeding with this post.
Java

The Google APIs Client Library for Java features a powerful and easy to use OAuth 2.0 library. We can take advantage of the existing GoogleOAuth2ThreeLeggedFlow helper class to easily perform our authentication flow.

First create an instance of GoogleOAuth2ThreeLeggedFlow, passing the following parameters to the constructor:

  • a key that will be used to associate this flow object with an end user
  • the Client ID for your application
  • the Client Secret for your application
  • the scope you are requesting access to (AdSense in your case)
  • the URI to redirect to
GoogleOAuth2ThreeLeggedFlow authFlow = new GoogleOAuth2ThreeLeggedFlow(
  userId,
  "INSERT_CLIENT_ID_HERE",
  "INSERT_CLIENT_SECRET_HERE",
  "https://www.googleapis.com/auth/adsense",
  "urn:ietf:wg:oauth:2.0:oob");

For native applications, we use a special redirect URI:

"urn:ietf:wg:oauth:2.0:oob"

The “oob” part stands for “out of band” and the rest of the string identifies it as a part of the OAuth 2.0 standard.

When we use this redirect URI, instead of redirecting the user’s browser to a page on our site with an authorization code, Google will display a page and the authorization code or error response in the title of the page. A text field contained in the page will show instructions for the user to copy and paste it into our application.

To start the flow, let’s ask the user to load the authorization URL in their browser:

System.out.println(“Please input authorization code: ”);
Scanner in = new Scanner(System.in);
String authorizationCode = in.nextLine();

The last step is to use the authorization code to obtain an access token.

First you’ll need to initialize a transport for communication with the Authorization server and a factory for handling JSON, as the access token will be returned as a JSON object:

JsonFactory factory = new JacksonFactory();
HttpTransport transport = new NetHttpTransport();
authFlow.setHttpTransport(transport);
authFlow.setJsonFactory(factory);

Now you can finalize the authentication flow by obtaining credentials for your user, and then use those credentials to create the Adsense helper object and then send your signed requests to the API:

Credential credential = authFlow.complete(authorizationCode);
Adsense adsense = new Adsense(transport, credential, factory);
AdClients adClients = adsense.adclients.list().execute();

Python

The home of the Google APIs Client Library for Python is also the home of OAuth2Client, a library designed for connecting to resources protected by OAuth 2.0.

First create an OAuth2WebServerFlow object, passing the following parameters to the constructor:

  • the Client ID for your application
  • the Client Secret for your application
  • the scope you are requesting access to (AdSense in your case)
  • an HTTP User-Agent to identify this application
flow = OAuth2WebServerFlow(
  client_id='INSERT_CLIENT_ID_HERE',
  client_secret='INSERT_CLIENT_SECRET_HERE',
  scope='https://www.googleapis.com/auth/adsense',
  user_agent='your-beautiful-python-app/1.0')

We can perform the authentication calling the ‘run’ function imported from oauth2client.tools, storing the authentication data using a Storage object:

storage = Storage(‘adsense.dat’);
credentials = run(flow, storage);

If the flag ‘auth_local_webserver’ is raised (the default setting), oauth2client.tools will open the authentication URL on a running browser or on the system default browser. After the user performs the authentication, the authorization code will be read from the title of the page shown in the browser. If you don’t want this behaviour, you can disable it like this:

import gflags
gflags.FLAGS.auth_local_webserver = False

In this way we’ll have a flow similar to the one that we have seen in Java: the user will be asked to open the authentication URL in a browser window and then to copy and paste the authorization code back in the application. The only difference is that oauth2client.tools will take care of printing these messages and read the input from the user for us.

The last step is create an httplib2.Http object, authorize it with the previously obtained credentials and then send a request to the API:

http = httplib2.Http()
http = credentials.authorize(http)
service = build(‘adsense’, ‘v1’, http=http)
result = service.adclients().list().execute()

Cool! But I want to know more!

In this post we have seen examples of how to authenticate your native application using the Google implementation of the OAuth 2.0 protocol and the libraries that we are providing to simplify all of the tasks involved.

Now that we know how to perform authentication for both web and native applications, in my next post we are going to see different ways of storing the authentication data.

Bing Maps: “The Hurricane Season”

 

The term ‘hurricane season’ recently brought new meaning to many communities across the U.S. East Coast in the wake of Hurricane Irene.  Being able to see the latest developments and impacted locations online through Bing Maps makes it possible to better anticipate, respond and recover from the destruction of hurricanes.

Around the world, people use Microsoft technology every day to stay in touch during difficult times. Today, we’re calling out a Bing Maps app launched by the Wall Street Journal that tracks hurricanes in the Atlantic Ocean. Tech geek or not, you have to admit this is a useful app, especially now during hurricane season. Let’s take a closer look.

 

The app is an interactive graphic that charts both current hurricanes as they are happening, and chronicles previous hurricanes dating back to 2005. So if you’ve always wanted to be a weatherman, you can bookmark the link and visit it often to see the latest weather patterns – hurricane season or not. The app is easy to use, so no meteorology degree is required.

To watch a current storm’s path, you can follow it from the moment your browser opens to the app. The storms strength is categorized on the right hand side of the screen so you can see the severity of the storm and the route it is predicted to take.  Here, we see an example of a storm pattern that started near the Bahamas as a tropical storm and as it grew stronger it became a Category 5 making its way up through the Gulf of Mexico. As it got closer to the Gulf Coast it became less intense, still remaining a Category 3 and then tapering off back to a tropical storm status.

 

To see a past hurricane, just click on one of the blue lines and it will take you to the storm’s history and the calendar at the top will move to the month it happened.

 

 

 

With Bing Maps, it’s easy to zoom in and out by scrolling your mouse so you can zoom in to see high-levels of detail or zoom out to see the past patterns of multiple hurricanes in the Atlantic.

 

 

For you self-proclaimed geeks, here’s more on how the app was built and all the things it can do:

Bing Maps’ partner, OnTerra built the hurricane tracker working closely with the Wall Street Journal team. It was created using the Bing Maps AJAX7 API, JQuery and JavaScript. It gets data from NOAA which is processed into JSON data files and refreshed every few hours, which includes the hurricane path, predicted path and the cone of uncertainty polygons. The application works great on modern web browsers including iPhone, iPAD, Android and Blackberry devices, unlike Flash and Silverlight applications. The HTML5 support in the AJAX7 API provides solid mobile device integration for interactive mapping apps like the Wall Street Journal Hurricane Tracker.