Tecnologia

Automatització de processos amb Python

10 d'octubre de 2018 | Roger Romero

Introducció

L’equip de Service Management Analytics de BaseTIS (SMA) és l’equip encarregat de crear una sèrie de reports de l’evolució del servei que presten per a diferents proveïdors. Aquesta tasca originalment es feia partint d’una sèrie d’Excels i generant PowerPoints que ensenyessin l’evolució del servei prestat pels proveïdors. Llavors es va decidir tenir un grup de persones deslligades del dia a dia de la gestió per mirar de fer aquests informes el més automàtic possible, i aquí va ser quan va sorgir SMA. A part d’automatitzar informes, també s’automatitzen altres tipus de tasques repetitives, entre les quals destaca esborrar tickets amb dades incoherents.

En aquest post parlaré de com automatitzar totes aquestes tasques, que s’han d’executar cada dia. Les primeres comencen a les 6:15h del matí i, a mida que van acabant, es van executant les següents. Aquestes tasques són, bàsicament, scripts de Python que, majoritàriament, generen una sèrie d’informes a partir d’unes dades extretes prèviament.

A la segona part del post faré un petit tutorial sobre com automatitzar un petit workflow amb Python, així que aquest article també et pot ser útil si ets un desenvolupador interessat en l’automatització de tasques.

 

Automatització

Al principi, el workflow que feia SMA era molt senzill: hi havia un script que extreia les dades, un segon script que les processava, un altre que generava els informes i un últim script que les penjava al seu lloc. A més, cada vegada que un script acabava, s’enviava un missatge per un canal de Slack amb el resultat (la idea era que, en un futur, també es pogués reiniciar el workflow, o fins i tot només certes tasques, mitjançant missatges d’Slack). Aquests scripts s’executaven seqüencialment, utilitzant un cinquè script que els anava llançant.

Com us podeu imaginar, aquesta no és la millor idea. A mida que s’anaven afegint scripts (ja que cada vegada hi havia més fonts de dades i més informes a publicar, a part d’altres tasques), la gestió de les tasques es feia cada vegada més complicada. Per començar, les dependències entre les diferents tasques i els errors eren difícils de gestionar (òbviament, hi ha tasques que s’han de fer abans d’unes altres, com extreure les dades abans de processar-les): imagineu que hi ha dos informes a publicar i cadascun utilitza dades de fonts diferents. Primer, extraiem les primeres, i funciona, però hi ha un error a l’hora d’extreure les segones. Com podem dir-li al programa que igualment pot generar el primer informe, però no el segon?

Tot això es va començar gestionant des del mateix script “mestre” de Python, amb moltes sentències condicionals, però a mesura que augmentava el nombre de tasques estava més clar que es necessitava un canvi. Aleshores va ser quan vam entrar en joc el Tomàs Ortega i jo (Roger Romero): com a becaris de SMA, la nostra primera tasca va ser millorar el sistema de gestió de dependències i errors.

El primer que vam fer va ser documentar-nos sobre dues llibreries de Python: Airflow i Luigi. Aquestes serveixen per al que volíem fer: programar workflows amb Python, gestionant les dependències entre tasques. Les llibreries, a més, aporten certes funcionalitats molt útils com, per exemple, una interfície gràfica des de la qual veure (i, amb Airflow, controlar) l’estat del workflow, o l’execució en paral·lel de tasques que no depenen entre elles.

Una vegada ens vam documentar sobre les llibreries, vam començar a fer petites proves amb workflows de poques tasques, per a entrar en contacte amb el seu funcionament i decidir quina s’adaptava millor al nostre projecte.

Aquesta taula resumeix les conclusions que vam obtenir una vegada vam acabar les proves:

 

 

Com podeu veure, Luigi ens oferia dues funcionalitats importants que Airflow no té: l’ús amb Windows, ja que a SMA treballem amb aquest sistema operatiu, i la facilitat per a reiniciar una tasca des d’Slack, ja que com he comentat abans era una cosa que volíem implementar en un futur. D’aquesta manera, ens vam decantar per Luigi, i vam implementar el nostre workflow amb aquesta llibreria.

A continuació, parlaré de com crear un petit workflow amb Luigi, i integrar-ho amb un bot de Slack, que envii missatges per un canal cada vegada que acabi una tasca.
 

Implementació d’un petit workflow amb Luigi

Aspectes tècnics

Per començar, parlaré una mica sobre com funciona aquesta llibreria. El primer que s’ha de saber és que, quan volem executar una pipeline amb Luigi, s’ha d’executar primer el Luigi Scheduler (escribint luigid a una consola). Aquest és un programa que s’encarrega de gestionar les dependències i repartir les tasques entre els diferents Workers, que bàsicament són “treballadors” que s’encarreguen d’executar les tasques. A més, també és l’encarregat de mostrar la interfície gràfica (de la qual parlaré més endavant).

Una altra cosa molt important a tenir en compte és que, quan volem executar un workflow amb Luigi, no se li diu alguna cosa de l’estil “executa’m aquest workflow”. El que se li ha de dir és una tasca concreta a executar i aleshores el Scheduler mirarà si totes les tasques de les quals depèn aquesta ja han estat executades. En cas que així sigui, executarà la tasca que li hem dit. En cas contrari, executarà les que no hagin estat executades (mirant de què depenen, i així recursivament) i després la que nosaltres li hem dit.

Per últim, també cal conèixer com sap Luigi si una tasca ha estat executada o no: quan es programa cada tasca, s’ha d’explicitar un fitxer on aquesta tasca generarà una sortida quan acabi. Així, Luigi, quan vol saber si una tasca ja s’ha executat, va a buscar aquest fitxer: només considera que ja s’ha executat la tasca si el fitxer existeix i conté alguna cosa.

D’aquesta manera, si un workflow falla a la meitat, es pot tornar a executar i només s’executaran les tasques que no hagin generat sortida.
 

Programar amb Luigi

Amb Luigi, cada tasca s’ha de definir com a una classe de Python que hereda de la classe luigi.Task. Una vegada s’ha creat la classe (amb el nom de la tasca), se li poden definir certes funcions (si no se li sobreescriu alguna d’elles, el Scheduler utilitzarà la funció que ve a luigi.Task per defecte):

  • Run: aquesta funció ha de contenir el codi que s’executarà (és a dir, el codi de la tasca en sí).

  • Output: aquesta funció ha de retornar el fitxer que el Scheduler mirarà per a saber si ja s’ha executat la tasca.

  • Requires: aquesta funció ha de retornar una llista amb les tasques de les que depèn la tasca en qüestió.
     

A part d’aquestes tres, que són les més importants, es poden sobreescriure altres funcions, d’entre les quals destaca on_failure (codi que s’executarà si la tasca falla).
 

Exemple

