/* pages-info.jsx — About + Education + Experience */ function AboutPage() { const { t } = window.useI18n(); return (
david @ fontanet : ~/about $ cat about.md

{t('about.title')}

{` ___ / \\ | o | | | | | o | \\___/ __|_|__ | | | [] | | | \\_____/ / \\ |_______|`}
david@portfolio
———————————————
{t('about.neofetch.os')}PortfolioOS 1.0 x86_64
{t('about.neofetch.host')}DavidFB MacBook (M-series)
{t('about.neofetch.kernel')}david-5.18.2-curiosity
{t('about.neofetch.uptime')}28 years, learning daily
{t('about.neofetch.shell')}zsh + oh-my-zsh
{t('about.neofetch.editor')}VS Code · vim (for emergencies)
{t('about.neofetch.terminal')}iTerm2 + tmux
{t('about.neofetch.cpu')}caffeine @ 3.4 GHz
{t('about.neofetch.gpu')}imagination ×2
{t('about.neofetch.ram')}8 / 16 GB ··· (chrome open)
{t('about.neofetch.lang')}ca · es · en
{['#1a2230', '#ff6e6e', '#4ade80', '#ffb454', '#00d4ff', '#c792ea', '#4ec5ff', '#e6edf7'].map(c => )}

{t('about.values.title')}

01
{t('about.value1.title')}
{t('about.value1.body')}
02
{t('about.value2.title')}
{t('about.value2.body')}
03
{t('about.value3.title')}
{t('about.value3.body')}
"make it work, make it right, make it fast — in that order." — Kent Beck
); } function EducationPage() { const { t } = window.useI18n(); return (
david @ fontanet : ~/education $ ls -la --sort=date

{t('edu.title')}

{t('edu.intro')}

total 4
drwxr-xr-x david 4096 May 18 2026 ./
drwxr-xr-x david 4096 Jan 01 2018 university/
drwxr-xr-x david 4096 Sep 01 2014 bachillerato/
-rw-r--r-- david 8.2K — ongoing certifications.md
{t('edu.degree.title')} {t('edu.degree.where')} {t('edu.degree.years')}

{t('edu.degree.desc')}

algoritmos sistemas redes software design bbdd
{t('edu.bach.title')} {t('edu.bach.where')} {t('edu.bach.years')}

{t('edu.bach.desc')}

matemáticas física tecnología programación

{t('edu.cert.title')}

{t('edu.cert.intro')}

certifications.md 2.4K · markdown
  • {t('edu.cert.1')}
  • {t('edu.cert.2')}
  • {t('edu.cert.3')}
  • {t('edu.cert.4')}

{t('edu.note')}

); } function ExperiencePage() { const { t } = window.useI18n(); return (
david @ fontanet : ~/career $ git log --oneline --decorate --all

{t('exp.title')}

{t('exp.intro')}

branch: main | commits: 3 | + a lot of lines shipped | - many bugs squashed
a8f3c21 HEAD -> main current David Fontanet May 18, 2026
{t('exp.job1.title')}
{t('exp.job1.dates')}
{t('exp.job1.body')}
7d1e09b v2 David Fontanet 20XX
{t('exp.job2.title')}
{t('exp.job2.dates')}
{t('exp.job2.body')}
3b29f04 v1 David Fontanet 20XX
{t('exp.job3.title')}
{t('exp.job3.dates')}
{t('exp.job3.body')}
0000000 initial David Fontanet ~ 2014
initial commit · primer "Hello, world!"
+ descubre la línea de comandos + rompe muchas cosas, aprende más
); } Object.assign(window, { AboutPage, EducationPage, ExperiencePage });