Una nova aventura

Bones!

Fa un any i poc, vaig fer un curs al Boca Nord que va ser genial. Entre els alumnes genials que van venir al curs, hi havia en Lot Amorós. En Lot estava fent no sé què amb Processing sobre Android, per a controlar uns drones open hardware que s’estava fent, que utilitzaven Arduino per controlar quatre rotors… una cosa molt boja.

Doncs bé, un any més tard, m’he engrescat a ajudar-lo a tirar endavant el seu projecte. Així que durant uns mesets, estaré fent una app per a controlar drones utilitzant una app Android connectada a una placa Multiwii. I tot això, via Bluetooth. I si tot va bé, algún dia, farem una cosa més boja.

Que voleu veure què tal va el projecte? Clar que sí! Vet aquí un parell de links:

Flone i el projector Flone dislocat Flone a la radio

Xerrada de Chromecast al BAUG

Bones!

El Barcelona Android User Group m’ha convidat a fer una xerrada sobre desenvolupament en Chromecast. I, com no, he dit que sí!

Passada la data, només dir que ha estat genial, han sortit moltes preguntes, i com que les promeses són deutes, aquí us deixo les diapos que he utilitzat durant la xerrada.

Espero que hagi estat d’allò més útil!


Vergonya de Barcelona

Avui un dels meus millors amics, l’Eduard Ereza, ha rebut un burofax des de CETRAMSA, una empresa propera a l’AMB, l’Àrea Metropolitana de Barcelona. L’Eduard va desenvolupar “Próximo bus Barcelona”, una app gratuita per a Android, que t’oferia l’informació en temps real del sistema d’autobusos de Barcelona. Vamos, que és com el Vicing, però per autobusos. És una app que fa que la gent tingui un servei afegit de puta mare, molt lluny de l’app oficial. En aquest cas, s’ha convertit en la 10ª app de transports més baixada a Espanya. I una empresa propera a l’Ajuntament llença un burofax per a enviar la feina a pendre pel sac.

Estic molt enfadat.

Fa uns anys, no coneixia l’entorn polític, les entitats públiques i els merders que hi ha. Quan vaig rebre la brometa de B:SM dient-me que estava suplantant-los, i amenaçant-me amb emprendre accions per la via legal, em pensava que tot això venia de l’Ajuntament. Amb el pas del temps, vaig anar col·laborant amb diferents empreses en la meva vida professional, i vaig tenir l’oportunitat  de conèixer a una persona de l’Ajuntament de Barcelona. Aquesta persona em va demanar disculpes personalment per tot el que va passar, però em va deixar una cosa ben clara: No haig de confondre l’Ajuntament de Barcelona amb el B:SM. I conforme passa el temps, veig que és fort, però és veritat.

Us comento una mica la meva experiència amb l’Ajuntament: Està intentant dur-nos les dades obertes, i també obrir infraestructures. Al final, els projectes són les persones, i no sé si qui ho està duent a terme són les persones adequades, si els hi interessa el tema, o si els hi és ben bé igual. Però el fet és que a l’Ajuntament li agradaria obrir les dades. Els hi sembla bé que els ciutadans tirem endavant empreses que, utilitzant les dades públiques, generin un benefici tant pels usuaris com pels desenvolupadors.


Però… després ve una empresa i ho envia tot a prendre pel sac.

Com deia, l’Eduard ha rebut un burofax d’una empresa que, en nom del seu client CETRAMSA, demana que:

Cese la actividad desleal y aprovechamiento indebido de la aplicación y la información y datos de dispositivos de su Cliente.

Activitat deslleial? Però si l’Eduard no és competència. Dades del seu client? Les dades no són privades, són els autobusos de Barcelona. Són dades públiques.

Cese de la actividad ilícita vulneradora de los derechos de propiedad intelectual.

Com que vulnerar la propietat intelectual? Estem parlant de quants minuts falten perquè arribi l’autobús.

Cese de la prestación de consulta del acceso a la línea, internet, o por cualquier otro medio de publicidad y difusón (…)

En resum, que deixi d’oferir el servei de que la gent sàpiga quan falta perquè arribi l’autobús. És massa útil. Per això hi ha l’app oficial… per esperar a que funcioni.

Publique a su costa en su página web y en dos periódicos de difusión nacional de cada una de las capitales de provicia (…) que estas aplicaciones y programas son titularidad de CETRAMSA, que Ud. ha efectuado un uso indebido y sin autorización del titular de estas aplicaciones y que en lo sucesivo se abstiene de seguir utilitzándolas de cualquier forma en el futuro.

