aaron@portfolio — zsh

whoamishows who is logged inmuestra quién es el usuario actual

Aaron Aguayo MartínezAaron Aguayo Martínez

catdisplays the contents of a filemuestra el contenido de un archivo role.txtrol.txt

Data Engineer / AI Developer · Sevilla, SpainIngeniero de Datos / Desarrollador de IA · Sevilla, España

catdisplays the contents of a filemuestra el contenido de un archivo focus.txtenfoque.txt

Data architecture · AI integration in pipelines · AWS cloud solutionsArquitectura de datos · Integración de IA en pipelines · Soluciones de cloud en AWS

catdisplays the contents of a filemuestra el contenido de un archivo about-me.txtsobre-mi.txt

Data Engineer with 12 years of experience in the IT sector, experience in cloud, data, automation and AI. AWS Certified (x5)Ingeniero de Datos con 12 años de experiencia en el sector IT, experiencia en cloud, datos, automatización e IA. Certificado en AWS (x5)

echoprints text to the screenmuestra un texto en pantalla "Open to new AI and Data projectsAbierto a nuevos proyectos de IA y Datos"

LanguagesIdiomas

  • SpanishEspañol NativeNativo
  • EnglishInglés C1C1
  • FrenchFrancés BasicBásico

ProgrammingProgramación

  • Python
  • SQL
  • Bash
  • C# .NET
  • R
  • HTML5
  • PHP
  • JavaScript

SkillsHabilidades

$ filter --category

76 skills76 habilidades

PythonC# .NETSQLPHPJavaScriptHTML5CSS3BashRS3GlueAthenaEMRRedshiftKinesisSpark / PySparkHadoopHiveAirflowKafkaETL / ELTData LakeData WarehousingDelta LakeParquet / Avro / ORCTensorFlowPyTorchScikit-learnKerasSageMakerBedrockLLMsComputer VisionYOLOMLOpsPower BIQuickSightPandasNumPyMatplotlibLambdaStep FunctionsEventBridgeAPI GatewaySNSSQSECSECRIAMCloudWatchCloudTrailCloudFormationTerraformDockerGitGitHub ActionsCodePipelineCI/CDCognitoLake FormationBatchDynamoDBRDSPostgreSQLSQL ServerMySQLMongoDBLinux/VPS AdministrationWindows ServerActive DirectoryNetworkingDNSNginx / ApacheSSHFirewalls / VPNREST APIs

ProjectsProyectos

aaaguayo.dev portfolioaaaguayo.dev portfolio

Static site built with Astro + Tailwind, served from a global CDN with fully serverless technologies. Bilingual EN/ES with automated CI/CD on every push.Sitio estático con Astro + Tailwind, servido desde una CDN global con tecnologías serverless. Bilingüe EN/ES con CI/CD automatizado en cada push.

EventezEventez

Serverless event management app — guest RSVP, live photo wall via QR code, and admin dashboard. Full AWS stack with Python Lambdas, API Gateway and DynamoDB.App serverless de gestión de eventos — RSVP de invitados, muro de fotos vía QR y panel de admin. Stack AWS completo con Lambdas Python, API Gateway y DynamoDB.

AI / ML experimentsExperimentos de IA / ML

Small projects applying machine learning to real-world datasets — computer vision, NLP and tabular data, using PyTorch, Scikit-learn and AWS SageMaker.Pequeños proyectos aplicando machine learning a datos reales — visión por computador, NLP y datos tabulares, con PyTorch, Scikit-learn y AWS SageMaker.

status: coming soonestado: próximamente

aaron@portfolio — aaaguayo.dev architecture

aaaguayo.dev — architectureaaaguayo.dev — arquitectura

A fully static build with no backend and no database — every page is pre-rendered and served from a global CDN, with a fully automated deploy pipeline.Un build totalmente estático, sin backend ni base de datos — cada página se pre-renderiza y se sirve desde una CDN global, con un pipeline de despliegue totalmente automatizado.

stack: AstroTailwindAWSS3CloudFrontACMCloudflareGitHub Actions
Visitor browser Cloudflare DNS · proxy (CDN/WAF) CloudFront edge cache · ACM TLS S3 bucket static hosting GitHub Actions CI/CD on push HTTPS proxy origin purge cache invalidate deploy
Visitante navegador Cloudflare DNS · proxy (CDN/WAF) CloudFront caché edge · TLS (ACM) Bucket S3 hosting estático GitHub Actions CI/CD en cada push HTTPS proxy origen purgar caché invalidar desplegar

FrontendFrontend

Astro 3 in static-output mode + Tailwind CSS — no client framework, no hydration. The site is bilingual (EN/ES) via a dual-render component and a CSS toggle, so there is no i18n routing. The only JavaScript on the page is the language switch and the <dialog>-based modals (this one included).Astro 3 en modo de salida estática + Tailwind CSS — sin framework de cliente ni hidratación. El sitio es bilingüe (EN/ES) mediante un componente de renderizado dual y un toggle CSS, sin enrutamiento i18n. El único JavaScript de la página es el cambio de idioma y los modales basados en <dialog> (incluido este).

