Qué hacer tras perder acceso SSH en un servidor Ubuntu alojado en Digital Ocean

Es posible (y ocurre a menudo) que olvidemos las credenciales de autenticación de nuestras máquinas virtuales o que incluso, como es mi caso, se nos estropée el único ordenador con el cuál tenemos acceso SSH a nuestro.

Los pasos para recuperarnos de esta situación son los siguientes:

  1. Obtener acceso 'físico' a nuestro servidor
  2. Resetear credenciales SSH en Digital Ocean
  3. Resetear credenciales del servidor
  4. Comprobar permisos SSH

Obtener acceso 'físico' a nuestro servidor

En primer lugar debemos acceder a través de Digital Ocean a nuestro droplet. Para ello:

  1. Acceder a nuestra cuenta de Digital Ocean
  2. Acceder al Droplet cuyo acceso queremos recuperar
  3. Acceder a la sección Access (https://cloud.digitalocean.com/droplets/**dropletId**/access)
  4. Iniciar la consola

Resetear credenciales SSH en Digital Ocean

Abre una nueva ventana en tu navegador y ve a la sección de seguridad dentro de tu cuenta de Digital Ocean: https://cloud.digitalocean.com/account/security

En el apartado SSH keys, asegúrate de que tienes acceso a todos los dispositivos cuyas claves aparecen listadas. Elimina las claves que ya no necesites.

A continuación, añade las claves SSH de la máquina desde la que te conectarás via SSH a tu Droplet.

Resetear credenciales del servidor

Con la consola de Digital Ocean abierta, vamos a buscar el usuario cuyo acceso has perdido. Ten en cuenta que ahora mismo eres root:

  1. Lista los usuarios del sistema con less /etc/passwd
    Esto devolverá una lista como:

    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/usr/sbin/nologin
    man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
    lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
    mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
    news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

    La mayoría de las entradas son usuarios del sistema. Busca el nombre del usuario cuyo acceso quieres recuperar por SSH.

  2. Resetea la contraseña del usuario con passwd username

  3. Habilita el acceso con contraseña via SSH al servidor desde tu ordenador local

    • En la consola de Digital Ocean:
      1. nano /etc/ssh/sshd_config
      2. Edita PermitRootLogin no
      3. Edita PasswordAuthentication yes
      4. Guarda cambios
      5. systemctl restart ssh
    • En la consola de tu ordenador local:
      1. ssh-copy-id [email protected]
      2. Prueba a conectarte con ssh [email protected]
    • En la consola de Digital Ocean:
      1. nano /etc/ssh/sshd_config
      2. Edita PasswordAuthentication no
      3. systemctl restart ssh

Comprobar permisos SSH

Antes de terminar, asegúrate de que en tu Droplet:

  1. Configuración del archivo sshd_config
    • PermitRootLogin no (ssh [email protected] debería devolver Permission denied (publickey).)
    • PasswordAuthentication no

¿Es seguro usar fintonic?

Con cada vez más tarjetas virtuales y cuentas bancarias que gestionar, es normal que nos planteemos si existen herramientas que nos permitan organizar nuestros gastos e ingresos en un sólo lugar, y oye, por qué no, de forma automática.

Atrás quedan los tiempos en los que, libreta en mano, nuestros abuelos manejaban sus ingresos con tan sólo un bolígrafo. Lo queremos todo automatizado y vendemos nuestros datos como si nada importaran.

Este no es un artículo sobre seguridad informática. Fintonic usa todos los estándares que otras webs bancarias puedan usar. En un sentido técnico, es igual de seguro que usar la app del BBVA, o de La Caixa. Este escrito es más bien una reflexión sobre hasta que punto estamos regalando nuestros datos, y el nivel de privacidad de los datos que estamos otorgando a empresas virtuales.

Abrí mi cuenta en Fintonic para sustituir al efectivo pero ligeramente engorroso de gestionar BlueCoins. Una aplicación que hace exactamente lo mismo que Fintonic, pero de forma manual, es decir, si tú no la actualizas con cada gasto o ingreso, se queda obsoleta.

Uno de mis objetivos al comenzar a usar Fintonic era depender algo menos del móvil. Ya no tendría que guardar en qué he gastado tal dinero; Fintonic rastrearía el gasto a través de mi banco personal y sabría si me he gastado el dinero en ropa o en gasolina. Hasta aquí, todo bien. Esta aplicación cumple con la labor que se publicita como principal, y hay que reconocer que lo hace tremendamente bien. La interfaz es vistosa, user friendly, rápida y transmite confianza. Aquí acaban las ventajas, para mí, de usar esta app.

En una segunda observación a la interfaz de la aplicación, se puede fácilmente identificar el público objetivo de la misma.

Si no supieras lo que es Fintonic, al entrar en la web principal podrías pensar que estás en una web de viajes

Emojis, gente jóven sonriente y 'Toooodas las funcionalidades' disponibles a golpe de clic. Qué buen rollo. ¡Si tan sólo no estuviésemos hablando de banca online!

Frase de colegueo incluida, lo demás, son tonterías

Uno de los primeros elementos que te encuentras al entrar en la app de Fintonic es el 'FinScore', una medida de salubridad de tus cuentas bancarias. En función a su grado, podrás acceder a mayores descuentos, préstamos, etc. No importa que no quieras descuentos, hipotecas o seguros para tus mascotas: el FinScore va a estar en tu página principal siempre, no lo puedes ocultar, a no ser, supongo, que acabes solicitando el préstamo.

La cosa sigue empeorando con publicidad no opcional:

Spoiler: si tratas de darte de baja de los emails, ¡se te redirige a la página para cerrar tu cuenta!

En Fintonic no quieren que dejes de recibir publicidad. Si tratas de darte de baja de sus correos, te obligan a cerrar tu cuenta: no les interesas si no te interesan sus préstamos. De algo tienen que comer. Y si bien es cierto que en la configuración de fintonic puedes gestionar estos emails / mensajes de la app > https://www.fintonic.com/private/settings/notificationsconfig en ningún sitio podrás cancelar los SMS o lo referido a tus préstamos, lo cuál hace de esta sección algo inútil.

También recibirás SMSs contándote, por si no te habías enterado ya, de la de pasta sin comisiones que te pueden conseguir en menos de 24 horas.

¡Ahora sí que me habéis convencido!

Y todo igual. En definitiva, Fintonic se publicita como una app con la que gestionar tus gastos ingresos, y si bien es cierto que eso te lo va a dar, esta funcionalidad no es sino la patita del lobo que sale por debajo de la puerta. Una vez tienen tus registros, comienzan a llegarte emails, alertas al teléfono y, si pasas de ellas, incluso mensajes de texto a tu número de teléfono personal. Cada vez que entres en la app verás lo que te has gastado y lo que has ganado, sí, pero también una cantidad de publicidad descomunal.

Dicho esto, cierro mi cuenta en Fintonic y me vuelvo a BlueCoins o quién sabe, a la libreta de mi abuelo. Respondiendo a la pregunta del artículo: ¿es segura Fintonic? Bueno, nadie salvo los de Fintonic van a tener tus datos. Así que en función de si te es útil lo que te ofrezcan o no, podrás responder a la pregunta.

Instalar Google Camera Redmi Note 7

Hace unas semanas que compré el Redmi Note 7 - tras el robo de mi antiguo Redmi Note 5 - y no podría estar más contento con él. Es un teléfono muy bien balanceado que cumple con cualquier tarea, incluso con aquellas que exigen de un procesado más potente.

La cámara también es fantástica. Tiene un gran nivel detalle y nada que envidiarle a otros teléfonos de gamas más altas. Y es incluso mejor cuando en lugar de la aplicación de cámara nativa que viene de fábrica se usa la Google Camera, una aplicación que originalmente fue desarrollada de forma exclusiva para los teléfonos marca Pixel (Google) pero que la comunidad, de forma gratuita, ha hecho compatible con muchos dispositivos de otras marcas, entre ellos el Redmi Note 7.

Foto tomada con el Redmi Note 7 - sin filtros

Tras buscar y probar varias versiones de esta aplicación encontré la que os dejo aquí abajo. Aclarar que no soy ni tengo relación con el desarrollador de esta adaptación, tan sólo le he pasado un par de antivirus y la he probado sin ningún problema durante un mes.

Puedes descargar la app desde este enlace (subido a mega.co): http://bit.ly/2XGsYvB También puedes ver los resultados del antivirus haciendo click aquí.

Estudiar Ingeniería Informática en la Universidad de Cádiz

¿Quieres estudiar Ingeniería Informática en la Universidad de Cádiz? Aquí te doy mi opinión acerca del Grado

Si lees esto es porque o bien tú o un conocido tuyo está pensando en estudiar el Grado en Ingeniería Informática por la Universidad de Cádiz (UCA) y quiere saber si hacerlo es una buena idea o no, porque ya estás estudiando ahí y te comienzas a plantear si hiciste o no una buena elección o, y me alegraría mucho, eres una profesora o profesor de la escuela interesado por leer una opinión real acerca del grado.

Como no hay una respuesta única o sencilla a esta pregunta que te haces, no puedo sino desgranar los puntos que a mi parecer son más importantes a la hora de realizar o reafirmar esta elección.

En primer lugar, y esto es muy importante, una Ingeniería es complicada; si no lo fuera, perdería algo de gracia. A una Ingeniería Informática se viene a aprender a pensar de forma abstracta. No se viene en exclusiva, ni mucho menos, a aprender a 'picar' código. No se viene a aprender React, Angular, Kotlin o Java. Se viene a aprender lógica, a estructurar tu cerebro de forma que sea capaz de afrontar cualquier problema. Se viene a aprender Álgebra Lineal o Matemáticas Discretas, que es lo que se exige para cualquier puesto en empresas como Google, Amazon o Microsoft. Sí my friend, esto no es un paseo. Hay otras opciones absolutamente respetables y totalmente necesarias como son los grados medios o superiores. De hecho, a mí me habría encantado haber hecho un superior en informática antes de entrar en la carrera, pero eso es otra historia sobre la que tal vez algún día escriba.

Teniendo esto claro, si de veras lo que buscas es ser un futuro elemento clave de una StartUp, un Ingeniero en Google o Microsoft, continua leyendo.

¿Sí? Entonces ya sabes que quieres la mitad del título de este post: 'Estudiar Ingeniería Informática'. Pero ¿cómo es hacerlo en Cádiz? Tiene sus pros y sus contras, como supongo que los tendrán el hacerlo en cualquier otra ciudad del mundo.

Pros

  • El equipo de profesores es bueno y está, en general, motivado: esto es algo vital para tu enseñanza
  • El contenido que se enseña es difícil y útil: asignaturas como EDNL, IP, DA, MD o PCTR te ayudarán muchísimo en tu futuro profesional, aunque no lo veas muy claro al principio
  • Saldrás preparado o preparada con conocimientos realmente útiles para muchas StartUps o incluso grandes empresas
  • La escuela es pequeña, lo que fomenta una cierta familiaridad con las y los compañeros
  • Hay muchas becas de movilidad (Erasmus, Santander, etc): si quieres hacer una estancia en el extranjero no tendrás demasiados problemas en comparación con otras Universidades en las que la competitividad es mucho mayor
  • Existen muchas opciones para realizar prácticas de empresa, y estas se pueden encontrar fácilmente a través de la plataforma Ícaro

Contras

  • La carrera es a mi parecer demasiado corta: no da tiempo a enseñar tecnologías como JavaScript, básicas en el mercado laboral
  • Se fomenta la realización de un máster para completar los conocimiento que pudieran no haberse tocado en la carrera (esto ocurre en otras Universidades españolas)
  • Sólo podrás hacer estancias internacionales en cuarto de carrera, y sólo podrás convalidar asignaturas optativas
  • La universidad no está en Cádiz, sino a unos dos kilómetros del Campus de Puerto Real: no es posible ir en bicicleta desde Cádiz y las conexiones con transporte público son deficientes y caras
  • Aunque termines y hagas tus prácticas en Cádiz, es muy probable que para seguir creciendo profesionalmente tengas que irte de la provincia

Me gustaría que este fuera un artículo vivo. Podría seguir escribiendo pros, contras, mis opiniones acerca de qué tecnologías deberían enseñarse en la carrera y cuáles no, qué optativas son las mejores en función a tus objetivos, etc, pero quiero dejarlo, por ahora, en este punto. Si tienes alguna duda puedes escribir un comentario, mandarme un email o escribirme a LinkedIn. Contestaré con gusto a tus preguntas y con ellas trataré de ampliar este artículo.

Gracias y suerte, Ernesto.

Instalar Python, Pip y Virtualenv en Windows 7 / 8 / 10 (viniendo de Linux y sin sufrir en demasía en 2019)

Una hora es el tiempo que he dedicado a instalar y configurar python en Windows 10; algo que en cualquier distribución Debian habría sido coser y cantar. Dejo a continuación los pasos que he seguido para que, con suerte, tú lo logres en menos tiempo.

Descarga python

Ve a esta web: https://www.python.org/downloads/windows/ y descarga la versión de Python que necesites. Recuerda bajarte la opción de 32 (x86) o 64 (x64) bits, según lo necesites. Por ejemplo, para usar Tensorflow necesitarás Python 3.5 x86/x64.

Ejecuta el instalador

Haz clic en opciones avanzadas y asegúrate de seleccionar la opción 'añadir al path de Windows', 'instalar para todos los usuarios' y de no instalarlo dentro de 'program files'. En su lugar, instálalo en una carpeta que no requiera de privilegios avanzados como 'C:\Python35'.

Verifica la instalación

Abre la consola 'powershell', la 'cmd' o la que sea que te resulte más cómoda y escribe:

  • `python --version`
  • `pip --version`

Ambos comandos deberían imprimir por pantalals la versión de Python y de pip (el instalador de paquetes de Python).

Entornos virtuales (virtualenvs)

A continuación, instala virtualenv desde la raíz de tu ordenador.

  • cd C:\
  • `pip3 install -U pip virtualenv`

Instalamos este paquete desde la raíz del PC (C:) porque de hacerlo desde C:\users\Ernesto, por ejemplo, tendríamos errores de permisos.

-U significa que la instalación se va a realizar de forma global a toda tu instalación, para lo cuál debemos ejecutar el comando desde la raíz del sistema.

Antes de inicial un proyecto nuevo

Cada vez que vayas a crear un nuevo proyecto, crea antes un entorno virtual en la raíz del mismo. En realidad puedes poner el entorno donde sea siempre que recuerdes añadirlo a tu .gitignore. Teniéndolo en la raíz de un proyecto facilita (bajo mi punto de vista) las cosas. Ejecuta los siguientes comandos con la powershell (ya que en caso de haber errores, los mostrará en la consola).

  • cd carpeta_proyecto
  • virtualenv --system-site-packages -p python ./venv
  • .\venv\Scripts\activate

Un entorno virtual de python no es más que una instalación de Python a nivel de proyecto. Imagina que tienes dos proyectos, A y B, en tu PC que van a requerir del paquete de Python 'X'. A requiere de la versión 1.0 de X y B de la versión 3.2 de X. No deberías instalar a nivel global dos versiones del mismo paquete. La solución: tanto A como B tienen un entorno virtual de Python instalado dentro del cada cuál tendrás la versión que requieras de X.

En caso de error al ejecutar '.\venv\Scripts\activate'

Es posible que te encuentres con un error al ejecutar la activación del entorno virtual. Esto se debe a que tu Sistema Operativo no permite la ejecución de Scripts no firmados. El error des que hablo debería decir algo como:

...la ejecución de scripts está deshabilitada en este sistema...

  • Ejecuta Get-ExecutionPolicy en la consola. Probablemente devolverá Restricted. En tal caso, pasa al siguiente punto.
  • Cierra todas las terminales que tengas abiertas (powershells, cmds, etc).
  • Abre una nueva powershell con privilegios de administrador. Introduce los comandos:
  • `Set-ExecutionPolicy Unrestricted -Force`
  • `.\venv\Scripts\activate`
  • Listo, ya no debería haber error. Cuando quieras desactivar el entorno virtual, simplemente escribe 'deactivate'.

Quiero ser desarrollador web y no sé qué framework escoger: te echo una mano

Un gran quebradero de cabeza al que estamos sometidos todos los informáticos que nos dedicamos al desarrollo web es la elección del framework con el cual vamos a desarrollar nuestros proyectos. En este breve artículo quiero dejar una reflexión / guía que con suerte podrá ayudarte a continuar tu carrera como desarrollador de una forma más aliviada.

 

Mi nombre es Ernesto y soy Ingeniero Informático. Aunque no me especialicé en desarrollo web, es en esto en lo que he estado trabajando los últimos años, y es algo que me gusta mucho. Cuando comencé a trabajar poca era la idea que tenía de JavaScript (venía de Java y C), y sin embargo, dos semanas después estaba usando AngularJS. No era un experto ni mucho menos, pero ahí estaba yo, usándolo para programar aplicaciones reales.

 

Interesado por este mundillo, seguí investigando por mi cuenta en mis ratos libres, y descubrí otros frameworks tanto de back-end como de front-end. Frameworks de todas las clases, colores y lenguajes. Descubrí cientos de artículos en los cuales se comparan todos los aspectos de todos estos frameworks, convirtiendo un proceso que debería ser sencillo en una auténtica pesadilla. Aún a día de hoy, cuando voy a comenzar un nuevo proyecto, caigo en la tentación de aprender el nuevo framework de moda. Y es precisamente por eso que me decidí a escribir estas líneas; es por esto que he redactado los siguientes tres puntos que deberían servirte para hacerte una idea de lo que la industria pide hoy en día:

 

1: Los cimientos

Sea cual sea la curva de aprendizaje de un framework frontend, en el fondo va a estar basado en JavaScript. Incluso si usa TypeScript, JavaScript siempre va a estar ahí, sencillamente porque es la piedra angular de todo el desarrollo web moderno. Esto debería darte la primera pista en tu carrera para ser un buen desarrollador: aprende JavaScript, sin más. Una vez tengas nociones básicas de este lenguaje, no dependerás de ningún framework nunca más, y podrás escoger el que desees de forma libre.

 

2: Mantén la cabeza fria

Ya sabes JavaScript, pero aún no dominas ningún framework. No importa, pues ya eres más valioso que muchos full stack rock star developers. Ahora, haz una lista de las empresas o proyectos en los que quieres trabajar. Si no quieres nada en concreto, busca los sueldos divididos por tecnologías, o sigue cualquier otro criterio. Coge el primer framework de la lista y haz su tutorial oficial más algún otro (ni siquiera hace falta que lo termines cuando ya hayas pillado la idea). ¿Te has sentido cómodo? Si sí, has dado con el framework de tus sueños. Pasa al paso 3. Si no, repite el paso 2 hasta que o bien se te acabe el tiempo o des con un framework que cumpla tus expectativas personales y profesionales. ¿No estás seguro de si te gusta o no? Ve al tercer paso. Si no te hubiera gustado ni te lo cuestionarías.

 

3: Domínalo

Ya tienes tu framework. Da igual cuántas estrellas tenga en GitHub, que no lo conozca nadie de tu entorno o que sean pocos los artículos que estén escritos acerca del mismo en Medium. Te gusta y hay empresas que te van a pagar por saber usarlo. Es todo lo que necesitas saber. Olvídate de benchmarks y artículos click bait comparativos. Hazte con ese Framework, aplica a trabajos que lo requieran y úsalo hasta la saciedad.

 

Eso es todo. Quien mucho abarca poco aprieta. Si tienes cualquier duda, no dejes de escribir en los comentarios. Estaré encantado de ayudarte con tus preguntas.

Instalar recovery TWRP Xiaomi (mi5, mi6, note y otros) 2018

En este artículo voy a resumir los sencillos pasos que debes seguir para instalar el recovery TWRP en cualquier modelo de la marca Xiaomi. No me hago responsable de la mala utilización de esta guía.

Requisitos

Paso 1

Instala todos los drivers que acabas de descargar (driver_ADBDriverInstaller.exe, driver_adb-setup-1.3.exe, driver_UniversalAdbDriver.msi).

Paso 2

Descomprime la carpeta Fastboot installer.zip que descargaste antes.

Accede a la web oficial del proyecto TWRP y busca tu modelo Xiaomi: https://twrp.me/Devices/Xiaomi/

Entra en la página de tu modelo y accede a la sección Download Links, haz clic en Primary Americas Europe y descarga la última versión del TWRP en la carpeta 'Fastboot installer' que acabas de descomprimir.

Paso 3

Apaga tu teléfono. Cuando esté apagado, pulsa, a la vez, la tecla de bajar volumen + la tecla de encendido. Accederás al menú recovery de tu teléfono.

Paso 4

Conecta tu teléfono al ordenador. Entra a la carpeta 'Fastboot installer'. Ejecuta el archivo 'adb_cmd.exe'. Se abrirá una terminal. Cuando esté cargada, introduce los siguientes comandos:

[code]

fastboot device

[/code]

Al ejecutar este comando, deberás ver algo similar a la siguiente imagen:

Esto simplemente indica que has conectado correctamente tu teléfono con el modo recuperación activado.

Ejecuta el siguiente comando:

[code]

fastboot flash recovery NOMBRE_DEL_ARCHIVO_TWRP

[/code]

Donde NOMBRE_DEL_ARCHIVO_TWRP es el nombre del archivo que has descargado desde la web oficial del proyecto TWRP. Por ejemplo, al momento de escribir estas líneas la última versión de TWRP disponible para el Xiaomi mi5 es la 'twrp-3.2.3-0-gemini.img'. Así que mi comando quedaría como:

[code]

fastboot flash recovery twrp-3.2.3-0-gemini.img

[/code]

Tras pulsar enter y esperar unos segundos, deberá aparecer el mensaje 'Okay!'. S se produce un fallo es que probablemente no has desbloqueado el bootloader de tu teléfono.

Si todo va correctamente, introduce el siguiente comando:

[code]

fastboot boot NOMBRE_DEL_ARCHIVO_TWRP

[/code]

Y, por último reinicia el teléfono con:

[code]

fastboot reboot

[/code]

Al reiniciarse, tu teléfono debería entrar automáticamente en el menú de TWRP desde el cuál podrás instalar ROMs customizadas o lo que sea que necesites.

Saludos, y si tienes alguna duda, déjala en los comentarios: se te responderá en la medida de lo posible.

Eliminar código de idioma de post existentes Polylang en WordPress

Eliminar el código de idioma de tus páginas wordpress con polylang

Este artículo podría ser útil para aquellos usuarios de WordPress que tengan instalado Polylang y que tras haberlo usado durante un tiempo con el código de idioma incluido en la url de su web, ahora quieren hacer que el idioma se detecte de forma dinámica eliminando por tanto este código de idioma de la url.

Es decir, imagina que tienes un post llamado mi-post. Hasta ahora para acceder a dicho post tus usuarios accedían a través de una url como mi-sitio.com/es/mi-post, y ahora quieres que se pueda acceder a través de mi-sitio.com/mi-post.

Para hacer este cambio sin que repercuta en la experiencia de usuario de tus visitantes, accede via ftp a la raíz de tu instalación WordPress, encuentra el archivo .htaccess, ábrelo, edítalo y añade el siguiente código:

# BEGIN WordPress
RewriteRule ^es/(.+)$ /$1 [R=301,L]
RewriteRule ^en/(.+)$ /$1 [R=301,L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Manual Original de la Canonet QL19

Una de las cosas que me llevé de Vietnam, cuando estuve haciendo mis prácticas de empresa como Ingeniero Informático en Saigón, fue una antigua (pero perfectamente conservada) Canonet QL 19. Vino sin guía, así que me las apañé para dar con ella por internet. La puedes encontrar haciendo clic en esta línea. Si, como es posible, te he ahorrado unas horas de búsqueda, ¿por qué no nos ayudas con nuestra web donando lo que cuesta un café más abajo?

Prácticas de empresa como informático en Vietnam – Mi experiencia con las becas Faro

Allá por mayo del 2017 una amiga me recomendó inscribirme en el programa ‘Faro’ de la universidad de Valladolid. Este programa facilita enormemente el realizar prácticas de empresa en cualquier rincón del mundo. Tres meses después estaba volando rumbo a Saigón.

La decisión de adherirme a este programa vino en un momento en el que estaba totalmente volcado en mi Proyecto de Fin de Carrera, lo cual hizo que todo el proceso de selección ocurriera en un segundo plano.También coincidió con las fechas en que presentamos el proyecto AtréBT de la Universidad de Cádiz.

Escribo este texto desde un café cercano a la iglesia de Gia Định, que a su vez está junto al mercado de Bà Chiểu (Chợ Bà Chiểu) en el distrito que ha sido mi hogar durante los últimos siete meses, Bình Thạnh. Quedan unas escasas dos semanas para llegar al fin de mis prácticas y creo que es el momento idóneo para valorar el apartado profesional de esta experiencia. Otros artículos serán dedicados a distintos aspectos de la vida en Saigón.

Como Ingeniero Informático sin apenas experiencia previa no tenía la menor idea de lo que podía encontrarme en este u otro lado del mundo, pero tras hablar con distintos colegas que trabajan en campos diferentes siento que mis prácticas han sido únicas por distintas razones que voy a tratar de desgranar en los siguientes párrafos.

La empresa para la que he trabajado estos meses no tenía ningún informático contratado sino que depende de una empresa de outsourcing alemana-suiza. Es con los ingenieros vietnamitas de esta última con quienes comencé mi periplo informático en Saigón. El proyecto inicial al que estuve destinado consistía en desarrollar una ERP (Enterprise Resource Planning) para la factoría de mi empresa. Los primeros días de trabajo los empleé yendo a las oficinas de esta empresa alemana donde me instruyeron en el manejo de las herramientas que estaban empleando para desarrollar el software. Estas son el framework de desarrollo web Lucee (basado en CFML) y un Angular adaptado a la ERP. ¡También trataron de explicarme vía pelos y señales la arquitectura de la aplicación, ya que no existe ni existía ningún tipo de documentación acerca del funcionamiento o planteamiento de la misma!

Con el paso de los días fui descubriendo las distintas capas del software con el que tendría que lidiar los próximos meses; cada una de ellas había sido desarrollada por un programador distinto sin seguir guía de estilo alguna y con poca idea de cómo una aplicación mantenible debería estar estructurada. Recuerdo que me daba apuro expresarles que el código espagueti que estaban desarrollando no era en absoluto válido en una aplicación desarrollada por una firma de ingeniería, pero llegados al punto donde estaba la aplicación, ya no podía deshacer tal maraña sin desmontar todo el sistema y comenzarlo desde cero en los seis meses que duraría mi práctica.

Tras unas dos semanas yendo a la empresa de outsourcing, que está a casi una hora en moto (¡con todo lo que ello implica en una ciudad como Saigón!) de mi casa, me despedí de los programadores con los que había estado trabajando, en especial de Thinh, quien fue el primer vietnamita con quien hice algo de migas y Steven, el jefe del proyecto cuyo nombre real es Linh. Me fui con un sabor amargo, pues no podía evitar sentir que esta gente le estaba tomando el pelo a la empresa que realmente me había contratado a través del programa Faro.

Jamás volví a las oficinas de la empresa alemana-suiza; desde aquel día nos comunicamos vía Skype y Jiraa. Poco después me enteré de los graves problemas financieros que acusaban a la firma de ingeniería, y también comencé a recibir ofertas de empleo por parte de Steven.

Desde octubre hasta el día de hoy he estado trabajando desde la factoría textil de mi empresa. Como ya dije antes, ésta no tiene ningún informático contratado al 100% del tiempo sino que dejan recaer sus necesidades IT en otras compañías como la alemana-suiza, otra empresa vietnamita de telecomunicaciones, otra de reparación y mantenimiento de equipos informáticos y una última que se encarga de las máquinas especializadas de la propia factoría. Ahí, en medio de esa vorágine de subcontratas estaba yo, sin compañero fijo de trabajo dedicado a mi misma tarea.

De octubre a principios de diciembre seguí trabajando en la ERP conectado en remoto con los informáticos vietnamitas de la empresa de outsourcing. La rutina era extraña pues iba a un puesto de trabajo físico en el que no podía hablar con nadie cara a cara acerca de ningún detalle técnico, sino que en realidad todos estos temas se trataban via Skype. En los descansos hablaba con los trabajadores de la factoría, cuyas tareas no tenían nada que ver con la mía.

Esta situación cambió a comienzos del mes de diciembre cuando el caos de gestión y estructura del proyecto de la ERP pudieron conmigo y pregunté a mi jefe si podría diseñar y encargarme yo de mi propio proyecto en los últimos tres meses de mis prácticas. Dijo que sí, y me presentó varias ideas de aplicaciones que querían desarrollar en un futuro, y me dejó escoger la que yo quisiera.

De éstas escogí un sistema de venta online que tenían pendiente por desarrollar; se trataba una tienda online que debía integrar un sistema de gestión de stocks que se sincronizara con la ERP. También pude escoger tecnologías, lo cuál acabó resultando ser la mejor decisión que tomé en estas prácticas ya que escogí Vue js para el frontend y Python para el backend, unas tecnologías con las que tenía muchas ganas de aprender y emplear en profundidad. A estas alturas de la película me desenvuelvo con soltura y celeridad en ambas tecnologías y soy capaz de integrarlas perfectamente para desarrollar cualquier tipo de aplicación.

Allá por febrero me ofrecieron desarrollar otra aplicación, en este caso para la Ironman Vietnam 2018. Ésta consiste en un sistema de impresión automatizado que se sincroniza con los tiempos de la mundialmente conocida triatlón, generando archivos de impresión que permiten diseñar prendas personalizadas en tan solo unos instantes. Por supuesto, dije que sí, y desarrolle la aplicación con el apoyo de Sport Stats Asia.

En resumen, estás prácticas profesionales no han sido perfectas, pero tremendamente enriquecedoras. He visto lo que un mal equipo puede lograr, la necesidad de una clara arquitectura y de una buena técnica. Por otro lado me arrepiendo de no haber trabajado más junto a Steven, el jefe de la empresa alemana quien creo podría haberme aconsejado en el desarrollo del sistema de venta online.

Pese a todo, este breve repaso a los maravillosamente frenéticos meses que he pasado en Saigón no hacen sino despertar en mí una feliz sonrisa, y la bella incertidumbre de no tener certeza alguna de cuál será mi próximo destino.

Ernesto en Saigon a 25 de marzo del 2018.