<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Sergio MG</title><link>https://sergiomg.com/</link><description>Recent content on Sergio MG</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 17 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://sergiomg.com/index.xml" rel="self" type="application/rss+xml"/><item><title>01 - Three.js Cube</title><link>https://sergiomg.com/experiments/01-cube/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://sergiomg.com/experiments/01-cube/</guid><description>&lt;div id="cube-container" style="width:100%;height:500px;"&gt;&lt;/div&gt;
&lt;script type="module"&gt;
import * as THREE from '/libs/three.module.js';
const container = document.getElementById('cube-container');
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, container.clientWidth / container.clientHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(container.clientWidth, container.clientHeight);
renderer.setClearColor(0x111111);
container.appendChild(renderer.domElement);
const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshNormalMaterial();
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 3;
function animate() {
requestAnimationFrame(animate);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
}
animate();
window.addEventListener('resize', () =&gt; {
camera.aspect = container.clientWidth / container.clientHeight;
camera.updateProjectionMatrix();
renderer.setSize(container.clientWidth, container.clientHeight);
});
&lt;/script&gt;</description></item><item><title>02 - Particle System</title><link>https://sergiomg.com/experiments/02-particles/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://sergiomg.com/experiments/02-particles/</guid><description>&lt;div style="position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999;"&gt;
&lt;iframe src="https://sergiomg.com/demos/02-particles/" style="width:100%;height:100%;border:none;"&gt;&lt;/iframe&gt;
&lt;a href="https://sergiomg.com/experiments/" style="position:absolute;top:1rem;left:1rem;color:#fff;background:rgba(0,0,0,0.6);padding:0.5rem 1rem;border-radius:6px;text-decoration:none;font-size:0.9rem;z-index:1000;"&gt;← Back&lt;/a&gt;
&lt;/div&gt;</description></item><item><title>Hello World</title><link>https://sergiomg.com/blog/hello-world/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://sergiomg.com/blog/hello-world/</guid><description>&lt;p&gt;My first blog post!&lt;/p&gt;</description></item><item><title/><link>https://sergiomg.com/static/demos/02-particles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sergiomg.com/static/demos/02-particles/</guid><description>&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;style&gt;
body { margin: 0; overflow: hidden; background: #0a0a0a; }
#app { width: 100vw; height: 100vh; }
&lt;/style&gt;
&lt;script type="module" crossorigin src="https://sergiomg.com/demos/02-particles/assets/index-CKBK8Tj2.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="app"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</description></item></channel></rss>