<?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: Pavel</title>
    <description>The latest articles on DEV Community by Pavel (@pashaigood).</description>
    <link>https://dev.to/pashaigood</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%2F428709%2Fbae51dba-123d-4e27-98df-14892e2bc504.jpeg</url>
      <title>DEV Community: Pavel</title>
      <link>https://dev.to/pashaigood</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pashaigood"/>
    <language>en</language>
    <item>
      <title>Vibe Game Engine: The Road to AI-Editable Game Dev 🚀</title>
      <dc:creator>Pavel</dc:creator>
      <pubDate>Sun, 11 May 2025 19:58:55 +0000</pubDate>
      <link>https://dev.to/pashaigood/vibe-game-engine-the-road-to-ai-editable-game-dev-5ag</link>
      <guid>https://dev.to/pashaigood/vibe-game-engine-the-road-to-ai-editable-game-dev-5ag</guid>
      <description>&lt;p&gt;&lt;strong&gt;AI Chaos &amp;amp; Experiment:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When I started building an engine with an AI assistant, I thought - it would be cool, fast, convenient.&lt;/li&gt;
&lt;li&gt;But it turned out to be a constant experiment where I never know what will happen tomorrow.&lt;/li&gt;
&lt;li&gt;Sometimes AI generates brilliant ideas, sometimes it goes off the rails, and I sit there thinking: can you even build something truly usable with it?&lt;/li&gt;
&lt;li&gt;Sometimes it feels like I'm not coding, but managing the chaos my own AI partner throws at me.&lt;/li&gt;
&lt;li&gt;This article is an honest experiment diary.&lt;/li&gt;
&lt;li&gt;No guarantee of success, but full of vibe and surprises. 🎲&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now - how I got here, and why AI is even involved... 🤖&lt;/p&gt;

&lt;h2&gt;
  
  
  The Birth of an Idea: "Make a Simulator of Myself? Why Not!" 💡
&lt;/h2&gt;

&lt;p&gt;It all started with a sudden thought: "Why not make a programmer life simulator using a new approach - &lt;strong&gt;Vibecoding&lt;/strong&gt;?" 💭&lt;/p&gt;

&lt;p&gt;I wrote the first lines of code in seconds, and suddenly the game was almost ready.&lt;br&gt;
The first "player" appeared, his sprite - and the outlines of a future virtual world started to take shape.&lt;br&gt;
But that was just the beginning of my journey into the world of "vibecoding".&lt;br&gt;
The idea seemed so original and meta-cool that the decision came by itself: for a game created in such an unusual way, you need your own unique engine.&lt;br&gt;
Modern engines aren't suitable for working with AI assistants: their internals are closed, and AI can't fully control or change anything inside.&lt;br&gt;
So I wanted to try making something of my own - open for experiments and true AI collaboration. 🛠&lt;/p&gt;

&lt;h2&gt;
  
  
  Vibecoding in Action: When AI Is Your Co-Author (Sometimes Very Stubborn) 🤝
&lt;/h2&gt;

&lt;p&gt;An essential part of "vibecoding" is its unpredictability.&lt;br&gt;
Sometimes, the AI assistant enthusiastically generates hundreds of lines of code for a new feature, but... it just doesn't work.&lt;br&gt;
At all.&lt;br&gt;
So I sit there, analyzing this monumental labor of artificial intelligence, trying to find the bug.&lt;br&gt;
Then, after long reflection (and maybe more than one cup of coffee ☕), I spot some silly detail: a variable declared in the wrong scope, or one line of code conflicting with another.&lt;br&gt;
I move that cursed variable to the right scope - and, miracle, everything magically comes to life!&lt;br&gt;
In those moments, you feel like both a detective 🕵 and a bit of a wizard 🧙, realizing that even the most advanced AI can't fully replace human intuition and experience.&lt;br&gt;
But this iterative debugging and problem-solving process together is the real "vibe". ✨&lt;/p&gt;

&lt;p&gt;Sometimes arguing with AI becomes a sport of its own: it gets lazy, acts dumb, you want to curse at it, and some models (I think it was gemeni) can even sass you back.&lt;br&gt;
At times like these, you realize working with AI isn't just about code - it's about nerves, patience, and a sense of humor. 😅&lt;/p&gt;

&lt;p&gt;What annoys me most is when the model does something you didn't expect, you point it out, and it replies: "I did as you asked" and even quotes your own words.&lt;br&gt;
That's when you really want to turn off the computer and go drink vodka. 🍵&lt;/p&gt;

&lt;p&gt;I work in parallel with all the latest models: sonnet 3.7, gemeni 2.5, gpt 4.1.&lt;br&gt;
And honestly, only sonnet and gemeni let you actually write code and get sensible answers - the rest either do nothing or try to build a parallel architecture for a tiny feature. 🤦&lt;/p&gt;

&lt;p&gt;Sometimes you spend hours trying to "persuade" AI to generate something that works, editing, regenerating, editing again...&lt;br&gt;
And at some point you realize it's more efficient to just hit "reset", delete all the AI's creative output, and start over.&lt;br&gt;
Or, with a deep sigh, just sit down and write that piece of code yourself, old-school.&lt;br&gt;
That's also "vibecoding" - mental flexibility and knowing when to trust the machine, and when to trust your own hands and head. 💪&lt;/p&gt;

&lt;h2&gt;
  
  
  What Came Out of It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The transformation system&lt;/strong&gt; - the foundation of positioning, rotation, and scaling objects - went through many iterations.
While this is standard functionality for any engine, building it together with AI was unique in its own way.
Modern models don't understand the concept of space.
At that moment, the illusion of intelligence collapses: you realize it's just a token sequence generator - formally correct, but with no idea how it exists in the real world.
In the end, I managed to make components responsible for visualization (whether static images or animated sprites) automatically sync with transformation changes, ensuring system responsiveness. 🖼&lt;/li&gt;
&lt;li&gt;Then came the turn for &lt;strong&gt;the physics system&lt;/strong&gt; - again, no understanding of world concepts or how to connect it to transformations.
After a day of "trial and error", I just sat down and wrote it myself. ⚡&lt;/li&gt;
&lt;li&gt;And what's an engine without its own &lt;strong&gt;editor&lt;/strong&gt;?
Me and AI created a set of tools to make the development process as comfortable as possible - here, AI was actually great, though I had to constantly nudge it to reuse existing code instead of rewriting all the styles from scratch every time:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Object Inspector:&lt;/strong&gt; Lets you deeply inspect any game object, view its components (like transform or sprite), and quickly tweak their properties.
New components can be added "on the fly" or unnecessary ones removed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asset Manager:&lt;/strong&gt; A handy panel for managing graphics and other project resources.
Assets can be easily dragged right onto the game scene.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprite Sheet Editor:&lt;/strong&gt; My special pride!
A separate window where you can upload an image (sprite sheet) and visually "slice" it into frames for animation.
You can create frames, change their size and order, and save this info.
The sprite component then uses this data for smooth animation.
No more tedious manual frame coordinate setup!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gizmo:&lt;/strong&gt; An interactive tool on the scene for visually manipulating selected objects: move, rotate, scale.
I paid special attention to making Gizmo intuitive and working correctly with the object's pivot point.
You can probably guess - the model had no idea how to make this work.
But after the 10th regeneration, it more or less worked. 🛠&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So What's the Result? An Engine Born of Vibe and Code! 🎮
&lt;/h2&gt;

&lt;p&gt;The result is not just a pile of code, but a full-fledged &lt;strong&gt;game engine&lt;/strong&gt;!&lt;br&gt;
Yeah, maybe it's not perfect, and its history has moments that make you smile, but it's mine, unique, built on pure enthusiasm, a flow of inspiration, and close collaboration with an AI assistant.&lt;/p&gt;

