<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://devwithdean.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://devwithdean.com/" rel="alternate" type="text/html" /><updated>2026-10-03T02:43:55-04:00</updated><id>https://devwithdean.com/feed.xml</id><title type="html">Dev With Dean</title><subtitle>Programmer - IT Professional</subtitle><author><name>Dean</name></author><entry><title type="html">Welcome to My Jekyll Blog</title><link href="https://devwithdean.com/blog/2026/05/21/welcome-to-my-jekyll-blog/" rel="alternate" type="text/html" title="Welcome to My Jekyll Blog" /><published>2026-05-21T11:00:00-04:00</published><updated>2026-05-21T11:00:00-04:00</updated><id>https://devwithdean.com/blog/2026/05/21/welcome-to-my-jekyll-blog</id><content type="html" xml:base="https://devwithdean.com/blog/2026/05/21/welcome-to-my-jekyll-blog/"><![CDATA[<p>I’m thrilled to announce the launch of my new Jekyll-powered blog! After months of running a simple static website, I’ve decided to transform it into a full-fledged blog where I can share my programming journey, tutorials, and project insights.</p>

<h2 id="why-jekyll">Why Jekyll?</h2>

<p>Jekyll is a fantastic static site generator that offers several benefits:</p>

<ul>
  <li><strong>Simple and Fast</strong>: Static sites load incredibly quickly</li>
  <li><strong>Markdown Support</strong>: Write posts in simple Markdown format</li>
  <li><strong>GitHub Pages Integration</strong>: Free hosting with seamless deployment</li>
  <li><strong>No Database</strong>: Everything is file-based and version-controlled</li>
  <li><strong>Customizable</strong>: Full control over design and functionality</li>
</ul>

<h2 id="what-to-expect">What to Expect</h2>

<p>On this blog, I’ll be sharing:</p>

<ul>
  <li><strong>Programming Tutorials</strong>: Step-by-step guides on various technologies</li>
  <li><strong>Project Showcases</strong>: Deep dives into my projects and what I learned</li>
  <li><strong>Development Tips</strong>: Helpful tricks and best practices I discover</li>
  <li><strong>Personal Reflections</strong>: Thoughts on my journey as a self-taught programmer</li>
</ul>

<h2 id="the-migration-process">The Migration Process</h2>

<p>Converting my website to Jekyll was an interesting learning experience. I had to:</p>

<ol>
  <li>Set up the Jekyll directory structure</li>
  <li>Create reusable layout templates</li>
  <li>Convert static HTML pages to Markdown</li>
  <li>Organize styles with Sass</li>
  <li>Configure plugins for SEO and RSS feeds</li>
</ol>

<p>The result is a more maintainable and scalable website that makes content creation much easier.</p>

<h2 id="stay-connected">Stay Connected</h2>

<p>I’m excited about this new chapter and look forward to sharing more content with you. Make sure to:</p>

<ul>
  <li>Check out my <a href="/projects/">projects</a> if you haven’t already</li>
  <li>Follow me on <a href="https://x.com/devwithdean">Twitter</a> for updates</li>
  <li>Connect with me on <a href="https://github.com/DeanJ93">GitHub</a></li>
</ul>

