Software developer, friki y padre de familia. Escribo sobre DevOps, homelab, desarrollo de software y retroinformática.

Montando mi propio Homelab con Raspberry Pi 4: Docker, Pi-hole, Tailscale y Cloudflare
Hacía tiempo que tenía ganas de montar una infraestructura doméstica con la que poder experimentar, aprender y disponer de servicios propios sin depender constantemente de soluciones externas. La idea inicial era sencilla: aprovechar una Raspberry Pi para centralizar servicios de red, mejorar la seguridad de mi conexión doméstica, monitorizar los dispositivos y disponer de acceso remoto cuando estuviera fuera de casa. Lo que empezó como una instalación de Pi-hole ha terminado convirtiéndose en un pequeño Homelab basado en Docker, Debian, Tailscale y Cloudflare. ...

Mesa Redonda CTO Summit.
Hace menos un año me invitaron a moderar una mesa en el CToSummit de Geekshubs, la verdad que fue todo un placer de compartir mesa con Alica Alcaide David Lluna y Pedro Díaz, la mesa fue muy interesante donde debatimos sobre DevOps, SRE, diferencias, buenas práctias, etc. No es un vídeo muy largo pero por si te interesa verlo aquí dejo el enlace. Y sobre todo dar las gracias Geekshubs y CToSummit por esta oportunidad. Nos vemos en otro post!!!

Skeletor for node inversify and typescript apps
Este proyecto lo cree como base para desarrollo de aplicaciones internas dentro de Geekshubs, con el objetivo de disponer de un entorno rápido de desarrollo e intentado acercar ciertas características de otros lenguajes a JavaScript enfocada a la programación orientada a objetos, por ejemplo la disponibilidad de Interfaces, tipado, etc. Además incluye como ORM, TypeOrm que nos permite disponer de diversas conexiones a diferentes tipos de Persistencia, tanto BD relacionales como no relacional y además con Inversify que nos permite disponer de un Contenedor de dependencias donde poder inyectar allí donde nos hace falta. ...

RabbitMQ
Este paquete lo desarrolle para un proyecto de un cliente que requería realizar diversas tareas asíncronas , pero también aquellas que requería respuesta por parte del consumidor de la cola, para ello explotamos la propiedad RPC que dispone RabbitMQ. El patrón es el que describe el tutorial de RPC de RabbitMQ. La lógica es sencilla el cliente realiza una petición y se adjunta a la cabecera una propiedad denominada correlation_id, el cliente espera a recibir de vuelta el mensaje con el correlation_id enviado también adjuntado a la cabecera del mensaje. Por ejemplo imaginemos que queremos recibir el número de factura desde otro servicio lo podríamos realizar de la siguiente manera: ...

Blog reloaded
Hola a todos, Después de mucho tiempo sin escribir nada me apetecía volver a las andadas y escribir de nuevo en el blog, la realidad es que durante estos últimos meses he tenido mucho trabajo entre cambio de empresa, cuestiones familiares, etc. me ha tenido apartado y centrado en otros proyectos. Lo últimos 3 años han sido de mucho trabajo y de aprendizaje como CTO tanto en Geekshubs como en Widitrade, lo que me ha llevado a querer volver a la base y regresar de nuevo como programador, necesito volver a picar, y creo que el blog es un buen medio para seguir avanzando y aprendiendo así como dejar parte de este proceso de aprendizaje para que otros puedan si quieren nutrirse de él. También he cambiado el blog, pasando de utilizar react-blog-pages un proyecto a priori bastante interesante , a utilizar hugo con github pages los motivos básicamente es por utilizar github como PaaS y despreocuparme de tener subido algún otro servicio la web. Recuperaré los posts antiguos y los iré también subiendo para que no se pierdan, e ir nutriendo el blog con diferentes temas no sólo técnico, sino de mi experiencia como CTO, y aquellas cosas que me llamen la atención, libros, vídeos, etc.. ...

