Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified public/andrea-lisi-cv-it.pdf
Binary file not shown.
Binary file modified public/andrea-lisi-cv.pdf
Binary file not shown.
34 changes: 17 additions & 17 deletions scripts/cv-en.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
{
"role": "Senior Software Engineer",
"company": "Tricentis",
"context": "Work on Tosca Cloud",
"context": "Experience across Tosca Cloud, Tosca Road and qTest",
"location": "Vienna, Austria",
"dates": "2023 - present",
"bullet_labels": ["Collaboration", "Development", "Migrations", "Repository & CI", "AI"],
"bullets": [
"I defined shared solutions for the monorepo with developers, engineering managers, principal engineers and product stakeholders.",
"On Tosca Cloud, spanning 16 projects and 12+ teams, I defined monorepo solutions with developers, engineering managers, principal engineers and product stakeholders.",
"I built shared libraries and tools and resolved cross-project issues; product teams owned their features. I wrote ADRs and automated checks for repository rules.",
"I built the infrastructure for design system upgrades, supported teams through migrations and updated shared components and themes myself.",
"I built infrastructure for Tosca Cloud and NeoLoad design system upgrades, supported migrations and updated shared components and themes.",
"I administered the GitHub repository and automated GitHub Actions and Azure Pipelines. I optimized builds and caching and modernized developer tools.",
"I evaluated Claude, Cursor and other tools on real tasks, maintained repository context and checked the resulting code through review and tests."
]
Expand All @@ -26,7 +26,7 @@
"location": "Florence, Italy",
"dates": "2019 - 2023",
"bullets": [
"I contributed to moving the storefront out of the monolith using React, Vue and GraphQL.",
"I worked on the Vue website and CMS, helped migrate the storefront from a PHP monolith to React and contributed to the Node.js/GraphQL BFF alongside the backend team.",
"I built interfaces for high-traffic campaigns, working with design and design system teams to match mockups and shared standards.",
"For the final two years, I was the only frontend developer alongside the backend team, building the back-office from scratch with the people running forestry operations."
]
Expand Down Expand Up @@ -55,28 +55,28 @@
"skills": [
[
"Web development",
"TypeScript | JavaScript | HTML | Modern CSS | DOM & Web APIs | Responsive UI"
"TypeScript | JavaScript | HTML | Modern CSS | DOM & Web APIs | Responsive UI | Canvas | SVG | PixiJS/WebGL"
],
[
"Frontend systems & architecture",
"React | Vue | Zustand | Micro-frontends | Shared libraries | Module boundaries | Frontend standards | RFC | ADR"
"React | Vue | Zustand | Redux Toolkit | TanStack Query | MUI | Micro-frontends | Shared libraries | Module boundaries | RFC | ADR"
],
["Data & APIs", "GraphQL/Apollo | REST | WebSockets/Socket.io | Node.js | MongoDB"],
[
"Integrations & observability",
"Frontend integration after Okta login | JWT | HTTP interceptors | OpenTelemetry | Shared frontend integrations"
"Data & APIs",
"GraphQL/Apollo | REST | WebSockets/Socket.io | Node.js | MongoDB | PostgreSQL | MySQL"
],
[
"Monorepos & package management",
"Nx | pnpm workspaces | Dependency rules | Shared packages | Repository governance"
"Integrations & observability",
"Frontend integration after Okta login | JWT | HTTP interceptors | OpenTelemetry"
],
[
"Build & bundling",
"Vite | Webpack | Build configuration | Build caching | Build performance"
"Monorepos & package management",
"Nx | Turborepo | pnpm workspaces | Governance & dependencies"
],
["Build & bundling", "Vite | Webpack | Build caching | Build performance"],
[
"Testing & code quality",
"Vitest | Jest | Testing Library | Playwright | Storybook | ESLint | Prettier"
"Vitest | Jest | Testing Library | Playwright | Storybook | ESLint | Biome | Oxlint | Prettier"
],
[
"Delivery & repository operations",
Expand All @@ -92,7 +92,7 @@
],
[
"AI-assisted development",
"Claude | Cursor | MCP-based tooling | Tool evaluation | Repository context and rules | Review and tests"
"Codex | Claude Code | Cursor | GitHub Copilot | MCP-based tooling | Tool evaluation | Repository context and rules | Review and tests"
],
[
"Platforms & infrastructure",
Expand All @@ -109,13 +109,13 @@
{
"name": "Deepfield",
"label": "Discontinued experiment",
"body": "A space exploration prototype: simulation, maps and ship panels in TypeScript and PixiJS. Interaction design and data visualization."
"body": "A space simulation in TypeScript and PixiJS: maps, ship panels, interaction design and data visualization."
},
{
"name": "lockhound",
"url": "https://github.com/karedas/lockhound",
"label": "github.com/karedas/lockhound",
"body": "A zero-dependency Windows CLI that identifies processes locking a folder through the Restart Manager API. Termination requires an explicit action."
"body": "A zero-dependency Windows CLI to find processes locking a folder. Terminating them requires an explicit action."
}
],
"education": [
Expand Down
41 changes: 19 additions & 22 deletions scripts/cv-it.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
{
"role": "Senior Software Engineer",
"company": "Tricentis",
"context": "Esperienza su Tosca Cloud",
"context": "Esperienza su Tosca Cloud, Tosca Road e qTest",
"location": "Vienna, Austria",
"dates": "2023 - oggi",
"bullet_labels": ["Collaborazione", "Sviluppo", "Migrazioni", "Repository e CI", "AI"],
"bullets": [
"Ho definito soluzioni per la monorepo con sviluppatori, engineering manager, principal engineer e referenti di prodotto.",
"Su Tosca Cloud, 16 progetti e oltre 12 team, ho definito soluzioni per la monorepo con sviluppatori, engineering manager, principal engineer e product.",
"Ho sviluppato librerie e strumenti comuni e risolto problemi trasversali; le feature erano dei team di prodotto. Ho scritto ADR e automatizzato i controlli sulle regole.",
"Ho creato l’infrastruttura per aggiornare il design system, supportato i team e aggiornato direttamente componenti e temi condivisi.",
"Ho creato l’infrastruttura per aggiornare il design system di Tosca Cloud e NeoLoad, supportato le migrazioni e aggiornato componenti e temi.",
"Ho amministrato il repository GitHub e automatizzato GitHub Actions e Azure Pipelines. Ho ottimizzato build e cache e modernizzato gli strumenti.",
"Ho valutato Claude, Cursor e altri strumenti su attività reali, curando il contesto del repository e verificando il codice con review e test."
]
Expand All @@ -26,7 +26,7 @@
"location": "Firenze, Italia",
"dates": "2019 - 2023",
"bullets": [
"Ho partecipato alla migrazione dello storefront fuori dal monolite con React, Vue e GraphQL.",
"Dal sito e CMS in Vue ho partecipato alla migrazione dello storefront dal monolite PHP a React e al BFF Node.js/GraphQL, collaborando con il team backend.",
"Ho sviluppato interfacce per campagne ad alto traffico, collaborando con design e design system per rispettare mockup e standard condivisi.",
"Negli ultimi due anni ero l’unico frontend developer nel team backend: ho sviluppato da zero il back-office con gli utenti delle operazioni forestali."
]
Expand Down Expand Up @@ -55,28 +55,28 @@
"skills": [
[
"Sviluppo web",
"TypeScript | JavaScript | HTML | CSS moderno | DOM e Web API | Interfacce responsive"
"TypeScript | JavaScript | HTML | CSS moderno | DOM e Web API | Interfacce responsive | Canvas | SVG | PixiJS/WebGL"
],
[
"Sistemi frontend e architettura",
"React | Vue | Zustand | Micro-frontend | Librerie condivise | Confini tra moduli | Standard frontend | RFC | ADR"
"React | Vue | Zustand | Redux Toolkit | TanStack Query | MUI | Micro-frontend | Librerie condivise | Confini tra moduli | RFC | ADR"
],
["Dati e API", "GraphQL/Apollo | REST | WebSocket/Socket.io | Node.js | MongoDB"],
[
"Integrazioni e osservabilità",
"Integrazione frontend dopo il login Okta | JWT | Interceptor HTTP | OpenTelemetry | Integrazioni condivise lato frontend"
"Dati e API",
"GraphQL/Apollo | REST | WebSocket/Socket.io | Node.js | MongoDB | PostgreSQL | MySQL"
],
[
"Monorepo e gestione dei pacchetti",
"Nx | pnpm workspaces | Regole sulle dipendenze | Pacchetti condivisi | Governance del repository"
"Integrazioni e osservabilità",
"Integrazione frontend dopo il login Okta | JWT | Interceptor HTTP | OpenTelemetry"
],
[
"Build e bundling",
"Vite | Webpack | Configurazione build | Cache delle build | Performance delle build"
"Monorepo e gestione dei pacchetti",
"Nx | Turborepo | pnpm workspaces | Governance e dipendenze"
],
["Build e bundling", "Vite | Webpack | Cache delle build | Performance delle build"],
[
"Test e qualità del codice",
"Vitest | Jest | Testing Library | Playwright | Storybook | ESLint | Prettier"
"Vitest | Jest | Testing Library | Playwright | Storybook | ESLint | Biome | Oxlint | Prettier"
],
[
"Rilascio e gestione repository",
Expand All @@ -92,7 +92,7 @@
],
[
"Sviluppo assistito da AI",
"Claude | Cursor | Strumenti basati su MCP | Valutazione strumenti | Contesto e regole del repository | Review e test"
"Codex | Claude Code | Cursor | GitHub Copilot | MCP | Valutazione tool | Contesto repository | Review e test"
],
[
"Piattaforme e infrastruttura",
Expand All @@ -109,22 +109,19 @@
{
"name": "Deepfield",
"label": "Esperimento interrotto",
"body": "Prototipo di esplorazione spaziale: simulazione, mappe e pannelli di bordo in TypeScript e PixiJS. Design delle interazioni e visualizzazione dei dati."
"body": "Simulazione spaziale in TypeScript e PixiJS: mappe, pannelli di bordo, design delle interazioni e visualizzazione dei dati."
},
{
"name": "lockhound",
"url": "https://github.com/karedas/lockhound",
"label": "github.com/karedas/lockhound",
"body": "CLI Windows senza dipendenze: identifica i processi che bloccano una cartella tramite la Restart Manager API. La terminazione richiede un’azione esplicita."
"body": "CLI Windows senza dipendenze per trovare i processi che bloccano una cartella. Terminarli richiede un’azione esplicita."
}
],
"education": [
[
"Certificato tecnico superiore IFTS",
"Sviluppo software - diploma di programmatore di applicazioni web Java."
],
["Certificato tecnico superiore IFTS", "Programmazione di applicazioni web Java."],
["Diploma in Arte", "Istituto Statale d’Arte di Firenze - Arte e Design."]
],
"languages": "Italiano: madrelingua | Inglese: professionale | Tedesco: elementare, in corso di studio",
"languages": "Italiano: madrelingua | Inglese: professionale | Tedesco: base, in studio",
"privacy": "Autorizzo il trattamento dei dati personali ai sensi del Regolamento UE 2016/679 (GDPR)."
}
47 changes: 33 additions & 14 deletions src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,21 +93,37 @@ export const en: Copy = {
'TypeScript',
'Vue',
'Zustand',
'Redux Toolkit',
'TanStack Query',
'MUI',
'GraphQL',
'Node.js',
'REST',
'MongoDB',
'PostgreSQL / MySQL',
'JavaScript',
'HTML & CSS',
],
},
{
title: 'Build systems & monorepos',
items: ['Nx', 'pnpm workspaces', 'Vite', 'Webpack', 'Build caching', 'Dependency boundaries'],
items: [
'Nx',
'Turborepo',
'pnpm workspaces',
'Vite',
'Webpack',
'Build caching',
'Dependency boundaries',
],
},
{
title: 'Testing & delivery',
items: [
'Vitest',
'Jest',
'Testing Library',
'ESLint / Biome',
'Playwright',
'GitHub Actions',
'Azure Pipelines',
Expand All @@ -122,6 +138,8 @@ export const en: Copy = {
'Design systems',
'Design tokens',
'Storybook',
'PixiJS / WebGL',
'Canvas / SVG',
'Accessibility',
],
},
Expand All @@ -141,10 +159,10 @@ export const en: Copy = {
ai: {
heading: 'How I use AI in development',
summary:
'Evaluation of Claude, Cursor and other assistants on real development tasks. Repository instructions, documentation and shared tools to help them navigate the code. Recurring mistakes are a starting point for improving that setup, alongside correcting the code.',
'Evaluation of Codex, Claude Code, Cursor and other assistants on real development tasks. Repository instructions, documentation and shared tools to help them navigate the code. Recurring mistakes are a starting point for improving that setup, alongside correcting the code.',
moreLabel: 'Read about my workflow',
paragraphs: [
'The work starts with real tasks in a repository shared by several teams: trying Claude, Cursor and other assistants, checking where they struggle, and maintaining the instructions, documentation and tools they use to navigate the code.',
'The work starts with real tasks in a repository shared by several teams: trying Codex, Claude Code, Cursor and other assistants, checking where they struggle, and maintaining the instructions, documentation and tools they use to navigate the code.',
'A missed library or lost context between modules is a reason to look beyond the individual response. What is missing in the repository? Does the problem recur after the correction? Those checks guide changes that other teams can use too.',
],
rulesLead: 'What I work on:',
Expand All @@ -163,14 +181,15 @@ export const en: Copy = {
title: 'Senior Software Engineer',
company: 'Tricentis',
specialization: 'Frontend Platform, Governance & Design Systems',
context: 'Work on Tosca Cloud',
context: 'Experience across Tosca Cloud, Tosca Road and qTest',
tags: ['React', 'TypeScript', 'Micro-frontends', '16 projects', '12+ teams', 'Quality gates'],
current: true,
paragraphs: [
'<b>Cross-team decisions.</b> Point of contact alongside the team’s architect for Tosca Cloud initiatives spanning the monorepo. Definition of shared solutions with developers, engineering managers, principal engineers from other platforms and product stakeholders.',
'<b>Platform development.</b> Development and maintenance of shared libraries, tools and configurations; resolution of cross-project issues and support for adoption across teams. Product features remained with their respective teams.',
'<b>Migrations and design system.</b> Infrastructure for updates, coordination with teams and hands-on migration work when needed. Updates to shared components and themes to resolve inconsistencies between products.',
'<b>Performance and tooling.</b> Build and pipeline optimization, development tool updates, and documentation of decisions in ADRs. Definition of monorepo rules and support for teams applying them.',
'<b>Platform and governance.</b> On Tosca Cloud, I worked on a React and TypeScript monorepo shared by 16 projects and over 12 teams. I defined solutions for shared initiatives with developers, engineering managers, principal engineers and product stakeholders.',
'<b>Development and maintenance.</b> I built shared libraries, tools and configurations, resolved cross-project issues and helped colleagues implement migrations. I defined module and dependency boundaries, wrote ADRs and automated checks for repository rules.',
'<b>Repository, pipelines and performance.</b> I administered the Tosca Cloud GitHub repository and worked on GitHub Actions and Azure Pipelines for builds, tests and releases. I optimized builds and caching and modernized development and testing tools.',
'<b>Design system.</b> I worked with designers on the system shared by Tosca Cloud and NeoLoad, building the infrastructure for upgrades. I coordinated migrations with teams and updated shared components and themes myself to resolve inconsistencies between products.',
'<b>AI in development.</b> I evaluated assistants on real tasks, maintained repository instructions and context, and verified changes through review and tests. Product features remained with their respective teams, where I could also contribute.',
],
},
{
Expand All @@ -181,10 +200,10 @@ export const en: Copy = {
context: 'E-commerce platform for tree planting',
tags: ['React', 'Vue', 'GraphQL', 'Storefront migration'],
paragraphs: [
'Contribution to the storefront migration out of the monolith, as part of the frontend team, using React, Vue and GraphQL.',
'Storefront redevelopment during the company’s growth from around 20 to <b>more than 150 people</b>.',
'Interfaces for high-traffic campaigns, with regular input from the design and design system teams to incorporate requests and follow mockups and shared standards.',
'Development of the internal back-office frontend from scratch during the final two years. Sole frontend developer on the project, working with the backend team and the forestry operations staff using the tools.',
'I worked on the website and CMS in Vue, then helped migrate the storefront from a PHP monolith to React as the company grew from around 20 to <b>over 150 people</b>.',
'As the applications moved towards microservices, I contributed to the backend-for-frontend (BFF) with Node.js and GraphQL, working alongside the backend developers.',
'I built customer features and campaign pages, working regularly with the design and design system teams to follow mockups and shared standards.',
'For the final two years, I was the only frontend developer on the back-office team. I built its frontend from scratch with backend developers and the forestry operations staff who used it.',
],
},
{
Expand All @@ -210,7 +229,7 @@ export const en: Copy = {
paragraphs: [
'A role that started in design and expanded into web development, backend systems and infrastructure at client sites.',
'Design of websites, interfaces, visual identities and print material from scratch for clients.',
'Development and maintenance of frontend and backend applications.',
'I took websites and applications from design through development and deployment, including maintenance and troubleshooting at client sites.',
'On-site installation of servers, networks and firewalls, including for manufacturers in Tuscany’s leather and fashion district.',
],
},
Expand All @@ -227,7 +246,7 @@ export const en: Copy = {
name: 'Lumina',
kind: 'Game development & web design',
description: 'A personal project: a text-based multiplayer fantasy game.',
tags: ['Node.js', 'MongoDB', 'React', 'Cloudflare'],
tags: ['Node.js', 'MongoDB', 'Socket.io', 'React', 'Cloudflare'],
href: 'https://luminamud.com/',
linkLabel: 'Explore Lumina',
detail:
Expand Down
Loading
Loading