<p>Thanks for stopping by, and happy coding!</p>]]></content><author><name>Dean</name></author><category term="announcements" /><category term="personal" /><category term="jekyll" /><category term="blogging" /><category term="web-development" /><summary type="html"><![CDATA[I'm excited to announce the launch of my new Jekyll-powered blog! Learn about the journey of converting my static website into a dynamic blog.]]></summary></entry><entry><title type="html">My Programming Journey: From Zero to Self-Taught Developer</title><link href="https://devwithdean.com/blog/2026/05/20/my-programming-journey/" rel="alternate" type="text/html" title="My Programming Journey: From Zero to Self-Taught Developer" /><published>2026-05-20T15:30:00-04:00</published><updated>2026-05-20T15:30:00-04:00</updated><id>https://devwithdean.com/blog/2026/05/20/my-programming-journey</id><content type="html" xml:base="https://devwithdean.com/blog/2026/05/20/my-programming-journey/"><![CDATA[<p>Every programmer has a unique story about how they started their journey. Mine began with curiosity and a desire to create something meaningful. Today, I want to share my experience as a self-taught developer.</p>

<h2 id="the-beginning">The Beginning</h2>

<p>I didn’t come from a computer science background. My interest in programming started when I wanted to build something but didn’t know how. That “something” evolved into a passion that has shaped my career path.</p>

<h2 id="the-learning-process">The Learning Process</h2>

<h3 id="starting-with-python">Starting with Python</h3>

<p>I chose Python as my first language because of its readability and versatility. The syntax felt natural, and I could quickly build small projects that gave me confidence to continue learning.</p>

<h3 id="building-projects">Building Projects</h3>

<p>The most important lesson I learned was this: <strong>build things</strong>. Reading tutorials and watching videos is great, but nothing beats the experience of actually creating something from scratch. Each project taught me:</p>

<ul>
  <li>How to debug effectively</li>
  <li>How to break down complex problems</li>
  <li>How to research and find solutions</li>
  <li>How to persevere through frustration</li>
</ul>

<h3 id="expanding-my-skills">Expanding My Skills</h3>

<p>After getting comfortable with Python, I explored web development:</p>

<ul>
  <li>HTML and CSS for structure and styling</li>
  <li>JavaScript for interactivity</li>
  <li>Various frameworks and tools</li>
  <li>Version control with Git</li>
</ul>

<h2 id="challenges-i-faced">Challenges I Faced</h2>

<h3 id="imposter-syndrome">Imposter Syndrome</h3>

<p>Like many self-taught developers, I struggled with imposter syndrome. I questioned whether I was “good enough” without a formal CS degree. Over time, I realized that:</p>

<ul>
  <li>Everyone starts as a beginner</li>
  <li>Experience matters more than credentials</li>
  <li>The community is generally supportive</li>
  <li>Continuous learning is what really counts</li>
</ul>

<h3 id="staying-motivated">Staying Motivated</h3>

<p>There were times when progress felt slow or I hit walls that seemed impossible to overcome. What kept me going:</p>

<ul>
  <li><strong>Small Wins</strong>: Celebrating every working feature</li>
  <li><strong>Community</strong>: Connecting with other developers</li>
  <li><strong>Purpose</strong>: Remembering why I started</li>
  <li><strong>Curiosity</strong>: Always having a new technology to explore</li>
</ul>

<h2 id="key-takeaways">Key Takeaways</h2>

<h3 id="1-consistency-over-intensity">1. Consistency Over Intensity</h3>

<p>Regular practice, even if just 30 minutes a day, beats sporadic marathon coding sessions.</p>

<h3 id="2-learn-by-doing">2. Learn by Doing</h3>

<p>Build projects that interest you. The motivation will carry you through the difficult parts.</p>

<h3 id="3-dont-compare">3. Don’t Compare</h3>

<p>Everyone’s journey is different. Focus on your own progress.</p>

<h3 id="4-embrace-failure">4. Embrace Failure</h3>

<p>Every bug is a learning opportunity. Every failed project teaches you something valuable.</p>

<h3 id="5-share-your-knowledge">5. Share Your Knowledge</h3>

<p>Writing about what you learn reinforces your understanding and helps others.</p>

<h2 id="whats-next">What’s Next?</h2>

<p>I’m constantly exploring new technologies and improving my skills. Current focuses include:</p>

<ul>
  <li>Deepening my JavaScript knowledge</li>
  <li>Exploring modern web frameworks</li>
  <li>Contributing to open-source projects</li>
  <li>Sharing my knowledge through this blog</li>
</ul>

<h2 id="advice-for-beginners">Advice for Beginners</h2>

<p>If you’re starting your programming journey:</p>

<ol>
  <li><strong>Start Now</strong>: Don’t wait for the “perfect” time or resource</li>
  <li><strong>Pick One Language</strong>: Master the basics before jumping around</li>
  <li><strong>Build Projects</strong>: Theory is important, but practice is essential</li>
  <li><strong>Join Communities</strong>: Connect with others who are learning</li>
  <li><strong>Be Patient</strong>: Programming is a marathon, not a sprint</li>
</ol>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>Being self-taught doesn’t mean being alone. The programming community is one of the most supportive I’ve encountered. Take advantage of the wealth of resources available, but remember that your unique perspective and experiences are valuable.</p>

<p>The journey never really ends—there’s always something new to learn, which is what makes programming so exciting.</p>

<p>What’s your programming story? I’d love to hear about your journey and what motivates you to code!</p>]]></content><author><name>Dean</name></author><category term="personal" /><category term="learning" /><category term="programming" /><category term="self-taught" /><category term="career" /><category term="journey" /><summary type="html"><![CDATA[A reflection on my journey as a self-taught programmer, the challenges I faced, and the lessons I learned along the way.]]></summary></entry><entry><title type="html">Building Space Invaders with Python Turtle Graphics</title><link href="https://devwithdean.com/blog/2026/05/19/building-space-invaders/" rel="alternate" type="text/html" title="Building Space Invaders with Python Turtle Graphics" /><published>2026-05-19T10:00:00-04:00</published><updated>2026-05-19T10:00:00-04:00</updated><id>https://devwithdean.com/blog/2026/05/19/building-space-invaders</id><content type="html" xml:base="https://devwithdean.com/blog/2026/05/19/building-space-invaders/"><![CDATA[<p>One of my favorite projects has been recreating the classic Space Invaders game using Python’s Turtle Graphics library. In this post, I’ll walk through the development process and share what I learned.</p>

