<?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: Adedeji Olamide</title>
    <description>The latest articles on DEV Community by Adedeji Olamide (@octanexyz).</description>
    <link>https://dev.to/octanexyz</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%2F2794044%2Fc31f2ed1-48d1-40b5-8cc9-81dee8005a19.jpeg</url>
      <title>DEV Community: Adedeji Olamide</title>
      <link>https://dev.to/octanexyz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/octanexyz"/>
    <language>en</language>
    <item>
      <title>STAY - Keep the Days You Got</title>
      <dc:creator>Adedeji Olamide</dc:creator>
      <pubDate>Sat, 15 Aug 2026 12:28:04 +0000</pubDate>
      <link>https://dev.to/octanexyz/stay-keep-the-days-you-got-4i4e</link>
      <guid>https://dev.to/octanexyz/stay-keep-the-days-you-got-4i4e</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-08-13"&gt;Weekend Challenge: Dog Days Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Dogs don't stay long enough.&lt;/p&gt;

&lt;p&gt;That is the entire idea behind STAY.&lt;/p&gt;

&lt;p&gt;STAY is an interactive experience about time, attention, and memory. It compresses the life of a dog into a few minutes, lets you experience the small choices that make up that life, and then gives you a way to preserve the moments that mattered.&lt;/p&gt;

&lt;p&gt;The experience begins with Milo as a puppy.&lt;/p&gt;

&lt;p&gt;You spend his life making ordinary decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;take the walk&lt;/li&gt;
&lt;li&gt;finish some work&lt;/li&gt;
&lt;li&gt;play for a while&lt;/li&gt;
&lt;li&gt;take the photo&lt;/li&gt;
&lt;li&gt;go somewhere new&lt;/li&gt;
&lt;li&gt;stay home&lt;/li&gt;
&lt;li&gt;give him the shoe he already destroyed anyway&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no perfect route.&lt;/p&gt;

&lt;p&gt;There is no "good owner" score.&lt;/p&gt;

&lt;p&gt;Life keeps moving either way.&lt;/p&gt;

&lt;p&gt;Milo grows from puppy to young dog, adult, mature dog, and eventually senior.&lt;/p&gt;

&lt;p&gt;His behaviour changes with him.&lt;/p&gt;

&lt;p&gt;He reacts quickly when he is young.&lt;/p&gt;

&lt;p&gt;He becomes calmer as he grows.&lt;/p&gt;

&lt;p&gt;Familiar toys and places return years later.&lt;/p&gt;

&lt;p&gt;His movements slow down.&lt;/p&gt;

&lt;p&gt;And somewhere in the interface, the number of days he has left keeps falling.&lt;/p&gt;

&lt;p&gt;The thesis behind STAY is simple:&lt;/p&gt;

&lt;p&gt;You cannot give a dog more years. You can give their years more life.&lt;/p&gt;

&lt;p&gt;Eventually, Milo's life ends.&lt;/p&gt;

&lt;p&gt;There is no dramatic death animation.&lt;/p&gt;

&lt;p&gt;For the whole experience, you have learned to expect Milo to occupy part of the screen.&lt;/p&gt;

&lt;p&gt;Then that space is empty.&lt;/p&gt;

&lt;p&gt;What remains are the moments you chose to keep.&lt;/p&gt;

&lt;p&gt;Those memories can be preserved as a verifiable proof on Solana devnet.&lt;/p&gt;

&lt;p&gt;But STAY does not end with simulated Milo.&lt;/p&gt;

&lt;p&gt;After his Memory Box is complete, the experience asks one final thing:&lt;/p&gt;

&lt;p&gt;Milo's story was simulated. Yours isn't.&lt;/p&gt;

&lt;p&gt;From there, users can photograph or upload a real moment with their own dog, add a name, date, and short note, and create a cryptographic attestation for that memory.&lt;/p&gt;

&lt;p&gt;The photograph itself does not need to live on-chain.&lt;/p&gt;

&lt;p&gt;Instead, STAY hashes the image locally, creates a deterministic memory manifest, and commits the proof through a real Solana transaction.&lt;/p&gt;

&lt;p&gt;The day will still disappear.&lt;/p&gt;

&lt;p&gt;The proof that it happened does not have to.&lt;/p&gt;

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

&lt;p&gt;🔗 Live Demo: &lt;a href="https://stay-coral-gamma.vercel.app" rel="noopener noreferrer"&gt;https://stay-coral-gamma.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STAY includes a Demo Mode that accelerates the real simulation so judges can experience the full arc without replacing the underlying state machine with hardcoded screens.&lt;/p&gt;

&lt;p&gt;The complete journey is:&lt;/p&gt;

&lt;p&gt;Meet → Live → Choose → Age → Remember → Lose → Preserve → Bring It Into Real Life&lt;/p&gt;

&lt;p&gt;For the strongest experience, use a desktop browser first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/xyzbutworse/dog-years" rel="noopener noreferrer"&gt;https://github.com/xyzbutworse/dog-years&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the full interactive experience&lt;/li&gt;
&lt;li&gt;the life simulation/state system&lt;/li&gt;
&lt;li&gt;Milo's age-based behaviour&lt;/li&gt;
&lt;li&gt;memory generation&lt;/li&gt;
&lt;li&gt;local persistence&lt;/li&gt;
&lt;li&gt;deterministic manifest generation&lt;/li&gt;
&lt;li&gt;SHA-256 hashing&lt;/li&gt;
&lt;li&gt;Solana devnet proof flow&lt;/li&gt;
&lt;li&gt;real-memory attestation&lt;/li&gt;
&lt;li&gt;verification logic&lt;/li&gt;
&lt;li&gt;setup and architecture documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I started STAY with one constraint:&lt;/p&gt;

&lt;p&gt;Solana could not be something I bolted onto the project at the end just to enter a prize category.&lt;/p&gt;

&lt;p&gt;If removing Solana left the central concept unchanged, the integration was not meaningful enough.&lt;/p&gt;

&lt;p&gt;So instead of using blockchain for the dog's life itself, I used it for the part of the experience concerned with permanence.&lt;/p&gt;

&lt;p&gt;The dog is temporary.&lt;/p&gt;

&lt;p&gt;The moment is temporary.&lt;/p&gt;

&lt;p&gt;The proof can remain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Life Built From Small Choices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first half of STAY is an authored dog-life simulation.&lt;/p&gt;

&lt;p&gt;Milo progresses through multiple life stages and encounters events such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;his first walk&lt;/li&gt;
&lt;li&gt;a destroyed shoe&lt;/li&gt;
&lt;li&gt;rainy afternoons&lt;/li&gt;
&lt;li&gt;birthdays&lt;/li&gt;
&lt;li&gt;trips&lt;/li&gt;
&lt;li&gt;favourite toys&lt;/li&gt;
&lt;li&gt;photographs&lt;/li&gt;
&lt;li&gt;familiar parks&lt;/li&gt;
&lt;li&gt;quiet workdays&lt;/li&gt;
&lt;li&gt;slower mornings&lt;/li&gt;
&lt;li&gt;his final chapter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The user makes small choices throughout those moments.&lt;/p&gt;

&lt;p&gt;Those decisions feed the same underlying life state.&lt;/p&gt;