Espera, en aquest punt he al·lucinat. No pot ser veritat. Li estàn demanant a l’Eduard que ell mateix publiqui a la seva web i a dos diaris nacionals, que està infringint la llei. No puc descriure el fàstig que em fa aquesta línia, és realment vergonyós que una entitat afí a l’Ajuntament demani això. Smart City, de puta mare! Olé Barcelona, O-L-É.

Todo ello sin perjuicio de las acciones judiciales de cualquier naturaleza (…) con el fin de reclamarle:

El pago de las cantidades percibidas en concepto de enriquecimiento injusto obtenido con el aprovechamiento del esfuerzo financiero destinado por nuestro Cliente a crear esas aplicaciones y programas (…)

Vamos, que estàn dient que s’han gastat un dineral, i que l’Eduard ho està utilitzant per fer diners. Però que passa aquí? Tot això es finança amb un fons públic, i no són dades personals ni de ningú. No perdem el prisma, s’estan utilitzant les dades d’espera dels autobusos de Barcelona. Que heu invertit diners en una cosa que ningú vol ni regalada, i a sobre el problema, és de l’Eduard per haver-ho millorat? Espera, això no és precisament impulsar l’indústria i l’emprendeduria.

El pago de los daños y perjuicios, causados como consecuencia desleal efectuada.

A mi això també m’ho van dir quan lo del Bicing. Què parlen? Quins daños y perjuicios? No estem copiant la marca de Nike i venent bambes amb el seu logo. El que estem fent és ajudar a que la gent utilitzi els seus serveis més eficientment. Que no es morin de fàstig a l’estació de bus. I el negoci d’aquesta gent és que la gent agafi l’autobús. L’Eduard està impulsant el negoci dels autobusos, li està oferint un valor afegit!

Al resarcimiento de los daños y perjuicios causados por la reproducción, distribución, reutilización, comercialización y comunicación pública de las aplicaciones y programas mencionados.

Amb aquesta línia veig que realment, estàn oblidant que estem parlant d’autobusos a Barcelona.

Al resarcimiento de los daños morales causados con su actividad ilícita, atendiendo a las circunstancias de la infracción (…)

Daños morales? Espera, que tiro enrere per a recordar el poc que sé de lleis… Daños morales? De debò?

Bé… resumint. No puc descriure el menyspreu i la llàstima que em fan aquestes accions. L’Ajuntament és un bàndol, però a l’altre hi tenim les empreses que utilitzen els seus diners, i que actuen en contra dels interessos dels ciutadans. Empreses de serveis amb mentalitats d’autoprotecció, de los datos son míos y si los tocas te denuncio. Aquestes empreses veuen les nostres apps com unes coses que s’aprofiten dels seus recursos, i que són un problema. És a dir, hi ha una iniciativa ciutadana gratuïta, i això per ells és un problema. I envien un burofax per acollonir. No tinc paraules.

Us passo un link al blog de l’Eduard: http://www.eduardereza.com/ca/legal-complaint-from-cetramsa-sa

Els vespres d’I2: Innovació i Inspiració

Abans de l’estiu, es van posar en contacte amb mi des del Servei de Desenvolupament Empresarial del Departament de Cultura de la Generalitat de Catalunya. L’idea és que s’estaven organitzant unes jornades sobre desenvolupament empresarial, n’estaven muntant una sobre empreses creatives i del món de les apps, i que els hi agradaria comptar amb mi. UAU! I com que sempre dic que sí… :·)

Els ponents erem 3: en Daniel Peris, fundador d’iPadizate.es i cofundador de Geenapp.com, en Quico Domingo, fundador de SoundKik, i jo, que em presentaven com cofundador de Fewlaps i de Catdroid.

De moment, s’estàn muntant les gal·leries de fotos i tal… però us puc avançar un video que ha quedat molt chulo. També us passo la web on hi trobareu tot el contingut de l’I2: http://sde.cultura.gencat.cat/cultura/agendahistoricdetall.php?idact=641





Actualització! Ja tenim aquí el video complet de la jornada. A veure què us semblen les nostres humils opinions!



Formació Android – Tardor 2013

Android  teacher

Ep! Que aquest any he anat donant classes a l’Espai Jove Boca Nord, a la Fundació Paco Puerto de CCOO… i no he avisat per aquí! I com que n’estic molt arrepentit, ara sí que no me n’oblido: Aquesta tardor, faré el curs d’Introducció al Desenvolupament d’apps Android a l’Espai Jove Boca Nord, i a l’Espai Jove La Fontana.

Us passo el link a Catdroid, que és l’entitat mitjançant la qual ho faig, i allà hi trobareu els links per a fer les inscripcions, i resoldre dubtes, trucar als Espais Jove… and so on.

