Openness has little to do with it

[Cross posted from my newer blog dgoemans.wordpress.com]

Recently there's been a lot of talk about piracy on Android. This came after Madfinger Games dropped Dead Trigger's Android price to $0 citing piracy as the reason. A day or two after, a developer by the name of Matt Gemmell wrote a post criticizing Android for how open it is and how its openness drives piracy. Along with that came some bad reporting, implying that Matt Gemmell was a developer for Madfinger Games. In my opinion, openness has little to do with it and there are some things that need to be cleared up here.

Piracy happens on iOS

There seems to be a lot of misinformation about Android piracy. It happens, and I don't doubt that piracy rates on Android are much higher than on iOS, but that doesn't mean that iOS is invulnerable. The developer of FingerKicks, a popular iOS game, had a pretty horrible experience too. "FingerKicks has sold only 1163 legitimate copies but there are at least 15,950 pirated copies being played on a regular basis on Apple’s Game Center" [link]. That's about the same figure we heard from the Dead Trigger devs. All you need is a jailbroken iPhone, and jailbreaking an iPhone is easier than installing a custom ROM on my Nexus S - the device for OS hackers.
Then there was the story recently about a Russian hacker who managed to redirect iOS in-app purchases through his own server. Apparently this didn't even require a jailbroken iOS device, and it was very simple to setup. The Next Web reported that "30,000+ in-app purchases have been made through Borodin’s service" [link].
iOS is not free of this, and despite being a closed system, piracy is still a big deal.

Users who paid that much money for a phone don't need to pirate.

Ye I said it. The iPhone is a luxury product. As is the Samsung Galaxy SIII. People who paid upward of $500 cash or $150 on contract for a phone are less likely to have an issue paying $1 for an app. Apple's business model is, to a large extent, one of vendor lock in, so most users are used to paying extra money for Apple services and products. Sure, they make high quality, attractive looking products, but those come at a premium price. I sure wouldn't go and sully my beautiful top of the range smart phone with pirated products, potentially containing malware. We also shouldn't forget that while Apple's iPhone 4S costs $199 on contract, Samsung's Galaxy Y costs $159 on prepaid. Android has a much wider range of users, from the ones who can afford apps to show off how rich they are, to tech savvy teens who don't have access to their parent's credit cards...

Google's market still requires a credit card in most countries.

iTunes has considerably better payment options. Until recently Google Play lacked paid market support for most countries. There are many cases where people pirate, not because they don't want to pay, but because they don't have a legal way of getting the app ( or music or movies or TV show ). This phenomenon is relatively common. For example, Game of Thrones was one of the most watched TV shows around the world this past year, especially in countries where it wasn't being broadcast. While Google Play might have a paid market in the Netherlands, it doesn't have payment options. The Netherlands is one of those odd countries where people generally don't have credit cards. I know many people with Android phones who don't have paid access to the Play store. I see iTunes vouchers in my local super market, but never Google Play vouchers. Google need to work at this.

Google is doing something.

Although OS updates are slow on Android ( this deserves another post lamenting device manufacturers ), Android 4.1 automatically encrypts all applications and generates a per device key for each application. Google realise that piracy is easy on Android, so they're trying things to make it more difficult. It may not be enough, and I still think they should focus more on increasing payment options globally, but it's a step forward.

Freemium generates more money on all mobile platforms.

Free to play and Freemium games generate more money on average on mobile platforms. Developing mobile games with a standard cash-on-sale business model is no longer advised by many analysts. Nicholas Lovell has publish much about this, and in my own experience in the mobile games industry, I agree with him. Going free isn't automatically bad. Freemium works around piracy for the most part, and generates more revenue than paid apps. It's the way forward and I respect Madfinger for trying it in an industry of peer pressure not to. Hopefully they'll see the benefits of Freemium and build their next games around it.

Open has little to do with it

I see many issues here, but openness is not one of them. Openness means that it's easier for the 1% of technical users to install custom operating systems and hack their phones. That 1% is not the 90% that Madfinger points out. Openness just gives users choice of where to get their apps from ( legally ) and what apps they use for every function on their device. Openness gives developers aren't locked into an OS and a programming language. Openness is what allows device manufacturers to develop phones with hardware keyboards, massive screens and styli. Openness is what allows for $150 Android devices, which you can easily give your kids so they can use WhatsApp.