&lt;p&gt;STAY tracks values such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shared days&lt;/li&gt;
&lt;li&gt;walks&lt;/li&gt;
&lt;li&gt;play&lt;/li&gt;
&lt;li&gt;work&lt;/li&gt;
&lt;li&gt;treats&lt;/li&gt;
&lt;li&gt;adventures&lt;/li&gt;
&lt;li&gt;photographs&lt;/li&gt;
&lt;li&gt;memories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some decisions return later.&lt;/p&gt;

&lt;p&gt;A toy introduced when Milo is young can become a worn object years later.&lt;/p&gt;

&lt;p&gt;A park can feel different because you have already spent time there.&lt;/p&gt;

&lt;p&gt;The goal was to make his life feel like one continuous history rather than a sequence of unrelated prompts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Milo Is Part of the Interface&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I did not want Milo to feel like an illustration sitting next to a web application.&lt;/p&gt;

&lt;p&gt;He is the visual anchor of STAY.&lt;/p&gt;

&lt;p&gt;The interface reacts around him.&lt;/p&gt;

&lt;p&gt;His attention can follow the visitor or objects inside scenes.&lt;/p&gt;

&lt;p&gt;His behaviour also changes as he ages.&lt;/p&gt;

&lt;p&gt;Puppy Milo is restless and responsive.&lt;/p&gt;

&lt;p&gt;Adult Milo is calmer.&lt;/p&gt;

&lt;p&gt;Senior Milo reacts more slowly and spends more time resting.&lt;/p&gt;

&lt;p&gt;The interface does not need to announce:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Milo is getting old.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You begin to notice it.&lt;/p&gt;

&lt;p&gt;That becomes especially important during the ending.&lt;/p&gt;

&lt;p&gt;For most of the experience, Milo is always there.&lt;/p&gt;

&lt;p&gt;Then he isn't.&lt;/p&gt;

&lt;p&gt;The absence is the storytelling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memories, Not Scores&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When Milo's life ends, STAY does not rank the player.&lt;/p&gt;

&lt;p&gt;Instead, it reconstructs the life they actually experienced.&lt;/p&gt;

&lt;p&gt;It shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how long Milo lived&lt;/li&gt;
&lt;li&gt;how many days were shared&lt;/li&gt;
&lt;li&gt;which experiences happened&lt;/li&gt;
&lt;li&gt;which memories survived&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The user can then choose the memories they want to preserve.&lt;/p&gt;

&lt;p&gt;Those selected moments form a canonical memory manifest.&lt;/p&gt;

&lt;p&gt;STAY then generates a SHA-256 hash from that manifest.&lt;/p&gt;

&lt;p&gt;That hash becomes the compact proof of the exact memory set.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preserving Milo's Life on Solana&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Solana flow is deliberately small.&lt;/p&gt;

&lt;p&gt;STAY can commit information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;proof version&lt;/li&gt;
&lt;li&gt;life ID&lt;/li&gt;
&lt;li&gt;owner wallet&lt;/li&gt;
&lt;li&gt;memory count&lt;/li&gt;
&lt;li&gt;manifest hash&lt;/li&gt;
&lt;li&gt;completion timestamp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;to a real transaction on Solana devnet.&lt;/p&gt;

&lt;p&gt;When the transaction confirms, STAY displays the real signature and verification information.&lt;/p&gt;

&lt;p&gt;The proof can be independently inspected through Solana Explorer.&lt;/p&gt;

&lt;p&gt;The application never fabricates a transaction.&lt;/p&gt;

&lt;p&gt;If a wallet is unavailable or the user chooses not to submit anything on-chain, STAY still allows a local version of the experience.&lt;/p&gt;

&lt;p&gt;That state is explicitly labelled:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LOCAL PREVIEW - NOT ON-CHAIN&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A successful blockchain preservation is separately shown as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VERIFIED ON SOLANA DEVNET&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The distinction is intentional.&lt;/p&gt;

&lt;p&gt;A demo should never pretend to be blockchain activity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PRESERVE TODAY&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The final part of STAY is where the fictional story becomes personal.&lt;/p&gt;

&lt;p&gt;After completing Milo's life, the user sees:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;MILO'S STORY WAS SIMULATED.&lt;br&gt;
YOURS ISN'T.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They can then preserve one ordinary day with their real dog.&lt;/p&gt;

&lt;p&gt;The flow is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;take or upload a photograph&lt;/li&gt;
&lt;li&gt;enter the dog's name&lt;/li&gt;
&lt;li&gt;add a short note&lt;/li&gt;
&lt;li&gt;confirm the date&lt;/li&gt;
&lt;li&gt;create the memory proof&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The image is hashed locally using SHA-256.&lt;/p&gt;

&lt;p&gt;STAY then creates a deterministic manifest containing the image hash and associated memory data.&lt;/p&gt;

&lt;p&gt;The photograph itself remains off-chain.&lt;/p&gt;

&lt;p&gt;Solana stores or commits to the proof.&lt;/p&gt;

&lt;p&gt;That separation is important.&lt;/p&gt;

&lt;p&gt;STAY is not pretending a blockchain is a photo-storage service.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;p&gt;the image contains the memory&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;Solana proves the integrity of that memory&lt;/p&gt;

&lt;p&gt;The proof can include information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;memory ID&lt;/li&gt;
&lt;li&gt;image hash&lt;/li&gt;
&lt;li&gt;manifest hash&lt;/li&gt;
&lt;li&gt;wallet&lt;/li&gt;
&lt;li&gt;timestamp&lt;/li&gt;
&lt;li&gt;proof version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the canonical image changes, the image hash changes.&lt;/p&gt;

&lt;p&gt;If the memory metadata changes, the manifest hash changes.&lt;/p&gt;

&lt;p&gt;That means the original memory can later be checked against its recorded proof.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;STAY includes verification logic for preserved memories.&lt;/p&gt;

&lt;p&gt;The application can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;load the memory&lt;/li&gt;
&lt;li&gt;recompute the image hash&lt;/li&gt;
&lt;li&gt;reconstruct the canonical manifest&lt;/li&gt;
&lt;li&gt;generate the manifest hash again&lt;/li&gt;
&lt;li&gt;compare those values with the stored proof&lt;/li&gt;
&lt;li&gt;show whether they match&lt;/li&gt;
&lt;li&gt;expose the associated Solana transaction when one exists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A modified image should no longer produce the same proof.&lt;/p&gt;

&lt;p&gt;This turns the Solana integration into something inspectable rather than decorative.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Memory Box&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Preserved moments live inside a Memory Box.&lt;/p&gt;

&lt;p&gt;I intentionally avoided presenting them as NFTs or a crypto portfolio.&lt;/p&gt;

&lt;p&gt;The visual language is closer to a physical archive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;photographs&lt;/li&gt;
&lt;li&gt;dates&lt;/li&gt;
&lt;li&gt;annotations&lt;/li&gt;
&lt;li&gt;familiar objects&lt;/li&gt;
&lt;li&gt;warm paper&lt;/li&gt;
&lt;li&gt;fragments from Milo's life&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Technical details are still available for verified memories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;memory ID&lt;/li&gt;
&lt;li&gt;image hash&lt;/li&gt;
&lt;li&gt;manifest hash&lt;/li&gt;
&lt;li&gt;owner wallet&lt;/li&gt;
&lt;li&gt;network&lt;/li&gt;
&lt;li&gt;Solana transaction signature&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But those details are secondary.&lt;/p&gt;

&lt;p&gt;The emotional object is the memory.&lt;/p&gt;

