<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: instancer-kirik</title>
    <description>The latest articles on DEV Community by instancer-kirik (@instancer-kirik).</description>
    <link>https://dev.to/instancer-kirik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1688886%2F0981b50f-34c0-498e-8ec2-57e4fddca022.jpg</url>
      <title>DEV Community: instancer-kirik</title>
      <link>https://dev.to/instancer-kirik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/instancer-kirik"/>
    <language>en</language>
    <item>
      <title>Another jamathon thingy, but this time with authZ</title>
      <dc:creator>instancer-kirik</dc:creator>
      <pubDate>Mon, 05 May 2025 04:06:55 +0000</pubDate>
      <link>https://dev.to/instancer-kirik/another-jamathon-thingy-but-this-time-with-authz-2f2b</link>
      <guid>https://dev.to/instancer-kirik/another-jamathon-thingy-but-this-time-with-authz-2f2b</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/permit_io"&gt;Permit.io Authorization Challenge&lt;/a&gt;: Permissions Redefined&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;h1&gt;
  
  
  Portfolithonica: A Permission-Aware Jam Platform
&lt;/h1&gt;

&lt;p&gt;You know what I've done a lot? &lt;br&gt;
lose game jams and hackathons.&lt;br&gt;
So this one is about making game jams, to create one, enter a submission, judge it, and win. &lt;/p&gt;

&lt;h3&gt;
  
  
  🧱 The Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Frontend&lt;/strong&gt;: lovable,  tsx, React &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Backend&lt;/strong&gt;: Node.js + Express proxy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Permit PDP&lt;/strong&gt;: Docker container (works great locally, not separately hosted… details below)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Permit Cloud&lt;/strong&gt;: For managing roles, resources, and policies&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🎯 The Goal
&lt;/h3&gt;

&lt;p&gt;It's gotta be obvious that it works.&lt;br&gt;
without me hardcoding access logic all over &lt;br&gt;
Organizers can edit the jam and judging, issue late submission links.&lt;br&gt;
participants &lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ How I Built It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;So I made a proxy server, because API keys. &lt;/li&gt;
&lt;li&gt;Is that the correct decision? ask me later. currently it probably isn't hosted, but what definitely isn't:&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PDP (Policy Decision Point)&lt;/strong&gt; runs locally in Docker — lovable didn't work with this the first time I tried, but at least it works on my machine&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Defined &lt;strong&gt;resources&lt;/strong&gt; like &lt;code&gt;jam&lt;/code&gt; and &lt;code&gt;submission&lt;/code&gt;, and &lt;strong&gt;actions&lt;/strong&gt; like &lt;code&gt;create&lt;/code&gt;, &lt;code&gt;judge&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up &lt;strong&gt;global&lt;/strong&gt; roles (e.g. &lt;code&gt;organizer&lt;/code&gt;) and &lt;strong&gt;contextual&lt;/strong&gt; roles (&lt;code&gt;jam#participant&lt;/code&gt;, etc).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Used &lt;strong&gt;derivation rules&lt;/strong&gt; — if you’re a &lt;code&gt;jam#participant&lt;/code&gt;, you automatically get access to &lt;code&gt;submission#&lt;/code&gt; for that jam.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚠️ The Sticktion
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;**CORS a couple times.. Had to explicitly allow &lt;code&gt;Pragma&lt;/code&gt; headers.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Platform constraints - host the PDP / proxy? elsewhere (Fly.io, Render, etc).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Derivations don’t imply permissions.&lt;/strong&gt; Just because &lt;code&gt;submission#participant&lt;/code&gt; is derived from &lt;code&gt;jam#participant&lt;/code&gt; doesn’t mean it can &lt;code&gt;create&lt;/code&gt; or &lt;code&gt;update&lt;/code&gt;. You still need to explicitly grant those actions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Random 500s&lt;/strong&gt; until I increased the PDP SDK timeout to 5000ms.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ✅ What’s Working
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Organizers can create/manage jams
not anymore, actually&lt;/li&gt;
&lt;li&gt;Participants can submit entries (if allowed)
player can mutate any rn, ownership based or role based &lt;/li&gt;
&lt;li&gt;&lt;p&gt;Role-checking is &lt;strong&gt;fully dynamic&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI adapts based on permissions (&lt;code&gt;canUpdateJam&lt;/code&gt;, &lt;code&gt;canJudgeSubmissions&lt;/code&gt;, etc) probably should not have done this for development velocity and huh-ness?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🛠️ Still To-Do
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Submitting content/actual &lt;/li&gt;
&lt;li&gt;&lt;p&gt;Late submissions as a &lt;strong&gt;role-based toggle&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Eventually: live jam status, feedback, maybe voting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;persistent storage and entries&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  How is it?
&lt;/h3&gt;

