about me

Hello, my name is Jose Miguel. I'm a Software Engineer working at Criptan remotely from South Korea.
I'm a Software Engineer graduated in UPM, Madrid, with specialization in distributed software and services.
As an experienced software engineer, I have worked on a variety of projects in different domains and technologies. With a passion for problem-solving and innovation, I take pride in building scalable and maintainable software systems that meet business objectives.
My expertise lies in full-stack web development, with strong experience in backend development, API design, and database architecture. I have experience working with a range of technologies such as Java, Node.js, SQL and NoSQL databases, AWS, and more.
I have experience working in Agile environments, using methodologies such as Scrum and Kanban, and I am comfortable working both individually and as part of a team. I have been involved in all stages of the software development lifecycle, from gathering requirements and designing solutions to testing and deployment.
If you're looking for a motivated, detail-oriented, and results-driven software engineer with a passion for building top-quality software, then let's connect!
In addition to my passion for technology, I also have a keen interest in photography, travel, sports, food, and nature. I love to stay active and participate in various physical activities such as running, football, cycling, and hiking.

I've been running since 2006 and have achieved some notable milestones
2015 🇪🇸 San Silvestre Vallecana 10k 34'04''
Marathons
2019 🇯🇵 Osaka 2h56'52''
2017 🇱🇺 Rotterdam 3h09 35''
2011 🇪🇸 Madrid 3h31'12''
2008 🇰🇷 Seoul 3h21'36''

skills

NodeJS NodeJS
ReactJS ReactJS
Javascript Javascript
HTML HTML
CSS CSS
Docker Docker
MongoDB MongoDB
PostgreSQL PostgreSQL
Redis Redis
Github Github
AWS AWS

experience

Criptan

Role : Software Engineer

Location : Remote - Seoul 🇰🇷

Period : January 2021 - Present

As a Senior Software Engineer Criptan, I am responsible for developing backend services using serverless Lambda functions with Node.js and TypeScript. To define and deploy the architecture of the services, we utilize the AWS Cloud Development Kit (CDK). Our services are built using a variety of AWS tools and services, including Lambda, ECS, DynamoDB, queues, and event buses, to create an event-based architecture.
We utilize both SQL and DynamoDB for our database needs, and we leverage events from the database records to perform other operations.
As a key member of the team, I am responsible for developing core projects from the ground up and spearheading the refactor of our core business logic from PHP to TypeScript. I also collaborate closely with our operations and product owners to carefully review and refine development requirements, ensuring our solutions are aligned with our clients' needs.

Threelabs

Role : Software Engineer

Location : Seoul 🇰🇷

Period : August 2019 - January 2021

During my time at Plingo as Software Engineer, I played a key role in developing the architecture and services for our mobile application. I worked on various stages of the development flow, including designing and discussing new functionalities, designing API endpoints for the mobile app, and developing and testing new functionalities on the backend.
To optimize performance, I also refactored existing codebase on the backend. Our backend services were built using Node.js with MongoDB (with Mongoose) and Redis for websockets with Socket.io, as well as caching for database queries. I also configured and managed different services on AWS, including deploying the backend service using Docker, ECS, Lambda, and CodePipeline.
Additionally, I developed and maintained Lambda functions for internal services, and worked on refactoring and developing new functionalities for the mobile app using React Native. I also contributed to the development of new functionalities for the admin client built with React-Admin, I deployed it to S3 and CloudFront using CodePipeline.
Overall, my role involved ensuring the smooth and efficient functioning of the backend services, and continually improving the performance and functionality of the application.

Auth0

Role : Software Engineer

Location : Remote - Madrid 🇪🇸

Period : September 2018 - July 2019

I began my time at Auth0 working on the Sustainment team, where I analyzed the codebase to identify the root cause of issues. This involved closely analyzing various projects and workflows to determine the nature of the problem. I worked closely with members of other teams to devise the best possible solutions, and then implemented the necessary changes to address the issues at hand.
To help my team in the future, I wrote internal posts that documented my thought process and actions, providing a valuable resource for my colleagues. Additionally, as our team was remote-based, I occasionally served as the "concierge," helping other members of Auth0 when they needed assistance and managing my time effectively during internal incidents.
Subsequently, I transitioned to the Protocols and Sessions core team, where I was part of a team responsible for working on various protocols integrated into the system and managing sessions. This role involved a deep understanding of the technical architecture and how different protocols interacted with one another. Overall, my experience at Auth0 enabled me to hone my analytical skills and work collaboratively with a diverse team to tackle complex engineering challenges.

Bitholla

Role : Lead Software Engineer

Location : Remote - Madrid 🇪🇸 /Seoul 🇰🇷

Period : July 2017 - June 2018

I began my tenure as a Full Stack Engineer and within three months, was promoted to Lead Software Engineer. In this role, I was responsible for designing, developing, and deploying our cryptocurrency platform. Our team built both a crypto exchange and a trading platform for cryptocurrencies using different crypto exchanges. Node.js was used for server-side development, while React and Redux were used for client-side development. As the systems were live, websockets were implemented to facilitate communication between the server and client.
My primary responsibilities included designing the crypto exchange, developing APIs using Node.js, Express, and Swagger, and deploying the platform on AWS and Docker. Additionally, I worked with Postgresql, Redis, and MongoDB to manage databases and implemented socket.io to ensure seamless websockets connectivity. Lastly, I was responsible for developing SPAs using React and websockets.
Overall, my experience in leading the development of a cryptocurrency platform allowed me to expand my skill set and gain valuable experience in designing, developing, and deploying live systems with cutting-edge technologies.

Famoco

Role : Fullstack developer

Location : Brussels 🇧🇪

Period : July 2016 - July 2017