Php es Molón?
Aquí va otro post de opinión, pero desde la perspectiva de la experiencia ya que he trabajado durante los últimos proyectos en PHP, en algunos casos con Laravel y en otros con Symfony. Tampoco quiero centrarme tanto en los frameworks sino más bién en el lenguaje y el ecosistema que lo envuelve que es bastante interesante. Un poco de historia. Php ya es un lenguaje que lleva varias décadas entre nosotros, la primera vez que apareció fue en el año 1995. Pero desde mi punto de vista hay varios factores que han conseguido que este lenguaje interpretado sea bastante interesante. ...

Clipper
Corría un verano de los 90 cuando en un videoclub de mi pueblo Catarroja empezó a disponer de un sistema de alquiler de cd’s de música, aquello me pareció todo una revolución dado que hasta ahora sólo tenían películas en VHS Y BETA, posteriormente empezaron también con el alquiler de videojuegos. Pues bien cuando fui ha pagar el alquiler tenía un ordenador sobre el mostrador y no la caja con las tarjetas de asociados a las que estaba acostumbrado. Vi que el dependiente cuando le daba la tarjeta de asociado, introdujo en pantalla el número en un formulario tipo MS-DOS y de repente aparecieron los datos de mi padre, posteriormente introdujo el código que habían pegado en la carcasa de la película y le aparecían los datos de la película y así iniciaba el proceso de alquiler. Bien aquello me pareció toda una revolución fue mi primer acercamiento de la informática dentro del mundo real, aunque también me lleve algún disgusto de alguna película que devolví fuera de plazo XDDD, un par de años más tarde estaba en el videoclub cuando llegó un “técnico” para instalar una nueva versión de la aplicación y hablaba con el dueño sobre un problema que habían encontrado y sobre algunas novedades de clipper. Bien clipper fue un lenguaje de programación procedural e imperativo que apareció en el año 1985, era un compilador para dBase III, lo que le daba la potencia de disponer en un mismo entorno la BD y el sistema para añadir la lógica necesaria para implementar cualquier aplicación . Durante unos años muchas aplicaciones se desarrollaron con clipper, y fue muy popular en videoclubs, etc. De hecho el lenguaje fue evolucionando incorporando características de otros productos del mercados, como XBase, FoxPro, etc. sacando nuevas versiones hasta alcanzar la versión 5.3b allá por el año 97. Como características principales: ...

Emuladores
Hace tiempo que quería meterme en el mundo de los emuladores y la verdad es que siempre me han llamado bastante la atención. Por la complejidad técnica que conlleva tanto conocer el sistema que quieres emular, como por el desarrollo en sí. Además ya que tengo cierta edad, siempre me cae alguna lagrimita al ver una fotografía del CPC 464 de Amstrad. Con el que empecé mis pinitos con 12 años y me inició en el mundo de la programación ya que con este equipo le acompañaba un libro de Basic. Al final del libro siempre había juegos escritos para que lo portaras a tu equipo. ...

Monitorizando nuestro servidores con Grafana, Influx Telegraph
Bueno vamos a acceder ahora al servidor cliente para poder enviarle métricas de nuestro servidor para ello vamos a utiliza telegraph Configuramos nginx comprobamos si los módulos para geo y status de nginx estan activados. Añadimos el ćodigo suficiente para poder comprobar el status de nginx, para ello nos dirigimos a la carpeta $> /etc/ningx/status Creamos un archivo denominado status.conf server { listen 127.0.0.1:9090; location /nginx_status { stub_status on; access_log off; allow 127.0.0.0/24; } } Comprobamos que funciona mediante el siguiente comando. ...

Monitorizando nuestro servidores con Grafana, Influx Telegraph
Bueno muchas veces tenemos que monitorizar diveras apps, y para no estar pasando de un pantalla a otra nos interesa tenerlo centralizado en un único punto. En la máquina Bastión 1º Creamos un directiorio dentro de: $>\opt\monitoring En el crearemos el siguiente script para docker-compose version: "2" services: grafana: image: grafana/grafana container_name: grafana restart: always ports: - 3000:3000 networks: - monitoring volumes: - grafana-volume:/var/lib/grafana influxdb: image: influxdb container_name: influxdb restart: always ports: - 8086:8086 networks: - monitoring volumes: - influxdb-volume:/var/lib/influxdbnetworks: monitoring:volumes: grafana-volume: external: true influxdb-volume: external: true El cual nos crea dos contenedores uno con grafana y otro con influxdb. ...