&lt;p&gt;This engine is living proof that "vibecoding" with AI isn't just a buzzword, but a whole development philosophy.&lt;br&gt;
It lets you not be afraid of experiments, boldly face mistakes (they're part of the journey!), and move forward with confidence.&lt;br&gt;
It's a process where it's not scary to try new things, even if the intermediate results sometimes look... eccentric.&lt;/p&gt;

&lt;p&gt;The main thing is the creative search itself, that unique "vibe" from creating something new, something yours, together with AI.&lt;br&gt;
And this engine is the brightest proof of that. ✨&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No-Drama Finale:&lt;/strong&gt;&lt;br&gt;
So that's the kind of vibe engine I ended up with.&lt;br&gt;
Not perfect, not by the book, but mine - with bugs, memes, and a ton of pain to share with friends over pizza. 🍕&lt;/p&gt;

&lt;p&gt;And yeah, not a single system is 100% finished: there are bugs and logic dead ends everywhere, and fixing them means it's easier to just rewrite everything from scratch.&lt;br&gt;
Siccing an agent on refactoring isn't a great idea either: it'll run out of context or just lose the "thread of reasoning". 🤷&lt;/p&gt;

&lt;p&gt;If you've read this far - respect!&lt;br&gt;
Don't be afraid to experiment, argue with AI, sometimes wipe everything and start over.&lt;br&gt;
That's the real joy of vibecoding.&lt;br&gt;
And if you've had your own epic or funny moments with AI - be sure to share them in the comments.&lt;br&gt;
Let's collect a gallery of vibey stories and laugh together! 😂&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vibecoding</category>
      <category>gamedev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Tired of Fake Code Assistants... 😠🌈</title>
      <dc:creator>Pavel</dc:creator>
      <pubDate>Tue, 28 Mar 2023 10:39:00 +0000</pubDate>
      <link>https://dev.to/pashaigood/tired-of-fake-code-assistants-36j1</link>
      <guid>https://dev.to/pashaigood/tired-of-fake-code-assistants-36j1</guid>
      <description>&lt;p&gt;I've tried countless code assistants, but most of them just seem to slap ChatGPT into my code editor and call it a day.&lt;br&gt;
They claim to be "revolutionary" and "life-changing," but in reality, I could just use ChatGPT by myself. 🙂&lt;/p&gt;

&lt;p&gt;How a real code assistant should work: You share your coding needs, and - bam - it whips up flawless code without breaking a sweat!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9bQy2SaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/em0e4c6sd6fjzilcpw4o.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9bQy2SaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/em0e4c6sd6fjzilcpw4o.gif" alt="AltQ. simple example" width="794" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oh, you need a function? Sure, AltQ will whip one up just for you. And wait, you want a code change? Well, of course, AltQ will cater to your every whim and modify the code exactly as you desire. Because that's what a &lt;em&gt;real&lt;/em&gt; code assistant should do, right? 😉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B1Nv60cw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://github.com/pashaigood/alt-q/raw/HEAD/images/preview.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B1Nv60cw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://github.com/pashaigood/alt-q/raw/HEAD/images/preview.gif" alt="AltQ. Write an change" width="639" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, here's the &lt;a href="https://marketplace.visualstudio.com/items?itemName=pashaigood.alt-q"&gt;link&lt;/a&gt;, folks! You know what to do.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>chatgpt</category>
      <category>gpt3</category>
    </item>
    <item>
      <title>Fear Not the Rise of AI: Meet AltQ, Your New Coding Companion, and Unlock Endless Opportunities!</title>
      <dc:creator>Pavel</dc:creator>
      <pubDate>Mon, 27 Mar 2023 09:02:29 +0000</pubDate>
      <link>https://dev.to/pashaigood/fear-not-the-rise-of-ai-meet-altq-your-new-coding-companion-and-unlock-endless-opportunities-4ake</link>
      <guid>https://dev.to/pashaigood/fear-not-the-rise-of-ai-meet-altq-your-new-coding-companion-and-unlock-endless-opportunities-4ake</guid>
      <description>&lt;h2&gt;
  
  
  Meet AltQ, Your New Coding Buddy
&lt;/h2&gt;

&lt;p&gt;Introducing AltQ, the code assistant so cool, it'll make you question if you even need coffee to code anymore.&lt;br&gt;
It's a Visual Code extension that seamlessly integrates with your coding environment.&lt;/p&gt;

&lt;p&gt;Picture this: You tell AltQ what you need, and&lt;br&gt;
&lt;em&gt;poof&lt;/em&gt; – it spits out the code like it's no big deal!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9bQy2SaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/em0e4c6sd6fjzilcpw4o.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9bQy2SaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/em0e4c6sd6fjzilcpw4o.gif" alt="AltQ. simple example" width="794" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AltQ is like a programmer's dream come true – it understands human lingo and turns it into code.&lt;/p&gt;

&lt;p&gt;AltQ  ensures a smooth coding experience, making it feel like you have your own dedicated protégé ready to execute any task you assign.&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ in Action: Creating a Tank Game Together Like a Coding Dream Team
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9dDmTGeY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42s4fwhhyb7z5njlk7ag.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9dDmTGeY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42s4fwhhyb7z5njlk7ag.gif" alt="AltQ. Tank Game made in coop." width="660" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get ready to be amazed, because AltQ and I just joined forces to create a fantastic little tank game, complete with user controls, enemy AI, game states, and a minimalistic interface!&lt;/p&gt;

&lt;p&gt;But wait, there's more: we didn't just stop at building the game elements, we also whipped up a simple game engine to bring our tank-tastic vision to life.&lt;/p&gt;

&lt;p&gt;It was like having a coding sidekick who knew exactly what I wanted, anticipating my needs and helping me blast through obstacles like a well-aimed tank shot.&lt;/p&gt;

&lt;p&gt;With AltQ's guidance and support, we breezed through the development process, proving that when it comes to coding, two heads (or one human and one AI) are definitely better than one!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WCxtQWT8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3stfw867wetxxfjik4ts.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WCxtQWT8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3stfw867wetxxfjik4ts.gif" alt="AltQ. Dev Process" width="660" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ vs. Copilot and Rest: A Unique Approach to Code Assistance.
&lt;/h2&gt;

&lt;p&gt;Other code assistants like Copilot and ChatGPT-integrated Visual Code have their charm, but AltQ brings a unique flavor to the coding fiesta.&lt;/p&gt;

&lt;p&gt;AltQ isn't just about offering snippets or chatting; it's about creating a code assistant that truly understands your project and your goals.&lt;/p&gt;

&lt;p&gt;The key differentiator: AltQ dives deep into the context of your work, grasping the essence of your project and tackling routine problems with ease.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready, Set, AltQ: A Quick Guide to Installation and Setup
&lt;/h2&gt;

&lt;p&gt;Eager to experience the awesomeness of AltQ? Here's your handy-dandy guide to getting it installed and configured for Visual Code. It's like setting up a playdate with your new AI buddy!&lt;/p&gt;

&lt;p&gt;Step 1: Head over to the Visual Code Marketplace and search for the AltQ extension. Once you find it, click the "Install" button to add it to your coding arsenal.&lt;/p&gt;

&lt;p&gt;Step 2: To make the magic happen, you'll need an &lt;a href="https://platform.openai.com/account/api-keys"&gt;API key from OpenAI&lt;/a&gt;. Visit the OpenAI website, sign up or log in, and get your hands on that precious key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pgmxecmX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4gt93iwdbm98tjvaq848.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pgmxecmX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4gt93iwdbm98tjvaq848.png" alt="Get Your API Key" width="805" height="611"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: With your API key in hand, it's time to configure AltQ. You can do this in one of two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Option A: Dive into the settings of Visual Code, locate the AltQ extension settings, and enter your API key.&lt;/li&gt;
&lt;li&gt;Option B: If you're more of a command prompt kind of coder, you can also enter your API key the first time you run the AltQ prompt command.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QOxKIhFz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/numwe2ibhn4ylcvqcmx8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QOxKIhFz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/numwe2ibhn4ylcvqcmx8.png" alt="Set Your API Key" width="807" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's it! Simply hold the &lt;code&gt;Alt key + Q&lt;/code&gt;, and you're all set to start your coding adventure with AltQ, your trusty AI sidekick. Happy programming!&lt;/p&gt;

&lt;h2&gt;
  
  
  Can't Beat AI? Join 'em, Lead 'em, and Rock On!
&lt;/h2&gt;

&lt;p&gt;Addressing the elephant in the room: the fear of job loss due to AI (like AltQ) stealing the coding thunder.&lt;/p&gt;

&lt;p&gt;No need to panic! The focus shifts from manual coding to strategic thinking and problem-solving – it's time to level up.&lt;/p&gt;

&lt;p&gt;Embrace the change, hone new skills, and become a trailblazer in the AI-powered world of programming.&lt;/p&gt;

&lt;p&gt;Highlighting one of AltQ's killer features: outsourcing memory-intensive tasks to AI, so you can focus on being creative.&lt;br&gt;
Human memory has limits, but with code assistants like AltQ, you can break those boundaries and reach new heights in programming.&lt;br&gt;
Highlighting one of AltQ's killer features: outsourcing memory-intensive tasks to AI, so you can focus on being creative.&lt;br&gt;
Human memory has limits, but with code assistants like AltQ, you can break those boundaries and reach new heights in programming.&lt;br&gt;
Let AI handle the details and remember countless entities, while you bring your A-game to the table and innovate like never before.&lt;/p&gt;

&lt;p&gt;AI assistants changing the game, and it's time to jump on board the coding revolution!&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ Alpha: A Work in Progress with Big Dreams and Plans
&lt;/h2&gt;

&lt;p&gt;Before you dive headfirst into the world of AltQ, let's take a moment to remember that it's still in its early alpha stage. Like a newborn kitten finding its footing, AltQ has some growing to do.&lt;/p&gt;

&lt;p&gt;Currently, AltQ relies on the GPT-3 model to generate answers. While it's quite impressive, it's a bit outdated and might require some patience and persistence to achieve the desired results.&lt;/p&gt;

&lt;p&gt;But fear not, fellow coding enthusiasts! I've got grand plans to refine the engine and improve the entire process – this is just the first step on the exciting journey.&lt;/p&gt;

&lt;p&gt;So, buckle up and join me as we help AltQ evolve from an alpha version into the game-changing code assistant!&lt;/p&gt;

&lt;h2&gt;
  
  
  Awaiting GPT-4: AltQ's Bright Future and Our Collective Efforts
&lt;/h2&gt;

&lt;p&gt;While the current GPT-3.5 API isn't quite the perfect fit for AltQ, the future is looking bright! I've had the chance to tinker with GPT-4, and let me tell you – it's downright incredible.&lt;/p&gt;

&lt;p&gt;Unfortunately, my GPT-4 API access is still on the waitlist.&lt;br&gt;
Let's make some noise! Together, we can raise awareness about AltQ, and with a little buzz, we might just get that API access sooner rather than later.&lt;/p&gt;

&lt;p&gt;So, spread the word, share your excitement, and let's help AltQ reach its full potential with the power of GPT-4. The future of AI-driven code assistance awaits!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of AltQ: A Code Assistant That Knows Your Project Inside Out
&lt;/h2&gt;

&lt;p&gt;Picture this: AltQ becomes your go-to companion, fully understanding your project, knowing the ins and outs of each line of code, and grasping the impact of every variable.&lt;/p&gt;

&lt;p&gt;With its incredible AI capabilities, AltQ will create required features and project artifacts on your behalf, making your coding life a whole lot easier.&lt;/p&gt;

&lt;p&gt;But it doesn't stop there – AltQ will free up your mental bandwidth, allowing you to focus on tackling the truly complex challenges and making groundbreaking discoveries.&lt;/p&gt;

&lt;p&gt;Together, let's turn this vision into reality and shape the future of AI-driven code assistance with AltQ as our trusty sidekick – not a job-stealing "Skynet", but a helpful companion for all developers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=pashaigood.alt-q&amp;amp;ssr=false#overview"&gt;AltQ&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gpt3</category>
      <category>chatgpt</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AltQ: GPT Power in Exploring the Possibilities of a Personal Code Assistant</title>
      <dc:creator>Pavel</dc:creator>
      <pubDate>Sun, 26 Mar 2023 09:18:26 +0000</pubDate>
      <link>https://dev.to/pashaigood/altq-gpt-power-in-exploring-the-possibilities-of-a-personal-code-assistant-3937</link>
      <guid>https://dev.to/pashaigood/altq-gpt-power-in-exploring-the-possibilities-of-a-personal-code-assistant-3937</guid>
      <description>&lt;h2&gt;
  
  
  Meet AltQ, Your New Coding Buddy
&lt;/h2&gt;

&lt;p&gt;Introducing AltQ, the code assistant so cool, it'll make you question if you even need coffee to code anymore.&lt;br&gt;
It's a Visual Code extension that seamlessly integrates with your coding environment.&lt;/p&gt;

&lt;p&gt;Picture this: You tell AltQ what you need, and&lt;br&gt;
&lt;em&gt;poof&lt;/em&gt; – it spits out the code like it's no big deal!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9bQy2SaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/em0e4c6sd6fjzilcpw4o.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9bQy2SaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/em0e4c6sd6fjzilcpw4o.gif" alt="AltQ. simple example" width="794" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AltQ is like a programmer's dream come true – it understands human lingo and turns it into code.&lt;/p&gt;

&lt;p&gt;AltQ  ensures a smooth coding experience, making it feel like you have your own dedicated protégé ready to execute any task you assign.&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ in Action: Creating a Tank Game Together Like a Coding Dream Team
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9dDmTGeY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42s4fwhhyb7z5njlk7ag.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9dDmTGeY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42s4fwhhyb7z5njlk7ag.gif" alt="AltQ. Tank Game made in coop." width="660" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get ready to be amazed, because AltQ and I just joined forces to create a fantastic little tank game, complete with user controls, enemy AI, game states, and a minimalistic interface!&lt;/p&gt;

&lt;p&gt;But wait, there's more: we didn't just stop at building the game elements, we also whipped up a simple game engine to bring our tank-tastic vision to life.&lt;/p&gt;

&lt;p&gt;It was like having a coding sidekick who knew exactly what I wanted, anticipating my needs and helping me blast through obstacles like a well-aimed tank shot.&lt;/p&gt;

&lt;p&gt;With AltQ's guidance and support, we breezed through the development process, proving that when it comes to coding, two heads (or one human and one AI) are definitely better than one!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WCxtQWT8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3stfw867wetxxfjik4ts.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WCxtQWT8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3stfw867wetxxfjik4ts.gif" alt="AltQ. Dev Process" width="660" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ vs. Copilot and Rest: A Unique Approach to Code Assistance.
&lt;/h2&gt;

&lt;p&gt;Other code assistants like Copilot and ChatGPT-integrated Visual Code have their charm, but AltQ brings a unique flavor to the coding fiesta.&lt;/p&gt;

&lt;p&gt;AltQ isn't just about offering snippets or chatting; it's about creating a code assistant that truly understands your project and your goals.&lt;/p&gt;

&lt;p&gt;The key differentiator: AltQ dives deep into the context of your work, grasping the essence of your project and tackling routine problems with ease.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready, Set, AltQ: A Quick Guide to Installation and Setup
&lt;/h2&gt;

&lt;p&gt;Eager to experience the awesomeness of AltQ? Here's your handy-dandy guide to getting it installed and configured for Visual Code. It's like setting up a playdate with your new AI buddy!&lt;/p&gt;

&lt;p&gt;Step 1: Head over to the Visual Code Marketplace and search for the AltQ extension. Once you find it, click the "Install" button to add it to your coding arsenal.&lt;/p&gt;

&lt;p&gt;Step 2: To make the magic happen, you'll need an &lt;a href="https://platform.openai.com/account/api-keys"&gt;API key from OpenAI&lt;/a&gt;. Visit the OpenAI website, sign up or log in, and get your hands on that precious key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pgmxecmX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4gt93iwdbm98tjvaq848.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pgmxecmX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4gt93iwdbm98tjvaq848.png" alt="Get Your API Key" width="805" height="611"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: With your API key in hand, it's time to configure AltQ. You can do this in one of two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Option A: Dive into the settings of Visual Code, locate the AltQ extension settings, and enter your API key.&lt;/li&gt;
&lt;li&gt;Option B: If you're more of a command prompt kind of coder, you can also enter your API key the first time you run the AltQ prompt command.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QOxKIhFz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/numwe2ibhn4ylcvqcmx8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QOxKIhFz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/numwe2ibhn4ylcvqcmx8.png" alt="Set Your API Key" width="807" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's it! Simply hold the &lt;code&gt;Alt key + Q&lt;/code&gt;, and you're all set to start your coding adventure with AltQ, your trusty AI sidekick. Happy programming!&lt;/p&gt;

&lt;h2&gt;
  
  
  Can't Beat AI? Join 'em, Lead 'em, and Rock On!
&lt;/h2&gt;

&lt;p&gt;Addressing the elephant in the room: the fear of job loss due to AI (like AltQ) stealing the coding thunder.&lt;/p&gt;

&lt;p&gt;No need to panic! The focus shifts from manual coding to strategic thinking and problem-solving – it's time to level up.&lt;/p&gt;

&lt;p&gt;Embrace the change, hone new skills, and become a trailblazer in the AI-powered world of programming.&lt;/p&gt;

&lt;p&gt;Highlighting one of AltQ's killer features: outsourcing memory-intensive tasks to AI, so you can focus on being creative.&lt;br&gt;
Human memory has limits, but with code assistants like AltQ, you can break those boundaries and reach new heights in programming.&lt;br&gt;
Highlighting one of AltQ's killer features: outsourcing memory-intensive tasks to AI, so you can focus on being creative.&lt;br&gt;
Human memory has limits, but with code assistants like AltQ, you can break those boundaries and reach new heights in programming.&lt;br&gt;
Let AI handle the details and remember countless entities, while you bring your A-game to the table and innovate like never before.&lt;/p&gt;

&lt;p&gt;AI assistants changing the game, and it's time to jump on board the coding revolution!&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ Alpha: A Work in Progress with Big Dreams and Plans
&lt;/h2&gt;

&lt;p&gt;Before you dive headfirst into the world of AltQ, let's take a moment to remember that it's still in its early alpha stage. Like a newborn kitten finding its footing, AltQ has some growing to do.&lt;/p&gt;

&lt;p&gt;Currently, AltQ relies on the GPT-3 model to generate answers. While it's quite impressive, it's a bit outdated and might require some patience and persistence to achieve the desired results.&lt;/p&gt;

&lt;p&gt;But fear not, fellow coding enthusiasts! I've got grand plans to refine the engine and improve the entire process – this is just the first step on the exciting journey.&lt;/p&gt;

&lt;p&gt;So, buckle up and join me as we help AltQ evolve from an alpha version into the game-changing code assistant!&lt;/p&gt;

&lt;h2&gt;
  
  
  Awaiting GPT-4: AltQ's Bright Future and Our Collective Efforts
&lt;/h2&gt;

&lt;p&gt;While the current GPT-3.5 API isn't quite the perfect fit for AltQ, the future is looking bright! I've had the chance to tinker with GPT-4, and let me tell you – it's downright incredible.&lt;/p&gt;

&lt;p&gt;Unfortunately, my GPT-4 API access is still on the waitlist.&lt;br&gt;
Let's make some noise! Together, we can raise awareness about AltQ, and with a little buzz, we might just get that API access sooner rather than later.&lt;/p&gt;

&lt;p&gt;So, spread the word, share your excitement, and let's help AltQ reach its full potential with the power of GPT-4. The future of AI-driven code assistance awaits!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of AltQ: A Code Assistant That Knows Your Project Inside Out
&lt;/h2&gt;

&lt;p&gt;Picture this: AltQ becomes your go-to companion, fully understanding your project, knowing the ins and outs of each line of code, and grasping the impact of every variable.&lt;/p&gt;

&lt;p&gt;With its incredible AI capabilities, AltQ will create required features and project artifacts on your behalf, making your coding life a whole lot easier.&lt;/p&gt;

&lt;p&gt;But it doesn't stop there – AltQ will free up your mental bandwidth, allowing you to focus on tackling the truly complex challenges and making groundbreaking discoveries.&lt;/p&gt;

&lt;p&gt;Together, let's turn this vision into reality and shape the future of AI-driven code assistance with AltQ as our trusty sidekick – not a job-stealing "Skynet", but a helpful companion for all developers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=pashaigood.alt-q&amp;amp;ssr=false#overview"&gt;AltQ&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AltQ Alpha: Exploring the Possibilities of a Personal Code Assistant</title>
      <dc:creator>Pavel</dc:creator>
      <pubDate>Sat, 25 Mar 2023 23:12:00 +0000</pubDate>
      <link>https://dev.to/pashaigood/altq-alpha-exploring-the-possibilities-of-a-personal-code-assistant-44hp</link>
      <guid>https://dev.to/pashaigood/altq-alpha-exploring-the-possibilities-of-a-personal-code-assistant-44hp</guid>
      <description>&lt;h2&gt;
  
  
  Meet AltQ, Your New Coding Buddy
&lt;/h2&gt;

&lt;p&gt;Introducing AltQ, the code assistant so cool, it'll make you question if you even need coffee to code anymore.&lt;br&gt;
It's a Visual Code extension that seamlessly integrates with your coding environment.&lt;/p&gt;

&lt;p&gt;Picture this: You tell AltQ what you need, and&lt;br&gt;
&lt;em&gt;poof&lt;/em&gt; – it spits out the code like it's no big deal!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9bQy2SaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/em0e4c6sd6fjzilcpw4o.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9bQy2SaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/em0e4c6sd6fjzilcpw4o.gif" alt="AltQ. simple example" width="794" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AltQ is like a programmer's dream come true – it understands human lingo and turns it into code.&lt;/p&gt;

&lt;p&gt;AltQ  ensures a smooth coding experience, making it feel like you have your own dedicated protégé ready to execute any task you assign.&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ in Action: Creating a Tank Game Together Like a Coding Dream Team
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9dDmTGeY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42s4fwhhyb7z5njlk7ag.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9dDmTGeY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42s4fwhhyb7z5njlk7ag.gif" alt="AltQ. Tank Game made in coop." width="660" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get ready to be amazed, because AltQ and I just joined forces to create a fantastic little tank game, complete with user controls, enemy AI, game states, and a minimalistic interface!&lt;/p&gt;

&lt;p&gt;But wait, there's more: we didn't just stop at building the game elements, we also whipped up a simple game engine to bring our tank-tastic vision to life.&lt;/p&gt;

&lt;p&gt;It was like having a coding sidekick who knew exactly what I wanted, anticipating my needs and helping me blast through obstacles like a well-aimed tank shot.&lt;/p&gt;

&lt;p&gt;With AltQ's guidance and support, we breezed through the development process, proving that when it comes to coding, two heads (or one human and one AI) are definitely better than one!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WCxtQWT8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3stfw867wetxxfjik4ts.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WCxtQWT8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3stfw867wetxxfjik4ts.gif" alt="AltQ. Dev Process" width="660" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ vs. Copilot and Rest: A Unique Approach to Code Assistance.
&lt;/h2&gt;

&lt;p&gt;Other code assistants like Copilot and ChatGPT-integrated Visual Code have their charm, but AltQ brings a unique flavor to the coding fiesta.&lt;/p&gt;

&lt;p&gt;AltQ isn't just about offering snippets or chatting; it's about creating a code assistant that truly understands your project and your goals.&lt;/p&gt;

&lt;p&gt;The key differentiator: AltQ dives deep into the context of your work, grasping the essence of your project and tackling routine problems with ease.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready, Set, AltQ: A Quick Guide to Installation and Setup
&lt;/h2&gt;

&lt;p&gt;Eager to experience the awesomeness of AltQ? Here's your handy-dandy guide to getting it installed and configured for Visual Code. It's like setting up a playdate with your new AI buddy!&lt;/p&gt;

&lt;p&gt;Step 1: Head over to the Visual Code Marketplace and search for the AltQ extension. Once you find it, click the "Install" button to add it to your coding arsenal.&lt;/p&gt;

&lt;p&gt;Step 2: To make the magic happen, you'll need an API key from OpenAI. Visit the OpenAI website, sign up or log in, and get your hands on that precious key.&lt;/p&gt;

&lt;p&gt;Step 3: With your API key in hand, it's time to configure AltQ. You can do this in one of two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Option A: Dive into the settings of Visual Code, locate the AltQ extension settings, and enter your API key.&lt;/li&gt;
&lt;li&gt;Option B: If you're more of a command prompt kind of coder, you can also enter your API key the first time you run the AltQ prompt command.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that's it! Simply hold the &lt;code&gt;Alt key + Q&lt;/code&gt;, and you're all set to start your coding adventure with AltQ, your trusty AI sidekick. Happy programming!&lt;/p&gt;

&lt;h2&gt;
  
  
  Can't Beat AI? Join 'em, Lead 'em, and Rock On!
&lt;/h2&gt;

&lt;p&gt;Addressing the elephant in the room: the fear of job loss due to AI (like AltQ) stealing the coding thunder.&lt;/p&gt;

&lt;p&gt;No need to panic! The focus shifts from manual coding to strategic thinking and problem-solving – it's time to level up.&lt;/p&gt;

&lt;p&gt;Embrace the change, hone new skills, and become a trailblazer in the AI-powered world of programming.&lt;/p&gt;

&lt;p&gt;Highlighting one of AltQ's killer features: outsourcing memory-intensive tasks to AI, so you can focus on being creative.&lt;br&gt;
Human memory has limits, but with code assistants like AltQ, you can break those boundaries and reach new heights in programming.&lt;br&gt;
Highlighting one of AltQ's killer features: outsourcing memory-intensive tasks to AI, so you can focus on being creative.&lt;br&gt;
Human memory has limits, but with code assistants like AltQ, you can break those boundaries and reach new heights in programming.&lt;br&gt;
Let AI handle the details and remember countless entities, while you bring your A-game to the table and innovate like never before.&lt;/p&gt;

&lt;p&gt;AI assistants changing the game, and it's time to jump on board the coding revolution!&lt;/p&gt;

&lt;h2&gt;
  
  
  AltQ Alpha: A Work in Progress with Big Dreams and Plans
&lt;/h2&gt;

&lt;p&gt;Before you dive headfirst into the world of AltQ, let's take a moment to remember that it's still in its early alpha stage. Like a newborn kitten finding its footing, AltQ has some growing to do.&lt;/p&gt;

&lt;p&gt;Currently, AltQ relies on the GPT-3 model to generate answers. While it's quite impressive, it's a bit outdated and might require some patience and persistence to achieve the desired results.&lt;/p&gt;

&lt;p&gt;But fear not, fellow coding enthusiasts! I've got grand plans to refine the engine and improve the entire process – this is just the first step on the exciting journey.&lt;/p&gt;

&lt;p&gt;So, buckle up and join me as we help AltQ evolve from an alpha version into the game-changing code assistant!&lt;/p&gt;

&lt;h2&gt;
  
  
  Awaiting GPT-4: AltQ's Bright Future and Our Collective Efforts
&lt;/h2&gt;

&lt;p&gt;While the current GPT-3.5 API isn't quite the perfect fit for AltQ, the future is looking bright! I've had the chance to tinker with GPT-4, and let me tell you – it's downright incredible.&lt;/p&gt;

&lt;p&gt;Unfortunately, my GPT-4 API access is still on the waitlist.&lt;br&gt;
Let's make some noise! Together, we can raise awareness about AltQ, and with a little buzz, we might just get that API access sooner rather than later.&lt;/p&gt;

&lt;p&gt;So, spread the word, share your excitement, and let's help AltQ reach its full potential with the power of GPT-4. The future of AI-driven code assistance awaits!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of AltQ: A Code Assistant That Knows Your Project Inside Out
&lt;/h2&gt;

&lt;p&gt;Picture this: AltQ becomes your go-to companion, fully understanding your project, knowing the ins and outs of each line of code, and grasping the impact of every variable.&lt;/p&gt;

&lt;p&gt;With its incredible AI capabilities, AltQ will create required features and project artifacts on your behalf, making your coding life a whole lot easier.&lt;/p&gt;

&lt;p&gt;But it doesn't stop there – AltQ will free up your mental bandwidth, allowing you to focus on tackling the truly complex challenges and making groundbreaking discoveries.&lt;/p&gt;

&lt;p&gt;Together, let's turn this vision into reality and shape the future of AI-driven code assistance with AltQ as our trusty sidekick – not a job-stealing "Skynet", but a helpful companion for all developers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=pashaigood.alt-q&amp;amp;ssr=false#overview"&gt;AltQ&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Layout to HTML and back</title>
      <dc:creator>Pavel</dc:creator>
      <pubDate>Tue, 25 Aug 2020 19:49:04 +0000</pubDate>
      <link>https://dev.to/pashaigood/layout-in-html-and-back-3n3m</link>
      <guid>https://dev.to/pashaigood/layout-in-html-and-back-3n3m</guid>
      <description>&lt;p&gt;How to unify an engineer and GUI designer? How do I make them work with same entities?&lt;br&gt;
How to keep mockups in a version control system?&lt;br&gt;
If you are interested in those questions, welcome to aboard!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rGbLYL6X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/vb/h8/_c/vbh8_cjxu1oarc4lesvhryttmm8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rGbLYL6X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/vb/h8/_c/vbh8_cjxu1oarc4lesvhryttmm8.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Before start
&lt;/h1&gt;

&lt;p&gt;This post is a sequel of my previous post &lt;a href="https://dev.to/pashaigood/no-more-html-coding-please-let-s-make-layout-to-html-real-58o4"&gt;"No more HTML coding, please. Let's make layout to HTML real"&lt;/a&gt; and the result of research interesting me topic.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is my second English publication, please be lenient. Any fix suggestions are welcome.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the previous post, I briefly described current problems of the HTML code automatization and shared my research results. I stopped at the &lt;strong&gt;control problem&lt;/strong&gt;.&lt;br&gt;
In this post I will discover this concept in more detail and share the results of my research.&lt;br&gt;
Want to touch something? Here is the &lt;a href="https://lab.projet.tools/editor-concept-2.html"&gt;proof of concept&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Control Problem
&lt;/h1&gt;

&lt;p&gt;I defined two controlling directions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The possibility to affect to process of HTML code generation.&lt;/li&gt;
&lt;li&gt;Direct editing the result which will be reflected in the next generation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a part of my research I looked at the first direction and came to the conclusion that the HTML generation should be built on a declarative language of rules. This approach will give a high level of control on a resulting code and opportunities to make own rules set to developers.&lt;br&gt;
But now I would like to dealt with in greater detail on the second direction.&lt;/p&gt;

&lt;p&gt;Many of graphical web editors offer HTML code export but nothing more. This HTML code is derived and any changes on it will be lost after the next generating.&lt;/p&gt;

&lt;p&gt;Thus, building the interface and applications on this approach is very difficult. Not to mention the quality of the generated code. This is quite enough for the tasks being solved for this services such as landing page generators or prototyping, but for applications, the best they can do is be a quick start for something more complex.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HWpiMR6p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/0o/dg/s7/0odgs7lgcfjxz2t9zctcp_ig-j4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HWpiMR6p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/0o/dg/s7/0odgs7lgcfjxz2t9zctcp_ig-j4.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The solution
&lt;/h1&gt;

&lt;p&gt;The main idea is that if layouts are made to create an HTML document, then the entire layout can be described in HTML and CSS.&lt;br&gt;
Based on this, we can use the HTML document as a source of truth, without the need for a third format for storing layouts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FvaivL0X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/d2/-k/ie/d2-kieixu2wsqawyy0jnkrui16q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FvaivL0X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/d2/-k/ie/d2-kieixu2wsqawyy0jnkrui16q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But if the layout is described in an HTML document, then what prevents the developer from opening the code and changing it in any way he wants. The answer is nothing, yes with reservations, but it is possible.&lt;br&gt;
This way we have a &lt;strong&gt;2-way binding&lt;/strong&gt; between the design tool and the source code.&lt;/p&gt;

&lt;p&gt;Perhaps someone will say that this sounds like a utopia, Unity 3D, I will say back.&lt;br&gt;
Unity, like any other game engine, has implemented a similar concept in their tools for a long time.&lt;/p&gt;

&lt;p&gt;In my opinion, the only obstacle to implementing such an approach in the web industry and derivatives is the high requirements for HTML code, I looked up this issue in more detail in a previous article.&lt;/p&gt;

&lt;p&gt;The only thing that I will add. Continuing the comparison with game engines, is that in addition to the tree of the hierarchy of objects that the specialist works with, the engine itself builds many other trees that no one is interested in knowing about. Unlike the web.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5kB09ANp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/ar/o4/dt/aro4dtrqgmbf3c3i7fz8nwfnyt0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5kB09ANp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/ar/o4/dt/aro4dtrqgmbf3c3i7fz8nwfnyt0.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ok, I want to have something like Unreal Engine, but for the WEB. Where should I start?&lt;br&gt;
Right now I have: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A simple Drag&amp;amp;Drop editor;&lt;/li&gt;
&lt;li&gt;A concept of auto-coding module;&lt;/li&gt;
&lt;li&gt;Some of HTML code that I want to edit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first question is how to put it all together?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Engine
&lt;/h2&gt;

&lt;p&gt;Any engine consists of modules, so it's worth starting with this.&lt;/p&gt;

&lt;p&gt;It's hard not to start to imagine a system with modules like api mocking, testing, storage management, animation creation, optimization, working with dependencies, documenting ...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0U8CwE21--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/vh/_j/jz/vh_jjz4jkhos_dzj9cw6vticz9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0U8CwE21--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/vh/_j/jz/vh_jjz4jkhos_dzj9cw6vticz9g.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
But it's worth cool down and return to the current problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rendering Module
&lt;/h3&gt;

&lt;p&gt;Perhaps the question is obvious, but in general, what are we drawing and where? We have HTML code that we need to display with something.&lt;br&gt;
The logical choice here would be the most popular render - &lt;del&gt;WebKit&lt;/del&gt; Blink, we will use it as a rendering module.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Read-write Module
&lt;/h3&gt;

&lt;p&gt;But with the reader, everything is not so obvious. As long as we are talking about a single entry point (all the code is in index.html), there are no problems. But a real application can have an arbitrarily complex architecture and can be stored in any format.&lt;br&gt;
I have identified 3 options for how to deal with it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Working with the final code, with intermediate rendering;&lt;/li&gt;
&lt;li&gt;Maximum coverage of all popular technology stacks;&lt;/li&gt;
&lt;li&gt;Strict standardization.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There is no better option, each has its drawbacks.&lt;/p&gt;

&lt;p&gt;The most reliable seems to be the third, the most convenient for work is the second. I suppose that a mixed approach with a gradual adding of the stacks would be optimal, and where this is impossible, fallback to the third.&lt;/p&gt;

&lt;p&gt;The first option seems to be very promising, but with a number of difficult issues, the solution of which may take longer than the second option.&lt;/p&gt;

&lt;p&gt;Of the obvious problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Comparison of the intermediate to the original.&lt;/li&gt;
&lt;li&gt;Converting the intermediate code to the original format.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problems are interesting and require research.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Auto HTML Code Module
&lt;/h3&gt;

&lt;p&gt;Probably the easiest part.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Visual Interaction Module
&lt;/h3&gt;

&lt;p&gt;And what can we exactly interact with?&lt;/p&gt;

&lt;p&gt;This is what a tree looks like on one of the landing pages, describing 2 blocks lying side by side. If it is justified there, then this is completely inappropriate in the interface editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HtAbDeYr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/dy/vu/tb/dyvutba66zpw8omfmpv30icl0ka.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HtAbDeYr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/dy/vu/tb/dyvutba66zpw8omfmpv30icl0ka.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
Looking at it, I recall Adobe Illustrator in which, to get to the desired element, you need to click on the same place 2 * N times.&lt;/p&gt;

&lt;p&gt;But if we look closely, the editable elements there are only the heading and paragraph. The rest describe the arrangement of the elements.&lt;/p&gt;

&lt;p&gt;This fact is well illustrated the following concept - &lt;strong&gt;not all HTML code is the same&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;From this we formulate a rule. &lt;strong&gt;HTML code is divided into&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Significant&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insignificant&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An user interacts with significant items.&lt;/p&gt;

&lt;p&gt;The significant code describes an appearance, meta and structure: grouping, positioning, etc.&lt;/p&gt;

&lt;p&gt;The editor itself must meet all the expectations of the designer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Binding
&lt;/h2&gt;

&lt;p&gt;And what do we have and what do we binding with?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Some code as a source of truth;&lt;/li&gt;
&lt;li&gt;A DOM tree;&lt;/li&gt;
&lt;li&gt;A Visualization.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When we change the code then the DOM is changes. That guides to re-rendering.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Oi5ooA0H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/na/rh/dy/narhdylsbrqx7skxljrfdwnxcqu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Oi5ooA0H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/na/rh/dy/narhdylsbrqx7skxljrfdwnxcqu.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When we change the visualization:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Modify DOM, store derived result to code;&lt;/li&gt;
&lt;li&gt;Change the code that will change the DOM.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--56ehplSv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/tp/gs/hu/tpgshuhyazjjx7xqjvvnjmn1an4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--56ehplSv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/tp/gs/hu/tpgshuhyazjjx7xqjvvnjmn1an4.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each of the options will redraw the display.&lt;/p&gt;

&lt;h2&gt;
  
  
  The state
&lt;/h2&gt;

&lt;p&gt;But what is the lifecycle of the DOM? In addition to the editor, logic can also change it.&lt;/p&gt;

&lt;p&gt;This means that we need to determine the &lt;strong&gt;current state&lt;/strong&gt; of the code and select it from the &lt;strong&gt;list of all states&lt;/strong&gt; and edit the changes exactly where it is needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1wCUwU4S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/dl/xu/nv/dlxunvkidqyagoykmim9qskrg_o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1wCUwU4S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/dl/xu/nv/dlxunvkidqyagoykmim9qskrg_o.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The task is additionally complicated by the fact that a new state can completely change the interface, and coupled with an almost endless combinations of options for changing states. This task seems to be completely solvable only at the level of a semantic apparatus comparable to the human one (and the human does not always cope).&lt;/p&gt;

&lt;p&gt;All of the above sounds like it’s time to wait for a strong AI, but for now leave this occupation... Or introduce restrictions.&lt;/p&gt;

&lt;p&gt;Let's look at the comparison with game engines again. There are always at least &lt;strong&gt;2 modes&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Edit&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preview&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the edit mode, interaction only with blocks is possible, let's call them components, with &lt;strong&gt;the default state&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As for the rest, I would divide them into &lt;strong&gt;2 types of states&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Manual&lt;/strong&gt;, those that an editor can understand and give control over them;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic&lt;/strong&gt;, unclear to an editor, programmed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A great example of manual ones would be Pagedraw with its state editor and transition between them.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3XU2UUyK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/oh/hk/fp/ohhkfp2pufj2gmb_ynjroxwyh5s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3XU2UUyK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/oh/hk/fp/ohhkfp2pufj2gmb_ynjroxwyh5s.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But still, this topic is one of the most difficult, and requires much deeper and more thorough research.&lt;/p&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;From the above, the following concept is formed:&lt;br&gt;
We can interact in edit mode with blocks that are significant. These blocks can form components, which in turn can have simple or complex states.&lt;br&gt;
Editing states is a separate task and can be done both visually and through code. Components form a library. All this will impose certain rules and restrictions.&lt;/p&gt;

&lt;h1&gt;
  
  
  Proof of concept
&lt;/h1&gt;

&lt;p&gt;To proof the concept, it is necessary to implement the editing mode, in which changes in the visual editor affect the code immediately, and changes in the code are also immediately visible in the visual editor.&lt;/p&gt;

&lt;p&gt;The code acts as a source of truth and stores representation data, meta information, and structure (child-container).&lt;/p&gt;

&lt;p&gt;Subsequent opening of the code restores the state of the visual editor.&lt;/p&gt;

&lt;p&gt;Armed with this knowledge, let's implement &lt;a href="https://lab.projet.tools/editor-concept-2.html"&gt;it in code&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restrictions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Significant elements are those with a class or identifier;&lt;/li&gt;
&lt;li&gt;No side effects applied to items;&lt;/li&gt;
&lt;li&gt;An identifier is unique, reuse will lead to unexpected consequences;&lt;/li&gt;
&lt;li&gt;Most edge cases are not handled;&lt;/li&gt;
&lt;li&gt;Errors are expected;&lt;/li&gt;
&lt;li&gt;Components and states not implemented;&lt;/li&gt;
&lt;li&gt;Moving a container with children is possible when "grabbing" an empty space.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GhZE9qfV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/ng/u9/ai/ngu9ai-fjud3pujz3xpenspeg_a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GhZE9qfV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/ng/u9/ai/ngu9ai-fjud3pujz3xpenspeg_a.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;While 2-way binding is challenging and requires extensive research, it is possible. But it also implies a number of restrictions.&lt;/p&gt;

&lt;p&gt;Each of tech stacks will need its own interpreter, which is impossible without the interest of the community of this stack.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's next?
&lt;/h1&gt;

&lt;p&gt;I have another month of free time, so I have enough playing with "cubes", it's time to implement a clean model of the editor. To begin with, I will use React as the target stack, or rather JSX + styled-components, as the most used and studied.&lt;/p&gt;

&lt;p&gt;This process can take quite a long time, realizing this, I brushed the dust off my &lt;a href="https://twitter.com/PashaIGooD"&gt;twitter account&lt;/a&gt;. I invite everyone interested to follow the process.&lt;br&gt;
There I will post my thoughts about the problem and the current state of the work, and if the stars will align, then about the result - a free editor for everyone who wants to "move this web".&lt;/p&gt;

&lt;p&gt;Of course, I will be very glad to see constructive criticism and discussion.&lt;/p&gt;

&lt;p&gt;Peace for everyone!&lt;/p&gt;

</description>
      <category>nocode</category>
      <category>html</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>No more HTML coding, please. Let's make layout to HTML real</title>
      <dc:creator>Pavel</dc:creator>
      <pubDate>Sat, 11 Jul 2020 03:22:52 +0000</pubDate>
      <link>https://dev.to/pashaigood/no-more-html-coding-please-let-s-make-layout-to-html-real-58o4</link>
      <guid>https://dev.to/pashaigood/no-more-html-coding-please-let-s-make-layout-to-html-real-58o4</guid>
      <description>&lt;p&gt;Do you ever think that handwrote HTML code is expensive, long, redundant and outdated?&lt;br&gt;
I think about it every day, when I create another GUI component or system element. This article is my attempt to overview the current state of the industry, its problems and share the results of my research.&lt;/p&gt;

&lt;h1&gt;
  
  
  Before we start
&lt;/h1&gt;

&lt;p&gt;Wanna try it right now? Here is the &lt;a href="https://lab.projet.tools/editor-concept.html"&gt;proof of concept&lt;/a&gt;.&lt;br&gt;
It shows the concept, it's missing implementation however I think the concept is proven. Details below.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is my first English publication, please be lenient. Any fix suggestions are welcome.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Glossary
&lt;/h1&gt;

&lt;p&gt;I use "HTML code" and what I mean by this is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;As a HTML development process.&lt;/li&gt;
&lt;li&gt;As artifacts obtained after HTML development  -  HTML, CSS, JS, etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;About 8 years ago, I expressed the idea that manual HTML coding is outdated and automation will replace it. From that moment, I have been intently searching for solutions to resolve this issue. We already have such tools as Workflow, Bootstrap Studio, &lt;del&gt;inVision&lt;/del&gt;, &lt;del&gt;Framer&lt;/del&gt;, Supernova, React Studio and many other direct or indirect solutions.&lt;br&gt;
And we also have amazing research on this topic using neural networks, via pix2code or sketch2code.&lt;/p&gt;

&lt;p&gt;Unfortunately, I can't find a tool that can be fully integrated into my development process.&lt;/p&gt;

&lt;p&gt;So what I do I want? I want to get a layout from the layout designer, break it into components, correct the HTML code, where necessary, add logic, get a library of components and return it all to the designer for future interactions. I understand that it surpasses even the most advanced capabilities of the industry, but this is my dream…&lt;/p&gt;

&lt;p&gt;Like Confucius said, the long journey begins with the first step, so I decided to figure out where to start. This is what this article will be about.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Problem
&lt;/h1&gt;

&lt;p&gt;Before all we should to determine the difference between &lt;em&gt;HTML code&lt;/em&gt; and interface:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML code - is a semi-finished product&lt;/strong&gt;, roughly speaking, the result of converting a graphic format to HTML, CSS and other files, intended for further conversion to a graphic interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interface - a product ready artifact&lt;/strong&gt; of the system with which users will interact.&lt;/p&gt;

&lt;p&gt;At the 2020, manual &lt;em&gt;HTML coding&lt;/em&gt; is still the main way to create web interfaces, which is quite interesting in itself. This goes against the trends of parallel stacks, such as native and desktop applications, where visual interface design tools are the standard for its creation.&lt;/p&gt;

&lt;p&gt;We may argue for a long time why this is so, but as I think, the main conclusions are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;high requirements for the final code&lt;/strong&gt; and&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;the need for low-level control&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I propose to leave the "HTML coders lobby" outside the brackets :).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML coding is complex&lt;/strong&gt;, requires the use of special techniques and tools to manage, minimize errors and support up to date.&lt;/p&gt;