Hosting & CDNHosting y CDN

The build output is synced to an S3 bucket (eu-west-1) configured for static website hosting — no servers, no containers. CloudFront sits in front as the CDN, caching pages at edge locations worldwide and terminating TLS close to the visitor.El resultado del build se sincroniza con un bucket S3 (eu-west-1) configurado para hosting web estático — sin servidores ni contenedores. CloudFront actúa como CDN, cacheando las páginas en ubicaciones de borde de todo el mundo y terminando el TLS cerca del visitante.

DNS & TLSDNS y TLS

DNS lives in Cloudflare and points the domain at the CloudFront distribution. The TLS certificate is issued and renewed automatically through AWS ACM, so HTTPS just works without manual renewals.El DNS está en Cloudflare y apunta el dominio a la distribución de CloudFront. El certificado TLS se emite y renueva automáticamente mediante AWS ACM, por lo que el HTTPS funciona sin renovaciones manuales.

CI/CDCI/CD

A GitHub Actions workflow builds the site on every push to main/development, runs "aws s3 sync --delete" against the bucket, invalidates the CloudFront distribution, and purges the Cloudflare cache — fully automated, no manual deploy steps.Un workflow de GitHub Actions construye el sitio en cada push a main/development, ejecuta "aws s3 sync --delete" contra el bucket, invalida la distribución de CloudFront y purga la caché de Cloudflare — totalmente automatizado, sin pasos manuales.

aaron@portfolio — eventez architecture

Eventez — architectureEventez — arquitectura

A serverless event management platform — fully hosted on AWS with no traditional servers. The same CDN pattern as this portfolio, extended with a REST API, auth, a database, and a photo upload pipeline.Una plataforma serverless de gestión de eventos — completamente alojada en AWS sin servidores tradicionales. El mismo patrón CDN que este portfolio, extendido con una API REST, autenticación, base de datos y pipeline de subida de fotos.

stack: AstroTailwindPythonAWSLambdaAPI GatewayDynamoDBS3CloudFrontCDK
Guest browser · mobile API Gateway HTTP API · JWT auth Lambda Python 3.12 functions DynamoDB ×2 tables CDK + CI/CD Python IaC · GH Actions S3 Photos presigned · CDN HTTPS + JWT invoke r/w presigned URL cdk deploy provisions
Invitado navegador · móvil API Gateway HTTP API · auth JWT Lambda Funciones Python 3.12 DynamoDB ×2 tablas CDK + CI/CD IaC Python · GH Actions S3 Fotos presignada · CDN HTTPS + JWT invocar l/e URL presignada cdk deploy aprovisiona

Frontend & CDNFrontend y CDN

Astro + Tailwind static site deployed to S3 and served via CloudFront — the same pattern as this portfolio. Built mobile-first for guests using phones at the event. No client framework; all dynamic behaviour (RSVP, uploads) is handled via API calls.Sitio estático Astro + Tailwind desplegado en S3 y servido por CloudFront — el mismo patrón que este portfolio. Diseño mobile-first para invitados usando el móvil en el evento. Sin framework de cliente; toda la funcionalidad dinámica (RSVP, subidas) usa llamadas a la API.

Serverless APIAPI Serverless

