Why I Prefer Android

Asked of me on Hacker News:

What do you prefer about Android?

I prefer Android because it allows apps to do more things for the user, and allows them to better integrate with the system as a whole.

I can replace the on screen keyboard with one that has a full five-row keyboard for times when I SSH into a machine. On a similar vein, when I SSH into a machine, I can actually leave the SSH session running in the background while I switch to another app, without fearing that the OS is about to kill my SSH app while I’m looking something up or responding to a text message. I can also leave my IRC client running in the background without it constantly needing to reconnect when I switch back to it.

Intents in Android, especially in combination with the global Share mechanism, allow any app to receive arbitrary data from any other app, meaning apps don’t need to know about specific apps or services in order to integrate with them. Clicking on a URL allows you to choose which browser (or set a default) to open the link in, allowing you to use alternate browsers (or alternate email clients, SMS apps, dialers, etc); tapping Share in the browser allows you to send the current URL to any application that can receive a URL, making apps like Instapaper, Pinboard, and 3rd party Twitter clients have the same capabilities as first party applications.

Sideloading apps means I’m not limited to installing programs from the Android Market/Play Store, and can do things like buy apps directly from the Humble Indie Bundle and install them on my own.

Proper background service support, and allowing apps to affect things outside their sandbox, lets me run programs like Locale that can monitor the phone’s status, location, etc, and modify the phone’s settings automatically based on a set of conditions that I’ve pre-arranged. My phone automatically silences itself at night time and while I’m physically at work, turns on my Wifi when I’m at home or work while defaulting it off when I’m out and about, and more.

That’s just some of the reasons I like Android better than iOS.

Locale

Fred Wilson’s recent post on Locale for Android was on Hacker News today, and although I commented there on why I like Locale, I want to expound on that a bit further.

I bought the very first Android phone, the T-Mobile G1, when it was first released over two years ago. Even then, Locale was big news for the platform, having won the very first Android Developer Challenge. I have been using it on all my Android phones since then, and I continue to be impressed by it.

Locale is the killer app for Android. It embodies everything that Android is capable of, and everything that Apple refuses to allow in iOS. My phone can now be smart enough that I don’t have to babysit its settings everywhere I go; it knows when to be discreet and when to be secure. No other mobile OS can do that.

For a quick background, Locale is an application for automating changes to your phone’s settings based on a configurable set of “situations”. You define a set of “defaults”, and then each situation is comprised of a set of “conditions” and “settings”. When a situation’s conditions are met, the associated settings override the defaults; when the conditions are no longer met, Locale returns to the default settings. By combining multiple situations together in a priority list, your phone can make intelligent decisions, and seamlessly switch between multiple situations as they become active or inactive.

But what makes Locale even better is that it was designed from the beginning to be extensible. You can find plugins on the Market that add new conditions and settings. Because of Android’s ability to share data between applications, these plugins can even go so far as to use context from, or modify behavior of, other applications installed on your phone. As an example, the Astrid task manager allows you to attach a location to your tasks, and integrates with Locale as a condition when you reach those locations.

But for a more concrete example of just what’s possible, I’d like to show you what my current Locale conditions and settings are.

  • Defaults: Wifi off, Ringer volume 85%, Vibrate on, Media volume 70%, Password lockscreen on
  • Night (Time 10pm-7am): Ringer off, Vibrate off
  • Work (Location): Wifi on, Ringer off, Vibrate on,
  • Headphones (Headphones connected): Media volume 20%
  • Home (Location): Wifi on, Ringer volume 100%, Password lockscreen off

The Locale plugins that I use to accomplish this:

Color me happy.

Android is Open

I am biased. But hopefully I can still be insightful and argue this point. This was sparked by a thread on Hacker News, in which someone commented:

Android is all but open.

I’m calling this out. Android, as a software project, is completely, 100%, open. It’s released by Google with the Apache license, which is recognized by OSI and the FSF as a Free/Libre, Open Source license. The Android code itself is freely available, freely redistributable, and can be compiled and flashed onto any compatible device.

