Profile picture

Ángel Morillas

Desarrollador junior

He aprendido la mayoría de las cosas por mí cuenta a pesar de haber estado unos cuantos años en la Universidad de Granada

Stack de desarrollo

Tecnologías versátiles

Node.js

  • Conocimientos de la API estándar de node.js
  • Conocimiento a bajo nivel de la rutina y el bucle de eventos de node.js
  • Sequelize
  • Websockets (uWebsockets, socket.io y vanilla)
  • Frameworks basados en express y fastify
  • Flow
  • Estilo de programación funcional

MYSQL

  • Consultas básicas de PostgreSQL
  • Instalación y puesta en marcha de bases de datos
  • Conocimiento del funcionamiento a bajo nivel de los índices para optimizar consultas

C++

  • Conocimiento intermedio de C++
  • Estilo de código moderno (C++11+)
  • Contenedores y funciones de la STD
  • Conocimiento de plantillas y lamdas
  • Conocimiento a bajo nivel de las funciones y contenedores más usados de la STD
  • Esperando la llegada de los módulos de C++20

Conocimiento de Linux

  • Conocimiento intermedio de las consolas bash
  • Experiencia con sistemas operativos basados en Debian y Arch Linux
  • Uso del daemon cron para programar tareas periódicas
  • Conocimiento de uso de UFW (ubuntu firewall)
  • Creación de scripts bash sencillos
  • Monitorización del rendimiento
  • Conocimiento del funcionamiento del sistema operativo a bajo nivel

Anti-hype

Capacidad de detectar y evitar el uso innecesario de tecnologías que han conseguido su fama a base de bombo y platillo.

Minimalismo

Aunque por lo general no se asocial el minimalismo a la programación me gusta escribir código conciso y altamente reutilizable utilizando únicamente los paquetes NPM estrictamente necesarios e intentando utilizar la API estándar de node.js en su lugar cuando es posible.

En los despliegues evito el uso de dependencias como Redis, Docker, etc. excepto en el caso de que el servicio necesite una mayor escalabilidad.

Proyectos

Cppaillier

Una implementación en C++ del criptosistema de Paillier que incluye operaciones homomórficas y algunas pruebas de conocimiento cero (ZKPs) como las de pertenencia a conjunto y descifrado correcto.

@kran6a/memoize

Un memoizador de funciones para javascript con cero dependencias compatible con node.js y los navegadores escrito prestando una gran atención al rendimiento. Originalmente fue creado para memoizar algunas llamadas a bases de datos de forma transparente y sin tener que reescribir la lógica de la aplicación y sin recurrir a dependencias o herramientas externas como podría ser Redis.

@kran6a/emissor

Un emisor de eventos para javascript con muy buen desempeño que utiliza la composción funcional para componer los manejadores de cada evento, permitiendo pasar el valor de retorno de un manejador al siguiente.

También soporta la composición de funciones asíncronas de forma transparente.

Contáctame