API Gateway HTTP API routes each request to a dedicated Python 3.12 Lambda — one per endpoint group. JWT validation lives in a shared Lambda layer (PyJWT + validators), so auth logic is never duplicated. A separate admin Lambda handles all /admin/* routes via path dispatch.API Gateway HTTP API enruta cada petición a una Lambda Python 3.12 dedicada — una por grupo de endpoints. La validación JWT reside en una Lambda layer compartida (PyJWT + validadores), evitando duplicar lógica de autenticación. Una Lambda de admin separada gestiona todas las rutas /admin/* por despacho de ruta.

Database DesignDiseño de base de datos

Two DynamoDB tables: a single-table design for event/guest/RSVP entities (with a GSI for full event scans), plus a separate photos table — isolated because photos scale at a different rate and require a tighter IAM boundary so the photo Lambda cannot access guest data.Dos tablas DynamoDB: diseño de tabla única para entidades evento/invitado/RSVP (con GSI para escaneos completos), más una tabla de fotos separada — aislada porque escala a distinta velocidad y requiere un límite IAM estricto para que la Lambda de fotos no acceda a datos de invitados.

Photo WallMuro de fotos

A QR code printed at the venue opens a mobile upload page (no login required). The browser compresses images to max 1920 px, requests a 5-minute presigned S3 URL from Lambda, then PUTs directly to S3 — the backend never handles the binary. The photo wall polls every 10 s and renders a pure-CSS masonry grid.Un QR impreso en el evento abre una página de subida móvil (sin login). El navegador comprime imágenes a máx. 1920 px, solicita a Lambda una URL S3 presignada de 5 minutos y hace PUT directo a S3 — el backend nunca maneja el binario. El muro de fotos hace polling cada 10 s y renderiza una cuadrícula CSS masonry.

SecuritySeguridad

Phone numbers are stored only as SHA-256 hashes — never in plaintext or logs. JWTs are signed with a 256-bit secret from SSM Parameter Store. CORS is locked to the production domain only. Each Lambda has its own IAM role, scoped to the minimum required resources and actions.Los teléfonos se almacenan solo como hashes SHA-256 — nunca en texto plano ni en logs. Los JWTs se firman con un secreto de 256 bits desde SSM Parameter Store. El CORS está restringido al dominio de producción. Cada Lambda tiene su propio rol IAM limitado a los recursos y acciones estrictamente necesarios.

IaC & CI/CDIaC y CI/CD

The full stack is defined in AWS CDK (Python) — DynamoDB tables, S3 buckets, Lambda functions with individual roles, API Gateway routes, and CloudFront distributions. On push to main, GitHub Actions runs cdk deploy, syncs the frontend to S3, and invalidates CloudFront.Toda la infraestructura está definida en AWS CDK (Python) — tablas DynamoDB, buckets S3, funciones Lambda con roles individuales, rutas de API Gateway y distribuciones CloudFront. En cada push a main, GitHub Actions ejecuta cdk deploy, sincroniza el frontend a S3 e invalida CloudFront.

aaron@portfolio — experience

ExperienceExperiencia

Data EngineerIngeniero de Datos @ Verisk Underwriting Solutions

2024 — Present

Ireland · Full remote, SpainIrlanda · Remoto desde España

  • Designed and built a custom serverless Data Loader for risk insurance data processing, using C# .NET, Python, and AWS (Glue, Lambda, S3, Batch) in a containerized Docker architecture.Diseñé y desarrollé un Data Loader serverless a medida para el procesamiento de datos de seguros de riesgo, usando C# .NET, Python y AWS (Glue, Lambda, S3, Batch) en una arquitectura containerizada con Docker.
  • Loaded data from multiple sources/formats into DynamoDB, SQL Server and MySQL.Cargué datos de múltiples fuentes y formatos en DynamoDB, SQL Server y MySQL.
  • Built a secure, automated cross-cloud file transfer system between AWS and Azure using Lambda, Cognito, S3 triggers, SES and EventBridge.Construí un sistema seguro y automatizado de transferencia de archivos entre AWS y Azure usando Lambda, Cognito, S3 triggers, SES y EventBridge.
  • Implemented monitoring and logging with CloudWatch, SES and Athena for faster issue resolution.Implementé monitorización y registro de eventos con CloudWatch, SES y Athena para una resolución de incidencias más rápida.
AWSPythonC# .NETDockerSQLGlueLambdaEventBridge

Software DeveloperDesarrollador de Software @ XZelenzia

2022 — 2024

Sevilla, Spain · HybridSevilla, España · Híbrido

  • Designed and developed an e-commerce site for direct customer sales.Diseñé y desarrollé un sitio de e-commerce para venta directa a clientes.
  • Built a custom CRM from scratch, integrated with the website and synced with Amazon inventory and customer data.Construí un CRM a medida desde cero, integrado con el sitio web y sincronizado con el inventario y los datos de clientes de Amazon.
  • Created PowerBI reports via SQL-driven scripts aggregating data from multiple sources.Creé informes en PowerBI mediante scripts SQL que agregaban datos de múltiples fuentes.
AWSPHPSQLJavaScriptPythonPowerBIREST API

Manager & Software DeveloperResponsable y Desarrollador de Software @ Electronikars

2014 — 2022

Sevilla, Spain · On-siteSevilla, España · Presencial

  • Analyzed compressed CAN-BUS data from vehicles and built a communications simulator to test repair services under different driving conditions.Analicé datos comprimidos CAN-BUS de vehículos y construí un simulador de comunicaciones para probar servicios de reparación en distintas condiciones de conducción.
  • Designed and maintained the full e-commerce stack: VPS hosting, APIs, DNS, databases, automations, chatbots and supplier/logistics integrations.Diseñé y mantuve toda la infraestructura de e-commerce: hosting VPS, APIs, DNS, bases de datos, automatizaciones, chatbots e integraciones con proveedores y logística.
Linux/VPSPHPSQLAutomationAPIs
aaron@portfolio — education

EducationFormación

  • Master's degree in Artificial Intelligence and Big DataMáster en Inteligencia Artificial y Big Data — I.E.S. Zaidín Vergeles, Granada 2023 — 2024
  • Higher Technician in Computer Systems & Network AdministrationTécnico Superior en Administración de Sistemas Informáticos en Red — I.E.S. Rodrigo Caro, Sevilla 2011 — 2013
aaron@portfolio — contact

catdisplays the contents of a filemuestra el contenido de un archivo contact.txtcontacto.txt

EmailCorreo: aaaguayo.dev@gmail.com

GitHubGitHub: github.com/aaaguayo

LinkedInLinkedIn: linkedin.com/in/aaaguayo

echoprints text to the screenmuestra un texto en pantalla "Open to new AI and Data projectsAbierto a nuevos proyectos de IA y Datos"