Ciutadania 4.0

Fa uns mesos, l’equip de Ciutadania 4.0 es va posar en contacte amb mi per a presentar-me l’event que volien tirar endavant: Conèixer 100 iniciatives ciutadanes relacionades amb les TIC, escollir-ne les 20 més interessants, recolzar-les en 20 experts en l’àmbit del negoci i la innovació, i presentar tot el mix a un públic a l’altura. M’havien conegut a través de l’aplicació Barcelona Bicing, i volien que presentes el meu projecte a aquest gran públic. No tenia molt clar què volien de mi, però com sempre, vaig dir que sí. Així que ja tenia una cita pel dia 6 de juliol.

Després d’una fase selectiva, l’organització em va posar en contacte amb el meu orientador, en Joan Carles Jerez, responsable de R+D del RACC. Ell em va donar unes valuoses pautes sobre com encarar el projecte al negoci, quines són les claus d’èxit d’un projecte amb visió internacional, i la força que ha de tenir un speaking de tan sols 7 minuts. Per exemple, a la presentació hi havia una agressiva comparació entre l’aplicació oficial del Bicing, i la meva aplicació no oficial. Un detall que va agradar molt (i que va fer saltar algunes piulades a twitter), que a mi potser m’hauria fet respecte tirar endavant.

La conclusió, l’esperada: Reunir a tantes persones i presentar una idea a la sala de presentacions de la Torre Telefònica, amb aquest públic, ha estat una experiència increïble que tan de bo es repeteixi moltíssimes vegades. A més, conèixer a tanta gent, tant persones del públic, com totes les persones que, com jo, tenen ganes de tirar un projecte endavant, és una experiència per a la que no hi ha qualificatius.

Si després de llegir tant de positivisme us queden uns minuts i prou curiositat, aquí podeu veure el video de la meva presentació, i aquí les diapositives que vaig utilitzar.

Sensacions post-codesprint

Doncs ja tenim un codesprint a la motxilla!

Aquest dissabte va començar sense esmorzar i amb una petita presentació sobre Google Maps: quin és el servei que ens dóna Google, com n’és de fiable, què ens permet fer la seva llicència, que no, i quin és el procediment per a integrar un mapa de Google a la nostra aplicació Android.

Mentre els més experimentats esmorzaven, a l’aula vàrem fer una petita pràctica per a que tothom dissenyés una aplicació bàsica utilitzant la Google API. Va ser el primer contacte amb una MapActivity!

Després d’això, vàrem proposar 4 projectes:

  • Un client del Bicing: una aplicació senzilla que carregues informació oberta d’internet i la mostrés en un mapa amb punts de diferents colors. Aquesta aplicació, a part de la utilitat funcional, serà l’exemple perfecte per a futures sessions de formació.
  • Guia turístic: Una aplicació que, al passar aprop d’un PDI, ens proporcionés informació de valor sobre aquest punt. En un futur es podria variar l’objectiu per, a més, tractar-ho com un joc. “Has descobert 192 punts dels 2819 que hi ha a Barcelona!”
  • On és el trencadís?: Recordes el “¿dónde está Carmen Sandiego?” Gràcies a les pistes, has de trobar on està el Trencadís!
  • CityWalk: Una aplicació per a planificar rutes turístiques: on vull anar, quin transport públic puc utilitzar, quan puc trigar…

Diferents projectes, diferents dificultats i motivacions: els assistents van escollir un projecte i el van moure endavant. Els equips integraven professionals de diferents perfils i edats. Valors diferents movien discussions sobre un mateix anàlisi o funció. Diferents àrees d’experiència, feien que uns mòduls s’escriguessin ràpid, i d’altres donessin més voltes. Però en tot cas, l’objectiu comú de fer equip per moure una idea endavant va fer que la jornada, a part de didàctica, fos molt divertida.

Si vols veure els projectes que es van moure, aquí tens uns links cap als repositoris Googlecode de Catdroid:

I per aquí un altre link, amb unes fotografies capturades per en Josep Rosich en el transcurs de l’esdeveniment: http://www.flickr.com/photos/59166157@N04/

