<?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: Matt Mccord</title>
    <description>The latest articles on DEV Community by Matt Mccord (@mccordinator).</description>
    <link>https://dev.to/mccordinator</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%2F2074111%2F76bb575c-1a4d-4da0-acf2-2979c411fc26.png</url>
      <title>DEV Community: Matt Mccord</title>
      <link>https://dev.to/mccordinator</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mccordinator"/>
    <language>en</language>
    <item>
      <title>Senior / Junior Dev CSS Art Contest Submission</title>
      <dc:creator>Matt Mccord</dc:creator>
      <pubDate>Sun, 27 Jul 2025 23:41:40 +0000</pubDate>
      <link>https://dev.to/mccordinator/senior-junior-dev-css-art-contest-submission-9a7</link>
      <guid>https://dev.to/mccordinator/senior-junior-dev-css-art-contest-submission-9a7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend/axero"&gt;Frontend Challenge: Office Edition sponsored by Axero, CSS Art: Office Culture&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;I came across this image online of a senior shielding a junior from the perils of the work week, probably on Reddit, and I really love the sentiment behind it. It captures the nurturing dynamic between seniors and juniors, which can also apply to other work relationships where leaders guide their team members.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;(View at 0.5x scale if its too big for embed window)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/mccordinator/embed/xbwEmPK?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;First off, my inspiration and reference photo:&lt;/strong&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%2Flg6jlzxisd2rg109dq7u.jpg" 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%2Flg6jlzxisd2rg109dq7u.jpg" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I really love that image! I couldn't find the creator, so if you know who it is, please leave a comment!&lt;/p&gt;

&lt;p&gt;For my process, I used some light JavaScript to "trace" my inspiration image. I could toggle the reference image on and off by pressing "T" and show or hide all the CSS with "Y." This helped me ensure I was getting the lines just right.&lt;/p&gt;

&lt;p&gt;At first, I was using divs with rounded edges, but after moving from junior to senior, I realized I needed a more powerful tool: &lt;code&gt;clip-path: polygon()&lt;/code&gt;. This was the real game-changer! You provide the &lt;code&gt;polygon()&lt;/code&gt; function with x and y coordinates for each vertex, allowing you to create any shape you need. I found that you can't add a border to the polygon, so each piece of armor and the senior has a black shape behind it, with a slightly smaller colored shape in front to create the outline effect.&lt;/p&gt;

&lt;p&gt;I did all the work locally with vs code and chrome browser / devtools, then once finished created a codepen.&lt;/p&gt;

&lt;p&gt;My workflow / desktop layout looked like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Toggling the reference image:&lt;/strong&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%2Fm98qp0kltj7n98hih67z.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%2Fm98qp0kltj7n98hih67z.gif" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layout / workspace on one monitor:&lt;/strong&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%2Fqfkq3g5vhuhgmpsi0dw8.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%2Fqfkq3g5vhuhgmpsi0dw8.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using opacity and group border indicators:&lt;/strong&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%2Frfigtt7mrmvlh6amrzxy.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%2Frfigtt7mrmvlh6amrzxy.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;p&gt;This was a fun project and I got a lot of practice with clip-path and had some fun experimenting. In the future I'm looking to add the details to the armor and some lighting effects using gradients!&lt;/p&gt;

&lt;p&gt;Thanks for checking out my entry! Please leave a reaction if you enjoyed it, and a comment if you have your own entry or have used &lt;code&gt;clip-path&lt;/code&gt; and/or &lt;code&gt;polygon()&lt;/code&gt; in interesting ways!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/mccordgh/senior-junior-dev-art-css" rel="noopener noreferrer"&gt;View the Github for this project here.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
    </item>
    <item>
      <title>Google AI Studio - The Game of WAR!</title>
      <dc:creator>Matt Mccord</dc:creator>
      <pubDate>Fri, 11 Jul 2025 17:08:15 +0000</pubDate>
      <link>https://dev.to/mccordinator/google-ai-studio-the-game-of-war-3fb8</link>
      <guid>https://dev.to/mccordinator/google-ai-studio-the-game-of-war-3fb8</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I was curious if Gemini could build a card game, so I went with something with simple rules like the game of WAR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Let's make an app that is the card game of war. Use React. Use CSS to design and draw the card faces. The game should start out as 1 player vs 1 player with player 1's deck on the left and player 2's deck on the right. Then they play the game of war. The following is the info and rules of the card game War"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And then I pasted in the info / about / rules from &lt;a href="https://bicyclecards.com/how-to-play/war" rel="noopener noreferrer"&gt;https://bicyclecards.com/how-to-play/war&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial Result&lt;/strong&gt; (after some layout rearranging and adding auto-play option):&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%2Ffo8zg0u5wbl5gz5xq7qs.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%2Ffo8zg0u5wbl5gz5xq7qs.gif" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Afterwards, I tweaked the UI more, shifted the bottom left card text and icon to the bottom right to align with common playing cards, added animations, tweaked the rules to give each player less starting cards (one suit each), added Imagen to make custom artwork for each card face (a warrior or fighter looking type), each card back (no details given here form me), and artwork for a victory screen (asked it to have one knight flexing and one celebrating). And then had Gemini optimize the number of api calls being made to Imagen.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://war-were-deck-clared-185923236751.us-west1.run.app/" rel="noopener noreferrer"&gt;Play The Game of WAR here&lt;/a&gt;&lt;br&gt;