However, there is a significant portion of the Android ecosystem that is not “open” by the same definitions above:

  • Device drivers for individual phones are open or closed depending on the device and the individual chipsets in question, but that is a moot point in my opinion as there are plenty of people who use Free desktop operating systems with closed “binary” drivers. Therefore I will leave this topic for another discussion.

  • All of the Google-branded applications — including the Market, Gmail, and Maps — are closed-source and must be licensed with Google to be included on a phone. This means that Cyanogen is not allowed to include these apps when he releases his amazing CyanogenMod firmware. Other services that Google then builds on top of these closed applications are also closed by nature, including their proprietary “push” communication model.

For some purists, this is a major problem, and I would generally agree. But unlike Apple and iOS devices, none of these Google-branded apps are “privileged” applications; they don’t get special treatment from Android, and they don’t have access to anything that “normal” applications can’t access through the SDK.

But more importantly, these apps are not Android, and they are not necessary to delivering an Android phone or firmware. Developers can write and release competing or nearly indentical applications that replace these closed system apps, and indeed, there are multiple competing “app stores” for Android, with Amazon rumored to be creating yet another. There are even better alternatives for Chrome to Phone already available. And if you insist on not using — or have a phone without — the Android Market, Android is perfectly capable of “side-loading” software packages, and nobody needs to pay Google for the rights to do so.

What is all this proclaimed openness worth if it still boils down to exploiting security systems if you want to run that system you just modified?

That is the real problem, and in my opinion the blame is firmly with the carriers; not Google, and certainly not Android. I specifically purchased a Nexus One because it supports the ability to flash the phone with unsigned firmware. I can download the Android source code, compile it, and flash that resulting firmware to my phone, without needing to root, exploit, or jailbreak my phone. I could do that with my Openmoko Freerunner, and I can do that with my Nexus One.

If enough people insisted on purchasing phones with this capability, then the carriers and manufacturers would pay attention and deliver. Or perhaps Google should be standing up to carriers and demanding that all Google-branded and licensed Android phones have this capability. But even if they could get away with that demand, they can’t enforce it on all Android devices; the very definition of Free Software allows carriers and manufacturers to take Android and do what they want with it if they don’t like Google’s terms.

Maybe the real lesson is that Free Software is a double-edged sword, and if you want corporations to join in, you have to be willing to play their game too.

Dvorak

(Originally posted by myself on Hacker News)

I’ve been typing with the Dvorak layout for about three years now. I personally can’t fully touch type, and never have been able to, although these days I’m getting pretty close if I stop thinking about it and just start typing. My typing speed has slightly increased, but is more or less limited by the speed at which I can think about what I’m trying to type. The real benefits are in the related experience.

I’ve noticed a dramatic reduction in wrist strain at the end of the day, mainly due to the shorter movements for the majority of keystrokes, as well as the proper alternation between hands. Both are hallmarks of the Dvorak layout’s primary design requirements.

Regarding impact on programming efforts, My biggest complaint is that the brackets are on the number row instead of just above the home row, but when I’m writing Python code, I use them far less, so it’s not much of an issue; when I’m writing PHP, C, or Java code though, it can get a bit annoying, but it’s a good trade-off since the +/= and -/_ keys are now closer at hand.

For my editor, I’ve been using Vim for longer than I’ve been using Dvorak, but I’ve never used the hjkl keys for normal movements; I bought keyboards that specifically have the arrow keys right under the Enter key, so moving to use those is very simple, and allows me to use Vim without having to remap any of the normal movement keys.

In all, I highly recommend the switch, especially for anyone who plans to do a lot of typing in their daily routine. The benefits have far outweighed any of the drawbacks. And purchasing a purpose-built Dvorak keyboard will be one of the best investments you can make. I personally love and highly recommend the TypeMatrix keyboards, not only for their great layout, but because it has a physical toggle switch for moving between Qwerty and Dvorak layouts, which is priceless when you want to be able to play games that aren’t friendly to non-Qwerty layouts.

If you’d like an entertaining way to learn more about the Dvorak layout, DVZine has a very informative comic book about the history and benefits.

