<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>spelunx</provider_name><provider_url>https://projects.etc.cmu.edu/spelunx</provider_url><author_name>Winnie Tsai</author_name><author_url>https://projects.etc.cmu.edu/spelunx/author/winniets/</author_url><title>Week 0 - How Spelunx Came to Be - spelunx</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="cEc95QcfDs"&gt;&lt;a href="https://projects.etc.cmu.edu/spelunx/devlogs-week-0/"&gt;Week 0 &#x2013; How Spelunx Came to Be&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://projects.etc.cmu.edu/spelunx/devlogs-week-0/embed/#?secret=cEc95QcfDs" width="600" height="338" title="&#x201C;Week 0 &#x2013; How Spelunx Came to Be&#x201D; &#x2014; spelunx" data-secret="cEc95QcfDs" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
&lt;/script&gt;
</html><thumbnail_url>https://projects.etc.cmu.edu/spelunx/wp-content/uploads/2025/01/Screenshot-2025-02-15-021723-1024x564.png</thumbnail_url><thumbnail_width>1024</thumbnail_width><thumbnail_height>564</thumbnail_height><description>Spelunx began as a technical passion project&#x2014;four programmers eager to dive deep into rendering, software engineering, and systems development. We wanted to build something from scratch, not just another experience, but tools that would empower future creators. Each of us had a different motivation for starting this project: To better understand how to structure a [&hellip;]</description></oembed>