&lt;p&gt;Animations are other big question. Creating of complex animation can be impossible task for many companies because it's very laborious.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML coding is expensive&lt;/strong&gt;, on average it's from 25% of the cost of the entire system for SPA and up to 75% for landing pages.&lt;/p&gt;

&lt;p&gt;There is no generally accepted HTML coding theory as such.&lt;br&gt;
The W3C standard is very wide and each developer / team is guided by their own rules and standards.&lt;/p&gt;

&lt;h1&gt;
  
  
  My solution
&lt;/h1&gt;

&lt;p&gt;First We must to formalize the &lt;em&gt;HTML coding&lt;/em&gt; process, define the entities, algorithm and rules. Of course, the topic itself is quite extensive, and its full disclosure is not the goal of this article. Based on this, we consider only the part that is currently interest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Template
&lt;/h2&gt;

&lt;p&gt;Let's try to define process of template creation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;Visually divide into a &lt;strong&gt;high-level block tree&lt;/strong&gt;.&lt;br&gt;
Find the &lt;strong&gt;rows&lt;/strong&gt; and &lt;strong&gt;columns&lt;/strong&gt; of the layout.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SNlHDzUy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/rn/wk/al/rnwkalbp7e-ecqqerucfm9-ikzc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SNlHDzUy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/rn/wk/al/rnwkalbp7e-ecqqerucfm9-ikzc.png" alt=""&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tb4QNxku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/op/3h/7q/op3h7qhlylzbqir7f6t89akohro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tb4QNxku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/op/3h/7q/op3h7qhlylzbqir7f6t89akohro.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;Semantic analysis, we define the main blocks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Header&lt;/li&gt;
&lt;li&gt;Body&lt;/li&gt;
&lt;li&gt;Side bar&lt;/li&gt;
&lt;li&gt;Footer&lt;/li&gt;
&lt;li&gt;Etc…&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TaS7wUis--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/kf/y4/cj/kfy4cjfkpurnu-if0lpxhodx8su.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TaS7wUis--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/kf/y4/cj/kfy4cjfkpurnu-if0lpxhodx8su.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here we immediately encounter an interesting phenomenon, a layout is not always enough to build a full-fledged structure, so the interface designer should clarify the behavior of the blocks. Which suggests the idea that semantic analysis is also not always enough.&lt;/p&gt;