I has vist el video que encapçala aquest post? És obra d’en Palisandro Gamez i la seva fantàstica GoPro HD! I bé… ni més ni menys que 12 hores de renderitzat!!

Per últim, també volem agrair el suport de Citilab, qui ens va facil·litar dues sales amb projectors i internet per a donar cabuda als equips.

En fi, gràcies a tots els que van participar! Quan repetim?

MySQL comandes típiques

Crear una base de dades:

CREATE database prova;

 

Crear i assignar un usuari local (localhost) amb tots els permisos:

GRANT ALL ON prova.* TO ‘roc’@’localhost’ IDENTIFIED BY ‘password';

 

Crear i assignar un usuari local i remot (%) amb permisos select i insert:

GRANT SELECT, INSERT ON prova.* TO ‘roc’@’%’ IDENTIFIED BY ‘password';

 

Fer un backup de la BBDD i restaurar-la:

mysqldump -u root -p prova > dumpfilename.sql
mysql -u root -p prova < dumpfilename.sql

Codesprint: Aplicacions Android amb Mapes

Ara que ja hem vist la part teòrica de com fer aplicacions per android durant les píndoles, anem a posar mans a l’obra i fer una app (dissenyar, programar i testejar) senzilleta però funcional.

Per aprofitar que molts han practicat una mica a casa i que no comencem des de zero (comencem des de l’1), anem a donar-li una mica més d’interès a la app introduint l’ús de mapes amb Google Maps i OpenStreetMap.

Al matí el nostre company Roc Boronat introduïrà el tema de com utilitzar els mapes, i amb l’ajuda de tots intentarem posar-nos a picar codi i obtenir una app que funcioni.

La idea és que tothom (o gairebé tothom) porti el seu portàtil amb eclipse instal.lat. Segons la quantitat de gent, farem una sola app entre tots o bé farem diversos grups i que cada grup faci la seva app (totes fent ús dels mapes).

Hem d’agrair al Citilab que ens cedeixi un espai per posar-nos a jugar amb el nostre androide. De fet, si ens portem bé, hi ha la possibilitat de continuar la sessió de mapes després de dinar, entrant amb el tema de OpenStreetMap. Entre tots ens podem posar al dia de com funciona i de les diferències entre OpenStreetMap i Google Maps.

No oblideu portar el vostre portàtil configurat per poder programar! Us recordem que en Roc va preparar un paquet d’instal·lació d’eclipse preparat per treballar amb android i personalitzat per a CatDroid. El podeu trobar a http://catdroid.org/?p=210, a http://rocboronat.net o directament a http://kcy.me/1ohy.

Si teniu una proposta concreta d’app per desenvolupar entre tots, o voleu donar la vostra opinió, feu servir el fil del fòrum de CatDroid a http://groups.google.com/group/CatDroid/browse_thread/thread/ca55f96082e1b861.

Codesprint Catdroid.org

Donem una volta a les pílores!

Les xerrades que hem fet a Barcelona i Girona han estat experiències genials: hem ensenyat moltes coses i n’hem après moltes altres. Fins ara organitzàvem xerrades 1.0, però hem pensat que el pròxim event fos més participatiu. Què pot passar si aprenem tots plegats?

De cara al dia 5 de febrer estem organitzant un codesprint al Citilab de Cornellà on puguem moure projectes que ens despertin la curiositat. Per ara, només ha sortit la idea de fer un sample utilitzant OpenStreetMap per a Android. És un projecte que desconec, i m’agradaria aprendre’n.

I a tu, què t’agradaria fer? Si tens curiositat per alguna tecnologia o simplement vols començar un projecte en grup, digues la teva en aquest post. Totes les idees són benvingudes, ja ho saps! http://bit.ly/gB3MLu

Bicing API