<h2 id="why-space-invaders">Why Space Invaders?</h2>

<p>Space Invaders is a perfect project for intermediate programmers because it involves:</p>

<ul>
  <li>Object-oriented programming</li>
  <li>Game loops and event handling</li>
  <li>Collision detection</li>
  <li>State management</li>
  <li>User input processing</li>
</ul>

<h2 id="the-tech-stack">The Tech Stack</h2>

<p><strong>Language</strong>: Python 3<br />
<strong>Graphics Library</strong>: Turtle Graphics<br />
<strong>Repository</strong>: <a href="https://github.com/DeanJ93/space_invaders/tree/main">github.com/DeanJ93/space_invaders</a></p>

<h2 id="project-architecture">Project Architecture</h2>

<h3 id="core-components">Core Components</h3>

<ol>
  <li><strong>Player Ship</strong>: Controlled by keyboard input</li>
  <li><strong>Enemies</strong>: Multiple alien ships in formation</li>
  <li><strong>Bullets</strong>: Projectiles fired by both player and enemies</li>
  <li><strong>Collision Detection</strong>: Detecting hits between objects</li>
  <li><strong>Score System</strong>: Tracking player performance</li>
</ol>

<h3 id="game-loop">Game Loop</h3>

<p>The main game loop handles:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Pseudocode structure
</span><span class="k">while</span> <span class="n">game_running</span><span class="p">:</span>
    <span class="nf">update_player_position</span><span class="p">()</span>
    <span class="nf">update_enemies</span><span class="p">()</span>
    <span class="nf">update_bullets</span><span class="p">()</span>
    <span class="nf">check_collisions</span><span class="p">()</span>
    <span class="nf">update_score</span><span class="p">()</span>
    <span class="nf">refresh_screen</span><span class="p">()</span>
</code></pre></div></div>

<h2 id="key-challenges">Key Challenges</h2>

<h3 id="1-smooth-movement">1. Smooth Movement</h3>

<p>Getting smooth, responsive movement with Turtle Graphics required:</p>

<ul>
  <li>Using <code class="language-plaintext highlighter-rouge">tracer(0)</code> to disable automatic screen updates</li>
  <li>Manually calling <code class="language-plaintext highlighter-rouge">update()</code> after position changes</li>
  <li>Implementing velocity-based movement</li>
</ul>

<h3 id="2-collision-detection">2. Collision Detection</h3>