(Hopefully Imagen API key won't run out, but if it does there is fallback artwork).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intro Screen&lt;/strong&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%2Frjbm03lhs56dlnzmlqty.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%2Frjbm03lhs56dlnzmlqty.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Main Game Screen&lt;/strong&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%2F376qx7tx7owc9bw8qhk2.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%2F376qx7tx7owc9bw8qhk2.gif" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Victory!&lt;/strong&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%2Fmq43iar6a5bxa0x72j9h.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%2Fmq43iar6a5bxa0x72j9h.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;I had a good experience. I took it slow after the initial prompt and only asked for one to a few things at a time as long as they were simple. For more complex asks, I prompted those individually. Gemini also had the logic for when a tie happens and you keep playing for all the cards played since the tie, so it is a complete game of War!&lt;/p&gt;

&lt;p&gt;It was fun and only took me maybe ~3 hours with a couple small breaks.&lt;/p&gt;

&lt;p&gt;I did find that sometimes if I was interacting with the app while Gemini was trying to do its thing, then something wouldn't properly save (or maybe the dev server didn't proper restart?). I wouldn't see the new changes, even after refreshing from the preview window. I would have to let Gemini know this then it would do it's thing and then refresh. This is more likely a Google AI Studio related issue.&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Vibe Coding a New Portfolio with Google AI Studio!</title>
      <dc:creator>Matt Mccord</dc:creator>
      <pubDate>Wed, 09 Jul 2025 00:52:38 +0000</pubDate>
      <link>https://dev.to/mccordinator/vibe-coding-a-new-portfolio-with-google-ai-studio-310j</link>
      <guid>https://dev.to/mccordinator/vibe-coding-a-new-portfolio-with-google-ai-studio-310j</guid>
      <description>&lt;p&gt;After my previous attempt to create a portfolio using Gemini-CLI fell short, I turned to Google AI Studio. You can see that article &lt;a href="https://dev.to/mccordinator/vibe-coding-a-new-portfolio-with-gemini-cli-o2j"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I created a new project after initially following a DEV Education Track tutorial on a &lt;a href="https://dev.to/googleai/from-prompt-to-deployed-app-in-less-than-2-minutes-dh3"&gt;Magic the Gathering: Card Generator&lt;/a&gt;, I was impressed by the immediate results.&lt;/p&gt;


&lt;h2&gt;&lt;u&gt;&lt;b&gt;Initial Prompt and Results:&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;br&gt;
&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;I'd like to build a portfolio that showcases my projects with a similar UI like the Gemini OS project. The UI is inspired by windows 95 desktop look. There are folders for each project category. Use Svelte for the framework. Utilize Imagen to generate a dynamic wallpaper for the desktop.&lt;/em&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&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%2Fqwoh446a00edjt8fqwxx.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%2Fqwoh446a00edjt8fqwxx.png" alt=" " width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result was significantly better than my previous attempts with Gemini-CLI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observations:&lt;/strong&gt;&lt;br&gt;
Comparing Gemini in Google AI Studio with Gemini-CLI revealed some notable project development differences. On my local machine, Gemini-CLI struggled with import path configurations and appeared to have complex CSS and Tailwind framework challenges. The AI seemed to apply configuration fixes that potentially left the project with incomplete or empty configuration settings for Tailwind resulting in missing styles.&lt;/p&gt;

