<?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: mike dg</title>
    <description>The latest articles on DEV Community by mike dg (@mikedg).</description>
    <link>https://dev.to/mikedg</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%2F401472%2F6f93176b-0382-4665-a431-4bf92f015b64.jpeg</url>
      <title>DEV Community: mike dg</title>
      <link>https://dev.to/mikedg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mikedg"/>
    <language>en</language>
    <item>
      <title>Small Bit Arcade Games + Site - Amazon Q Developer Quack the Code Challenger</title>
      <dc:creator>mike dg</dc:creator>
      <pubDate>Sun, 11 May 2025 16:48:21 +0000</pubDate>
      <link>https://dev.to/mikedg/small-bit-arcade-games-site-amazon-q-developer-quack-the-code-challenger-2me9</link>
      <guid>https://dev.to/mikedg/small-bit-arcade-games-site-amazon-q-developer-quack-the-code-challenger-2me9</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aws-amazon-q-v2025-04-30"&gt;Amazon Q Developer "Quack The Code" Challenge&lt;/a&gt;: That's Entertainment!&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;a href="https://smallbit.mikedg.com" rel="noopener noreferrer"&gt;Small Bit Arcade&lt;/a&gt;, a nostalgic virtual arcade experience that transports users back to the neon-drenched world of 80s gaming. The project features a retro-styled website with multiple arcade games including Mad Monkey, Slime Sucker, Missile Madness, and Sharky Shark, all presented in retro stye with Atari-like graphics.&lt;/p&gt;

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

&lt;p&gt;You can experience Small Bit Arcade by visiting &lt;a href="https://smallbit.mikedg.com" rel="noopener noreferrer"&gt;the general website&lt;/a&gt; or directly hop to one of the games below.&lt;br&gt;
Games&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://smallbit.mikedg.com/games/shark/" rel="noopener noreferrer"&gt;Sharky Shark&lt;/a&gt; - Single button or screen tap, works on mobile&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://smallbit.mikedg.com/games/monkey/" rel="noopener noreferrer"&gt;Mad Monkey&lt;/a&gt; - single button or screen tap, works on mobile&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://smallbit.mikedg.com/games/missile/" rel="noopener noreferrer"&gt;Missile Madness&lt;/a&gt; - requires a keyboard, does not work on mobile&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://smallbit.mikedg.com/games/slime/" rel="noopener noreferrer"&gt;Slime Sucker&lt;/a&gt; - WASD controls, not working on mobile. Least polished&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;No public code available for this repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Amazon Q Developer
&lt;/h2&gt;

&lt;p&gt;Amazon Q Developer did almost every single bit of work in creating Small Bit Arcade. I basically added sounds aside from intensive prompting.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Innitial Game Setup&lt;/strong&gt; I prompted games individually, had Q make changes based on new prompts. I had started with Pygame then decided I wanted to get the games working on the web. Q also ported them, often in 1 attempt. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Initial Site Setup&lt;/strong&gt;: I used Amazon Q to help scaffold the Astro project structure. I gave guidance on what components I wanted and then strong design guidance for the 80's neon look.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SVG Game Icons&lt;/strong&gt;: Creating the pixel-art style SVG game icons was challenging. I described what I wanted to Amazon Q, which then generated the SVG code for each game icon, saving me hours of manual work. First passes weren't great or representative of the game, but telling Q to look at the game code resulted in much more representative icons.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Responsive Design Troubleshooting&lt;/strong&gt;: When the arcade cabinets weren't displaying correctly on mobile devices, I asked Amazon Q for help. It identified the issues in my CSS and provided fixes that made the site fully responsive, including media queries that adjusted the layout for smaller screens.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Game Logic Assistance&lt;/strong&gt;: For the game mechanics, Amazon Q implemented collision detection for Sharky Shark and the jumping physics for Mad Monkey.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Amazon Q Developer felt like having an intern working for me. I was just throwing things over to AI and getting really useable reuslts back. &lt;/p&gt;

