Showing posts with label Google. Show all posts
Showing posts with label Google. Show all posts

Sunday, 13 October 2013

So Singletons are bad, then what?


So Singletons are bad, then what?

This was taken from an article/question posted on stackexchange, Just got schooled this explaintion couldnt have put it in a better form if i tried!
Thanks to Aaronaught 
It's important to distinguish here between single instances and the Singleton design pattern.
Single instances are simply a reality. Most apps are only designed to work with one configuration at a time, one UI at a time, one file system at a time, and so on. If there's a lot of state or data to be maintained, then certainly you would want to have just one instance and keep it alive as long as possible.
The Singleton design pattern is a very specific type of single instance, specifically one that is:
  • Accessible via a global, static instance field;
  • Created either on program initialization or upon first access;
  • No public constructor (cannot instantiate directly);
  • Never explicitly freed (implicitly freed on program termination).
It is because of this specific design choice that the pattern introduces several potential long-term problems:
  • Inability to use abstract or interface classes;
  • Inability to subclass;
  • High coupling across the application (difficult to modify);
  • Difficult to test (can't fake/mock in unit tests);
  • Difficult to parallelize in the case of mutable state (requires extensive locking);
  • and so on.
None of these symptoms are actually endemic to single instances, just the Singleton pattern.
What can you do instead? Simply don't use the Singleton pattern.
Quoting from the question:
The idea was to have this one place in the app which keeps the data stored and synced, and then any new screens that are opened can just query most of what they need from there, without making repetitive requests for various supporting data from the server. Constantly requesting to the server would take too much bandwidth - and I'm talking thousands of dollars extra Internet bills per week, so that was unacceptable.
This concept has a name, as you sort of hint at but sound uncertain of. It's called a cache. If you want to get fancy you can call it an "offline cache" or just an offline copy of remote data.
A cache does not need to be a singleton. It may need to be a single instance if you want to avoid fetching the same data for multiple cache instances; but that does not mean you actually have to expose everything to everyone.
The first thing I'd do is separate out the different functional areas of the cache into separate interfaces. For example, let's say you were making the world's worst YouTube clone based on Microsoft Access:
                          MSAccessCache
                                ▲
                                |
              +-----------------+-----------------+
              |                 |                 |
         IMediaCache      IProfileCache      IPageCache
              |                 |                 |
              |                 |                 |
          VideoPage       MyAccountPage     MostPopularPage
Here you have several interfaces describing the specific types of data a particular class might need access to - media, user profiles, and static pages (like the front page). All of that is implemented by one mega-cache, but you design your individual classes to accept the interfaces instead, so they don't care what kind of an instance they have. You initialize the physical instance once, when your program starts, and then just start passing around the instances (cast to a particular interface type) via constructors and public properties.
This is called Dependency Injection, by the way; you don't need to use Spring or any special IoC container, just so long as your general class design accepts its dependencies from the caller instead of instantiating them on its own or referencing global state.
Why should you use the interface-based design? Three reasons:
  1. It makes the code easier to read; you can clearly understand from the interfaces exactly what data the dependent classes depend on.
  2. If and when you realize that Microsoft Access wasn't the best choice for a data back-end, you can replace it with something better - let's say SQL Server.
  3. If and when you realize that SQL Server isn't the best choice for media specifically, you can break up your implementation without affecting any other part of the system. That is where the real power of abstraction comes in.
If you want to take it one step further then you can use an IoC container (DI framework) like Spring (Java) or Unity (.NET). Almost every DI framework will do its own lifetime management and specifically allow you to define a particular service as a single instance (often calling it "singleton", but that's only for familiarity). Basically these frameworks save you most of the monkey work of manually passing around instances, but they are not strictly necessary. You do not need any special tools in order to implement this design.
For the sake of completeness, I should point out that the design above is really not ideal either. When you are dealing with a cache (as you are), you should actually have an entirely separate layer. In other words, a design like this one:
                                                        +--IMediaRepository
                                                        |
                          Cache (Generic)---------------+--IProfileRepository
                                ▲                       |
                                |                       +--IPageRepository
              +-----------------+-----------------+
              |                 |                 |
         IMediaCache      IProfileCache      IPageCache
              |                 |                 |
              |                 |                 |
          VideoPage       MyAccountPage     MostPopularPage
The benefit of this is that you never even need to break up your Cache instance if you decide to refactor; you can change how Media is stored simply by feeding it an alternate implementation ofIMediaRepository. If you think about how this fits together, you will see that it still only ever creates one physical instance of a cache, so you never need to be fetching the same data twice.
None of this is to say that every single piece of software in the world needs to be architected to these exacting standards of high cohesion and loose coupling; it depends on the size and scope of the project, your team, your budget, deadlines, etc. But if you're asking what the best design is (to use in place of a singleton), then this is it.
P.S. As others have stated, it's probably not the best idea for the dependent classes to be aware that they are using a cache - that is an implementation detail they simply should never care about. That being said, the overall architecture would still look very similar to what's pictured above, you just wouldn't refer to the individual interfaces as Caches. Instead you'd name them Services or something similar.

Thursday, 26 July 2012

Android NFC 'hacking' is ingenious, but not yet dangerous


Android Central


The Black Hat Conference takes place in Las Vegas this week, where hackers, security experts and representatives from major companies meet to discuss all things relating to information security. If you're following the news out of the conference today, you may have come across reports of a new security vulnerability in Android (and NFC-enabled Meego phones) that could allow a malicious NFC (near-field communication) tag to beam malware directly onto your phone. Sounds terrifying, right? Now hackers can take over your smartphone without you even doing anything. But as is always the case with these kinds of security issues, it's not as simple as it seems, and this NFC 'hack,' sexy and technically impressive as it is, isn't really anything particularly scary to regular smartphone users.
Read on to find out why.
First off, we should quickly explain what NFC actually is. It stands for near-field communication, and it's a a very short-range wireless communication technology designed for sending small amounts of data instantly over very short distances. On smartphones, this can be used to transfer things like URLs from one handset to another, or alternatively to scan NFC "tags," which can themselves contain small quantities of data that the phone can then act upon. It can also be used for facilitate payments, for example via Google Wallet. (Read more in our Android A-Z)
Multiple sources report that security researcher Charlie Miller demonstrated a variety of techniques for hacking into the Nexus S (on Gingerbread), the Galaxy Nexus (on Ice Cream Sandwich) and the Meego-powered Nokia N9 at Black Hat this week. Many of the scariest exploits were found on the N9, but we'll focus on Android here, 'cause that's what we do. (And that's also what many of today's headlines focus on.)
Starting at the high end, on the Galaxy Nexus Miller demonstrated that NFC-enabled Android phones running Ice Cream Sandwich or later use Android Beam, a feature which some (but not all) them have turned on by default. Amongst other things, Beam lets users load URLs from another phone or NFC tag directly into the device's web browser. That means it's possible, with a malicious NFC tag, to send an unassuming user directly to a malicious web page. For that to work, though, the tag needs to be within the very short range at which NFC radios can operate -- basically all but touching the back of the device. Android Beam opens tagged URLs automatically without any prompt, by design. It's a valid security concern, but not an exploit in the traditional sense, as in order to do anything you need to find a vulnerability in the user's web browser of choice.
If you're using the built-in Android browser on Android 4.0.1, then such a bug exists, and that could allow a specially designed web page to run code on the device. Again, an entirely valid security issue, but using NFC as a delivery method for this kind of exploit is far from practical. (Not to mention Android 4.0.1 was only released on the Galaxy Nexus, a phone which has since been updated to Android 4.0.4 or 4.1.1, depending on your carrier.)
Miller also demonstrated how he could exploit bugs in Android 2.3's memory management to cause a Gingerbread device with NFC support to execute code using a malicious tag. That potentially gives an attacker the ability to take complete control of the device using only an NFC tag, but we should point out a few factors that make this a less serious issue that you might think. Sure, Android 2.3 Gingerbread is still the most-used version of Android, and many new Android devices ship with NFC support, but there's little cross-over between the two. The Nexus S was the first Android handset to support NFC, but that's since been updated to Jelly Bean. Other NFC-supporting devices may remain on 2.3, but most of the mainstream Android phones with NFC run at least version 4.0.3, which isn't vulnerable to the exploits used in this demo. In fact, we can't think of a single Gingerbread phone with NFC that's yet to be updated to at least Android 4.0.3.
So vulnerabilities certainly exist, but right now the only serious ones are limited to a very small subset of the Android population with NFC, and a very specific OS version. What's more, the phone needs to be powered on, the NFC radio needs to be enabled, and the user needs to be distracted enough so as not to notice the tell-tale NFC tone or vibration.
Ultimately, any exploit involving physical access to the device being hacked is going to be of limited use to the real bad guys. Taking control of a smartphone over NFC in the real world is going to be dangerous and impractical, even after the methods shown at the Black Hat Conference are publicized. If I have access to your phone, powered on, for an extended period, with malicious intent, NFC isn't going to be my first port of call. The exploits demonstrated by Charlie Miller this week are ingenious and cool to read about, but it's easy to exaggerate the real danger posed by them, especially when mainstream reporting of these hacks is light on important technical details.
Bottom line -- if you enjoy using NFC on your Android phone from time to time, you're safe to continue doing just that.

Tuesday, 17 July 2012

5 things Marissa Mayer will change about Yahoo


5 things Marissa Mayer will change about Yahoo

Google's main products were driven by data, not art. Can the new Yahoo boss adapt that mindset from Google?


Google and Yahoo started as similar companies. Both were search giants, but at different points in their respective histories they diverged. The subsequent tale of the tape shows that Google's direction -- guided by strong leaders -- was the more successful path.
Here's what we can expect Mayer will bring to Yahoo.
The engineering culture that Mayer helped build at Google. Google has historically been run with an engineering mindset. The best Google services are fast, functional, and continually tested and improved as time goes on. Mayer herself was proud of talking about how even a tiny change in the position of an item on the Google Search page would be tested and evaluated over and over again. The company's main products were driven by data, not art.
Over time this has changed (see the Nexus Q, for example), but for its main products, Google is still driven by the numbers.
Mayer will likely bring this same rigor to Yahoo's products, in particular, the home page, Yahoo's portal to the Web. Her expertise in relentlessly tweaking products to extract maximum utility out of them could also extend to Yahoo Mail, still one of the largest e-mail providers. Yahoo applies a lot of data tricks in delivering its home page to its vast audience, but the key will be extracting more dollar value from the billions of Yahoo pages viewed. 
Mayer has not run an entire company, though, so it may be a challenge for her to adjust the culture of Yahoo.
And it is the organizational culture at Yahoo that needs to most help. "Yahoo takes too long to make decisions," says Salim Ismael, who ran the Brickhouse project at Yahoo -- a group set up outside the standard reporting structure at the company so it could innovate more quickly. "On the Internet you need speed, and you need to take risk. Yahoo accidentally adopted a matrix organization structure that's antithetical to both," he says.
Yahoo could also use some of Google's ruthlessness in killing projects. The company gleefully reported on its 2012 spring cleaning project (which, for all we know, is ongoing). In a large, interlinked structure, which Yahoo apparently has, it's difficult to make the right decisions about killing products.
Google, though, maintains an optimism about its direction even as it chops down its underperformers. That's due, in part, to its capability to learn from its mistakes and not punish people involved in them. Even though Google killed social experiments like Buzz and Wave, it forged ahead with Google+. Even though its structured knowledge product Knol died, Google Search inherited a lot from the project.
And this points to another big strength of Google: the company is very good at working on long-term visions. Social has become key to the company's growth despite early failures. Google is also becoming a media company, throwing big money into hardware initiatives like Google TV and the Nexus Q media streamer, products that, in their initial incarnations, are not going to be remembered as successes. Google is also pushing to take a few market share points from Apple and Amazon in the media sales market.
It's much easier for a company that has resources like Google to play the long game, but a new CEO with Mayer's background and energy should be able to divert some funds to play some long-range bets and recruit some top talent back into the Yahoo fold.
Finally, there's the engineering-friendly culture of experimentation, or to put it in more shareholder-friendly terms, an R&D focus. Google is doing original research in areas that appear to be orthogonal to its mission -- self-driving cars, augmented-reality eyeglasses, and even energy. But these projects can pay off in numerous ways and their value can (but not always) feed back to the mainline business. On the other hand, Yahoo doesn't have the resources today to focus much beyond fixing what is broken at the company.
Can a media company be successfully run as an engineering company? Google, it needs to be said, actually is a media operation. It makes its money selling media advertising, and gathers 72 hours a minute of video on YouTube.  Can the same discipline work at Yahoo? There's probably no one better to give it a shot than Marissa Mayer.




Thursday, 28 June 2012

Fight!: Android 4.1 Jelly Bean Vs iOS 6 Vs Windows Phone 8


Fight!: Android 4.1 Jelly Bean Vs iOS 6 Vs Windows Phone 8

A few weeks ago, we compared the feature sets of iOS 6 and Android Ice Cream Sandwich to see how they stacked up. But then Google and Microsoft went and dropped all sorts of new features in their new Android Jelly Bean and Windows Phone 8 operating systems. That means it’s time to re-examine the relative merits of each once again. Let the battle begin!
For the record, this is not a review. There will be no review until we have spent some quality time with the final versions of iOS 6, Android 4.1 and Windows Phone 8. This is a look at how these three stack up on paper in 12 key categories.

Apps

iOS:650,000 apps. 225,000 for iPad. Still tops as far as smartphone platforms go.
Android: Android is currently at 450,000 apps for Android. Most apps will run on tablets, but the number of tablet-optimised offerings is significantly lower than iOS (Google won’t give an official number, but a quick run through Google Play makes the situation abundantly clear).
Windows Phone: Windows Phone currently has 100,000 apps available for download, which is considerably less than the other two. And since there’s no Windows 8 tablet yet, well…

Maps

iOS: Apple now has a maps service of its very own, following in the footsteps of Google and Microsoft. Not only does it deliver traffic updates, points of interest and turn-by-turn navigation (which is integrated well throughout iOS 6), there are 3D maps that both look cool and might be helpful when lost in the middle of a crowded metropolis. But the lack of public transport directions hurts, even if they’re offering a third-party API solution. And iPhone users reared on Street View might sorely miss it; Apple hasn’t presented an equivalent.
Android: Google Maps in Jelly Bean will likely be unchanged from what Google showed off a few weeks ago at its dedicated maps event: 3D buildings, offline caching and Yelp integration will all be added to supplement the top notch combination of search, turn-by-turn navigation and Street View. Plus, the search giant is going crazy with mapping the insides of notable locales — Compass Mode employs a phone’s gyroscope to give you 360-degree interior views — so expect to see more of that over time.
Windows Phone: Windows Phone 7 was a showcase for Microsoft’s Bing maps, but the mobile navigation turf will belong to Nokia on Windows Phone 8. That means terrific NAVTEQ maps, turn-by-turn navigation, 3D buildings, offline caching and dynamic routing for public transit — all of which is good news. There aren’t many bells and whistles here though, for better or worse.

Browser Sync

iOS: iCloud Tabs are new in iOS 6 and unify your browsing across all of your iOS and OS X devices. It’s not a full cloud browser that offers the same tab view across all devices, but rather a list of tabs tucked behind an icon or sub-menu, along with your bookmarks.
Android: The Chrome Beta on Android offers tab syncing with your desktop as well, but throws in bookmark and search syncing as well. And since there are more desktop Chrome users in the world than any other browser, a lot of people will be taking advantage of this feature.
Windows Phone: Browser sync is conspicuously absent from Windows Phone, which is odd considering it will run the same version of Internet Explorer that Windows 8 will in the Windows RT environment. Then again, with Windows 8 and Windows Phone 8 both not expected until later in the year, there’s a lot of time for Microsoft to make this work. Fingers crossed.

Facebook Integration

iOS: Facebook is integrated throughout iOS 6, which means you can update your status and upload images from various apps (not to mention Notification Center), sync contacts, and have your Facebook events coordinate with your iOS Calendar. Plus, a third-party API is on the way, so all apps can integrate Facebook into their wares.
Android: Android has always been good for Facebook sharing, and there’s no reason for that to change with Jelly Bean. You can share and upload from pretty much anywhere in the OS and inside most Android apps. Plus, you can pull Facebook data for your contacts already stored on your phone, or pull all your Facebook friends into your contacts.
Windows Phone: Facebook integration has always been one of Windows Phone’s selling points, as the platform seamlessly integrates features like status updates, images, Contacts, Chat and Events into Microsoft’s own sections (People, Messaging, Calendar, etc). It’s as well-designed as Facebook integration can get.

Voice Commands

iOS: Siri wasn’t amazing in iOS 5, but it worked OK. In addition to being able to dictate texts and emails, schedule calendar events and set timers, Siri in iOS 6 has much more promise, at least in the US, given its ability to pull data from even more sources (sports scores, movie times, dinner reservations), in more useful ways. Plus, Siri will be able to interface with car audio and navigation systems once iOS 6 goes live later this year.
Android: With Jelly Bean, speech recognition is about to get a big update. Google has always allowed for voice search and dictation across the entire OS, but now it taps into Knowledge Graph and a built-in speech recogniser that will be installed on future devices. Not only should Android voice recognition improve dramatically, but it will recognise voice input even while offline. Like Siri, it can also spit back Wolfram-like semantic search results (with or without your voice).
Windows Phone: Windows Phone also has voice commands, allowing you to place calls, send texts, search the web and launch an app. It may not have the depth of Google’s and Apple’s efforts, but it’s there.

Mobile Payments

iOS: Surprise! The iPhone doesn’t have NFC, which means Apple doesn’t have much to offer in terms of mobile payments. But Passbook is Apple’s way in.When it’s up and running, it will collect tickets, rewards cards, debit/credit cards and more into a single app that relies on both GPS and QR codes to work. It can also deliver updates and notifications for the items you have stored in Passbook (flight updates, expiring deals, etc). It’s clearly been designed with NFC payments in mind; we just have to wait a few months until Apple makes it official and to see if any of it will come to Australia.
Android: For the time being, Google Wallet — which includes mobile payments, deals/rewards/offers and more for users in the States — remains unchanged. But it is a huge question mark for Google. US mobile carrier Sprint is still the only official Google Wallet mobile partner (and even they’re rumoured to be parting ways), MasterCard is the only card company on board, and the number of devices NFC is available on is limited. Google announced new NFC-based features today unrelated to payments; hopefully it’s enough to entice hardware partners to include the tech in future devices.
Windows Phone: With the arrival of Windows Phone comes Wallet, which is Microsoft’s full-fledged attempt at, well, a digital wallet. You’ll be able to store credit/debit cards and rewards/loyalty cards, not to mention the ability to access deals. But what might set Windows Phone apart from Android and iOS is that it will make use of secure NFC elements stored on SIM cards, which will allow for more flexibility — and security — when it comes to the preferred standards of card companies and mobile carriers (Google Wallet has hit a wall because of resistance to its own built-in secure elements). Save for Apple strong-arming everyone into playing by its rules, this may be the most frictionless way for NFC-based payment technologies to succeed.

Video Chat

iOS: Apple has FaceTime, which can place calls over 3G or Wi-Fi and works fairly well. But its also a pretty insular app that only works with other Apple devices.
Android: Android’s Gmail/Google Talk-based video chat system is a bit more universal, considering you can video chat with anybody who has Gmail on a Mac, PC or Android phone. And yes, you can chat over 3G or Wi-Fi. But Google’s ace in the hole, surprisingly enough, might just be its Google+ app, which features Hangout support and will be available for both Android and, some day soon, iOS.
Windows Phone: Microsoft’s secret voice chat weapon is Skype, which is arguably the most universal standard of them all. There are already proper Skype apps for Macs, PCs, iOS and Android — and Microsoft owns all of them.

Call Features

iOS: iOS 6 lets you decline a call with a canned SMS response, filter out calls annoying contacts, and includes a Do Not Disturb toggle, all of which will prove useful for power users.
Android: Android lets you compose a series of texts you can use as quick auto-replies when declining a call, and also lets you filter out calls from specific people, but it lacks the ability to enter into a Do Not Disturb mode.
Windows Phone: This is another weak point in Windows Phone, as there are no pre-composed texts you can fire off to people you don’t want to talk to, nor is there any sort of Do Not Disturb functionality. But there are advanced filtering and call block options for those people you’re trying to avoid.

Messaging

iOS: iMessage is a beta feature with a lot of promise, given its ability to trade messages between phones, tablets and laptops. But it’s hardly seamless, it’s barely reliable, and it’s not exactly intuitive. There’s currently no real way to link a phone number and iCloud account of a contact and have texts and iMessages appear in a single thread. Nor do messages always arrive to all your connected devices. And there’s no way to instant message with non-Apple users. We have yet to see the final implementation of this cross-device integration, which probably won’t be settled until iOS 6 is officially out, but there’s definitely some work to be done in this regard.
Android: With webOS all but dead, Android has the best native instant messaging platform hands down. Sure it doesn’t integrate with AIM or Facebook, but AIM has a foot in the grave anyways, and Gchat is every bit as ubiquitous as Facebook Chat. When you’re logged in to Gchat, messages always arrive on all connected devices reliably and quickly. That’s more than can be said for iMessages. Plus, Google Voice is well integrated throughout Android, which means text messages sent from your phone or laptop stay perfectly synced.
Windows Phone: The messaging effort on Windows Phone is solid and well considered, allowing you to seamlessly send texts, Facebook messages, and Skype messages to a given contact from a single window. No, there’s no Gchat or AIM, but that’s not particularly shocking, given the trend towards walled ecosystems with each platform.

Smarter Icons

iOS: When it comes to dynamic app icons, Apple is sorely lacking. Sure it has badges that let you know when there are new messages, emails or notifications, but they don’t really tell you anything else. One of the things we’d hoped for was that Apple would smarten up its app icons. Let them change to display information. Unfortunately, Apple is still stuck in the past on this one.
Android: Android doesn’t really do much with app icons either, and that doesn’t change with Jelly Bean. But since the App drawer is pushed into the secondary layer of Android, it doesn’t matter. Android employs widgets to take on the task of real-time updates, which allows for a fair amount of customisation when it comes to getting your mail/weather/calendar updates from your home screen in a quick manner. They can sometimes be messy and unruly, but when properly implemented, are quite useful.
Windows Phone: Windows Phone 8′s Live Tiles are the cream of the crop amongst smartphones. Not only can they display notifications and vital info (such as texts, mail, weather calendar events), but they arrange into a neatly organised grid that is now bolstered by the ability to break tiles into three different sizes depending on how you want info displayed. Microsoft is way ahead of everyone else in this regard.

Media Streaming

iOS: iOS 6 has AirPlay, which has been one of the easier, more intuitive implementations of media streaming we’ve seen so far. You can push music from your computer or iOS device to AirPlay-approved speakers, AirPort Express routers, and Apple TV (which also accepts video and iOS device mirroring, and soon OS X mirroring). And if you’re streaming from a computer, you can push to multiple AirPlay devices. But like some of Apple’s other features (FaceTime, iMessage), AirPlay doesn’t really extend past the Apple product ecosystem. That said, you’ll find AirPlay baked into more and more devices with each passing month.
Android With the introduction of the $US300 Nexus Q, Google just provided its own streaming standard for Android-based devices, but it’s only for the US market right now. The hubs will be able to take audio and video streams, and spit them out to televisions and speakers (powered by the Nexus Q’s 25W amplifier). Plus, you can link hubs together for more robust multi-zone streaming than what Apple offers. Think of it as Sonos for Android, complete with the modest sticker shock.
Windows Phone Windows Phone will have SmartGlass to serve as its media streaming portal to the Xbox. Though built directly on top of DLNA streaming standards, the app simplfies and visualises the process of pushing content back and forth between the Xbox and Windows 8/Windows Phone 8 devices. Plus, SmartGlass can beam supplementary content to your device while watching a TV show, such as Game of Thrones. Toss in the possibilities for gaming and support for Windows, Android and iOs, and you have yourself a very intriguing streaming platform.


- Gizmodo

Wednesday, 27 June 2012

Google's Nexus 7 tablet outed before I/O


Well, it looks like the leaks were accurate. This morning, just an hour ahead of Google I/O's initial keynote, Android Police got its hands on what appears to be a press shot of Mountain View's 7-inch tablet, aptly named the Nexus 7.




Android 4.1 Jelly Bean: 5 Features We Want in Google’s New OS



When Android 4.0, Ice Cream Sandwich, arrived on the Samsung Galaxy Nexus smartphone last November, it marked the most radical change Google’s hugely popular mobile operating system had undergone since its debut.
It was also the best thing to happen to Android so far. It was the first version of Android designed for both phones and tablets, and it was the first version of Android that was truly beautiful to look at and fun to use.
But of course, Android can be improved. On Wednesday, Google is expected to kick off its Google I/O developer conference by introducing Android 4.1, dubbed Jelly Bean. Unlike version 4.0, which featured a top-to-bottom redesign of Android, version 4.1 is expected to bring a number of incremental changes. Rumor has it the new OS could even debut on a Google-branded, Asus-built Nexus tablet, and it could land on Google’s developer-friendly Samsung Galaxy Nexus phone as well.
Whenever it arrives, we’re expecting new features and bold moves. Here are a few things we’d like to see in Jelly Bean.
Ditch Browser, Go With Chrome
Android has two web browsers, both built by Google. The boringly named Browser is the default entry point to the web installed on every Android phone going back to the first version. The thoroughly modern Chrome, however, has only been available as a download from the Google Play store since its debut on Android in February, and it only works on ICS devices. Chrome is still a “beta” product — Google is killing bugs and polishing off the app. But Chrome’s time has come.
When the world thinks of Google’s web browser, it thinks of Chrome. Android’s Browser app is an afterthought. Chrome is the better browser in absolutely every way: user interface, tab handling, speed and support for web standards are superior, and Chrome can sync your bookmarks and browsing history between all your Chrome installations across all devices and platforms. Not to mention that Google is extending the Chrome brand beyond just the browser, with the Chrome OS and devices like the Chromebook and Chromebox. It’s time to simplify things, Google — go with Chrome and ditch Browser.
Unify Messaging
Another example of multiple apps that do the same thing: messaging.
Google could ease the lives of Android users by delivering one unified messaging app. Currently, Google offers a stand-alone text messaging app (Messaging), a separate app for chatting over Google Talk (Talk) and yet another for sending notes to Google+ contacts (Messenger). Three apps that all do the same thing — that’s more complicated than it needs to be.
It’s time to take a page from Apple’s playbook and offer just one messaging app. All three services could be rolled into just one app — call it Messages or Messenger or Messaging or Talk or anything you’d like. When a user messages a phone number, it can be sent via text message. When a user messages an e-mail address, as they do via Talk or a contact on Google+, that message can be sent using web data as opposed to a standard text message through the wireless carrier.
The app could even recognize when a user is sending a message to another Android phone and send that message using web data as well — just like Apple’s iMessage app in iOS. One app for all three services. This is the way to go.
Program Your Own Gestures
We’d like to see Android give users the ability to create their own gestures, specific swipe combinations for opening up apps or forcing their devices to perform specific actions. Google already has a patent for this, and no other platform — iOS, Windows Phone or the different flavors of BlackBerry — currently offers this feature.
If you’ve ever used Android’s gesture-unlock feature, you already have an idea of how this might work. Essentially, your phone would record a specific swipe or gesture that’s unique, and launch an app or action of your choice whenever you perform that gesture. Apple already has a number of multitouch gestures, such as the five-finger pinch-to-close gesture found on the iPad. But so far, Android is largely devoid of this sort of thing. The ability to program your own gestures would bring a level of personalization to Android that’s unmatched. To make things easy, Google can throw in a couple multitouch gestures of their own for those who don’t want to customize their devices, but still want a shortcut to popular apps.
Add More Built-In Apps
Ice Cream Sandwich has no built-in apps for audio and voice recording, to-dos and reminders, or weather. Other operating systems — namely iOS — do. So this update seems like a no-brainer. Integrating with Google Drive for saving audio files, or re-purposing Google Calendar’s Tasks to handle to-dos and reminders are easy wins. As for weather, Google’s desktop search engine delivers forecasts from the Weather Channel, Weather Underground and AccuWeather. It’d be nice to see these three options show up on the ground floor of Android as well. If Google had to go with one, we’d like to see it pick Weather Underground, which offers crowdsourced weather reports down to the neighborhood in many cities.
Do Not Disturb
Apple introduced a “Do Not Disturb” feature for iOS 6 at its Worldwide Developer Conference just two weeks ago. Android should match it.
OK, so it’s a bit lame to see operating systems ripping off their rivals off — iOS’s Notification Center if a notable offender — but a good idea is a good idea. And Do Not Disturb is brilliant.
You walk around with your phone in your pocket (or very close by) all day. When you get home, you’ve still got your phone on you, and you might have a tablet kicking around, as well. Having the ability to take a break from text messages, alerts, e-mails and phone calls would be welcome. Of course, like the iOS version, Android’s Do Not Disturb should still allow you to get all of these messages and notifications, only later, when you want them. But during the Do Not Disturb period of your choosing, your gadget should remain silent with out a ring or vibrate to bug you.
Exceptions are a must, too. This way, select friends, family and even bosses can reach you if you decide. Or, if someone calls multiple times — maybe you can decide what the threshold is — the call or message will go through, alerting you that this time, it’s urgent and your attention is needed.