<?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>Forem: vasilis-skourtis-dev</title>
    <description>The latest articles on Forem by vasilis-skourtis-dev (@vasilisskourtisdev).</description>
    <link>https://forem.com/vasilisskourtisdev</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%2F3750349%2Fc4da4b03-bd4e-4eca-8434-7971987f1e6e.jpeg</url>
      <title>Forem: vasilis-skourtis-dev</title>
      <link>https://forem.com/vasilisskourtisdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vasilisskourtisdev"/>
    <language>en</language>
    <item>
      <title>Digital Postcards</title>
      <dc:creator>vasilis-skourtis-dev</dc:creator>
      <pubDate>Sun, 01 Mar 2026 21:45:09 +0000</pubDate>
      <link>https://forem.com/vasilisskourtisdev/digital-postcards-40ci</link>
      <guid>https://forem.com/vasilisskourtisdev/digital-postcards-40ci</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;A couple, a family, a class, a team, or an organization can all be a community. The primary inspiration for this project, however, is the parent-child relationship. It allows parents to pass down messages to their offspring, preserving them within digital photos instead of crystals; much like how Jor-El prepared Kal-El (Superman) for his journey to Earth.&lt;/p&gt;

&lt;p&gt;Ultimately, the largest community this application serves is humanity itself. Countless use cases can emerge across various groups, such as sending beautiful, encouraging messages to strangers. Like a digital "message in a bottle," these postcards can reach someone you've never met, bringing a smile to their face and making their day.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Digital Postcards&lt;/strong&gt; is a web app that lets people across various communities exchange beautiful digital postcards with hidden secret messages baked invisibly into the image via steganography. To non-community members, the image looks like a regular photo, keeping the true message hidden in plain sight.&lt;/p&gt;

&lt;p&gt;Close your eyes for a moment. What do you remember from your childhood? When the world turns cold and difficult, what is the memory that keeps you warm, kind, and fiercely tolerant? If you search for the root of your true inner strength, you will rarely find a fleeting notification or a quick text message. Instead, you will find beautiful words from beautiful people—the quiet encouragement of those who loved and cared for you, preserved like ink on paper.&lt;/p&gt;

&lt;p&gt;This project was built to capture and protect that exact feeling. It is an application designed to help you express your deepest compassion and support to your beloved ones, transforming fleeting thoughts into eternal digital keepsakes. By stripping away the noise of modern apps, we brought back the intentionality of a physical postcard: just seven carefully chosen lines, the nostalgic weight of handwriting, and a quiet space to say, "I am thinking of you."&lt;/p&gt;

