Where & how do you consume content on the web these days? I find that increasingly, I get to the content without ever going to the website of origin.
For instance, on my iPhone I read pretty much everything via Flipboard. On Android, I’m still struggling to find a good Flipboard replacement and shuttle between Pulse, Google Currents and recently, Feedly. In either case, I rarely ever go to the actual website.
Most of the “news” — that is, when I’m in “skim mode” — comes from social media, mostly G+ and a tiny bit from Twitter.
I remember the days (several years ago) when Techcrunch changing it’s site layout used to be a news in itself. Now I can’t remember the last time I visited Techcrunch (well, that could be partially attributed to the content quality…)
My point is, in all of the above cases, the app or service presents the content in an origin-agnostic manner. When you read something on Flipboard, it’s presented to be consumable via the Flipboard interface (in most cases), and not meant to preserve the look and feel of the origin website.
So, is website design becoming irrelevant? Especially for content-heavy sites?
(The Oatmeal is an exception — Matthew forces you to visit the website, and it’s always worth it)
I had been meaning to try out an Android device for a while now and I finally got myself a Galaxy Nexus this past Tuesday. Here are some thoughts on my experience thus far.
- Google Integration: Galaxy Nexus is a great phone, no doubt. But make no mistakes — you won’t get the full experience if you’re not using Google’s services (gmail, calendar etc). If you already entrenched in the Google ecosystem (as I am), you’ll love it! As soon as I turned the phone on, it asked me for my Google credentials and within a few minutes I had my email, calendar, contacts, photos, bookmarks and music available on the phone. It was like magic! The support for multiple Google accounts is also fantastic; so if you’re using Google Apps at your workplace (as we are), rejoice!
- Hardware: This phone is FAST. The display looks great (I’m not quite sure how to compare it with the Retina displays on iPhone 4S, but I won’t be surprised if the Retina display comes off as better). The phone is also surprisingly thin and light.
- Android: The Google apps on Android are so much better than their iOS counterparts, especially Gmail, Maps, Google+ and Google Talk. Some services (like Google Music) don’t have apps on iOS (yet).
- Power Users: Geeks and data nerds will LOVE this phone. Signal strength graphs? Check. Breakdown of data and battery usage by apps? Check. Fine-grained control over how much cellular data apps can use? Check. Aggressively reap processes as soon as user exits an app? Check.
- No Cables: Unlike iOS devices, the Galaxy Nexus doesn’t depend on any iTunes like software running on a computer to get app updates or synchronize music. Everything synchronizes over the air (you can restrict syncs to wi-fi only). iOS5 has a similar feature but still needs iTunes running and accessible within your network AND requires the devices to be connected to a power source (which typically is also the computer, so …)
- Google Voice: Unlike on iOS, Google Voice can truly take over the phone on Galaxy Nexus. You can finally use Google Voice how it was meant to be used — let it control all incoming/outgoing calls, voicemail and text messages.
- Lacks Polish: For all the great improvements made in Android 4.0 (Ice Cream Sandwich), the Galaxy Nexus is still not nearly as polished as the latest iPhones. iOS reigns king when it comes to attention to detail and making sure all aspects of the system fit well together. Here are a few examples. When I first turned on the phone, the home screen was part empty, part full of ugly “widgets” (I still don’t have a good understanding of widgets on Android). There is a separate area for apps, so when you install something, it won’t appear on any of your home screens. The notification bar is nice, but I find the notification badges on iOS a lot more intuitive. Some of Google’s own apps (notably Google Listen for podcasts and Google Currents for news) are just half-baked and buggy products.
- Confusing: A common converse for a product that power users like is that it can easily overwhelm average consumers. There are just too many knobs and controls, some system-wide, some app-specific. It’s a phone for which I sometimes wish I had a user manual. Here are a few examples. Do you know how to take a screenshot on the Galaxy Nexus? Or how to quickly put the phone in silent mode? Or exactly what does “background data restriction” mean — and if it does mean what I think it does, why does the phone have a persistent warning in the notification area as if this is a real problem?
- Size: Size does matter and this phone is BIG to hold. The larger display is sure nice, but I can’t operate this phone with one hand. At all. This is particularly problematic if you need to go to the next song while you are riding your bike, or even just answer a call. Want to write a text with one hand (maybe you have a drink in the other)? Forget it. It doesn’t help that the phone is hard to hold and slips easily — I highly recommend getting some kind of a case/cover that provides a better grip.
- Verizon only: Galaxy Nexus is only available on Verizon as of today. I’m sure somewhere down the road it will be available via AT&T and other providers but I won’t hold my breath (it took iPhone several years to be available on Verizon). In the meantime, if you want a Galaxy Nexus for a GSM network, just buy an unlocked version from Amazon.
- Ecosystem: One of the biggest problems with Galaxy Nexus (as I imagine with other Android devices) is the ecosystem. Several key apps are not available in the Android Market yet (Flipboard, Instagram to name two). The app-ecosystem itself is quite fragment with Amazon and others wanting to get their share of the pie. The accessories ecosystem is even worse. Just try searching for a case for Galaxy Nexus. In comparison, the iPhone/iPad ecosystem is significantly richer.
Over the past few years, Google has open sourced several projects that provide some commonly used building blocks in any large software project. Some of them I was aware of since when they were launched (like protobufs), while others I discovered only recently. I couldn’t find any location where all the projects were listed together and combing through Google Code looking for them was painful, so I’m putting together a list myself. Hope some of you find it useful.
- protobufs: Platform agnostic messages. Critical for any distributed system. Note that protobufs only provide message serialization/deserialization (for various languages). An important missing piece is an RPC framework built on top of them. There are several projects attempting to build one using protobufs, but none of them are robust or mature enough for production use.
- style guide: The importance of a style guide is probably understated. It is not about what is the “right” style — it is about consistency. While people may have different opinions, if everyone follows the same style, the code becomes much more readable and maintainable. Google maintains style guides for C++ and Python.
- config flags: Another important building block for all command line programs.
- logging: Self-evident. Google’s logging library supports various log levels and other useful macros.
- core dumper: A very nifty library — it allows you to dump core from within a running application. Extremely useful for debugging production systems.
- perftools: An extremely useful library for measuring and monitoring performance of programs. By simply linking against perftools, your application gets a much better malloc, heap checking, visual CPU profile of various routines (via graphviz), visualization of memory usage etc.
- googlemock: A framework to quickly build mock objects — useful for testing.
- googletest: Google’s C++ unit testing framework, built on top of xUnit. Integrates well with googlemock.
Of course, this is not an exhaustive list. There are numerous other open source projects from Google, some of them probably much more bigger and visible than the ones listed above — such as Wave, Go, GWT etc. If there’s a project that is a software building block that I missed out, do chime in the comments below.
When Gmail first introduced the ability to import Contacts, I prompty exported my addressbook from KAddressbook. And then I mostly forgot about it, until recently. In the meantime, Google happily kept adding “suggested” contacts to my addressbook.
I decided to revisit my Google Contacts after reading some blog posts about new functionality. Sure enough, Contacts now even has its own URL (google.com/contacts). I figured this was a good time to clean out the contact and start from scratch with a clean list not polluted by the automatic suggested contacts. So I went ahead and deleted all the contacts and re-imported them from my desktop address book.
Surprisingly, there are weird interactions between my Google Contacts, and my Google Talk buddy list. A lot of people on my buddy list silently disappeared, without any kind of message or confirmation from either GMail, Talk or Contacts. And since then, my attempts to add back all the deleted buddies has failed miserably. Every time I add someone to my list, they show up just fine, but if I log out and log back in, they are usually not there.
What is even worse, this behavior is non-determinstic. Some additions persist across multiple sessions, while others are more ephemeral. I still don’t know exactly what the interaction between these three properties is, but it is very confusing. Google should clarify this more — what exactly is the impact of modifying my Contacts on things like Google Talk etc?