&lt;p&gt;And for now, this is enough for us. Here we can divide our task into two large groups:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Technical&lt;/strong&gt; and&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's set aside the semantic group for future research and focus on the technical one.&lt;/p&gt;

&lt;p&gt;Despite the fact that the &lt;em&gt;HTML code&lt;/em&gt; of a picture by a neural network is a very interesting task, in my opinion, it's redundant.&lt;br&gt;
It is hard to imagine a situation when, in a normal workflow, an interface designer will send a layout in the format of a bitmap image.&lt;/p&gt;

&lt;p&gt;Most often we have formats created in tools such as Figma, Sketch or Adobe Photoshop, which already contain almost exhaustive information about the layout, the most important thing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Elements position;&lt;/li&gt;
&lt;li&gt;Elements type;&lt;/li&gt;
&lt;li&gt;Elements styles;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Obtaining an HTML document based on this information is already a solved problem, as engineers from Figma have already shared their &lt;a href="https://github.com/figma/figma-api-demo/tree/master/figma-to-react"&gt;conversion&lt;/a&gt; implementation and &lt;a href="https://www.figma.com/blog/introducing-figma-to-react/"&gt;research results&lt;/a&gt;, and services such as Anima are directly built on the synchronization of layouts and interface.&lt;/p&gt;