&lt;p&gt;The blockchain is the receipt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual Direction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted STAY to feel nothing like a conventional Web3 application.&lt;/p&gt;

&lt;p&gt;So I deliberately avoided:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;crypto dashboards&lt;/li&gt;
&lt;li&gt;token charts&lt;/li&gt;
&lt;li&gt;purple gradients&lt;/li&gt;
&lt;li&gt;glassmorphism&lt;/li&gt;
&lt;li&gt;card-heavy layouts&lt;/li&gt;
&lt;li&gt;wallet-first onboarding&lt;/li&gt;
&lt;li&gt;NFT marketplace aesthetics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The visual direction is closer to an interactive editorial piece or small narrative game.&lt;/p&gt;

&lt;p&gt;It uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;large character-led compositions&lt;/li&gt;
&lt;li&gt;warm paper textures&lt;/li&gt;
&lt;li&gt;photography&lt;/li&gt;
&lt;li&gt;restrained typography&lt;/li&gt;
&lt;li&gt;subtle motion&lt;/li&gt;
&lt;li&gt;physical-memory references&lt;/li&gt;
&lt;li&gt;objects that gain meaning because they return later&lt;/li&gt;
&lt;li&gt;Milo as a persistent character rather than a mascot&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The wallet only becomes important once there is something worth preserving.&lt;/p&gt;

&lt;p&gt;That was intentional.&lt;/p&gt;

&lt;p&gt;Technology should not interrupt the life.&lt;/p&gt;

&lt;p&gt;It should matter when the life becomes a memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Solana&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;STAY is submitted for Best Use of Solana.&lt;/p&gt;

&lt;p&gt;The core blockchain loop is:&lt;/p&gt;

&lt;p&gt;life → memories → canonical manifest → SHA-256 hash → Solana transaction → verification&lt;/p&gt;

&lt;p&gt;For a real dog, that becomes:&lt;/p&gt;

&lt;p&gt;real moment → photograph → image hash → deterministic memory manifest → Solana attestation → independently verifiable memory&lt;/p&gt;

&lt;p&gt;There is no token.&lt;/p&gt;

&lt;p&gt;There is no marketplace.&lt;/p&gt;

&lt;p&gt;There is no "mint your dog" mechanic.&lt;/p&gt;

&lt;p&gt;STAY uses Solana because the project ultimately asks one question:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What can remain after a moment is gone?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The blockchain is not the story.&lt;/p&gt;

&lt;p&gt;It is proof that the story existed in that exact form.&lt;/p&gt;

&lt;p&gt;Dogs have a strange relationship with time.&lt;/p&gt;

&lt;p&gt;They arrive and become part of the routine so quickly that it feels permanent.&lt;/p&gt;

&lt;p&gt;Walks.&lt;/p&gt;

&lt;p&gt;Shoes.&lt;/p&gt;

&lt;p&gt;Rainy afternoons.&lt;/p&gt;

&lt;p&gt;Photos you almost didn't take.&lt;/p&gt;

&lt;p&gt;Sleeping beside your desk while you work.&lt;/p&gt;

&lt;p&gt;Then eventually those ordinary days become the things you remember most.&lt;/p&gt;

&lt;p&gt;STAY is about noticing them before that happens.&lt;/p&gt;

&lt;p&gt;They cannot stay forever.&lt;/p&gt;

&lt;p&gt;The memory can.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>After Supper: Rewinding a Family Dinner Through Memory</title>
      <dc:creator>Adedeji Olamide</dc:creator>
      <pubDate>Fri, 14 Aug 2026 23:58:18 +0000</pubDate>
      <link>https://dev.to/octanexyz/after-supper-rewinding-a-family-dinner-through-memory-2e5o</link>
      <guid>https://dev.to/octanexyz/after-supper-rewinding-a-family-dinner-through-memory-2e5o</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2026-07-29"&gt;Frontend Challenge - Comfort Food Edition, Perfect Landing&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built AFTER SUPPER, an interactive landing page about comfort food, memory, and the people around the table.&lt;/p&gt;

&lt;p&gt;Instead of beginning with a perfect plate of food, the experience opens at 20:47 - after dinner is already over.&lt;/p&gt;

&lt;p&gt;The plates are nearly empty. The serving bowl has been scraped down. A napkin is crumpled. One chair sits out of place. There are crumbs, stains, water rings, and all the small traces people leave behind when a meal has actually been lived in.&lt;/p&gt;

&lt;p&gt;The central interaction is simple: you move backwards through the dinner.&lt;/p&gt;

&lt;p&gt;The timeline runs through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;20:47 - After Supper&lt;/li&gt;
&lt;li&gt;20:31 - Last Bite&lt;/li&gt;
&lt;li&gt;20:09 - Seconds&lt;/li&gt;
&lt;li&gt;19:43 - Served&lt;/li&gt;
&lt;li&gt;19:21 - Recipe&lt;/li&gt;
&lt;li&gt;18:58 - Before Dinner&lt;/li&gt;
&lt;li&gt;19:14 - Full Reconstructed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As time reverses, the table slowly reconstructs itself.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Food returns to the plates.&lt;/li&gt;
&lt;li&gt;The serving bowl fills again.&lt;/li&gt;
&lt;li&gt;Glasses refill.&lt;/li&gt;
&lt;li&gt;The napkin straightens.&lt;/li&gt;
&lt;li&gt;The chair moves back toward the table.&lt;/li&gt;
&lt;li&gt;The warmth of the room returns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until eventually:&lt;/p&gt;

&lt;p&gt;Everyone was still here.&lt;/p&gt;

&lt;p&gt;For this project, I wanted to explore the idea that comfort food is rarely just about the food itself.&lt;/p&gt;

&lt;p&gt;It is also the person who always serves everyone before themselves. The person who says they are not hungry and then asks for seconds. The recipe card with instructions like “pepper - you know.” The old stain nobody remembers making. The chair that is always slightly out of place.&lt;/p&gt;

&lt;p&gt;So rather than building a restaurant page, recipe catalogue, or food delivery interface, I made the dinner table itself the interface.&lt;/p&gt;

&lt;p&gt;Several objects on the table can be inspected to reveal small memories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a plate connected to a second helping&lt;/li&gt;
&lt;li&gt;the central serving dish and family recipe&lt;/li&gt;
&lt;li&gt;a drinking glass tied to a recurring ritual&lt;/li&gt;
&lt;li&gt;the serving spoon&lt;/li&gt;
&lt;li&gt;an old linen napkin&lt;/li&gt;
&lt;li&gt;a chair&lt;/li&gt;
&lt;li&gt;a worn recipe card&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The visual system combines generated 3D/editorial-style food assets with native frontend interaction, typography, motion, and accessibility controls.&lt;/p&gt;

&lt;p&gt;The goal was to make one ordinary family dinner feel worth remembering.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://after-supper.vercel.app/" rel="noopener noreferrer"&gt;https://after-supper.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/xyzbutworse/after-supper" rel="noopener noreferrer"&gt;https://github.com/xyzbutworse/after-supper&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Move backwards through the timestamps to reconstruct the dinner, then inspect the marked objects around the table.&lt;/p&gt;

&lt;p&gt;The experience is designed around one persistent dinner scene that changes through the evening, from the aftermath at &lt;strong&gt;20:47&lt;/strong&gt; back to the moment when &lt;strong&gt;everyone was still here&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;The project started as a much more conventional comfort-food landing page.&lt;/p&gt;

