I thought I wouldn't make it to the place. Barcelona's metro system is still pretty much unknown to me and it's hard to find navigational help using the official web from the transport entity. Maps are confusing (we need a Beck!). A shame, but I finally did it, after walking the same loooong underground exchange that Fuzzion guys used for recording their famous kukka:r0kasit7e!aarku demo. I arrived a tad late, but I did it! Yay! :-)
And while most of the attendees brought their laptops, I went oldschool and brought a trusty notepad and a ballpen to jot down whatever caught my attention. First in the morning was the HTML session. I didn't write anything down about this one, since I was concentrated on looking at the stuff Paul Kinlan was showing. I knew about most of the stuff he talked about, but it was a nice reminder. It was cool that the slides were interactive themselves, so he could demonstrate things without getting out of the "slides environment". Then went Mr.doob and his short GLSL + WebGL talk. I think it was too short for the topic! Anyway, people were quite impressed with the patterns one could generate by writing a shader, and since he's released an improved version of the interactive GLSL sandbox tool he used, you can now experiment in the same way he did! :-)
Then came the break time and I got talking and after that I sadly missed much of the talk about Google+ from Ade Oshineye, confiding that I would be able to catch up later on by looking at the docs :-P
I entered the conference area again for the Android sessions with Bruno Oliveira. I was quite interested in hearing what they had to say, after the recent "events": 4.0 announced, the Android git repo being taken down, the (in)famous fragmentation chart, etc...
... and what I heard was a bit disappointing. It seems to me there's a fundamental disconnection between what Android developers want and what Google/Android has to offer. It was very obvious when questions time arrived and most of the attendees were asking questions about monetising the apps (or in other words, being able to recover the investment on the platform), and pretty much all Bruno had to answer was that Android intended to be
a democratic platform, focused on what the user wants, and not forcing them to do something like entering credit card information when turning on the device for the first time. He also added that Android wasn't targeted to any specific income range as
other platforms do.
When asked about "fragmentation" he said that:
[...] diversity is a feature of the platform, is not really fragmentation. Different operating system versions [...] is what people call fragmentation [...] It's a consequence of being open source [...] we don't want to put pressure on manufacturers. Maybe in a friendly way, releasing cool inspiring phones like the Nexus S, etc... [...]
He was also asked about the agreement between Android and manufacturers regarding updates that was announced and widely discussed on past Google I/O, but after digressing for a while he didn't give any definite statement on that matter.
Then he went on to give some advice on how to make great apps, suggesting we should detect the available features on each device and act accordingly, activating or deactivating features in our apps, because
not being compatible with a certain phone is being arrogant, like saying to the user that he bought the wrong phone.
This is something that particularly irks me, as sometimes there's no written specification that app developers can consult and be confident will be followed to the letter, as each phone diverges a lot on its behaviour. It's impossible to know in advance what will happen unless you test it with the real phone. Yes, there's the emulator, and that famous esoteric compatibility suite that a phone must passed in order to have the Google apps (Market, Gmail...) installed, but that doesn't guarantee that a real phone will have a proper, complete GL ES implementation, for example.
So making that type of statements did actually sound wildly arrogant on his side. And he went on, happily adding there wasn't no excuse for not creating all the different versions of resources for all the different screen sizes and densities. This was followed by a general moaning and mumbling in the public, as with each new release of the SDK not only are there new features that need to be used if you want a "cool app" that uses the latest stuff in new phones, but there are also new resources to be created and maintained, thus increasing the complexity required to build something "great" for Android versions ≤ X.
Something else that really worries/annoys me is the insistence in showing raw activation and installation numbers in every presentation they do. It doesn't make much sense on the long term: I have probably activated four devices but that doesn't mean I use all of them (as I use them for testing), or that I am four different potential users. Another use case: people using carrier-subsidised phones change them quite often, but that doesn't mean a new user is created from void each time a new phone is activated. It's still the same user and he's not going to expand the market--it actually stays the same, as the old phone will probably get thrown in a drawer. Same goes for installation numbers: that you install an application doesn't mean you actually use or keep it on your device. They could show uninstallation numbers too, and the ratio between installs and uninstalls would be a way better indicator (but probably not as attractive).
Moving on, it was lunch time, which we used to discuss the above points. Most people dismissed Bruno's compatibility strategy as it's plain unrealistic (unless you have an infinite number of testing resources, or simply build very basic and unexciting apps). Some jokes were made about the fragmentation "feature":
it's not a defective phone, it's a feature!.
After lunch we got Paul Kinlan again, explaining several strategies for "making a business out of apps". Again he relied massively on AdSense, which has proven to be a very unreliable and arbitrary source of income. He also mentioned the Chrome Webstore, of course, but it's not very widely extended yet. This session wasn't as enlightening as the HTML session, as the concepts weren't new and ... well, you can imagine the rest.
Next was Danny Hermes with an strange session on the Shopping API. He sounded slightly apologetic and felt like out of place since there wasn't even a "Shopping" icon on the banner, whereas there were G+, Android and Chrome icons, but at least was really enthusiastic about his topic. I guess this talk could be interesting for people integrating Google's Product Search with online shops, but this is not something I'm currently interested at so I didn't pay much attention.
Sam Dutton's Chrome Dev Tools session was way more interesting. It was funny that we were commenting:
it would be cool if you could save the changes you do live... And then he said:
here's this new feature: now you can save the changes you made to the document!.
It also made me slightly envious: the Chrome developer tools are an amazing platform for developing, and the Android toolset pales in comparison. It's all "hacks" here and there: a separate app for tracing, another one for viewing the layout, an app for debugging... Seems like Google should invest more in the Android team ;-)
It was time for "snacks" again. I had a coffee, thanks to the help of @thespite which showed me how to use a Nespresso machine. Yes, I had never used one before--I'm a slow-food sort of person and generally use a french coffee maker instead ;-)
And finally it was time for more Ade Oshineye talks, this time on the Google+ Hangouts API, but for some reason (saturation?) my brain squarely refused to pay attention. I'm so sorry Ade! See, if the talks had been recorded I might be able to watch them ;-)
After the talk finished, it was "Pitch your app" time, where several attendees tried to convince us that their app was the best ever. The best demonstration got a voucher redeemable for a Nexus S, since the phone is not available for sale yet. I was nicely surprised by the level of English demonstrated by the guys pitching the app. They still have a lot of Spanish accent but they aren't kicking the grammar like a punch bag every two words, and that's something you can't say about most mono-English speakers! So well done on that front!
Regarding the apps, I was a bit less impressed, as most of them weren't really surprising: weather aggregation services, GPS tracking+Maps, cloud CMS integration, a football game, a chess game, bike rental locations aggregation/visualisation... nothing that got me enthusiastic about :-P
What did surprise me in fact was that one of the pitchers connected his laptop to the projector and I could see how he opened a terminal and wrote "pm-suspend" prior to disconnecting the computer from the projector. Now that is hardcore! Who needs widgets to suspend the computer? A terminal is all you need! \o/
So to sum up, it was quite an event-packed day, quite professionally organised. Thanks and well done, Google! It not only provide me with some new ideas and tricks, but it also got me thinking about the true Google strategy on Android. Unfortunately the post was getting too long, and that discourse seemed slightly out of place, so I cut that part out and will refine and publish it in the near future as a separate post.
Here's hoping there'll be a future DevFest BCN 2012! :-)