<?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: Ojyawamaru</title>
    <description>The latest articles on DEV Community by Ojyawamaru (@ojyawamaru).</description>
    <link>https://dev.to/ojyawamaru</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3739107%2Fafe26059-e3f2-4f9f-a24b-9a64b3c49530.JPG</url>
      <title>DEV Community: Ojyawamaru</title>
      <link>https://dev.to/ojyawamaru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ojyawamaru"/>
    <language>en</language>
    <item>
      <title>Don't you want to see how other people talk to AI? — So I built it</title>
      <dc:creator>Ojyawamaru</dc:creator>
      <pubDate>Mon, 03 Aug 2026 07:31:07 +0000</pubDate>
      <link>https://dev.to/ojyawamaru/dont-you-want-to-see-how-other-people-talk-to-ai-so-i-built-it-m34</link>
      <guid>https://dev.to/ojyawamaru/dont-you-want-to-see-how-other-people-talk-to-ai-so-i-built-it-m34</guid>
      <description>&lt;p&gt;"I wish I could share this AI chat with someone, live."&lt;br&gt;
"How do other people actually talk to AI?"&lt;/p&gt;

&lt;p&gt;Have you ever felt this?&lt;/p&gt;

&lt;p&gt;I couldn't stop thinking about it. Whether it's ChatGPT or Claude, your conversations with AI happen in a sealed room — just you and the model. You have a fascinating exchange, and then... nobody ever sees it. You have no idea what questions the person next to you is asking, or how deep their threads go.&lt;/p&gt;

&lt;p&gt;That felt like a waste. So I built &lt;strong&gt;Sapio Tree&lt;/strong&gt; — a platform for sharing conversations with AI.&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://www.sapiotree.app/" rel="noopener noreferrer"&gt;https://www.sapiotree.app/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea is simple
&lt;/h2&gt;

&lt;p&gt;One sentence:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take your conversation with an AI, and place it in a shared space where everyone brings theirs.&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe6jfyoenj27d24cgjf5v.jpeg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe6jfyoenj27d24cgjf5v.jpeg" alt=" " width="799" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You publish an exchange you had with an AI. Others can read it.&lt;/p&gt;

&lt;p&gt;And — they can &lt;strong&gt;branch off from any point in it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"I'd continue that question differently."&lt;br&gt;
"I want to attack that from another angle."&lt;/p&gt;

&lt;p&gt;Fork from any card in someone else's conversation, and grow your own continuation. And it's not one fork per person: &lt;strong&gt;multiple people can branch in multiple directions from a single conversation — each using a different AI model.&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn1lxqp4m7rl6g1zh9wk6.jpeg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn1lxqp4m7rl6g1zh9wk6.jpeg" alt=" " width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's why I call it &lt;strong&gt;Multifork&lt;/strong&gt;. One question, passing through many minds and many models, branching as it grows.&lt;/p&gt;

&lt;p&gt;Hence the name: Sapio &lt;strong&gt;Tree&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  So why didn't this exist already?
&lt;/h2&gt;

&lt;p&gt;"This idea is so simple — why has nobody built it?" I asked myself the same thing. The answer isn't "nobody thought of it." It's that &lt;strong&gt;the idea was structurally blocked&lt;/strong&gt; — on three layers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;① Revenue:&lt;/strong&gt; AI companies make money from individual (or per-org) subscriptions. "Sharing conversations with everyone" doesn't fit that model. There's no structural incentive to build it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;② Habit:&lt;/strong&gt; We've spent decades &lt;em&gt;not&lt;/em&gt; showing anyone our search history. AI chat inherited that default — locked in a private room — and nobody ever questioned it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;③ Competition — honestly, this is the big one.&lt;/strong&gt; Imagine a major AI company builds a sharing platform. It would only run &lt;em&gt;their&lt;/em&gt; model. Mixing competitors' models onto the same surface is a data risk and a business risk — you'd be presenting your own customers to your rivals. But the whole point of Multifork is that &lt;strong&gt;multiple AIs get mixed on the same tree.&lt;/strong&gt; A Claude branch growing right next to a GPT branch. A model vendor structurally cannot build this: no revenue, pure risk, and it breaks their walled garden. It will never be a priority for them.&lt;/p&gt;