http://catdroid.org/blog/formacion-en-la-fontana-y-boca-nord/

Xerrada a l’institut Ribera Baixa

Bones!

Fa un parell de mesos, un ex-company de feina em va demanar que anes a l’institut on dóna un CFGS d’informàtica a xerrar. L’institut és el Ribera Baixa, del Prat de Llobregat. L’idea era donar el meu punt de vista del que hi ha despres d’acabar el mòdul: Molta feina o poca? Motivant o desmotivant? Què s’espera dels nous professionals? I bé, no podia ser d’una altra manera, perquè sempre acabo dient que .

L’audiència diria que va ser de més de 100 alumnes, i a part d’un col·loqui inicial que vem protagonitzar 4 ex-estudiants d’CFGS, es van fer moltíssimes preguntes. També hi havia qui tenia una (o dues o tres) idees al cap, i pensava en quina viabilitat tindria tal idea. Quines eines utilitzar per tirar-la endavant… aquest munt de preguntes que tens quan tens 20 anys i ganes de menjar-te el món.

Bé, en uns dies tornaré a fer una xerrada al Centre d’Estudis Politècnics, el centre on vaig estudiar jo ja farà uns anys. I com que potser els slides que vaig preparar li poden servir a algú, doncs ho postejo en el petit espai que m’ofereix tenir el blog online.

A passar-ho bé!


Com Londres implementa Smart City

Feia massa que no escrivia al blog, i avuí he rebut un d’aquells e-mails que animen a escriure: un e-mail des de Transport for London.

Transport for London

Abans de res, us poso una mica en situació: Fa un parell d’anys vaig tirar endavant una aplicació per a conéixer l’estat del Bicing al teu Android. El dia 22 d’octubre de 2010 (crec), Bicing va actualitzar el seu sistema informàtic, i es va carregar totes les aplicacions mobils, inclosa la seva per a iPhone. Mesos més tard, van llençar una aplicació oficial per a Android, i al cap d’una setmana, els serveis juridics del Bicing es van posar en contacte amb mi per a empendre mesures legals contra la meva app. Aquesta és la Barcelona on avuí s’hi celebra la Smart City Expo.

Per altra banda, també fa un parell d’anys, vaig veure que a la pàgina web Transport for London (el que vindria a ser el B:SM d’aquí) hi havia un formulari que t’oferia subscriure’t per a rebre accès a un munt d’API’s de dades per a molts serveis dels que ofereixen. A més a més, era bastant tècnic, fins i tot et preguntaven des de quina IP accediras als seus serveis per a posar-la en una whitelist. Doncs bé, avuí m’han enviat un correu per a notificar-me de que les tarfies del servei de bicicletes canvien, i que si apareixen a alguna de les meves apps, que estaria bé que ho canves.

A veure si el Wert ens deixa una mica tranquils, i Londonitzem una mica Barcelona…!

Things I have learnt about NFC on Android

Cheers!

Some months ago I started one of those projects you start, you hold, you retake, you forgot’em, you go back to… those projects that when you retake them you meet your past self, that self you are ashamed of because you see a technology newbie. You still appreciate him, but you’d have a chat about… “fancy a fifa party?”.

This outstanding project with a thousand breaks has been named NFCar, and it started as a test to begin in the NFC for Android world. The idea was to create a mechanism which would mod the phone to a specially designed desk for the car, from which to have better access to those apps you might use while driving, besides than showing your car’s logo. This is one of those projects you do it for yourself, and gets published at Market just because, without aiming it to get really used. If you got curious: http://kcy.me/90yj

