<?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: Justino Contingo </title>
    <description>The latest articles on DEV Community by Justino Contingo  (@justino_contingo).</description>
    <link>https://dev.to/justino_contingo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3956158%2F1b16696b-b5cd-453f-8132-10a1e5e9d6a0.png</url>
      <title>DEV Community: Justino Contingo </title>
      <link>https://dev.to/justino_contingo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/justino_contingo"/>
    <language>en</language>
    <item>
      <title>Turing's Solstice – Decipher the Code. Control the Solstice.</title>
      <dc:creator>Justino Contingo </dc:creator>
      <pubDate>Sun, 21 Jun 2026 20:54:54 +0000</pubDate>
      <link>https://dev.to/justino_contingo/turings-solstice-decipher-the-code-control-the-solstice-jfe</link>
      <guid>https://dev.to/justino_contingo/turings-solstice-decipher-the-code-control-the-solstice-jfe</guid>
      <description>&lt;p&gt;This is a submission for the June Solstice Game Jam&lt;/p&gt;




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

&lt;p&gt;Turing's Solstice is an arcade runner that blends fast-paced action, logic puzzles, and a narrative inspired by the June Solstice and Alan Turing's legacy.&lt;/p&gt;

&lt;p&gt;You control SOL-42, an artificial intelligence created to maintain the balance between Light and Darkness. The SOL-ENIGMA, an ancient machine responsible for the transitions between Day and Night, has started generating unstable codes, threatening to plunge the world into chaos. To restore order, you must run through an ever-changing world, dodge obstacles, collect energy, and decipher codes before each transition happens.&lt;/p&gt;

&lt;p&gt;The game combines reflex-based gameplay with logic and cryptography puzzles that affect the environment in real time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Play the Game
&lt;/h2&gt;

&lt;p&gt;🔗 Play Turing's Solstice on Vercel&lt;br&gt;
&lt;a href="https://turing-solstice.vercel.app/" rel="noopener noreferrer"&gt;https://turing-solstice.vercel.app/&lt;/a&gt;&lt;/p&gt;


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

&lt;p&gt;🎥 Gameplay Demo&lt;/p&gt;

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




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

&lt;p&gt;🔗 GitHub Repository&lt;br&gt;
&lt;a href="https://github.com/justino-code/turing-solstice" rel="noopener noreferrer"&gt;https://github.com/justino-code/turing-solstice&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;The game was built using TypeScript, Vite, and the Canvas API, without relying on any game engine.&lt;/p&gt;

&lt;p&gt;Tech Stack&lt;/p&gt;

&lt;p&gt;TypeScript for game logic&lt;/p&gt;

&lt;p&gt;Vite for development and build pipeline&lt;/p&gt;

&lt;p&gt;Canvas API for rendering&lt;/p&gt;

&lt;p&gt;Google Gemini API for procedural puzzles and AI interactions&lt;/p&gt;

&lt;p&gt;JSONBin.io for global leaderboard&lt;/p&gt;

&lt;p&gt;localStorage for persistence&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Core: Game, GameUpdater, GameInitializer, ModeManager, EnigmaHandler&lt;/p&gt;

&lt;p&gt;Systems: RenderSystem, EnigmaSystem, InteractionSystem&lt;/p&gt;

&lt;p&gt;Services: GeminiAdapter, RankingService, TuringTestService&lt;/p&gt;

&lt;p&gt;Controllers: UIController, InputController&lt;/p&gt;

&lt;p&gt;Entities: Player, Obstacle, Platform, EnergyOrb&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Decisions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;No game engine: Built entirely with the Canvas API for full control over rendering and performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dynamic puzzles: Gemini API used to generate procedural puzzles and SOL-ENIGMA interactions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Responsive design: Custom getFontSize() scaling system for consistent cross-device experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Global ranking: Fingerprint-based identification for leaderboard integrity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Progression system: Cycle-based design culminating in a secret challenge at Cycle 25.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Challenges Faced
&lt;/h2&gt;

&lt;p&gt;JSON truncation: Implemented cleanup logic to repair malformed AI responses.&lt;/p&gt;

&lt;p&gt;Mobile balancing: Optimized obstacle spacing and player positioning for smaller screens.&lt;/p&gt;

&lt;p&gt;Cross-device UI: Custom scaling strategy to ensure readability across all resolutions.&lt;/p&gt;




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