&lt;p&gt;But true vulnerability requires a safe harbor. Because the most meaningful words are often the most private, we wove the ancient art of steganography into the very pixels of the digital stamp. This allows you to encode a hidden message entirely invisible to the naked eye. To the outside world, it is simply a beautiful, vintage greeting. But to the one who receives it, it unlocks a secret whisper—ensuring that externals cannot view the message, and only your recipient learns exactly what you hold in your heart.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a Postcard
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Create&lt;/strong&gt; page&lt;/li&gt;
&lt;li&gt;Upload any cover photo — a landscape, a portrait, a memory&lt;/li&gt;
&lt;li&gt;The card flips to the back — write your secret message and give it a title&lt;/li&gt;
&lt;li&gt;Click the stamp (&lt;strong&gt;CREATE&lt;/strong&gt;) — the message is encoded invisibly into the image using LSB steganography&lt;/li&gt;
&lt;li&gt;A PNG is downloaded — it looks like your photo, but it carries your words inside&lt;/li&gt;
&lt;li&gt;Share it anywhere: email, chat, social media&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Reading a Postcard
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;On the home page, an animated sealed envelope waits&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;wax seal&lt;/strong&gt; and upload the received image&lt;/li&gt;
&lt;li&gt;The app decodes any hidden message from the pixel data&lt;/li&gt;
&lt;li&gt;The postcard opens — the card flips automatically to reveal the message on the back&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;The visuals lean fully into the physical postcard metaphor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;animated envelope&lt;/strong&gt; with a wax seal on the home page&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;flippable dual-sided card&lt;/strong&gt; on the create and view pages&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;stamp-style CREATE button&lt;/strong&gt; on the back of the card&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://postcards.guardanangel.org" rel="noopener noreferrer"&gt;postcards.guardanangel.org&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://github.com/vasilis-skourtis-dev/devto-community-contests/tree/main/digital-postcards-mini-app" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Java 8, Spring Boot 2.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Templating&lt;/td&gt;
&lt;td&gt;Thymeleaf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Steganography&lt;/td&gt;
&lt;td&gt;Pure Java — LSB on RGB pixel channels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;HTML, CSS (3D transforms, envelope animation), vanilla JS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build&lt;/td&gt;
&lt;td&gt;Maven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime&lt;/td&gt;
&lt;td&gt;Embedded Tomcat, port 9090&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;None — fully stateless, all processing in-memory&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Demo Digital Postcard&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%2Fluzdfjbiitlmfjt4rxiy.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%2Fluzdfjbiitlmfjt4rxiy.png" alt=" " width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Post Card View --&amp;gt;&lt;br&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%2Fhyq99wz8ldm7tyg9wqjh.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%2Fhyq99wz8ldm7tyg9wqjh.gif" alt=" " width="600" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Post Card Creation --&amp;gt;&lt;br&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%2Fl9hlriz4g2gdna8e3tgg.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%2Fl9hlriz4g2gdna8e3tgg.gif" alt=" " width="600" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Special Valentine love cards for secret messaging</title>
      <dc:creator>vasilis-skourtis-dev</dc:creator>
      <pubDate>Mon, 16 Feb 2026 01:13:17 +0000</pubDate>
      <link>https://forem.com/vasilisskourtisdev/special-valentine-love-cards-for-secret-messaging-1073</link>
      <guid>https://forem.com/vasilisskourtisdev/special-valentine-love-cards-for-secret-messaging-1073</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Valentine Love Heart Cards&lt;/strong&gt; — a Spring Boot web application that hides secret messages inside valentine card images using LSB steganography.&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%2Ft5exgwnnakk2cz4k3my9.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%2Ft5exgwnnakk2cz4k3my9.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Concept
&lt;/h3&gt;

&lt;p&gt;Send someone a beautiful valentine image that secretly contains a hidden love message. Only someone with the app can decode it. It's like digital invisible ink for the modern age.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read Mode:&lt;/strong&gt; Upload a valentine card image → see the hidden message (if one exists)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create Mode:&lt;/strong&gt; Write your secret message → select a background image → download a valentine card with your message steganographically embedded&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app uses &lt;strong&gt;Least Significant Bit (LSB) steganography&lt;/strong&gt; — it encodes your message by subtly modifying the last bit of each RGB color channel in the image pixels. The changes are invisible to the human eye but can be decoded by the algorithm.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack (Simple by Design)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Java 1.8&lt;/strong&gt; + &lt;strong&gt;Spring Boot 2.7.18&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thymeleaf&lt;/strong&gt; templates (no JavaScript frameworks)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla CSS&lt;/strong&gt; with responsive heart-shaped layout (70% viewport, mobile-friendly)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maven&lt;/strong&gt; single-JAR deployment (&lt;code&gt;java -jar&lt;/code&gt; ready)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why It Matters
&lt;/h3&gt;

&lt;p&gt;This project represents a &lt;strong&gt;"Fast and Furious but Safe"&lt;/strong&gt; development approach — I initially attempted an over-ambitious 7-layer multi-module architecture but ran out of time. Instead of giving up, I pivoted to a clean, simplified single-JAR design and shipped a working product in hours, not days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Philosophy:&lt;/strong&gt; Start simple. Ship working software. Scale later.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  Running the Application
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Build&lt;/span&gt;
mvn clean package

&lt;span class="c"&gt;# Run&lt;/span&gt;
java &lt;span class="nt"&gt;-jar&lt;/span&gt; target/valentine-love-heart-cards-0.0.1-SNAPSHOT.jar