&lt;p&gt;So it was never a technical problem. What blocked it was revenue structure, habit, and competitive position. &lt;strong&gt;Which is exactly why an individual with no allegiance to any model — me — could build it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I wanted this to exist
&lt;/h2&gt;

&lt;p&gt;Two root motives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;① Conversations with AI die on a single track.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Chat is linear. Thinking isn't. Every question has other possible continuations — "what if I'd asked it this way instead?" Current tools throw all those branches away. Every step forward deletes the paths not taken.&lt;/p&gt;

&lt;p&gt;And beyond that: nobody has ever seen &lt;em&gt;how the rest of the world talks to AI&lt;/em&gt; — where they dig deeper, where they change angles. In the AI era, I believe the real value isn't in the answers. It's in &lt;strong&gt;how questions get asked, and how thinking unfolds.&lt;/strong&gt; There was no place to share that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;② I wanted to turn "disposable knowledge" into open collective intelligence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each private conversation is, in a sense, &lt;strong&gt;disposable knowledge&lt;/strong&gt;: it serves its purpose, then gets thrown away. But bring those conversations together, connect them, let them branch — and &lt;strong&gt;someone else can regenerate them from a different angle.&lt;/strong&gt; Link enough minds, and you can venture to places no single person could ever reach alone.&lt;/p&gt;