Aquesta aplicació té l’objectiu d’extreure informació d’una pàgina web que no ofereixi facilitats per reutilitzar-la, i oferir-la en format de fàcil lectura per a tothom. Per exemple, llegir l’estat de les estacions de Bicing del Google Maps de la web del Bicing, i oferir-la en format XML, JSON, Java Serialitzat… El projecte va néixer amb l’objectiu d’extreure informació en temps real de l’estat de les estacions de Bicing, però ha anat creixent per a donar lloc a d’altres ciutats.

La aplicació està formada per un motor que gestiona Threads, els quals s’encarreguen de fer scrapping de les webs dels serveis dels quals necessitem obtenir dades. El projecte s’ha modularitzat de manera que, si un desenvolupador vol afegir codi que llegeix d’un altre sistema de bicicletes (o d’un sistema similar), pot fer-ho sense una alta complexitat.

A partir de finals de 2011, les dades de Barcelona les proporciona Citybik.es, el projecte obert on s’hi troben els serveis de bicicletes de tot el món. El meu projecte es manté, per un costat, per a adaptar el format de les dades de Citybik.es, i per altra, per a definir exactament els noms dels carrers i els números de les direccions postals. Això marca una diferència amb les dades oficials que proporciona Bicing, on les denominacions no estan gens clares.

Paths d’interès:

Resum: http://rocboronat.net/barcelonabicing/string

http://rocboronat.net/barcelonabicing/bcnG
http://rocboronat.net/barcelonabicing/bcnG?all=1
http://rocboronat.net/barcelonabicing/bcnJ
http://rocboronat.net/barcelonabicing/bcnJ?all=1

Sobre mi

Des de petit m’han agradat els sistemes on hi conflueixen molts elements. El meu pare és un apassionat dels motors, i quan jo no aixecava cinc pams de terra em parlava de modularització de problemes. En Roc “gran” simplificava grans problemes, i els dividia en petits problemes de fàcil solució. I sense saber que això que m’explicava era una de les millors pràctiques que existeixen, jo ho plasmava sense adonar-me’n als meus Lego, amb els que m’hi passava hores i hores cada tarda desmuntant el que tenia i, amb les peces resultants, construint una espècie de naus voladores que suportaven les caigudes, que algun dia s’anunciaran a la televisió… us podeu imaginar com va quedar el parquet de casa?

Entre plàstic de colorins de Lego i parts de motor (que encara corren per casa) vaig acabar descobrint la informàtica en forma de fascicles de diari: “La informàtica és fàcil!”. Amb el temps va arribar el primer ordenador, els primers estudis especialitzats, els primers projectes, la primera feina.

Mentre escric aquestes línies m’ha passat pel cap que una persona és el que fa… així que simplifiquem aquesta secció, i dongueu un cop d’ull a la web, i a veure si us agrada el mateix que jo he gaudit fent.

Roc

Trepitja Fort

How to install SVN server on GNU/Linux

Subversion is a version control system. What’s this? Well, let me give you a small example. Do you remember when we were doing work for the school in groups? That task were very difficult to coordinate. Everyone makes a separate section of the work, following the same patterns, but without touching direct the work of others. Therefore, at home (where each student worked), you cand find a totally different copy of the work, until one day the whole group was meeting, to mix everything and give a full sense.

So, if this document is in a word Subversion repository, the document will be, as they say, synchronized. This would mean that everyone would have their copies, as in the previous situation, but could be in line changes that others had made to the document, both in their sections as their own. We could amend the text of our colleagues and they, to synchronize themselves, see where we have made these changes. All versions are different, so anytime we could go back to the version that was saved a week ago.

Sure that all these ideas sound good, positive … So imagine how it should be this kind of powerful tool in a whole project, with a lot of developers working at the same time, a lot of different files, Forks of the project … Nothing better to encourage you to try it as a manual to mount it on your machine.

In fact, a link that always goes well: http://es.wikipedia.org/wiki/Subversion

Howto SVN Server:
First of all, you should install these packages, drakconf way.
  • subversion-1.4.3-2mdv2007.1.i586
  • subversion-server-1.4.3-2mdv2007.1.i586
  • subversion-tools-1.4.3-2mdv2007.1.i586