&lt;p&gt;That idea lasted about five minutes.&lt;/p&gt;

&lt;p&gt;There are already countless beautiful restaurant pages, recipe sites, food galleries, and menu experiences. I wanted the interaction itself to communicate the theme rather than simply wrapping good photography in a polished layout.&lt;/p&gt;

&lt;p&gt;That led to the question that defined the whole project:&lt;/p&gt;

&lt;p&gt;What if the first thing you saw was not the dinner, but what remained after it?&lt;/p&gt;

&lt;p&gt;From there, the experience became a reverse reconstruction.&lt;/p&gt;

&lt;p&gt;One of the most important design decisions was keeping everything inside one persistent dinner scene.&lt;/p&gt;

&lt;p&gt;Rather than jumping between unrelated sections, the same table changes through different moments in the evening. Each timestamp represents a different state of the same place.&lt;/p&gt;

&lt;p&gt;That allowed the chronology to become both the navigation system and the storytelling device.&lt;/p&gt;

&lt;p&gt;Building the visual system&lt;/p&gt;

&lt;p&gt;I wanted the table to feel tactile and cinematic without turning the project into a generic glossy 3D landing page.&lt;/p&gt;

&lt;p&gt;The material language was kept intentionally domestic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;warm worn wood&lt;/li&gt;
&lt;li&gt;matte ceramic plates&lt;/li&gt;
&lt;li&gt;clear drinking glasses&lt;/li&gt;
&lt;li&gt;brushed metal utensils&lt;/li&gt;
&lt;li&gt;soft linen&lt;/li&gt;
&lt;li&gt;handwritten paper&lt;/li&gt;
&lt;li&gt;rice grains, sauce traces, crumbs, stains, and other imperfections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used AI-assisted image generation to create a consistent visual world for the dinner, including different table states and individual objects.&lt;/p&gt;

&lt;p&gt;Those assets were then integrated into the frontend as controllable layers rather than being used as a single static hero image.&lt;/p&gt;

&lt;p&gt;That made the imagery part of the interaction.&lt;/p&gt;

&lt;p&gt;Designing motion around the story&lt;/p&gt;

&lt;p&gt;The motion system was built around one rule:&lt;/p&gt;

&lt;p&gt;Nothing should animate just because it can.&lt;/p&gt;

&lt;p&gt;The objects should feel like they are returning to an earlier moment in time.&lt;/p&gt;

&lt;p&gt;Instead of random entrance animations, things reconstruct:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;plates refill&lt;/li&gt;
&lt;li&gt;glasses become fuller&lt;/li&gt;
&lt;li&gt;crumbs disappear&lt;/li&gt;
&lt;li&gt;the napkin becomes ordered again&lt;/li&gt;
&lt;li&gt;objects settle back into place&lt;/li&gt;
&lt;li&gt;the table gradually becomes warmer and more complete&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final reconstruction is intentionally the strongest moment of the page.&lt;/p&gt;

&lt;p&gt;After moving through the aftermath of the dinner, the user finally reaches the full table and the line:&lt;/p&gt;

&lt;p&gt;Everyone was still here.&lt;/p&gt;

&lt;p&gt;That was the moment I designed the rest of the project around.&lt;/p&gt;

&lt;p&gt;Accessibility&lt;/p&gt;

&lt;p&gt;Because accessibility is part of the Perfect Landing criteria, I did not want the project to depend entirely on motion or mouse interaction.&lt;/p&gt;

&lt;p&gt;The experience includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;semantic buttons for interactive objects&lt;/li&gt;
&lt;li&gt;keyboard-accessible chronology navigation&lt;/li&gt;
&lt;li&gt;visible focus states&lt;/li&gt;
&lt;li&gt;Escape handling for memory panels&lt;/li&gt;
&lt;li&gt;state announcements for assistive technology&lt;/li&gt;
&lt;li&gt;reduced-motion support&lt;/li&gt;
&lt;li&gt;responsive mobile behavior&lt;/li&gt;
&lt;li&gt;readable story content that still makes sense without the full animation system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users who prefer reduced motion still get the same sequence through simpler state changes.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;The biggest lesson from this build was that a landing page does not need a large feature set to feel substantial.&lt;/p&gt;

&lt;p&gt;The strongest part of AFTER SUPPER is not the number of interactions.&lt;/p&gt;

&lt;p&gt;It is that the visual design, motion, navigation, copy, and concept are all trying to say the same thing.&lt;/p&gt;

&lt;p&gt;One table.&lt;br&gt;
One dinner.&lt;br&gt;
One evening played backwards.&lt;/p&gt;

&lt;p&gt;I am particularly proud that the final experience does not need accounts, dashboards, APIs, recommendations, checkout flows, or a dozen pages to communicate its idea.&lt;/p&gt;

&lt;p&gt;It just needed a table that remembers.&lt;/p&gt;

&lt;p&gt;Comfort food is not only what was on the plate.&lt;/p&gt;

&lt;p&gt;It is remembering who was around it.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>frontendchallenge</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>SIGNAL — Alan Turing, Juneteenth, and the solstice, in three playable acts</title>
      <dc:creator>Adedeji Olamide</dc:creator>
      <pubDate>Sun, 21 Jun 2026 15:11:12 +0000</pubDate>
      <link>https://dev.to/octanexyz/signal-alan-turing-juneteenth-and-the-solstice-in-three-playable-acts-16bl</link>
      <guid>https://dev.to/octanexyz/signal-alan-turing-juneteenth-and-the-solstice-in-three-playable-acts-16bl</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;SIGNAL is a three-chapter browser game about messages that someone tried to stop, and that got through anyway. Each chapter is its own kind of game, set in a different year, tied together by one idea: the moments that change history usually start with a signal that refuses to die.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 1: The Machine (1943).&lt;/strong&gt; You sit at Bletchley Park breaking ciphers on an Enigma-style wheel. The messages you decode were written by people who couldn't say out loud who they were. Crack one, and Alan Turing reads it and talks to you about what you found.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 2: The Word (June 19, 1865).&lt;/strong&gt; You become General Order No. 3, the order that reached Texas two and a half years late and finally ended slavery there. It plays as a side-scroller through a greyscale world, and every person you reach restores one stripe of the Pride flag to the screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chapter 3: The Light (June 21, 2026).&lt;/strong&gt; The game checks today's date. Play it on the solstice and the sky renders differently. Then it looks back at everything you did across the first two chapters, writes you a short personal message, and asks one question: what signal will you send?&lt;/p&gt;

&lt;p&gt;That's the theme connection, top to bottom. The solstice is the literal hinge of Chapter 3, since the game knows when June 21 is. Pride runs through the hidden-identity messages of Chapter 1 and the color restoration of Chapter 2. Juneteenth is the entire premise of Chapter 2. June being Turing's birth month is why Chapter 1 exists at all.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/2fImj0HUDc8"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/cybort360/signal" rel="noopener noreferrer"&gt;https://github.com/cybort360/signal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Play it in the browser: &lt;a href="https://signal-six-lyart.vercel.app" rel="noopener noreferrer"&gt;https://signal-six-lyart.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The stack is small on purpose: Vite, Phaser 4, and the &lt;code&gt;@google/genai&lt;/code&gt; SDK for Gemini. No React, no TypeScript. Phaser already hands you scenes, input, audio, and a game loop, so a second framework would just be weight.&lt;/p&gt;