Imaginem que tenim cinc scripts de Python que volem executar, amb certes dependències entre ells. Per a donar-li una mica de gràcia al workflow, suposem que els dos primers s’encarreguen d’extreure dades d’una font, el tercer de processar-les i els dos últims de generar uns informes. D’aquesta manera, l’arbre de dependències quedaria així:
 

A més, també volem que a l’acabar cada tasca, s’envii un missatge per un canal d’Slack amb el resultat de la tasca.

El primer que hem de veure és que com que amb Luigi no s’executa el workflow, sinó una tasca en concret (i totes de les quals depèn), s’ha de crear una nova tasca, RunAll, que depengui de GenerarInforme1 i GenerarInforme2. Així, quan volguem executar el workflow sencer, senzillament li direm a Luigi que executi RunAll.

Ara ja ens podem posar a programar: el primer que s’ha de fer és importar os (per a llegir variables d’entorn), luigi slackclient (que ens permetrà enviar missatges d’Slack).

import os
import luigi
from slackclient import SlackClient

A continuació, comencem a programar les classes. Per a fer més senzilla la integració amb Slack, el que farem serà crear una classe, StandardTask, que heredi de luigi.Task. Després, la resta de classes heredaran de StandardTask.
 

class StandardTask(luigi.Task):
    """
        Classe de la qual heredaran les tasques
    """

    def output(self):
        """
            Path on es guarda l'output de la tasca
        """
        return luigi.LocalTarget("./luigi/" + self.name + '.txt')

    def run_std(self):
        """
            Cada tasca l'ha de sobreescriure amb el codi que executa
        """
        return

    def escriu_output(self):
        """
            Escriu a l'output
        """
        with open(self.output(), 'w') as out:
            out.write('Tasca feta')

    def envia_missatge_slack(self, resultat=True):
        """
            Envia un missatge de Slack
        """
        slack_client = SlackClient(os.system('SLACK_TOKEN'))

        text = "*{}:* :heavy_check_mark:" if resultat else "*{}:* :x:"
        text = text.format(self.name)

        slack_client.api_call(
            "chat.postMessage",
            channel=os.system('SLACK_CHANNEL'),
            text=text,
            username=os.system('SLACK_USERNAME'),
            icon_emoji=os.system('SLACK_ICON')
        )

    def run(self):
        """
            Funció que executarà el Worker de Luigi
        """
        self.run_std()
        self.escriu_output()
        self.envia_missatge_slack(True)

    def on_failure(self, exception):
        """
            Funció que es crida només si la tasca falla
        """
        self.envia_missatge_slack(False)

        super().on_failure(exception)

Com podem veure, aquesta classe té la funció output, que retorna un fitxer .txt amb el nom de la tasca i que està guardat a una carpeta amb nom “luigi” (no per res en especial, només per a tenir les coses ben ordenades).

A més, té la funció run (la que el Worker executarà). Aquesta funció crida primer a run_std, que és la que sobreescriurem a les tasques. Quan acaba crida a escriu_output, que obre el fitxer .txt amb el nom de la tasca i hi escriu “Tasca feta”. Per últim, crida a envia_missatge_slack(True), que envia un missatge a un canal de Slack amb el resultat que se li passi (en aquest cas, True).

Per últim, tenim la funció on_failure que es crida només si la tasca falla, i crida a envia_missatge_slack(False).

Ara, podem programar les tasques en si:
 

class ExtreureDades1(StandardTask):
    """
        Tasca que extreu dades d'una font
    """

    def run_std(self):
        import extreuredades1
        extreuredades1.main()


class ExtreureDades2(StandardTask):
    """
        Tasca que extreu dades d'una font
    """

    def run_std(self):
        import extreuredades2
        extreuredades2.main()


class ProcessarDades(StandardTask):
    """
        Tasca que processa les dades
    """

    def requires(self):
        return [ExtreureDades1(), ExtreureDades2()]

    def run_std(self):
        import processadades
        processadades.main()


class GenerarInforme1(StandardTask):
    """
        Tasca que genera un informa a partir de les dades
    """

    def requires(self):
        return ProcessarDades()

    def run_std(self):
        import generarinforme1
        generarinforme1.main()


class GenerarInforme2(StandardTask):
    """
        Tasca que genera un informa a partir de les dades
    """

    def requires(self):
        return ProcessarDades()

    def run_std(self):
        import generarinforme2
        generarinforme2.main()


class RunAll(StandardTask):
    def requires(self):
        return [GenerarInforme1(), GenerarInforme2()]

Com podem veure, com que hereden de StandardTask, només hem de definir dues funcions per a cada tasca:

  • requires, que en el cas de ExtreureDades1 i ExtreureDades2 no cal definir ja que no depenen de cap tasca.

  • run_std, que conté el codi que s’executa. En aquest cas, s’importa el script que toca i s’executa el seu main. La tasca RunAll no en necessita ja que no cal que executi res, simplement serveix per a que s’executin GenerarInforme1 GenerarInforme2
     

Ara que ja tenim el workflow programat, només ens cal definir el main de l’script, que li dirà a Luigi que executi RunAll. En aquest cas, el main seria:
 

if __name__ == '__main__':
    luigi.build([RunAll()])

L’únic que fa és executar RunAll.
 

Execució

Ara que ja tenim el workflow programat (podem desar el script com a workflow.py, per exemple), només ens queda executar-lo. El primer que hem de fer és obrir una consola i executar luigid. Per a executar el workflow, obrim una altra consola i executem la comanda.
 

python workflow.py

D’aquesta manera, ja tindrem el workflow en execució.

Per últim, si volem veure l’estat del workflow, només fa falta que anem a la url localhost:8082 amb qualsevol navegador web;  allà podrem veure informació sobre quines tasques ja s’han executat, quin ha estat el seu resultat, un arbre de dependències generat per Luigi, etc.

 

Conclusions

Com podeu veure, l’automatització de tasques repetititves és una eina molt potent per a estalviar-nos temps i assegurar-nos que no hi ha errors. Amb aquest post, he volgut reflexar la nostra experiència a SMA amb l’automatització, i de quina manera hem enrobustit tot el procés per a poder escalabilitzar-lo amb cada vegada més tasques. A més, he volgut ensenyar com s’utilitza Luigi per a qualsevol persona interessada en el tema.

Si teniu qualsevol dubte o en voleu aprendre més, no dubteu en enviar-me un correu a:

roger.romero@basetis.com

Imatge de capçalera de Pixabay
Airflow,desenvolupament,Open,processos,Python,sma,
Empresa

Comencem a treballar en el Pla d’Igualtat

5 d'octubre de 2018 | Maria Castells

Com ja es va informar en aquest post, ja hem començat a treballar en la confecció del Pla d’Igualtat. Just abans de les vacances d’estiu vam tenir la primera reunió de l’equip de treball amb la persona externa que ens ajudarà a fer el seguiment.

 