&lt;p&gt;An intriguing aspect was the deviation from my original instructions. I requested Svelte, but the AI generated a React application and independently added TypeScript, which was not part of my initial specification. It's cool, Gemini. I, too, am a strictly-typed enjoyer 😂.&lt;/p&gt;

&lt;p&gt;The component class names suggested a potential CSS framework usage, though no package.json was initially visible in the file explorer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side Quest: ⚔️ Investigating Dependencies:&lt;/strong&gt;&lt;br&gt;
When I requested to view the package.json, Gemini engaged in an elaborate process of generating the file, which raised questions about how and where dependencies were previously installed. During this exploration, the AI candidly acknowledged its framework selection error, demonstrating a level of self-awareness and willingness to correct its approach. Specifically, Gemini apologized for using React instead of the requested Svelte framework and offered to completely refactor the application if desired:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I also want to sincerely apologize—I've just realized that your original request was to build this portfolio using Svelte, and I mistakenly used React. That was my oversight. I am more than happy to refactor the entire application to Svelte if you'd like to proceed with that framework instead."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I was tempted, but decided not to potentially derail the project with a whole refactoring. I didn't see any CSS framework in the package.json so I'm still curious there, but decided to move on to a bigger task.&lt;/p&gt;

&lt;h1&gt;&lt;u&gt;&lt;b&gt;Integrating Personal Data:&lt;/b&gt;&lt;/u&gt;&lt;/h1&gt;

&lt;p&gt;I had one last thing I wanted Gemini to attempt, which was utilizing the JSON data from my current portfolio project at &lt;a href="https://mccordinator.com" rel="noopener noreferrer"&gt;https://mccordinator.com&lt;/a&gt; instead of the dummy data it had generated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;I'd like you to rework the app to use the JSON data I have provided in the data/ directory instead of using metadata.json. In data/apps.json are all my apps and game projects with information and links. You can ignore images data in there for now. in data/portfolio-about.json is data in a similar shape for the "About" section of the portfolio.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&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%2Fv25a4m9is814q63k6i62.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%2Fv25a4m9is814q63k6i62.gif" alt=" " width="720" height="610"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Observations:&lt;br&gt;
The result was quite impressive. Gemini created folders for each category from my JSON data, with each folder opening to a window displaying projects and their corresponding links. A minor visual issue emerged with project section headers appearing in white text against a white background, which became visible only when highlighted. The interface allowed for multiple window interactions, including the ability to open and drag windows across the desktop, though this functionality wasn't captured in the demonstration gif.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fun side note:&lt;/strong&gt; The "Shutdown" option put a cheeky log in the console:&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%2Frylk744tttzz22pub7th.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%2Frylk744tttzz22pub7th.png" alt=" " width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;hat one made me laugh out loud. 😂 Well played, Gemini. 🤖&lt;/p&gt;

&lt;p&gt;All in all, using Google AI Studio is pretty awesome. You can easily grab the project in a zip to set it up on your local for further development. There is also an option for quick deploy to Google Cloud as a Cloud Run Service, but I didn't work through this as it required setting up billing and I don't plan to deploy this app at this time.&lt;/p&gt;

&lt;p&gt;Thanks for reading. Comment below if you've had any interesting experiences with vibe coding yourself!&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>gemini</category>
      <category>googleaistudio</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Vibe Coding a New Portfolio with Gemini-CLI</title>
      <dc:creator>Matt Mccord</dc:creator>
      <pubDate>Wed, 02 Jul 2025 21:12:26 +0000</pubDate>
      <link>https://dev.to/mccordinator/vibe-coding-a-new-portfolio-with-gemini-cli-o2j</link>
      <guid>https://dev.to/mccordinator/vibe-coding-a-new-portfolio-with-gemini-cli-o2j</guid>
      <description>&lt;p&gt;I experimented with &lt;a href="https://github.com/google-gemini/gemini-cli" rel="noopener noreferrer"&gt;Gemini-CLI&lt;/a&gt; to scaffold a retro-OS–inspired portfolio, then iterated on it via prompts only. I have an existing portfolio like this at &lt;a href="https://mccordinator.com" rel="noopener noreferrer"&gt;https://mccordinator.com&lt;/a&gt;, but I wanted to see what Gemini would do  with a brand new project and high-level description of that portfolio. The following is a breakdown of what I did versus what Gemini did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Environment Setup&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js v23.&lt;/li&gt;
