LuisAldrichGuz

XP Desktop

Company: Microsoft Learn

Role: Microsoft Learn Student Ambassador

Stack: JavaScript, HTML, CSS

Demo

Source

XP Desktop

My 2021 portfolio: a Windows XP desktop that runs entirely in the browser. I wrote it as a Microsoft Learn Student Ambassador, back when I already preferred making toys to making pages. Today's one is a 3D game, so at least I am consistent.

The desktop and its icons
The wallpaper is a freely licensed photo, not Microsofts: that one was hotlinked from a stranger's blog

What is in it

Real windows: dragged by the title bar, resized from the corner, minimised, maximised, and stacked by whichever you clicked last. The taskbar carries one entry per open window and the clock keeps time.

Inside there is my CV in both languages, a full minesweeper, a calculator that works from the keyboard, an Internet Explorer and the readme.

::carousel images=[{"src": "/media/work-projects/images/escritorio-xp/buscaminas.webp", "alt": "Minesweeper", "caption": "Zeros cascade open and right click plants a flag"}, {"src": "/media/work-projects/images/escritorio-xp/apps.webp", "alt": "Several windows open", "caption": "Four windows, their taskbar and which one has focus"}, {"src": "/media/work-projects/images/escritorio-xp/menu.webp", "alt": "The start menu", "caption": "The apps come out of a single list"}, {"src": "/media/work-projects/images/escritorio-xp/cv.webp", "alt": "The CV", "caption": "It opens in the browser's language"}, {"src": "/media/work-projects/images/escritorio-xp/movil.webp", "alt": "On a phone", "caption": "On mobile windows go full screen and you switch from the taskbar"}] height="460px"::

The minesweeper is not a grid with bombs

It has the three rules that make it Windows': the first square is never a mine —the mines are dealt after the first click—, zeros cascade open, and a flagged square cannot be opened by accident. Plus the old chord: click a number that already has its flags and the rest of its neighbours open at once.

How it is built

Plain HTML, CSS and JavaScript. No framework, no build step and not one external dependency: no CDN, no Google font, no image hotlinked from somewhere else.

Why the repo is called "Onboarding"

Because of the template the Microsoft Learn programme handed out, the one every ambassador forked for their page. I do not like following templates, so I emptied it and wrote this on top. There were so many of us that nobody ever reviewed those pages, and mine sat there for five years without anyone opening it.

What I found coming back in 2026

That it leaned on five other people's servers and two were already gone. The start button had been showing a broken icon for months because the little flag came from Wikipedia and returned a 400, and the browser window pointed at a domain of mine that no longer exists. That is what happens to a page nobody opens again.

Now the apps come out of one list and each shows up on its own in all three places: icon, menu and taskbar.

::two-columns split="50-50"::

What got fixed

The wallpaper and the icons moved in here —the photo is freely licensed now, and credited—, the calculator exists, the browser opens in a new tab, sizes went back to pixels —at 2.5vw the taskbar was 64px tall on a big monitor— and the CV is today's.

::column-break::

What that bought

With nothing coming from outside, the Content-Security-Policy closes to 'self' with no exceptions at all. It used to need five domains on the list.

::/two-columns::