&lt;p&gt;🏆 Best Google AI Usage&lt;/p&gt;

&lt;p&gt;The game uses the Google Gemini API in two main ways:&lt;/p&gt;

&lt;p&gt;Procedural generation of logic, binary, cryptography, and pattern-based puzzles.&lt;/p&gt;

&lt;p&gt;Dynamic SOL-ENIGMA interactions that respond to gameplay events and player progress.&lt;/p&gt;

&lt;p&gt;The system includes a fallback mechanism to ensure gameplay remains functional even without API access.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 Best Ode to Alan Turing
&lt;/h2&gt;

&lt;p&gt;This game is a tribute to Alan Turing through both mechanics and narrative:&lt;/p&gt;

&lt;p&gt;Inspired by Enigma codebreaking and cryptography principles.&lt;/p&gt;

&lt;p&gt;Binary and logic-based puzzles integrated into gameplay.&lt;/p&gt;

&lt;p&gt;The question “Can machines think?” is central to the story.&lt;/p&gt;

&lt;p&gt;Final challenge inspired by the Turing Test, unlocked at Cycle 25.&lt;/p&gt;

&lt;p&gt;Exploration of AI perception and human-machine distinction.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Rebuilding an Abandoned Laravel Page Builder With a JSON-Based Architecture</title>
      <dc:creator>Justino Contingo </dc:creator>
      <pubDate>Sun, 07 Jun 2026 20:19:06 +0000</pubDate>
      <link>https://dev.to/justino_contingo/rebuilding-an-abandoned-laravel-page-builder-with-a-json-based-architecture-28dc</link>
      <guid>https://dev.to/justino_contingo/rebuilding-an-abandoned-laravel-page-builder-with-a-json-based-architecture-28dc</guid>
      <description>&lt;p&gt;Submission for the GitHub Finish-Up-A-Thon Challenge&lt;/p&gt;

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

&lt;p&gt;I built a Laravel Page Builder that allows developers to create and manage pages through a visual drag-and-drop interface.&lt;/p&gt;

&lt;p&gt;Unlike most page builders that rely heavily on database storage, this project takes a different approach: page layouts are stored as JSON files directly in the filesystem.&lt;/p&gt;

&lt;p&gt;The idea behind this decision was simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pages become portable&lt;/li&gt;
&lt;li&gt;Content can be versioned with Git&lt;/li&gt;
&lt;li&gt;Deployments become easier&lt;/li&gt;
&lt;li&gt;Developers can review page changes through pull requests&lt;/li&gt;
&lt;li&gt;No dependency on SQL or NoSQL storage for page definitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal wasn't just to create another page builder, but to explore an alternative architecture for page composition within Laravel applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Drag-and-drop page builder&lt;/li&gt;
&lt;li&gt;Modular block-based architecture&lt;/li&gt;
&lt;li&gt;JSON filesystem storage&lt;/li&gt;
&lt;li&gt;Livewire v3 integration&lt;/li&gt;
&lt;li&gt;Editable headers and footers&lt;/li&gt;
&lt;li&gt;Import and export functionality&lt;/li&gt;
&lt;li&gt;Custom block support&lt;/li&gt;
&lt;li&gt;Multi-language support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is currently a working prototype, but it already demonstrates the core concept and architectural direction.&lt;/p&gt;




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

&lt;p&gt;&lt;a href="https://github.com/Justino-code/pagebuilder" rel="noopener noreferrer"&gt;https://github.com/Justino-code/pagebuilder&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Project Evolution
&lt;/h2&gt;

&lt;p&gt;To make the progress made during the challenge transparent, I preserved two separate branches:&lt;/p&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/Justino-code/pagebuilder/tree/before-changes" rel="noopener noreferrer"&gt;https://github.com/Justino-code/pagebuilder/tree/before-changes&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  After
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/Justino-code/pagebuilder/tree/after-changes" rel="noopener noreferrer"&gt;https://github.com/Justino-code/pagebuilder/tree/after-changes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These branches show the project's state before and after the redesign and refactoring work completed during the challenge.&lt;/p&gt;




&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;p&gt;Project screenshots can be found here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Justino-code/pagebuilder/blob/main/docs/screen.md" rel="noopener noreferrer"&gt;https://github.com/Justino-code/pagebuilder/blob/main/docs/screen.md&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Story Behind the Project
&lt;/h2&gt;

