Saturday 24 March 2012

Google Currents is hot off the press

 
We strive to give you beautiful and simple ways to experience all the content the web has to offer, such as sharing photos on Google+, watching YouTube videos and discovering books, movies and music from Android Market. Today we’re expanding our content offering with the introduction of Google Currents, a new application for Android devices, iPads and iPhones that lets you explore online magazines and other content with the swipe of a finger.
We’ve worked with more than 150 publishing partners to offer full-length articles from more than 180 editions including CNET, AllThingsD, Forbes, Saveur, PBS, Huffington Post, Fast Company and more. Content is optimized for smartphones and tablets, allowing you to intuitively navigate between words, pictures and video on large and small screens alike, even if you’re offline. To get started, simply download the app and choose the publications you want to subscribe to for free. You can also add RSS, video and photo feeds, public Google+ streams and Google Reader subscriptions you’re already following. In addition to consuming your favorite media, you can also use the trending tab to discover related content that matches your tastes. Alongside Google Currents, we’re also launching a self-service platform that gives publishers the flexibility to design, brand and customize their web content. For example, if you’re a small regional news outlet, a non-profit organization without access to a mobile development team, or a national TV network with web content, you can effortlessly create hands-on digital publications for Google Currents.
 
 
Great content needs a great audience, which is why Google Currents is integrated with Google+ so users can share articles or videos they’ve enjoyed with their circles. Publishers can also associate their account with Google Analytics in order to increase their awareness of consumers’ content preferences, device use and geographic distribution. Google Currents is now available for download in Android Market and the Apple App Store for US users. Whether you’re a reader or a publisher, we hope that Google Currents helps you easily experience the best content on the web. Try it here now and stay tuned for more to come.

Parsing mailboxes using Python

  Google Apps domain administrators can use the Email Audit API to download mailbox accounts for audit purposes in accordance with the Customer Agreement. To improve the security of the data retrieved, the service creates a PGP-encrypted copy of the mailbox which can only be decrypted by providing the corresponding RSA key. When decrypted, the exported mailbox will be in mbox format, a standard file format used to represent collections of email messages. The mbox format is supported by many email clients, including Mozilla Thunderbird and Eudora. If you don’t want to install a specific email client to check the content of exported mailboxes, or if you are interested in automating this process and integrating it with your business logic, you can also programmatically access mbox files. You could fairly easily write a parser for the simple, text-based mbox format. However, some programming languages have native mbox support or libraries which provide a higher-level interface. For example, Python has a module called mailbox that exposes such functionality, and parsing a mailbox with it only takes a few lines of code:
import mailbox

def print_payload(message):
  # if the message is multipart, its payload is a list of messages
  if message.is_multipart():
    for part in message.get_payload(): 
      print_payload(part)
  else:
    print message.get_payload(decode=True)

mbox = mailbox.mbox('export.mbox')
for message in mbox:
  print message['subject']
  print_payload(message)

Monday 19 March 2012

Apple's Map Data is Missing Large Features

  Taking a deeper look at Apple’s map tiles reveals much about their source. Here in Tempe, large sections of freeways built in the late 90s are missing. Take a look at Loop 101 which has been around for over a decade. On Apple’s new maps it is missing: Apple Tempe Map Clearly Google has the road: Google Tempe Map I’m guessing that Apple used older free map data in many places, this might be something like TIGER 1990 I suppose. It isn’t just this freeway, most of the Phoenix area is missing large sections of development. For showing the location of photos these map errors aren’t an issue at all, but if we are ever going to navigate, Apple has a ton of work cut out for them. I’ve you’d like to browse the Apple Map tiles yourself, give this website a try: http://www.refnum.com/tmp/apple.html In looking at the data closer, at least here in the Phoenix area, I’m sure this is TIGER data. Compare the Apple tiles with OSM.  

Sunday 11 March 2012

Google AdMob Ads Within A UITableView

  We previously talked about docking AdMob ads to the bottom or top of a UITableView. In response to that post, we’ve had a lot of developers asking us about embedding AdMob ads within the UITableView cells, so we wanted to share how this can be best achieved. Challenge Placing ads within a Table View in iOS as list items can bring up a number of issues:
  • Inflated impression numbers because tables in iOS refresh when the user scrolls.
  • The one-to-one mapping between data in the Table View and the application’s model will usually be lost.
    Choosing A Solution Table Views in iOS are populated by implementing the tableView:cellForRowAtIndexPath: method. Cell objects are often reused so that new ones aren’t instantiated each time the Table View is refreshed (by a scroll for example). There are two ways that ads can be implemented within Table View cells:
  1. Only use one GADBannerView throughout the table. This would mean that the same ad is displayed in different cells in the table (preferred).
  2. Leverage dequeueReusableCellWithIdentifier: so that GADBannerViews are created only when new cells are created.