&lt;p&gt;Permit.io makes it &lt;em&gt;super&lt;/em&gt; easy to think in terms of roles and resources, but &lt;strong&gt;you need infra that supports the PDP&lt;/strong&gt;. &lt;br&gt;
Having done auth before, and gotten another project stuck in a bad shared build state, this was a nice approach; and would probably scale well with an umbrella project&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54qvbiq7xu8j5t55lgkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54qvbiq7xu8j5t55lgkw.png" alt="Image description" width="800" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ae98xm2dkm3ul5vjnhb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ae98xm2dkm3ul5vjnhb.png" alt="Image description" width="800" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Repo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/instancer-kirik/portfolia.git" rel="noopener noreferrer"&gt;https://github.com/instancer-kirik/portfolia.git&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Journey
&lt;/h2&gt;

&lt;p&gt;I wanted to win a game jam, so I made a game jam simulator that I can almost win. But then I decided to add db persistence in the last 4 hours, but now, it's time for a post and a demo.&lt;br&gt;
It no longer works for a believable demo, 2 grey loading loop buttons, and no grant organizer button and sleepy. I have only so many prompts and edits and fixes and fx to give.&lt;/p&gt;

&lt;p&gt;And also tsx has weird lightmode flashes and theme issues, or maybe that's my fault (probably not)&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Permit.io for Authorization
&lt;/h2&gt;

&lt;p&gt;it worked actually, used the PDP and dispatched from a proxy server.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>permitchallenge</category>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>Ranking my projects in various categories.</title>
      <dc:creator>instancer-kirik</dc:creator>
      <pubDate>Sun, 16 Feb 2025 02:11:54 +0000</pubDate>
      <link>https://dev.to/instancer-kirik/ranking-my-projects-in-various-categories-52bc</link>
      <guid>https://dev.to/instancer-kirik/ranking-my-projects-in-various-categories-52bc</guid>
      <description>&lt;h1&gt;
  
  
  SPEED:
&lt;/h1&gt;

&lt;p&gt;⚡ Fast (Near-instant operations, lightweight commands, minimal processing)&lt;br&gt;
Cround – Bracelet Maker&lt;br&gt;
Clipdirstructer – CLI structures from visual hierarchies &lt;br&gt;
Clipdirstructor – Visual tree layouts converted into directories &lt;br&gt;
SAPDAS - Sketchfab Auto Preferred-format &amp;amp; Attribution Saver &lt;br&gt;
Sledge – Web browser (Anti-FFFFFFlashbang, better tabs)&lt;br&gt;
Resolvinator – Data backend and forms &lt;br&gt;
Bonify – Rigging a train or arrangement along curves&lt;br&gt;
Fonce – D agent and Elixir multisecurity (Defense) &lt;br&gt;
epy explorer&lt;br&gt;
Grabot inventory arranger - pyqt&lt;/p&gt;

&lt;p&gt;⚖️ Medium Speed (or mainly untested) (Moderate operations, some processing but still responsive)&lt;br&gt;
compyutinator-keyboard – there's some lag and issues still&lt;br&gt;
Deepscape – Pannable chartspace with editor nodes, ws issues&lt;br&gt;
Mediata – Manages multimedia and posting with creative organizational workflows &lt;br&gt;
BigLinks - symbolic link manager&lt;br&gt;
Video Editor- zig to wasm zig issues and ws issues&lt;br&gt;
Combocounter – Tracks vars and combos &lt;br&gt;
Varchiver – Lots of multithreaded waiting, less looking up commands and manual config edits&lt;br&gt;
Seek – Searching and indexing links and resources &lt;br&gt;
Pause || Effect – Dynamic multiplayer quests, maps, stats &lt;br&gt;
Launcher&lt;br&gt;
Veix&lt;br&gt;
Grouper&lt;br&gt;
Findry&lt;br&gt;
Dowel&lt;br&gt;
Tandemx&lt;br&gt;
Lyric Extrapolatinator (ipynb)&lt;br&gt;
enzige / DivvyQueue&lt;/p&gt;

