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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/3/7/37d9eee6131ac72b51fe74721533bf511516417e.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/37d9eee6131ac72b51fe74721533bf511516417e" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/3/7/37d9eee6131ac72b51fe74721533bf511516417e.jpeg" alt="image" data-base62-sha1="7Y5bcdDPIfR3hOyBzMSib0zbkrc" width="690" height="581" data-dominant-color="EEEEED"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">808×681 75.3 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<p>WIP, coming soon – importing data from the original Northwind Traders database to the Nortwind Elixir Traders database, and running queries on it.</p>
<p>(BTW, I can imagine that <strong>N</strong>orthwind <strong>T</strong>raders must have been a veiled reference to or an inside joke about Windows <strong>NT</strong>.)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="328646" 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/northwind-elixir-traders-pragprog/70887/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-328646" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="328646"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="328800" data-post-id="328800">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello everyone,</p>
<p>First off, apologies for this update taking longer than usual, even despite my recent expectation that this update would come earlier, rather than later in last week. Life got in the way, and then I also got stuck with attempting to implement a clever-and-complicated solution to one of the things in this chapter using <code>Enum.reduce_while/3</code> (after learning some cool things while working on <a href="https://github.com/waseigo/identicon_svg/blob/master/lib/identicon_svg/polygon_reducer.ex" rel="noopener nofollow ugc">IdenticonSvg</a>, I unsuccessfully tried to construct a dependency tree between tables).</p>
<p>Still, this update is a medium-large one. 37 new pages have been added, and they cover using a dynamic Ecto repository to temporarily connect to a different SQLite database, inserting data in bulk, and various bits and pieces of Elixir that aren’t directly related to Ecto, but useful when writing Elixir applications and avoiding the hard-coding of data within them, regardless, such as the <code>:application</code>, <code>Application</code> and <code>Module</code> modules, the <code>Kernel.apply/3</code> function, and the use of the <code>__MODULE__</code> attribute.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/1/b/1bf2c7f6e802786fbaf700fe2abdeb9021566239.png" data-download-href="https://forum.elixirforum.com/uploads/default/1bf2c7f6e802786fbaf700fe2abdeb9021566239" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/1/b/1bf2c7f6e802786fbaf700fe2abdeb9021566239.png" alt="image" data-base62-sha1="3Zf2XSbBJMY0bjcj5LuCg94rg6Z" width="690" height="132" data-dominant-color="F1F1F1"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">815×157 8.2 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<p>With half of the tables having been modeled to a satisfactory degree over the past 9 chapters, the content of this chapter finally allows us to gradually import data from the original Northwind Traders database to tables as we gradually model them. With some laziness-driven automation through the <code>DataImporter</code> module, this will make such tasks in the next chapters fly by.</p>
<p>In the next chapters we can proceed with modeling the rest of the tables rapidly. My interim goal is to have <em>all</em> of the original dataset imported, and thus be able to execute queries both complex and simple. After the “basic” task of having the entire database implemented using Ecto, the goal is to branch out and explore the fringes a bit; consider improvements to the database to take it further, using embedded schemas and Enums, and other nooks and crannies of Ecto.</p>
<p>I’ve marked the completion degree as 28% but it’s closer to 75% realistically. Then again… famous last words. Pretty sure that the head shall meet the desk percussively and repeatedly many times over the next weeks.</p>
<p>As always, your feedback is welcome!</p>
<p>And, if you’re enjoying the book, I would appreciate if you would leave a comment on this thread, share a link to <a href="https://leanpub.com/northwind-elixir-traders" rel="noopener nofollow ugc">https://leanpub.com/northwind-elixir-traders</a> on the social network of your preference, or anything else that you find meaningful to get more people to get the book and provide feedback.</p>
<p>Cheers,<br>
Isaak</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="328800" 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/northwind-elixir-traders-pragprog/70887/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-328800" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="328800"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="328947" data-post-id="328947">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Oh ok. Thanks. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" 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="328947" 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/northwind-elixir-traders-pragprog/70887/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-328947" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="328947"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="329367" data-post-id="329367">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>New chapter dropping sometime around (my) midnight tonight. This one’s will be on modeling the remaining tables, except for the OrderDetails “join table” (which we’ll deal with in a future chapter on many-to-many relationships).</p>
<p>This one seemed simple at first, but once you’ve seen the quality of data of the <code>:phone</code> fields in the original Suppliers and Shippers table, you’ll realize that a custom validation function is needed.</p>
<p>As a preview: this is <a href="https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s02.html" rel="noopener nofollow ugc">a regex for NANP-formatted phone numbers</a>, tested on all phone numbers in the Northwind Traders database: <a href="https://regexr.com/80rgh" rel="noopener nofollow ugc">https://regexr.com/80rgh</a>.</p>
<p>Good thing that the Suppliers table includes a <code>:country</code> field, so that we can make sense of the mess!</p>
<p>Stay tuned. That’s going to be a fun one to write!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="329367" 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/northwind-elixir-traders-pragprog/70887/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-329367" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="329367"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="329530" data-post-id="329530">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello, hello,</p>
<p>The first part of Chapter 11 on modeling further tables is now available.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/b/e/bed01c12d98094a580f80d4915e25fd8a18582ba.png" data-download-href="https://forum.elixirforum.com/uploads/default/bed01c12d98094a580f80d4915e25fd8a18582ba" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/b/e/bed01c12d98094a580f80d4915e25fd8a18582ba.png" alt="image" data-base62-sha1="re0AIJbcqNCegYihNi5P5ulGQsy" width="690" height="210" data-dominant-color="F1F1F1"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">991×302 15.6 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<p>It’s only “the first part”, because this chapter truly kicked my butt, causing a couple of partial rewrites.</p>
<p>It started off uneventfully, with the main goal of modeling the remaining three tables (OrderDetails is temporarily left aside). Yet, it rapidly escalated to dealing with the phone numbers of the Suppliers and Customers tables of the original Northwind Traders database, with <code>GET</code>ting and parsing a CSV file containing ISO 3166-1 information including dial codes (for eventually formatting and validating phone numbers as internationally-formatted, dial-code-prefixed strings).</p>
<p>BTW, did you know that the Dominican Republic is the only country with <em>three</em> different dial codes? <em>That</em> one was a fun one to discover, as was dealing with columns in a CSV file that contain a <em>comma-separated</em> list of values that break simplistic <code>String.split/2</code> calls when parsing a CSV row.</p>
<p>Other things that this chapter includes:</p>
<ul>
<li>A discussion on structuring our work (such as the modeling of tables) by using SIPOC.</li>
<li>When to batch-process enumerables vs. when to implement pipelines to work on a single item within the enumerable.</li>
<li>Making a <code>GET</code> request using Erlang’s <code>:httpc</code> client.</li>
<li>Building basic queries with customizable fields.</li>
</ul>
<p>Part 2 of this chapter is coming within the next 4-5 days.</p>
<p>Cheers,<br>
Isaak</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="329530" 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/northwind-elixir-traders-pragprog/70887/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-329530" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="329530"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="330137" data-post-id="330137">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello again from Athens, Greece!</p>
<p>This release completes Chapter 11, which proved to be the longest so far, despite initial appearances that it would be rather straightforward.</p>
<p>Chapter 11 has seen a meticulous approach to table modeling within the Northwind Elixir Traders (NET) database. We revisit our methodical <em>SIPOC</em>’ed process of table creation four times, adapting it for each table’s unique needs beyond the OrderDetails table, which was reserved for future query capabilities via <code>Ecto.Query</code>.</p>
<p>The focus in this chapter (and where most of the content is spent) shifted to data integrity and internationalization for Shippers and Suppliers tables with phone number fields. By creating a custom changeset validation function using helper functions, we automate conversions of NANP-formatted numbers into international formats across all pertinent tables, including the development of associated modules that model Country records, and the PhoneNumbers module that includes various helper functions for phone number processing. Another fruit of this labor is a country validation function that uses publicly available ISO 3166-1 data on CLDR display names (“Greece”), Alpha-3 codes (“GRE”), and dial codes (“+30”).</p>
<p>The various custom validation functions have now been refactored in a separate <code>Validations</code> module, to that they can be used across various modules’ changeset functions.</p>
<p>Finally, the chapter also involves rudimentary exploration of the original Northwind Traders dataset as an investigation and source of discussion for potential improvements to the NET database schema to better match the practical needs of a real-life B2B business.</p>
<p>We are thus now at the cusp of modeling the last table of NT, OrderDetails, and thus leaving the original database behind–for good, and eventually, for better!</p>
<p>The next chapter will do exactly that, before we proceed to Ecto queries and other Ecto topics, such as embedded schemas, Enums, and custom field types. These latter elements will be part of the closing chapters of the book that will take NET beyond the pedagogical status of NT and well into something that could serve as a starting blueprint for a real-life B2B business (which is informed by my professional experience as the Managing Director of <a href="https://tectra.gr/en" rel="noopener nofollow ugc">TECTRA Ltd</a>, where my business programming journey began).</p>
<p>As always, I welcome your feedback! And if you have been enjoying the book, I would appreciate if you could send me a short testimonial and profile photo by email to <a href="mailto:isaak@overbring.com" rel="nofollow">isaak@overbring.com</a>, and your permission to add that to the book’s testimonials on Leanpub.</p>
<p>Until next week!</p>
<p>Isaak</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="330137" 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/northwind-elixir-traders-pragprog/70887/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-330137" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="330137"
                     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 #26"></div>
  </section>