Avui us volem fer cinc cèntims de qui formem part d’aquest grup de treball, què hem fet fins ara i què anirem necessitant de totes vosaltres.

Equip Pla d’Igualtat:

  • Aina Cuxart
  • Albert Mercadé
  • Clara Carreras
  • Manel Llopart
  • Maria Castells
  • Roger Sanjaume
  • Rosa Carballés

 

Com a persona externa està la Mariona Zamora, de L’Esberla. En les pròximes setmanes ja us explicarem una mica més qui són i què fan, escrit per elles mateixes.

A la primera reunió vam presentar-nos, definir la metodologia de treball i vam establir tot el calendari de què suposarà la feina dels pròxims 9 mesos. La idea és que aproximadament a la primavera de 2019 tenir-ho tot definit i a partir d’aquell moment caminar sols cap a un futur més igual i conscienciat. El propòsit és que un dia no calgui fer un pla d’igualtat.

 

Planificació de la feina

La feina que tenim actualment fins a la pròxima reunió (que serà a finals d’octubre) és preparar tot un document d’anàlisi de la situació actual de BaseTIS, tant en dades qualitatives com quantitatives. No us podeu ni imaginar de la de dades que hem de preparar, per sort estem treballant amb l’ajuda de l’equip de Data Analytics per poder recopilar totes les dades quantitatives, moltes ja consten a l’ERP. Segurament en les pròximes setmanes demanarem a basetianes i basetians omplir tot un seguit de dades a l’ERP, però encara estem treballant-hi.

A més de l’ajuda que necessitarem de les persones de BaseTIS per tenir totes les dades necessàries informar-vos que es faran les següents sessions participatives:

  • 7 grups de discussió (es farà selecció de persones representatives de diferents àrees, clients i perfils concrets).

  • 3 tallers de diagnosi i sensibilització (estaran oberts a tothom, ja enviarem la convocatòria en el moment corresponent).

 

A nivell de calendarització, totes les tasques del pla s’han dividit en quatre blocs, planificats de la següent manera:

  • Fase I: Planificació del procés de diagnosi i elaboració del pla

  • Fase II: Recollida i anàlisi de dades

  • Fase III: Presentació i valoració de la diagnosi

  • Fase IV: Redacció i presentació del pla d’igualtat

Què és un pla d’igualtat?

És un conjunt de mesures que s’estableixen en una empresa per garantir que les treballadores i els treballadors participin igualment en la formació, la promoció i altres pràctiques de l’empresa, i també per equilibrar la presència de dones i homes a la plantilla i, especialment, als llocs de treball on hi ha un nombre escàs de dones. A més, també ha de vetllar per la igualtat per raó d’orientació sexual i identitat de gènere.

Fotografia de capçalera de Unsplash
compromís social,compromiso social,engagement,gènere,igualtat,Open,PushingSocialChange,social,
Afers exteriors

Se acerca el primer IndieDevDay en Barcelona

25 de setembre de 2018 | David Flores

Contexto 

La comunidad de desarrollo de videojuegos indie es conocida por su cercanía y su apoyo mutuo. La conozco bastante de cerca, ya que hace más de 5 años que estoy desarrollando mi propio videojuego y me muevo a diario entre páginas web y redes sociales del mundillo.

A diferencia de otras comunidades donde quizás hay más secretismo y hermetismo, en esta se invierte mucho esfuerzo en crear eventos para hacer networking, charlas para contrastar experiencias, tutoriales para compartir conocimiento, y en general, apoyarse los unos a los otros, de forma totalmente desinteresada.
 

¿Por qué se hace el Indie Dev Day? 

El #IndieDevDay es un evento sin ánimo de lucro, que se celebrará en el centro de Barcelona para reivindicar el esfuerzo y el sacrificio que supone hacer juegos indies.

Es una iniciativa por parte de desarrolladores, blogs, asociaciones y apasionados del sector del videojuego para formalizar y marcar un antes y después de una comunidad que crece y se hace más fuerte cada día.

  • Difusión y conocimiento del sector de la industria de videojuegos de nuestro país

  • Impulsar el talento de nuevos desarrolladores, artistas y diseñadores que comienzan sus proyectos

  • Disfrutar de un día conociendo proyectos en desarrollo, compañeros de profesión y disfrutar jugando a videojuegos

 

¿Y BaseTIS?

Uno de los objetivos del evento es que sea gratuito, tanto para los asistentes como para los que expongan contenido propio. Aún así, hay costes que hay que cubrir. Y para ello se ha acudido a los patrocinios.

Como formo parte de la organización del evento y sé de primera mano que en BaseTIS hay muchísimos gamers que les gustaría poder apoyar a la causa, propuse que la empresa fuera uno de los patrocinadores. Envié un mail interno explicando esta historia y finalmente el área de Engagement me confirmó que BaseTIS participaría como patrocinador aportando 250 euros al evento.
 

Información práctica

Si os pasáis por el evento y queréis probar el videojuego que estoy desarrollando (YokaiMask), me encontraréis en la zona de la terraza donde los stands indies cool
 

¡Ahí os espero!

Imagen de cabecera de Indie Dev Day
engagement,IndieDevDay,Open,patrocinis,Videojocs,Videojuegos,
Afers exteriors

Una mirada al sector TIC català

31 de juliol de 2018 | Gemma Estapé

El baròmetre

Fa uns dies ens va arribar el Baròmetre del sector tecnològic a Catalunya 2018. Es tracta d’un eina elaborada pel Cercle Tecnològic de Catalunya, el CTecno, que s’ha convertit en l’estudi de referència del sector tecnològic i digital al nostre territori, que en la seva desena edició recull les percepcions d’una mostra de més de 1.000 empreses (499 empreses d’oferta i 526 empreses de demanda). Aquesta representa l’edició amb major representativitat del teixit empresarial català.

M’agradaria compartir la lectura d’aquest estudi del que BaseTIS en formem part, ja que queda molt detallada la nostra realitat com a empresa. Us resumiré les dades que per a mi són més rellevants i que crec que són uns bons indicadors per entendre on som.
 

Des del punt de vista de l’oferta

El primer que destaca en aquest baròmetre és que el sector TIC a Catalunya continua immers en un context de creixement i amb unes expectatives molt positives de cara als propers anys. El teixit empresarial TIC el componen 15.077 empreses, de les quals 2.766 es troben a Barcelona.

Facturació

Durant l’any 2017 més de la meitat de les empreses que ofereixen serveis TIC (54,1 %) han augmentat la seva facturació anual. D’aquestes, un 31,9 % ho ha fet amb un creixement superior al 2,5%.

BaseTIS ha estat del 23% de les empreses del sector que ha pujat la facturació un 16% respecte al 2016!  