Payment options and the fact that we're comparing different socio-economic groups are two of the major monetization influencing differences between the platforms. iOS isn't some sacred perfect platform free of piracy, and it's closed nature may mean that there are more security vulnerabilities, like the in-app purchase one, that we don't even know about. Neither platform is perfect, and much work is going into improving both.


A week in Ubuntu: The good, the bad and the ugly

[This is cross-posted from my new, more general blog at WordPress]

I used to be a Linux user, all the time. Then the mass exodus to Ubuntu and Gnome started happening. And Windows 7, which was a very solid OS. As a KDE user, feeling sidelined at the lack of deep OS integration that Gnome was getting in Ubuntu, I was at a crossroads. I tried to love Ubuntu, but never could. Ubuntu always disliked something of my hardware - which openSUSE didn't seem to mind. Kubuntu never felt well put together, not like Ubuntu. So I left it behind, bought a great notebook with Windows 7 pre-installed, and stuck to that.. for 3 years. Over a week ago, I decided to give Ubuntu another shot. Here's how that went.

The Good
Some things about the OS are great. Ubuntu has come a long way, as has Linux, and desktop Linux may still have a bright future, especially with Steam on the way.
Installation of Ubuntu is amazing. It's easier than any other OS I've tried. This has always been the case. Good on Canonical knowing that if it wasn't this easy, people wouldn't even try.
The OS is fast, bootup is quick, everything is responsive. The experience feels very optimized. There wasn't a point where I thought, damn this might lock up, or that I might be taxing the system by opening Inkscape, Gimp and Spotify at the same time.
Unity desktop is stable, and does exactly what it should. All of the demos, with the HUD and launcher are exactly as expected. This is something I could really get used to, and hope to see all desktop environments going this way. I know Windows 8 does something similar, but without the HUD for alt+key combinations - something that's really awesome.
Gnome 3 is actually a really nice desktop environment. I've heard so much hate about it, and although I can see why, I don't agree. It's quick, stable, and customizable. The extensions are ridiculously easy to install, and the only thing I couldn't find is a button taking me to the extensions site. The extension installer even worked out of the box in Chromium.
This deserves its own point, although this aplies to Linux in general. I could change the desktop. This is something I still love about Linux, and it'll always have a place in my heart. Even if Unity itself isn't customizable, I don't have to use it. I could install Gnome, XFCE, KDE, LXDE, or even - something that I still have a soft spot for - Enlightenment.
Apps on Linux are just getting better. Geany is great for editing PHP and Python. Eclipse always felt more native on Linux than on Windows. Spotify ( since I have a premium account ) worked like a charm. I even managed to develop a Spotify extension using only the Linux version. The games selection in the Software Center is looking much better too, with some top premium games. And with Steam and Unity 3D ( the engine ) support coming, that will only get better.
My laptop is a Dell XPS 17, with an Optimus chipset. Something that's been in the media lately for NVidia's lack of official Linux support. It turns out, there's a project called bumblebee, which works surprisingly well. Once I followed instructions, things were working great. The little 3D sample app, GLXSpheres, went from 1,6 fps - using the intel card - to about 180 fps - using the 555M my laptop packs. I tried a few 3D games, without a problem. I even played some levels of Swords and Soldiers, a port of the Xbox/PS3/Steam version. This is where Linux shines, if NVidia won't support it officially, someone will find a way.

The Bad
Before installing bumblebee, Ubuntu decided to use Unity 2D instead of the full blown default 3D experience. It was still really quick, but it had some quirks that made me install Gnome 3. It was only after I installed Gnome 3, I realised that my 3D drivers weren't active, because I kept booting into Gnome Classic. This may have sullied my Unity experience - which it did to some extent - so I tried full blown Unity again. I still went back to Gnome 3.
Unity in general hasn't won me over. I dislike single menu bar and the side dock. I've written about this before. Basically, the dock becomes annoying for me to use if there are more apps on there than it is high. I also find global menu bars annoying - this argument is roughly how I feel about it. I generally dislike the way OS X deals with window management, and since they're adopting OS X style standards, I dislike that. Sure, it's  an opinion, and some people might like it, but I don't and if Ubuntu is going the way of the Mac, that will make sure I never use Unity as a default desktop - which thankfully in Linux you can.
Gnome 3 is pretty good, but I'm disappointed by the lack of a default window list/manager as quick as that in other desktops. I installed the Window List extension, which has worked around the lack of space on the bar. That said, this extension works well, but not something I'd recommend for the beginners.
I was pretty disappointed to find Gimp 2.6 in the repository. One of the reasons I wanted to use Linux was for this. It's a shame since 2.8 is now stable for a few months already and I'd have expected it to be up streamed into the repo.

