1
0
Files
mmorales99/CV.html
2025-08-22 19:21:35 +02:00

460 lines
12 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>CV.md</title>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<style>
/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
body {
font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif);
font-size: var(--vscode-markdown-font-size, 14px);
padding: 0 26px;
line-height: var(--vscode-markdown-line-height, 22px);
word-wrap: break-word;
}
#code-csp-warning {
position: fixed;
top: 0;
right: 0;
color: white;
margin: 16px;
text-align: center;
font-size: 12px;
font-family: sans-serif;
background-color:#444444;
cursor: pointer;
padding: 6px;
box-shadow: 1px 1px 1px rgba(0,0,0,.25);
}
#code-csp-warning:hover {
text-decoration: none;
background-color:#007acc;
box-shadow: 2px 2px 2px rgba(0,0,0,.25);
}
body.scrollBeyondLastLine {
margin-bottom: calc(100vh - 22px);
}
body.showEditorSelection .code-line {
position: relative;
}
body.showEditorSelection .code-active-line:before,
body.showEditorSelection .code-line:hover:before {
content: "";
display: block;
position: absolute;
top: 0;
left: -12px;
height: 100%;
}
body.showEditorSelection li.code-active-line:before,
body.showEditorSelection li.code-line:hover:before {
left: -30px;
}
.vscode-light.showEditorSelection .code-active-line:before {
border-left: 3px solid rgba(0, 0, 0, 0.15);
}
.vscode-light.showEditorSelection .code-line:hover:before {
border-left: 3px solid rgba(0, 0, 0, 0.40);
}
.vscode-light.showEditorSelection .code-line .code-line:hover:before {
border-left: none;
}
.vscode-dark.showEditorSelection .code-active-line:before {
border-left: 3px solid rgba(255, 255, 255, 0.4);
}
.vscode-dark.showEditorSelection .code-line:hover:before {
border-left: 3px solid rgba(255, 255, 255, 0.60);
}
.vscode-dark.showEditorSelection .code-line .code-line:hover:before {
border-left: none;
}
.vscode-high-contrast.showEditorSelection .code-active-line:before {
border-left: 3px solid rgba(255, 160, 0, 0.7);
}
.vscode-high-contrast.showEditorSelection .code-line:hover:before {
border-left: 3px solid rgba(255, 160, 0, 1);
}
.vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before {
border-left: none;
}
img {
max-width: 100%;
max-height: 100%;
}
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a:focus,
input:focus,
select:focus,
textarea:focus {
outline: 1px solid -webkit-focus-ring-color;
outline-offset: -1px;
}
hr {
border: 0;
height: 2px;
border-bottom: 2px solid;
}
h1 {
padding-bottom: 0.3em;
line-height: 1.2;
border-bottom-width: 1px;
border-bottom-style: solid;
}
h1, h2, h3 {
font-weight: normal;
}
table {
border-collapse: collapse;
}
table > thead > tr > th {
text-align: left;
border-bottom: 1px solid;
}
table > thead > tr > th,
table > thead > tr > td,
table > tbody > tr > th,
table > tbody > tr > td {
padding: 5px 10px;
}
table > tbody > tr + tr > td {
border-top: 1px solid;
}
blockquote {
margin: 0 7px 0 5px;
padding: 0 16px 0 10px;
border-left-width: 5px;
border-left-style: solid;
}
code {
font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
font-size: 1em;
line-height: 1.357em;
}
body.wordWrap pre {
white-space: pre-wrap;
}
pre:not(.hljs),
pre.hljs code > div {
padding: 16px;
border-radius: 3px;
overflow: auto;
}
pre code {
color: var(--vscode-editor-foreground);
tab-size: 4;
}
/** Theming */
.vscode-light pre {
background-color: rgba(220, 220, 220, 0.4);
}
.vscode-dark pre {
background-color: rgba(10, 10, 10, 0.4);
}
.vscode-high-contrast pre {
background-color: rgb(0, 0, 0);
}
.vscode-high-contrast h1 {
border-color: rgb(0, 0, 0);
}
.vscode-light table > thead > tr > th {
border-color: rgba(0, 0, 0, 0.69);
}
.vscode-dark table > thead > tr > th {
border-color: rgba(255, 255, 255, 0.69);
}
.vscode-light h1,
.vscode-light hr,
.vscode-light table > tbody > tr + tr > td {
border-color: rgba(0, 0, 0, 0.18);
}
.vscode-dark h1,
.vscode-dark hr,
.vscode-dark table > tbody > tr + tr > td {
border-color: rgba(255, 255, 255, 0.18);
}
</style>
<style>
/*
Darcula color scheme from the JetBrains family of IDEs
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #2b2b2b;
color: #bababa;
}
.hljs-strong,
.hljs-emphasis {
color: #a8a8a2;
}
.hljs-bullet,
.hljs-quote,
.hljs-link,
.hljs-number,
.hljs-regexp,
.hljs-literal {
color: #6896ba;
}
.hljs-code,
.hljs-selector-class {
color: #a6e22e;
}
.hljs-emphasis {
font-style: italic;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-section,
.hljs-attribute,
.hljs-name,
.hljs-variable {
color: #cb7832;
}
.hljs-params {
color: #b9b9b9;
}
.hljs-string {
color: #6a8759;
}
.hljs-subst,
.hljs-type,
.hljs-built_in,
.hljs-builtin-name,
.hljs-symbol,
.hljs-selector-id,
.hljs-selector-attr,
.hljs-selector-pseudo,
.hljs-template-tag,
.hljs-template-variable,
.hljs-addition {
color: #e0c46c;
}
.hljs-comment,
.hljs-deletion,
.hljs-meta {
color: #7f7f7f;
}
</style>
<style>
/*
* Markdown PDF CSS
*/
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo";
padding: 0 12px;
}
pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
border-radius: 3px;
overflow-x: auto;
white-space: pre-wrap;
overflow-wrap: break-word;
}
pre:not(.hljs) {
padding: 23px;
line-height: 19px;
}
blockquote {
background: rgba(127, 127, 127, 0.1);
border-color: rgba(0, 122, 204, 0.5);
}
.emoji {
height: 1.4em;
}
code {
font-size: 14px;
line-height: 19px;
}
/* for inline code */
:not(pre):not(.hljs) > code {
color: #C9AE75; /* Change the old color so it seems less like an error */
font-size: inherit;
}
/* Page Break : use <div class="page"/> to insert page break
-------------------------------------------------------- */
.page {
page-break-after: always;
}
</style>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</head>
<body>
<script>
mermaid.initialize({
startOnLoad: true,
theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast')
? 'dark'
: 'default'
});
</script>
<h1 id="manuel-juan-morales-amat">Manuel Juan Morales Amat</h1>
<p>La Vila Joiosa, Alicante, Comunidad Valenciana, España<br>
+34 673522260 | <a href="mailto:mjmorales.mcv@gmail.com">mjmorales.mcv@gmail.com</a><br>
LinkedIn: <a href="https://www.linkedin.com/in/mmorales99" target="_blank">https://www.linkedin.com/in/mmorales99</a> | GitHub: <a href="https://github.com/mmorales99" target="_blank">https://github.com/mmorales99</a></p>
<hr>
<h2 id="perfil-profesional">Perfil profesional</h2>
<p>Arquitecto de Software con 4 años de experiencia y actualmente desempeñando el rol de Analista Programador. Especializado en desarrollo Backend, con sólida experiencia en Frontend y diseño de bases de datos. Apasionado por la etapa de diseño, especialmente cuando implica crear soluciones con tecnologías innovadoras.</p>
<hr>
<h2 id="experiencia-laboral">Experiencia laboral</h2>
<p><strong>IMED Hospitales - Intecsal</strong><br>
<em>Analista Programador</em><br>
2024 - 2025</p>
<ul>
<li>Diseño y desarrollo de nuevos servicios, destacando un sistema de despliegues autónomos usando múltiples repositorios.</li>
<li>Uso de WPF y DevExpress para desarrollo de interfaces gráficas.</li>
<li>Formación y aplicación de conceptos de UX/UI para diseño de nuevas pantallas, implementando arquitecturas MVVM.</li>
<li>Mantenimiento de middleware que adapta información entre compañías aseguradoras y clientes.</li>
</ul>
<p><strong>Cognizant</strong><br>
<em>DevSecOps</em><br>
2024</p>
<ul>
<li>Análisis y optimización de la arquitectura física de nodos Kubernetes y disposición geográfica de servidores para el servicio Waylet.</li>
<li>Integración con sistemas de notificación de incidencias para equipo SecOps.</li>
<li>Asistencia en depuración y configuración de WAF y R4.</li>
</ul>
<p><strong>GTT (Gestión Tributaria Territorial)</strong><br>
<em>Arquitecto Fullstack / Analista Programador Senior</em><br>
2021 - 2024</p>
<ul>
<li>Liderazgo de múltiples proyectos clave:
<ul>
<li>Refactorización y actualización de sistema principal desde .NET Framework 4.5 a .NET 6 y 8.</li>
<li>Desarrollo de ESB y API Gateway para migrar de monolito a microservicios con SOAP a REST/gRPC.</li>
<li>Refactorización de sistema de transacciones con gRPC y micro-ORM, blindando base de datos contra SQL Injection.</li>
<li>Creación de un sistema CI/CD con Jira, Jenkins y GitLab CI/CD para pruebas automatizadas con Selenium y NUnit.</li>
<li>Mejora de resiliencia en sistemas con replicación, healthchecks y sharding.</li>
</ul>
</li>
<li>Aplicación de arquitecturas DDD, Microservicios, Clean Architecture y Three Layered Architecture.</li>
<li>Responsable del diseño, planificación, documentación y defensa técnica.</li>
<li>Supervisión y mentoring de hasta 3 compañeros.</li>
<li>Tecnologías: SOAP, REST, gRPC, WebSocket, .NET (3.5 a 8), EntityFramework, Dapper, Identity Server 4, JWT, IIS, Windows Server, Oracle DB, SQL Server, MongoDB, Jira, Jenkins, Azure, GitLab, Springboot, Python, PowerShell, ElasticSearch, Kibana, Vue, Node, MediatR, AutoMapper, Serilog, Dapr, AWS, Docker, Selenium, Playwright, NUnit.</li>
</ul>
<p><strong>MCV Ingenieros</strong><br>
<em>Helpdesk, Administrador de redes, Arquitecto de soluciones, Programador</em><br>
2016 - 2021</p>
<ul>
<li>Soporte técnico y administración de redes.</li>
<li>Diseño e implementación de soluciones escalables y modernización de infraestructura y sistemas.</li>
</ul>
<hr>
<h2 id="formaci%C3%B3n-acad%C3%A9mica-y-certificaciones">Formación académica y certificaciones</h2>
<ul>
<li>Estudios universitarios en Ingeniería Informática (1º, 2º y 3º curso) — sin finalizar</li>
<li>Certificado de Profesionalidad equivalente a Desarrollo de Aplicaciones Web (DAW) — 2025</li>
<li>Actualmente cursando ASIR (Administración de Sistemas Informáticos en Red)</li>
<li>Próximo inicio en septiembre: ISAQB CPSA Foundation Level</li>
<li>Formación continua autodidacta y técnica para mantenerse actualizado</li>
</ul>
<hr>
<h2 id="tecnolog%C3%ADas-y-competencias-t%C3%A9cnicas">Tecnologías y competencias técnicas</h2>
<ul>
<li>Backend: C#, Python, Java</li>
<li>Frontend: TypeScript, JavaScript; Vue (Nuxt + Axios), Angular (Redux + Axios), jQuery</li>
<li>Bases de datos: Oracle, SQL Server</li>
<li>Infraestructura: Alpine Linux, Windows Servers, Podman, Kubernetes</li>
<li>Seguridad y autenticación: JWT con OpenID, Client Credentials, ApiKey, cifrado E2E</li>
<li>Metodologías: Kanban, Scrum con Jira y Asana</li>
<li>CI/CD: GitLab CI/CD, Jenkins, Azure DevOps, GitHub Actions, Gitea CI/CD, Dokploy (en integración)</li>
<li>Testing y reporte: Jam, Postman, Selenium, NUnit</li>
</ul>
<hr>
<h2 id="idiomas">Idiomas</h2>
<ul>
<li>Castellano: Nativo</li>
<li>Valenciano: Nativo</li>
<li>Inglés: Nivel C1 (Avanzado)</li>
</ul>
<hr>
<h2 id="habilidades-blandas-y-logros">Habilidades blandas y logros</h2>
<ul>
<li>Persona empática, servicial, con gran capacidad para resolver problemas en equipo y conducirlo responsablemente hacia objetivos.</li>
<li>Comunicación asertiva y clara, generando espacios de entendimiento sin conflictos.</li>
<li>Comprometido con la actualización continua del equipo y la anticipación tecnológica.</li>
<li>Experiencia en liderar proyectos ambiciosos y con recursos limitados, cumpliendo siempre los objetivos.</li>
</ul>
</body>
</html>