Pel que fa a les previsions per a aquest any 2018, un 59,5% de les empreses del sector TIC projecten un escenari de facturació superior al del 2017. El 37,5% de les empreses preveu un increment de facturació anual per sobre del 2,5%, una dada superior respecte els resultats de l’any anterior. Per part de BaseTIS, les previsions per aquests 2018 evidentment esperem superar-les! Per tant, en el nostre cas, esperem aquest increment mínim del 2,5 % respecte el 2017, tot i que la intenció és que sigui major.

Contractació

Pel que respecta a contractació per al 2018, el 53,8% de les empreses TIC preveuen augmentar-la. BaseTIS clarament és dins d’aquest percentatge d’augment, que implica creixement del nostre equip, cerca de nou talent, incorporació de persones qualificades, i per tot plegat, bones expectatives empresarials.

Traves a superar

No obstant les bones xifres, també és cert que aquests resultats evidencien la necessitat de véncer certes barreres estructurals que dificulten que la valoració del propi sector de l’oferta tecnològica millori respecte als anys anteriors. El present informe identifica i aprofundeix en aquestes barreres com són, per exemple, la dificultat d’incorporar i retenir talent o la manca de cultura col·laborativa entre empreses del sector TIC. Són dades que possiblement cal analitzar.
 

Des del punt de vista de la demanda

Des d”aquest vessant, es troben resultats lleugerament superiors als obtinguts entre les empreses d’oferta. El grau de digitalització de les empreses de la demanda TIC és cada cop més elevat. Creix l’aposta per digitalitzar-se amb l’objectiu de mantenir la competitivitat en l’actual mercat global. L’àrea TIC esdevé estratègica en les empreses, això vol dir que hi ha molt mercat per actuar i la nostra feina és saber trobar-lo i encaixar-lo amb la nostra oferta.

La dada és que hi ha una traslació del valor afegit TIC cap a les empreses de demanda, les quals acceleren la seva digitalització i, per tant, inverteixen més recursos, incorporen més personal TIC propi i es formen més en àmbits tecnològics. 

Com a conclusió, ens adonem que estem en un sector en creixement i que hem d’estar preparats per ser capaços d’afrontar tots els reptes digitals que la demanda està reclamant i necessitant, amb iniciatives de propostes noves que accelerin el desenvolupaent d’estratègies per a les empresess demandants.
 

Els reptes

  • Promoció del talent. Cal desenvolupar una estratègia de creació, captació i retenció de talent TIC i digital com a eix per millorar la competitivitat de les empreses del país, amb especial èmfasi en el talent femení.

  • Aportació de valor. Cal una oferta tecnològica innovadora i especialitzada, focalitzada en les necessitats, expectatives i reptes dels diferents sectors de demanda.
     

La tendència de creixement de la facturació de les empreses de l’oferta TIC catalanes s’ha consolidat fins l’any 2017 i a més es preveu que continuï creixent durant el 2018. Tenint en compte tots aquests indicadors presents i la seva evolució en la darrera dècada només podem concloure que, malgrat el context de forta crisi econòmica viscut els darrers anys, el sector TIC és un sector cada cop més potent i la seva contribució al desenvolupament econòmic del territori és cada cop més rellevant. 

 

Felicitats BaseTIS i felicitats a tothom per fer-ho posible!
 

El document

Us comparteixo l’enllaç des d’on us podeu descarregar el document en diferents idiomes i la infografia de resum, més avall.
 

 

Imatges: Baròmetre del sector tecnològic a Catalunya 2018
CTecno,empresa,Open,
Afers exteriors

Crónica de BaseTIS en Gamelab 2018

27 de juliol de 2018 | David Gómez

Durante tres días al año Barcelona se convierte en el foco de atención de una gran parte de la industria de los videojuegos gracias al Gamelab.

Se trata de un congreso de videojuegos que se lleva realizando desde hace 8 años en Barcelona y que viene emigrado de Oviedo, ciudad natal del director del evento.  El enfoque está orientado a los profesionales del mundo de los videojuegos, sobretodo a desarrolladores.

La diferencia con otros eventos como la Barcelona Games World es que aquí no existen stands donde probar las últimas novedades y futuros lanzamientos; el cuerpo principal del evento son las conferencias. Aunque sí que hay una gran parte destinada a que estudios españoles puedan mostrar sus proyectos en desarrollo.

El listado de ponentes que han participado a lo largo de sus ediciones es de quitarse el sombrero: Hideo Kojima, Jordan Mechner, Richard Garriott, Shinji Mikami, Amy Hennig, Peter Molyneux, Tim Schafer, Cliff Bleszinski, John Romero… es decir, los creadores de juegos como Doom, Prince of Persia, Uncharted, Ultima, Resident Evil….

 

Richard Garriott (foto: Vandal)
 

La edición del 2018

Este año se ha celebrado los días 27, 28 y 29 de Junio y BaseTIS ha tenido representación. David Flores y un servidor hemos ido por una parte a ver cómo está el mercado en la actualidad, e intentar hacer contactos para poder meter una patilla en este mundillo, y por otro lado, a ver unas conferencias, donde este año y ya tocaba, las mujeres han tenido una gran representación entre los ponentes.

Dentro de las conferencias la balanza ha estado nivelada entre las aportaciones de grandes monstruos de la industria y desarrolladores indies más modestos.
 

Los monstruos

Cabe destacar la participación de:

Angie Smets. La productora ejecutiva del Horizon Zero Dawn se centró en comentar todos los entresijos de dar a luz una nueva IP tan ambiciosa y como mantener la ilusión en un proyecto cuyo desarrollo ha llevado seis años.

David Jones. El creador de sagas como los Lemmings y Grand Theft Auto ha dado grandes consejos sobre cómo generar ideas para realizar videojuegos, y cómo en un momento dado, delegar las sagas de éxito a otros equipos y empezar de cero otros proyectos, con el riesgo que ello conlleva.

Debbide Bestwikck. La cofundadora del mítico estudio inglés Team 17 ha sido la protagonista de una de las charlas más emotivas de este año. Una gran parte se ha centrado en los puntos negativos de alcanzar un éxito masivo y cómo esto puede afectar a la relación tanto a nivel personal como profesional con tus compañeros de trabajo.

 

David Jones (izquierda; foto: BaseTIS)
 

La parte indie

De este bloque podemos destacar:

Maja Moldenhauer.  La productora y artista de Cuphead, uno de los hits del los últimos años en el mundo indie, ha contado la historia sobre cómo arriesgar una estabilidad profesional y familiar para la realización de un sueño.

Jonathan Blow. Diseñador y programador de uno de los juegos indies mejores valorados de toda la historia: Braid. Esta vez, Jonathan, vino a dar una charla sobre su proyecto actual – un nuevo lenguaje de programación propio (wtf?). Su nombre es Jai y lleva ya 4 años en desarrollo, junto a otras 3 personas. Nos hizo una presentación en vivo de como compilaba 1.000.000 de líneas en 1.5 segundos. Atentos a esto.