The Ugly
Something that really got me angry was the default notifications in Ubuntu. I had forgotten about this from my previous attempts at learning to use Unity, but it actually makes me lose my patience. I use my laptop - which is my main computer - for several things. It's my primary development environment, my internet browser, and my primary means of chatting. The fact that you can't click on the notifications means that for me to respond to chat messages, I have to either multitask ( 2 clicks ) or go to an annoying menu at the top of the screen and select the chat that the notification came from ( 2 clicks ). It even goes to the extent of blurring the notification when you mouse over it, almost taunting the user, "I know you want to click on this, but you can't". That actually made me find and install an alternate notification system, which integrated so poorly with Unity that I installed Gnome 3 instead. It turns out that this notification system is like this by design. That fact annoyed me even more. Every OSes notifications are becoming more functional, I only hope Canonical wake up to this soon.
Something more directly related to Empathy - the chat client - was that every time I woke up my laptop, I had to redo my 2 step verification on my Google account. That meant, logging into my account in the browser, regenerating a new per app password and entering it into the client. As a default chat client, this is very annoying. Linux users normally have higher security than other OS users, so the fact that this bug wasn't fixed before release is amazing. I found a bug report for it over a year old. It seems like a minor thing, but having to come home from work every day to re-enter a password behind 2 walls of authentication is not acceptable usability. Sure there were work-arounds, and other apps like Pidgin, but I was tired of fighting the OS defaults.
I have a Logitech Performance MX mouse. I paid good money for it to do some serious gaming. It's a great wireless mouse with a darkfield laser - so I can use it on reflective surfaces. I probably won't replace it any time soon and if then, only with something similar. The problem is that Ubuntu keeps forgetting it. It happened 3 times in 1 week. I'll start up, and the mouse won't work. It requires me to unplug the usb adapter for it and plug it back in. Add that to the previous hassle, and starting up my laptop is ridiculously annoying.
So I sit here back in Windows 7. Maybe it's stockholme syndrome that makes me comfortable with Windows, but my chat client isn't complaining at me and my mouse works. That said, I will definitely go back to Linux occasionally. Especially now that Unity 3D is going to have a Linux exporter. My current Unity 3D games will get Linux ports, and I will be putting them in the Ubuntu Software Center. Although I may be in Windows, I haven't deleted my Linux install, and probably won't any time soon. Ubuntu is better than I remember, but it's still got a long way to go before I can achieve the same level of productivity that I can in Windows. Given that Apple's share in the desktop/laptop market is only growing, users will be more comfortable trying out Linux. And I can only hope that with more end users, more of these usability issues will be ironed out.


Natty Not-quite