&lt;p&gt;This project actually started long before the challenge.&lt;/p&gt;

&lt;p&gt;The original idea was to build a page builder centered around a filesystem-first philosophy, where page definitions would live as JSON files rather than database records.&lt;/p&gt;

&lt;p&gt;While the concept was promising, the project eventually stalled and was left unfinished.&lt;/p&gt;

&lt;p&gt;The GitHub Finish-Up-A-Thon provided the perfect opportunity to revisit the idea and determine whether it was worth pursuing.&lt;/p&gt;

&lt;p&gt;Instead of trying to build every planned feature, I focused on validating the architecture, improving the internal structure, and delivering a functional prototype.&lt;/p&gt;

&lt;p&gt;During the challenge I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reworked the block architecture&lt;/li&gt;
&lt;li&gt;Improved page composition workflows&lt;/li&gt;
&lt;li&gt;Refactored major portions of the codebase&lt;/li&gt;
&lt;li&gt;Expanded customization capabilities&lt;/li&gt;
&lt;li&gt;Clarified the long-term direction of the project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest achievement wasn't adding a specific feature.&lt;/p&gt;

&lt;p&gt;It was proving that the concept works.&lt;/p&gt;

&lt;p&gt;Today, the project has evolved from an abandoned experiment into a functional foundation that can continue to grow.&lt;/p&gt;




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

&lt;p&gt;GitHub Copilot played an important role throughout the development process.&lt;/p&gt;

&lt;p&gt;It helped accelerate implementation by assisting with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Laravel and Livewire boilerplate generation&lt;/li&gt;
&lt;li&gt;Refactoring repetitive code&lt;/li&gt;
&lt;li&gt;Block rendering improvements&lt;/li&gt;
&lt;li&gt;TailwindCSS UI development&lt;/li&gt;
&lt;li&gt;Exploring alternative implementations during redesign&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than replacing decision-making, Copilot acted as a productivity multiplier, allowing me to spend more time thinking about architecture and less time writing repetitive code.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;For me, this challenge wasn't about shipping a finished product.&lt;/p&gt;

&lt;p&gt;It was about finishing a phase of development.&lt;/p&gt;

&lt;p&gt;Given the available time, I prioritized validating the idea and rebuilding the core functionality instead of focusing on perfect architecture or extensive polishing.&lt;/p&gt;

&lt;p&gt;There is still a lot of work ahead, including improvements to structure, design patterns, developer experience, and overall refinement.&lt;/p&gt;

&lt;p&gt;But the most important milestone has been reached:&lt;/p&gt;

&lt;p&gt;The concept is validated.&lt;/p&gt;

&lt;p&gt;What started as an abandoned idea is now a working prototype and a solid foundation for future development.&lt;/p&gt;

&lt;p&gt;And that, for me, is exactly what the Finish-Up-A-Thon was about.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
    </item>
    <item>
      <title>Will junior developers disappear because of AI?</title>
      <dc:creator>Justino Contingo </dc:creator>
      <pubDate>Fri, 05 Jun 2026 20:19:09 +0000</pubDate>
      <link>https://dev.to/justino_contingo/will-junior-developers-disappear-because-of-ai-50of</link>
      <guid>https://dev.to/justino_contingo/will-junior-developers-disappear-because-of-ai-50of</guid>
      <description>&lt;p&gt;Over the past few months, I've seen many people claim that junior developers will disappear because of AI.&lt;/p&gt;

&lt;p&gt;I'm not convinced that's what's happening.&lt;/p&gt;

&lt;p&gt;My impression is that we're witnessing something different: a technological transition that may redefine how software development is learned and practiced.&lt;/p&gt;

&lt;p&gt;This isn't the first time the industry has gone through a major shift.&lt;/p&gt;

&lt;p&gt;Personal computers changed how people worked.&lt;/p&gt;

&lt;p&gt;The Internet changed how people accessed information.&lt;/p&gt;

&lt;p&gt;Smartphones changed how people interacted with technology.&lt;/p&gt;

&lt;p&gt;None of these innovations eliminated the need for professionals.&lt;/p&gt;

&lt;p&gt;What they did change were the skills that professionals were expected to have.&lt;/p&gt;

