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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/hunterboerner" rel="nofollow">@hunterboerner</a> you may be interested in posting in this <a href="http://forum.elixirforum.com/c/your-elixir-projects" rel="nofollow">section</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="2579" 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/what-elixir-related-stuff-are-you-doing/113/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-2579" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2579"
                     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 #44"></div>
  </section>
</div>
    <div class="postbit" id="2594" data-post-id="2594">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Right now</p>
<ul>
<li>I am reading Programming Phoenix</li>
<li>Building a card game based on war, but each card is a shape, the game is for kids who are starting to learn geometry (<a href="https://en.wikipedia.org/wiki/War_%28card_game%29" rel="noopener nofollow ugc">War Game</a>)</li>
<li>The game has a lobby and when two sockets joins same channel, a new game is started.</li>
</ul>
<p>The game, in fact, is a migration of a NodeWebkit we did the last year, I am so excited about how the state is kept in ahother process, no global variables.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="2594" 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/what-elixir-related-stuff-are-you-doing/113/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-2594" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="2594"
                     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 #45"></div>
  </section>
</div>
    <div class="postbit" id="6543" data-post-id="6543">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Working on a Telegram API client</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6543" 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/what-elixir-related-stuff-are-you-doing/113/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-6543" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6543"
                     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 #46"></div>
  </section>
</div>
    <div class="postbit" id="6553" data-post-id="6553">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Working on a website for a teaching institution to unify a lot of very disparate backend systems.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6553" 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/what-elixir-related-stuff-are-you-doing/113/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-6553" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6553"
                     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 #47"></div>
  </section>
</div>
    <div class="postbit" id="6572" data-post-id="6572">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Working on a <a href="https://github.com/dogweather/ketobit" rel="noopener nofollow ugc">Phoenix + OAuth2 + Fitbit API</a> app.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6572" 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/what-elixir-related-stuff-are-you-doing/113/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-6572" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6572"
                     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 #48"></div>
  </section>
</div>
    <div class="postbit" id="6575" data-post-id="6575">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I am building <a href="https://github.com/rawcodehq/webmonitor" class="inline-onebox" rel="noopener nofollow ugc">GitHub - rawcodehq/webmonitor: An app to monitor the uptime of your web applications · GitHub</a> an open source Phoenix app to monitor other webapps. Would love to get your feedback.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6575" 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/what-elixir-related-stuff-are-you-doing/113/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-6575" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6575"
                     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 #49"></div>
  </section>
</div>
    <div class="postbit" id="6852" data-post-id="6852">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’m half way in Programming Elixir book. I’m reading it through my company’s online resource. There is a lot of stuff that I need to learn about OTP. About what it does and how it works. After all of that, I’m planning on moving to Programming Phoenix book. And when most of the things about Erlang/Elixir ecosystem make sense to me, I want to introduce it to my team. I’m sure they will be happy with the power of BEAM concurrency and move on from Rails that currently hurt me everyday as the app grows to become a nasty monster. Hahaha</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6852" 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/what-elixir-related-stuff-are-you-doing/113/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-6852" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6852"
                     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 #50"></div>
  </section>
</div>
    <div class="postbit" id="6854" data-post-id="6854">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’m learning/reviewing Elixir for an internal monitoring/remote control system for a museum exhibition. Still a lot to learn but so far the promise of a modern syntax for Erlang plus a growing community seems enticing!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6854" 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/what-elixir-related-stuff-are-you-doing/113/52">Post #51</a>
	                </div>
	            </div>
              <div id="likers-container-6854" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6854"
                     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 #51"></div>
  </section>
</div>
    <div class="postbit" id="6903" data-post-id="6903">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I am learning Elixir and I wrote this small library <a href="https://github.com/10Pines/ex_matchers" class="inline-onebox" rel="noopener nofollow ugc">GitHub - 10Pines/ex_matchers: Assertion matchers for ExUnit · GitHub</a> that provides expectation matchers around ExUnit assertions. Feedback is welcome!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6903" 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/what-elixir-related-stuff-are-you-doing/113/53">Post #52</a>
	                </div>
	            </div>
              <div id="likers-container-6903" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6903"
                     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 #52"></div>
  </section>