&lt;p&gt;What impressed me most was Q's ability to understand the retro arcade aesthetic I was aiming for and provide solutions that maintained that visual style. &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>awschallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Retro Arcade made with Amazon Q</title>
      <dc:creator>mike dg</dc:creator>
      <pubDate>Sun, 11 May 2025 16:44:52 +0000</pubDate>
      <link>https://dev.to/mikedg/retro-arcade-made-with-amazon-q-4jm8</link>
      <guid>https://dev.to/mikedg/retro-arcade-made-with-amazon-q-4jm8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aws-amazon-q-v2025-04-30"&gt;Amazon Q Developer "Quack The Code" Challenge&lt;/a&gt;: That's Entertainment!&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;a href="https://smallbit.mikedg.com" rel="noopener noreferrer"&gt;Small Bit Arcade&lt;/a&gt;, a nostalgic virtual arcade experience that transports users back to the neon-drenched world of 80s gaming. The project features a retro-styled website with multiple arcade games including Mad Monkey, Slime Sucker, Missile Madness, and Sharky Shark, all presented in retro stye with Atari-like graphics.&lt;/p&gt;

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

&lt;p&gt;You can experience Small Bit Arcade by visiting &lt;a href="https://smallbit.mikedg.com" rel="noopener noreferrer"&gt;the general website&lt;/a&gt; or directly hop to one of the games below.&lt;br&gt;
Games&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://smallbit.mikedg.com/games/shark/" rel="noopener noreferrer"&gt;Sharky Shark&lt;/a&gt; - Single button or screen tap, works on mobile&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://smallbit.mikedg.com/games/monkey/" rel="noopener noreferrer"&gt;Mad Monkey&lt;/a&gt; - single button or screen tap, works on mobile&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://smallbit.mikedg.com/games/missile/" rel="noopener noreferrer"&gt;Missile Madness&lt;/a&gt; - requires a keyboard, does not work on mobile&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://smallbit.mikedg.com/games/slime/" rel="noopener noreferrer"&gt;Slime Sucker&lt;/a&gt; - WASD controls, not working on mobile. Least polished&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;No public code available for this repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Amazon Q Developer
&lt;/h2&gt;

&lt;p&gt;Amazon Q Developer did almost every single bit of work in creating Small Bit Arcade. I basically added sounds aside from intensive prompting.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Innitial Game Setup&lt;/strong&gt; I prompted games individually, had Q make changes based on new prompts. I had started with Pygame then decided I wanted to get the games working on the web. Q also ported them, often in 1 attempt. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Initial Site Setup&lt;/strong&gt;: I used Amazon Q to help scaffold the Astro project structure. I gave guidance on what components I wanted and then strong design guidance for the 80's neon look.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SVG Game Icons&lt;/strong&gt;: Creating the pixel-art style SVG game icons was challenging. I described what I wanted to Amazon Q, which then generated the SVG code for each game icon, saving me hours of manual work. First passes weren't great or representative of the game, but telling Q to look at the game code resulted in much more representative icons.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Responsive Design Troubleshooting&lt;/strong&gt;: When the arcade cabinets weren't displaying correctly on mobile devices, I asked Amazon Q for help. It identified the issues in my CSS and provided fixes that made the site fully responsive, including media queries that adjusted the layout for smaller screens.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Game Logic Assistance&lt;/strong&gt;: For the game mechanics, Amazon Q implemented collision detection for Sharky Shark and the jumping physics for Mad Monkey.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Amazon Q Developer felt like having an intern working for me. I was just throwing things over to AI and getting really useable reuslts back. &lt;/p&gt;

&lt;p&gt;What impressed me most was Q's ability to understand the retro arcade aesthetic I was aiming for and provide solutions that maintained that visual style. &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>awschallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Leetcode and Kotlin complaint</title>
      <dc:creator>mike dg</dc:creator>
      <pubDate>Thu, 18 Jun 2020 13:13:30 +0000</pubDate>
      <link>https://dev.to/mikedg/leetcode-and-kotlin-1nad</link>
      <guid>https://dev.to/mikedg/leetcode-and-kotlin-1nad</guid>
      <description>&lt;p&gt;Dear Leetcode,&lt;/p&gt;