&lt;p&gt;A few decisions worth calling out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every Gemini call lives behind one file.&lt;/strong&gt; &lt;code&gt;GeminiService.js&lt;/code&gt; is the only place that imports the SDK, and it has two rules it never breaks. It races every call against a 10-second timeout, and it never throws. If the API is slow, errors out, or you're offline, the player gets a hand-written fallback instead of a spinner. I wrote eight fallbacks per call type so the canned lines don't repeat or read as canned. So Chapters 1 and 2 play fine with the network unplugged; only the live Turing lines and the ending reach out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cipher is Vigenère, not a real Enigma.&lt;/strong&gt; Simulating actual rotors would have eaten the whole jam. Vigenère reads as real encryption on screen, it's clean to write as pure functions, and it sits right next to what Bletchley was actually up against. The cipher math has its own unit tests; 55 tests total run on vitest, covering the encoding, the save system, and the AI fallbacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nothing is imported art.&lt;/strong&gt; The Enigma wheel, the signal particle, the citizens, and the gradient skies are all drawn at runtime with Phaser's graphics API. That kept the build tiny and gave the game one consistent, schematic look without me opening an image editor once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State carries across the whole game.&lt;/strong&gt; A single PlayerState object tracks how many ciphers you cracked, how accurately, who you reached in Chapter 2, and what you said to Turing. Chapter 3 feeds all of it into the Gemini prompt, which is why the ending speaks to your specific run instead of a generic one.&lt;/p&gt;

&lt;p&gt;The honest messy part: I found a bug late where pressing Enter to skip the Chapter 1 intro leaked into the cipher wheel and confirmed a stray letter, quietly corrupting your first key. It took a real play through to catch. The fix was to drop Enter as a confirm key and keep confirmation on Space only.&lt;/p&gt;

&lt;p&gt;It ships to Vercel as a static site. One tradeoff comes with that: the Gemini key gets compiled into the client bundle. Fine for a jam, not something I'd push to production without locking the key to a domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;I'm submitting for both optional categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Ode to Alan Turing.&lt;/strong&gt; Chapter 1 is the whole tribute. It's set at Bletchley in 1943, the mechanic &lt;em&gt;is&lt;/em&gt; code-breaking, and Turing shows up as a Gemini-powered character who reacts to what you decode. The deeper idea is the one that haunts his story: he built a machine to uncover hidden messages while having to hide who he was. The messages you decrypt were written by people doing exactly that, and Turing's dialogue keeps circling the gap between the secret you break and the secret you keep.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Google AI Usage.&lt;/strong&gt; I used the Gemini API (&lt;code&gt;gemini-2.5-flash-lite&lt;/code&gt;) in two places, and tried to make the AI do something a script couldn't. In Chapter 1, Turing's replies are generated against the actual message you just decoded, so he's answering content rather than playing a tape. In Chapter 3, the model reads your entire play through and writes a personal closing note. I ran it with thinking disabled and a 300-token cap because the writing is short, wrapped every call in the timeout-and-fallback net above, and kept all the prompts in one config file. The result is AI that carries the emotional payoff but can't break the game if the network does.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>I Built an Agent That Does VC Due Diligence in Minutes</title>
      <dc:creator>Adedeji Olamide</dc:creator>
      <pubDate>Thu, 28 May 2026 18:42:17 +0000</pubDate>
      <link>https://dev.to/octanexyz/i-built-an-agent-that-does-vc-due-diligence-in-minutes-mbo</link>
      <guid>https://dev.to/octanexyz/i-built-an-agent-that-does-vc-due-diligence-in-minutes-mbo</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;: Build With Hermes Agent&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;A few weeks ago I was looking at a list of hackathon submissions and noticed something. Every single project was for developers. Observability agents. Code review bots. Database query assistants. Debugging tools. All useful, all for people who already spend their days in a terminal.&lt;/p&gt;

&lt;p&gt;Nobody had built anything for the people who don't.&lt;/p&gt;

&lt;p&gt;That's when I thought about VC due diligence. The process that takes 2-4 weeks per deal is, at its core, mechanical. You need to know the market size. You need to map the competition. You look up the founders' previous companies. You read what people say on Reddit and Hacker News. You check how much funding they've raised and who from. None of this is strategic thinking. It's information retrieval, repeated across dozens of sources, by analysts who are overqualified for it.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Axiom&lt;/strong&gt;, an autonomous startup due diligence agent powered by Hermes Agent.&lt;/p&gt;

&lt;p&gt;You type one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/axiom-diligence Perplexity AI perplexity.ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Axiom spawns 7 parallel research sub-agents using Hermes's &lt;code&gt;delegate_task&lt;/code&gt; tool:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;What It Researches&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Market&lt;/td&gt;
&lt;td&gt;TAM, growth rate, timing signal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Competition&lt;/td&gt;
&lt;td&gt;Direct/indirect competitors, moat assessment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Founders&lt;/td&gt;
&lt;td&gt;Prior companies, exits, reputation signals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technology&lt;/td&gt;
&lt;td&gt;GitHub activity, stack, build vs. buy assessment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer Sentiment&lt;/td&gt;
&lt;td&gt;Reddit, HackerNews, review sites&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regulatory Risk&lt;/td&gt;
&lt;td&gt;Relevant laws, litigation signals, compliance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Financial Signals&lt;/td&gt;
&lt;td&gt;Crunchbase funding, investor quality, revenue signals&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The orchestrator synthesizes all 7 findings into a structured investment memo with a verdict (INVEST / MONITOR / PASS), confidence score, bull case, bear case, open diligence questions, and all sources cited. Output saves as JSON and Markdown, and renders in a Streamlit dashboard.&lt;/p&gt;




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

&lt;p&gt;The Streamlit dashboard renders the full VC-style memo with color-coded verdict, five signal metrics, and section-by-section research breakdowns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/cybort360/axiom" rel="noopener noreferrer"&gt;github.com/cybort360/axiom&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/cybort360/axiom" rel="noopener noreferrer"&gt;github.com/cybort360/axiom&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;axiom/
├── skills/
│   └── axiom-diligence/
│       └── SKILL.md          ← Hermes skill: the full research methodology
├── mcp/
│   └── axiom_mcp.py          ← Custom MCP server: HN, Reddit, Crunchbase, GitHub
├── web/
│   └── dashboard.py          ← Streamlit: VC-style memo viewer
├── setup.sh                  ← One-command &lt;span class="nb"&gt;install&lt;/span&gt;
└── demo.sh                   ← Run demo on any company
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One-command setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/cybort360/axiom
&lt;span class="nb"&gt;cd &lt;/span&gt;axiom
bash setup.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  My Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hermes Agent&lt;/strong&gt;: the agent runtime, skills system, and &lt;code&gt;delegate_task&lt;/code&gt; for parallel sub-agents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastMCP / mcp Python package&lt;/strong&gt;: custom MCP server for structured data access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;httpx&lt;/strong&gt;: async HTTP client for HackerNews, Reddit, Crunchbase, GitHub APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt;: investment memo dashboard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python venv&lt;/strong&gt;: dependency isolation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Data sources used (all free, no paid APIs):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;What We Pull&lt;/th&gt;
&lt;th&gt;How&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HackerNews&lt;/td&gt;
&lt;td&gt;Stories, comments, founder mentions&lt;/td&gt;
&lt;td&gt;Algolia HN API (free, no auth)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reddit&lt;/td&gt;
&lt;td&gt;User discussions, complaints, praise&lt;/td&gt;
&lt;td&gt;Reddit public JSON API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Crunchbase&lt;/td&gt;
&lt;td&gt;Funding rounds, investors, headcount&lt;/td&gt;
&lt;td&gt;Public profile scrape&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;Repos, stars, contributor signals&lt;/td&gt;
&lt;td&gt;GitHub public API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Greenhouse / Lever&lt;/td&gt;
&lt;td&gt;Open roles by department&lt;/td&gt;
&lt;td&gt;Public ATS APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web search&lt;/td&gt;
&lt;td&gt;Market size, news, competitors&lt;/td&gt;
&lt;td&gt;Hermes built-in web_search&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How I Used Hermes Agent
&lt;/h2&gt;