</div>
    <div class="postbit" id="333927" data-post-id="333927">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello dear readers of Northwind Elixir Traders,</p>
<p>After a long break due to other professional engagements (three of which, happily Elixir-related!), I bring you a short new chapter on modeling the final table of the original Northwind Traders database: the OrderDetails table. Plus, minor improvements to the previous chapter.</p>
<p>With that final table in place and all data imported thanks to the DataImporter module continuing to pay dividends, the main mission of the book is complete! We now have a “Northwind Elixir Traders” database in place, with all the original data available and ready to be accesssed with queries.</p>
<p>That doesn’t mean that the development of the book is over, however. Beyond queries, I want to use the next chapters to:</p>
<ol>
<li>improve the existing changesets and the validation functions in particular,</li>
<li>review and improve the material on dealing with associations (cast_assoc, put_assoc, build_assoc),</li>
<li>address other aspects of Ecto, as they are listed in the “Coming Soon” section, and</li>
<li>explore in a structured way the various business-focused improvements that can be made to the database, so that it can serve as a starting point for anyone wanting to build an ERP fit for a small business and/or as the backend of a Phoenix app.</li>
</ol>
<p>As always, thank you to everyone who has provided feedback over email and Linkedin!</p>
<p>Best regards from Athens, Greece,<br>
Isaak<br>
<a href="mailto:isaak@overbring.com" rel="nofollow">isaak@overbring.com</a></p>
<p>PS: I have extended the 10% discount by another 10 copies for Elixir Forum readers. Use this link: <a href="https://leanpub.com/northwind-elixir-traders/c/elixirforum" class="inline-onebox" rel="noopener nofollow ugc">Northwind Elixir Traders [Leanpub PDF/iPad/Kindle]</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="333927" 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/northwind-elixir-traders-pragprog/70887/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-333927" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="333927"
                     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 #27"></div>
  </section>