&lt;p&gt;But why didn't such decisions lead to the effect of an exploding bomb and after 2 years there is nothing better than the good old hand-made HTML code?&lt;br&gt;
Here I repeat my opinion the reason for this is two factors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;High quality requirements&lt;/li&gt;
&lt;li&gt;Need for control&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Control is undoubtedly a necessary thing, but without satisfying the first requirement, it does not really make sense. It will be easier to immediately implement and manage a high-quality &lt;em&gt;HTML code&lt;/em&gt; than to try to fix a poor-quality one.&lt;/p&gt;

&lt;p&gt;Thus, the first requirement is paramount. But what makes a code to be quality?&lt;br&gt;
If we remove official quality indicators such as LTR, Accessibility and the like so, we will remain with important quality indicators for developers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Correct tree&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantics&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-redundancy&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readability and edibility&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Using of blocks taken out of the stream only where it is needed&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thus, the main task for automation will be compliance with these criteria.&lt;/p&gt;

&lt;p&gt;Let's try to prove that this is possible by building a tree of blocks. Again, to do this, we need to formalize the process and introduce the necessary concepts. Leave a number of extreme cases for future research.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rows and Columns
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Rows
&lt;/h3&gt;

&lt;p&gt;If the position of one element falls into the height segment of another, then they form one row.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qTLS2-EJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/hw/lf/vh/hwlfvhxizjyhgme5r2u-xz4reqc.png" alt=""&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Columns
&lt;/h3&gt;

