OpenCourseWare i MOOC.

La formació és clau. A les TIC encara més.

Els reptes que plantegen les TIC demanen, a més, una renovació constant dels coneixements. Aquest dinamisme del sector exigeix dels professionals un esforç important. Les institucions de formació continua aporten estudis oficials que tracten d’adaptar-se a les condicions de treball dels professionals i podem trobar una oferta formativa prou variada.

Tanmateix, no sempre es poden assumir els requisits previs d’accés, calendari, preus (l’increment de les taxes universitàries no ajuda), o d’altres raons, per accedir als estudis oficials.

Però el desig de formació segueix allà. En ocasions ens trobarem que, senzillament, no ens cal una titulació oficial. Només ens interessa la formació pròpiament dita. O potser, simplement, volem estudiar pel plaer d’estudiar.

El món universitari, en general, ha estat relacionat de forma molt íntima amb el moviment Open Source i Free Software. És fàcil veure una afinitat entre ambdós mons.

Potser calia esperar, doncs, un cop la tecnologia ho ha permès, que les Universitats decidissin fer el pas de posar a l’abast de tothom la seva oferta formativa d’una forma flexible i sense lligar-la a titulacions oficials.

És així q1ue no fa pas gaires anys es parlava dels OpenCourseWare: Essencialment, els materials didàctics, llibres, apunts, exercicis… organitzats segons cursos i alliberats per a que tothom els pugui utilitzar.

A l’OpenCourseWare Coonsortium hom pot trobar els OpenCourseWare d’Universitats d’arreu del món. Les universitats catalanes ofereixen els seus materials als respectius OpenCourseWares:

Universitat Oberta de Catalunya: http://ocw.uoc.edu/
Universitat Politècnica de Catalunya: http://ocw.upc.edu/
Universitat Autònoma de Bellaterra: http://ocw.uab.cat/
Universitat de Barcelona: http://ocw.ub.edu/
Universitat de Girona: http://www.udg.edu/ocw/Presentacio/tabid/9467/language/ca-ES/Default.aspx
Universitat de Lleida: http://ocw.udl.cat/

El següent pas, després de la publicació dels materials és la oferta de cursos complerts en línia. ELs materias docents, però també classes gravades en vídeo, correcció d’exercicis i tutories virtuals. Algunes universitats ofereixen, fins i tot, certificats d’haver completat el curs. Parlem d’autèntica formació online. Es tracta dels MOOC, Massive Open Online Course. Massive i Open és perquè, virtualment, tothom s’hi pot apuntar de forma gratuita.

Les següents webs agrupen MOOC de vàries universitats:

https://www.coursera.org/
http://www.udacity.com/
https://www.edx.org
https://www.khanacademy.org/

Una llista més genèrica, en aquesta adreça: http://www.mooc-list.com/

També es poden trobar MOOC en altres llengües a part de l’anglès. Per exemple, la UNED disposa d’un espai on ofereix MOOC, o COMA, en castellà: https://unedcoma.es/

Les universitats catalanes, de moment, sembla que s’ho miren amb expectació. És interessant aquest reportatge aparegut a la “sala de prensa” de la UOC.

Tanmateix, algunes universitats catalanes ja ofereixen MOOC. La UDG i la UPF ofereixen MOOC en castellà adreçats al públic llatinoamericà (Des de la plataforma Miríada X del portal Universia. Llegiu també aquest post del Bloc de la Unitat Tecno-Didàctica del Tecnocampus de Mataró).

La pregunta que hom es fa és, com en finança això? Probablement, el model de negoci del MOOC de la UNED té poc a veure amb el de Stanford. Aquest article, per exemple, explica el model de Coursera: les empreses que fan cerca de talent, paguen per accedir als perfils dels estudiants. Evidentment això implica vàries coses: els MOOC mereixen la confiança dels headhunters; els headhunters confien en que hi trobaran el talent.

Parlem, doncs, d’excel·lència en la formació, i de perfils d’estudiants personalitzats i especialitzats. Els MOOC amplien el ventall d’oferta de formació continua. No s’oposen a la formació universitària tradicional, si no que la complementen, la perfiles, personalitzen i enriqueixen el curriculum.

El debat a favor i en contra del model d’ensenyament que representen els MOOC, està servit. En tot cas, des del punt de vista del professional que demana formació, l’opció MOOC és una possibilitat a tenir en compte. Es tracta, a més, d’una tendència creixent: a la web de Coursera parlen de prop de 2.500.000 de “courserians”.