John Baez. El fundador del estudio creador del Castle Crashers ha llegado como una bomba de neutrones, aconsejando a los jóvenes desarrolladores sobre cómo tratar con los publishers, sabiendo qué deberían y qué no deberían hacer en un videojuego.

 

Maja Moldenhauer (foto: Akihabarablues)
 

Además de estos grandes bloques han habido otras conferencias supertinteresantes como la de Aleissa Laidacker sobre la realidad mixta y Christian Rouffaer sobre cómo los estudios que están desarrollando videojuego bélicos deberían representar la ayuda humanitaria. Aquí podéis ver todos los ponentes que han asistido este año.

 

Aleissa Laidacker (foto: BaseTIS)

 

Desarrollos autóctonos

Respecto a los desarrollos españoles que se han mostrado debo comentar que este año he visto un salto de gigante respecto a los mostrado en otras ediciones, entre los títulos más destacados se encuentran:

  • Blasphemous de The Game Kitchen, título que nos recuerda a los Castlevania clásicos y que ha sido un megaéxito en Kickstarter.

  • 3 minutes to Midnight de Scarecrow Studio, aventura gráfica de corte clásico con un apartado técnico espectacular y que en septiembre lanza campaña en Kickstarter.

  • Melbits World de Melbot, juego ganador del Playstation Talents del año 2017 y que saldrá ya dentro de la marca Playstation Link, una serie de juegos de carácter familiar que tienen la particularidad de jugarse con el móvil.

 

Blasphemous (foto: VersusBots)
 

Por último destacar que hemos hablado con mucha mucha gente, y todo el mundo tiene la misma sensación: la industria del videojuego en España ha dado un gran salto estos últimos años y poco a poco están saliendo títulos que están llamando la atención a escala internacional. Sin ir más lejos, el año pasado el juego Rime, de los madrileños Tekila Works ha recibido la primera portada de un videojuego español en la prestigiosa revista Edge, de origen inglés.

 

Rime (foto: Alpha Coders)
 

Esto nos lleva a tener que ponernos las pilas dentro de este campo, si alguien tiene un contacto del sector que crea pueda ser interesante se puede poner en contacto con David Flores o conmigo. Por último comentar que en la actualidad dentro de BaseTIS se está desarrollando un videojuego llamado Mochi Attack del que en breve subiremos una entrada en el Blog explicado su desarrollo.
 

Foto de cabecera: Gamelab / Dilustrations – Deviant Art / JCardona32 – Deviant Art
Gamelab,Open,Videojocs,Videojuegos,
Empresa

Estudiants de l’UAB exploren la xarxa de BaseTIS

19 de juliol de 2018 | Kilian Ubeda

El passat abril un grup d’estudiants de la UAB es va posar en contacte amb BaseTIS per realitzar un treball de camp sobre la nostra infraestructura de xarxes. En aquest post us expliquem com ha estat l’experiència.

 

En primer lloc, des de l’equip de Sistemes vam avaluar la petició i es va determinar que, sempre que no es facilités informació sensible, ens semblava una bona proposta de col·laboració pel profit que en podríem treure ambdues parts.
 

Inici del treball cooperatiu

Els primers contactes van ser via mail. Els vam traslladar una petita explicació de com és la nostra instal·lació, ja que, tot i ser una empresa IT, al fer gran part de la nostra feina al Cloud, no disposem d’una gran infraestructura de servidors, routers o firewalls. Malgrat això, ens van respondre que la infraestructura els hi servia per al seu treball, i a partir d’aquí vam concretar una visita en persona a la nostra oficina de La Pedrera.

El dimecres 2 de maig es van presentar a la oficina els estudiants Oscar Sanchez, Elliot Ribas, Ivan Sicart i Miquel Barberà. Per part de BaseTIS el va rebre una delegació de l’equip de Sistemes composta pel Jorge Navarro, el Kilian Úbeda i el Carlos Bermudo. Aquesta primera presa de contacte es va traduir en una entrevista on els estudiants ens van fer preguntes tècniques respecte a la infraestructura i la nostra feina. Posteriorment els hi vam fer un tour per la oficina per mostrar-los la infraestructura de xarxa que van poder fotografiar per documentar el seu treball.

A part d’això, també els hi vam mostrar algunes de les aplicacions que fem servir per gestionar i monitoritzar la infraestructura. D’aquestes, els hi vam facilitar un parell de captures d’alguns panells de monitorització de com fem la gestió interna, donat que justament coneixien l’eina que fem servir (Nagios).

Una experiència positiva

El balanç de l’experiència és positiu per ambdues parts. Tots vam aprendre coses noves. A nosaltres, Sistemes BaseTIS, ens ha servit per veure en quin punt ens trobem en la infraestructura de xarxa i estudiar la possibilitat d’implementar algunes de les propostes de millora que ens van traslladar a partir de les conclusions del seu estudi.
I ells, van poder aprofundir més en un cas pràctic de gestió i administració d’una xarxa en l’ambit empresarial, i veure totes les possibilitats que ens poden oferir les diferents eines de monitorització per detectar errors i prevenir possibles incidències futures.

A continuació podeu trobar enllaçats tant el treball final com el pòster resum que van realitzar amb tota la informació que els hi vam proporcionar i ens han fet arribar.

Treball final

Pòster resum

 

Foto de capçalera: Irobertson / Pixabay
Formación,Open,systems,uab,
Persones

Jornada de primers auxilis a BaseTIS

9 de juliol de 2018 | Joan Bernat Ferrer

El dimarts 26 de juny va tenir lloc una Jornada de Primers Auxilis a BaseTIS. Es tractava d’una iniciativa conjunta de les àrees d’Environment i Events per a què basetianes i basetians poguéssim rebre una formació bàsica sobre com actuar en cas d’emergència mèdica. Després d’investigar diverses ofertes de formació, ens vam acabar decantant per la que oferia Espais Cardioprotegits de Catalunya (ECC), la qual feia èmfasi en una situació d’aturada cardiorespiratòria.

Així, durant tot el dia (a Sant Cugat pel matí, a La Pedrera per la tarda), un total d’unes 40 persones vam anar passant en grups petits a les sales que s’havien reservat per fer el curs. Allà, dues formadores enviades pels ECC van explicar el protocol que s’ha de seguir en una situació d’aturada cardiorespiratòria i ens van instruir en l’ús del desfibril·lador. L’objectiu de tot això és poder donar assistència durant el lapse entre que es produeix l’emergencia i arriben els professionals sanitaris a atendre a aquesta persona.

Posteriorment vam tenir l’oportunitat de posar en pràctica tot allò après fent un simulacre amb l’Antonio, el ninot de pràctiques.

Tant de bo que mai visquem una situació on haguem d’utilitzar aquests coneixements. Si es dóna el cas però, a BaseTIS estarem preparats.

 

 

 

