<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>interloper.</title>
	<atom:link href="https://interloper.ie/feed/" rel="self" type="application/rss+xml" />
	<link>https://interloper.ie</link>
	<description>Marcus Craig - Artist &#38; Technician</description>
	<lastBuildDate>Fri, 19 Jun 2026 16:25:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://interloper.ie/wp-content/uploads/2023/10/Untitled-2-150x150.webp</url>
	<title>interloper.</title>
	<link>https://interloper.ie</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Rotvoll Station</title>
		<link>https://interloper.ie/rotvoll/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Sun, 14 Jun 2026 20:20:33 +0000</pubDate>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[3dgs]]></category>
		<category><![CDATA[gaussian splat]]></category>
		<guid isPermaLink="false">https://interloper.ie/?p=1204</guid>

					<description><![CDATA[3DGS &#8211; ROTVOLL Station This is the result of a brute force gaussian splat attempt made on an intentionally limited source-video.]]></description>
										<content:encoded><![CDATA[
<h2 data-wp-context---core-fit-text="core/fit-text::{&quot;fontSize&quot;:&quot;&quot;}" data-wp-init---core-fit-text="core/fit-text::callbacks.init" data-wp-interactive data-wp-style--font-size="core/fit-text::context.fontSize" class="wp-block-heading has-fit-text">3DGS &#8211; ROTVOLL Station</h2>



<p class="wp-block-paragraph">This is the result of a brute force gaussian splat attempt made on an intentionally limited source-video.</p>



<!-- Responsive Gaussian Splat iframe wrapper -->
<style>
.splat-responsive-iframe {
  position: relative;
  width: 100%;
  padding-bottom: 56.25%; /* 16:9 Aspect Ratio (change as needed) */
  height: 0;
  overflow: hidden;
  border-radius: 16px;  /* optional, for rounded corners */
  box-shadow: 0 2px 16px rgba(0,0,0,0.08); /* optional, for subtle shadow */
  background: #f8f8f8; /* fallback background */
}
.splat-responsive-iframe iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
}
</style>

<div class="splat-responsive-iframe">
  <iframe src="https://interloper.ie/wp-content/uploads/Rotvoll.html" allowfullscreen="" loading="lazy" title="Gaussian Splat Viewer"></iframe>
</div>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" autoplay loop muted src="https://interloper.ie/wp-content/uploads/Untitled-design.mp4" playsinline></video></figure>
]]></content:encoded>
					
		
		<enclosure url="https://interloper.ie/wp-content/uploads/Untitled-design.mp4" length="11620060" type="video/mp4" />

			</item>
		<item>
		<title>QR Code Anything &#8211; Infinite* data encode/decode</title>
		<link>https://interloper.ie/qr-code/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Sun, 10 May 2026 11:49:53 +0000</pubDate>
				<category><![CDATA[One Day Projects]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[qr code]]></category>
		<guid isPermaLink="false">https://interloper.ie/?p=1112</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<style>
/* ===== Page chrome (post 1112 only) ===== */
body.postid-1112 {
  background: #062324 !important;
  color: #F0D0B1;
}
body.postid-1112 a { color: #F0D0B1; text-decoration: none; }
body.postid-1112 a:hover { color: #F0D0B1; opacity: 0.75; }

body.postid-1112 .wp-block-site-title,
body.postid-1112 .wp-block-site-title a { color: #F0D0B1 !important; }

body.postid-1112 .wp-block-navigation,
body.postid-1112 .wp-block-navigation-item,
body.postid-1112 .wp-block-navigation-item__content,
body.postid-1112 .wp-block-navigation-item__label,
body.postid-1112 .wp-block-navigation a { color: #F0D0B1 !important; }

body.postid-1112 .wp-block-post-terms,
body.postid-1112 .wp-block-post-terms a,
body.postid-1112 .wp-block-post-terms__separator { color: #F0D0B1 !important; }
body.postid-1112 .taxonomy-post_tag,
body.postid-1112 .taxonomy-post_tag a { color: rgba(240, 208, 177, 0.7) !important; }

body.postid-1112 h1,
body.postid-1112 h2,
body.postid-1112 h3,
body.postid-1112 h4 { color: #F0D0B1; }

body.postid-1112 .search-icon,
body.postid-1112 img[src*="Magnifying_glass"] {
  filter: invert(88%) sepia(20%) saturate(450%) hue-rotate(330deg) brightness(95%);
}

/* Hide the QR iframe until we've injected its dark palette, to avoid a flash of the original light theme. */
body.postid-1112 iframe[src*="qr_project_finished"] { visibility: hidden; }
body.postid-1112 iframe[src*="qr_project_finished"].qr-themed { visibility: visible; }
</style>
<script>
(function () {
  // CSS injected into the QR iframe's own document (same-origin, so this is allowed).
  // Keeps the project file itself untouched — all theming lives in this post.
  var iframeCSS = [
    ':root {',
    '  --color-bg: #062324;',
    '  --color-accent: #F0D0B1;',
    '  --color-border-primary: rgba(240, 208, 177, 0.75);',
    '  --color-border-secondary: rgba(240, 208, 177, 0.55);',
    '  --color-border-tertiary: rgba(240, 208, 177, 0.35);',
    '  --color-text-primary: #F0D0B1;',
    '  --color-text-secondary: rgba(240, 208, 177, 0.7);',
    '  --color-text-danger: #ff8a7a;',
    '  --color-background-secondary: transparent;',
    '  --color-background-tertiary: rgba(240, 208, 177, 0.12);',
    '}',
    'body { background: #062324 !important; color: #F0D0B1; }',
    'textarea.ta {',
    '  background: rgba(240, 208, 177, 0.06);',
    '  color: #F0D0B1;',
    '  caret-color: #F0D0B1;',
    '}',
    'textarea.ta::placeholder { color: rgba(240, 208, 177, 0.45); }',
    'textarea.ta:focus { outline: none; border-color: rgba(240, 208, 177, 0.75); }',
    '.btn { transition: background 0.15s ease, border-color 0.15s ease; }',
    '.btn:hover { border-color: rgba(240, 208, 177, 0.75); }',
    'input[type="checkbox"] { accent-color: #F0D0B1; }',
    '.qr span { color: #666666 !important; }',
    '.qr span[style*="danger"] { color: #cc2222 !important; }'
  ].join('\n');

  function injectInto(iframe) {
    try {
      var doc = iframe.contentDocument;
      if (!doc || !doc.head) return false;
      if (doc.getElementById('qr-post-theme')) {
        iframe.classList.add('qr-themed');
        return true;
      }
      var style = doc.createElement('style');
      style.id = 'qr-post-theme';
      style.textContent = iframeCSS;
      doc.head.appendChild(style);
      iframe.classList.add('qr-themed');
      return true;
    } catch (e) {
      return false;
    }
  }

  function attach(iframe) {
    if (iframe.dataset.qrThemeBound) return;
    iframe.dataset.qrThemeBound = '1';
    // Try immediately (cached / already-loaded case).
    injectInto(iframe);
    iframe.addEventListener('load', function () { injectInto(iframe); });
    // Safety: also poll briefly in case head appears before load fires.
    var tries = 0;
    var poll = setInterval(function () {
      if (injectInto(iframe) || ++tries > 40) clearInterval(poll);
    }, 50);
  }

  function scan() {
    var iframes = document.querySelectorAll('iframe[src*="qr_project_finished"]');
    for (var i = 0; i < iframes.length; i++) attach(iframes[i]);
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', scan);
  } else {
    scan();
  }
})();
</script>


<iframe id="render-html-1" src="https://interloper.ie/wp-content/uploads/qr_project_finished.html" scrolling="no" frameborder="0" style="border:none;display:block;width:100%;overflow:hidden;" title="Embedded HTML"></iframe>
<script>(function(){var f=document.getElementById("render-html-1");function r(){try{f.style.height=f.contentDocument.documentElement.scrollHeight+"px";}catch(e){}}f.addEventListener("load",function(){r();try{new MutationObserver(r).observe(f.contentDocument.body,{childList:true,subtree:true,attributes:true,characterData:true});}catch(e){}});}());</script>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>3DGS of Video Game Clip</title>
		<link>https://interloper.ie/3dgs-gameclip/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Thu, 02 Apr 2026 16:51:38 +0000</pubDate>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[3dgs]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[gaussian splat]]></category>
		<category><![CDATA[open-source]]></category>
		<guid isPermaLink="false">https://interloper.ie/?p=1075</guid>

					<description><![CDATA[Here we have the result of a pretty boiler plate example of open-source gaussian splat scene generation. This was rendered via RealityScan for the sparse point cloud mapping and image extraction, then onto LichtFeld Studio for splat generation. I use a combination of a thread ripper cpu and an RTX 5070ti so this only took [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Here we have the result of a pretty boiler plate example of open-source gaussian splat scene generation. This was rendered via <strong>RealityScan </strong>for the sparse point cloud mapping and image extraction, then onto<strong> LichtFeld Studio </strong>for splat generation. I use a combination of a thread ripper cpu and an RTX 5070ti so this only took around 3 minutes to compute.<br><br>I wanted this experiment to utilise datasets that are not of pristine origin. So many spats source from existing point cloud datasets and newer high resolution cameras rigs or drones. The software required to generate these have become much more flexible in what can be ingested and I was curious if incomplete or unreal datasets could make something interesting.</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://interloper.ie/wp-content/uploads/Half-Sword-Demo-2025-12-06-11-29-23-AM.mp4"></video></figure>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary>Click to see the result</summary>
<!-- Responsive Gaussian Splat iframe wrapper -->
<style>
.splat-responsive-iframe {
  position: relative;
  width: 100%;
  padding-bottom: 56.25%; /* 16:9 Aspect Ratio (change as needed) */
  height: 0;
  overflow: hidden;
  border-radius: 16px;  /* optional, for rounded corners */
  box-shadow: 0 2px 16px rgba(0,0,0,0.08); /* optional, for subtle shadow */
  background: #f8f8f8; /* fallback background */
}
.splat-responsive-iframe iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
}
</style>

<div class="splat-responsive-iframe">
  <iframe 
    src="https://interloper.ie/wp-content/uploads/splat_30000.html"
    allowfullscreen
    loading="lazy"
    title="Gaussian Splat Viewer"
  ></iframe>
</div>
</details>
]]></content:encoded>
					
		
		<enclosure url="https://interloper.ie/wp-content/uploads/Half-Sword-Demo-2025-12-06-11-29-23-AM.mp4" length="32410846" type="video/mp4" />

			</item>
		<item>
		<title>Portra 160</title>
		<link>https://interloper.ie/portra-160/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Fri, 02 Jan 2026 16:24:46 +0000</pubDate>
				<category><![CDATA[Lens-based]]></category>
		<category><![CDATA[35mm]]></category>
		<category><![CDATA[film]]></category>
		<category><![CDATA[photography]]></category>
		<guid isPermaLink="false">https://interloper.ie/?p=1010</guid>

					<description><![CDATA[Portra 160 A single roll of 35mm Portra 160. Shots from summer in Nice, France.]]></description>
										<content:encoded><![CDATA[
<h2 data-wp-context---core-fit-text="core/fit-text::{&quot;fontSize&quot;:&quot;&quot;}" data-wp-init---core-fit-text="core/fit-text::callbacks.init" data-wp-interactive data-wp-style--font-size="core/fit-text::context.fontSize" class="wp-block-heading has-fit-text">Portra 160</h2>



<p class="wp-block-paragraph">A single roll of 35mm Portra 160. Shots from summer in Nice, France.</p>


<ul style="--columns: 3;--space: 0px;--min-width: 0px" class="filebird-block-filebird-gallery wp-block-gallery blocks-gallery-grid columns-3 is-cropped wp-block-filebird-block-filebird-gallery"><li class="blocks-gallery-item"><figure><img width="1697" height="2560" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130035-scaled.webp" alt="000012130035" class="wp-image-534"/></figure></li><li class="blocks-gallery-item"><figure><img width="1697" height="2560" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130024-scaled.webp" alt="000012130024" class="wp-image-533"/></figure></li><li class="blocks-gallery-item"><figure><img width="1697" height="2560" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130021-scaled.webp" alt="000012130021" class="wp-image-532"/></figure></li><li class="blocks-gallery-item"><figure><img width="2560" height="1697" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130028-scaled.webp" alt="000012130028" class="wp-image-531"/></figure></li><li class="blocks-gallery-item"><figure><img width="1697" height="2560" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130026-scaled.webp" alt="000012130026" class="wp-image-530"/></figure></li><li class="blocks-gallery-item"><figure><img width="1697" height="2560" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130025-scaled.webp" alt="000012130025" class="wp-image-529"/></figure></li><li class="blocks-gallery-item"><figure><img width="1697" height="2560" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130017-scaled.webp" alt="000012130017" class="wp-image-528"/></figure></li><li class="blocks-gallery-item"><figure><img width="1697" height="2560" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130014-scaled.webp" alt="000012130014" class="wp-image-527"/></figure></li><li class="blocks-gallery-item"><figure><img width="1697" height="2560" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/000012130011-scaled.webp" alt="000012130011" class="wp-image-526"/></figure></li></ul>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Terminal</title>
		<link>https://interloper.ie/terminal/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Sat, 09 Aug 2025 19:02:00 +0000</pubDate>
				<category><![CDATA[One Day Projects]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[one-day-project]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[terminal]]></category>
		<guid isPermaLink="false">https://www.interloper.ie/?p=702</guid>

					<description><![CDATA[Terminal OS It has been a while since I made a one-day project. Always enjoyed the idea of a web based &#8216;terminal&#8217; that mimics a SSH connection or a headless CLI. I could easily expose a MySQL demo user and designate a sandbox portion of my VM &#8211; but making it a single HTML is [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 data-wp-context---core-fit-text="core/fit-text::{&quot;fontSize&quot;:&quot;&quot;}" data-wp-init---core-fit-text="core/fit-text::callbacks.init" data-wp-interactive data-wp-style--font-size="core/fit-text::context.fontSize" class="wp-block-heading has-fit-text">Terminal OS</h2>


<div class="wp-block-post-date"><time datetime="2025-08-09T21:02:00+02:00">09/08/2025</time></div>


<p class="wp-block-paragraph">It has been a while since I made a one-day project. Always enjoyed the idea of a web based &#8216;terminal&#8217; that mimics a SSH connection or a headless CLI. I could easily expose a MySQL demo user and designate a sandbox portion of my VM &#8211; but making it a single HTML is much more fun (and, you know, safe).<br><br>Adding a few functions that pull from some public APIs such as a weather search and some selected news headlines via RSS. Adding the ability to query the WordPress CMS so you can search Pages/Posts, all without requiring its REST API. I could always add some persistence with some PHP sessions or even just the browsers localStorage, but I prefer this to be as instanced and lightweight as possible. This is all contained within a single HTML file (&lt;20kb).<br><br>This project can be found formerly at <a href="https://interloper.ie/os">interloper.ie/os</a></p>



<!-- Terminal iframe wrapper -->
<style>
.terminal-embed{
  position:relative;
  width:100%;
  aspect-ratio:16/9;                 /* default desktop letterbox */
  overflow:hidden;
  border-radius:16px;
  box-shadow:0 2px 16px rgba(0,0,0,.08);
  background:#0b0b0b;
}

/* The iframe */
.terminal-embed iframe{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:0;
}

/* Fullscreen button */
.terminal-embed .fs-btn{
  position:absolute;
  top:10px;
  right:10px;
  z-index:2;                         /* ensure above iframe */
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding:.5rem .7rem;
  border-radius:10px;
  background:rgba(10,10,10,.7);
  color:#e8e8e8;
  border:1px solid rgba(255,255,255,.15);
  backdrop-filter: blur(4px);
  cursor:pointer;
  font:500 13px/1 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  user-select:none;

  opacity:0;
  transform: translateY(-4px);
  transition: opacity .18s ease, transform .18s ease, background .18s ease;
}
.terminal-embed .fs-btn:hover{ background:rgba(10,10,10,.85); }
.terminal-embed .fs-btn svg{ width:16px; height:16px; }

/* Fade in on hover/focus, and keep shown while fullscreen */
.terminal-embed:hover .fs-btn,
.terminal-embed:focus-within .fs-btn,
.terminal-embed.is-fullscreen .fs-btn{
  opacity:1;
  transform:none;
}

/* No hover (touch): keep visible */
@media (hover:none){
  .terminal-embed .fs-btn{ opacity:1; transform:none; }
}

/* Phones in portrait: use viewport height instead of 16:9 */
@media (max-width:700px) and (orientation:portrait){
  .terminal-embed{ aspect-ratio:auto; height:85vh; }
  .terminal-embed iframe{ height:100%; }
}
</style>

<div class="terminal-embed" id="terminal-embed" aria-label="Interactive terminal embed">
  <button class="fs-btn" type="button" aria-label="Enter fullscreen" title="Fullscreen">
    <!-- “enter fullscreen” icon -->
    <svg viewBox="0 0 24 24" aria-hidden="true">
      <path fill="currentColor"
        d="M7 3h2v4h4v2H7V3zm8 0h2v6h-6V7h4V3zM7 13h6v4H9v4H7v-8zm10 0v8h-2v-4h-4v-2h6z"/>
    </svg>
    <span class="fs-text">Fullscreen</span>
  </button>

  <iframe
    id="terminal-frame"
    src="/wp-content/uploads/2025/08/terminal2.html"
    title="terminal"
    loading="lazy"
    allow="fullscreen"
    allowfullscreen
  ></iframe>
</div>

<script>
(function(){
  const wrap   = document.getElementById('terminal-embed');
  const btn    = wrap.querySelector('.fs-btn');
  const label  = btn.querySelector('.fs-text');
  const svg    = btn.querySelector('svg');
  const iframe = document.getElementById('terminal-frame');

  function isFS(){
    return document.fullscreenElement === wrap
        || document.webkitFullscreenElement === wrap;
  }

  async function enterFS(){
    try{
      if (wrap.requestFullscreen) await wrap.requestFullscreen();
      else if (wrap.webkitRequestFullscreen) wrap.webkitRequestFullscreen(); // Safari
    }catch(e){ console.warn('Fullscreen request failed:', e); }
  }

  function exitFS(){
    if (document.exitFullscreen) document.exitFullscreen();
    else if (document.webkitExitFullscreen) document.webkitExitFullscreen();
  }

  function toggleFS(){
    if (isFS()) exitFS();
    else enterFS();
  }

  // Try to focus the terminal inside the iframe
  function focusTerminalInIframe(){
    try {
      // direct same-origin call
      iframe.contentWindow?.focusTerminal?.();
    } catch(e) {
      // Cross-origin safety; shouldn't happen for same-site
      console.warn('Could not call focusTerminal on iframe:', e);
    }
  }

  function updateUI(){
    const active = isFS();
    wrap.classList.toggle('is-fullscreen', active);
    btn.setAttribute('aria-label', active ? 'Exit fullscreen' : 'Enter fullscreen');
    btn.title = active ? 'Exit fullscreen' : 'Fullscreen';
    label.textContent = active ? 'Exit' : 'Fullscreen';
    svg.style.transform = active ? 'rotate(180deg)' : 'none';

    // When entering fullscreen, nudge focus a few times to beat timing quirks
    if (active) {
      focusTerminalInIframe();
      setTimeout(focusTerminalInIframe, 50);
      setTimeout(focusTerminalInIframe, 150);
    }
  }

  btn.addEventListener('click', () => {
    toggleFS();
    // Also try immediately on click (helps on some browsers)
    setTimeout(focusTerminalInIframe, 0);
  });

  document.addEventListener('fullscreenchange', updateUI);
  document.addEventListener('webkitfullscreenchange', updateUI);
  updateUI();
})();
</script>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>3DGS</title>
		<link>https://interloper.ie/custom_3dgs/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 08:53:33 +0000</pubDate>
				<category><![CDATA[Uncategorised]]></category>
		<guid isPermaLink="false">https://www.interloper.ie/?p=695</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<!-- Responsive Gaussian Splat iframe wrapper -->
<style>
.splat-responsive-iframe {
  position: relative;
  width: 100%;
  padding-bottom: 56.25%; /* 16:9 Aspect Ratio (change as needed) */
  height: 0;
  overflow: hidden;
  border-radius: 16px;  /* optional, for rounded corners */
  box-shadow: 0 2px 16px rgba(0,0,0,0.08); /* optional, for subtle shadow */
  background: #f8f8f8; /* fallback background */
}
.splat-responsive-iframe iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
}
</style>

<div class="splat-responsive-iframe">
  <iframe 
    src="https://interloper.ie/wp-content/uploads/2025/08/WP_Teapot.html"
    allowfullscreen
    loading="lazy"
    title="Gaussian Splat Viewer"
  ></iframe>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Attempt to create a new 3DGS Viewer</title>
		<link>https://interloper.ie/new-3dgsviewer-attempt/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Mon, 04 Aug 2025 13:00:17 +0000</pubDate>
				<category><![CDATA[Uncategorised]]></category>
		<category><![CDATA[3dgs]]></category>
		<category><![CDATA[gaussian splat]]></category>
		<category><![CDATA[splat]]></category>
		<category><![CDATA[three.js]]></category>
		<guid isPermaLink="false">https://www.interloper.ie/?p=688</guid>

					<description><![CDATA[Custom 3DGS viewer This is my attempt to create a 3DGS viewer of my own. It is largely a fork of the Three.js libraries with some tuning to help (attempt) to alter vertices in realtime. This cannot be done with some more popular viewers such as the wonderful one provided by SuperSplat. They encode the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 data-wp-context---core-fit-text="core/fit-text::{&quot;fontSize&quot;:&quot;&quot;}" data-wp-init---core-fit-text="core/fit-text::callbacks.init" data-wp-interactive data-wp-style--font-size="core/fit-text::context.fontSize" class="wp-block-heading has-fit-text">Custom 3DGS viewer</h2>



<p class="wp-block-paragraph">This is my attempt to create a 3DGS viewer of my own. It is largely a fork of the Three.js libraries with some tuning to help (attempt) to alter vertices in realtime. This cannot be done with some more popular viewers such as the wonderful one provided by SuperSplat. They encode the .ply file into a Base64 image and the rest of the code is minified so forget about it. There is room to make entirely realtime 3DGS editor but this will take some time.</p>



<style>
.responsive-iframe-container {
  position: relative;
  border-radius: 16px;  /* optional, for rounded corners */
  padding-bottom: 56.25%; /* 16:9 aspect ratio */
  height: 0;
  overflow: hidden;
}

.responsive-iframe-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
</style>

<div class="responsive-iframe-container">
  <iframe src="https://www.interloper.ie/wp-content/uploads/2025/08/test.html"></iframe>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Code Paint</title>
		<link>https://interloper.ie/code-paint/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Thu, 11 Apr 2024 10:40:16 +0000</pubDate>
				<category><![CDATA[Studies]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[p5.js]]></category>
		<category><![CDATA[paint]]></category>
		<guid isPermaLink="false">https://www.interloper.ie/?p=112</guid>

					<description><![CDATA[Code Paint]]></description>
										<content:encoded><![CDATA[
<h2 data-wp-context---core-fit-text="core/fit-text::{&quot;fontSize&quot;:&quot;&quot;}" data-wp-init---core-fit-text="core/fit-text::callbacks.init" data-wp-interactive data-wp-style--font-size="core/fit-text::context.fontSize" class="wp-block-heading has-fit-text">Code Paint</h2>


<ul style="--columns: 2;--space: 0px;--min-width: 0px" class="filebird-block-filebird-gallery wp-block-gallery blocks-gallery-grid columns-2 is-cropped wp-block-filebird-block-filebird-gallery"><li class="blocks-gallery-item"><figure><img width="1000" height="1000" decoding="async" src="https://interloper.ie/wp-content/uploads/2025/06/js1.webp" alt="js1" class="wp-image-525"/></figure></li><li class="blocks-gallery-item"><figure><img width="1200" height="1200" decoding="async" src="https://interloper.ie/wp-content/uploads/2024/04/myCanvas-4c.webp" alt="myCanvas-4c" class="wp-image-215"/></figure></li><li class="blocks-gallery-item"><figure><img width="1200" height="1200" decoding="async" src="https://interloper.ie/wp-content/uploads/2024/04/myCanvas-6c.webp" alt="myCanvas-6c" class="wp-image-212"/></figure></li><li class="blocks-gallery-item"><figure><img width="4000" height="4000" decoding="async" src="https://interloper.ie/wp-content/uploads/2024/04/myCanvas-6.webp" alt="myCanvas-6" class="wp-image-210"/></figure></li><li class="blocks-gallery-item"><figure><img width="1200" height="1200" decoding="async" src="https://interloper.ie/wp-content/uploads/2024/04/myCanvas-9-2.webp" alt="myCanvas-9-2" class="wp-image-207"/></figure></li><li class="blocks-gallery-item"><figure><img width="3250" height="3250" decoding="async" src="https://interloper.ie/wp-content/uploads/2024/04/myCanvas-9.webp" alt="myCanvas-9" class="wp-image-206"/></figure></li></ul>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>It Comes in Waves</title>
		<link>https://interloper.ie/waves/</link>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Tue, 03 Oct 2023 17:38:54 +0000</pubDate>
				<category><![CDATA[Lens-based]]></category>
		<category><![CDATA[astronomy]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[satellite]]></category>
		<guid isPermaLink="false">https://www.interloper.ie/?p=116</guid>

					<description><![CDATA[It Comes in Waves NOAA weather satellite]]></description>
										<content:encoded><![CDATA[
<h2 data-wp-context---core-fit-text="core/fit-text::{&quot;fontSize&quot;:&quot;&quot;}" data-wp-init---core-fit-text="core/fit-text::callbacks.init" data-wp-interactive data-wp-style--font-size="core/fit-text::context.fontSize" class="wp-block-heading has-fit-text">It Comes in Waves</h2>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a3598a051733&quot;}" data-wp-interactive="core/image" data-wp-key="6a3598a051733" class="wp-block-image aligncenter size-large wp-lightbox-container"><img fetchpriority="high" decoding="async" width="882" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://interloper.ie/wp-content/uploads/2023/09/sample-2-882x1024.png" alt="" class="wp-image-77" srcset="https://interloper.ie/wp-content/uploads/2023/09/sample-2-882x1024.webp 882w, https://interloper.ie/wp-content/uploads/2023/09/sample-2-258x300.webp 258w, https://interloper.ie/wp-content/uploads/2023/09/sample-2-768x891.webp 768w, https://interloper.ie/wp-content/uploads/2023/09/sample-2.webp 959w" sizes="(max-width: 882px) 100vw, 882px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">NOAA weather satellite </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hello world!</title>
		<link>https://interloper.ie/hello-world/</link>
					<comments>https://interloper.ie/hello-world/#comments</comments>
		
		<dc:creator><![CDATA[root]]></dc:creator>
		<pubDate>Tue, 03 Oct 2023 16:05:35 +0000</pubDate>
				<category><![CDATA[Uncategorised]]></category>
		<guid isPermaLink="false">http://217.170.204.3/?p=1</guid>

					<description><![CDATA[Working This is a test.How does this look now?]]></description>
										<content:encoded><![CDATA[
<h2 data-wp-context---core-fit-text="core/fit-text::{&quot;fontSize&quot;:&quot;&quot;}" data-wp-init---core-fit-text="core/fit-text::callbacks.init" data-wp-interactive data-wp-style--font-size="core/fit-text::context.fontSize" class="wp-block-heading has-fit-text">Working</h2>



<p class="wp-block-paragraph">This is a test.<br><strong>How does this look now?</strong></p>



<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Nanum+Myeongjo&#038;family=Roboto+Mono:wght@400;500&#038;display=swap" rel="stylesheet">

<style>
  /* 2. Set the Green Background */
  body, #page, .site, .site-content, .entry-content, .wp-site-blocks {
    background-color: #73D29E !important;
    color: #1a1a1a !important;
  }

  /* 3. THE NUCLEAR OPTION: Force Nanum Myeongjo on EVERYTHING */
  /* This targets every single element on the page */
  * {
    font-family: "Nanum Myeongjo", serif !important;
  }

  /* 4. Exception: Only keep buttons/inputs as the "Tech" font */
  button, input, code, pre {
    font-family: 'Roboto Mono', monospace !important;
  }

  /* 5. Link Styling */
  a {
    color: #000000 !important;
    text-decoration: underline;
  }
</style>



<figure class="wp-block-embed is-type-rich is-provider-bluesky-social wp-block-embed-bluesky-social"><div class="wp-block-embed__wrapper">
<blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:wf7nfy2us3h5gpa7zfettmzl/app.bsky.feed.post/3mml33ozn6c2s" data-bluesky-cid="bafyreice4eengjvtosftm35u2ynod3s2cqiq2sixnpimvccutisp5v63fy"><p lang="en">Daily bunny no.3328 is done with skool!</p>&mdash; <a href="https://bsky.app/profile/did:plc:wf7nfy2us3h5gpa7zfettmzl?ref_src=embed">Will Quinn (@willquinnart.bsky.social)</a> <a href="https://bsky.app/profile/did:plc:wf7nfy2us3h5gpa7zfettmzl/post/3mml33ozn6c2s?ref_src=embed">2026-05-24T03:57:38.594Z</a></blockquote><script async src="https://embed.bsky.app/static/embed.js" charset="utf-8"></script>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://interloper.ie/hello-world/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