With this post I’m looking to share with you all I’ve learnt about NFC besides of reminding it to the future Roc, just in case something following is forgotten:

  • In Android 4.0 NCF chips cannot be formatted in NDEF, which is a quite cool standard to write in NFC. This has some important meanings: if you haven’t bought the NDEF pre-formatted tags, forgot about it. And if you hand write a single byte in a NDEF formatted tag, avoiding the standard, you’ll have broke the NDEF format permanently. #congratsson
  • Android apps cannot be proactive and ask if there is a NFC near. Tag connection is acquired via Intent, and you are responsible of saving the provided instance in order to use it further. That is to say, if the phone has sent you a signal telling you’ve got an NFC nearly, and you missed it, is lost. The NFC tag keeps near, and you know it, but you cannot access it. #congratsson
  • If you want to keep a connection with an NFC tag (because you know it will be nearly for a while), you cannot. I mean, you can’t set a listener “enDesconexióDeNfc” “onNfcDisconnected”. You can create yourself a method if needed to keep calling nfc.isConnected() periodically. This will work perfectly at home, with the phone USB connected to the computer… also when you test it with the phone disconnected… But, when the battery is low, quite far from your test results, it is possible to lose the connection with the NFC even with the device touching the phone. So, with the battery lower than 100%, your onNfcDisconnected listener will work for a while… 5 seconds… 30 seconds… even a minute. But there will come a time it will return false, and you won’t understand the reason. It’s simply because your battery isn’t fully charged. And this is not documented anywhere. And I am testing it with the galaxy Nexus, the Google’s beauty. #congratsson
  • The Android Developers Manual explains how to start the Activity through the Intent thrown when you bring the phone closer to a NFC tag. This is rather good, and when your app grows you will see that your main Activity is absolutely docked with the business is run over the NFC. This means that my main Activity where I like to have only view and user interaction, I have a lot of docked code managing the NFC control. Alright Google, the way of implementing NFC detection is sending me an Intent which launches one of my activities… but don’t try to convince me that this is good. Now that the project is finished I see it wouldn’t have been a bad idea to manage all the NFC connections through a see-through Activity which would forward an Intent to my man Activity depending on the case. So, summarizing: Google proposes a… doubtful arquitectre. #congratsson
  • Every NFC chip is written its own way. I don’t mind to write the bytes in 64bit packs to improve efficiency when able, or maybe to write using lines when the tag requires it… but I don’t relish to be obliged to learn how to work with every single new chip appearing. A “writeString” and a “readString”. That’s it. I’m not asking that much, am I? If the String is too long for that NFC tag, a TooLongMEssageException could be thrown. And that’s all. #congratsson
  • The mobile phone makes a sound every time an NFC is reached. The mobile phone turns off the NFC scan when the screen is switched off. The mobile phone triggers the NFC scan when the screen is switched on. These 3 elements which alone are not a mistake, altogether they are a patience attack when we work with my idea: phone near the NFC all the car trip along. Nothing happens when the screen turns off. But when you switch it on again… the sound again. The phone considers the NFC is new, just appeared there. And there is no way from your app to decide if it is new or not. The phone sounds definitively, and you cannot disable this audible notification anyway. Actually, not even user can. #congratsson

 

Despite these points: good enough. Actually, Android 4.0 has brought a very sexy detail: writing an NFC with an own Android Standard, so you can write there your app’s package. When the phone comes near this NFC no Intent is sent to any application, but the application is launched if installed. Otherwise it goes alone to the Market for it to be downloaded. Pretty good! This functionality brings a bunch of possibilities. Fetch your phone near the Bicing station and download the official app. Or don’t.

When I’ll have a while I’ll upload the code to Google Code for you to see what I’ve written. I hope it to be very useful, and specially to avoid you from failing as I’ve failed. Stay tuned to this post! :·)

Special thanks to Saúl Prior for translating this article to english! :·)

Coses que he après sobre l’NFC a Android

Bones!

Fa uns mesos vaig començar un d’aquells projectes que els comences, els talles, els segueixes, els oblides, hi tornes a treballar… d’aquells projectes que qual els reprens, coneixes al teu jo del passat. Aquell jo del que te n’arrepenteixes, que es nota que estava descobrint una nova tecnologia. Que te l’estimes, però li dires un parell de paraules ben dites. O tres… “fem un fifa?”.

Aquest flamant projecte mil vegades interrumput s’ha anomenat NFCar, i va començar com una prova per a conéixer el món de l’NFC sobre Android. L’idea era la de tenir un mecanisme on, a l’apropar el telèfon al cotxe, s’actives un escriptori especialment dissenyat per al cotxe, des d’on tenir un millor accès a les aplicacions que s’utilitzen mentre condueixes, i a més, afegint al layout el logotip del teu cotxe. És un d’aquells projectes que els fas per tu mateix, i que es publiquen al Market perquè si, sense moltes ganes de que es converteixi en una aplicació gaire utilitzada. Si us fa curiositat: http://kcy.me/90yj