&lt;li&gt;Followed Gemini-CLI GitHub instructions to install and configure.&lt;/li&gt;
&lt;li&gt;Generated a Google AI Studio API key and set it via PowerShell:

&lt;ul&gt;
&lt;li&gt;$ setx GEMINI_API_KEY "YOUR_API_KEY"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Initial Prompt&lt;/strong&gt;&lt;br&gt;
I supplied this prompt to Gemini-CLI running in a powershell window:&lt;br&gt;
“Scaffold an interactive portfolio in a retro OS theme. Desktop mimics Windows 95/98; mobile mimics iOS. Use Vite, React, TypeScript, Tailwind CSS, and the latest dependencies. Pull my resume from my supplised resume PDF.” (I pointed to the location of the PDF and gemini was able to access it after I moved it in to the project dir, after it told me it cannot access files outside of the project dir).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini reported these actions while performing them in sequence:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created a new Vite project (React + TypeScript).&lt;/li&gt;
&lt;li&gt;Installed &amp;amp; configured Tailwind CSS via PostCSS.&lt;/li&gt;
&lt;li&gt;Parsed the resume into JSON data files under src/data.&lt;/li&gt;
&lt;li&gt;Built a basic Windows-style taskbar and “About Me” window component.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;First Scaffold &amp;amp; Fixes&lt;/strong&gt;&lt;br&gt;
Gemini ran the dev server at &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt; so I could check it all out.&lt;br&gt;
An error appeared: [plugin:vite:css] [postcss] It looks like you're trying to use &lt;code&gt;tailwindcss&lt;/code&gt; directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install &lt;code&gt;@tailwindcss/postcss&lt;/code&gt; and update your PostCSS configuration.&lt;/p&gt;

&lt;p&gt;I told gemini about the error and that we need to fix it before I can view the app.&lt;br&gt;
Gemini reported that it fixed a Tailwind PostCSS error by installing &lt;a class="mentioned-user" href="https://dev.to/tailwindcss"&gt;@tailwindcss&lt;/a&gt;/postcss and updating postcss.config.js.&lt;/p&gt;

&lt;p&gt;I saw a couple more errors which I manually corrected since they were very simple (they will keep appearing later and I will then prompt gemini about them):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An over-nested ../ import paths in Window.tsx. (One too many "../" in path).&lt;/li&gt;
&lt;li&gt;Removed stray newlines/invisible characters in skills.json causing parsing error.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After these fixes, the app loaded without console errors:&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%2Fj3jei2h9e8q090x1mk2a.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%2Fj3jei2h9e8q090x1mk2a.png" alt=" " width="627" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature Expansion&lt;/strong&gt;&lt;br&gt;
I prompted Gemini “I am able to see the app with no errors in the console. Thanks! Let's continue to build it out as the UI is very incomplete.” (purposely vague to see where it goes)&lt;/p&gt;

&lt;p&gt;Gemini reported these actions after ~125 seconds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added draggable windows.&lt;/li&gt;
&lt;li&gt;Created desktop icons (About Me, Experience, Skills) opening on double-click.&lt;/li&gt;
&lt;li&gt;Implemented closable windows.&lt;/li&gt;
&lt;li&gt;Built a basic Start menu.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I corrected one more import path mistake that had been repeated when gemini updated a .tsx file, then verified the app rendered again without errors:&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%2F09uqqdblsnezern3yprw.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%2F09uqqdblsnezern3yprw.png" alt=" " width="627" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refining the Desktop UI&lt;/strong&gt;&lt;br&gt;
Gemini asked me if I’d like to refine the desktop UI or start building out the mobile UI. Vibe coding is a lot about working with and iterating and giving the right details but I don’t want to make this an extremely long article.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I will give it one more chance to refine the desktop UI based on a prompt with the following laundry list of items:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The windows are fully transparent so when they overlap it makes it really hard to read the text inside the windows.&lt;/li&gt;
&lt;li&gt;The content inside the windows is also not formatted very well and is kind of a mush of text.&lt;/li&gt;
&lt;li&gt;The window itself needs some padding around the content.&lt;/li&gt;
&lt;li&gt;The buttons at the top right of the window are so small they are very hard to click. They need to be bigger like on a windows application.&lt;/li&gt;
&lt;li&gt;The maximize and minimize buttons seem to not be working on the windows as well. &lt;/li&gt;
&lt;li&gt;The “about me” “Experience” and “Skills” from the top taskbar are just plain text links that are not obvious the user should click. Let’s make them at least buttons and put them more near the center of the screen.&lt;/li&gt;
&lt;li&gt;Let’s also move the taskbar to the bottom of the screen and make sure the Start button is positioned inside of it to the left.&lt;/li&gt;
&lt;li&gt;Let’s also  bring some color to this UI using the following colors in order from lightest to darkest: #b3cbb9; #8fb996; #709775; #415d43; #111d13;”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Gemini gave me a plan and started executing:&lt;/strong&gt;&lt;br&gt;
  Here's my plan:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Integrate the Color Palette: I'll add your specified colors to the Tailwind CSS configuration so I can use them throughout the application.&lt;/li&gt;