&lt;p&gt;Stop using val as a field in your tree nodes. If we are going to have to write two extra characters to get around the fact that val is a keyword in Kotlin, then let's just use value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RripRD5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y2df3i2o1wh8krwxghjy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RripRD5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y2df3i2o1wh8krwxghjy.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Am I the only one annoyed by this?&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://play.kotlinlang.org/embed?short=tZy5Kzs46&amp;amp;from&amp;amp;to&amp;amp;theme=darcula&amp;amp;readOnly"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>leetcode</category>
      <category>kotlin</category>
    </item>
    <item>
      <title>I made an extension to paste images into dev.to</title>
      <dc:creator>mike dg</dc:creator>
      <pubDate>Thu, 18 Jun 2020 11:46:52 +0000</pubDate>
      <link>https://dev.to/mikedg/i-made-an-extension-to-paste-images-into-dev-to-4dca</link>
      <guid>https://dev.to/mikedg/i-made-an-extension-to-paste-images-into-dev-to-4dca</guid>
      <description>&lt;p&gt;The extension is available here&lt;br&gt;
&lt;a href="https://github.com/mikedg1/dev.to.paste"&gt;https://github.com/mikedg1/dev.to.paste&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At some point in the near future, I plan on going through the official publishing process. But it's out in source for now.&lt;br&gt;
There's a few things in there that I'd like to fix before letting it completely loose too. Things like too much logging and relying on setInterval because I could not get any DOM changes to register when the url for the image upload updates.&lt;/p&gt;

&lt;p&gt;One of the things that keeps me from writing articles is getting the non-textual content into the article easily.&lt;/p&gt;

&lt;p&gt;Most editors let you paste them directly in, not dev.to :( You need to have a file and upload it.&lt;/p&gt;

&lt;p&gt;We can fix that, and every image in the article was pasted via this extension.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Process
&lt;/h3&gt;

&lt;p&gt;I searched for the id of the file input element and wound up discovering this. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s4U3fn4L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rn5d72dm007p4jxr80k6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s4U3fn4L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rn5d72dm007p4jxr80k6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
The important part is the onChange. We will need to trigger that so the rest of the website does it's thing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nSxm3rwS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9qapt6238a9bvfmxkjfp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nSxm3rwS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9qapt6238a9bvfmxkjfp.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
This block waits for a paste, grabs the files if you have an image, then moves through the upload process programatically.&lt;/p&gt;

&lt;p&gt;After the image is uploaded, we get a url that needs to be automatically inserted. Unfortunately, I ran into issues watching the DOM for value changes, so we wound up with using setInterval to check every second.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Iqi5dRyF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2rvwhqe7glxwhsfeen1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Iqi5dRyF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2rvwhqe7glxwhsfeen1n.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not being a web developer, I just grabbed insertAtCursor from some wonderful Stack Overflow post.&lt;/p&gt;

</description>
      <category>devto</category>
      <category>extensions</category>
      <category>chrome</category>
      <category>articles</category>
    </item>
    <item>
      <title>Android studio Layout Tip 1</title>
      <dc:creator>mike dg</dc:creator>
      <pubDate>Mon, 15 Jun 2020 11:34:24 +0000</pubDate>
      <link>https://dev.to/mikedg/android-studio-layout-tip-1-37m5</link>
      <guid>https://dev.to/mikedg/android-studio-layout-tip-1-37m5</guid>
      <description>&lt;p&gt;I was recently asked "When coding layouts for android apps, do you use pure XML or the editor (drag and drop)"&lt;/p&gt;

&lt;p&gt;I do both.&lt;/p&gt;

&lt;p&gt;A mixture of both results in the highest producivity for me.&lt;/p&gt;

&lt;p&gt;I'll often, somewhat haphazardly, drag and drop to get the basics comoponents in the relatively correct spots in the editor. Then, visually wire up the basic constraints, and then in code fine tune the remaining constraints to actually get everything lined up at run time.&lt;/p&gt;

&lt;p&gt;One tip for making drag-and-drop go quicker, is to use the filtering capability of Android Studio and the rest of JetBrains IDEs.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b2QYtxdq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/67uqye3j3dkxrmjpgiqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b2QYtxdq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/67uqye3j3dkxrmjpgiqz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
If you type in the View palette, you'll see that it filters to what ever you type.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Nd-cNN0M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hvcl7u9t03m9tqw8f3h3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nd-cNN0M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hvcl7u9t03m9tqw8f3h3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>androidstudio</category>
      <category>android</category>
    </item>
  </channel>
</rss>