&lt;p&gt;Hermes Agent's &lt;code&gt;delegate_task&lt;/code&gt; tool is the reason Axiom works. Without it, a single-agent loop running 7 research threads sequentially would take 10x longer and would hit context limits trying to hold everything in memory.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;delegate_task&lt;/code&gt;, each sub-agent runs concurrently, stays focused on its own research slice, and hands back a clean JSON object. The orchestrator gets structured inputs from specialists rather than trying to do everything itself.&lt;/p&gt;

&lt;p&gt;Here's what the market research delegation looks like in the SKILL.md:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;delegate_task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
  &lt;span class="s"&gt;Research the total addressable market for [company].&lt;/span&gt;
  &lt;span class="s"&gt;Use web_search to find:&lt;/span&gt;
  &lt;span class="s"&gt;1. Market size estimates from analyst reports&lt;/span&gt;
  &lt;span class="s"&gt;2. Year-over-year growth rate&lt;/span&gt;
  &lt;span class="s"&gt;3. Timing signal: too early, right moment, or saturated?&lt;/span&gt;
  &lt;span class="s"&gt;4. Key market drivers&lt;/span&gt;

  &lt;span class="s"&gt;Return JSON with keys:&lt;/span&gt;
  &lt;span class="s"&gt;tam_estimate, growth_rate_yoy, timing_assessment,&lt;/span&gt;
  &lt;span class="s"&gt;market_drivers, comparables, sources&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every sub-agent returns a strict JSON schema. The orchestrator never parses free text. It calculates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The MCP server&lt;/strong&gt; gives Hermes structured access to six data tools (HackerNews, Reddit, Crunchbase, GitHub, hiring signals, report saving) without any paid API keys. Adding new data sources means adding one Python function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The skills system&lt;/strong&gt; makes the research methodology portable. The 363-line SKILL.md defines how a trained analyst would approach each dimension, what questions to ask, what signals to weight, and what the output schema must look like. Install the skill once and use it from CLI, Telegram, or Discord.&lt;/p&gt;

&lt;p&gt;Two things surprised me during the build. First, the quality of free data: HackerNews comment threads on a startup's launch post contain more honest signal than most analyst reports. Second, how much the output schema matters. Early versions returned free-form text from sub-agents. Once I forced strict JSON schemas, synthesis became deterministic.&lt;/p&gt;

&lt;p&gt;Axiom turned a use case that normally takes weeks and a team of analysts into a command you type once.&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
    </item>
    <item>
      <title>Synaptic: A Local-First AI Dev Companion That Remembers How You Think</title>
      <dc:creator>Adedeji Olamide</dc:creator>
      <pubDate>Sat, 23 May 2026 04:52:29 +0000</pubDate>
      <link>https://dev.to/octanexyz/synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think-24o6</link>
      <guid>https://dev.to/octanexyz/synaptic-a-local-first-ai-dev-companion-that-remembers-how-you-think-24o6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Build with Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Three weeks into learning Rust, I had Copilot open and Stack Overflow in the next tab. I was making progress — or so I thought. I'd ask Copilot how to handle an error, paste the answer in, the compiler would go green, and I'd move on.&lt;/p&gt;

&lt;p&gt;Six days in, I realised I had no idea what I was doing.&lt;/p&gt;

&lt;p&gt;I could produce Rust. I couldn't think in Rust. Copilot was making me a faster copy-paster. It wasn't making me a developer.&lt;/p&gt;

&lt;p&gt;What I needed wasn't more autocomplete. I needed something to stop me before I typed and ask: "Do you actually understand what you're about to do?"&lt;/p&gt;

&lt;p&gt;That question became Synaptic.&lt;/p&gt;

&lt;p&gt;Synaptic is a local-first AI dev companion powered entirely by Gemma 4. It watches your entire development environment — files, terminal, errors, shell history — and builds a persistent model of how you specifically think and solve problems. When you're stuck or learning a new language, it surfaces your own past solutions rather than generic documentation pulled from the internet.&lt;/p&gt;

&lt;p&gt;The centrepiece is the Socratic gate.&lt;/p&gt;