I led the development of a Single Page Application (SPA) using React, Redux, and Redux-Sagas. The project involved porting an existing Django and Bootstrap application to React while adhering to Material Design guidelines and consuming the API developed by our backend team. Working closely with the Backend team, we utilized Agile methodologies for development. I also developed Android applications (as our devices used Android) using React Native, and web applications with React to test future features for our main app. For these projects, I developed servers with Node.js, implementing either a REST API or a GraphQL server. To facilitate deployment, I utilized Docker.

Beeva

Role : Fullstack developer

Location : Madrid 🇪🇸

Period : May 2015 - July 2016

During my time at bbvaapimarket.com, I was part of a Scrum team that developed a portal for managing API access. Initially, my task involved developing Selenium tests to ensure the product met the Product Owner's requirements. After gaining a better understanding of the project, I joined the frontend development team, where I helped develop the styles and layouts of the project using AngularJS running on Liferay. As we required more features, I developed Liferay portlets in Java that consumed API services and connected the data with the AngularJS app.
Apart from the frontend project, I also worked on some small projects in NodeJS. As we provided access to third-party APIs, we had a RAML documentation from other teams, and my task was to transform the RAML into an HTML+CSS+JS that we published on our site. I developed the server that handled the transformation, developed the templates and styles for the project, and reviewed the RAML. This side project helped me understand the importance of good API documentation in development.
After the beta release, we switched from Angular to Polymer and moved away from Liferay to a REST API for our SPA app. In this second stage, I joined the backend team, where I developed services for the internal API using Java and Spring.

Cloudroom

Role : Fullstack developer (Internship)

Location : Madrid 🇪🇸

Period : February 2015 - May 2015

During my master's degree, I worked as part of a development team consisting of other students. The project was based on Scrum methodology and followed 3-week iterations. Our goal was to design and develop a MOOC Learning Platform that focused on a social approach to learning. I was involved in both the design and development stages of the project. Our tech stack included angularjs, nodejs, coffeescript, neo4j, and MariaDB.
For the backend, I developed a REST API using nodejs and coffeescript. We used a graph database to handle the social approach of resources with many links to other entities. For resources that required more restricted requirements, we used a SQL database (MariaDB). We used mocha and chai for testing purposes. On the frontend side, we developed the frontend applications that consumed the services we created. We used angularjs version 1.
This project provided me with my first real-world experience in a web project, and I learned a great deal about the software development lifecycle.

education

I earned my degree in Software Engineering from UPM, Madrid. During my studies, I took courses on Unix systems, programming with languages like C++, Java (the primary language), web development, and Android applications. The main focus of the program was on managing software, with courses on project management, agile techniques, design programs, testing, and quality.

In my final year, I participated in a group project as an intern where I developed a desktop application for refactoring source code when a change was made in the SQL queries. This internship helped me write the project for my graduation.

After completing my undergraduate degree, I pursued a Master's in Computer Engineering with a specialization in Distributed Software and Services. During this program, I attended more specialized classes in Computer Engineering and learned about new cloud technologies and distributed systems. I also completed an internship as a full-stack developer on a university project.

Before university, I completed a two-year professional formation in Maintenance and Management of Industrial Equipment. This program taught me how to manage industrial equipment, develop quality assurance plans, manage the development process, and oversee projects where I managed and developed all the stages (planning, development, testing).

projects

Profesional Projects

Criptan

Crypto finance application
During my time on this project, I took on various responsibilities including:
  • Developing serveless backend services for the application using AWS technologies
  • Developing serveless backend services for the application using AWS technologies
  • Designing and developing new services to meet the technical requirements of the project.
Through this experience, I gained expertise in AWS technologies, system architecture, and software development best practices.

Plingo

Online language education platform
As part of my role, I primarily focused on server-side development where I was responsible for designing and implementing various functionalities and services on AWS.

Hollaex

Cryptocurrency Exchange
I was responsible for both the server and client sides of the project. Starting from scratch, I began by building basic functionality on the server side and then moved on to the client side once the server had been set up. I worked closely with the CEO to implement functionality based on market-specific requirements, while also ensuring that the project was fully customizable using SQL triggers and functions at the database level

My goal was to create a system that could be adapted to different fiat currencies and any type of cryptocurrencies for trading purposes. As a result, I made the project fully customizable to meet the needs of various clients.

First deployed Crypto exchange Exir since December 2017.

XRAY

Cryptocurrency Trade platform.
I was responsible for both server and client-side development on this project. My main task was to refactor and migrate the codebase to a new structure.
On the server side, I migrated the codebase from mongoDB to PostgreSQL and refactored the existing code to use promises instead of callbacks, as part of the migration process.
On the client side, I built the skeleton of the current design and developed core components to be used in the trading screen. Additionally, I provided valuable feedback on user experience as a customer and worked closely with the designer to improve the approach.

BBVA APIMarket

API portal for developers
During the first stage of the project, I contributed to different areas including frontend development with AngularJS, SASS, and jQuery, CMS development with Liferay, and scripting for internal services using Bash, Python, and Node.js. In the second stage, my focus was on backend development using Java and Spring. A significant portion of my contribution was on documenting the API by processing a RAML to generate static documentation that was published on the portal. You can take a look at one of the documentations I worked on here

Personal Projects

You can find other personal projects on my repositores

publications

You can find some of my publications on my personal medium
Graphql server with node and couchbase, ottoman and spatial view
Post about how to use Couchbase spartial views using nodejs and graphql
Develop a REST API with Couchbase Ottoman + Node.js + hapi.js
Post on how develop a rest API using nodejs and hapijs, using couchbase as a database

contact

If you want to contact me, just send me an email to jmn8718@gmail.com or contact me at