<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Project on Roman Empire</title>
    <link>https://romanempire.dev/categories/project/</link>
    <description>Recent content in Project on Roman Empire</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>contact@romanempire.dev (Roman)</managingEditor>
    <webMaster>contact@romanempire.dev (Roman)</webMaster>
    <copyright>🦆</copyright>
    <lastBuildDate>Tue, 28 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://romanempire.dev/categories/project/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Dev Diary: Self-hosted Photo Tool #4</title>
      <link>https://romanempire.dev/posts/project/frame/4/</link>
      <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate>
      <author>contact@romanempire.dev (Roman)</author>
      <guid>https://romanempire.dev/posts/project/frame/4/</guid>
      <description>&lt;p&gt;Frame mode is the main thing I built this round: a smarter slideshow that picks photos with some intent rather than just grabbing one at random.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Frame Mode&#xA;    &lt;div id=&#34;frame-mode&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#frame-mode&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The first implementation was simple: fetch all media sorted by capture time and pick one at random. This worked but felt hollow. The frame would jump between unrelated photos with no sense of narrative or fairness, and images from large folders would dominate just by volume.&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://romanempire.dev/posts/project/frame/4/feature.png" />
    </item>
    
    <item>
      <title>Dev Diary: Self-hosted Photo Tool #3</title>
      <link>https://romanempire.dev/posts/project/frame/3/</link>
      <pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate>
      <author>contact@romanempire.dev (Roman)</author>
      <guid>https://romanempire.dev/posts/project/frame/3/</guid>
      <description>&lt;p&gt;Have mostly been working on making the app deployable, adding security, adding a Dockerfile as well as thinking about the user experience and reliability with further pipeline improvements&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;Empty library on first run&#34;&#xA;    src=&#34;./img/empty_page.png&#34;&#xA;    &gt;&lt;figcaption&gt;Empty library on first run&lt;/figcaption&gt;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;Media info page&#34;&#xA;    src=&#34;./img/info_page.png&#34;&#xA;    &gt;&lt;figcaption&gt;Media info page&lt;/figcaption&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Security&#xA;    &lt;div id=&#34;security&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#security&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;Login page&#34;&#xA;    src=&#34;./img/login_page.png&#34;&#xA;    &gt;&lt;figcaption&gt;Login page&lt;/figcaption&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Security is quite easy with Spring Boot, simply needed to activate the extension. Though &lt;code&gt;GET&lt;/code&gt; worked without any issues, the scan wasn&amp;rsquo;t working as it was using &lt;code&gt;POST&lt;/code&gt; which was blocked by &lt;code&gt;CSRF&lt;/code&gt;&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://romanempire.dev/posts/project/frame/3/feature.png" />
    </item>
    
    <item>
      <title>Dev Diary: Self-hosted Photo Tool #2</title>
      <link>https://romanempire.dev/posts/project/frame/2/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate>
      <author>contact@romanempire.dev (Roman)</author>
      <guid>https://romanempire.dev/posts/project/frame/2/</guid>
      <description>&lt;p&gt;Ok, plenty done this week. Was doing a lot of refactoring and cleaning up. I have been focusing on making the scan pipeline more robust: making it async so it does not block the API, preventing duplicate scans with an atomic guard, splitting full and partial scan modes. I also implemented virtual threads for the most IO-consuming blocking parts of the scan and used a semaphore to bound concurrency so the system does not get overwhelmed.&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://romanempire.dev/posts/project/frame/2/feature.png" />
    </item>
    
    <item>
      <title>Dev Diary: Self-hosted Photo Tool #1</title>
      <link>https://romanempire.dev/posts/project/frame/1/</link>
      <pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate>
      <author>contact@romanempire.dev (Roman)</author>
      <guid>https://romanempire.dev/posts/project/frame/1/</guid>
      <description>&lt;p&gt;I have an idea for a self-hosted photo gallery/frame app. I am sure there are others out there already, but I want to make my own. Once it&amp;rsquo;s done, I could see myself extending it with things like GPS or date metadata validation, naming convention checks, that sort of thing. I have TBs of family pictures and have always wanted something functional but lightweight. Immich is great, but it has a timeline-centric view and I prefer browsing by folder. I also want a digital frame mode that surfaces rarely-seen photos, because when you have TBs of pictures, a lot of them fall through the cracks. I&amp;rsquo;ll try to document progress here weekly. So what&amp;rsquo;s the plan?&amp;hellip;&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://romanempire.dev/posts/project/frame/1/feature.png" />
    </item>
    
  </channel>
</rss>