The Good King Lisp

From HN:

The Good King Lisp raised his glass and toasted with the Knights of Lambda, “To much recursion!”

On the Inelegance of PHP

As a well-seasoned PHP developer for MantisBT and other projects, but at the same time a seasoned developer in Python, C++, Lua, etc, I found this interesting article on Hacker News, Yet, a short piece on the “history” and development of PHP as a language.

A few choice quotes that I most enjoyed:

I don’t know anyone who programs in PHP and hasn’t … become much more acquainted with the concept of “haystack” and “needle” than any one person should have to in a lifetime.

 

With time, an experienced developer learns that the only reason why any particular functionality is not in PHP is that it’s not there — yet.

 

Invariably, PHP developers who try to settle into a framework have the (often irresistible) urge to simply drop it and write their own, because, you see, there is no framework that does things the way he or she wants — yet.

I really like working on the PHP projects that I’m a part of, but every time I write a Python script to do something, it just reminds me of how unsophisticated PHP really is as a language. Perhaps that’s OK; it certainly hasn’t stopped me… yet.

Break Sites Now to Make Sites Later

On the topic of IE8:

How about rather than asking web designers, server owners and IT staff everywhere to add some hack tag to their code, you force IE8 into compatibility mode unless a designer specifically enables IE8 rendering on their page by adding said tag? That mediates the issue pretty easily.

They [Microsoft] were originally planning to require a special tag to enable standards compliance in IE8, but there was a gigantic backlash from the web development and standards community.

Why? Because then we get nowhere; all the clueless web designers never find out about the special tag to make IE8 comply with internet standards, and continue making web pages for the broken IE rendering model for the next 10 years.

We need to make all those old websites break, because otherwise they’ll never comply with modern standards. We need to have standards based rendering be the default because then the designers that test against IE8 will be making sites that work better with other browsers.

By forcing developers to realize that their websites are non-compliant (either from angry users or specifically forcing quirks mode) and by defaulting to standards-based rendering, we make the web design future a much nicer place to be.

You Can't Judge Your Own Project

On the launch of the excellent Ticketstumbler site:

I don’t think the creator of an interface can ever objectively measure the usability of the interface, no matter how much they use it; they don’t ever have to learn it, because they created it in the first place.

I’m not saying usability is not the core. I’m saying that the creator of the interface is in no position to objective judge the usability because they have an innate knowledge of the system because they designed it and they know exactly how it functions and how it’s supposed to be used. If you want a real measure of usability, you have to get someone who understands the problem domain, but has never before seen your interface, and then objectively determine how easily they can figure out how to perform tasks and get things done. The fact that you, as the designer, already know exactly how the interface is built and operates precludes you from having an objective opinion of how easy the interface is to understand.

Similarly, a painting’s artist cannot objectively determine how beautiful/emotional/successful the work of art is, because he has an innate sense of what it is trying to convey to the viewers. Just because the artist sees the subtle details, nuances, allusions, etc, does not mean that other viewers will be able to glean the same information.

And to drive the nail home a third time, an engineer could not possibly be an objective judge of how easy a car is to operate (usability), because they already know where everything is and how it works. They need to have someone, without previous experience, sit in the seat to realize that putting the cigarette lighter and cup holders inside the center console is a bad idea and not at all intuitive…

Why Do We Like Indirect Governance?

On local government corruption in New York:

Where there is money and people with power corruption is very likely.

What fascinates me, about America specifically, is how ingrained the representative democracy concept is. Direct democracy is this wild and crazy thing that absolutely and directly = Hitler.

There could be an interesting argument why Swiss style direct democracy would not work for a huge country like the US. But what about local government? What about little towns?

It’s fascinating that Americans from a very young age learn that the head of local government is the mayor. What would happen if a little town in nowhere decided to mimic Switzerland in governance and eliminates the middle men? Doom?

