<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>24/7 365</title>
  <subtitle>vibecoded once, runs forever 🤞</subtitle>
  <id>https://247365.pl/feed.xml</id>
  <link rel="self" type="application/atom+xml" href="https://247365.pl/feed.xml"/>
  <link rel="alternate" type="text/html" href="https://247365.pl/"/>
  <updated>2026-08-16T00:00:00Z</updated>
  <author><name>Rafał Ochmański</name><uri>https://247365.pl/</uri></author>
  <icon>https://247365.pl/favicon.svg</icon>
  <style xmlns="http://www.w3.org/1999/xhtml"><![CDATA[feed{display:block;max-width:40rem;margin:0 auto;padding:2.5rem 1.25rem;font:16px/1.6 system-ui,sans-serif;background:#fff8e7;color:#400f33}title,subtitle,summary{display:block}feed>title{font-size:1.5rem;font-weight:600}subtitle{opacity:.65;margin-bottom:1.5rem}entry{display:block;margin-top:1.5rem}entry>title{font-size:1.1rem;font-weight:600}id,updated,published,author,generator,icon,link{display:none}@media (prefers-color-scheme:dark){feed{background:#1d0817;color:#fff8e7}}]]></style>
  <script xmlns="http://www.w3.org/1999/xhtml"><![CDATA[
document.addEventListener('DOMContentLoaded', function () {
  var A = 'http://www.w3.org/2005/Atom', X = 'http://www.w3.org/1999/xhtml';
  var L = {"lang": "en", "feed": "Atom feed", "published": "published", "updated": "updated", "what": "This is a web feed, also known as an Atom feed.", "how": "Subscribe by copying this page's address into your feed reader — new releases and updates on 24/7 365 will show up there on their own.", "learn": "New to feeds?", "back": "← back to 24/7 365", "css": "body{margin:0 auto;max-width:40rem;padding:2.5rem 1.25rem;font:16px/1.6 system-ui,sans-serif;background:#fff8e7;color:#400f33}a{color:inherit}h1{font-size:1.5rem;margin:0 0 .25rem}.sub{opacity:.65;margin:0 0 1.5rem}.note{border:1px solid rgba(128,116,96,.4);border-left:3px solid currentColor;border-radius:6px;padding:.7rem 1rem;font-size:.9rem}.note p{margin:.3rem 0}ul{list-style:none;padding:0;margin:2rem 0}li{margin:1.5rem 0}li>a{font-weight:600;font-size:1.1rem}.meta{opacity:.65;font-size:.85rem;margin:.2rem 0}li p{margin:.2rem 0}.back{font-size:.9rem;text-decoration:none}@media (prefers-color-scheme:dark){body{background:#1d0817;color:#fff8e7}}"};
  var feed = document.documentElement;
  if (feed.localName !== 'feed') return;
  function child(el, name) {
    for (var n = el.firstChild; n; n = n.nextSibling)
      if (n.namespaceURI === A && n.localName === name) return n;
    return null;
  }
  function text(el, name) { var c = child(el, name); return c ? c.textContent : ''; }
  function href(el) {
    for (var n = el.firstChild; n; n = n.nextSibling)
      if (n.namespaceURI === A && n.localName === 'link' &&
          (n.getAttribute('rel') || 'alternate') === 'alternate')
        return n.getAttribute('href');
    return '';
  }
  function h(tag, attrs, kids) {
    var e = document.createElementNS(X, tag);
    for (var k in attrs) e.setAttribute(k, attrs[k]);
    for (var i = 0; i < kids.length; i++)
      e.appendChild(typeof kids[i] === 'string' ? document.createTextNode(kids[i]) : kids[i]);
    return e;
  }
  var entries = [];
  for (var n = feed.firstChild; n; n = n.nextSibling) {
    if (n.namespaceURI !== A || n.localName !== 'entry') continue;
    var pub = text(n, 'published').slice(0, 10), upd = text(n, 'updated').slice(0, 10);
    var meta = L.published + ' ' + pub + (upd > pub ? ' · ' + L.updated + ' ' + upd : '');
    entries.push(h('li', {}, [
      h('a', { href: href(n) }, [text(n, 'title')]),
      h('p', { 'class': 'meta' }, [meta]),
      h('p', {}, [text(n, 'summary')])
    ]));
  }
  var title = text(feed, 'title') + ' — ' + L.feed;
  var page = h('html', { lang: L.lang }, [
    h('head', {}, [
      h('meta', { name: 'viewport', content: 'width=device-width, initial-scale=1' }, []),
      h('title', {}, [title]),
      h('style', {}, [L.css])
    ]),
    h('body', {}, [
      h('p', {}, [h('a', { 'class': 'back', href: href(feed) || '/' }, [L.back])]),
      h('h1', {}, [title]),
      h('p', { 'class': 'sub' }, [text(feed, 'subtitle')]),
      h('div', { 'class': 'note' }, [
        h('p', {}, [L.what + ' ' + L.how]),
        h('p', {}, [L.learn + ' ', h('a', { href: 'https://aboutfeeds.com/' }, ['aboutfeeds.com'])])
      ]),
      h('ul', {}, entries)
    ])
  ]);
  document.replaceChild(page, feed);
});
]]></script>
  <entry>
    <title>viberoom</title>
    <id>https://247365.pl/viberoom/</id>
    <link rel="alternate" type="text/html" href="https://247365.pl/viberoom/"/>
    <published>2026-05-24T00:00:00Z</published>
    <updated>2026-08-16T00:00:00Z</updated>
    <summary>A distraction-free editor. PyRoom rewritten for GTK4 and Python 3.</summary>
  </entry>
  <entry>
    <title>OK but why?</title>
    <id>https://247365.pl/why/</id>
    <link rel="alternate" type="text/html" href="https://247365.pl/why/"/>
    <published>2026-08-16T00:00:00Z</published>
    <updated>2026-08-16T00:00:00Z</updated>
    <summary>247365.pl mission statement</summary>
  </entry>
  <entry>
    <title>qr247</title>
    <id>https://247365.pl/qart/</id>
    <link rel="alternate" type="text/html" href="https://247365.pl/qart/"/>
    <published>2026-08-06T00:00:00Z</published>
    <updated>2026-08-06T00:00:00Z</updated>
    <summary>QR codes the way Russ Cox intended.</summary>
  </entry>
  <entry>
    <title>AuditCrowd</title>
    <id>https://auditcrowd.247365.pl</id>
    <link rel="alternate" type="text/html" href="https://auditcrowd.247365.pl"/>
    <published>2026-07-11T00:00:00Z</published>
    <updated>2026-07-11T00:00:00Z</updated>
    <summary>XML financial statements you can actually look at.</summary>
  </entry>
  <entry>
    <title>vibe ops</title>
    <id>https://247365.pl/funny-gemini/</id>
    <link rel="alternate" type="text/html" href="https://247365.pl/funny-gemini/"/>
    <published>2026-06-08T00:00:00Z</published>
    <updated>2026-06-08T00:00:00Z</updated>
    <summary>Gemini being funny. Only happened once, so it&#x27;s immortalized here.</summary>
  </entry>
  <entry>
    <title>IP.247365</title>
    <id>https://ip.247365.pl</id>
    <link rel="alternate" type="text/html" href="https://ip.247365.pl"/>
    <published>2026-05-23T00:00:00Z</published>
    <updated>2026-05-23T00:00:00Z</updated>
    <summary>Find yourself. Or at least your address.</summary>
  </entry>
</feed>