&lt;p&gt;Similarly, if the position of one element falls into a segment of the width of another, then they form one column.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yzUQV1Qo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/sw/jg/g2/swjgg2wyfxivd6kwzqveqhy33vo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yzUQV1Qo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/sw/jg/g2/swjgg2wyfxivd6kwzqveqhy33vo.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Element Relations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Relative layout
&lt;/h3&gt;

&lt;p&gt;Elements are positioned relative to each other, relying on the flow.&lt;br&gt;
The tree is completed if necessary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8pVNup5L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/lm/2f/ev/lm2fevonhd7n6u7tnmqdyhygipk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8pVNup5L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/lm/2f/ev/lm2fevonhd7n6u7tnmqdyhygipk.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Overlapping layout
&lt;/h3&gt;

&lt;p&gt;Overlapping elements break out of the flow, are positioned absolutely, do not affect the positioning of other elements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iJ9niUWI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/tg/3e/bq/tg3ebqbc0goq0dk22x-iq8tvjok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iJ9niUWI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/tg/3e/bq/tg3ebqbc0goq0dk22x-iq8tvjok.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The process of building a blocks tree
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;Define all rows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EZBdbbSS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/ji/lk/sk/jilksknwalt1j_kqhhbxn5kfzgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EZBdbbSS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/ji/lk/sk/jilksknwalt1j_kqhhbxn5kfzgy.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;Find margins of each rows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FwzcnYCz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/0i/bz/rc/0ibzrcvfze_w8poli1uzgek571s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FwzcnYCz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/0i/bz/rc/0ibzrcvfze_w8poli1uzgek571s.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3
&lt;/h3&gt;

