<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="99277" data-post-id="99277">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Zesky665" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Zesky665/120/9525_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Zesky665
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Kurisu" data-post="11" data-topic="17028">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kurisu/48/14820_2.png" class="avatar"> Kurisu:</div>
<blockquote>
<p>I would like also to have a smart migration generator library. What I mean ? For example if I want to add a new column to a table, I just have to edit a model file and the right migration file will be generated by running some command. This way all definitions of the same table fields will always appear in the same place. But this is just a whim I guess. ^^</p>
</blockquote>
</aside>
<p>I’m pretty sure there is a mix task that can do that <img src="https://forum.elixirforum.com/images/emoji/apple/stuck_out_tongue.png?v=15" title=":stuck_out_tongue:" class="emoji" alt=":stuck_out_tongue:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99277" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-99277" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99277"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="99281" data-post-id="99281">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Kurisu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Kurisu/120/14820_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Kurisu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Really ? What I mean is that the library will compare the existing migrations with the model files and add if necessary the right migrations.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99281" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-99281" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99281"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="99283" data-post-id="99283">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Zesky665" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Zesky665/120/9525_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Zesky665
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>That depends on if you’re using a single migration for each model. Is there a lib in another language that does the same? I’d like to get my head around how this works.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99283" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-99283" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99283"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="99285" data-post-id="99285">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="darkmarmot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/darkmarmot/120/15926_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  darkmarmot
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I came from C, C#, AS3 and JavaScript primarily.</p>
<p>The hard parts for me have been macro related.</p>
<p>First, understanding language syntax where macros have created ‘sugar’.</p>
<p>And, now, trying to write basic macros has been a major pain.<br>
I’ve tried following the tutorials and books and it’s definitely been the most painful learning experience I’ve had in my programming career. Just so much frustration.</p>
<p>OTP and the Erlang VM have also been big shifts for me – but not as impenetrable as the macro stuff.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99285" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-99285" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99285"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="99319" data-post-id="99319">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Kurisu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Kurisu/120/14820_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Kurisu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Zesky665" data-post="14" data-topic="17028" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zesky665/48/9525_2.png" class="avatar"> Zesky665:</div>
<blockquote>
<p>That depends on if you’re using a single migration for each model. Is there a lib in another language that does the same? I’d like to get my head around how this works.</p>
</blockquote>
</aside>
<p>Well I know that python framework, Django does that. The concept is simple, the library keeps a log of all the migrations made in the application and that give it an idea of the actual database structure, then it compares it with what the models are saying ans create new migrations that will be saved for future comparison of course…<br>
But as they says it in the docs it is not perfect:</p>
<blockquote>
<p>Your models will be scanned and compared to the versions currently contained in your migration files, and then a new set of migrations will be written out. Make sure to read the output to see what  <code>makemigrations</code>  thinks you have changed - it’s not perfect, and for complex changes it might not be detecting what you expect.</p>
</blockquote>
<p>Here is the link to read more about it: <a href="https://docs.djangoproject.com/en/2.1/topics/migrations/" rel="noopener nofollow ugc">Migrations (Django docs)</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99319" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-99319" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99319"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="99321" data-post-id="99321">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sribe" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sribe
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="Zesky665" data-post="7" data-topic="17028">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zesky665/48/9525_2.png" class="avatar"> Zesky665:</div>
<blockquote>
<p>…especially anything having to do with asynchronous JavaScript (which I still suck at).</p>
</blockquote>
</aside>
<p>In this scenario, it’s not you that sucks <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99321" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-99321" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99321"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="99334" data-post-id="99334">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kennethuy" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kennethuy/120/10601_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kennethuy
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Area that I am finding most challenging is understanding the concepts in Phoenix, namely contexts.</p>
<p>Being familiar with Rails, the whole MVC structure is familiar to me. However, I just cannot fully wrap my head around the whole idea of contexts and how to go about doing it. I have spent countless weeks reading different blog posts, the Phoenix documentation, different codebases, youtube videos, books, and threads on this forum so I get the various ways that others have discussed, yet when it comes time to do <code>mix phx.new</code> for myself, I am always left thinking “Does this look right?”  or “Wait, this is ok…right?” every time.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99334" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-99334" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99334"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="99369" data-post-id="99369">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="peerreynders" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/120/5826_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  peerreynders
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Zesky665" data-post="7" data-topic="17028">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zesky665/48/9525_2.png" class="avatar"> Zesky665:</div>
<blockquote>
<p>especially anything having to do with asynchronous JavaScript (which I still suck at).</p>
</blockquote>
</aside>
<p>Spend some serious time to understand the ins and outs of <a href="https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout" rel="noopener nofollow ugc"><code>setTimeout</code></a> - especially what happens when multiple closures are scheduled with a delay of <code>0</code> <a href="https://johnresig.com/blog/how-javascript-timers-work/" rel="noopener nofollow ugc">How JavaScript Timers Work</a> (the basis for <a href="https://livebook.manning.com/#!/book/secrets-of-the-javascript-ninja-second-edition/chapter-13/101" rel="noopener nofollow ugc">13.2. Taming timers: time-outs and intervals</a>) may be a good starting point then maybe move on to something like <a href="https://blog.risingstack.com/node-js-at-scale-understanding-node-js-event-loop/" rel="noopener nofollow ugc">Understanding the Node.js Event Loop</a>.</p>
<p>If you are so inclined also look into the <a href="https://books.google.ca/books?id=55WqDQAAQBAJ&amp;pg=PA29&amp;lpg=PA29&amp;dq=The+reactor+pattern+node.js+design+patterns&amp;source=bl&amp;ots=A2MLddXvGC&amp;sig=Bn6GHW9gd2Q-3JwWHX4KfHI88tY&amp;hl=en&amp;sa=X&amp;ved=2ahUKEwj61dGslO7dAhUEPa0KHW-PB6cQ6AEwEHoECAAQAQ#v=onepage&amp;q=The%20reactor%20pattern%20node.js%20design%20patterns&amp;f=false" rel="noopener nofollow ugc">Reactor</a> and <a href="https://github.com/tpn/pdfs/blob/master/Proactor%20-%20An%20Object%20Behavioral%20Pattern%20for%20Demultiplexing%20and%20Dispatching%20Handlers%20for%20Asynchronous%20Events.pdf" rel="noopener nofollow ugc">Proactor pattern</a>.</p>
<p>That may give you a more intuitive sense of how the JavaScript event loop cooperatively schedules code - which may make dealing with asynchronous code easier.</p>
<p>Once there, you may also appreciate <a href="http://reactivex.io/learnrx/" class="inline-onebox" rel="noopener nofollow ugc">Functional Programming in Javascript</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99369" data-batch-url="/posts/batch_likers">
                        6
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-99369" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99369"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="99372" data-post-id="99372">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="federico" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/federico/120/7073_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  federico
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Contexts in Phoenix are still only about a year and a half old, so the definitive guide on how best to structure them in your app might not be written yet. <a href="https://forum.elixirforum.com/t/phoenix-inside-out-series-of-books-booklets-self-published/5473" rel="nofollow">Phoenix Inside Out</a>, however, is a contender for the best current resource out there, in my opinion; not only because of the in-depth explanation of contexts and all things Phoenix, but because of the realistic walkthrough of building an e-commerce website using Test Driven Development and other Agile (or Extreme) Programming practices that you’ll encounter in real world projects, today.</p>
<p><a class="mention" href="/u/kennethuy" rel="nofollow">@Kennethuy</a>, you say that you’ve spent countless weeks consuming various resources, which is great! Have you heard of the book? I’ve spent a couple of years trying to consume everything Elixir and Phoenix, so I’ve had some time to weigh the choices. Even though there aren’t as many resources, compared to other languages/frameworks, there’s enough out there (most of it good) to keep you occupied and eventually prepared, as you keep putting what you learn to practice. Don’t give up! Search the forums for more recommendations and answers.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99372" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-99372" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99372"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="99396" data-post-id="99396">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="vasar" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  vasar
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think Elixir itself is not hard to learn, I would say it was quite easy as everything is well documented and there are plenty of good resources, but not so many that you get confused. For example in Javascript or PHP even more, there are so many articles with very questionable content, because there are just so many people producing it. Here generally everything is really well documented so you don’t need to search for external resources.</p>
<p>For me the hardest part was getting into functional mindset and how to design applications/libraries. I didn’t find much resources on this topic, so I read some other languages articles discussing this and actually found that most high level principles are actually the same. The problem was that I expected everything to be different.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="99396" data-batch-url="/posts/batch_likers">
                        6
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/is-anyone-finding-it-difficult-learning-elixir-or-phoenix/17028/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-99396" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="99396"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/17028/load_more?page=3">Load more posts (21 remaining)</a>
</div></template></turbo-stream>