</div>
    <div class="postbit" id="6904" data-post-id="6904">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Eh, guess I should say what libraries I’ve publicly released.  While making the project for the above institution that I mentioned before, a couple of little libraries got ‘done’ enough for me to release, those are:</p>
<p><a href="https://hex.pm/packages/ldap_ex/" rel="nofollow">LDAPEx</a> → This is a binary instead of char_list version of the stock Erlang :eldap library.<br>
It currently is read-only stuff, but easier to use, and I imported the entire LDAP ASN1 spec so I could (or a PR could be given) that adds writing functionality too, perhaps even build a server on it if the need arises.</p>
<p><a href="https://hex.pm/packages/permission_ex" rel="nofollow">PermissionEx</a> → It is a permission matcher library, you can do things like:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    iex&gt; PermissionEx.test_permissions(%PermissionEx.Test.Structs.Page{action: :show}, [true])
    true
</code></pre>
<p>It integrates really well with libraries like <a href="https://hex.pm/packages/canada" rel="nofollow">Canada</a> or similar ones so I end up using it in my own code like (actual code):</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">conn |&gt; can?(edit(%Perms.Student{uid: uid}))
</code></pre>
<p>I have the <code>canada</code> <code>:action</code> set an existing <code>:action</code> variable on the permission if it exists, else it throws an error, can pass a ‘nil’ action to specify no action.  But it just grabs the user off the connection, grabs their permissions if already cached, else it looks in the database for that user for the ‘Perms.Tag’ type permission and grabs it (I usually preload all of them in the usual case, may optimize that later if really a need), then compares it to what is required.  Combined with Vic’s excellent <a href="https://hex.pm/packages/happy" rel="nofollow">Happy</a> library I get to write code like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  def update(conn, %{"id" =&gt; id_param, "student" =&gt; student_params}) do
    happy_path!(else: handle_error(conn)) do
      {:ok, {cnum, uid, obj}} = verify_cnum_uid(id_param)
      @perm true = conn |&gt; can?(edit(%Perms.Student{uid: uid}))
      query = from s in Student, where: s.uid == ^uid
      {:ok, student} = verify_single_record(Repo.get(query, uid))

      changeset = Student.changeset(student, put_in(student_params["uid"], uid))
      case Repo.update(changeset) do
        {:ok, _student} -&gt;
          conn
          |&gt; put_flash(:info, gettext("Student record successfully updated: %{cnum}", cnum: get_full_cnum(cnum)))
          |&gt; redirect(to: student_path(conn, :index, id: id_param))
        {:error, err_changeset} -&gt;
          conn
          |&gt; render(:edit, changeset: err_changeset, obj: obj, id: id_param)
      end
    end
  end
</code></pre>
<p>Thanks to the happy_path (think Elixir 1.3’s <code>with</code> on steroids, easier to use, and works on older Elixir version) default else handler it drops down into a large tree I’ve setup to handle error cases.  For example if the permission is actually false then it redirects them to a login page while telling them to log in with an account that has permission to do that function as per:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def handle_error({:perm, false}, conn)              ,do: do_unauthorized(conn)
</code></pre>
<p>If the <code>verify_cnum_uid/1</code> fails to sanitize and convert the passed in UID param and confirm the account actually exists then the default error handler does this based on the exact error:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def handle_error({:error, :not_a_number}, conn)     ,do: do_bad_request(conn)
def handle_error({:error, :invalid_uid}, conn)      ,do: do_not_found(conn)
</code></pre>
<p>So it all works really well together.  <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>
<p>I have some other little libraries (mostly integrations, like Ecto.Interval, Ueberauth.LDAP, Dynamic Module detection and plugin system (great for building things like Menus on webpages dynamically), etc…) that have basically no documentation whatsoever, so not what I consider release-worthy.  But maybe someday.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6904" 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/what-elixir-related-stuff-are-you-doing/113/54">Post #53</a>
	                </div>
	            </div>
              <div id="likers-container-6904" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6904"
                     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 #53"></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/113/load_more?page=6">Load more posts (865 remaining)</a>
</div></template></turbo-stream>