Amb aquest post el que busco és compartir amb vosaltres tot el que he après d’NFC, i a més, recordar-li-ho a en Roc del futur, per si alguna vegada no se’n recorda d’algun d’aquests punts:

  • En Android 4.0 els tags NFC no es poden formatejar en NDEF, que és un standard molt chulo per a escriure en NFC. Això té algunes implicacions molt importants: Si no has comprat els tags pre-formatejats en NDEF, oblida’t d’escriure en format NDEF. I si en un tag formatat en NDEF hi escrius algun byte a ma, sense utilitzar l’standard, et carregaras el format NDEF i mai més el recuperaras. #etfelicitofill
  • Les aplicacions no poden ser proactives i preguntar si hi ha un NFC aprop. La connexió amb el tag es reb via Intent, i tu mateix has de guardar l’instància que se’t proporciona per a poder utilitzar-la en un futur. És a dir, si el mobil t’ha enviat una senyal de que tens un NFC aprop, i no te l’has guardat, ja ho has perdut. El tag NFC segueix aprop, i ho saps. Però no hi pots accedir. #etfelicitofill
  • Si vols mantenir una connexió amb un tag NFC (perquè saps que el tindras molt aprop durant molt de temps), no ho pots fer. És a dir, no pots posar un listener “onNfcDisconnected”. Si vols, pots crear-te tu mateix un mètode que vagi cridant a nfc.isConnected() periòdicament. És un mètode que funciona molt bé a casa, amb el mobil connectat via USB amb el teu ordenador… també quan fas proves amb el mobil desconnectat… Però quan la bateria baixa, molt i molt lluny del teu banc de proves, pot ser que la connexió amb l’NFC es perdi, tot i tenir el NFC enganxat al mobil. És a dir, si la bateria no està al 100%, el listener onNfcDisconnected que tu mateix t’has programat funcionarà una estona… 5 segons… 30 segons… potser un minut. Però arribarà un moment en que tornarà false, i no entendras per què. Doncs és perquè no tens la bateria al màxim. I això no està documentat enlloc. I ho estic provant amb el Galaxy Nexus, el nen bonic de Google. #etfelicitofill
  • El manual d’Android Developers t’explica com iniciar l’Activity a traves de l’Intent que es llença quan apropes el teu mobil a un tag NFC. Això està molt bé, i quan la teva aplicació creix, veus que la teva Activity principal està totalment acoplada amb el negoci que es fa sobre l’NFC. És a dir, que en la meva Activity principal, on m’agrada que tan sols es parli de Vista i interacció amb l’usuari, hi tinc un munt de codi acoplat que gestiona el control sobre l’NFC. Entesos, Google, la manera d’implementar la detecció d’un NFC és enviant-me un Intent que obre una de les meves Activities… però no m’animis a fer-me veure que això és bo. Ara que ja tinc el projecte acabat, veig que no hauria estat pas malament que tota la gestió de l’NFC fos en una Activity d’aquelles que no ensenyen res de res, i que depenguent del cas, em llences un Intent cap a la meva Activitat principal. Doncs bé, resumint: Google ens planteja una arquitectura… dubtosa. #etfelicitofill
  • Cada model de tag NFC s’escriu d’una manera. No em sembla malament poder escrirue els bytes en blocs de 64 bits per a millorar l’eficiència quan es pot, o poser-ho fer per linies quan aquell tag NFC en concret ho requereix… però no m’agrada estar obligat a empapar-me com s’escriure en cada un dels xips que van apareixent. Vull un “writeString” i un “readString”. I ja està. No demano tant. Si l’String és massa llarg per aquell tag NFC, que em llençi una TooLongMessageException. I ja està. #etfelicitofill
  • El mobil fa un soroll cada vegada que troba un NFC. El mobil desactiva l’scan d’NFC quan s’apaga la pantalla. El mobil torna a activar l’scan d’NFC quan s’encèn la pantalla. Aquests 3 elements que per separat no són pas dolents, junts són un atac a la paciència quan treballem amb la meva idea: mobil aprop de l’NFC durant tot el teu trajecte en cotxe. Quan s’apaga la pantalla, no passa res. Quan tornes a encendre la pantalla… s’emet de nou un soroll. Es considera que aquell NFC és nou, que te l’acaben de posar allà. I no forma part de la teva aplicació decidir si és nou o no. El mobil sona, si o si, i no pots apagar aquesta notificació sonora de cap manera. De fet, ni tan sols l’usuari pot. #etfelicitofill

 

A part d’això: molt bé. De fet, Android 4.0 s’ha inventat una cosa molt sexy: Escriure un NFC amb un standard propi d’Android, de manera que s’hi escriu el package de la teva aplicació. Aleshores, quan s’apropa el mobil a aquest NFC no es llença un Intent cap a cap aplicació, sino que o et llança l’aplicació definida pel package si la tens instal·lada, o et porta cap al Market per a que te la descarreguis. Molt bé! Amb aquesta funcionalitat s’obre un món de possibilitats. Apropa el teu mobil a aquesta estació de Bicing i baixa’t l’aplicació oficial. O no.

Quan tingui un moment, pujaré el codi de l’app a Google Code per a que podeu veure el que he escrit. Espero que us sigui molt últil, i sobretot, que no patiu els fracassos que jo he patit. Stay tuned to this post! :·)