<p>Implementing accurate collision detection between objects:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">is_collision</span><span class="p">(</span><span class="n">obj1</span><span class="p">,</span> <span class="n">obj2</span><span class="p">,</span> <span class="n">distance</span><span class="p">):</span>
    <span class="n">dx</span> <span class="o">=</span> <span class="n">obj1</span><span class="p">.</span><span class="nf">xcor</span><span class="p">()</span> <span class="o">-</span> <span class="n">obj2</span><span class="p">.</span><span class="nf">xcor</span><span class="p">()</span>
    <span class="n">dy</span> <span class="o">=</span> <span class="n">obj1</span><span class="p">.</span><span class="nf">ycor</span><span class="p">()</span> <span class="o">-</span> <span class="n">obj2</span><span class="p">.</span><span class="nf">ycor</span><span class="p">()</span>
    <span class="nf">return </span><span class="p">(</span><span class="n">dx</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">dy</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">**</span> <span class="mf">0.5</span> <span class="o">&lt;</span> <span class="n">distance</span>
</code></pre></div></div>

<h3 id="3-enemy-movement-patterns">3. Enemy Movement Patterns</h3>

<p>Creating the classic Space Invaders movement pattern where enemies:</p>
<ul>
  <li>Move horizontally across the screen</li>
  <li>Drop down when reaching the edge</li>
  <li>Increase speed as their numbers decrease</li>
</ul>

<h3 id="4-performance-optimization">4. Performance Optimization</h3>

<p>Turtle Graphics isn’t the fastest library, so optimization was crucial:</p>

<ul>
  <li>Limiting the number of bullets on screen</li>
  <li>Efficient collision detection</li>
  <li>Removing destroyed objects from memory</li>
</ul>

<h2 id="what-i-learned">What I Learned</h2>

<h3 id="object-oriented-design">Object-Oriented Design</h3>

<p>This project reinforced OOP principles:</p>

<ul>
  <li>Creating classes for different game entities</li>
  <li>Encapsulating behavior within objects</li>
  <li>Managing object lifecycles</li>
</ul>

<h3 id="game-development-concepts">Game Development Concepts</h3>

<ul>
  <li>Game state management</li>
  <li>Frame rate considerations</li>
  <li>User input handling</li>
  <li>Balancing difficulty</li>
</ul>

<h3 id="python-specifics">Python Specifics</h3>

<ul>
  <li>Working with Turtle Graphics library</li>
  <li>Event-driven programming with <code class="language-plaintext highlighter-rouge">onkey()</code></li>
  <li>List comprehensions for managing multiple objects</li>
  <li>Python’s <code class="language-plaintext highlighter-rouge">random</code> module for enemy behavior</li>
</ul>

<h2 id="code-highlights">Code Highlights</h2>

<h3 id="player-class">Player Class</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">Player</span><span class="p">:</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
        <span class="n">self</span><span class="p">.</span><span class="n">player</span> <span class="o">=</span> <span class="n">turtle</span><span class="p">.</span><span class="nc">Turtle</span><span class="p">()</span>
        <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">speed</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
        <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">shape</span><span class="p">(</span><span class="sh">"</span><span class="s">triangle</span><span class="sh">"</span><span class="p">)</span>
        <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">color</span><span class="p">(</span><span class="sh">"</span><span class="s">blue</span><span class="sh">"</span><span class="p">)</span>
        <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">penup</span><span class="p">()</span>
        <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">setheading</span><span class="p">(</span><span class="mi">90</span><span class="p">)</span>
        <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">goto</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">250</span><span class="p">)</span>
        
    <span class="k">def</span> <span class="nf">move_left</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
        <span class="n">x</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">xcor</span><span class="p">()</span>
        <span class="k">if</span> <span class="n">x</span> <span class="o">&gt;</span> <span class="o">-</span><span class="mi">280</span><span class="p">:</span>
            <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">setx</span><span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">15</span><span class="p">)</span>
            
    <span class="k">def</span> <span class="nf">move_right</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
        <span class="n">x</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">xcor</span><span class="p">()</span>
        <span class="k">if</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="mi">280</span><span class="p">:</span>
            <span class="n">self</span><span class="p">.</span><span class="n">player</span><span class="p">.</span><span class="nf">setx</span><span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">15</span><span class="p">)</span>
