diff --git a/src/assets/skills/atlassian.svg b/src/assets/skills/atlassian.svg new file mode 100644 index 0000000..8ab8e63 --- /dev/null +++ b/src/assets/skills/atlassian.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/skills/chirpstack.svg b/src/assets/skills/chirpstack.svg new file mode 100644 index 0000000..6778644 --- /dev/null +++ b/src/assets/skills/chirpstack.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/skills/lora.svg b/src/assets/skills/lora.svg new file mode 100644 index 0000000..b4bceac --- /dev/null +++ b/src/assets/skills/lora.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/skills/timescale.svg b/src/assets/skills/timescale.svg new file mode 100644 index 0000000..c7158c4 --- /dev/null +++ b/src/assets/skills/timescale.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/locales/en.json b/src/locales/en.json index 63734f0..771f444 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -83,6 +83,16 @@ "skill.rnd": "R&D", "skill.teamlead": "Team Lead", "skill.needsanalysis": "Needs analysis", + "skill.grpc": "gRPC", + "skill.microservices": "Micro services", + "skill.kubernetes": "Kubernetes", + "skill.scrum": "SCRUM", + "skill.lora": "LoRa", + "skill.architecture": "Architecture", + "skill.chirpstack": "ChirpStack", + "skill.refactor": "Refactoring", + "skill.timescale": "Timescale", + "skill.atlassian": "Atlassian", "time.dur-format": "took {duration}", "time.cur-format": "since {duration}", diff --git a/src/locales/fr.json b/src/locales/fr.json index 1512714..7ecb9ec 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -83,6 +83,16 @@ "skill.rnd": "R&D", "skill.teamlead": "Chef d'équipe", "skill.needsanalysis": "Analyse besoin client", + "skill.grpc": "gRPC", + "skill.microservices": "Micro services", + "skill.kubernetes": "Kubernetes", + "skill.scrum": "SCRUM", + "skill.lora": "LoRa", + "skill.architecture": "Architecture", + "skill.chirpstack": "ChirpStack", + "skill.refactor": "Refactor", + "skill.timescale": "Timescale", + "skill.atlassian": "Atlassian", "time.dur-format": "a duré {duration}", diff --git a/src/model/projects.ts b/src/model/projects.ts index 80cf19a..d9fbf82 100644 --- a/src/model/projects.ts +++ b/src/model/projects.ts @@ -22,6 +22,19 @@ export interface Project { } export const Projects: Project[] = [ + { + name: 'R-Smart', + client: 'NGEConnect', + skills: [s.Go, s.Web, s.Rest, s.Linux, s.Git, s.RnD, s.Grpc, s.Microservices, s.Kubernetes, s.Scrum, s.Docker, s.LoRa, s.Mongo, s.Architecture, s.Chirpstack, s.Refactor, s.Timescale, s.Atlassian], + started_at: new Date(2023, 4, 1), + stopped_at: new Date(2023, 11, 31), + info: { + [Locales.EN]: 'Micro-services application enabling the collection of information and the control of various LoRa devices. It allows for the supervision of Smart Cities and other connected environments.

Design, study, and development of GO micro-services enabling incoming and outgoing communication with LoRa devices (R-Card). Integration into the existing system.

In detail:I was able to complete the initial mission before the planned 4 months. The solution was made available to the relevant clients. The mission was extended to continue working on the initiated issues: DevOps, refactoring, control system, etc., as well as deployment to production. During this period, we were able to replace the old unstable system with the new one, which did not encounter any issues in the last 3 months of my mission.

Participation:', + [Locales.FR]: 'Application micro-services permettant la collecte d\'informations et le pilotage de divers équipements LoRa sur le terrain. Permet entre autres l\'hypervision de Smart Cities et autres environnements connectés.

Conception, étude et développement de micro-services GO permettant la communication entrante et sortante avec des équipements LoRA sur le terrain (R-Card). Intégration dans l\'existant.

En détail :

J\'ai pu terminer la mission initiale avant les 4 mois prévus. La solution a pu être mise à disposition des clients concernés. Prolongation pour continuer sur les problématiques que j\'avais engagées : DevOps, refactor, système de pilotage, etc ; ainsi que la mise en prod. On a pu dans cette période remplacer l\'ancien système bancal par le nouveau avec lequel on n\'a pas vu de problème pendant les 3 derniers mois de ma mission.

Participation :', + }, + source: null, doc: null, + commits: 976, + }, { name: 'Modular box', client: 'Marlink', @@ -53,7 +66,7 @@ export const Projects: Project[] = [ client: 'Collins Aerospace', skills: [s.Qt, s.RnD, s.Cpp, s.Concurrency, s.Git, s.NeedsAnalysis, s.Css, s.Bash, s.Linux, s.Inkscape, s.UIUX, s.TeamLead], started_at: new Date(2020, 6, 16), - stopped_at: null, + stopped_at: new Date(2023, 3, 16), info: { [Locales.EN]: 'Multi-platform (linux, windows and iOS) flight assistance application for pilots. Research and development branch of an international aeronautical company (US).

I am the project architect and have been in charge of the technical direction since its creation. I lead a rotating team of 2 to 3 people, ensure the follow-up and the analysis of the customer needs up to task extraction through a simplified Agile organization.

The project is developed in C++ with the Qt framework. It features:
The first iteration of the project has now been accepted for the industrialization process. I now work on the next R&D phases.', [Locales.FR]: 'Application multi-plateforme (linux, windows et iOS) d\'assistance de vol pour les pilotes de ligne. Branche recherche et développement d\'une entreprise aéronautique internationale (US).

Je suis architecte du projet et assure la direction technique depuis sa création. Je pilote une équipe tournante de 2 à 3 personnes, assure le suivi et l\'analyse des besoins client jusqu\'à l\'extraction de tâches à travers une organisation Agile simplifiée.

Le projet est développé en C++ avec le framework Qt. Il comporte notamment :
La première itération du projet est passée en industrialisation après tests par les pilotes. Je travaille depuis sur les prochaines phases R&D.', diff --git a/src/model/skills.ts b/src/model/skills.ts index 8fe3c55..db557e7 100644 --- a/src/model/skills.ts +++ b/src/model/skills.ts @@ -49,6 +49,16 @@ export enum tID { RnD, TeamLead, NeedsAnalysis, + Grpc, + Microservices, + Kubernetes, + Scrum, + LoRa, + Architecture, + Chirpstack, + Refactor, + Timescale, + Atlassian, } export enum tTag { @@ -132,6 +142,16 @@ export function skillLabel(s: tID): string { case tID.RnD: return 'skill.rnd'; case tID.TeamLead: return 'skill.teamlead'; case tID.NeedsAnalysis: return 'skill.needsanalysis'; + case tID.Grpc: return 'skill.grpc'; + case tID.Microservices: return 'skill.microservices'; + case tID.Kubernetes: return 'skill.kubernetes'; + case tID.Scrum: return 'skill.scrum'; + case tID.LoRa: return 'skill.lora'; + case tID.Architecture: return 'skill.architecture'; + case tID.Chirpstack: return 'skill.chirpstack'; + case tID.Refactor: return 'skill.refactor'; + case tID.Timescale: return 'skill.timescale'; + case tID.Atlassian: return 'skill.atlassian'; } } @@ -671,4 +691,119 @@ export const Skills: tSkills = { [Locales.FR]: 'Analyse du besoin client afin de fournir une solution et un agenda technique.', }, }, + + [tID.Grpc]: { + link: 'https://grpc.io/', + icon: 'skills/grpc.svg', + tags: [tTag.Network, tTag.System, tTag.Web], + interest: Level.L5, + mastery: Level.L4, + info: { + [Locales.EN]: 'gRPC is a high-performance, open-source universal RPC framework. I use it often for microservice architectures. It is a great alternative to REST for internal communications.', + [Locales.FR]: 'gRPC est un framework RPC universel open-source et performant. Je l\'utilise souvent pour des architectures microservices. C\'est une bonne alternative à REST pour les communications internes.', + } + }, + [tID.Microservices]: { + link: 'https://en.wikipedia.org/wiki/Microservices', + icon: null, + tags: [tTag.System, tTag.Web, tTag.Organization], + interest: Level.L4, + mastery: Level.L3, + info: { + [Locales.EN]: 'Microservices is an architectural style that structures an application as a collection of services. I use it often for web projects. It allows to have a more maintainable and scalable architecture.', + [Locales.FR]: 'Microservices est un style architectural qui structure une application comme une collection de services. Je l\'utilise souvent pour les projets web. Cela permet d\'avoir une architecture plus maintenable et scalable.', + } + + }, + [tID.Kubernetes]: { + link: 'https://kubernetes.io/', + icon: 'skills/kubernetes.svg', + tags: [tTag.System, tTag.Web, tTag.Network, tTag.Organization], + interest: Level.L4, + mastery: Level.L3, + info: { + [Locales.EN]: 'Kubernetes is an open-source container-orchestration system for automating application deployment, scaling, and management. I use it often in microservices environments. It allows to have a more maintainable and scalable architecture.', + [Locales.FR]: 'Kubernetes est un système d\'orchestration de conteneurs open-source pour automatiser le déploiement, le dimensionnement et la gestion des applications. Je l\'utilise souvent dans les environnements de microservices. Cela permet d\'avoir une architecture plus maintenable et scalable.', + } + }, + [tID.Scrum]: { + link: 'https://en.wikipedia.org/wiki/Scrum_(software_development)', + icon: 'skills/scrum.svg', + tags: [tTag.Organization, tTag.Human], + interest: Level.L2, + mastery: Level.L2, + info: { + [Locales.EN]: 'Scrum is a framework for agile project management. It allows to have a more maintainable and scalable architecture.', + [Locales.FR]: 'Scrum est un cadre de gestion de projet agile. Cela permet d\'avoir une architecture plus maintenable et scalable.', + } + + }, + [tID.LoRa]: { + link: 'https://lora-alliance.org/', + icon: 'skills/lora.svg', + tags: [tTag.Network, tTag.IoT], + interest: Level.L5, + mastery: Level.L2, + info: { + [Locales.EN]: 'LoRa is a long-range, low-power wireless protocol that is the de facto technology for Internet of Things (IoT) networks worldwide. It provides low-consumption communications for long distances.', + [Locales.FR]: 'LoRa est un protocole sans fil longue portée et basse consommation qui est la technologie de facto pour les réseaux Internet des objets (IoT) dans le monde entier. Il fournit des communications à faible consommation pour de longues distances.', + } + }, + [tID.Architecture]: { + link: 'https://en.wikipedia.org/wiki/Software_architecture', + icon: 'skills/architecture.svg', + tags: [tTag.System, tTag.Organization], + interest: Level.L5, + mastery: Level.L4, + info: { + [Locales.EN]: 'Software architecture is the structure of a software system. It is a set of structures needed to reason about the software system, which comprises software elements, relations among them, and properties of both.', + [Locales.FR]: 'L\'architecture logicielle est la structure d\'un système logiciel. C\'est un ensemble de structures nécessaires pour raisonner sur le système logiciel, qui comprend des éléments logiciels, des relations entre eux et les propriétés des deux.', + } + }, + [tID.Chirpstack]: { + link: 'https://www.chirpstack.io/', + icon: 'skills/chirpstack.svg', + tags: [tTag.Network, tTag.IoT], + interest: Level.L5, + mastery: Level.L3, + info: { + [Locales.EN]: 'ChirpStack is an open-source LoRaWAN Network Server stack, the most used in the world. It provides a complete LoRaWAN solution.', + [Locales.FR]: 'ChirpStack est une pile de serveurs de réseau LoRaWAN open-source, la plus utilisée au monde. Il fournit une solution LoRaWAN complète.', + } + }, + [tID.Refactor]: { + link: 'https://en.wikipedia.org/wiki/Code_refactoring', + icon: 'skills/refactor.svg', + tags: [tTag.System, tTag.Organization], + interest: Level.L5, + mastery: Level.L5, + info: { + [Locales.EN]: 'Code refactoring is the process of restructuring existing computer code without changing its external behavior. Refactoring improves nonfunctional attributes of the software.', + [Locales.FR]: 'Le refactoring de code est le processus de restructuration du code informatique existant sans changer son comportement externe. Le refactoring améliore les attributs non fonctionnels du logiciel.', + } + + }, + [tID.Timescale]: { + link: 'https://www.timescale.com/', + icon: 'skills/timescale.svg', + tags: [tTag.System, tTag.Storage], + interest: Level.L4, + mastery: Level.L3, + info: { + [Locales.EN]: 'TimescaleDB is a time-series database built on top of PostgreSQL. It provides a complete time-series solution.', + [Locales.FR]: 'TimescaleDB est une base de données de séries temporelles construite sur PostgreSQL. Il fournit une solution de séries temporelles complète.', + } + + }, + [tID.Atlassian]: { + link: 'https://www.atlassian.com/', + icon: 'skills/atlassian.svg', + tags: [tTag.Organization], + interest: Level.L4, + mastery: Level.L4, + info: { + [Locales.EN]: 'Atlassian is a software company that develops products for software developers, project managers, and content management. I have used Jira and Confluence for project management.', + [Locales.FR]: 'Atlassian est une entreprise de logiciels qui développe des produits pour les développeurs de logiciels, les chefs de projet et la gestion de contenu. J\'ai utilisé Jira et Confluence pour la gestion de projet.', + } + }, };