&lt;p&gt;🐢 Slow (Heavy processing, silly init, etc.)&lt;br&gt;
Nomine&lt;br&gt;
Explorinator (VSCode Plugin) – Sort by last modified (I couldn't figure out how to hitch their cache and got bored)&lt;br&gt;
Compyutinator Code - CompSci platform IDE/K with a custom diff/merge tool and a bunch of managers and dashboards and stuff - startup is so slow cuz ai init, that I added a loading animation, and it doesn't even load right rn&lt;/p&gt;

&lt;h1&gt;
  
  
  Main language(s) alphabetically:
&lt;/h1&gt;

&lt;p&gt;Bash / CLI Tools&lt;br&gt;
Clipdirstructer – CLI structures from visual hierarchies&lt;/p&gt;

&lt;p&gt;C&lt;br&gt;
(with Clay)&lt;br&gt;
Cround – Bracelet Maker&lt;br&gt;
Translinator - so this was going to be a rich context ai rag translator and OCR thing, but kinda changed directions before much code&lt;/p&gt;

&lt;p&gt;C#?&lt;br&gt;
Explorinator – (VSCode Plugin) Sort by last modified (I couldn't figure out how to hitch their cache and got bored)&lt;/p&gt;

&lt;p&gt;D&lt;br&gt;
Dowel&lt;/p&gt;

&lt;p&gt;E&lt;br&gt;
DivvyQueue - multiparty contracts and breaches and dividend dues &lt;/p&gt;

&lt;p&gt;Elixir&lt;br&gt;
Deepscape – Pannable chartspace with editor nodes&lt;br&gt;
Fonce – D agent and Elixir multisecurity (Defense)&lt;br&gt;
Pause || Effect – Dynamic multiplayer quests, maps, stats&lt;br&gt;
Resolvinator – Data backend and forms&lt;br&gt;
Seek – Searching and indexing links and resources (Secondary: PyQt)&lt;br&gt;
Veix – The Elixir container and DAO LLC&lt;br&gt;
Web3 Livestreamer and some infra, kinda &lt;br&gt;
Softleash - software releaser in elixir (early; buffed and released varchiver instead)&lt;br&gt;
Mediata&lt;/p&gt;

&lt;p&gt;Gleam&lt;br&gt;
Tandemx – (Maybe?? idk this is still mainly just a plan, Gleam is fine for now)&lt;/p&gt;

&lt;p&gt;JavaScript / Svelte / TS&lt;br&gt;
Findry – Svelte&lt;br&gt;
SAPDAS - Sketchfab Auto Preferred-format &amp;amp; Attribution Saver &lt;br&gt;
K4 solver - failed&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
Blender Python (bpy)&lt;br&gt;
Bonify – Rigging a train or arrangement along curves&lt;br&gt;
Nomine – bpy&lt;br&gt;
lifegem medallion generator(WIP)&lt;/p&gt;

&lt;p&gt;PyQt (Python)&lt;br&gt;
epy explorer - file explorer and enzige ui&lt;br&gt;
Sledge – Web browser (Anti-FFFFFFlashbang, better tabs)&lt;br&gt;
Varchiver – Archives and gitconfig with skip patterns and release manager&lt;br&gt;
Compyutinator-keyboard&lt;br&gt;
Compyutinator Code – Computer Science platform IDE/K with a custom diff/merge tool&lt;br&gt;
BigLinks&lt;/p&gt;

&lt;p&gt;Lyric Extrapolatinator (ipynb)&lt;br&gt;
Launcher - Kivy?&lt;br&gt;
Grabot inventory arranger - pyqt&lt;/p&gt;

&lt;p&gt;Zig dvui / WASM&lt;br&gt;
Combocounter – Tracks vars and combos&lt;br&gt;
Grouper – Zig&lt;br&gt;
enzige - e lang build tool&lt;br&gt;
Clipdirstructor – Visual tree layouts converted into directories &lt;br&gt;
Video Editor – Zig to WASM; also attempted godot for shaders, but no cam&lt;/p&gt;

&lt;h1&gt;
  
  
  ⏳ Time Spent Working on It (Most to Least)
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Long-Term / Major Projects
&lt;/h3&gt;

&lt;p&gt;Compyutinator Code – Computer Science platform IDE/K with a custom diff/merge tool&lt;br&gt;
Pause || Effect – 2nd attempt&lt;br&gt;
Resolvinator – Large Data backend and forms&lt;br&gt;
Bonify – Rigging a train or arrangement along curves&lt;br&gt;
Cround- 3nd attempt&lt;br&gt;
Time Tracker - Custom Calendar (2nd attempt)&lt;/p&gt;

&lt;h3&gt;
  
  
  Medium-Term Projects
&lt;/h3&gt;

&lt;p&gt;Varchiver &lt;br&gt;
Sledge &lt;br&gt;
Fonce&lt;br&gt;
Deepscape&lt;br&gt;
Veix &lt;br&gt;
Video Editor &lt;br&gt;
Grabot inventory arranger - pyqt&lt;br&gt;
enzige - e lang build tool&lt;br&gt;
BigLinks&lt;/p&gt;

&lt;h3&gt;
  
  
  Short-Term / Experimental Projects
&lt;/h3&gt;

&lt;p&gt;Explorinator &lt;br&gt;
Mediata workflows&lt;br&gt;
Seek &lt;br&gt;
Combocounter &lt;br&gt;
Findry &lt;br&gt;
Clipdirstructor &lt;br&gt;
Clipdirstructer &lt;br&gt;
Dowel &lt;br&gt;
Grouper &lt;br&gt;
Tandemx &lt;br&gt;
Nomine &lt;br&gt;
Launcher&lt;br&gt;
DivvyQueue&lt;/p&gt;

&lt;p&gt;💀 Difficulty Ranking (Hardest to Easiest)&lt;/p&gt;

&lt;p&gt;🚀 Extremely Difficult (High Complexity, Many Moving Parts, Optimization Challenges, Authentication ugh)&lt;br&gt;
Compyutinator Code – IDE/diff-merge tool&lt;br&gt;
Pause || Effect – Multiplayer system&lt;br&gt;
Bonify – Blender rigging &amp;amp; constraints&lt;br&gt;
Deepscape – Node-based chartspace&lt;br&gt;
Veix – DAO/container manager&lt;br&gt;
Typer - currently &lt;a href="https://instance.select" rel="noopener noreferrer"&gt;https://instance.select&lt;/a&gt; competitive post/phrase/code typing(Elixir/js) pls don't spam i'm on free plan // might wipe or rebase&lt;br&gt;
enzige&lt;/p&gt;

&lt;p&gt;⚖️ Moderately Difficult (Custom algorithms, UI/UX, APIs, themeing issues)&lt;br&gt;
Resolvinator – Data backend/forms&lt;br&gt;
Sledge – Web browser&lt;br&gt;
Mediata – Multimedia automation&lt;br&gt;
Varchiver – Git automation&lt;br&gt;
Video Editor – Zig to WASM (Early experimentation)&lt;br&gt;
Fonce – Security agent&lt;br&gt;
Findry – Svelte UI&lt;br&gt;
Combocounter – Tracks vars &amp;amp; combos&lt;br&gt;
Seek – Search/indexing&lt;br&gt;
Dowel - robot not reading the src, uncompiling&lt;br&gt;
Trout/Grouper - dvui not working with my zig version idk, might downgrade&lt;br&gt;
Grabot Inventory Arranger&lt;br&gt;
BigLinks&lt;/p&gt;

&lt;p&gt;🛠️ Moderately Easy (Functional, less complex, CLI/GUI tools)&lt;br&gt;
Explorinator – VSCode sorting plugin&lt;br&gt;
Launcher – App launcher&lt;br&gt;
Clipdirstructor / Clipdirstructer – project structuring tools&lt;br&gt;
Cround – Bracelet Maker&lt;br&gt;
epy explorer&lt;br&gt;
SAPDAS&lt;/p&gt;

&lt;p&gt;🐣 Easy (Simple operations, lightweight tools)&lt;br&gt;
Tandemx – (Mostly planning)&lt;br&gt;
Nomine – bpy utility&lt;/p&gt;

&lt;p&gt;Just generated for fun, untested&lt;br&gt;
Web3 Livestreamer and some infra/P2P, kinda &lt;br&gt;
Softleash - software releaser in elixir (early; buffed and released varchiver instead)&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Shapes
&lt;/h3&gt;

&lt;p&gt;Maybe called a tetryen, tho I get red squiggles; my pfp, from sverchok nodes in blender&lt;/p&gt;

&lt;h3&gt;
  
  
  Games
&lt;/h3&gt;

&lt;p&gt;Mancala 2 (Java) - with cheating and callouts&lt;br&gt;
Cooking Simulator (UE5) - chopping and detecting carrots and making soup&lt;br&gt;
UGCoPOP (godot or maybe ts) - both with missing art&lt;br&gt;
walking the dog (UE5) - a game about walking the dog and avoiding poisoned grass and picking up litter and quests&lt;/p&gt;

&lt;p&gt;None of these games are released, but some on github&lt;br&gt;
Request focus? &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>web3</category>
    </item>
  </channel>
</rss>