Fotos: David Díaz i Octavi Planells / BaseTIS
esdeveniments,eventos,Events,Formación,Open,
Tecnologia

¿Qué es el Pair Programming?

28 de juny de 2018 | Rubén Fernández

El Pair Programming consiste en que 2 desarrolladores trabajan, simultáneamente, en la programación de una funcionalidad.

Los ingredientes de esta receta son:

  • 2 personas.
  • 1 pantalla.
  • 1 ordenador.
  • 1 teclado.
  • 1 ratón o trackpad.
     

La clave está en que durante la sesión las 2 personas vayan intercambiándose el rol de escribir código. Uno pica y el otro mira…
 

¿Ya está?

¡Para nada! Durante la sesión se habla mucho, muchísimo. Quien escribe el código va comentando la jugada al que mira (reflexiona en voz alta, verbaliza el problema y la solución), y quien mira va opinando sobre lo que se escribe (errores tipográficos, de formato, de aplicación de patrones, otras maneras de abordar el problema, ideas de casos de uso, edge cases que cubrir…). Al final suceden un sinfín de interacciones positivas.

Yo lo he practicado y recomendado en varias ocasiones.

He visto cómo sólo en la primera hora (asumimos un cambio de rol cada media hora) las personas han intercambiado truquitos del IDE que desconocían y aprenden del compañero/a. O cómo 2 desarrolladores que inconscientemente competían por imponer su solución al problema (que incluso afectaba a su relación personal) llegan a un punto de encuentro e incrementa el respeto mútuo al día siguiente y, por ende, su relación.

Obviamente, el Pair Programming no es la panacea, pero los beneficios potenciales, en mi opinión, superan con creces los riesgos potenciales. Vamos a verlos!
 

Los beneficios

1. CALIDAD, CALIDAD, CALIDAD!

Y no me cansaré de decirlo. La calidad que nace en esta metodología es por:

  • 4 ojos ven mejor que 2.
  • 2 personas juntas piensan mejor que 1 y habitualmente se llega a mejores soluciones.

 

2. Traspaso de conocimiento

Tanto técnico como funcional. Se evitan silos de conocimiento: que sólo 1 persona sea la responsable de una parte concreta del proyecto.
 

3. Traspaso de habilidades

Siempre hay algo que aprender de la otra persona, trucos del IDE, estilo de código, nuevas maneras de atacar un problema…
 

4. Reducción de la gestión

¿Qué? ¿cómo? ¿Pero esto no va de picar código? Lo ejemplificaré con un daily. Un equipo de 10 personas haciendo 10 cosas diferentes van a tirarse un buen rato para intercambiar feedback (nota: un equipo de 10 roza el máximo que recomienda Agile). Sin embagro si el equipo practica 100% el Pair Programming (algo ideal y raro) estamos hablando de 5 focos que atender. Y aprovechando el ejemplo del daily, ¿no crees que 2 personas que trabajan codo con codo durante el día tienen menos posibilidades de sufrir bloqueos? Que es precisamente lo que busca resolver un daily.
 

5. Resiliencia

Dícese de la capacidad para adaptarse positivamente a situaciones adversas. ¿Cuantas veces nos pasa que la cabeza ya no nos da para más? Que estamos dando vueltas y vueltas sobre un problema aparentemente simple y no damos con la tecla. El Pair Programming es una metodología intensiva, no hay momentos para chats o un check rápido a Instagram, tienes a la otra persona picando para ti o pendiente de ti, ahora bien, la constante rotación del tipo de tarea le da aire a nuestra mente y tener el comodín de la llamada (al que no pica) justo al lado te puede sacar de un bloqueo y ganar, atención… VELOCIDAD!!! (quédate con esta palabra para más adelante)

 

El riesgo (o miedo)

Vale, vale, muy bonito… ¿pero voy a pagar 2 sueldos en 1 proyecto para que 2 programadores se intercambien truquitos y se hagan más amigos? Para eso que se vayan a tomar un café ¿no?

Este es el miedo número uno: LA PASTA.
 

Se han hecho algunos estudios empíricos, pero no hay nada concluyente que explique cuánto incrementa el coste el hecho de usar esta metodología. Ahora bien, no, no es el doble (si sale el doble es que se está haciendo mal).

Este miedo viene de una cultura que cree que el programador escribe líneas de código, si escribe más código en menos tiempo es más productivo, por tanto 2 programadores escribiendo un único código escriben la mitad que 2 y por tanto son menos productivos… CRASO ERROR. No hay que confundir rapidez (speed), cuán rápido vas, con velocidad (velocity), cuán lejos vas.

¿De qué sirve escribir código el doble de rápido (2 personas) si avanzas menos porque el número de errores, por persona se multiplica, precisamente por 2? (exgerando al nivel del que opine que 2 programadores producen doble de funcionalidad que 1) Y no estoy contando el tiempo de la tercera persona que encuentra el error y luego lo tiene que volver a validar.

  • ¿Cual es el coste de una calidad menor? Volver sobre el mismo código una y otra vez a resolver bugs.
     
  • ¿Cual es el beneficio de una aprendizaje más rápido? No sólo técnico si no funcional también.
     
  • ¿Qué precio pagamos por no compartir suficiente el conocimiento? Cuando el experto de turno cambia de proyecto o da un giro a su carrera profesional y deja a un equipo o proyecto en una situación más que comprometida.
     
  • ¿Qué cuesta una lucha de egos? ¿2 expertos rehaciendo el código del otro y avanzando cero en el roadmap?
     

No, no es nada fácil medir todo esto. Todas estas cosas pasan y el Pair Programming no las soluciona per se, pero ayuda a prevenirlas igual que lo hacen otras prácticas:

  • Test Driven Development: Calidad.
  • Dar o ir a una charla técnica: Aprendizaje rápido.
  • La documentación técnica y funcional (actualizada): Evita silos de conocimiento.
  • Ir al CineTIS*, los BirreTIS*, o los Juegos de mesa: Mejora la relación y respeto entre compañeros. 
* el CineTIS, BirreTIS y Juegos de mesa, son eventos que hacemos en BaseTIS para cohesionar nuestro equipo de personas y compartir aficiones.

En definitiva, cuantas más herramientas para convertirnos en mejores profesionales y realizar entregas de mayor calidad en nuestros proyectos, mejor para todos.

¿Qué piensas de este método? ¿Te atreverías a probarlo alguna vez? ¿Crees que es viable implantarlo en tu proyecto/servicio?
 

Linkografía

Foto de cabecera: Spooning by Bitbucket de Atlassian

desenvolupament,development,knowledge,Open,pair programming,Top post,
Afers exteriors

Un cop de mà a les persones refugiades

5 de juny de 2018 | Alejandra Catalano