</code></pre></div></div>

<h3 id="bullet-system">Bullet System</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">Bullet</span><span class="p">:</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
        <span class="n">self</span><span class="p">.</span><span class="n">bullet</span> <span class="o">=</span> <span class="n">turtle</span><span class="p">.</span><span class="nc">Turtle</span><span class="p">()</span>
        <span class="n">self</span><span class="p">.</span><span class="n">bullet</span><span class="p">.</span><span class="nf">speed</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
        <span class="n">self</span><span class="p">.</span><span class="n">bullet</span><span class="p">.</span><span class="nf">shape</span><span class="p">(</span><span class="sh">"</span><span class="s">circle</span><span class="sh">"</span><span class="p">)</span>
        <span class="n">self</span><span class="p">.</span><span class="n">bullet</span><span class="p">.</span><span class="nf">color</span><span class="p">(</span><span class="sh">"</span><span class="s">yellow</span><span class="sh">"</span><span class="p">)</span>
        <span class="n">self</span><span class="p">.</span><span class="n">bullet</span><span class="p">.</span><span class="nf">penup</span><span class="p">()</span>
        <span class="n">self</span><span class="p">.</span><span class="n">bullet</span><span class="p">.</span><span class="nf">goto</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
        <span class="n">self</span><span class="p">.</span><span class="n">state</span> <span class="o">=</span> <span class="sh">"</span><span class="s">fire</span><span class="sh">"</span>
        
    <span class="k">def</span> <span class="nf">move</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
        <span class="k">if</span> <span class="n">self</span><span class="p">.</span><span class="n">state</span> <span class="o">==</span> <span class="sh">"</span><span class="s">fire</span><span class="sh">"</span><span class="p">:</span>
            <span class="n">y</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">bullet</span><span class="p">.</span><span class="nf">ycor</span><span class="p">()</span>
            <span class="n">self</span><span class="p">.</span><span class="n">bullet</span><span class="p">.</span><span class="nf">sety</span><span class="p">(</span><span class="n">y</span> <span class="o">+</span> <span class="mi">20</span><span class="p">)</span>
</code></pre></div></div>

<h2 id="future-improvements">Future Improvements</h2>

<p>Ideas for enhancing the game:</p>

<ol>
  <li><strong>Power-ups</strong>: Add special abilities and bonuses</li>
  <li><strong>Multiple Levels</strong>: Increasing difficulty with each level</li>
  <li><strong>Sound Effects</strong>: Adding audio for shooting and explosions</li>
  <li><strong>High Score System</strong>: Persistent leaderboard</li>
  <li><strong>Better Graphics</strong>: Custom sprites instead of Turtle shapes</li>
</ol>

<h2 id="try-it-yourself">Try It Yourself</h2>

<p>The full source code is available on <a href="https://github.com/DeanJ93/space_invaders/tree/main">GitHub</a>. Feel free to:</p>

<ul>
  <li>Clone the repository</li>
  <li>Experiment with the code</li>
  <li>Add your own features</li>
  <li>Share your improvements</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>Building Space Invaders was a fantastic learning experience that combined programming fundamentals with game development concepts. It’s a project I recommend to anyone looking to:</p>

<ul>
  <li>Practice Python and OOP</li>
  <li>Learn basic game development</li>
  <li>Build something fun and interactive</li>
  <li>Have a portfolio piece to showcase</li>
</ul>

<p>The best part? It’s genuinely fun to play once you’ve built it!</p>

<p>Have you built any games with Python? What was your experience? Let me know in the comments!</p>

<hr />

<p><em>Check out the <a href="https://github.com/DeanJ93/space_invaders/tree/main">live project on GitHub</a> and give it a try!</em></p>]]></content><author><name>Dean</name></author><category term="projects" /><category term="tutorials" /><category term="python" /><category term="game-development" /><category term="turtle-graphics" /><category term="tutorial" /><summary type="html"><![CDATA[A detailed look at how I built a Space Invaders game using Python's Turtle Graphics library, including challenges faced and lessons learned.]]></summary></entry></feed>