&lt;p&gt;(I wrote more about this bigger idea — concentrating distributed intelligence — here: &lt;a href="https://medium.com/@jyawaku/an-orca-is-about-to-appear-in-this-ocean-of-data-3724af5821bc" rel="noopener noreferrer"&gt;An orca is about to appear in this ocean of data&lt;/a&gt;.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it — reading is free, forking is BYOK
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Reading requires nothing.&lt;/strong&gt; No account, no API key. Just look around and see how questions branch.&lt;/p&gt;

&lt;p&gt;Forking — growing your own branch — needs &lt;strong&gt;your own API key&lt;/strong&gt; (sign up, and you'll get the input screen plus links to obtain keys). That's the house rule here: &lt;strong&gt;your key, your thinking.&lt;/strong&gt; BYOK — Bring Your Own Key.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8kcwfxvm1dvtbrisdf1u.jpeg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8kcwfxvm1dvtbrisdf1u.jpeg" alt=" " width="799" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One more design choice: the platform is &lt;strong&gt;English-first&lt;/strong&gt;, but there's a built-in translation feature — running on your own Gemini key — so you can &lt;strong&gt;read any tree in your native language&lt;/strong&gt;, and non-English speakers can connect their questions to the world. The goal is a place where thinking crosses language walls and gathers on one tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Full honesty up front.&lt;/strong&gt; Nearly all of the implementation was written through AI coding (Cursor). I come from architecture — the &lt;em&gt;buildings&lt;/em&gt; kind — and I didn't produce this codebase line by line myself. What I did: decide what to build, decide the structure, review what the AI produced, and make it fix what was wrong. So this section isn't "how I wrote the code." It's &lt;strong&gt;"what design decisions I made."&lt;/strong&gt; I may not be able to answer every implementation detail — but I can explain every structural choice in my own words.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Next.js / Vercel / Supabase (Postgres). Data lives in an &lt;strong&gt;EU region&lt;/strong&gt; for GDPR (I'm currently studying in the EU). AI runs through each provider's API, BYOK-style. Translation also runs on the user's own Gemini key (more below).&lt;/p&gt;

&lt;h3&gt;
  
  
  Holding the tree: not "parent cards" but "branches and cards"
&lt;/h3&gt;

&lt;p&gt;The heart of Multifork is the data structure. The naive version is "each message stores its parent message ID." Sapio Tree instead uses &lt;strong&gt;two layers&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;branches&lt;/strong&gt; — the skeleton. Each branch has &lt;code&gt;parent_branch_id&lt;/code&gt; and &lt;code&gt;forked_from_card_id&lt;/code&gt; (which card it split from).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cards&lt;/strong&gt; — conversation units (a question + AI answer pair), belonging to a branch via &lt;code&gt;branch_id&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So &lt;strong&gt;cards don't point at parent cards. Cards belong to branches, and branches record the fork points.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A fork is almost nothing:&lt;/strong&gt; create one new branch, INSERT one new card. Ancestors are never copied — at render time, we walk &lt;code&gt;forked_from_card_id&lt;/code&gt; back to the root and assemble the "root → current" path by reference.&lt;/p&gt;

&lt;p&gt;I learned this the hard way. The first implementation copied all ancestor cards into the new branch on the frontend. Result: the same card ID existed in multiple branches, and rendering kept breaking. Root cause: the DB's shape and the frontend's shape had diverged. The moment I made them isomorphic — &lt;strong&gt;"one fork = one new card"&lt;/strong&gt; — that entire class of bugs died. Data structure design &lt;em&gt;is&lt;/em&gt; bug prevention. Good lesson.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multiple AIs on one tree — Gemini inherits Claude's words
&lt;/h3&gt;

&lt;p&gt;Sounds complex; the DB side is almost embarrassingly simple: &lt;strong&gt;cards have a single &lt;code&gt;model&lt;/code&gt; column&lt;/strong&gt; (e.g. &lt;code&gt;gemini-3.6-flash&lt;/code&gt;). Each card records who was asked; the UI renders the provider's icon and label from it.&lt;/p&gt;

&lt;p&gt;The multi-AI complexity lives in the &lt;strong&gt;API relay layer&lt;/strong&gt; (&lt;code&gt;/api/chat&lt;/code&gt;), which reads the model prefix and dispatches to each provider's format. It's BYOK, so &lt;strong&gt;keys are passed per-request from the user's browser and never stored on the server.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And here's my favorite part of the whole product.&lt;/p&gt;

&lt;p&gt;When you grow a branch, the answer isn't generated from nothing. The frontend's &lt;code&gt;buildChatHistory&lt;/code&gt; assembles &lt;strong&gt;every card on the path from the root to the current card&lt;/strong&gt; into the conversation history.&lt;/p&gt;

&lt;p&gt;And it &lt;strong&gt;does not distinguish&lt;/strong&gt; whose question a card was — or which model answered it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Another &lt;em&gt;user's&lt;/em&gt; question on the path → goes into the history&lt;/li&gt;
&lt;li&gt;Another &lt;em&gt;model's&lt;/em&gt; answer on the path → goes in too&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which means: &lt;strong&gt;Gemini reads Claude's answer as its own previous message, and continues the thought.&lt;/strong&gt; The baton of context passes between models.&lt;/p&gt;

&lt;p&gt;Fork the same card with different models, and the sibling branches become a natural model comparison — &lt;strong&gt;no "comparison feature" needed; the tree itself is the comparison device.&lt;/strong&gt; And beyond comparison: GPT sets a premise, Claude carries it, Gemini extends it — &lt;strong&gt;a relay of thought across models.&lt;/strong&gt; Not just side by side. Connected, inherited, growing.&lt;/p&gt;

&lt;p&gt;(Only two exceptions never enter the history: deleted cards — tombstones, excluded per our terms — and the system root card. Everything else is inherited.)&lt;/p&gt;

&lt;p&gt;In one sentence: &lt;strong&gt;a single lineage of thought, grown in relay by multiple humans and multiple AIs.&lt;/strong&gt; That experience structurally cannot exist in a one-on-one chat. And it's the real answer to "why the big vendors can't build this": &lt;strong&gt;inheriting a rival model's words as your own context&lt;/strong&gt; is simply not on the table when your business is a walled garden.&lt;/p&gt;

&lt;h3&gt;
  
  
  Translation: per card, ephemeral
&lt;/h3&gt;

&lt;p&gt;Translation is &lt;strong&gt;per-card, on view, on demand.&lt;/strong&gt; Hit translate on a card, and the question + answer get bundled into one prompt through the same &lt;code&gt;/api/chat&lt;/code&gt;, using &lt;strong&gt;the viewer's own Gemini key&lt;/strong&gt; (BYOK all the way down).&lt;/p&gt;

&lt;p&gt;The key decision: &lt;strong&gt;translations are never stored&lt;/strong&gt; (memory only; gone on reload). Persisting them creates an ugly question — "whose key paid for the translation that someone else is now reading?" — so they're deliberately ephemeral.&lt;/p&gt;

&lt;p&gt;The target language is &lt;strong&gt;&lt;code&gt;navigator.language&lt;/code&gt;&lt;/strong&gt;, not the UI setting. This pairs with the platform's core design: &lt;strong&gt;post in English, read in your own language.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why BYOK
&lt;/h3&gt;

&lt;p&gt;Three reasons Sapio Tree runs on your own keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost transparency&lt;/strong&gt; — you pay for what you use. I don't need ads or subscriptions to recoup anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User sovereignty&lt;/strong&gt; — I never hold your keys or your generations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Early purity&lt;/strong&gt; — honestly, BYOK is a barrier. But whoever crosses it is serious about AI conversations. The design itself curates the early community.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next — and an ask
&lt;/h2&gt;

&lt;p&gt;Sapio Tree has just been planted. There are only a handful of trees so far.&lt;/p&gt;

&lt;p&gt;Which is exactly why I'd love these people to try it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People who genuinely enjoy deep conversations with AI&lt;/li&gt;
&lt;li&gt;People who find &lt;em&gt;how a question is asked&lt;/em&gt; more interesting than the answer itself&lt;/li&gt;
&lt;li&gt;People curious about their thinking connecting to someone else's branch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you try it and feel anything — good or bad — I'd really appreciate the feedback. Comments here, or on the platform.&lt;/p&gt;

&lt;p&gt;Back to the opening question.&lt;/p&gt;

&lt;p&gt;Until now, our conversations with AI have been consumed one person at a time, in sealed rooms. But bring them together, in a form others can regenerate — and &lt;strong&gt;disposable knowledge becomes collective intelligence.&lt;/strong&gt; Down branches other people grew, you might reach places you never could alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sapio&lt;/strong&gt; — wise.&lt;br&gt;
&lt;strong&gt;Tree&lt;/strong&gt; — well, tree.&lt;/p&gt;

&lt;p&gt;That's the place I want to grow.&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://www.sapiotree.app/" rel="noopener noreferrer"&gt;https://www.sapiotree.app/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Prevent Accidental Sends on Mac! How I Built "EnterGuard" with Gemini (Hold Enter to Send)</title>
      <dc:creator>Ojyawamaru</dc:creator>
      <pubDate>Thu, 29 Jan 2026 12:29:35 +0000</pubDate>
      <link>https://dev.to/ojyawamaru/prevent-accidental-sends-on-mac-how-i-built-enterguard-with-gemini-hold-enter-to-send-140</link>
      <guid>https://dev.to/ojyawamaru/prevent-accidental-sends-on-mac-how-i-built-enterguard-with-gemini-hold-enter-to-send-140</guid>
      <description>&lt;h2&gt;
  
  
  Intro: Do You Fear the Enter Key? 😱
&lt;/h2&gt;

&lt;p&gt;Do you ever find yourself accidentally hitting &lt;code&gt;Enter&lt;/code&gt; and sending a message before you're finished typing on Slack, Discord, or LINE?&lt;/p&gt;

&lt;p&gt;It happens to me all the time lol. I try to create a new line like I do on my smartphone, but—bam!—message sent.&lt;br&gt;
The worst moment was during an &lt;strong&gt;important Zoom meeting&lt;/strong&gt;, when I accidentally fired off a half-written message in the real-time chat. It was so awkward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Also, as a heavy AI user, accidentally sending an incomplete prompt to ChatGPT or Gemini is a nightmare.&lt;/strong&gt; It ruins the context, the AI starts answering a half-finished question, and it’s incredibly stressful.&lt;/p&gt;

&lt;p&gt;I searched everywhere for a solution, but the only answer I found online was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Just get used to hitting Shift + Enter."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But I couldn't get used to it. That's just not how my brain works lol.&lt;br&gt;
Since I couldn't find a tool that solved this, I thought, "If it doesn't exist, why not build it myself?"&lt;/p&gt;

&lt;p&gt;I'm an architecture student, not a coder. I can't write a single line of code from scratch.&lt;br&gt;
So, I teamed up with &lt;strong&gt;Gemini Pro&lt;/strong&gt;, bounced ideas back and forth, and built this Mac app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet "EnterGuard" 🛡️
&lt;/h2&gt;

&lt;p&gt;Here is the menu bar app I built.&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%2Faxavzz6x5sy7drpu4yx8.gif" 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%2Faxavzz6x5sy7drpu4yx8.gif" alt="EnterGuard Demo" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  It's Simple
&lt;/h3&gt;

&lt;p&gt;I changed the behavior of the Enter key:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tap Enter&lt;/strong&gt; = ↵ New Line (Confirm)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hold Enter&lt;/strong&gt; = ➤ Send&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it.&lt;br&gt;
But this simple change completely eliminated the fear of accidental sends.&lt;br&gt;
It works globally on macOS, including Slack, Discord, LINE, Messenger, and browser-based chats (and of course, AI interfaces).&lt;/p&gt;

&lt;h2&gt;
  
  
  Download for Free 📥
&lt;/h2&gt;

&lt;p&gt;It is completely free to use. If you share this frustration, please give it a try!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://enterguard.gumroad.com/l/enterguard" rel="noopener noreferrer"&gt;&lt;strong&gt;👉 Download EnterGuard on Gumroad&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Behind the Scenes: Pair Programming with Gemini
&lt;/h2&gt;

&lt;p&gt;Here’s a little backstory on how a non-engineer built this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt Engineering = Architectural Design?
&lt;/h3&gt;

&lt;p&gt;I have zero coding knowledge, but I felt that the process of "prompting" Gemini was surprisingly similar to the &lt;strong&gt;architectural design process&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Requirement Definition:&lt;/strong&gt; Verbalize exactly "what I want."&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Structuring Conditions:&lt;/strong&gt; Design the order in which necessary conditions are assembled to achieve that.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Correction:&lt;/strong&gt; When an error occurs, feed the log directly to AI and say, "Fix it like this."&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Implementation:&lt;/strong&gt; Paste the generated code, check the behavior, provide feedback, and refine it step by step.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Initially, I tried to run it with Python, but based on Gemini's advice, we switched to Swift and made it a menu bar resident app. We shaped it together through dialogue.&lt;/p&gt;

&lt;h3&gt;
  
  
  About the Source Code
&lt;/h3&gt;

&lt;p&gt;Since the code was generated with Gemini, I haven't open-sourced the code itself yet, but I've created a project home on GitHub to verify that this is a legitimate project (and not a suspicious app).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Ojyawamaru/EnterGuard" rel="noopener noreferrer"&gt;&lt;strong&gt;📂 GitHub Repository&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;I hope this small tool helps reduce the "accidental send" stress, even if just a little.&lt;/p&gt;

&lt;p&gt;If you have any feedback or find any bugs, please let me know in the comments!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