As an American, I think the biggest reason that the majority of Americans embrace (worship?) representative democracy is because it frees them from feelings of responsibility in the outcome of the government, and means that much less effort they must contribute back to society. Why learn about all the issues and directly vote for what I want, when I could more easily just elect someone else to do all that hard stuff for me so I can spend more time on the sofa watching the drama of Hollywood retards unfold on high definition TV?

As an added benefit, when my elected representatives then vote the “wrong” way, I certainly can’t blame myself, because A) I’m only one of thousands, or millions, of votes, B) I voted for the other guy, or C) I didn’t vote at all / that’s why I don’t ever vote. It’s the exact same reason that companies pay barrels of money for IT support contracts; it’s less work, and when something goes wrong, the blame always shifts to someone else.

Solution: Nuke it from orbit; it’s the only way to be sure…

Your Freedom is Your Choice

On the Openmoko: … by the fact that Openmoko is a tiny company, they don’t have the purchasing power that Apple has to get newer hardware components at an inexpensive price point, hence the older ARM CPU and TI Calypso GSM chipsets. It’s still plenty peppy enough and has enough RAM that I can run numerous applications at the same time without degrading performance of the entire system.

Certainly it’s not as polished as the iPhone, but for people who actually care about their freedoms, it’s fantastic. Even if for the simple reasons that I can flash my Neo at will, and that I have no limitations from the manufacturer as to what I can do with my phone, or how it can be used, it’s the best smartphone/PDA I have ever purchased or used.

I find it interesting that you’re the most vocal supporter of the Openmoko on this site, and you still don’t use it as your only phone. Hopefully they will work out the kinks eventually, but it is not an option for most of us yet, not even those of us who care about software freedom. If you NEED to have a backup phone, then it is still just an expensive toy.

Correct. But that doesn’t mean that it’s any less important in the mobile ecosystem. It’s the only truly free phone in every sense of the word. You’re free to do anything with the phone, at any time, without the permission of phone manufacturers, or app store reviewers, or fucking NDAs.

The biggest problem with Openmoko is that nobody knows about them, and nobody realizes why they matter. Everybody sees the horrors going on between Apple, the App Store, and developers’ applications being rejected for competing with Apple, and then they complain about it, but that’s just the way it is.

Yet that’s not how it should be, and if everyone could find out about Openmoko, and actually realize and know why their freedoms truly matter, and that Openmoko makes the most freedoms-loving phone on the planet, then I wouldn’t have anything more to talk about.

But we all know that even Openmoko’s unexpectedly high sales amounts for the FreeRunner is still only a drop in the ocean compared to even only the iPhone, and even less compared to the entire smartphone industry. And that’s why it matters to me and others to get the word out, to let people know that there really is another option, one that doesn’t squelch your freedoms, and that if freedom truly matters to you, then you do have a choice.

Freedom is Your Choice. I choose Freedom.

Your Freedom is a Choice

On the new G1 phone using Android:

i need a google account to use gphone; i need itunes to use iphone; i have to buy apps from approved channels.

it favors the vendors apps; no thanks

wake me when i can buy a device that runs apps i choose, connects to the network i want. i realize this is a pipe dream. the wireless world is a world of shit

i might as well look for the smallest flash-based linux notebook possible that runs skype and just hold it up to my ear old-skule style like gordon gecko and that giant cell phone from wall street

I have an Openmoko Neo FreeRunner: it has GPS, accelerometers, WiFi G, high resolution 640x480px touch screen, Micro SD card slot, good quality speakers/headphone jack, and good battery life; it works with any GSM carrier; it can run just about any operating system compiled for its ARM CPU; you can run and compile programs on it in any language supported by GCC or an ARM-compiled interpreter; it can connect to the internet via GPRS, WiFi, or USB with a PC, to update it’s software, install software packages, accept/initiate SSH sessions; it allows software to run that uses any windowing toolkit, including Gtk, Qt, and E.

Neo installed with ASU 2008.9 and custom theme.

It costs $399 direct from Openmoko and is available through multiple worldwide resellers.

I’m not a fan of Openmoko, but you make a good point. There ARE options for people who want them. The cell phone market is more open now than it ever has been in the past.