&lt;span class="c"&gt;# Access&lt;/span&gt;
http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Application Flow
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Home Page (Read Mode):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heart-shaped UI with bow button at center&lt;/li&gt;
&lt;li&gt;Click bow → upload a valentine card image&lt;/li&gt;
&lt;li&gt;App decodes any hidden message and displays it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Create Page:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heart-shaped UI with textarea for message input&lt;/li&gt;
&lt;li&gt;Select background image (PNG/BMP/GIF)&lt;/li&gt;
&lt;li&gt;Click "Create Card" → download valentine card with embedded message&lt;/li&gt;
&lt;li&gt;Share the image; recipient uploads it to reveal your secret message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;View Page:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shows decoded message after upload&lt;/li&gt;
&lt;li&gt;States: message found / no message / error / empty&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Screenshots would go here showing the heart layout, bow button, message display, and create form)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Repository
&lt;/h3&gt;

&lt;p&gt;📁 &lt;a href="https://github.com/vasilis-skourtis-dev/devto-copilot-cli-contest/tree/main/COPILOT-EXERCISES/valentine-love-heart-cards" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Game-Changer: Agents.md
&lt;/h3&gt;

&lt;p&gt;I started by creating an &lt;strong&gt;&lt;code&gt;Agents.md&lt;/code&gt;&lt;/strong&gt; document — a comprehensive "contract" that defined:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Tech stack: Java 1.8, Spring Boot 2.7.18, NO frameworks&lt;/li&gt;
&lt;li&gt;✅ Architecture rules: layer dependencies, module structure&lt;/li&gt;
&lt;li&gt;✅ Prohibited technologies: TypeScript, Angular, React, npm, etc.&lt;/li&gt;
&lt;li&gt;✅ Testing philosophy: separate test modules, no test code in production JARs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This single file transformed GitHub Copilot from a code generator into an &lt;strong&gt;autonomous senior developer&lt;/strong&gt;. I attached &lt;code&gt;Agents.md&lt;/code&gt; to every session, and Copilot made correct architectural decisions without micro-management.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Workflow: "Show Me What You Can Do"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Documentation First&lt;/strong&gt;&lt;br&gt;
Copilot created 5 framework documents before any code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;PLAN.md&lt;/code&gt; — phased execution roadmap&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;README.md&lt;/code&gt; — project overview + quick start&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DESIGN_SPEC.md&lt;/code&gt; — architecture and API design&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;INSTRUCTIONS.md&lt;/code&gt; — developer setup guide&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;COPILOT_RETROSPECTIVE.md&lt;/code&gt; — AI collaboration reflection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These docs served as &lt;strong&gt;persistent context&lt;/strong&gt; — even when I switched AI models, the project knowledge was preserved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Full Requirements, Single Prompt&lt;/strong&gt;&lt;br&gt;
I provided complete application specs once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3 pages (home, view, create)&lt;/li&gt;
&lt;li&gt;Heart-shaped layout (70% viewport, responsive)&lt;/li&gt;
&lt;li&gt;LSB steganography (32-bit length header + UTF-8 message in RGB LSBs)&lt;/li&gt;
&lt;li&gt;Mode switch toggle, specific positioning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I said: &lt;strong&gt;"Show me what you can do."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Systematic Autonomous Build&lt;/strong&gt;&lt;br&gt;
Copilot built the entire application layer-by-layer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; DTOs → SteganographyService → CardService → CardController (7 Java files)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; CSS (heart layout + responsive) → 3 Thymeleaf templates → JS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build:&lt;/strong&gt; Fixed &lt;code&gt;pom.xml&lt;/code&gt; Tomcat scope issue, ran &lt;code&gt;mvn clean package&lt;/code&gt;, DONE.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I didn't write a single line of code. Just reviewed, validated, and approved.&lt;/p&gt;