I've blogged before about trying to go back to Linux on my laptop, and made my requirements very clear. Windows 7 pre-installed had more working features than any of my attempts to install Linux. But as always with Windows, it got slow. After a bit of investigation and trying out, i decided to take the plunge.
So these last few months, i've been running Ubuntu 10.04 on my laptop. And it grew on me. I do like the panel integration, and got really used a lot of features. I miss the little bit of extra polish and features from KDE, but appreciate the stability and native support for Gimp and Eclipse. Most things worked great, until one update broke the sleep/suspend function - a great annoyance for a netbook! So i took the plunge and went 10.10, hoping a new kernel would fix it. This broke sleep even more - no longer just not sleeping, but not waking up and sometimes not booting after having been restarted from sleeping. Thankfully everything else was ok.
After a month or two of anger at the sleep issue and reading a bunch of reviews of 11.04 beta, i decided let me try that out - again thinking a newer kernel might help. The new 'Unity' ( not to be confused with the awesome game engine i'm growing to love ) interface intrigued me. And after a few days with it, i hate it in the same way that i hate Mac OS. It has taken exactly what i can't stand from OSX and put it in my Linux. Thankfully i can still go Gnome Classic, but if this is the future of Ubuntu, i'll take a step away for a while. That is until the following critical user experience issues ( some of which are also in OSX ) are addressed:
  • The dock is unwieldy if you have a lot of applications. I either have to scroll ( really slowly ) or drag vertically which is clunky at best with a mouse.
  • The dock is a little too twitchy and none of the behavior options feel right. There's something annoying about having to go to the top to activate it. I have to direct my mouse a bit more than i'm used to. OSX and KDE this fantastically, the dock is always ready and pops up when you need it to. Windows still has an issue - since '98 - where it sometimes doesn't focus are refuses to pop up.
  • The unified menu bar forces extra clicks. I hate it in OSX, and hate it here. I often have multiple windows open, and sometimes am mentally focusing on a background window. This may be that the foreground window is a popup or something insignificant to me. I always have to do a double take when i see the wrong menu bar. This may not make sense to some people, but i often operate with 2 screens or with small overlays and the 'foremost' app might not be immediately obvious. In which case the menu bar becomes non-obvious. I want an option to en/disable it like in old-school KDE ( remember those days? ).
  • If i have 2 windows of the same app open, there's no easy way to access either with one click. This happens a lot in apps like Empathy and Chrome. I first have to pull out the unwieldy dock, then click on Chrome - which i see has 2 little arrows. Then it zooms out and presents me with 2 thumbs of my windows. That's great and all, though a little hard to see with fullscreen apps. My suggestion here would be to look at Windows 7 as an example of the new wave of app management done right. Hover over the taskbar item, get presented with thumbs. Hover over the thumb, bringing the hovered window to the front. At first i hated the step toward the OSX style there, but i quickly realised that they made it work. Unity has basically knocked off OSX.
Not to say i hate everything about it. I like the speed, and it looks great. The new app launcher is excellent so far despite one or two crashes. The idea of a dock isn't horrible, but i'd like more control over it, not some hidden options in the Compiz settings.
And a final note for anyone who's going to troll... get used to articles like this as Linux becomes more popular... it's called constructive criticism, and i noticed the Linux community often doesn't take it very well. This is just an opinion, you're free to point out - in a rational manner - any mistakes i have made, or correct my assumptions.


Emergence of the Tablets

So recently i read an article about the iPad and how it still has no rival, even when faced with the Moto Xoom. The gist of the article was that the iPad is unrivaled and no matter how many Android iPad clones arrive, the iPad will still be the number 1 tablet on the market. The article claims that Apples R&D is years ahead of the competition and anyone playing catchup will never be as good.
This reminds me of several hundred articles from 2008, 2009 and even early 2010. About how the iPhone was dominant in the market and no one could ever compete. Clones would never be as good, and even Android was only playing catchup and hence will never be better. Lets review some mobile phone numbers from Gartner:
Q1 2010, Android at 9.6% and iOS at 15.4%
Q1 2011, Android at 22.7% and iOS at 15.7%
What that tells me is either that Android is superior ( in terms of value ) or iOS is better and that's irrelevant to mass market consumers.
Now let's assess the first possibility. I prefer the control, choice and freedom on my Android phone. For example, the menu button is something i really miss when using an iOS device. Furthermore i like having options, such as widgets and keyboards. I strongly disagreed when those articles said Android was being developed in the shadow of iOS. Back in those days, iOS didn't have multitasking or even the option to change your wallpaper ( something even my Nokia 6280 had! ). Android introduced those features from day one. Widgets came shortly after, and development has gone so quickly on Android, that feature for feature they surpassed iOS at least a year ago. Which is my general experience with healthy open source projects. Rumours are now floating around that Apple will introduce NFC into their next phone. This leads me to ask, who's actually playing catchup. However, i will admit that almost every single feature that iOS and Android share, is more polished on iOS. This may be considered a sign of quality, and some people firmly believe the quirks and roughness of Android drop its value as a market competitor.
The second possibility is something i find more likely. Most end users - sadly - don't care about freedom and choice. They do generally care about availability, reputation and cost. This is where Android clearly dominates. In the US, iPhone was, until recently, available only on AT&T. This must have hurt sales. Here in the Netherlands, T-Mobile held a similar monopoly. Last year their data network collapsed ( and i still stuggle to use at and am waiting eagerly on the arrival of my Nexus S on Vodafone ). These sorts of availability issues allowed competitors to get a foothold when it mattered. The reputation of Android started off pretty low. I was discouraged from buying my G1 when it first came out. The store clerk said bad things about the OS, that it wasn't ready. I bought it anyway, and despite working daily with iPhones, i still didn't regret my purchase. Slowly it grew to be the only other serious smart phone competitor. A year after my G1 purchase, my wife went to get a new phone, and pretty much all that was recommended in the price range were Android phones. Which is the final point. The iPhone is still too expensive. Android phones are everywhere. Even on prepaid packages. Everyone can have them. This is where the open OS shines. There's no limit to what kind of device you can buy with Android on it.
So back to the tablets. What does the above rant have to do with the iPad? Well, i feel we're in the same situation now with tablets that we were with smartphones when the G1 launched. The Xoom strikes me as the first viable tablet from the rest. Yes, it might not be better, but it's a matter of time before there are 20 Honeycomb tablets floating around with prices ranging from $250 to $1200. So unless Apple adjust their strategy, i think the likelihood is that the same thing happens as with the iPhone/Android fight.
Apple, firstly, need to catch up. The iPad's low resolution and lack of camera's currently aren't on par with most upcoming Android tablets. The iPad 2 may correct this. Apple's iPad pricing has been aggressive, but companies like Archos are known to produce considerably cheaper competitors. If they jump onto 3.0, the first $300 Honeycomb tablet won't be far behind. Once main stream retail picks up the plethora of tablets, it'll be easy to grab a cheap device that fills most of a particular user's needs. If Apple instead go against their normal grain, and release a mid range tablet device with lower specs and wider market reach, they might have more chance competing, otherwise i believe that they will be fighting to hold a lead in 2 years time.


Lucid Nexus One Development

Android development is fun. It's a lot nicer than iPhone development, and although it's not as smooth as Windows Phone 7 development, you're not tied into OS or IDE. So i've recently installed Ubuntu 10.04 ( LTS ) on my netbook, mostly for performance reasons, and need to continue work on my clock widget - which hit 400,000 downloads sometime yesterday :)
There are pros and cons of Android dev'ing on Ubuntu, but the biggest one is that by default, the debug bridge ( adb ) doesn't have permissions to access the device, namely my Nexus One. Reading many online posts the suggestion is to run the adb as root, or just restart the service with sudo. Unfortunately that sucks, why?
  • You have to keep redoing it every time you start up your dev environment
  • Running a potentially insecure service as root!!!
  • If you do restart it while eclipse is running, you get some extra output in the console window
