329 lines
24 KiB
HTML
329 lines
24 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<!--#include virtual="/common/header.html" -->
|
||
<body>
|
||
<!--#include virtual="/common/topnav.html" -->
|
||
<main id="main-content">
|
||
<section class="hero" aria-labelledby="hero-title">
|
||
<div class="hero-inner">
|
||
<p class="eyebrow">Eric Meehan · Musician & engineer</p>
|
||
<h1 id="hero-title">Music. Places.<br>Things worth making.</h1>
|
||
<p class="hero-copy">I make music and films, build open-source projects, and host games. My camera comes along for the places I visit and the musicians I meet.</p>
|
||
<div class="hero-actions">
|
||
<a class="button button-primary" href="#films">Watch the films</a>
|
||
<a class="button button-secondary" href="#music">Explore the music</a>
|
||
<a class="quiet-link" href="#projects">Explore my projects</a>
|
||
<a class="quiet-link" href="#gaming">Find a game to play</a>
|
||
</div>
|
||
<p class="hero-note">Made in Raleigh and wherever curiosity takes me. Published on my own open-source-powered corner of the internet.</p>
|
||
</div>
|
||
<div class="hero-art" aria-hidden="true">
|
||
<span class="orbit orbit-one"></span>
|
||
<span class="orbit orbit-two"></span>
|
||
<span class="orbit orbit-three"></span>
|
||
<span class="orbit-core">eom<br>.dev</span>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section intro-section" id="work" aria-labelledby="work-title">
|
||
<div class="section-heading">
|
||
<p class="eyebrow">One creative life, a few ways in</p>
|
||
<h2 id="work-title">Explore the work.</h2>
|
||
<p>Films, music, open-source projects, and games: four ways into what I make and share.</p>
|
||
</div>
|
||
<div class="path-grid">
|
||
<article class="path-card path-play">
|
||
<p class="card-kicker">Out in the world</p>
|
||
<h3>Films & places</h3>
|
||
<p>Travel, unexpected detours, and musicians performing out in public. A reason to get outside and pay attention.</p>
|
||
<a class="text-link" href="#films">Come along <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
<article class="path-card path-create">
|
||
<p class="card-kicker">Sound & expression</p>
|
||
<h3>Music</h3>
|
||
<p>My own recordings, covers, and performances by musicians I encounter. Room to listen, experiment, and find the next song.</p>
|
||
<a class="text-link" href="#music">Start listening <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
<article class="path-card path-build">
|
||
<p class="card-kicker">Curiosity at work</p>
|
||
<h3>Creative engineering</h3>
|
||
<p>Open-source tools and experiments built out of curiosity. Explore the work and how it's made.</p>
|
||
<a class="text-link" href="#projects">Explore the projects <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
<article class="path-card path-game">
|
||
<p class="card-kicker">Shared worlds & friendly competition</p>
|
||
<h3>Gaming</h3>
|
||
<p>Game servers, community worlds, and experiments you can play together. Drop in, explore, or follow the gaming streams.</p>
|
||
<a class="text-link" href="#gaming">Find your next game <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section films-section" id="films" aria-labelledby="films-title" data-peertube-feed data-channels="eric_channel" data-title="Films & places">
|
||
<div class="section-heading section-heading-row">
|
||
<div>
|
||
<p class="eyebrow">A camera, an open ear, somewhere to go</p>
|
||
<h2 id="films-title">Films & places.</h2>
|
||
<p>Travel films and everyday discoveries, from planned trips to unexpected detours. Recordings of the musicians I meet are in the <a href="#music">music section</a>.</p>
|
||
</div>
|
||
<a class="text-link" href="https://peertube.eom.dev/video-channels/eric_channel">More travel & everyday discoveries <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
<p class="feed-status" data-feed-status role="status" aria-live="polite">Selected recordings below. Latest uploads load automatically when available.</p>
|
||
<div class="film-grid latest-grid" data-feed-items>
|
||
<article class="project-card media-card">
|
||
<a class="media-image" href="https://peertube.eom.dev/videos/watch/b16e17cc-2545-40ad-b9fa-b9200400aff5" aria-label="Watch I Got Heat Stroke in the Great Smokey Mountains">
|
||
<img src="https://peertube.eom.dev/lazy-static/thumbnails/c75393d3-9acd-4a9d-bbd0-7f370662c208.png" width="560" height="315" loading="lazy" decoding="async" alt="">
|
||
<span class="media-label" aria-hidden="true">Watch film ↗</span>
|
||
</a>
|
||
<div class="media-copy">
|
||
<p class="card-kicker">Travel film · North Carolina</p>
|
||
<h3>I Got Heat Stroke in the Great Smokey Mountains</h3>
|
||
<p>A backpacking trip takes an unexpected turn: kayaking, Asheville, and the buskers I met along the way.</p>
|
||
<a class="text-link" href="https://peertube.eom.dev/videos/watch/b16e17cc-2545-40ad-b9fa-b9200400aff5">Watch the trip <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
</article>
|
||
<article class="project-card media-card">
|
||
<a class="media-image" href="https://peertube.eom.dev/videos/watch/678e7a68-9beb-48b2-b4cc-8cfede773a81" aria-label="Watch La Banda Maguey at La Fiesta del Pueblo">
|
||
<img src="https://peertube.eom.dev/lazy-static/thumbnails/bae0a54a-27b7-4604-ba10-556c21d32474.png" width="560" height="315" loading="lazy" decoding="async" alt="">
|
||
<span class="media-label" aria-hidden="true">Watch performance ↗</span>
|
||
</a>
|
||
<div class="media-copy">
|
||
<p class="card-kicker">Performance recording · Raleigh</p>
|
||
<h3>La Banda Maguey at La Fiesta del Pueblo</h3>
|
||
<p>La Banda Maguey performing in downtown Raleigh. A little of the festival, recorded and shared.</p>
|
||
<div class="project-links">
|
||
<a class="text-link" href="https://peertube.eom.dev/videos/watch/678e7a68-9beb-48b2-b4cc-8cfede773a81">Watch the performance <span aria-hidden="true">→</span></a>
|
||
<a class="text-link" href="https://www.bandamaguey.com/">Meet the musicians</a>
|
||
</div>
|
||
</div>
|
||
</article>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section music-section" id="music" aria-labelledby="music-title" data-peertube-feed data-channels="eric_music" data-title="Music">
|
||
<div class="music-copy">
|
||
<p class="eyebrow">From the guitar to the recording</p>
|
||
<h2 id="music-title">Making room for music.</h2>
|
||
<p>Original recordings, covers, and performances by musicians I meet along the way.</p>
|
||
<p>Listen to the latest uploads here, or explore more in the <a class="text-link" href="#peertube-library">channels and collections</a>.</p>
|
||
<div class="about-links">
|
||
<a class="button button-primary" href="https://peertube.eom.dev/video-playlists/bde0cf4d-318f-4865-b205-b11104a7c46b">Explore my originals</a>
|
||
<a class="text-link" href="https://peertube.eom.dev/video-channels/eric_music">Browse the music channel <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
</div>
|
||
<p class="feed-status" data-feed-status role="status" aria-live="polite">Selected recording below. Latest uploads load automatically when available.</p>
|
||
<div class="film-grid latest-grid" data-feed-items>
|
||
<a class="music-feature media-image" href="https://peertube.eom.dev/videos/watch/f9613754-234e-4053-b194-341154f007c5" aria-label="Watch and listen to Tidal Waltz">
|
||
<img src="https://peertube.eom.dev/lazy-static/thumbnails/32b4d3ba-a871-4f5c-942d-4001948c1295.jpg" width="560" height="315" loading="lazy" decoding="async" alt="">
|
||
<span class="media-label" aria-hidden="true">Tidal Waltz · Music & film ↗</span>
|
||
</a>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section featured-section" id="projects" aria-labelledby="projects-title">
|
||
<div class="section-heading section-heading-row">
|
||
<div>
|
||
<p class="eyebrow">The workshop · Made here, shared openly</p>
|
||
<h2 id="projects-title">My projects.</h2>
|
||
<p>Tools, experiments, and open-source work I build and contribute to across organizations. Explore my recent public activity below.</p>
|
||
</div>
|
||
<a class="text-link" href="https://gitea.eom.dev/eric?tab=activity">Follow my public activity <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
<div id="gitea-projects">
|
||
<p class="feed-status" data-project-status role="status" aria-live="polite">Selected project below. Recent public pushes load automatically when available.</p>
|
||
<div class="project-grid latest-grid" data-project-items>
|
||
<article class="project-card">
|
||
<div class="project-mark mark-blue" aria-hidden="true"></></div>
|
||
<p class="card-kicker">Open-source tools & infrastructure</p>
|
||
<h3>The code behind this corner of the internet</h3>
|
||
<p>Explore the repositories behind my projects and independent publishing setup. Take a look at how things work, learn from the code, or adapt it for your own space.</p>
|
||
<div class="project-links">
|
||
<a class="text-link" href="https://gitea.eom.dev/explore/repos">Browse the source <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
<div class="workshop-recordings" data-peertube-feed data-channels="eric_tech" data-title="Engineering">
|
||
<h3>Latest engineering videos</h3>
|
||
<p>Build notes, technical explorations, and the process behind the projects.</p>
|
||
<p class="feed-status" data-feed-status role="status" aria-live="polite">Latest uploads load automatically when available. Browse the engineering channel directly if it is unavailable.</p>
|
||
<div class="film-grid latest-grid" data-feed-items>
|
||
<p><a class="text-link" href="https://peertube.eom.dev/video-channels/eric_tech">Browse the engineering channel</a></p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section featured-section gaming-section" id="gaming" aria-labelledby="gaming-title">
|
||
<div class="section-heading section-heading-row">
|
||
<div>
|
||
<p class="eyebrow">Game servers & shared worlds</p>
|
||
<h2 id="gaming-title">Come play. Make yourself at home.</h2>
|
||
<p>Luanti is the main community world I host. The Button is ready to play, and Wikideck is an experiment still in development. Explore below or catch up with the gaming streams.</p>
|
||
</div>
|
||
<a class="text-link" href="https://peertube.eom.dev/video-channels/eric_gaming">Browse the gaming channel <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
<div class="project-grid gaming-grid">
|
||
<article class="project-card">
|
||
<div class="project-mark mark-green" aria-hidden="true">▦</div>
|
||
<p class="card-kicker">Season V · Public server</p>
|
||
<h3>Luanti</h3>
|
||
<p>Explore a low-gravity world with eleven team islands, markets and an adventure-map spawn. Connect with a Luanti client at <code>luanti.eom.dev:30000</code>.</p>
|
||
<div class="project-links">
|
||
<a class="text-link" href="https://discourse.eom.dev/t/luanti-season-v/690">Season V details <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
</article>
|
||
<article class="project-card">
|
||
<div class="project-mark mark-red" aria-hidden="true">●</div>
|
||
<p class="card-kicker">A social experiment</p>
|
||
<h3>The Button</h3>
|
||
<p>One shared countdown, six risk zones, and a season of nerve. Play, follow the standings, or inspect the code.</p>
|
||
<div class="project-links">
|
||
<a class="text-link" href="https://button.eom.dev/">Play the game <span aria-hidden="true">→</span></a>
|
||
<a class="text-link" href="https://gitea.eom.dev/Gaming/the-button">View the source</a>
|
||
</div>
|
||
</article>
|
||
<article class="project-card">
|
||
<div class="project-mark mark-blue" aria-hidden="true">▧</div>
|
||
<p class="card-kicker">Experimental card game</p>
|
||
<h3>Wikideck</h3>
|
||
<p>Mine, collect and trade illustrated Wikipedia cards. This is an experimental, unaudited project; its public network has not launched.</p>
|
||
<div class="project-links">
|
||
<a class="text-link" href="https://gitea.eom.dev/WikiDeck/wikideck">Explore Wikideck <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
</article>
|
||
</div>
|
||
<div class="workshop-recordings" data-peertube-feed data-channels="eric_gaming" data-title="Gaming">
|
||
<h3>Latest gaming videos & streams</h3>
|
||
<p>Catch up on the games and worlds we spend time in together.</p>
|
||
<p class="feed-status" data-feed-status role="status" aria-live="polite">Latest uploads load automatically when available. Browse the gaming channel directly if it is unavailable.</p>
|
||
<div class="film-grid latest-grid" data-feed-items>
|
||
<p><a class="text-link" href="https://peertube.eom.dev/video-channels/eric_gaming">Browse gaming videos and streams</a></p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section films-section" id="peertube-library" aria-labelledby="library-title">
|
||
<div class="section-heading">
|
||
<p class="eyebrow">Channels & collections · Always something to explore</p>
|
||
<h2 id="library-title">Find a thread. Follow it.</h2>
|
||
<p>Original music, live performances, trips, and experiments, organized on PeerTube. New public channels and playlists appear here automatically; each collection shows its three most recently published videos.</p>
|
||
</div>
|
||
<div class="collection-controls">
|
||
<label for="peertube-collection">Choose a channel or playlist</label>
|
||
<select id="peertube-collection" disabled><option>Loading channels and playlists…</option></select>
|
||
<a class="text-link" data-library-link href="https://peertube.eom.dev/accounts/eric/videos">Browse all publications <span aria-hidden="true">→</span></a>
|
||
</div>
|
||
<p class="feed-status" data-library-status role="status" aria-live="polite">The collection browser loads automatically when available. You can always browse directly on PeerTube.</p>
|
||
<div class="film-grid latest-grid" data-library-items></div>
|
||
<noscript><p>Enable JavaScript to see the latest uploads here, or follow the channel and playlist links to browse on PeerTube.</p></noscript>
|
||
</section>
|
||
|
||
<section class="community-band" aria-labelledby="community-title">
|
||
<div>
|
||
<p class="eyebrow">Stay in the loop</p>
|
||
<h2 id="community-title">Follow the work. Add your voice.</h2>
|
||
<p>Follow new recordings and works in progress on Mastodon, talk on the forum, or catch a live stream.</p>
|
||
<p>I share project notes, things I've learned, and ideas on Discourse. <a class="text-link" href="https://discourse.eom.dev/">Writing on Discourse <span aria-hidden="true">→</span></a></p>
|
||
</div>
|
||
<div class="community-actions">
|
||
<a class="button button-primary" href="https://discourse.eom.dev/latest">Visit the forum</a>
|
||
<a class="button button-secondary" href="https://mastodon.eom.dev/@eric/">Follow on Mastodon</a>
|
||
<a class="quiet-link" href="https://owncast.eom.dev/">Check the live channel</a>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="about-section section" id="about" aria-labelledby="about-title">
|
||
<div class="about-photo">
|
||
<img src="/static/profile_2026.jpg" width="300" height="300" loading="lazy" alt="Eric Meehan">
|
||
</div>
|
||
<div class="about-copy">
|
||
<p class="eyebrow">The person behind the work</p>
|
||
<h2 id="about-title">Hi, I'm Eric.</h2>
|
||
<p>I'm a musician in Raleigh, North Carolina, and I work full-time as a software engineer. This is where I follow my curiosity through music, films, and projects of my own.</p>
|
||
<p>I use open-source software to own the means of production and publish on my own terms. I believe in a decentralized internet, and I share code and educational content to help others build independent spaces too.</p>
|
||
<div class="about-links">
|
||
<a class="text-link" href="https://mastodon.eom.dev/@eric/">Follow on Mastodon <span aria-hidden="true">→</span></a>
|
||
<a class="text-link" href="mailto:eric@eom.dev">Get in touch</a>
|
||
<a class="text-link" href="/eric@eom.dev.pub">View my GPG key</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section services-section" id="services" aria-labelledby="services-title">
|
||
<div class="section-heading">
|
||
<p class="eyebrow">The open-source home behind the work</p>
|
||
<h2 id="services-title">An independent space to connect.</h2>
|
||
<p>These services are where I publish and the community connects. Browse public videos and posts without a paid membership. Free accounts include forums, chat, and Git hosting; Gold (Level 3) and above add Mastodon and PeerTube account access.</p>
|
||
</div>
|
||
<div class="project-grid">
|
||
<article class="project-card service-card">
|
||
<div class="project-mark service-mark"><img src="https://discourse.eom.dev/uploads/default/optimized/1X/_129430568242d1b7f853bb13ebea28b3f6af4e7_2_32x32.png" width="32" height="32" loading="lazy" decoding="async" alt=""></div>
|
||
<p class="card-kicker">Free · Level 0 and above</p>
|
||
<h3>Discourse · Forums</h3>
|
||
<p>Talk about the music, films, and projects. Bronze and above also get exclusive member content.</p>
|
||
<a class="text-link" href="https://discourse.eom.dev/">Visit the forum <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
<article class="project-card service-card">
|
||
<div class="project-mark service-mark"><img src="https://element.eom.dev/vector-icons/144.5a63bf2.png" width="32" height="32" loading="lazy" decoding="async" alt=""></div>
|
||
<p class="card-kicker">Free · Level 0 and above</p>
|
||
<h3>Matrix · Chat</h3>
|
||
<p>Keep in touch in community rooms through Element. Bronze and above also get exclusive member content.</p>
|
||
<a class="text-link" href="https://element.eom.dev/">Open Matrix chat <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
<article class="project-card service-card">
|
||
<div class="project-mark service-mark"><img src="https://gitea.eom.dev/assets/img/favicon.svg" width="32" height="32" loading="lazy" decoding="async" alt=""></div>
|
||
<p class="card-kicker">Free · Level 0 and above</p>
|
||
<h3>Gitea · Source code</h3>
|
||
<p>Explore the code behind the projects, learn from it, or collaborate on something of your own.</p>
|
||
<a class="text-link" href="https://gitea.eom.dev/">Explore Gitea <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
<article class="project-card service-card">
|
||
<div class="project-mark service-mark"><img src="https://mastodon.eom.dev/packs/assets/favicon-48x48-DMnduFKh.png" width="32" height="32" loading="lazy" decoding="async" alt=""></div>
|
||
<p class="card-kicker">Gold · Levels 3–5</p>
|
||
<h3>Mastodon · Updates</h3>
|
||
<p>Follow public updates, or participate with an eom.dev account and connect with the wider fediverse.</p>
|
||
<a class="text-link" href="https://mastodon.eom.dev/">Visit Mastodon <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
<article class="project-card service-card">
|
||
<div class="project-mark service-mark"><img src="https://peertube.eom.dev/client/assets/images/favicon.png" width="32" height="32" loading="lazy" decoding="async" alt=""></div>
|
||
<p class="card-kicker">Gold · Levels 3–5</p>
|
||
<h3>PeerTube · Films & music</h3>
|
||
<p>Watch public recordings freely. Gold and above can also take part with an eom.dev PeerTube account.</p>
|
||
<a class="text-link" href="https://peertube.eom.dev/">Visit PeerTube <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
<article class="project-card service-card">
|
||
<div class="project-mark service-mark"><img src="https://owncast.eom.dev/favicon.ico" width="32" height="32" loading="lazy" decoding="async" alt=""></div>
|
||
<p class="card-kicker">Public live channel</p>
|
||
<h3>Owncast · Live streams</h3>
|
||
<p>Drop in for performances, experiments, and work in progress when the channel is on air.</p>
|
||
<a class="text-link" href="https://owncast.eom.dev/">Check the live channel <span aria-hidden="true">→</span></a>
|
||
</article>
|
||
</div>
|
||
<p><a class="text-link" href="/members/register/">Create a free community account <span aria-hidden="true">→</span></a> · <a class="text-link" href="/members/">Compare membership benefits</a></p>
|
||
</section>
|
||
|
||
<section class="support-section" id="support" aria-labelledby="support-title">
|
||
<div class="support-copy">
|
||
<p class="eyebrow">More room to make</p>
|
||
<h2 id="support-title">Help the next song, film, or experiment happen.</h2>
|
||
<p>Memberships and one-time contributions fund the time, recording, travel, and independent publishing behind my creative work.</p>
|
||
<p>Your support gives me room to keep making and sharing. Releases follow the work, with no fixed schedule or promise of a particular project.</p>
|
||
</div>
|
||
<div class="support-actions">
|
||
<a class="button button-primary" href="/members/">Explore memberships</a>
|
||
<a class="button button-secondary" href="https://donate.stripe.com/dRm28qczOcDx05Nfd9cQU00">Make a one-time contribution</a>
|
||
<details class="crypto-support">
|
||
<summary>Other ways to support</summary>
|
||
<p>Monero contributions can be sent to this public address:</p>
|
||
<code class="wallet-address">48mFvxYDSCzMy5a3Zaj7ewApbX4GwXVXX9T1JC8mqBC19s9UcrNq8eaKkQ6GKdhHGQGmhdpvMd3mcbjf4eQbP8Yv7KdAREw</code>
|
||
<p>The <a href="/xmrig.json">XMRig configuration</a> is an example for running your own miner on P2Pool, not a contribution link. Replace the example wallet with your own.</p>
|
||
</details>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
<script type="module" src="/static/peertube-feeds.mjs"></script>
|
||
<script type="module" src="/static/gitea-projects.mjs"></script>
|
||
<!--#include virtual="/common/footer.html" -->
|
||
</body>
|
||
</html>
|