Just how good is Google Drive’s image recognition?

Of all the exciting things Google announced at the I/O developer conference this week, one of the sleeper hits was Drive for iOS. “Sleeper” might be too strong a word — attach “for iOS” to anything and it’s going to get attention — but it’s hard for any announcement to compete for headlines against Project Glass, the Nexus 7 with Jelly Bean, and skydivers. Part of what caused Drive to turn so many heads during the Day 2 keynote (aside from the iOS association) was its image recognition capabilities.

Drive uses optical character recognition (OCR) to perform certain tricks. This is nothing new for Google — back in 2009 Google Docs could take an image file or a PDF and convert it into a document. It could also change the orientation of one of those files using its ability to recognize characters on the page. These features were brought over to Drive, but so was basic image recognition. It might seem totally sci-fi, but if you upload a picture of a pyramid to Drive, you can search for it and the system will identify it based on what Google knows about pyramids. This feature might seem new, but Google has used image recognition in both Google Goggles and (in a tweaked form) Search by Image.

Google Drive for iOSIt’s not too shocking that Google would bring this feature over to the iOS and Android versions of Drive, but it is extra handy on a platform where you don’t have advanced search tools to sift through your 5GB of data. The bulk of the computing is taking place on the server side so it’s not like your iPad needs to be able to recognize that pyramid, you just need to have an internet connection so that Google can lend some of its search magic to the files you’ve placed on Drive.

I conducted an informal test of Drive’s image recognition capabilities using some resources from around the web, including a couples of documents and then some randomly chosen, generic images. I made sure they were free of any data that might help the search tools identify them (EXIF, file names, etc.) and then uploaded them to Drive. According to Google’s demo I should be able to identify each by a basic description of each of them. Here’s how it went…

  • 2 cat images – Correctly identified 2 out of 2 with the term “cat”
  • dog image – 1 out of 1 with the term “dog”
  • 4 pyramid images – 4 out of 4 with the term “pyramid”; 1 out of 4 with “Giza”
  • Samsung Galaxy Tab image – Did not identify as a “tablet”; did identify as “Samsung”
  • Dell laptop image – Did not identify as “laptop”; did identify as “Dell”
  • hard drive image – Did not identify as “hard drive”; did identify as “drive” and “disk”
  • hamburger image – Identified as “hamburger” but not as more vague terms like “food” or “dinner”
  • JPG of an invoice – Identified as an “invoice” and by the company names used on it
  • 1099 tax form, PDF – Identified by “taxes”, “tax form”, “1099″ and “1099 misc”
  • Failed to identify – Images I took of a refrigerator, graphics card, smartphone, and light bulb

With my limited data set the effectiveness of Google’s image recognition was mixed. It work very well with text in images, well enough with images that are in the Google Images database, and then it totally stumbled with my personal images. I gave the system sufficient time process the data (the better part of an hour) but it just couldn’t figure some out.

Drive

Google Drive: "wtf is that?"

Maybe the image recognition isn’t particularly new for Google but the impressive bit here is that the company was able to cram it into a mobile app, apply it to my personal data set in the cloud, and then have the app communicate with the cloud in a quick manner. Sure, most of the work is done immediately after the file is uploaded, but the recognition abilities and cataloging is nothing short of what we’d expect from Google.

Aside from the OCR abilities and the convenience of using my Google account, Drive for iOS is basically an adequate Dropbox competitor. It’s a smooth experience and with snappy performance on my iPad 3, plus I have the ability to choose exactly which files I want to store offline and which I don’t. The app makes it easy to see who I’ve shared a file with, which is great for people who in groups. Advanced (and nearly hidden) tools include the abilities to share with people in your contacts list and to rename files.

In addition to being an impressive trick, the OCR gives Drive a notable advantage over Dropbox. That service is able to search by filename and it has some cool features, like the ability to email a link, but the search tool can’t even dive into the text of a PDF. And, as we know, Google is only getting smarter while other services struggle to compete against its user base, computing power, and massive Knowledge Graph.