El dia 29 de març vaig impulsar una iniciativa des de BaseTIS per recaptar donatius per a la ONG Proactiva Open Arms, ja que, personalment em preocupa molt el que està passant amb les persones refugiades i m’indigna moltíssim que s’estigui deixant morir al mar Mediterrani. Arrel de de la situació que va viure la tripulació d’un dels vaixells de Proactiva on se’ls acusava d’afavorir la immigració il·legal, vaig decidir fer un donatiu i proposar-ho a l’àrea social perquè BaseTIS en fes difusió.

Podem estar molt contents, entre la donació dels participants (240 €) i la de BaseTIS (1200 €) hem arribat als 1440 € de donatiu total! Gràcies a tots i totes per la participació. Totes les aportacions, petites i grans, són molt importants per ajudar a entitats solidàries que rescaten persones que s’han vist obligades a fugir de la guerra i la misèria.
 

La tasca de Proactiva Open Arms

Proactiva Open Arms és una d’entre moltes ONGs que duen a terme iniciatives per ajudar a les persones que arriben a casa nostra, desprotegides i amb un futur incert per davant, corrent el risc de caure en mans de màfies sense escrúpols.

Des de Proactiva Open Arms s’han impulsat cursos de socorrista per a persones refugiades, una iniciativa que pretén incorporar-les als serveis de socorrisme de la ciutat de Badalona.

Oriol Canals, director operatiu de Proactiva Servicios Acuáticos, a l’article de la Vanguardia, ‘Badalona ficha como socorristas a refugiados formados por Proactiva Open Arms’ assegura que aquestes persones “Entrarán en la plantilla con contratos indefinidos”.
 

Queremos Irnos del Mediterráneo

A més, la ONG ha impulsat la campanya Queremos Irnos del Mediterráneo que pretén evitar que milers de persones perdin la vida al mar treballant als països d’origen. Mitjançant testimonis que han rescatat, ens ofereixen un relat colpidor sobre la cruel realitat d’un viatge ple de patiment, abusos i tortures, oferint al mateix temps eines i recursos per a què nens i nenes tinguin la oportunitat de desenvolupar-se als seus llocs d’origen de manera que no hagin d’arriscar les seves vides buscant una vida millor.

Aquesta campanya l’han començat a Ghana, en col·laboració amb NASCO Feeding Minds, una ONG creada per Ousman Umar, un jove ghanès que va fugir del seu país amb 12 anys i va arribar a Espanya 5 anys més tard. Tot i haver realitzat el seu somni afirma que d’haver tingut accés a una educació i una mínima oportunitat al seu país natal, no hagués abandonat casa seva:

Necesito contar mi historia hasta que no haya más historias como la mía que contar”, Ousman Umar

Més per a les persones refugiades

També m’agradaria recomanar el reportatge de Salvados “Después de Astral” i destacar una iniciativa molt interessant que també ajuda a persones refugiades i de la que sóc super fan: Top Manta. Es tracta d’una experiència on un grup de manteros han registrat la marca per fer samarretes i vambes molt xules!
 

 

BaseTIS i el CCAR

Volia recordar que a BaseTIS col·laborem amb el CCAR, la Comissió Catalana d’Ajuda al Refugiat, a través de la qual incorporem a persones refugiades al nostre equip i contribuïm a la integració laboral d’aquest col·lectiu.

 

Granet a granet es pot ajudar molt a persones que han passat per aquestes situacions tant desagradables. Vull tornar a agrair a tota la gent que ha participat i a BaseTIS com a empresa que ha ajudat a visibilitzar aquesta causa.
 

Gràcies!

 

Foto de capçalera: Proactiva Open Arms
Open,Proactiva Open Arms,social,
Afers exteriors

#ParaLosValientes

31 de maig de 2018 | Alex Garcia

1350€ #ParaLosValientes

A BaseTIS ens hem sumat a la causa #ParaLosValientes de l’Hospital Sant Joan de Déu amb una donació total de 1350 €.

Fa un parell de mesos, vaig fer un donatiu a títol personal per a aquesta causa, tal i com explico més avall. Ho vaig comunicar a l’àrea de Social de BaseTIS i aleshores es va obrir un període per convidar a les treballadores i treballadors a fer les seves aportacions. Al tancar-se aquest període les donacions havien ascendit a 225 € i llavors, BaseTIS, seguint la seva política de compromís social, va decidir multiplicar per cinc l’aportació: 1125 €. 
 

Què és #ParaLosValientes?

Existe un monstruo muy cobarde que quiere asustar a los valientes, pero no le tenemos miedo porque lo vamos a vencer creando el centro oncológico infantil más grande de Europa.

Aquest és el text de benvinguda de la campanya de l’hospital Sant Joan de Déu per a la creació del que pretén ser un dels majors centres oncològics infantil d’Europa. La meva familia i jo vam decidir fer-hi una petita donació i vaig engegar la iniciativa interna a BaseTIS per intentar sumar més gent a la causa.
 

Com va sorgir aquesta donació?

Tots haureu vist en algun moment la campanya televisiva de personatges importants, però en el meu cas, tinc un amic, la meva parella de dobles de tennis veterans (sí, tinc una edat!!), que mitjançant la seva empresa va realitzar una campanya per recaptar fons amb un concert benèfic del grup In Crescendo a la basílica de Santa Maria del Pi.
 

Què em va motivar a fer aquesta donació?

Per una banda, el fet de ser un amic personal qui em demanava col.laborar, i per altra banda, haig de reconèixer que la feina que fem a BaseTIS en aquest sentit m’ha ajudat a créixer com a persona.

Hi ha moltes maneres de col.laborar i molts projectes diferents. Fins ara hi posava el meu granet de manera no econòmica, però a finals de l’any passat ens vam reunir els meus fills i la meva dona i vam decidir fer un petit pressupost per a donacions econòmiques, que repartirem entre dos o tres projectes anuals, i seran els meus fills que decidiran a quins projectes.
 

La Crida: Tu també pots ajudar

Us animo a tots a posar el vostre petit gra de sorra i poder tirar endavant aquest projecte tant important per als infants d’avui com pels de demà.

Us deixo l’enllaç per a fer les donacions!
 

Moltes gràcies a tothom!!
 

Foto de capçalera: Para Los Valientes / Hospital SJD
compromís social,compromiso social,donacions,esdeveniments,eventos,Events,Open,PushingSocialChange,social,
Afers exteriors

BaseTIS, als fòrums d’empresa universitaris

15 de maig de 2018 | Daniel Ran
By Anna Pérez i Daniel Ran

Un any més, durant els mesos de març i abril, BaseTIS ha repetit l’estratègia de captar nou talent assistint a diferents fòrums d’empresa organitzats per algunes de les universitats de Catalunya. Aquests fòrums estan organitzats per les universitats, on es presenten diferents empreses i institucions, i van dirigits a estudiants, principalment d’últim curs, els quals estan buscant una sortida professional al acabar els seus estudis. 