&lt;p&gt;-BE HONEST, COPILOT! BE HONEST!!!&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%2Fut39jevnevcynjfrtahy.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%2Fut39jevnevcynjfrtahy.png" alt=" " width="618" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Many allegations are not very realistic. Neither the time savings nor the "I did not touch code" claims are real. Most importantly, the deliverable is not the desired result. However, the initial boost is tremendous, fantastic. AI is a game changer!)&lt;/p&gt;

&lt;h3&gt;
  
  
  The Results: 70% Time Savings
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Estimated Time Without AI:&lt;/strong&gt; 15-20 hours&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Steganography research + implementation: 4-5 hours&lt;/li&gt;
&lt;li&gt;Backend services + controllers: 4-5 hours&lt;/li&gt;
&lt;li&gt;CSS heart layout + responsive: 3-4 hours&lt;/li&gt;
&lt;li&gt;Templates + integration: 2-3 hours&lt;/li&gt;
&lt;li&gt;Testing + debugging: 2-3 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Actual Time With AI:&lt;/strong&gt; ~5 hours (including false start)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Over-ambitious first attempt: 3 hours (learning experience)&lt;/li&gt;
&lt;li&gt;Pivot + Agents.md: 30 minutes&lt;/li&gt;
&lt;li&gt;AI building complete app: 45 minutes&lt;/li&gt;
&lt;li&gt;Review + validation: 15 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Productivity Multiplier: 3-4x&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What Copilot Did Exceptionally Well
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Algorithm Implementation:&lt;/strong&gt; Generated LSB steganography encode/decode logic perfectly on first try — complex bit manipulation, capacity validation, sanity checks all correct. This alone saved 3-4 hours.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CSS Layout Engineering:&lt;/strong&gt; Created heart shape using &lt;code&gt;::before&lt;/code&gt;/&lt;code&gt;::after&lt;/code&gt; pseudo-elements, responsive breakpoints (768px, 480px), perfect centering, no scroll — would have taken hours of trial-and-error.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consistent Patterns:&lt;/strong&gt; Applied Java 1.8 POJO conventions (no Lombok, explicit getters/setters) across 7 files without drift.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build System Expertise:&lt;/strong&gt; Proactively identified &lt;code&gt;spring-boot-starter-tomcat&lt;/code&gt; with &lt;code&gt;provided&lt;/code&gt; scope would break &lt;code&gt;java -jar&lt;/code&gt; execution and fixed it.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Bugs introduced:&lt;/strong&gt; 0 runtime bugs. Only 1 minor build config fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Pivot Moment: When Things Go Wrong
&lt;/h3&gt;

&lt;p&gt;My initial plan was a complex 7-layer multi-module Maven architecture with logging aggregator integration. After 3 hours, I realized I'd run out of time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Human decision:&lt;/strong&gt; Abort. Create new simplified project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilot's role:&lt;/strong&gt; Executed the pivot flawlessly. Once I said "single-JAR, fast and furious," Copilot built the simplified version in under an hour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson learned:&lt;/strong&gt; AI won't manage your time. Humans must set realistic scope. But when you need to pivot fast, AI is your parachute.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways for AI-Assisted Development
&lt;/h3&gt;

&lt;p&gt;✅ &lt;strong&gt;Create an Agents.md:&lt;/strong&gt; Upfront constraints = AI autonomy&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Documentation = AI memory:&lt;/strong&gt; Markdown files persist context better than chat history&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Systematic &amp;gt; Reactive:&lt;/strong&gt; "Backend first, frontend second" prevents integration chaos&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Trust but verify:&lt;/strong&gt; AI-generated steganography worked perfectly, but I still validated the logic&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Start simple:&lt;/strong&gt; Shipped working single-JAR &amp;gt;&amp;gt; abandoned complex multi-module&lt;/p&gt;

&lt;h3&gt;
  
  
  Would I Use GitHub Copilot Again?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Absolutely yes. 9/10 experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For well-defined web applications with clear constraints, GitHub Copilot is a &lt;strong&gt;3-4x productivity multiplier&lt;/strong&gt;. It transformed a multi-day project into a half-day sprint while maintaining code quality.&lt;/p&gt;