Read on for more of ExtremeTech’s Google I/O 2012 coverage

Felix Paul Kühne: VLC 2.0.2 out now

About a month after passing the 1,000,000,000th download, we released VLC 2.0.2 last nights. It's now available on videolan.org.

It includes the following security content:

  • Fixed Ogg Heap buffer overflow
  • Updated taglib (CVE-2012-2396)

VLC 2.0.2 adds further refinements to the new Mac interface. We improved the video playback experience by enhancing the crop features and restoring the highly desired "go automatically to fullscreen" feature. Additionally, the aspect ratio is respected like in the 1.1.x releases. The Retina Display (HiDPI) on the new MacBook Pro is natively supported, too.

Furthermore, you can drag & drop items between the playlist, services and media library. Growl 1.3 is supported for notifications as well (disabled by default). Playing a video in a window without any further UI elements is supported again, too.

Finally, we removed the font cache. VLC for Mac will never ask you to wait for it, but it will still find all your fonts!

This update also includes video output improvements for a vast number of PowerPC-based Macs equipped with an ATI Radeon 7500, an ATI Radeon 9200 or a NVIDIA GeForceFX 5200 Ultra [1] as well as Intel-based Macs with an Intel GMA 950 [2].

Here's the full list of changes:

  • Enabled drag and drop of playlist items between the temporary playlist and the persistent media library
  • Various video output improvements, notably for crop, zoom, osd and menu support
  • Enabled import of playlist items taken from the service discovery modules to the media library or the temporary playlist
  • Added media key support for keyboards by other manufacturers than Apple. This fix was facilitated through a hardware donation by ZF Friedrichshafen AG manufacturing keyboards under the brand "Cherry".
  • Added HiDPI / Retina Display save UI artwork
  • Restored the preferences' fullscreen options, which allows the user to start videos directly in fullscreen mode
  • Keep Aspect Ratio when resizing is back
  • Added controls to manipulate the Subtitles Duration to the Track Synchronization panel
  • Hidden items in the sidebar are being retained for the next launch now
  • Fixed crash when trying to open an Audio CD by drag & drop
  • Improve reliability when opening DVDs or BDs by drag & drop
  • Fixed a crash when attaching harddrives with multiple partitions while VLC is running
  • Improved OSD rendering in fullscreen mode
  • Improved fullscreen behavior when using a smartphone remote based upon VLC's http interface
  • The selected audio device is retained throughout multiple VLC sessions now
  • Since running the Mac OS X interface as an Extra Interface or Control Interface can lead to undefined results, the respective options will be automatically reset on the first launch, if needed.
    • This fixes issues with unresponsive playback controls and crashes on quit.
  • Updated Growl plugin supporting Growl 1.3.
  • Improved reliablity in detecting VIDEO_TS folders when opened through the "Open Disc" panel.
  • Re-implemented the "Window Decorations" option, which, if disabled, hides all the UI elements from the video output window to give you the cleanest experience possible. 
  • Improved the window title behavior when using the dark interface mode. It correctly responds to right and double-click events now.
  • Miscellaneous minor interface improvements

VLC 2.0.2 includes these cross-platform improvements:

Video Output

  • PCs running Windows XP will use the DirectX mode by default now, like in VLC's 1.1.x release due to a fast number of broken drivers
  • More accurate colorspace conversions for YUV->RGB in OpenGL
  • Misc fixes in the OpenGL module, on all platforms
  • Fixed video output on PowerPC-based Macs equipped with an ATI Radeon 7500, an ATI Radeon 9200 or a NVIDIA GeForceFX 5200 Ultra.[1]
  • Fixed video output of 10bit encoded contents on Intel-based Macs equipped with an Intel GMA 950 chipset running OS X 10.6 or later.[2]