&lt;li&gt;Fix Window Transparency &amp;amp; Padding: I'll give the windows a solid, opaque background color from your palette and add proper padding to the content area.&lt;/li&gt;
&lt;li&gt;Improve Window Buttons: I'll resize and restyle the minimize, maximize, and close buttons to be more prominent and user-friendly. I'll also add the logic for minimizing and
  maximizing windows.&lt;/li&gt;
&lt;li&gt;Format Window Content: I'll refactor the content inside the "Experience" and "Skills" windows to be more organized and readable.&lt;/li&gt;
&lt;li&gt;Style Desktop Icons: I'll redesign the desktop icons to look less like plain text and more like actual clickable icons.&lt;/li&gt;
&lt;li&gt;Refine Taskbar &amp;amp; Start Menu: I'll ensure the taskbar is correctly positioned at the bottom and apply the new color scheme to it and the Start Menu for a cohesive look.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Gemini reported these actions after about ~145 seconds&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updated Tailwind config with the specified colors.&lt;/li&gt;
&lt;li&gt;Made windows opaque and added padding.&lt;/li&gt;
&lt;li&gt;Resized and wired up window controls.&lt;/li&gt;
&lt;li&gt;Reformatted content inside windows.&lt;/li&gt;
&lt;li&gt;Restyled desktop icons as buttons.&lt;/li&gt;
&lt;li&gt;Repositioned and themed the bottom taskbar and Start menu.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Gemini again recreated all the previous path errors by adding one too many “../”.&lt;/strong&gt; But this time instead of manually fixing them, I prompted: “it seems when you are writing imports of the user, experience, and skills data you are adding one too many "../" to the import path causing build errors. Can you remove those and resolve the paths correctly?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini replied “You are absolutely right. I apologize for that oversight. Incorrect relative paths are a common and frustrating error. I will correct the import paths in the Desktop.tsx&lt;br&gt;
  Component.”&lt;/strong&gt; and it did so, then I was able to see the app again:&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%2F6sjtc8lisuv0ttmnoznr.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%2F6sjtc8lisuv0ttmnoznr.png" alt=" " width="637" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I observed the following:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Good:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Window minimize, maximize, and close buttons were properly resized.&lt;/li&gt;
&lt;li&gt;Minimize and maximize functionality was implemented.&lt;/li&gt;
&lt;li&gt;Content formatting was a bit better without any guidance.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Nope:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Windows remained transparent.&lt;/li&gt;
&lt;li&gt;No colors applied.&lt;/li&gt;
&lt;li&gt;Taskbar, Start button, and it’s icons are still oddly positioned.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Reflections&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Precise prompting is essential for desired theming, functionality, etc. in a lot of instances.&lt;/strong&gt;&lt;br&gt;
Tailwind’s complexity may have confused Gemini’s CSS generation.&lt;br&gt;
&lt;strong&gt;Total time:&lt;/strong&gt; ~1 hour to scaffold, debug, and add core interactions.&lt;br&gt;
The draggable-window feature is something I may add to my live portfolio at &lt;a href="https://mccordinator.com" rel="noopener noreferrer"&gt;https://mccordinator.com&lt;/a&gt;. It’s not a new idea, but now I have an example implementation to study!&lt;/p&gt;

&lt;p&gt;Since this was my first time vibe coding with an AI, I'm curious to learn about any tips and tricks others have for vibe coding and prompting. Comment below and let me know your thoughts! &lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>gemini</category>
      <category>cli</category>
      <category>react</category>
    </item>
  </channel>
</rss>