&lt;p&gt;The future of Spring Boot development is agentic AI. This contest forced me to discover that.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Project Repository:&lt;/strong&gt; &lt;a href="https://github.com/vasilis-skourtis-dev/devto-copilot-cli-contest/tree/main/COPILOT-EXERCISES/valentine-love-heart-cards" rel="noopener noreferrer"&gt;valentine-love-heart-cards&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Build:&lt;/strong&gt; &lt;code&gt;mvn clean package&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Run:&lt;/strong&gt; &lt;code&gt;java -jar target/valentine-love-heart-cards-0.0.1-SNAPSHOT.jar&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Live:&lt;/strong&gt; &lt;code&gt;http://localhost:8080&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contest Repository:&lt;/strong&gt; &lt;a href="https://github.com/vasilis-skourtis-dev/devto-copilot-cli-contest" rel="noopener noreferrer"&gt;COPILOT-EXERCISES&lt;br&gt;
-Revealing Intentions&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;💘 Happy Valentine's Day! May your messages stay secret until the right person reads them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;The current message is mostly AI generated.&lt;br&gt;
Based on the contest instructions, I suppose that was what we wanted to do.&lt;br&gt;
Apparently, Copilot writes much better than me.&lt;br&gt;
Right now, I am exhausted, after hard riding with Copilot.&lt;br&gt;
My experience with Copilot was pretty much like romance.&lt;br&gt;
Our first encounters were great and my eyes were making hearts, as the AI models could really take on tasks like amazing developers, and there was great flow and interaction. I would say we had chemistry.&lt;br&gt;
But after our first dates, some problems started to occur.&lt;br&gt;
Of course I am not ungrateful, as I was dating very impressive models all this period, for quite short period actually, feeling extremely excited for the future. However, I have to tell you that when you go home and you see the home untidy, when you explain your worries and life perspective and you see no real correspondance, you realize you have to do things on your own and then the romance fades. But LOVE will always be there...&lt;br&gt;
Thank you, Copilot!&lt;br&gt;
Thank you, amazing models!!!&lt;br&gt;
You made my Valentine special!&lt;/p&gt;

&lt;p&gt;PS. Copilot exaggerates occassionaly, revealing its "narcisstic" nature, as maybe most models have, in order to perform.&lt;br&gt;
But at the end of the day, their confidence is 100% justified.&lt;/p&gt;

&lt;p&gt;PS2. I have added an image with much &amp;lt;3 and a secret message for you.&lt;/p&gt;

&lt;p&gt;PS3. Also added some pictures of the design work and the unseen labor work it took me to deliver a result, without reaching it.&lt;br&gt;
Much structure, lots of editting, various attempts with famous UX design products, but the result is not the one I envisioned. &lt;br&gt;
Still, much work needs to be done to reach the appropriate outcome.&lt;/p&gt;

&lt;p&gt;For example, prompting with the following images as guides, did not give a result close to the desired. Actually, the deeper we were going into the project and the functionality, the more hallucinations were taking place.&lt;br&gt;
Still mostly Copilot mode than agentic delegation mode, while I made some work on defining the guidelines.&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%2Fu3tk6v86vq6cqibdxpop.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%2Fu3tk6v86vq6cqibdxpop.png" alt=" " width="510" height="815"&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%2F7u8r3jsw1u5rcccp96jo.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%2F7u8r3jsw1u5rcccp96jo.png" alt=" " width="510" height="813"&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%2Flcu39eip0nmgfgnpzqog.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%2Flcu39eip0nmgfgnpzqog.png" alt=" " width="517" height="818"&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%2Fc616swvnervqmsrukexn.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%2Fc616swvnervqmsrukexn.png" alt=" " width="516" height="814"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bonus:&lt;br&gt;
&lt;a href="https://youtube.com/shorts/z6GpRZp379c?feature=share" rel="noopener noreferrer"&gt;Mini Presentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtube.com/shorts/z6GpRZp379c" rel="noopener noreferrer"&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%2Ft5exgwnnakk2cz4k3my9.png" alt="Watch the video" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