Access

  • Reworked Digital TV module for Windows. DVB-T and DVB-C work again
  • Fixes for RAR compressed files
  • Fixed DirectShow crashes on exit
  • Improved PulseAudio input latency
  • Fixes for HTTP access through a proxy
  • v4l2 webcam outputting H264 can now be used directly (use --v4l2-chroma=h264)
  • Fixed Subtitle auto-detection in subfolders
  • IE http proxy is no longer used by VLC on Windows
  • Accepts more extensions for DVD images
  • Fixed crash in VC1 packetizer

Codecs

  • Fixed crashes in AAC decoder on channels changes, notably in ISDB streams
  • Fixed compilation with multiple FFmpeg and libav versions
  • Fixed G726 support

Demuxers

  • Fixes for MKV segments and MKV title display
  • Fixed some mp4, voc, midi and au crashes
  • Fixed Real .ram and .ra files support
  • Fixed DVB channel file support
  • Fixes for alac, vorbis, DTS, VC-1 and Dirac in mp4

Encoders

  • Fix for MPEG audio encoding. Use Layer2 for the FOURCCs "mp2 " and "mp2a"
  • Fixed JPEG generation when doing snapshots

Audio filters and output

  • Limitation of the Spatializer output volume
  • Fixed DirectSound device selection
  • Correct PulseAudio volume control
  • Fixed Directsound volume initialization
  • Volume level is no longer applied to the file output
  • Fixed sampling rate for the JACK output

Lua Scripts

  • Fixes for stdin/stdout and for different locale issues

Qt interface

  • Fixed preferences for audio devices on Windows
  • Fixed various crashes
  • Fixed multiple issues in the Open Disc dialog
  • Fixed playlist search and selector behavior
  • Miscellaneous fixes in preferences, buttons, EPG, playlist and customize dialog
  • Fixed tags and file names display

Skins2

  • Fixed mousewheel on Windows
  • Fixes for key events and focus loss

Web interface

  • Fixed display of some buttons
  • Fixed listing of files in the Open interface

[1] 1st and 2nd generation iBook G4 (PowerBook6,5), a significant number of G4 and G5-based iMacs (PowerMac6,1, PowerMac6,3, PowerMac8,1), an uncertain number of eMac generations (at least the PowerMac4,4 and the PowerMac6,4), some configurations of the 1st generation PowerMac G5 (PowerMac7,2), a single configuration of the PowerMac G4 Quicksilver (PowerMac3,5), the 1st/2nd generation Mac mini (PowerMac10,1 and PowerMac10,2) and the 2nd generation PowerBook G4 (PowerBook3,4)

[2] 1st and 2nd generation MacBook (MacBook1,1 and MacBook2,1), the Mid and Late 2006 iMacs (iMac4,2 and iMac5,2) and Mac minis sold between February 2006 and March 2009 (Macmini1,1 and Macmini2,1).

Permalink | Leave a comment  »

dtube: Huge app, tweak and theme #giveaway including 100 licenses from some of the top Cydia packages. Check it out: http://t.co/3pTzcaVY

dtube: Huge app, tweak and theme #giveaway including 100 licenses from some of the top Cydia packages. Check it out: http://t.co/3pTzcaVY

ParallelsMac: 37 Years Ago, Steve Jobs & Steve Wozniak Invented #Apple: http://t.co/gg0IuQa0

ParallelsMac: 37 Years Ago, Steve Jobs & Steve Wozniak Invented #Apple: http://t.co/gg0IuQa0

Apple Updates App Store Search Algorithm to Utilize Keywords Once Again



Apple has released a series of updates to its search algorithm in the iOS App Store this past week. Here the company has tweaked how the system weighs keyword and app name metadata to allow for more accurate results. One thing to note here is that the changes in the algorithm could possibly affect app SEO negatively.