Using one GADBannerView throughout the table does decrease ad diversity but generally increases the CTR for the ads that are shown because the user will more likely see the ads that are displayed. The example below will show how to implement this approach as it is the better practice. Solution - Single GADBannerView Method For the purposes of this example, let’s assume that every 10th element in the list is going to be an ad. This means tableView:cellForRowAtIndexPath: will be set up with a conditional that modifies the placement of the GADBannerView for every tenth cell:
- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  int row = [indexPath row];

  // Assume that kFrequencyAdsInCells is 10 so every 10th row is an ad
  // Don't want first item to be an ad so use 10-1=9 instead of 0
  if ((row % kFrequencyAdsInCells) == (kFrequencyAdsInCells)) {
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    //Need to create a new cell object
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
                                       reuseIdentifier:CellIdentifier]
                autorelease];
    }
    // If bannerView_ has a superview, then it has been added to a cell
    if (!bannerView_.superview) {
      // First ad request made, make the ad request and add it to this cell
      [self requestAd];     
    }
    // The banner will be removed from the other cell and put into here
    [cell.contentView addSubview:bannerView_];

}
…
Since ads are being inserted into the Table View now, any previous mapping to data in the model will be lost. Some quick math is necessary here to figure out how the rows in the Table View line up.
  // Complete in cellForRowAtIndexPath: if not ad

  // Make sure we get all of the items from our model
  row = row - floor((float)row/kFrequencyAdsInCells);

  cell.textLabel.text = [dataController_ objectInListAtIndex:row];
The methods tableView:NumberOfRowsInSection: and tableView:heightForRowAtIndexPath: will need to be modified as well. The method tableView:NumberOfRowsInSection: would now return the number of elements (including ads in that number) and tableView:heightForRowAtIndexPath: would return the height of an ad for every tenth cell, respectively.

Wednesday 7 March 2012

The new local search experience across your devices

 
How often are you doing a Google search from your computer to find information about a place before going there? Now, next time you go to Google.com on your Android phone or iPhone, information about that place will be conveniently available under the new “Recent” icon. Calling, getting directions or seeing details about the places you just searched for is now only one tap away.
We provide this new convenience feature for users who have Web History enabled and are logged into Google when doing their search. Start by searching for a place on your PC or other devices, then login to Google.com’s mobile homepage and check the Recent icon. Information about previously searched places will be available under the Recent icon for about a day.
The new “Recent” icon shows information about places you have recently searched for on any of your devices. Try swiping to the right to see more icons for other categories of places. (Cross posted on the Inside Search Blog)

Monday 5 March 2012

Излезе BGmaps for Android - beta | Mapsys.info

Излезе BGmaps for Android - beta | Mapsys.info:

'via Blog this'

The Web Audio API, multiplayer and live in WebGL

The Web Audio API, currently available in Chrome, provides a considerable amount of aural power to developers interested in integrating audio into their apps and games. Low latency audio playback, audio generation and realtime effects are available with a sensible API in Chrome stable. We worked with gskinner.com to develop Technitone, a web audio experience that lets you join other players to plot tones on a grid, construct melodies and modify the output with a robust toolset of effects.
technitone logo
Click on over and poke around.
  • Your tone samples can come from your own recordings, or any of the available samples.
  • The left side Tools panel offers realtime audio filters, like echo reverb and pitch shift.
  • We keep you connected to other players in realtime using WebSockets and Node.js.
  • You can drop into solo mode or invite your friends to join you in a session.
  • Get inspired by others’ audio creations in the gallery.
If you’re interested in the techniques and software behind the project, take a look at the case study with plenty of sample code and demos on HTML5 Rocks: http://www.html5rocks.com/en/tutorials/casestudies/technitone/

Google Developers House at SXSW

This year at SXSW our developer team is putting together an action-packed two days of lightning talks, code labs, developer hangouts, a LEGO Mindstorm hackathon, a mixology event, and fun surprises. Our Google Developers House (#googlesxsw) will be open on March 10th - 11th and is part of the Google Village at SXSW, which is free to all conference attendees. Come hang out with Google Developer Advocates, Engineers, Product Managers, and other Googlers from across the company. Come for major hacking or just to chill at the Google TV lounge or roast s'mores by the GTUG firepit. If you can’t make it, don’t worry. Our partners at NewTek will be live streaming our lightning talks and the LEGO Mindstorm Rumble on our YouTube channel.
SXSW Google Village logo
Here are a few of the activities you can look forward to at our Google Developers House at SXSW: Lightning talks From 11am to 2pm on March 10th we’ll be serving up lunch and fun, demo-loaded, 25-minute lightning talks to learn more about what you can build and design with the latest Google developer products. Check out the schedule to see which talks you won’t want to miss. Code labs Following the lightning talks on March 10th, from 3pm to 6pm we are holding interactive programming classes. Choose a code lab, roll up your sleeves, and get waist-deep in code. Learn how to build Google+ hangout apps, upgrade your Android app for tablets, or incorporate high-quality YouTube video playback in your product. Both Google+ and Android code labs are on a first come, first serve basis, but due to space constraints please fill in this form if you’d like to attend the YouTube code lab. Mixology event co-hosted by Startup Weekend Love science and cocktails? We do too. That’s why we’re hosting an event combining the artistry of master mixologists shaken with the science behind the craft. Be guided through various techniques, tricks and tastes. This event is co-hosted by Startup Weekend and will take place from 6pm to 8pm on March 10th. Google Developers LEGO Mindstorm hackathon The Google Developers LEGO Mindstorm Hackathon returns to SXSW on March 11th in even more epic proportions. Spend the day with a team building LEGO race bots controlled by Android leading up to the ultimate rumble that evening. Developer Hangouts In Real Life Need to debug your code? Wondering about the latest SDK release? Sign up for 15 minutes of one-on-one time on March 11th with product experts from the Google Developer Relations teams. Come armed with your code snippets, questions, curiosity, and hang out with the Googlers who know the products best.

Share This Post