In principle, when you have set off these packages, you have the application “svnadmin”. Now you have to create the directory where you want to place the repository, and create the necessary files within that directory with the help of “svnadmin”. It could be something like this:

# cd /opt/
# mkdir subversion
# svnadmin create subversion

Entering within the directory you just created, we will see that “svnadmin” We have created a directory structure, and a Readme.txt … so it would not be making more of an RTFM! (I have just read and are 4 lines that make them feel that everything is controlled).

At this point, we already have the file system ready, and move on to focus on the configuration of the SVN server. First, changing the configuration file subversion, and then modify the users who have access to our manager versions.

# vim /opt/subversion/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd

# vim /opt/subversion/conf/passwd
[users]
pipo=elpassworddelpipoeslarehostia

Modified these two files, you have the entire repository assembled and configured. Now, we need only to boot it with the command:

{codecitation style=”brush: bash;”}# svnserve -d -r /opt/subversion{/codecitation}

When you run this command, we do not return any echo, as will the SVN server running on port 3690 of the machine. We can see it with lsof-i:

# lsof -i
svnserve 30661 root 3u IPv6 83679 TCP *:svn (LISTEN)

By the way, now that I look at the line, it would be interesting to svnserve not run as root, but the repository is under the permissions of a user running, and the process svnserve a call from that user.

Howto Eclipse SVN (Subclipse)

