mrcmglrn

Blockchain Developer, Bitcoin Educator, Senior Software Engineer

Hi there! I am Marco Migliorini, I have a degree in computer engineering and over a decade of experience in designing and developing J2EE-based software systems.

In recent years, I have been drawn to the world of permissionless blockchains and Austrian economics, transforming my initial curiosity into a passionate interest in these fields. This led me to desire a new direction for my career, and after a year of intense training, I started working as a freelancer in the blockchain/web3 sector.

I currently do consultancy and develop decentralized applications based on Ethereum and Polygon blockchains, as well as training on Bitcoin and the Lightning Network.

My mission is to contribute to the dissemination and adoption of these technologies, as well as the socio-economic issues underlying them. In this regard, I recently published my first book on the topic: Bitcoin un'analisi a 360°, a small personal contribution to this unstoppable revolution!




Experience: 2 years

Yearly salary: $120,000

Hourly rate: $80

Nationality: 🇮🇹 Italy

Residency: 🇮🇹 Italy


Experience

Senior software engineer
M.A.I.O.R. S.p.A.
2019 - 2022
Collaboration in the re-engineering of the corporate management system of public mobility networks (trains, trams, buses), to transform it from a suite of standalone applications to one of web applications. The stack used to achieve this evolution is based on: GWT for the frontend, Spring/Java 8 for the backend, Hibernate/Oracle for the database part, RESTful API towards external GeoServers for the cartographic part. Use of the Agile Scrum methodology, as a system for coordinating and monitoring the progress of software development, and Git/Jenkins/Docker/OracleCloud, as a pipeline for CI/CD. Active participation in corporate internal training events. In particular, I promoted as speaker the static analysis of the software quality through SonarLint and the use of MyBatis to interact with databases that make massive use of stored procedures and structured queries. Direct involvement in the start-up, testing and commissioning phases of the company SonarQube system, to centralize the monitoring of the code quality of the various company development lines and standardize the static error analysis rules.
Senior software engineer
Quid Informatica S.p.A.
2018 - 2019
Collaboration in the various phases of the corporate backend lifecycle divided into a core part, common to all, and various verticalizations, specialized on individual customers. The common part is composed of a microservices architecture developed in java on the OSGi framework (Apache Felix), in which integrations of new functions are mainly performed, in compliance with the principle of single responsibility (SPR), and exposure of new services through RESTful APIs.Verticalizations are instead monolithics developed according to the J2EE standard ( EJB, JMS, MDB, ...) and distributed on JBoss/WebSphere For the latter, reengineering is on the agenda both to exploit the new core features and to increase the decoupling and cohesion of the various sub-parts with a view to future evolution towards microservices (functional decoupling). Communication between backend modules takes place asynchronously when possible, using a message broker to guarantee its functioning, and is based on the exchange of data in JSON through HTTP calls. When exposing services to the frontends, a customized API Gateway is used which performs various tasks: routing execution, decoupling, round trip minimization, uniqueness of the authentication point (SSO/JWT). Since the database is partitioned among several applications, data consistency is guaranteed through the use of the SAGA pattern (Command/Orchestrator), which allows careful management of distributed transactions. Given the nature of the service offered, towards institutes of credit operating 24/7, it is necessary to operate with a view to continuous delivery. To this end, the work process consists of the following phases: analysis of new requirements, sorting between the various modules, identification of individual tasks, development in test-driven development (TDD/JUnit), use of tools such as git, maven, jenkins , nexus and docker, to automate the entire release chain, from merging the software to deploying it in the desired environment.
Software engineer
Thales Italia S.p.A.
2016 - 2018
Collaboration in the development, testing and maintenance of the information system for the supervision and control of the tram products supplied by the company. The project consists of a backend based on a service-oriented multi-tier java architecture (SOA ), created thanks to the use of the OSGi framework (Apache Felix) which guarantees the modularity of the individual components and their interoperability, and a csharp/javascript frontend representing the SCADA of the existing tram line, which acts as an HMI for plant management Re-engineering of the JPA (EclipseLink) model on which the aforementioned system is based: redefinition of the entities and related constraints to normalize the pre-existing database, adaptation of the relationships between the various classes and introduction of the cascade logic. Implementation of the backend of the new company configurator of tram lines built on the Spring stack + Jax RS (Jersey) + JPA (Hibernate) + MySql capable of exposing all its functions to external users as REST services that exchange data in JSON format/ XML, so as to optimize the general performance of the product. The main tools used in the work process are: the agile methodology for planning and managing the workflow, the java first methodologies and test-driven development (through the use of JUnit and JMock frameworks) for software development, pattern design for project quality and maintainability, systems such as git, maven and jenkins to automate versioning, build and continuous integration respectively.
Software engineer
Unipol Sai Assicurazioni S.p.A.
2014 - 2016
Reengineering of the company's supplementary pension system to transform the old website into a single page application (SPA). For this purpose, two independent systems were designed and implemented, capable of communicating with each other through light data structures, thus to minimize bandwidth consumption and response times.The first system is a javascript client representing the real SPA created with the Dojo Toolkit framework, to which the Zurb Foundation framework has been associated to obtain a responsive layout, while the other it consists of a java server built on the Spring stack + Jax RS (Apache Wink) + Jax WS + MyBatis + Oracle DB capable of responding in JSON / XML format to REST calls coming from the client and processing them correctly depending on the type of resource requested. During the development process, tools such as Swagger UI and NodeJS were used respectively to standardize the service interface and create a light stub of the server. Collaboration in the development, testing and maintenance of multi-tiered web based applications in J2EE based on: Spring framework as systems backbone, Struts framework + JSP / JSF framework + RichFaces for request routing, business logic and presentation, Hibernate / iBatis framework for data persistence and Oracle / DB2 database for their management.
Junior software engineer
ISED Ingegneria dei sistemi S.p.A.
2011 - 2013
Direct responsibility for the start-up, testing and commissioning phases of the Collaboration on various 3-level web based projects in a java environment structured as follows: frontend divided into a web portal based on a JSF framework for users of the exposed services and an on-demand executable management system based on a corporate framework for administrators of the latter, backend with all the business logic necessary for the application including management of data persistence, and database structured according to customer needs. View of the entire life cycle of the developed software, from analysis to maintenance , with main tasks in the design, implementation, testing and documentation phases. Customer management in the advanced stages of the order, and subsequently, for the optimization of the product upon delivery and any evolutions to be planned.

Skills

agile
blockchain-engineer
dapp
ethereum
ganache
git
hardhat
javascript
mern
mongo
node
openzeppelin
polygon
postgres
react
remix
truffle
web3js
solidity
english
italian
spanish