Skip to content

Commit

Permalink
Merge pull request #72 from Favo02/update-content
Browse files Browse the repository at this point in the history
Update content
  • Loading branch information
Favo02 authored Jul 30, 2024
2 parents 1fea90d + 52b1fbd commit 75a652e
Show file tree
Hide file tree
Showing 8 changed files with 130 additions and 169 deletions.
Binary file not shown.
23 changes: 12 additions & 11 deletions frontend/src/components/About/Biography.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,31 @@ import { Link } from "react-router-dom"
import BioPicture from "./BioPicture"

// underline
const U : FC<{ children : React.ReactNode}> = ({ children }) => (
const U : FC<{ children : React.ReactNode }> = ({ children }) => (
<span className="underline decoration-dotted underline-offset-4">{children}</span>
)

// highlight
const H : FC<{ children : React.ReactNode}> = ({ children }) => (
const H : FC<{ children : React.ReactNode }> = ({ children }) => (
<span className="font-black bg-gradient-to-r from-bluegray-100 to-bluegray-400 bg-no-repeat bg-[size:100%_90%] bg-[position:0_100%] bg-clip-text text-transparent">{children}</span>
)

// italic
const I : FC<{ children : React.ReactNode}> = ({ children }) => (
const I : FC<{ children : React.ReactNode }> = ({ children }) => (
<span className="italic">{children}</span>
)

// darker
const D : FC<{ children : React.ReactNode}> = ({ children }) => (
const D : FC<{ children : React.ReactNode }> = ({ children }) => (
<span className="opacity-70">{children}</span>
)

const Biography : FC = () => {
// strikethrough
const S : FC<{ children : React.ReactNode }> = ({ children }) => (
<span className="line-through">{children}</span>
)

const Biography : FC = () => {
const calculateAge = (birthday : Date) => {
const ageDifMs = Date.now() - birthday.getTime()
const ageDate = new Date(ageDifMs)
Expand All @@ -38,16 +42,13 @@ const Biography : FC = () => {
</span>
<BioPicture />
<span>
My educational background is entirely centered around <H>computer science</H>, which I am currently studying at <H>Università degli studi di Milano</H>. Currently, my main focus is on <H>continuous learning</H> and <H>practical application</H> of new technologies across various domains, including <I>web development</I>, <I>complex algorithms</I>, <I>dockerization</I> and <I>networking</I>. Find out more about my <Link to="/interests"><H>interests</H></Link> in the <Link to="/interests"><U>dedicated page</U></Link>.
My educational background is entirely centered around <H>computer science</H>, which I am currently studying at <H>Università degli studi di Milano</H>. For more details about my <H>interests</H>, <H>notable projects</H> and <H>current focuses</H> check out my <U><Link to="https://github.com/Favo02" target="_blank">GitHub README</Link></U>. I update it quite <I>frequently</I>, much more than this website!
</span>

<span className="block my-3">
I also engage in activities unrelated to computers. I have a strong passion for playing basically <H>any sport</H>, particularly <I>football</I> and <I>ping pong</I>. However, I must admit that my <H>competitive nature</H> and desire for <H>precision</H> come into play: whether it&apos;s a casual or competitive game, I always strive to achieve victory and excel in every endeavor I pursue.
Another thing I really enjoy is pushing my physical limits through activities such as running, cycling or hiking <I><D>(mountain &gt; seaside)</D></I>.
I also engage in activities unrelated to computers. I have a strong passion for playing basically <H>any sport</H>, particularly <H>football</H> <I><D>(the real one, <S>soccer</S>)</D></I>, which I played for many years in my hometown team. However, I must admit that my <H>competitive nature</H> and desire for <H>precision</H> come into play: whether it&apos;s a casual or competitive game, I always strive to achieve victory and to excel. Another thing I really enjoy is pushing my physical limits through activities such as running, cycling or hiking <I><D>(mountain &gt; seaside)</D></I>.
</span>

<span>
Returning to computers: I consider myself a decent <H>competitive gamer</H>, competing under the alias of <I><H>imprudenza</H></I> <Link to="https://linktr.ee/imprudenza" target="_blank"><I><D><U>(imprudenza&apos;s socials linktree)</U></D></I></Link>. In the past, I competed in <I>Minecraft</I> <span title="ClanWar BedWars, 4v4 on PigParty or GommeHD"><U>CWBW</U></span>, becoming <span title="PigParty BedWars league, 4v4 on PigParty"><I><D><U>2018 Italian Champion</U></D></I></span> with <I><D>Rebirth</D></I>. In recent years, I transitioned to <I>Rainbow Six Siege</I>, where I secured second place in the <Link to="https://liquipedia.net/rainbowsix/PG_Nationals/2022/BeSerious/Spring" target="_blank" title="BeSerious Spring 2022"><I><D><U>2022 Italian Second Division</U></D></I></Link> with <I><D>P11</D></I>. Due to time constraints, my involvement in competitive gaming has reduced. However, I still occasionally participate in competitive tournaments for fun.
Returning to computers: I consider myself a decent <H>competitive gamer</H>, competing under the alias of <I><H>imprudenza</H></I> <Link to="https://linktr.ee/imprudenza" target="_blank"><I><D><U>(imprudenza&apos;s socials linktree)</U></D></I></Link>. In the past, I competed in <I>Minecraft</I> <span title="ClanWar BedWars, 4v4 on PigParty or GommeHD"><U>CWBW</U></span>, becoming <span title="PigParty BedWars league, 4v4 on PigParty"><I><U>2018 Italian Champion</U></I></span> with <I><D>Rebirth</D></I>. In recent years, I transitioned to <I>Rainbow Six Siege</I>, where I secured second place in the <Link to="https://liquipedia.net/rainbowsix/PG_Nationals/2022/BeSerious/Spring" target="_blank" title="BeSerious Spring 2022"><I><U>2022 Italian Second Division</U></I></Link> with <I><D>P11</D></I>. Due to time constraints, my involvement in competitive gaming has reduced. <S><D>However, I still occasionally participate in competitive tournaments for fun.</D></S>
</span>

<span className="block my-3">
Expand Down
83 changes: 0 additions & 83 deletions frontend/src/components/About/Education.tsx

This file was deleted.

32 changes: 32 additions & 0 deletions frontend/src/components/About/EducationBox.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import type { FC } from "react"
import { BiLink } from "react-icons/bi"
import { Link } from "react-router-dom"

import type EducationEntry from "../../interfaces/EducationEntry"

const Education : FC<{ title : string, entries : EducationEntry[] }> = ({ title, entries }) => (

<div className="scroll-mt-40 max-w-4xl m-auto mt-10 pt-6 pb-8 bg-gray-400 bg-opacity-20 rounded-xl backdrop-blur-lg shadow-xl shadow-black">

<h1 className="text-3xl text-center uppercase font-black bg-gradient-to-br pb-4 from-gray-200 via-bluegray-200 to-bluegray-600 bg-clip-text text-transparent tracking-wider">{title}</h1>

{entries.map(e =>
<div key={e.name} className="flex flex-col md:flex-row w-5/6 mx-auto md:w-full mt-6 group text-center">
<div className="w-full md:w-1/3 md:text-right pr-6 text-bluegray-600 group-hover:text-bluegray-500 opacity-80 italic transition-all duration-700">{e.start}{e.end ? ` - ${e.end}` : ""}</div>
<Link to={e.link} target="_blank">
<h1 className="text-xl md:text-left font-bold text-gray-300 group-hover:text-gray-200 transition-all duration-700">
{e.name}, {e.location}
<BiLink className="inline -mt-1 ml-1" />
{e.isCertificate &&
<span className="text-xs border font-black text-green-600/30 border-green-800/30 rounded-md ml-1 py-0.5 px-2">CERTIFICATE</span>
}
</h1>
<h2 className="text-gray-500 md:text-left group-hover:text-gray-400 transition-all duration-700">{e.description}</h2>
</Link>
</div>
)}

</div>
)

export default Education
2 changes: 1 addition & 1 deletion frontend/src/components/Projects/ProjectsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const Projects : FC = () => {

useEffect(() => {

const featRepos : string[] = ["favo02.dev", "social-network-for-music", "workspaces-by-open-apps"]
const featRepos : string[] = ["favo02.dev", "social-network-for-music", "workspaces-by-open-apps", "cess-advisor"]

const ignoredRepos : string[] = ["Favo02", ".github", "preatoni-giardini", "FullStackOpen"]

Expand Down
11 changes: 11 additions & 0 deletions frontend/src/interfaces/EducationEntry.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
interface EducationEntry {
start : string,
end ?: string,
name : string,
location : string,
description : string,
link : string,
isCertificate ?: boolean
}

export default EducationEntry
70 changes: 64 additions & 6 deletions frontend/src/pages/About.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,68 @@
import type { FC } from "react"

import Biography from "../components/About/Biography"
import Education from "../components/About/Education"
import EducationBox from "../components/About/EducationBox"
import type EducationEntry from "../interfaces/EducationEntry"

import "../assets/styles/animations.css"

const experience : EducationEntry[] = [
{
start: "Feb 2024",
end: "May 2024",
name: "Programming Tutor",
location: "Università degli studi di Milano",
description: "Tutor for \"Programmazione I\" course (in Golang)",
link: "https://mameli.docenti.di.unimi.it/pls-tutoring/wiki/WikiStart"
}
]

const education : EducationEntry[] = [
{
start: "2021",
end: "present",
name: "Università degli studi di Milano",
location: "Milan",
description: "Bachelor in computer science (triennale informatica)",
link: "https://www.unimi.it/en/education/computer-science"
},
{
start: "2016",
end: "2021",
name: "ITIS Cannizzaro",
location: "Rho",
description: "High school in computer science (ITIS indirizzo informatica)",
link: "https://www.itiscannizzaro.edu.it/pagine/-informatica"
}
]

const certificates : EducationEntry[] = [
{
start: "2022",
name: "FullStackOpen course",
location: "Online",
description: "University of Helsinki modern Full Stack Web Development course",
link: "https://fullstackopen.com/en",
isCertificate: true
},
{
start: "2021",
name: "Elements of AI course",
location: "Online",
description: "MinnaLearn and University of Helsinki artificial intelligence course",
link: "https://www.elementsofai.com",
isCertificate: true
},
{
start: "2021",
name: "English B2 First qualification",
location: "Milan",
description: "Cambridge English B2 qualification",
link: "https://www.cambridgeenglish.org/exams-and-tests/first",
isCertificate: true
}
]

const About : FC = () => (
<div className="w-10/12 max-w-5xl m-auto">
<div className="text-gray-300 relative mt-10">
Expand All @@ -13,13 +71,13 @@ const About : FC = () => (
<h3 className="text-xl italic text-gray-400 text-center mt-8 font-light">You can find my <span className="font-bold">contact information</span> and <span className="font-bold">socials</span> in the footer of every page.</h3>
</div>

<div className="scroll-mt-40 max-w-4xl m-auto mt-10 pt-6 pb-8 bg-gray-400 bg-opacity-20 rounded-xl backdrop-blur-lg shadow-xl shadow-black">
<h1 className="text-3xl text-center uppercase font-black bg-gradient-to-br pb-4 from-gray-200 via-bluegray-200 to-bluegray-600 bg-clip-text text-transparent tracking-wider">Education</h1>
<EducationBox title="Experience" entries={experience} />

<Education />
<EducationBox title="Education" entries={education} />

<h3 className="italic text-gray-400 text-center mt-8 font-light">My <span className="font-bold">Curriculum Vitae</span> and <span className="font-bold">Certificates</span> are available upon request. Contact me.</h3>
</div>
<EducationBox title="Certificates" entries={certificates} />

<h3 className="italic text-gray-400 text-center mt-8 font-light">My <span className="font-bold">Curriculum Vitae</span> and <span className="font-bold">Certificates</span> are available upon request. Contact me.</h3>

</div>
)
Expand Down
78 changes: 10 additions & 68 deletions frontend/src/pages/Interests.tsx
Original file line number Diff line number Diff line change
@@ -1,78 +1,20 @@
import type { FC } from "react"
import { FaDocker, FaJava, FaPython } from "react-icons/fa"
import { IoMdFlag } from "react-icons/io"
import { SiC, SiExpress, SiGnubash, SiMongodb, SiPostgresql,SiReact, SiTailwindcss } from "react-icons/si"
import { TbBrandCpp, TbBrandGolang, TbBrandJavascript,TbBrandTypescript } from "react-icons/tb"

import InterestSection from "../components/Interests/InterestSection"
import type Interest from "../interfaces/Interest"
import { Link } from "react-router-dom"

import "../assets/styles/animations.css"

const Interests : FC = () => {
const Interests : FC = () => (
<>
<h4 className="mt-4 text-2xl text-gray-200 text-center">My tech <span className="font-bold bg-gradient-to-r from-gray-400 via-bluegray-600 to-transparent bg-no-repeat bg-[size:100%_15%] bg-[position:0_98%]">interests</span>.</h4>

const interests : Interest[] = [
{
"title": "Competitive programming",
"description": "I love solving complex problems as fast as possible: the only context where I tolerate messy code. But when time is over I refactor it.",
"languages": "C++, Python, Go, Java",
"icons": [
<TbBrandCpp key="C++" />,
<FaPython key="Python" />,
<TbBrandGolang key="Go" />,
<FaJava key="Java" />
],
"projects": [{ name: "leetcode", owner: "Favo02" }, { name: "advent-of-code", owner: "Favo02" }]
},
{
"title": "Full stack web development",
"description": "Keeping up with fast evolving technologies for web development can be hard and time consuming, but the results are worth it. And I like the results.",
"languages": "Javascript, Typescript, React, Express, Tailwind, (Mongo, Postgres)",
"icons": [
<TbBrandJavascript key="Javascript" />,
<TbBrandTypescript key="Typescript" />,
<SiReact key="React" />,
<SiExpress key="Express" />,
<SiTailwindcss key="Tailwind" />,
<SiMongodb key="Mongo" />,
<SiPostgresql key="Postgres" />
],
"projects": [{ name: "favo02.dev", owner: "Favo02" }, { name: "social-network-for-music", owner: "Favo02-unimi" }]
},
{
"title": "Open source software",
"description": "I like to share open source software I develop, such as GNOME shell extensions or simple utilities for competitive programming.",
"languages": "Javascript, Java",
"icons": [
<FaJava key="Java" />,
<TbBrandJavascript key="Javascript" />
],
"projects": [{ name: "workspaces-by-open-apps", owner: "Favo02" }, { name: "java-algorithms-and-structures", owner: "Favo02" }]
},
{
"title": "Learning...",
"description": "I'm always looking forward to learning and practicing new things: currently experimenting with an old PC turned into an Home Server (hosting this!) and Docker. From time to time I love to catch some flags in Security CTFs (process interaction with C and shell injection in x86-64 assembly are my favourites).",
"languages": "Docker, Bash, C, x86-64",
"icons": [
<FaDocker key="docker" />,
<SiGnubash key="bash" />,
<IoMdFlag key="ctf" />,
<SiC key="c" />
],
"projects": [{ name: "docker-compose", owner: "Favo02" }, { name: "sicurezza-e-privatezza", owner: "Favo02-unimi" }]
}
]
<div className="scroll-mt-40 max-w-4xl m-auto mt-10 px-20 py-14 bg-gray-400 bg-opacity-20 rounded-xl backdrop-blur-lg shadow-xl shadow-black">

return (
<>
<h4 className="mt-4 text-2xl text-gray-200 text-center">My tech <span className="font-bold bg-gradient-to-r from-gray-400 via-bluegray-600 to-transparent bg-no-repeat bg-[size:100%_15%] bg-[position:0_98%]">interests</span>.</h4>
<h4 className="text-2xl text-gray-200 text-center">This page needs a <span className="font-bold bg-gradient-to-r from-gray-400 via-bluegray-600 to-transparent bg-no-repeat bg-[size:100%_15%] bg-[position:0_98%]">major update</span>. As soon as I find some <i>willpower</i> to write some <i>Typescript</i>, I&apos;ll fix it.</h4>

<h4 className="mt-4 text-2xl text-gray-200 text-center">Meanwhile you can check the <span className="font-bold bg-gradient-to-r from-gray-400 via-bluegray-600 to-transparent bg-no-repeat bg-[size:100%_15%] bg-[position:0_98%]"><Link to="https://github.com/Favo02" target="_blank">README of my GitHub profile</Link></span>, it is pretty up to date.</h4>

<div className="w-10/12 max-w-6xl m-auto mt-12 mb-20 text-gray-200 divide-y-2 divide-bluegray-600/50 divide-dashed bg-gray-400 bg-opacity-20 rounded-xl backdrop-blur-lg shadow-xl shadow-black">
{interests.map(i => <InterestSection interest={i} key={i.title} />)}
</div>
</>
)
}
</div>
</>
)

export default Interests

0 comments on commit 75a652e

Please sign in to comment.