One of the tools I use is against the Eclipse SVN (in fact, the only). And here a small sample configure for the Eclipse as a client of our Version Manager. The only requirement is to be installed off the plug “Subclipse” our Eclipse. Personally, I use the distribution of Yoxos Eclipse (http://www.yoxos.com/ondemand/) which leads me to this plug set off, so I never had to worry about it. In any case, should not be much problem finding a howto on how to set up this …

In case you have already set off, however, we must open the prospect “SVN Repository Exploring.” There, do:
Right click on the area “SVN Repository” – New – Repository Location

The only field that they want are “URL”, where will the leadership of our server. If you look at what we have in place, remember that our repository was to “/ opt / subversion” so that “subversion” is the name of our repository. This URL is formed as follows:

svn:// + domain + repo
svn://piposerver.com/subversion

Clicking on “Finish”, we will all have projects in the repository (there will be no if you have just set up the platform!)

At this time, our Eclipse will be able to share projects. I do not want me to explore much of it because there are a lot of topic to write … but to introduce ourselves, I have to say that you can share an existing Java project with the SVN platform going to the Java perspective and doing this simply step:
Right click on the project – Team – Share project

I hope that this manual, written with the best intentions, we’ve provided some help! And remember… you can do a little bit of feedback 😉

Instal·lar SVN server sobre GNU/Linux

Subversion és un sistema de control de versions. Què és això? Doncs per explicar-ho, posaré un petit exemple per on tothom ha passat, i on  podria anar bé una plataforma com aquesta. Recordem quan fèiem treballs del col·legi en grup. Ens trobàvem en que era molt difícil coordinar-se. Si el grup era de 3 persones, es repartia la feina de que cadascú fes una secció independent del treball, seguint les mateixes pautes comunes, però sense tocar directament el treball dels altres. Això, feia que a casa seva (on cada alumne treballava), hi hagués una copia totalment diferent del treball, fins que un dia, tot el grup es reunia, per mesclar-ho tot i donar-li un sentit ple.

Doncs si aquest document word estigués en un repositori de Subversion, aquest document estaria, com es diu, sincronitzat. Això implicaria que tothom tindria la seva copia, com en la situació anterior, però podria veure en línia els canvis que els altres usuaris haguessin fet al document, tant a les seves seccions com a les pròpies. Podríem modificar el text dels nostres companys i ells, al sincronitzar-se, veurien on hem fet aquests canvis. Totes les versions, estarien diferenciades, de manera que en qualsevol moment podríem tornar a la versió que es va guardar fa una setmana.

Segur que totes aquestes idees sonen bé, són positives… doncs imagineu com ha de ser de potent aquest tipus d’eina en un projecte sencer, amb un munt de desenvolupadors treballant alhora, un munt d’arxius diferents, forks del projecte… Res millor per a animar-vos a que ho proveu, com un petit manual per a que ho munteu en les vostres màquines.

Per cert, un link, que sempre va bé: http://es.wikipedia.org/wiki/Subversion

Howto SVN Server:

Primer de tot, cal instal·lar els següents paquets, via drakconf mateix.

  • subversion-1.4.3-2mdv2007.1.i586
  • subversion-server-1.4.3-2mdv2007.1.i586
  • subversion-tools-1.4.3-2mdv2007.1.i586

En principi, després d’haver instal·lat aquests paquets, disposes de la aplicació “svnadmin”. Ara, crea un directori on vulguis situar el repositori, i crea els arxius necessaris dintre d’aquest directori amb l’ajuda de “svnadmin”. Podria ser algo similar a:

# cd /opt/
# mkdir subversion
# svnadmin create subversion

Si entrem dintre del directori que acabem de crear, veurem que “svnadmin” ens ha creat una estructura de directoris, i un arxiu README.txt… així que no estaria de més fer un RTFM! (ho acabo de llegir i són 4 línies que fan sentir que tot està controlat).

En aquest punt, ja tenim el sistema d’arxius llest, i passem a concentrar-nos en la configuració del servidor de SVN. Primer, modificarem l’arxiu de configuració de subversion, i després modificarem els usuaris que tenen accés al nostre gestor de versions.

# vim /opt/subversion/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd

# vim /opt/subversion/conf/passwd
[users]
pipo=elpassworddelpipoeslarehostia

Modificats aquests dos arxius, ja tindrem tot el repositori muntat i configurat. Ara, només ens cal arrancar-ho amb la comanda:

# svnserve -d -r /opt/subversion

Al executar aquesta comanda, que no ens retorna cap echo, ja tindrem el servidor d’SVN corrents pel port 3690 de la nostra màquina. Podem observar-ho amb lsof -i:

# lsof -i
svnserve  30661    root    3u  IPv6  83679       TCP *:svn (LISTEN)

Per cert, ara que miro la línia, seria interessant que svnserve no s’executés com a root, sinó que el repositori estigués sota els permisos d’un usuari corrent, i el procés svnserve es cridés des d’aquest usuari.

Howto Eclipse SVN (Subclipse)

Una de les eines que utilitzo contra SVN és l’Eclipse (de fet, és la única). I aquí una petita mostra per a configurar l’Eclipse com a client del nostre gestor de versions. L’únic requisit és tenir instal·lat el plugin “Subclipse” al nostre Eclipse. Personalment, utilitzo la distribució d’Eclipse de Yoxos (http://www.yoxos.com/ondemand/) que ja em porta aquest plugin instal·lat, de manera que mai m’he hagut de preocupar per això. En tot cas, no ha de ser molt problemàtic trobar algun howto de com instal·lar això…

En el cas de que ja ho tinguem instal·lat tot, hem d’obrir la perspectiva “SVN Repository Exploring”. Allà, fer:
Click dreta sobre la zona de “SVN Repository” – New – Repository Location

L’únic camp que se’ns demana és “URL”, on posarem la direcció del nostre servidor. Si mirem el que hem configurat, recordarem que el nostre repositori era a “/opt/subversion”, de manera que “subversion” es el nom del nostre repositori. Aquesta URL es forma així:
svn:// + domini + repositori
svn://piposerver.com/subversion

Al fer click a “Finish”, ens apareixeran tots els projectes que tinguem en el repositori (no n’hi haurà cap si acabem d’instal·lar la plataforma!)

En aquest moment, el nostre Eclipse ja serà capaç de compartir projectes. No vull endinsar-me molt en això, ja que hi ha molt de tema per escriure… però per a introduir-nos, només comentar que per a compartir un projecte, només cal anar a la perspectiva de Java, i des d’allà:
Click dreta sobre el projecte – Team – Share project

Espero que aquest manual, escrit amb les millors intencions, us hagi servit d’alguna ajuda!! I si és així, no estaria de més una mica de feedback 😉