Formació superior on la distància o el preu ja no són barreres. Online. En anglès, principalment. A escala planetària. Global, la paraula és important en aquest cas. D’accés gratuït… Atents, doncs. Potser seria bona idea fer un cop d’ull a l’oferta de cursos.

Tornar a programar amb Java

Crisi és canvi. Els canvis requereixen una ment oberta. Les activitats professionals canvien i, potser, ens cal recuperar i actualitzar coneixements.

Posem un cas, i d’això va aquest post:  imaginem que fa pocs anys érem capaços de desenvolupar aplicacions java de servidor; vam passar a dirigir un equip de desenvolupament i vam abandonar les tasques més tècniques, o potser vam fer un canvi de tecnologia. Avui, però, les circumstàncies ens porten a haver d’afrontar de nou desenvolupaments amb Java, o tornar a aquesta tecnologia o, senzillament, volem deixar-nos aquesta porta oberta. Ens hem de posar al dia en Java. Suposem que vam deixar Java quan els temps del JDK 1.4.2

 

Llenguatge Java

Partim , doncs, d’un coneixement previ del llenguatge, potser una mica rovellat, però res que no s’arregli amb unes poques hores de revisar codi. Cal dir que la versió actual de JDK és la 1.7, o Java 7. El Java 7 té algunes construccions que no tenia el JDK 1.4.2. Potser les més cridaneres són les anotacions, les templates, alguna sintaxi nova pels bucles. Amb el futur Java 8 (estava previst per al Java 7, però va caure) s’espera l’arribada de les “closures” i característiques de programació funcional. L’evolució del llenguatge la podeu trobar a http://en.wikipedia.org/wiki/Java_version_history.

Per a un repàs del JDK, pot anar bé aquest enllaç: http://docs.oracle.com/javase/tutorial/java/index.html

Aquestes característiques s’utlitzen als frameworks més actuals. Ara bé, juntament amb aquestes característiques noves també estan els POJO, els Plain Old Java Object, els objectes java “de tota la vida”, i els frameworks més moderns procuren que una de els seves característiques sigui, justament, que es poden fer servir amb els POJOs.

Refrescar la sintaxi és el primer pas.

 

Java SE, EE, ME i Android

En aquest punt podem triar camins, hi han tres vies principals mantingudes per Oracle i una quarta per Google. cada via té el seu SDK respectiu, Els SDK son paquets amb eines i llibreries java que implementen unes especificacions estandaritzades de tecnologies relacionades amb un determinat tipus d’aplicacions:

  • Les aplicacions java d’escriptori, el Java SE;  La Standard Edition. El JDK de tota la vida.
  • Les aplicacions java de servidor, el Java EE; la Enterprise Edition. Servlets, EJB, Servidors d’aplicacions…
  • Les aplicacions de mobilitat i per a sistemes encastats, el Java ME; la Micro Edition, java als telefons mòbils no Android, a dispositius i sensors “smart” de tota mena, targetes intel·ligents,  televisors…
  • Les aplicacions Android. Els dispositius Android  defineixen un entorn de desenvolupament i un runtime d’execució en que el principal llenguatge de desenvolupament, no l’únic, és java.

L’ambient en que es desenvolupen les aplicacions de servidor és la Java EE. Realment, EE i SE no estan separades i Java EE és, més aviat, un superconjunt de java SE que l’amplia amb llibreries i packages orientats al desenvolupament enterprise.

Java EE es troba actualment en la versió 6, la Java EE 6.

Una bona referència és The Java EE 6 Tutorial (PDF). Aquest tutorial és força més dens que l’anterior.<

 

Patrons de disseny i Frameworks

El desenvolupament d’aplicacions Java EE amb entitat demana, a més de l’SDK, llibreries i frameworks de suport. La tria del framework i arquitectura adequats és, segurament, el factor d’èxit més important en el desenvolupament d’aplicacions EE. En aquest sentit, és molt bo repassar la bibliografia disponible sobre patrons de disseny. Un repàs ràpid a http://www.oodesign.com/.  El llibre clàssic sobre patrons de disseny és el “Design Patterns: elements of reusable object-oriented software“.Però el més important són els frameworks. Res no impedeix fer una aplicació només amb jsp i servlets fets a ma al més pur old-style, però no és una bona idea. Serà mollt més productiu fer servir un framework que, ell tot sol, ja doni una bona part de la feina feta.

 

Spring