To be honest, for me the first and third are my biggest issues, i hate admin and i don't like unnecessary output in my windows, especially not in distracting red - yes i'm a psychotically pedantic developer.
So here's the proper solution:
As recommended by Google the best thing is to add a udev rules file. So,
  1. Unplug your device!
  2. Create a file as root: /etc/udev/rules.d/51-android.rules
  3. Paste this line into the file: SUBSYSTEM=="usb", SYSFS{idVendor}=="XXXX", MODE="0666"
  4. Lookup the vendor id in this table ( from the android dev site linked above ) and replace XXXX with your devices vendor id:
    ManufacturerUSB Vendor ID
    Sony Ericsson0fce
    If you're using a Nexus One, like myself, the vendor id is NOT in that table! At least for some reason, my vendor id registers as: 18d1
  5. Save and close the file. Plug in your dev device, and start up eclipse/adb.
That's it really!
PS: To find out the Vendor id of your random android device, run lsusb with and without the device plugged in. Do a game of spot the difference, and the first 4 digit hexadecimal number ( XXXX from the number XXXX:YYYY ) is your vendor id.


Trying to go back

Linux, it's a double edged sword. It's awesome, there's no doubt about that. But it hates every one of it's users. The constant fighting to get it to do what you want as a desktop OS. As a server it's great, but the desktop still has a long way to go.
Over the last few month's i've not used my desktop much. My desktop dual boots Windows and Ubuntu 10.04. When i eventually got to upgrading to 10.10, the graphics setup just failed and died. Someone with less Linux knowledge probably would have reinstalled, since even the repair stuff didn't work. I basically had to get into a console, uninstall my ATI drivers, delete my entire Xorg config, and reset everything up.
So in place of my desktop, i got a netbook ( semi-netbook really, dual core atom processor with NVidia 9400M processor, runs Supreme Commander 2 pretty ok ). It came with Windows 7 Home edition. Windows 7 is ok, i can live with it. It's a lot better than XP and they even implemented a Mac style dock better than Apple. I've wanted to install Linux on there since day one but everytime i try out a live usb, i get some stupid trivial issue.
First with Ubuntu 10.04, my sound didn't immediately work. Something silly was wrong and it was a setting i had to tweak, but i'm not going to return to the hell i've had on my desktop with sound issues - i eventually just bought a new sound card to fix an OS issue.
10.10 came out, so i thought, awesome! Let me try the netbook edition. Crashed on first boot, because it needed 3D acceleration to be active for Unity. I had a lot of trouble attempting to activate the NVidia driver from a live usb, so i gave up and thought, let me preview the default gnome desktop. My sound was working, but it still had the same annoying problems that 10.04 has on my PC. The message popups in the top right go invisible when you mouse over them, but are still there. I want to be able to click on them, but no, that's not an option. The OS social integration is awesome, but 60% of the time doesn't login when i boot up and has other strange issues. So i gave up for a while.
I used to love KDE. I still do, great technology! So last night i thought i'd check out the latest Kubuntu. And it's truly awesome, beautiful and functional. Still has the Ubuntu issue of not just being able to activate the NVidia driver on live booting, but i expected that. Now imagine a person new to Linux. Boot up the live stick, open the browser. It says, 'Hey, we can install some kewl stuff to improve your browser experience, like flash and a bunch of plugins'. Click ok. It responds with, 'Blah blah flashplugin-installer blah blah blah'. Click ok and it closes. That's just terrible. Clean boot of the recommended 32-bit version, and it can't even install Flash?
Now having had this problem with Ubuntu 10.04, i know that for some reason the flash installer keeps breaking with the package manager, and there's supposed to be some easy way of fixing it. So opening up KPackageKit as my package manager, i search for flash. No where to be found. Wait a go communicating with your users Kubuntu. That's where i gave up. I used to have the patience for it, and go to the adobe site or scour forums for answers, but i'm long past that.
If a live usb disk can't convince me that the distribution is easy enough to not get my hands dirty - like i have for the past 10 years - then i'm just not ready to install it. If Android is the only Linux i end up using in the next few months, it's because all the desktop variants can't get basic things right.