&lt;p&gt;When you open a code file, Synaptic reads your last few hours of activity, identifies what concept is most at stake in that file, and streams a targeted question into a HUD overlay within seconds:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You've been writing JavaScript closures recently. Before you edit this Rust file: how are you thinking about ownership and when values go out of scope?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The question isn't generic. It's built from your actual history. Gemma 4 evaluates your answer and either lets you through or asks a sharper follow-up targeting exactly what you glossed over. Over time, your explanations get sharper — because the bar doesn't lower.&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%2Fdcjbu3zn4y8xd0q6w7m8.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.amazonaws.com%2Fuploads%2Farticles%2Fdcjbu3zn4y8xd0q6w7m8.jpeg" alt=" " width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beyond the Socratic gate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ambient memory pipeline&lt;/strong&gt; — every file save and terminal command is compressed by Gemma 4 into a structured memory (summary, concepts, significance score, verbatim error text) every 3 seconds, stored locally in SQLite and indexed for semantic search&lt;/li&gt;
&lt;/ul&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%2Fvdih50uk3waf3vkgcmto.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%2Fvdih50uk3waf3vkgcmto.png" alt=" " width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vision error pipeline&lt;/strong&gt; — on macOS, when a terminal error fires, Gemma 4 reads a screenshot of your actual screen to extract the full stack trace, not the truncated shell history&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Four query modes&lt;/strong&gt; — Translate (JS patterns to Rust), Explain (grounded in your own history), Map Concept (to what you already know), Find Solution (have I solved this before?)&lt;/li&gt;
&lt;/ul&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%2Fl2ncr7jdousuj03yve8y.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%2Fl2ncr7jdousuj03yve8y.png" alt=" " width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Habit mismatch detection&lt;/strong&gt; — runs continuously, warns when you apply patterns from your old language that will break in your new one&lt;/li&gt;
&lt;/ul&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%2Fdmfqvmm8vbyrzhmtk05w.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%2Fdmfqvmm8vbyrzhmtk05w.png" alt=" " width="799" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stuck detection&lt;/strong&gt; — watches for compound signals (repeated errors, thrashing, excessive app switches) and auto-surfaces the HUD with relevant context before you ask&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Electron HUD overlay&lt;/strong&gt; — always-on-top, appears uninvited when it has something worth saying
Everything runs on your machine. No API keys required. No data leaves without your permission.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Live site: &lt;a href="https://synaptic-ebon.vercel.app" rel="noopener noreferrer"&gt;https://synaptic-ebon.vercel.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Docs: &lt;a href="https://synaptic-ebon.vercel.app/docs" rel="noopener noreferrer"&gt;https://synaptic-ebon.vercel.app/docs&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/0l067PhOaiY"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Quick start to try it yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/cybort360/synaptic
&lt;span class="nb"&gt;cd &lt;/span&gt;synaptic &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install
&lt;/span&gt;ollama pull gemma4:e4b
ollama pull nomic-embed-text
&lt;span class="nb"&gt;cp &lt;/span&gt;synaptic.config.example.json synaptic.config.json
&lt;span class="c"&gt;# Edit synaptic.config.json and add a directory to watchPaths&lt;/span&gt;
npm run launch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open a &lt;code&gt;.rs&lt;/code&gt;, &lt;code&gt;.ts&lt;/code&gt;, &lt;code&gt;.py&lt;/code&gt;, or &lt;code&gt;.go&lt;/code&gt; file in a watched directory. The HUD will appear within seconds with a question grounded in your recent activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/cybort360/synaptic" rel="noopener noreferrer"&gt;https://github.com/cybort360/synaptic&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full pipeline in one view:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Files / Terminal / Shell history
        ↓
    Observer (chokidar + history polling + stuck detector)
        ↓
    Archivist
      ├─ Compressor: gemma4:e4b (every 3s, with vision on errors)
      ├─ Embedder: nomic-embed-text (semantic search vectors)
      └─ SQLite (local, persistent, yours)
        ↓
    Connector
      ├─ Semantic search over history
      ├─ Prompt builder (4 modes)
      └─ Reasoner: gemma4:e4b (streaming)
        ↓
    Socratic Engine
      ├─ Fires on file open for recognised code files
      ├─ Streams question word-by-word to HUD
      └─ Evaluates answer, asks follow-up or passes
        ↓
    Dashboard (http://localhost:3777) + HUD Overlay (Electron)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stack: Node.js 20, TypeScript, Express, WebSocket, Electron, chokidar, sql.js (SQLite), Ollama. No frameworks. No bundler. Around 5,700 lines of original code.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Gemma 4
&lt;/h2&gt;

&lt;p&gt;I used &lt;code&gt;gemma4:e4b&lt;/code&gt; — the 4B effective parameter model — and the choice was deliberate at every level.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why E4B specifically
&lt;/h3&gt;

&lt;p&gt;Speed is the constraint. Synaptic compresses every file save and terminal command into a structured memory on a 3-second batch cycle. That cycle is a constraint, not a goal — if compression falls behind, the memories become stale. The Socratic question about your Rust ownership file would be grounded in something you did yesterday rather than what you were doing five minutes ago.&lt;/p&gt;

&lt;p&gt;I tested &lt;code&gt;gemma4:26b&lt;/code&gt; for this. The batches piled up. The tool became a liability. At 4B effective parameters, &lt;code&gt;gemma4:e4b&lt;/code&gt; compresses an event in under 2 seconds on a MacBook. The 3-second cycle stays clean. Memories are always fresh.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multimodal was the unlock.&lt;/strong&gt; When you hit a terminal error, your shell history often truncates it. The important part — the line number, the variable name, the exact constraint violated — is three screens down.&lt;/p&gt;

&lt;p&gt;Gemma 4 is natively multimodal. When Synaptic detects a terminal error, it captures a screenshot of your screen and sends it to Gemma before compression. Gemma reads the actual stack trace off your screen, not the truncated history. This is only possible with a vision-capable model. A text-only 4B model cannot do it. A vision-capable model too large to run locally cannot do it either. &lt;code&gt;gemma4:e4b&lt;/code&gt; is the exact intersection: small enough to run constantly, fast enough for real-time use, and genuinely multimodal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Socratic gate depends on first-token latency.&lt;/strong&gt; The gate fires when you open a code file. The HUD slides up. The question starts streaming in word by word while Gemma is still generating. With &lt;code&gt;gemma4:e4b&lt;/code&gt;, the first token arrives in under 3 seconds on a MacBook M-series. The question types itself in as the developer reads it. With a larger model, the developer is already ten lines deep before the question finishes generating — and the gate becomes noise.&lt;/p&gt;

&lt;h3&gt;
  
  
  What breaks with a different model
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Alternative&lt;/th&gt;
&lt;th&gt;What fails&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A 27B local model&lt;/td&gt;
&lt;td&gt;Compression batches pile up. The 3-second cycle becomes 30+ seconds and memories fall behind real activity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A non-multimodal 4B&lt;/td&gt;
&lt;td&gt;Vision pipeline silently degrades. Errors are compressed without reading the actual screen output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A cloud-only model&lt;/td&gt;
&lt;td&gt;The entire privacy guarantee breaks. Code, errors, and history leave your machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No local model at all&lt;/td&gt;
&lt;td&gt;Socratic gate cannot fire on every file open. Latency makes it unusable as a real-time feature&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The three tiers Gemma 4 powers
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;When&lt;/th&gt;
&lt;th&gt;Why Gemma 4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Event compression&lt;/td&gt;
&lt;td&gt;Every 3 seconds&lt;/td&gt;
&lt;td&gt;Speed. Needs to complete before the next event arrives.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vision error analysis&lt;/td&gt;
&lt;td&gt;On terminal errors (macOS)&lt;/td&gt;
&lt;td&gt;Multimodal. Reads the actual stack trace off the screen.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reasoning + Socratic evaluation&lt;/td&gt;
&lt;td&gt;On every query and file open&lt;/td&gt;
&lt;td&gt;Quality. Generates personalised questions and evaluates answers.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A separate &lt;code&gt;nomic-embed-text&lt;/code&gt; model handles embeddings for semantic search — it outperforms a generalist 4B model at this specific task, so I kept it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Gemma 4 made possible that wasn't before
&lt;/h3&gt;

&lt;p&gt;The core thesis of Synaptic is that local AI is now capable enough to be the primary intelligence of a real product — not just a demo. &lt;code&gt;gemma4:e4b&lt;/code&gt; can read screenshots, generate coherent structured analysis, evaluate the quality of a developer's reasoning, and do all of this on a consumer laptop in real time.&lt;/p&gt;

&lt;p&gt;That's new. Six months ago you had to choose between capable and local. With Gemma 4 you don't.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>GreenStep AI</title>
      <dc:creator>Adedeji Olamide</dc:creator>
      <pubDate>Mon, 20 Apr 2026 03:12:37 +0000</pubDate>
      <link>https://dev.to/octanexyz/greenstep-ai-1lch</link>
      <guid>https://dev.to/octanexyz/greenstep-ai-1lch</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-04-16"&gt;Weekend Challenge: Earth Day Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;GreenStep is a web app that shows you how to lower your carbon footprint and understand it better. Most people have a vague sense that their habits affect the planet but no clear picture of how much. GreenStep makes that happen.&lt;/p&gt;

&lt;p&gt;You log your daily activities like driving to work, taking a flight, or eating a burger into the app, and it instantly tells you how much CO2 those activities produce. A live dashboard shows your footprint growing over time with charts, so you can see trends right away. The Google Gemini-powered AI layer looks at your personal activity data and gives you specific, actionable suggestions based on your habits. These are not general tips, but suggestions based on what you actually logged.&lt;/p&gt;

&lt;p&gt;The goal was easy: show what was hidden. When you realise that your carbon footprint is a real number that changes with every choice you make, you start making different choices.&lt;/p&gt;

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

&lt;p&gt;Deployed URL — &lt;a href="https://green-step-ai.vercel.app" rel="noopener noreferrer"&gt;https://green-step-ai.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Screen recording — &lt;a href="https://youtu.be/sAft5XNsWeU?si=hrqVKmSPTdfvtoWH" rel="noopener noreferrer"&gt;https://youtu.be/sAft5XNsWeU?si=hrqVKmSPTdfvtoWH&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;GitHub repo — &lt;a href="https://github.com/cybort360/greenStep-AI" rel="noopener noreferrer"&gt;https://github.com/cybort360/greenStep-AI&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Stack: React, Next.js, Tailwind CSS&lt;/p&gt;

&lt;p&gt;Frontend: I used React and Next.js to build the UI. The activity logging form is easy to use; just choose a category (transport, food, energy, shopping), fill in the details, and submit. Each submission hits an API route that uses standard emissions factors from the EPA and IPCC datasets to calculate the CO2e value.&lt;/p&gt;

&lt;p&gt;Charts and Dashboard: The progress dashboard uses Recharts to show line and bar charts of your footprint over days and weeks. You can see which categories add the most to your total. For most people, transport is the biggest one.&lt;/p&gt;

&lt;p&gt;Google Gemini: The app sends a structured summary of a user's recent activities to the Gemini API after they log them. The prompt breaks down the activities by category and asks Gemini to come up with three to five specific, ranked suggestions based on what would have the biggest impact on that user. The response streams back and shows up right away in the UI. This isn't a list of general tips; Gemini looks at your real data and reacts to it. If you've flown three times this month, for instance, it will put that ahead of telling you to switch to LED bulbs.&lt;/p&gt;

&lt;p&gt;Backboard: I used Backboard to keep the app's data in sync in real time. When you log an activity, your dashboard updates right away without having to refresh the page. Backboard keeps track of the live state so that your totals and charts show new entries as soon as they are made. When the main loop is "log something, see its effect right away," this made the experience feel responsive instead of static and also give the AI memory.&lt;/p&gt;

&lt;p&gt;Key Decision: I made the activity input on purpose very simple. I wanted there to be no friction between a user's daily moment ("I just drove 30 miles") and logging it. People often give up on complicated carbon calculators because they ask for too much up front. GreenStep only asks for the bare minimum to get a useful number, and then it lets Gemini fill in the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;Best Use of Google Gemini: Gemini powers the AI recommendation engine. It receives a personalized summary of the user's logged activity data and generates ranked, specific suggestions for reducing their footprint. The integration is core to the product. Without it, GreenStep is just a calculator. With it, it becomes an advisor.&lt;/p&gt;

&lt;p&gt;Best Use of Backboard: Backboard drives the real-time sync layer. Activity logs written by the user propagate instantly to the dashboard, keeping charts and totals live without requiring manual refreshes or polling. It made the feedback loop between "I did this" and "here is its impact" feel immediate.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>Why I Want to Be a Front-End Developer and How HNG Will Help Me Achieve My Goals</title>
      <dc:creator>Adedeji Olamide</dc:creator>
      <pubDate>Fri, 31 Jan 2025 21:13:25 +0000</pubDate>
      <link>https://dev.to/octanexyz/why-i-want-to-be-a-front-end-developer-and-how-hng-will-help-me-achieve-my-goals-5egb</link>
      <guid>https://dev.to/octanexyz/why-i-want-to-be-a-front-end-developer-and-how-hng-will-help-me-achieve-my-goals-5egb</guid>
      <description>&lt;p&gt;&lt;strong&gt;My Motivation: Bridging Creativity and Technology&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From the moment I built my first webpage, I was hooked. Front-end development captivated me with its blend of creativity and technical precision, transforming lines of code into visually stunning, user-friendly interfaces. But my aspirations don’t stop there. My ultimate goal is to become a &lt;strong&gt;blockchain developer&lt;/strong&gt;, creating decentralized applications (dApps) that empower users with transparency and security.&lt;/p&gt;

&lt;p&gt;Front-end development is the perfect foundation for this journey. Blockchain technology thrives on user adoption, and intuitive interfaces are critical for making complex systems accessible. By mastering front-end skills like HTML, CSS, and JavaScript, I aim to build seamless experiences that bridge users with blockchain’s transformative potential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How HNG Will Accelerate My Growth&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;&lt;a href="https://hng.tech/hire/web-developers" rel="noopener noreferrer"&gt;HNG Internship&lt;/a&gt;&amp;nbsp;is a launchpad for aspiring developers like me. Here’s how it aligns with my goals:&lt;/p&gt;

&lt;p&gt;1.&amp;nbsp;&lt;strong&gt;Mastering Core Front-End Technologies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HNG emphasizes hands-on learning with modern web development tools. Their focus on JavaScript—a language pivotal for both front-end and blockchain development—will strengthen my ability to create dynamic interfaces. JavaScript frameworks like React, which HNG covers extensively, are also widely used in blockchain projects for building dApp frontends.&lt;/p&gt;

&lt;p&gt;2.&amp;nbsp;&lt;strong&gt;Collaboration and Real-World Projects&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The internship’s collaborative environment mirrors real-world tech teams. Working on projects with peers will teach me agile workflows and version control, skills essential for contributing to open-source blockchain platforms. Moreover, HNG’s network includes professionals who can offer mentorship on integrating front-end systems with blockchain backends.&lt;/p&gt;

&lt;p&gt;3.&amp;nbsp;&lt;strong&gt;Pathway to Blockchain Development&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While HNG’s&amp;nbsp;&lt;a href="https://hng.tech/hire/web-developers" rel="noopener noreferrer"&gt;web development program&lt;/a&gt;&amp;nbsp;hones my front-end expertise, their JavaScript-centric curriculum (see&amp;nbsp;HNG’s &lt;a href="https://hng.tech/hire/javascript-developers" rel="noopener noreferrer"&gt;JavaScript Developer Hiring&lt;/a&gt;) prepares me for backend logic. This duality is crucial for blockchain, where smart contracts (often written in JavaScript-based languages like Solidity) require robust front-end integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Goals for the HNG Internship&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build a Strong Foundation in Front-End Development&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action Plan&lt;/strong&gt;: Complete all tasks diligently, focusing on responsive design and JavaScript frameworks.&lt;br&gt;
&lt;strong&gt;Outcome&lt;/strong&gt;: Create portfolio projects showcasing interactive web apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore Blockchain Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action Plan&lt;/strong&gt;: Use HNG’s resources to learn how APIs connect frontends with blockchain networks. Experiment with libraries like Web3.js.&lt;br&gt;
&lt;strong&gt;Outcome&lt;/strong&gt;: Develop a basic dApp interface that interacts with a blockchain testnet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network with Industry Professionals&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action Plan&lt;/strong&gt;: Engage actively in HNG’s community, seek feedback, and connect with mentors experienced in blockchain.&lt;br&gt;
&lt;strong&gt;Outcome&lt;/strong&gt;: Gain insights into transitioning from front-end to blockchain roles.&lt;/p&gt;

&lt;p&gt;The HNG Internship isn’t just a stepping stone—it’s a catalyst. By refining my front-end skills here, I’ll be equipped to tackle the unique challenges of blockchain development. Every button I design, every API I integrate, and every line of JavaScript I write brings me closer to my goal: building decentralized solutions that redefine how we interact with technology.&lt;/p&gt;

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