El framework més utilitzat per a desenvolupar aplicacions web l’Spring Framework, que és part del projecte Spring. Spring Framework fa funcionar juntes tot un conjunt de mòduls i llibreries: des deLog4j, fins a Hibernate, passant per Struts. Per dir-ne només algunes. Cadascuna de les caixetes que surten a la imatge de sota gairebé és un món. És recomanable fer-lis un cop d’ull. No dic de conèixer-les en detall, però sí saber “de què van” per a que, si arribat el moment, saber per on agafar-ho.

spring-overview

Aquest tutorial explica com fer pas a pas una aplicació Spring basada en el patró MVC: http://www.davidmarco.es/tutoriales/spring-mvc-sbs/

Els manuals de referència de la darrera versió (a dia d’avui) de l’Spring Framework en HTML / PDF

Spring encara pot fer les coses més fàcils. Amb Spring ROO si volem crear una aplicació nova, en comptes de crear l’estructura des de zero, disposem una eina per a crear de forma automàtica l’esquelet (i alguns organs vitals) de l’aplicació. La generació automàtica de codi ara rep el nom d’scaffolding. Un anglicisme més.

Per cert, vinculat a Spring, però fent una vida apart, hi ha Groovy,  (i Grails, Groovy on Rails) que és  essencialment un java interpretat, és dir, sense declaració de tipus. Groovy permet desenvolupar scripts, interactuar amb objectes java… Ja n’he parlat en posts anteriors. Cal esmentar-lo.

 

Eines

A més dels frameworks, les eines són importants. No cal que presenti Eclipse. Degut a que és un IDE open-source es fa servir com a base per a crear IDES específics. En concret hi ha un Eclipse IDE for Java EE developers , o un Spring Tool Suite que no és més que un Eclipse “tunejat” per Spring.

A l’Eclipse hi podem afegir plugins que resolen qüestions com el control de fonts i el treball en grup. El plugin Subclipse, per exemple,  permet atacar repositoris de fonts Subversion. El que està de moda ara és Git.

A més dels IDE ens calen servidors locals de desenvolupament. N’hi han un munt, els servidors de servlets i JSP Tomcat o Jetty, passant pels servidors d’aplicacions amb contenidor EJB, com GeronimoGlassFish o JBoss. Tots ells poden ser, a més, servidors de producció. L’administració de servidors és un món en ella mateixa.

 

L’equip de desenvolupament java

Això em porta a un altre punt que crec que cal considerar: què vol dir “fer java” o “ser un javero”. Java és un llenguatge que permet nivells molt alts d’abstracció. A més, quan afegim frameworks, els nivells d’abstracció encara poden ser més alts. Què vol dir això? que, en realitat, el “programador java estricte” no existeix. Com a mínim estem parlant de perfils d’analista programador. Senzillament perquè el llenguatge permet centrar-se més en la solució, que no haver de pensar en la tecnologia. Un analista-programador en java ha de ser capaç de programar, i ha de tenir un coneixement suficient de les arquitectures i frameworks sobre els que treballa.

En un equip de desenvolupament java, a mida que es vagi fent gran, caldrà anar introduint perfils més especialitzats i tècnics. Administradors de Respositori de Fonts, Administradors dels Servidors d’Aplicacions, amb capacitat per instal·lar i fer el manteniment d’aquests servidors. Especialistes en els frameworks, per prestar suport, instal·lar els frameworks i posar en marxa les arquitectures, o extendre els frameworks amb noves capacitats. Són rols que hauria d’assumir algú de l’equip de desenvolupament amb formació o experiència específica.

Finalment, la gestió del projecte: de l’equip, de l’usuari, de l’agenda i del cost. En definitiva, la metodologia de treball (metodologies àgils? o pesades com RUPquè triar?). Si en comptes de projectes, parlem de manteniments, aleshores potser ens cal recordar ITIL i com implementar-lo; i els diferents programaris que el poden suportar, per exemple, de gestió d’incidències, com BMC Remedy o, a un altre nivell, Mantis BT.

 

On es fa servir Java? té futur això?

I, per acabar, cap a on crec que aniran les coses:

A dia d’avui, els perfils java estan buscats. La demanda ve impulsada per la telefonia mòbil, i per la irrupció del mercat “smart”. La propera revolució, si no m’equivoco, serà la de les Smart Cities. Les ciutats intel·ligents, verdes, segures, netes i eficients, potser més democràtiques i tot. Les Smart cities funcionaran sobre una gran xarxa de telecomunicacions que interconnectaran dispositius i sensors de tota mena i fluxos d’energia en “smart” grids de forma que estarem parlant de la “Internet de les coses”. En tot aquest maremàgnum de servidors, Data Ware Houses, Temps Real, sensors i disposotius smart (evidentment amb els smartphones com a dispositius estrella) el Java està molt ben posicionat per a ser el llenguatge dominant.

 