&lt;p&gt;That's why I wonder if we're asking the wrong question.&lt;/p&gt;

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

&lt;p&gt;"Will junior developers disappear?"&lt;/p&gt;

&lt;p&gt;Perhaps we should ask:&lt;/p&gt;

&lt;p&gt;"What will it mean to be a junior developer in an AI-assisted world?"&lt;/p&gt;

&lt;p&gt;The traditional distinction between junior, mid-level and senior developers is not just about writing code.&lt;/p&gt;

&lt;p&gt;It reflects differences in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;experience&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;responsibility&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;decision-making&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;understanding of trade-offs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ability to work with uncertainty&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don't see those differences disappearing.&lt;/p&gt;

&lt;p&gt;What may change are the skills expected at each level.&lt;/p&gt;

&lt;p&gt;For example, today it is becoming increasingly common for developers to use AI tools to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;generate code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;explore solutions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;review implementations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;explain concepts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;accelerate routine tasks&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As these tools become part of everyday development, the ability to use them effectively may become a standard expectation rather than a differentiator.&lt;/p&gt;

&lt;p&gt;However, using a tool is not the same as understanding a problem.&lt;/p&gt;

&lt;p&gt;Software development still requires people who can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;understand requirements&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;evaluate solutions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;identify limitations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;make technical decisions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;understand trade-offs&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my experience, AI often makes implementation faster.&lt;/p&gt;

&lt;p&gt;What it doesn't remove is the need for judgment.&lt;/p&gt;

&lt;p&gt;In some situations, it may even make judgment more important.&lt;/p&gt;

&lt;p&gt;A generated solution can work and still be inappropriate for the context.&lt;/p&gt;

&lt;p&gt;A recommendation can be technically correct and still introduce unnecessary complexity.&lt;/p&gt;

&lt;p&gt;These are not problems that disappear simply because code can be generated more quickly.&lt;/p&gt;

&lt;p&gt;For that reason, I don't think we're necessarily witnessing the disappearance of junior developers.&lt;/p&gt;

&lt;p&gt;What I think we may be witnessing is the evolution of what being a junior developer means.&lt;/p&gt;

&lt;p&gt;The industry has adapted to major technological changes before.&lt;/p&gt;

&lt;p&gt;It will likely adapt again.&lt;/p&gt;

&lt;p&gt;The interesting question is not whether developers will disappear.&lt;/p&gt;

&lt;p&gt;It's how the expectations placed on developers will change.&lt;/p&gt;

&lt;p&gt;What do you think?&lt;/p&gt;

&lt;p&gt;Are junior developers disappearing, or are we simply redefining the skills that will be expected from them?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The biggest challenge I've found when using AI for programming</title>
      <dc:creator>Justino Contingo </dc:creator>
      <pubDate>Mon, 01 Jun 2026 07:08:43 +0000</pubDate>
      <link>https://dev.to/justino_contingo/the-biggest-challenge-ive-found-when-using-ai-for-programming-391</link>
      <guid>https://dev.to/justino_contingo/the-biggest-challenge-ive-found-when-using-ai-for-programming-391</guid>
      <description>&lt;p&gt;The hardest part of using AI for programming isn't writing prompts&lt;/p&gt;

&lt;p&gt;I've been using AI tools quite frequently during software development.&lt;/p&gt;

&lt;p&gt;They help with many tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;exploring ideas&lt;/li&gt;
&lt;li&gt;generating boilerplate code&lt;/li&gt;
&lt;li&gt;reviewing implementations&lt;/li&gt;
&lt;li&gt;explaining concepts&lt;/li&gt;
&lt;li&gt;proposing alternative solutions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of the time, getting an answer is not the difficult part.&lt;/p&gt;

&lt;p&gt;The difficulty starts after the answer is generated.&lt;/p&gt;

&lt;p&gt;A generated solution can look convincing.&lt;/p&gt;

&lt;p&gt;It can compile.&lt;/p&gt;

&lt;p&gt;It can pass tests.&lt;/p&gt;

&lt;p&gt;It can even solve the immediate problem.&lt;/p&gt;

&lt;p&gt;But that doesn't necessarily mean it's the right solution.&lt;/p&gt;