</div>
    <div class="postbit" id="343947" data-post-id="343947">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello everyone, and especially readers of Northwind Elixir Traders!</p>
<p>This is just an update that I expect to be getting back on completing the book around mid-November, since I’ve been fully loaded with both Elixir-related and non-Elixir-related work since mid-July that made it impossible to maintain the weekly/bi-weekly writing pace.</p>
<p>At the same time, it’s great to see that the book has been so warmly received – so, in case any readers have feedback, feel free to share it here so that I can take it into account once I get back to writing in November!</p>
<p>The upside of the lull in writing is that I’ve been putting in practice everything in the book, plus <strong>Ecto queries</strong> (a pending chapter of Northwind Elixir Traders) while developing a Phoenix LiveView “sister app” to <a href="https://breek.gr/en" rel="noopener nofollow ugc">Breek.gr</a> (which is written in NextJS with a PHP backend) – check it out:</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/a/8/a852c85bfb99da94365b72e4924c676714e64615.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/a852c85bfb99da94365b72e4924c676714e64615" title="localhost_4001_u_marma_edit_locations(iPad Air)" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/a/8/a852c85bfb99da94365b72e4924c676714e64615_2_690x479.jpeg" alt="localhost_4001_u_marma_edit_locations(iPad Air)" data-base62-sha1="o13zIlu0Af3vLlfCy9HZv2XXMz3" width="690" height="479" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/a/8/a852c85bfb99da94365b72e4924c676714e64615_2_690x479.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/a/8/a852c85bfb99da94365b72e4924c676714e64615_2_1035x718.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/a/8/a852c85bfb99da94365b72e4924c676714e64615_2_1380x958.jpeg 2x" data-dominant-color="E1E6E3"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">localhost_4001_u_marma_edit_locations(iPad Air)</span><span class="informations">2360×1640 273 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<p>And yes, <em>Managers</em> uses SQLite. And, it makes heavy use of my <a href="https://forum.elixirforum.com/t/exnominatim-a-full-featured-client-for-the-openstreetmap-nominatim-api-v1/65120" rel="nofollow">ExNominatim</a> Elixir library for interacting with the OpenStreetMap Nominatim API.</p>
<p>Stay tuned!</p>
<p>(PS: I much prefer Phoenix LiveView to NextJS <img src="https://forum.elixirforum.com/images/emoji/apple/slightly_smiling_face.png?v=15" title=":slightly_smiling_face:" class="emoji" alt=":slightly_smiling_face:" 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="343947" data-batch-url="/posts/batch_likers">
                        3
                      </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/northwind-elixir-traders-pragprog/70887/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-343947" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="343947"
                     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 #28"></div>
  </section>
</div>
    <div class="postbit" id="346889" data-post-id="346889">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Will you be covering any PostGIS material? Doing queries by lat long, etc?</p>
<p>PS I bought the book yesterday, I’m already 75 pages in. I love the style of starting with the very basics and discovering the way forward via necessity.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="346889" 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/northwind-elixir-traders-pragprog/70887/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-346889" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="346889"
                     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 #29"></div>
  </section>
</div>
    <div class="postbit" id="351644" data-post-id="351644">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you Bryan for the feedback here and over email and LinkedIn! PostGIS is way beyond the scope of this book, as Northwind Elixir Traders uses SQLite as the database.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="351644" data-batch-url="/posts/batch_likers">
                        0
                      </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/northwind-elixir-traders-pragprog/70887/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-351644" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="351644"
                     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 #30"></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/70887/load_more?page=4">Load more posts (47 remaining)</a>
</div></template></turbo-stream>