L’àrea de BaseTIS encarregada de gestionar la nostra participació a aquests actes és Join. Des de l’equip de Join s’actua en dues línies de treball complementàries per tal de captar el millor talent:

  1. Vehicular la captació de talent, a partir de les referències que arriben de qualsevol persona de BaseTIS.
  2. Gestionar els convenis de cooperació educativa.
     

Beneficis per a estudiants

En aquests actes, els i les estudiants tenen l’oportunitat de conèixer empreses relacionades en l’àmbit dels estudis que estan cursant i tenen un primer contacte amb les persones que els introduiran en un futur procés de selecció. D’aquests fòrums poden sorgir convenis per realitzar pràctiques laborals amb nosaltres i/o un contracte de treball.

A part, en aquests fòrums els estudiants poden posar en pràctica altres competències més transversals que no se solen veure a classe, com són: primer contacte amb empreses, començar a construir-se una xarxa de contactes laborals, elaborar i presentar un CV, així com entrar en un procés de selecció laboral.
 

Beneficis per a BaseTIS

Per a BaseTIS, les universitats són una de les fonts principals de captació de nou talent, per això li donem molta importància al fet de donar-nos visibilitat en els seus actes i estar presents en les seves borses de pràctiques. Assistint als actes conseguim ajudar a la formació dels estudiants, a la vegada que BaseTIS aconsegeuix incorporar gent nova, amb moltes ganes d’apendre i començar noves aventures.
 

On hem participat?

Aquest 2018, des de BaseTIS hem assistit als següents fòrums i xerrades:

  • IES Joan d’Àustria: xerrades informatives a alumnes cursant el cicle de Tècnic/a Superior en Desenvolupament d’ Aplicacions Multiplataforma.

 

 

 

 

  • Fòrum FME-Empresa 2018 de la Universitat Politècnica de Barcelona, a la Facultat de Matemàtiques i Estadística.
     

 

Resultat dels fòrums

Un cop hem assistit a tots els fòrums, a BaseTIS hem fet una revisió de tots els CV rebuts. Amb això hem pogut extraure una primera selecció de candidats a entrevistar, potencialment per a convenis de pràctiques. D’aquesta manera esperem incorporar 15 estudiants en pràctiques el primer quadrimestre del 2018, amb la idea i il·lusió que, tant l’empresa com la persona encaixin, i poder així continuar creixent laboral i personalment amb BaseTIS.

El nombre de CV rebuts aquest any des de diferents centres educatius és el següent:

Foto de capçalera: Carlos Cañizares / BaseTIS
CFIS,FME,Join,Medalla Blogger,Open,talent,UB,
Tecnologia

App de deep learning per predir races de gos

11 de maig de 2018 | Raül Pérez

By Andreu Masdeu i Raül Pérez

Des de fa uns mesos, a l’equip de Sant Cugat de BaseTIS ens hem iniciat en el món del Machine Learning, concretament, en el projecte d’eReuse, una plataforma que té l’objectiu d’allargar la vida dels productes electrònics, gràcies a la seva reparació i reutilització.

 

Juntament, amb l’ajuda dels nostres companys, hem anat formant-nos en problemes de classificació d’imatges a partir de diverses competicions Kaggle, una plataforma on podem trobar diversos challenges en Big Data, Machine Learning etc. Un bon exemple és la competició Dog Breed Identification, on es parteix d’imatges de diversos gossos (sabent la seva raça) amb l’objectiu de desenvolupar un model que et classifiqui noves imatges (t’indicarà quina raça de gos és la nova imatge).
 


 

 

El projecte eReuse

BaseTIS col·labora amb eReuse en la classificació estètica dels seus aparells electrònics. Primerament, estem treballant amb ordinadors de sobretaula.

Així, eReuse ens proporciona els ordinadors classificats en l’àmbit estètic (si té una esquerda, baixarà la seva valoració), amb els quals s’entrenarà un nou model, per tal que, donat un nou ordinador, s’automatitzi la seva catalogació.
 

Deep Learning

 

Els models que fem servir estan basats en tècniques de Deep Learning, una branca del Machine Learning que alhora és una branca del que entenem per Intel·ligència Artificial (IA). Un altre concepte associat amb Deep Learning és el de xarxes neuronals, ja que són models que es poden interpretar com capes d’unitats neuronals que reben, processen i envien informació. La idea és trobar quines són les millors neurones que donades una imatge, un text, o unes variables qualssevol puguin predir amb encert allò que volem que donin com a resposta.

 

Quan som petits el nostre cervell aprèn moltíssims conceptes. Per exemple, què és una poma i com és una poma. Necessitem veure exemples de pomes per saber què són. I exemples variats. Si només haguéssim tingut accés a pomes verdes, quan ens n’ensenyessin una de vermella no sabríem que també ho és.

A grans trets, podem dir que els models de Deep Learning funcionen igual, a partir de processar exemples són capaços d’extreure els patrons que defineixen què és què. Però amb una petita diferència: necessiten veure moltíssimes més pomes, fotografies de gossos o les dades que siguin per aconseguir resultats decents i poder generalitzar sobre nous exemples.

Tot això es coneix com el procés d’entrenament, i a causa de la quantitat de dades necessàries (que pot arribar en alguns casos a milions d’imatges) pot ser molt costós en temps. Nosaltres vam participar en el challenge Dog Breed Identification i vam desenvolupar un model funcional que prediu amb gran encert races de gossos.
 

Presentació de l’app de mòbil

A causa  d’un endarreriment en l’obtenció de les imatges dels ordinadors d’eReuse, vam plantejar-nos un nou sprint amb l’objectiu de desenvolupar una app on, indiferentment del model, l’estructura de l’aplicació per a eReuse estigués feta. Així que només intercanviant el model, s’obté una aplicació de mòbil per classificar diversos tipus d’imatges (aplicable, doncs, al projecte d’eReuse).

Aquest post és per presentar, doncs, l’app que tots heu estat esperant! Una aplicació que donada una fotografia (pots fer-la amb la càmera o agafar-la de la galeria) et diu a quina raça de gos pertany!!! A més a més, en cas d’error, et presenta el segon i tercer candidats.  

Per fer-ho possible, hem utilitzat alguns serveis AWS, principalment, AWS Lambda, conegut com a serverless compute. Us deixem aquí uns screenshots de l’aplicació (encara no està disponible per descarregar):

Quina utilitat se li va donar a la seva presentació?

 

En la presentació de l’sprint, però, tothom va descobrir què passa si a un model, com el nostre, entrenat per classificar races de gossos, li donés una imatge d’una persona. Doncs, com podeu veure, només sap de gossos, així que interpretarà que ets un gos i et dirà a quina raça de gos “t’assembles” més.
 

 

 

 

 

Terrier de Yorkshire

Pembroke

Malamut

St. Bernard

Imatge de capçalera de Pexels
deep learning,eReuse,Experiences,machine learning,Medalla Blogger,Open,