Noted by Tomasz Kolinko, developer and co-founder of App Store analysts Appcod.es, the new changes reinstate some of the search functionality lost by last week’s algorithm refresh that relied heavily on app descriptions instead of developer-supplied keyword and title data. He provided

Does any other language other than JavaScript have a difference between brace start locations (same line and next line)?

Answers: 6
Accepted answer: yes

No content.

.TV – Don’t Call It A Comeback, It’s Been Here For Years

Television

I don’t think I’ve done a single post on my blog yet this year about .TV, and honestly, that’s a shame because they have been rocking it, big time. I have been a believer in .TV for years now but the initial premium pricing turned off many investors and end-users, and Internet TV hadn’t really taken off yet.

Now 100% of what we watch at home is through either Roku or Boxee and we haven’t paid a dime to the cable company for over two years now. No commercials, lots of content, and lots of .TV names showing up in the mix.

Roku has something called the “Channel Store” where you can access all of the streaming channels. Of course Netflix, Hulu, and Amazon’s are the ones we use most-frequently, but there are some other great channels that have a good following, and they’re building their brands on .TV.

Channels like Blip.tv, iFood.tv, Recipe.tv and many more are growing and attracting new visitors every day as more and more people ditch the cable companies and go digital.

When we first made the move, many of my friends said, “Well what about sports!?” I am not a huge sports fan but do follow Basketball, I subscribe to NBA League Pass which gives me every game on the planet. If you’re a football fan you’re out of luck but I’ve never been an avid follower of the sport so this isn’t a big deal for me.

As for television shows Hulu gives you just about every show you could want (we don’t watch a ton of TV so it really is more than we would need) and between Netflix and Amazon you can get New Releases and tons of great free movies and TV shows. There are lots of great news channels like WSJ Live and NBCNews.

The real different is life without commercials (except in the case of Hulu) and everything on demand. Honestly the concept of a DVR sounds incredibly old school to me. Why would I want to select what I want to record, make sure I have enough space, etc. when I could just have everything I would ever want to watch. Oh and did I mention my bill went from over $200/month for Cable TV (we have setups in three different rooms) down to $18/month.

My point is, streaming is in, and growing fast, it’s cheaper and the content is better and we probably see less than 10 minutes of commercials a week which is pure heaven. New channels are appearing every week and .TV seems to be a very common choice. Couple this with the fact that Mark Cuban and Ryan Seacrest are launching a new network and building their brand on .TV and you can see while I’m bullish about the space.

So hats off to .TV, there is clearly a growing trend here and I think the one-word .TV space has a ton of potential. Trend domain plays are a risk, but if the trend is growing, there can be some big rewards. While my focus is still .COM I have been buying some one-word .TVs and I don’t think I’ve given .TV it’s moment in the sun which it most certainly deserves after a great 2012.

What do you think? Is .TV going to grow with video streaming or is this another .MOBI in the making? Comment and let your voice be heard!

(Photo Credit | Chart Credit)

PhoneGap 1.9.0 Released!

We have just released PhoneGap 1.9.0! Thanks to everyone who downloaded 1.9.0rc1. This release focuses on bug fixes, the long awaited inclusion of Cordova webview on Android (Cleaver on iOS), and the inclusion of create scripts for Android, iOS and BlackBerry.

Cordova webview (Cleaver on iOS) allows integration of PhoneGap, as a view fragment, into a bigger native application. Stay tuned for a blog post going over Cordova webview in more detail. For now, you can find out how to embed a Cordova webview over at http://docs.phonegap.com.

Note: Some PhoneGap Android plugins might have issues working with this latest version. If you are using plugins, please make sure to do some tests before upgrading.

Curious about our release schedule? Read Brian LeRoux’s blog post, Rolling Releases: How Apache Cordova becomes PhoneGap and Why to get more background.

View the 1.9.0 changes below in the change log:

iOS

  • Fixes CB-915 – Pause/resume events get fired twice
  • Fixes CB-877 – Opening a .doc file under iOS causes the file system API to break (and any other plugins that may use NSMutableArray pop)
  • Fixes CB-864 – Failure in writing a large file blocks Cordova
  • Fixes CB-907 – Wrong URL encoding when downloading/uploading files from/to URLs with Unicode characters in the path
  • Fixes CB-906 – Hardware mute button doesn’t effect Media API playback
  • Fixes CB-879 – Support to set the volume when playing short sounds
  • Enhanced CB-471 – LocalFileSystem.PERSISTENT “do not back up” file attribute iOS. Supports new iOS 5.1 iCloud Backup attribute (the old way is deprecated, and only for iOS 5.0.1)
  • Fixed CB-748 – refactored-UUID is broken and changes over time (changed according to Apple’s guidelines for this)
  • Fixes CB-647 – Prefix/Namespace common native libraries
  • Fixes CB-961 – Can not remove contact property values anymore
  • Fixes CB-977 – MediaFile.getFormatData failing
  • [CB-943] decrease accelerometer interval from 100ms to 40ms
  • [CB-982] add usage help to create script, remove unnecessary parameters from debug project-level script
  • Removing component guide; going into the docs
  • Fixes CB-957 – (iOS) iOS Upgrade Guide Migration
  • Updated CB-957 – Include Xcode 4 requirement
  • Fixes CB-914 – Deactivate CDVLocalStorage (Backup/Restore, safari web preferences update)
  • [CB-914] Added BackupWebStorage setting in cli template
  • Enhanced CB-471 – LocalFileSystem.PERSISTENT “do not back up” file attribute iOS. Supports new iOS 5.1 iCloud Backup attribute (the old way is deprecated, and only for iOS 5.0.1)
  • Fixed CB-748 – refactored-UUID is broken and changes over time (changed according to Apple’s guidelines for this)
  • Fixes CB-647 – Prefix/Namespace common native libraries
  • Fixes CB-942 – iOS failing FileTransfer malformed URL tests
  • Updated CB-957 – Include Xcode 4 requirement
  • Fixes CB-914 – Deactivate CDVLocalStorage (Backup/Restore, safari web preferences update)
  • [CB-765] Header Support iOS FileTransfer upload
  • Removed Upgrade Guide and Cleaver Guide from repo – they are all in http://docs.phonegap.com now
  • [CB-863] Splash screen on iOS not using localized UILaunchImageFile value