&lt;p&gt;Select a row for work and determine the &lt;strong&gt;type of layout&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Single-column&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-column&lt;/strong&gt;;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EPTGeLxK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/g_/ig/qg/g_igqgljbd5kxv0fyykv5nfimec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EPTGeLxK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/g_/ig/qg/g_igqgljbd5kxv0fyykv5nfimec.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4
&lt;/h3&gt;

&lt;p&gt;For multi-column, determine the &lt;strong&gt;type of columns&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Floating&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grid&lt;/strong&gt;;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Depending on the type, find indent between the columns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_Rs1_gB8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/po/6i/ky/po6ikyl3ghkdesi5f3mcg9pzd_s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_Rs1_gB8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/po/6i/ky/po6ikyl3ghkdesi5f3mcg9pzd_s.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5
&lt;/h3&gt;

&lt;p&gt;Determine the &lt;strong&gt;type of column by the number of elements&lt;/strong&gt; in it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Single&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the type is single, position the element relative to the column, go to the next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n43sOeMM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/en/d3/fb/end3fbn2wqq3luqownultxxavmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n43sOeMM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/en/d3/fb/end3fbn2wqq3luqownultxxavmg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6
&lt;/h3&gt;

&lt;p&gt;For the column type "multiple" we find all the rows.&lt;br&gt;
&lt;strong&gt;Rows types&lt;/strong&gt; are similar to column types:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Floating&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grid&lt;/strong&gt;;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Find the margins.&lt;br&gt;
We repeat the entire algorithm while there is at least one raw block.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--auijocM8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/l6/qw/k_/l6qwk_ranqhsvubyf0tjex58xag.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--auijocM8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://habrastorage.org/webt/l6/qw/k_/l6qwk_ranqhsvubyf0tjex58xag.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And now we implement the obtained statements into the code.&lt;br&gt;
Simplification:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fast implementation covering only ~ 20% of cases;&lt;/li&gt;
&lt;li&gt;Positioning errors are expected;&lt;/li&gt;
&lt;li&gt;One-level structure of source blocks;&lt;/li&gt;
&lt;li&gt;Styles are written to the style attribute;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can see and play with the proof of the concept &lt;a href="https://lab.projet.tools/editor-concept.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Automation of high-quality &lt;em&gt;HTML code&lt;/em&gt; is possible without involving weakly controlled machine learning algorithms. This will significantly reduce the cost of creating products and increase their quality. It is also important that this will simplify the work of developers and make its more intuitive and enjoyable.&lt;/p&gt;

&lt;p&gt;But further research is needed, and the problem itself requires closer attention of the community to implement a fully functional model and tools based on it.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's next?
&lt;/h1&gt;

&lt;p&gt;I think the next important step is the confirmation of the concept of controllability. The main factor here will be converting the code to the layout. When the code is changed, the layout will also be updated - creating a two-way binding between the design tool and the &lt;em&gt;HTML code&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It will be great to see any constructive criticism and the discussion. Peace!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://dev.to/pashaigood/layout-in-html-and-back-3n3m"&gt;The next part&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>productivity</category>
      <category>layout2code</category>
    </item>
  </channel>
</rss>