Pot ser una bona idea posar-se al dia en Java.

Any Nou, Sistema Operatiu Nou.

Any nou, Sistema Operatiu nou. He aprofitat uns dies lliures entre compromisos nadalencs per a reinstal·lar els sistemes operatius a l’ordinador de sobretaula i al netbook.

Els meus ordinadors són màquines antiquades, però que serveixen de sobres per a les tasques que faig amb ells. Es tracta de màquines de capacitat limitada on l’utilització d’una distribució Linux és gairebé obligatòria. Fa força temps que als ordinadors de casa hi tinc instal·lat Lubuntu, la versió d’Ubuntu lleugera basada en LXDE i OpenBox. Les coses han anat bé fins aquest any passat en que m’han anat apareixent errors de sistema esporàdics. Què estava passant?

Doncs resulta que des de la versió Ubuntu 10.10 (estem a la versió 12.10) no hi ha suport per a màquines i586.

Una mala notícia per als meus vells AMD. Val a dir que els errors que es produïen no eren, en cap cas, catastròfics; però acostumat a que les coses sempre m’anessin bé amb Linux, els errors em feien pujar la mosca al nas.

La solució ha estat la següent: al sobretaula he instal·lat Debian 6.06; i al netbook la Lubuntu 10.04 (la darrera que suporta AMD geode, el micro del meu Hercules eCAFÉ 800 20G).

Primer de tot: còpies de seguretat de tot allò digne de ser resguardat.

Al netbook, el procés d’instal·lació ha estat el mateix que he descrit en posts anteriors, només que amb la versió 10.04. No té truc: es tracta de preparar un pendrive autoarrencable amb Unetbootin i la iso del Lubuntu 10.04; engegar i anar responent les preguntes de les pantalles d’instal·lació. Un monitor extern serà útil. la connexió a Internet per cable de xarxa necessària. Un cop finalitzada la instal·lació, es pot corregir el problema de visualització reemplaçant el fitxer /etc/X11/xorg.conf pel de l’enllaç.

Pel sobretaula he descarregat la iso de la versió Debian 6.06 netinst (altres opcions aquí) i n’he cremat un CD. Engegar i anar responent les pantalles d’instal·lació. Carrego les opcions de desktop i utilitats bàsiques del sistema. Suficient. Després de la descàrrega i instal·lació dels paquets i instal·lar el GRUB, el sistema demana retirar el CD i reiniciar. Fet. Debian instal·lat. Així m’agrada. Amb seguretat.

Coses interessants a fer tot just completada la instal·lació: he afegit el meu usuari a /etc/sudoers (un costum pres de l’Ubuntu). Per això faig su, i visudo -s. Tot just a sota de la línia amb

root ALL=(ALL) ALL

afegeixo

albert ALL=(ALL) ALL

I ja tinc el meu usuari amb superpoders. Ara instal·lo XAMPP. El procés dja el vaig explicar en aquest post. De totes formes, he vist que és de força ajuda fer un sudo chmod -R 777 lampp/ i asudo chmod -R 755 lampp/etc/my.cnfabans de fer el sudo lampp/lampp start inicial.

Per a poder fer servir el phpMyAdmin també cal corregir lampp/etc/extra/httpd-xampp.conf

#
# New XAMPP security concept
#
#<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
#	Order deny,allow
#	Deny from all
#	Allow from ::1 127.0.0.0/8 \
#		fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \
#		fe80::/10 169.254.0.0/16
#
#	ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
#</LocationMatch>

<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
	Order deny,allow
	Allow from all
        Require all granted
</LocationMatch>

El que he fet és permetre l’accés des de qualsevol ubicació

Finalment, també m’ha calgut establir contrasenyes per a tot amb sudo lampp/lampp security

Amb aquests canvis fets, el XAMPP ja és útil. Penso instal·lar-hi Drupal, WordPress i Symfony, a més de Magento i Prestashop. El que sigui per aprendre. Potser acabaré tenint la meva pròpia botiga virtual. Qui sap. En tot cas,la informàtica domèstica de casa torna a estar en condicions, que d’això es tractava.

Espero que aquest any sigui profitós. Amb feina, èxit als projectes que s’encetin i posts interessants al bloc.

Feliç 2013!