Intruder alert

Well, i've been away for a while, work has been keeping me busy. I have also been developing a Clock widget for android, and you can download it via this QR Code:

Otherwise, i have done some testing of Motion Detection software for Linux, and here is a brief overview of what i have discovered.

There appear to be 2 developed solutions, ZoneMinder and Motion


This seems to be the more well known and more established of the 2. It appears to have lots of binaries available, but sadly mostly for debian based platforms. If you need to compile it from source, it becomes a complete nightmare of weird dependencies, many of which i didn't know existed. It took several hours to get configure to run, and in the end, i could compile it, but it crashed on launch. Not very impressed. I also noticed that it was heavily perl based, and while i have no problem with that, it did make things more complicated than they could have been. That said, the screenshots show some fantastic features, and i'm sure that if you can get it up and running, it's a great - although possibly overcomplicated - piece of software.


This also had a few odd dependencies, but took no more than an hour from download to simple motion snapshots working. After working out how to set up the config file, i also got the built in webserver running. From here, i need to set up a remote viewing and config site and an email notification service, which shouldn't be too hard. Overall, this software is considerably easier to setup than ZoneMinder however not as feature packed. This does, however, do everything i need it to do, and has some nice extra features which i thought i might have to build myself. It may be simpler than ZoneMinder, but it is definitely extensible. It also includes setup for proper LAN security cameras and the built in webserver has some nice features. There are also some smart features such as automatically drawing a white box around the area of motion in the image.


If you just want to set up a simple motion detection camera for home, i recommend Motion, as the setup was simpler, and it does the basics really well. If you need a bigger solution, and potentially have a PC to spare just for this purpose, then ZoneMinder is probably what you want. In the end, i'm just really glad to see some motion detection solutions for Linux.