&lt;p&gt;Recently, I asked an AI assistant for help solving a programming problem. The generated solution worked and produced the expected output. At first glance, it seemed completely reasonable.&lt;/p&gt;

&lt;p&gt;However, after reviewing it more carefully, I realized that the implementation introduced unnecessary complexity that wasn't required by the problem. The solution was technically correct, but not appropriate for the context.&lt;/p&gt;

&lt;p&gt;That experience reinforced an important lesson:&lt;/p&gt;

&lt;p&gt;A working solution and a good solution are not always the same thing.&lt;/p&gt;

&lt;p&gt;Questions often remain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does it actually solve the problem I'm trying to solve?&lt;/li&gt;
&lt;li&gt;Is it aligned with the requirements?&lt;/li&gt;
&lt;li&gt;What trade-offs does it introduce?&lt;/li&gt;
&lt;li&gt;Will it still make sense as the system grows?&lt;/li&gt;
&lt;li&gt;Is there a simpler approach?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where software engineering still matters.&lt;/p&gt;

&lt;p&gt;The value isn't only in producing code.&lt;/p&gt;

&lt;p&gt;It's in understanding the problem well enough to evaluate whether a proposed solution makes sense.&lt;/p&gt;

&lt;p&gt;The more I use AI, the more I realize that these tools don't remove the need for knowledge and critical thinking.&lt;/p&gt;

&lt;p&gt;In some ways, they make them even more important.&lt;/p&gt;

&lt;p&gt;Without context, it's easy to accept an answer simply because it looks correct.&lt;/p&gt;

&lt;p&gt;With context, you can challenge assumptions, identify limitations, and adapt solutions to the actual problem.&lt;/p&gt;

&lt;p&gt;For me, AI has been most useful not as a replacement for understanding, but as an accelerator for it.&lt;/p&gt;

&lt;p&gt;It can generate possibilities.&lt;/p&gt;

&lt;p&gt;But deciding which possibility is appropriate still requires analysis and judgment.&lt;/p&gt;

&lt;p&gt;That's been my experience so far.&lt;/p&gt;

&lt;p&gt;What has been the biggest challenge you've encountered when using AI for software development?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Debugging Node.js? console.log isn't enough anymore</title>
      <dc:creator>Justino Contingo </dc:creator>
      <pubDate>Thu, 28 May 2026 10:17:30 +0000</pubDate>
      <link>https://dev.to/justino_contingo/debugging-nodejs-consolelog-isnt-enough-anymore-1o6p</link>
      <guid>https://dev.to/justino_contingo/debugging-nodejs-consolelog-isnt-enough-anymore-1o6p</guid>
      <description>&lt;p&gt;We've all been there.&lt;/p&gt;

&lt;p&gt;Deeply nested objects. Circular references. Repeated structures.&lt;/p&gt;

&lt;p&gt;At some point, you stop debugging and start trying to understand what you're even looking at.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;DumpKit&lt;/strong&gt; — a small debugging tool inspired by Laravel's &lt;code&gt;dump()&lt;/code&gt; and &lt;code&gt;dd()&lt;/code&gt;, designed for Node.js.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;dump&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dumpkit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;complexObject&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It handles common debugging pain points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safe handling of circular references&lt;/li&gt;
&lt;li&gt;Support for shared references&lt;/li&gt;
&lt;li&gt;Large and deeply nested structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also inspect data in different formats:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;view&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tree&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;   &lt;span class="c1"&gt;// hierarchical view&lt;/span&gt;
&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;view&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;table&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;  &lt;span class="c1"&gt;// structured collections&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another useful feature is &lt;strong&gt;dump and pause (dp)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;dp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Execution pauses until you press ENTER&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes it easier to inspect application state at critical points in execution.&lt;/p&gt;

&lt;p&gt;DumpKit also exposes a structured internal representation (&lt;code&gt;AnalysisNode&lt;/code&gt;), which can be used to build custom debugging tools on top of it.&lt;/p&gt;

&lt;p&gt;DumpKit doesn't replace the console.&lt;/p&gt;

&lt;p&gt;It simply gives you more clarity when complexity grows beyond simple logs.&lt;/p&gt;

&lt;p&gt;Debugging isn't just about finding bugs — it's about understanding structure.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Justino-code/dumpkit" rel="noopener noreferrer"&gt;https://github.com/Justino-code/dumpkit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>debug</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