Android

  • adding a new create script
  • updating script to cleanup on exit/error
  • testing create2 script
  • updating Windows !@#% build script
  • removing old create and templates
  • renaming create2 and templates2
  • updating templates reference
  • renaming create2
  • updating cordova.js version
  • fixing create script
  • adding tools verification to batch file
  • updating build.xml templates reference
  • checking if project exits
  • updated reference in test
  • deleting old stuff
  • updating test for CB-916
  • adding bash helper scripts
  • updating bash create script and node test
  • adding appinfo
  • updating windows create.js and creating node test
  • adding windows scripts
  • fixing create
  • windows build/debug/launch scripts
  • removing echoes
  • deleting old BOOM
  • setting +x on script files
  • forgot to add +x on BOOM
  • creating project without source
  • updating create script to work from distro and source
  • log was actually doing nothing…fixing it
  • CB-937 fixing debug
  • CB-937 fixing debug for windows
  • Formating and removal of commented code.
  • Add exit message.
  • Update for getActivity().
  • Add comments.
  • Enable onMessage() to return a value.
  • CB-369: Authentication Code doesn’t seem to work. — Verified basic auth works and provided test case.
  • CB-779: Verify that fullscreen and backgroundColor preferences are set properly – This check-in enables fullscreen and adds test for it.
  • Add usage comment.
  • Remove unused imports.
  • CB-800: Fix preferences for the CordovaWebView. – Test case needed to implement CordovaInterface.
  • Optimize loading “about:blank”
  • Need to call pluginManager.onDestroy() to clean up plugins.
  • Backbutton broken by adding new onKeyDown method without calling its super.
  • Fix exception when defaultValue=null.
  • Support showing the app title bar through a preference.
  • CB-481 refactored prompt() call in JS to exec, moved showing of webview out of chrome client and into app plugin (so we can invoke via exec)
  • small tweaks to readme re: testing
  • Merging in use of uri variable between Simon and my changes.
  • Added MediaScanner abilities to camera launcher plugin. Now images saved to SD card should show up in the android gallery app right away
  • Removing images and saving images to jail if SaveToPhotoAlbum is set to true
  • Tacked on file extension to camera file
  • added . in front of the temp files passed into camera app. presumably this hsould stop the gallery app from picking it up
  • Fixed the 0-byte files in gallery. Also fixed exif rewriter for saveToPhotoAlbum:false JPG files. Thanks for your help Simon!
  • Merging in use of uri variable between Simon and my changes.
  • Refactored cleanup in camera code a bit. Removed overrides for Scanner functionality
  • Removed some legacy button code that existed in droidgap + app plugins
  • Removing CordovaWebView Guide; its going into the docs
  • Creating the CordovaWebView, modifying DroidGap to use that
  • Adding the tests from the GitHub Prototype
  • Cleaning out the asssets/www directory. This should house mobile-spec
  • Work on CB-369, Moving Authentication OUT of DroidGap
  • Moving whitelisting into the WebView, still need to read the config in the WebView if required
  • Moving init code into the WebView
  • Partially moved the callback server into the WebView. The WebView MUST own the CordovaWebViewClient and the CordovaWebChromeClient
  • Minor tweaks to DroidGap, allows for the ChromeClient and ViewClient to be overridden
  • Move the callback server into the View, preparing to start CordovaWebView testing
  • Tweaking DroidGap so it compiles into a JAR, starting testing
  • Updating the tests a bit, still not running
  • Fixing the manifest errors
  • Managed to get this building minus Jail Activity, still a long way to go
  • Rolling back half-baked change that broke the code in the branch, we need to rethink the Callback Server
  • Working. Pushing the callback server change again.
  • Massive refactor of CordovaInterface. Deprecation and Exception throwing to notify the user that we’re changing things
  • Updated tweaks to get up and running
  • Removing runnable code for timeout because it’s not thread-safe
  • Adding old code back, we can’t access webViewClient methods without them being on the UI thread. :(
  • Added another runnable, this code is hideously awful
  • Removing Jail functions for now
  • Removing the cordova jar, it shouldn’t be in the repo
  • Adding the CordovaException class
  • Changing viewClient to default visibility
  • Fixed the bug caused when running on Eclipse
  • Minor tweak to the test so it loads the correct HTML
  • Starting to move the history into the CordovaWebView, and getting the WebDriver working again
  • Tweaks to move history over into the WebView
  • Adding screenshot and activity to the test, although Actvity isn’t a standard plugin
  • Moving preferences into CordovaWebView, need to discuss prefs when using CordovaWebView
  • Working on CB-585
  • Adding Apache headers to the new classes
  • Adding Apache headers to the tests on the branch
  • Removing the hacked-up jars that I used to get this to work, since I can’t distribute them
  • Updating the history configuration. We can switch between histories
  • Added loadConfiguration to the standalone WebView
  • Updating the project, removing generated artifacts
  • Moving the Callback Server Start/Stop to the onPageStarted fixed timing errors
  • A quick stab at CB-510
  • Broke the merge, need to add GPSListener.java
  • Adding empty tests. May have to re-think the way we test this method
  • Updating Activities
  • Forgot to recheck Plugin. Adding it back
  • Removing tests that don’t work and modifying CordovaWebView so it works as a stand-alone component again. Mobile-spec currently doesn’t work
  • Setting up a default CordovaWebViewClient and CordovaChromeClient for when we are blowing up via XML layouts
  • Forgot to add the proper constructor. The Clients need to know about their webView.
  • First Draft of how to use CordovaWebView
  • Added JUnit to the README, removed WebDriver for now. Need to figure out distribution.
  • Adding the Cordova Upgrade Guide
  • Removing the classes we agreed were not used
  • Adding tests to the README
  • Two automated tests completed
  • Missed this error in the merge commit
  • Working on tests
  • Weird merge error. Yo dawg, I heard you like catching exceptions, so we put a catch around your catch. FAIL
  • Adding logs
  • CB-582: Automating User WebView/WebViewClient/WebChromeClient tests
  • Adding the WebDriver Tests
  • Fixing up tests
  • This is a poorly written test. What was I thinking?
  • Fixing up tests
  • This is a poorly written test. What was I thinking?
  • I think we need to rethink how we automate this test
  • Removed merge because I missed the preference set
  • Adding more undocumented features for app title bar and full-screen
  • Default should be false not true
  • One more time, getting the title default right
  • Starting the Buttons Branch
  • Tweaks to CordovaWebView to support other keys
  • Fixing work-around to work for both ? and #
  • Adding updated JS
  • Since we moved binding of buttons into a view, let’s remove it from the Interface
  • Weird merge error didn’t account for isBackButtonBound
  • Re-adding getContext because yo dawg, I heard you like contexts in your contexts
  • Forgot to add it renderscript.opt.level to the project. This will fix ant issues
  • Add Android 4.0 workaround for links with params
  • Fix imports for changes in 45680a5
  • add volumeupbutton/volumedownbutton events
  • prevent volumeup/down default behaviour
  • listening to volume events now override default behaviour
  • upgrade to latest cordova.android.js
  • updated NOTICE file
  • CB-878: Splash screen in Android fullscreen mode showing not correct
  • Adding getContext, startActivity to CordovaInterface
  • Revert: Adding getContext, startActivity to CordovaInterface
  • Removed need for getFormatData/Image to load image into memory
  • CB-920: FileTransfer UTF-8 bug
  • Fixing merge error in FileUtils.notifyDelete
  • CB-883: SplashScreen without show() method, only hide()
  • CB-910: Camera out of memory error
  • CB-919: Camera Plugin returned with empty error message
  • CB-978: FileTransfer.upload from a directory with a space fails
  • Decode image from File instead of content resolver
  • Cache bust returned Image URI if saveToPhotoAlbum is false
  • Switch getPicture from Gallery to use file instead of content resolver
  • Using a better scaling algorithm to resize the image
  • Fix double image problem on Samsung phones
  • Rotate image if taken in portrait mode
  • Reset orientation exif information when photo is rotated
  • Wire rotation fix to correctOrientation parameter
  • Only load Exif information if necessary
  • Tagging to 1.9.0

BlackBerry

  • [CB-980] Quote key values in JSON returned from native.
  • [CB-981] Return FILE_NOT_FOUND error for bad file name.
  • [CB-606] Added create script for unix and windows
  • removed node modules from version control, whoops
  • added debug and emulate commands. log not possible on BB/PB
  • Removed unused scripts/cruft.
  • Added debug flag parameter being passed to widget packager inside ./debug script
  • CB-965: fixed create script to work with distribution and src
  • [CB-752] Implement saveToPhotoAlbum CameraOption on bb device
  • Forgot to update version file
  • [CB-962] Fix for debug script not working on bb
  • [CB-962] Making build script work again with ant build and load-device commands on bb
  • Made sure cordova scripts are executable when copied over
  • Re-fixed cordova scripts being able to execute in bb
  • Added in captureAudio for playbook
  • Fixed up whitespace/tab issue
  • Adding in microphone permission/feature to config
  • [CB-973] Fixed up tab issue
  • [CB-962] – File permission stuff got overwritten in last few commits – bringing it back
  • [CB-965] – windows version of create script failing
  • [CB-965] – needed flag for destination directory
  • 1.9.0

Windows Phone

  • Capture parses EXIF data and rotates image based on EXIF_Orientation
  • camera API rotates image based on EXIF data
  • removed Debug logging, cleanup
  • added license header
  • fixed exiflib link
  • added image capture view – wip
  • CB-668 UploadOptions does not serialize Params
  • update version numbers
  • updated js file
  • update example
  • updated test proj
  • CB-953 mouse events fired twice
  • js+path updates for 1.9.0 release
  • rebuilt for 1.9.0 release
  • Minor improvement for CB-953 mouse events fired twice
  • [CB-795] Added HTTP status code to WP7 FileTransferError interface. Catches 404 on download.
  • CB-570 resize image if user defined width & height provided
  • code formatting ResizePhoto method name for code consistency
  • Created VS Package for automatically deploying the project template into visual studio

If you wish to follow or join in the development of this project, send an email to callback-dev-subscribe@incubator.apache.org to subscribe to the developer mailing list. All bugs can be found on our issue tracker.

Looking for older versions of PhoneGap?
Download PhoneGap 1.8.1 and earlier from Github.

SteveStreza: As Twitter closes off their APIs, Google’s finally opening theirs for Google+. http://t.co/cXHOxQno

SteveStreza: As Twitter closes off their APIs, Google's finally opening theirs for Google+. http://t.co/cXHOxQno

The Skinny on IE’s Update Policy

Every month, WebKit, Firefox and Opera are shipping incredible features; IE10 is also going to settle up and even out those HTML5 Test scores (plus some features they may debut, like Grid Layout!). But while these features are becoming available in some browsers, most of us can't use them because we have a sizable audience who have been left behind on old browsers. A while ago I made a big fuss about IE's lack of solid upgrade path and how it meant we'd end up with 10 major versions of IE in the wild. But luckily, things took a turn for the better when Microsoft announced a new autoupdate policy for IE.

I wanted to take a moment to explain what this IE update policy means for us web developers.

The big change is how IE now interacts with Windows Update: Before you had to opt-in to have "Recommended" updates installed automatically. It's likely few folks did. Now, IE upgrades are shipping as "Important" and this class of updates are defaulted to install automatically. A user can still opt-out and immediately after the announcement of this feature they also published details on how enterprises can opt-out. But still, this is a good move, it helps.

The policy manifests as:

  1. Windows XP holdouts on IE6 or IE7 get the boot up to IE8
  2. Windows Vista and 7 users still on IE7 or even on Windows 8 get shunted up to IE9
  3. IE10 only works on Win7+, and while no policy has been published for Win7 users, it's likely any IE8/IE9 users will be moved up to IE10.

A very smart policy call was that this update policy also includes all of China, which is important because most of their Windows installs are not genuine. Microsoft decided they should get the IE bump anyway, which is great because China has been dominated by IE6 and IE8 for ages.

This update procedure was scheduled to start in Australia and Brazil in January 2012. If we look at what happened in Brazil, we have a good shift of users but it's flattened out with a nontrivial amount of left behind users: (see the two blue lines in the chart below)

(Source: StatCounter Global Stats – Browser Version (Partially Combined) Market Share)

Australia has a similar swap of users from IE8 to IE9 but IE8 still remains steady above 10% overall share there.

Microsoft is in a tough spot in that they have enterprise customers who have developed their intranet applications in an extremely poor manner and they break outside of old browsers. But we're going to need some more pushes from them and us, the developer community, to get in a better state. We want to develop for the web platform of now, not the platform of four years ago.


Hopefully this clarifies a bit about the mechanics of the update procedure. Please do correct me if anything is wrong and I'll update the post.

2012.07.02: To see this update policy in better context it's probably useful to Read this Developer's Guide to browser adoption rates and check the charts from Ars Technica below.