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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yes I was refering to the C bindings as I know we can use C code from Elixir. There is also a rust library that uses the C bindings. I guess Rustler would be easier to use.</p>
<p>I am not really interested working on a library right now as I do not need that functionality. Maybe in the future. Also I do not really know how to write proper C code or to integrate C code with the BEAM.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="231992" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-231992" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="231992"
                     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="234834" data-post-id="234834">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="f0rest8" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/f0rest8/120/38551_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  f0rest8
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi everyone, <img src="https://forum.elixirforum.com/images/emoji/apple/waving_hand.png?v=15" title=":waving_hand:" class="emoji" alt=":waving_hand:" loading="lazy" width="20" height="20"></p>
<p>I wanted to give a general update on when I would start sending out Early Access invite codes to people who have signed up (you still can!):</p>
<p>I’ve been going through a major life event that is requiring all of my heart and soul, and so I’m pushing back sending out invite codes until 1H 2022.</p>
<p>I had originally intended to have finished getting the Letters feature into a beta stage this month, but due to current events I have not been able to work on it yet. And I didn’t want to send out any codes until Letters was also in a beta stage.</p>
<p>Thank you to everyone that has signed up, it’s beyond exciting and encouraging for me and I appreciate your support. I am also super excited to be able to share another way to connect and share online that I really hope and believe will make our lives better. And if that’s not the case for you, then you can share your feedback, request new features, and vote on features, all in real-time too! <img src="https://forum.elixirforum.com/images/emoji/apple/blush.png?v=15" title=":blush:" class="emoji" alt=":blush:" loading="lazy" width="20" height="20"></p>
<p>I’m sorry for the delay. I was really hoping people would be able to spend this holiday season sharing with their loves ones without worry on Metamorphic — but you’ll have to wait until 1H 2022 now (but I think it’ll ultimately end up making the Early Access experience better).</p>
<p>Thank you so much for your support and happy holidays <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" 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="234834" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-234834" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="234834"
                     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="244191" data-post-id="244191">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="f0rest8" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/f0rest8/120/38551_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  f0rest8
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi again everyone <img src="https://forum.elixirforum.com/images/emoji/apple/waving_hand.png?v=15" title=":waving_hand:" class="emoji" alt=":waving_hand:" loading="lazy" width="20" height="20"></p>
<p>Happy to say that I’ve begun work on the Letters feature finally. I know this has been a long time coming, especially those who’ve waited at least 8 months now since signing up for Early Access. <img src="https://forum.elixirforum.com/images/emoji/apple/hugs.png?v=15" title=":hugs:" class="emoji" alt=":hugs:" loading="lazy" width="20" height="20"><img src="https://forum.elixirforum.com/images/emoji/apple/green_heart.png?v=15" title=":green_heart:" class="emoji" alt=":green_heart:" loading="lazy" width="20" height="20"></p>
<p>Excited to say that the beta version of Letters is making quick progress now. Here’s a behind-the-scenes screenshot of our LiveView powered “at-mentions” in progress. This will be initially how you determine who to send your letter to. Disclaimer: nothing is set in stone and open to change.</p>
<p>Also, made some updates to the landing page including the launch date for the first round of Early Access invites (finally <img src="https://forum.elixirforum.com/images/emoji/apple/tada.png?v=15" title=":tada:" class="emoji" alt=":tada:" loading="lazy" width="20" height="20">). I will be rolling invites out in batches and beginning with people that I think will be the most patient and willing to stick around through the ongoing development process and UX evolution. <img src="https://forum.elixirforum.com/images/emoji/apple/blush.png?v=15" title=":blush:" class="emoji" alt=":blush:" loading="lazy" width="20" height="20"> Once I’ve finished with the round 1 invites, then I will update the landing page with the date for the next round. At this point, I’m foreseeing about 3 rounds and possible month or two in between rounds depending on how it goes.</p>
<p>Thank you so much for your patience, interest, and support. So close! <img src="https://forum.elixirforum.com/images/emoji/apple/green_heart.png?v=15" title=":green_heart:" class="emoji" alt=":green_heart:" loading="lazy" width="20" height="20"></p>
<p>PS — If anyone’s been following closely, then you’ll notice that I’ve closed down the old company (Core Theory) and will be opening a new company for Metamorphic in the near future. Also, the podcast has transitioned branding over to just being about Metamorphic. I haven’t released any new episodes yet, due to everything that’s going on in my life. But, I will be getting back to the podcast later this year once things settle down a bit.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/0/9/09e8ceac5947bd3a0ebc73ed774f2830ee939e9a.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/09e8ceac5947bd3a0ebc73ed774f2830ee939e9a" title="letter_at_mentions" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/0/9/09e8ceac5947bd3a0ebc73ed774f2830ee939e9a_2_690x333.jpeg" alt="letter_at_mentions" data-base62-sha1="1pF5ffbeurPXWESeiux1BlbP3GG" width="690" height="333" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/0/9/09e8ceac5947bd3a0ebc73ed774f2830ee939e9a_2_690x333.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/0/9/09e8ceac5947bd3a0ebc73ed774f2830ee939e9a_2_1035x499.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/original/3X/0/9/09e8ceac5947bd3a0ebc73ed774f2830ee939e9a.jpeg 2x" data-dominant-color="B8C5BD"><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">letter_at_mentions</span><span class="informations">1200×580 33.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> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="244191" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-244191" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="244191"
                     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="245389" data-post-id="245389">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="f0rest8" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/f0rest8/120/38551_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  f0rest8
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi everyone, <img src="https://forum.elixirforum.com/images/emoji/apple/waving_hand.png?v=15" title=":waving_hand:" class="emoji" alt=":waving_hand:" loading="lazy" width="20" height="20"></p>
<p>Wow, what a road it has been.</p>
<p>It’s been 8 months since the first person signed up for invite codes to our Early Access launch at <a href="https://metamorphic.app" rel="noopener nofollow ugc">Metamorphic</a> and tonight, through the rest of this month, I am sending out the first round of emails to people.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/8/e/8eea1301a2ea3e93abfdd7bcaff9fa111b39a475.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/8eea1301a2ea3e93abfdd7bcaff9fa111b39a475" title="early_access_invite_email_arrival" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/8/e/8eea1301a2ea3e93abfdd7bcaff9fa111b39a475_2_690x191.jpeg" alt="early_access_invite_email_arrival" data-base62-sha1="kohiL239qEiG54zj5sM66jxoq2x" width="690" height="191" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/8/e/8eea1301a2ea3e93abfdd7bcaff9fa111b39a475_2_690x191.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/8/e/8eea1301a2ea3e93abfdd7bcaff9fa111b39a475_2_1035x286.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/original/3X/8/e/8eea1301a2ea3e93abfdd7bcaff9fa111b39a475.jpeg 2x" data-dominant-color="E3D5CA"><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">early_access_invite_email_arrival</span><span class="informations">1215×338 19.7 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>
<hr>
<h3>It's been quite a journey </h3>
<p>In 2020, I had a crazy idea to make an alternative way for people to connect and share online. Inspired by becoming a father (“Dada”), my own observations and intuitions about the effects of current platforms, and culminating with Shoshana Zuboff’s latest book on surveillance capitalism, I set off to not only build Metamorphic but also learn how to build it too.</p>
<h4>Learning to Code</h4>
At the time, I had limited experience with Python and Ruby. With Python I had made a simple arcade-style game, called Paper Space Arcade, and packaged and shipped it for $0.99 to anyone with a Windows OS — it  even featured an original soundtrack/score and my twin nephews loved to come over and play.
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/7/4/741c870d4319c51c134e19617b4fba557551eb63.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/741c870d4319c51c134e19617b4fba557551eb63" title="Screenshot 2022-03-11 184136" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/7/4/741c870d4319c51c134e19617b4fba557551eb63.jpeg" alt="Screenshot 2022-03-11 184136" data-base62-sha1="gzavpcTC3Z874oIUrpce4BL2Vdp" width="690" height="476" data-dominant-color="747473"><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">Screenshot 2022-03-11 184136</span><span class="informations">1200×828 76.4 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>After Paper Space Arcade, I turned to web development to make a website for my partner-at-the-time to assist with her job applications and resume. This led to me discovering the <a href="https://www.djangoproject.com/" rel="noopener nofollow ugc">Django</a> framework and I began work building a job search for architects website called <a href="https://web.archive.org/web/20200815012949/https://www.thegridpdx.com/" rel="noopener nofollow ugc">The Grid</a> (wayback machine).</p>
<p>Switching from game development to web development was like turning the dopamine switch on high. The gap between code and “useable” shrank to almost nothing. Suddenly I could imagine turning an idea into a reality before the sun went down. It was an empowering feeling made intoxicating by its immediacy.</p>
<h4>The Covid Age</h4>
<p>When Covid hit, I felt both inspired and powerless to help. Day after day I’d read updates on the increasing numbers and wonder what I could do. Ultimately, not that much, but it drove me to add a search feature to The Grid that was updated with the Covid data from <a href="https://www.arcgis.com/apps/dashboards/bda7594740fd40299423467b48e9ecf6" rel="noopener nofollow ugc">Johns Hopkins</a> and enabled people to quickly and easily search by county around the world.</p>
<p>While The Grid failed, it was a great exercise in learning and avenue for channeling my creative energies and desire to help (it mostly just stressed people out whenever I commented on the latest numbers for their county).</p>
<h4>Do all webs spin from Ruby?</h4>
<p>As I immersed myself more and more in <a href="https://www.python.org/" rel="noopener nofollow ugc">Python</a> and Django, I inevitably discovered <a href="https://www.ruby-lang.org/en/" rel="noopener nofollow ugc">Ruby</a> and <a href="https://rubyonrails.org/" rel="noopener nofollow ugc">Ruby on Rails</a>. My first impression of Rails was “syntax confusion”, but I found myself charmed by the passion and philosophy of its fans and kept coming back to it.</p>
<p>So, I began building a portfolio site for my same partner-at-the-time using Ruby on Rails and I like to believe that it helped play a small role in landing her a job (the architects commented on how impressed they were with her site — though largely due to her design is my guess).</p>
<h4>A transformation begins</h4>
<p>Around the end of 2020, the idea that my company with my co-founder-at-the-time would raise money and successfully develop video games came to an end. I had also been the primary-caregiver to my incredible little one and found myself realizing how much I valued my role as such.</p>
<p>While I was demoralized about the end of the “video game dream”, I found myself increasingly inspired to do something that would have a positive effect on the world for my little one. That’s when I decided to commit to building another way to connect and share online — insulated against the raging surveillance economy.</p>
<h4>Early versions</h4>
<p>Since Ruby was the latest language I had been working in, I embarked to build Metamorphic with Ruby and Ruby on Rails. It’s hard to imagine or even remember these early versions, but I do recall consistently bumping up against the need to do so much more with so much less.</p>
<p>While I was stumbling over the same development hurdles with Ruby and Rails, I learned about <a href="https://elixir-lang.org/" rel="nofollow">Elixir</a> and <a href="https://www.phoenixframework.org/" rel="nofollow">Phoenix</a> from that similarly momentous <a href="https://www.phoenixframework.org/blog/build-a-real-time-twitter-clone-in-15-minutes-with-live-view-and-phoenix-1-5" rel="nofollow">Chris McCord Twitter clone</a>.</p>
<p>However, I was initially turned away again from my first impression of the syntax and feeling my brain explode every time I saw symbols moving through other symbols:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># From Chris McCord's demo
def inc_likes(%Post{id: id}) do
  from(p in Post, where: p.id == ^id, select: p)
  |&gt; Repo.update_all(inc: [likes_count: 1])
end
</code></pre>
<p>But, destiny beckoned, and I sat down one night and followed along — throwing out any attempt to understand and just going along for the ride.</p>
<p>And what a ride it was. When I played with the finished demo on my own laptop it was like hitting reset on the dopamine switch. I didn’t know much of anything about Elixir and Phoenix, but I knew I had found the tools that would give me the best shot I had at making Metamorphic come true.</p>
<h4>Today</h4>
<p>And now, nearly 2 years later, I am finally “ready” (ohhh boy…) to start sending out the first round of Early Access invites. I had no idea that it would take me this long when I first set out to make it.</p>
<p>My naivete was a blessing because I probably wouldn’t have attempted Metamorphic if I had realized what I would go through along the way. I still don’t know.</p>
<p>The community around Elixir is simply phenomenal. Whether it’s a podcast or this forum, people are compassionate, kind, and inspiring (not to mention brilliant and skilled — seriously, wow). And it goes without saying, but I’ll keep saying it, that Metamorphic wouldn’t be possible without the community.</p>
<p>With luck and work, I’ll be able to keep contributing and giving back to the community even more (so far that Ecto <a href="https://hexdocs.pm/ecto/self-referencing-many-to-many.html#content" rel="noopener nofollow ugc">guide</a> and simple HaveIBeenPwned? <a href="https://github.com/coretheory/pwned_coretheory" rel="noopener nofollow ugc">alt-library</a>).</p>
<h4>A final personal note around Early Access</h4>
<p>I mentioned I’ve been going through a challenging time outside of Metamorphic, which had delayed my original launch plans.</p>
<p>And it’s true, as a father and primary-caregiver going through a… nightmare of a divorce… going through all sorts of court/legal fights (family and criminal)… being isolated with the little one from our family and support network on the other end of a large country… while moving in our first blizzard… I’ve had to handle more than I ever thought I was capable of.</p>
<p>So, I cross my fingers that Early Access members will be patient and understanding with any hiccups or “bugs” as I work to make Metamorphic as awesome as it can be for everyone, while also working to make sure my little one’s life is as awesome as it can be for them too.</p>
<p>I’ve been so fortunate to have such incredible support in my personal life and in this community, and so from the bottom of my heart, thank you to everyone.</p>
<p>I’m so excited to welcome people on this crazy journey with me.</p>
<p>To a better future together,</p>
<p><img src="https://forum.elixirforum.com/images/emoji/apple/green_heart.png?v=15" title=":green_heart:" class="emoji" alt=":green_heart:" loading="lazy" width="20" height="20"> Mark</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="245389" data-batch-url="/posts/batch_likers">
                        14
                      </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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-245389" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="245389"
                     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="245402" data-post-id="245402">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Congratulations on your journey, the perseverance and passion you show is a clear inspiration to everyone!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="245402" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-245402" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="245402"
                     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="246277" data-post-id="246277">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Mark,<br>
I received 3 early access codes today, so I signed up. However, everything in the left navigation bar except home and support gave me 500 internal server error.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="246277" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-246277" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="246277"
                     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="246284" data-post-id="246284">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="f0rest8" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/f0rest8/120/38551_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  f0rest8
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi Derek,</p>
<p>Oh sorry to hear that! Thanks for letting me know. Working on this right now, just saw its an error when you don’t have a subscription.</p>
<p><strong>Update</strong></p>
<p>Okay, this error has been fixed and pushed up. Should be good to go. Now when you click on features in the left navigation bar you are redirected to start a 14-day free trial subscription if you don’t have an active subscription or free trial.</p>
<p>There’s one more kink now I’m updating actually.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="246284" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-246284" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="246284"
                     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="246344" data-post-id="246344">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="f0rest8" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/f0rest8/120/38551_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  f0rest8
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><strong>Update</strong></p>
<p>It appears the bug exists in Firefox but not in Brave browser (which makes me think Chrome is okay too but haven’t tested).</p>
<p>In Firefox, it isn’t reading the CSP config (issuing an error that it is blocking the Stripe script). This is preventing proper syncing between Stripe and Metamorphic.</p>
<p>On Brave, the CSP config is being read correctly and this bug doesn’t occur and everything syncs correctly.</p>
<p>Looking into why this is happening in Firefox.</p>
<p><strong>Update</strong></p>
<p>Appears the Privacy Badger extension was blocking some of the Stripe network connections. Disabling or allowing Stripe in the Privacy Badger extension gets rid of the CSP block in Firefox.</p>
<p>Currently, working on updating the subscription synchronizing to handle some potential edge cases that I’m still noticing with Firefox. Will update soon (also there’s an announcement on your Metamorphic dashboard about this current bug and will update there too when I have something new to report).</p>
<p>Thank you for your patience and understanding and sorry about this <img src="https://forum.elixirforum.com/images/emoji/apple/see_no_evil_monkey.png?v=15" title=":see_no_evil_monkey:" class="emoji" alt=":see_no_evil_monkey:" loading="lazy" width="20" height="20"><img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" 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="246344" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-246344" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="246344"
                     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="246682" data-post-id="246682">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="f0rest8" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/f0rest8/120/38551_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  f0rest8
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><img src="https://forum.elixirforum.com/images/emoji/apple/tada.png?v=15" title=":tada:" class="emoji" alt=":tada:" loading="lazy" width="20" height="20"> <strong>Update 3/26/2022</strong> <img src="https://forum.elixirforum.com/images/emoji/apple/partying_face.png?v=15" title=":partying_face:" class="emoji" alt=":partying_face:" loading="lazy" width="20" height="20"></p>
<p>It appears the webhooks timing out issue on new subscription sign ups has been resolved!</p>
<p>You should now be able to sign up for 14-day free trial (in Firefox or otherwise) and start using the app. Let me know if you are still having an issue.</p>
<p>From what I had been reading, it seemed that there was some kind of delay causing no responses to be returned on webhooks that I thought would be returning responses.</p>
<p><strong>Attempts</strong></p>
<p>I did a few things to get to where it appears to be working:</p>
<ul>
<li>create Oban workers to send off the calls to stripe for attaching payment method and creating subscriptions</li>
<li>[deprecated] <code>Task.Supervisor</code> to call the function that calls into the webhooks supervised genserver (webhooks genserver handles the events and notifying subscribers via PubSub of the events)</li>
<li>[deprecated] call the success function to try and immediately return a <code>200 "ok"</code> response to Stripe</li>
<li>drop stripe controller, deprecated items above, and custom body parser in favor of <a href="https://github.com/code-corps/stripity_stripe" rel="noopener nofollow ugc">stripity_stripe</a>’s <code>Stripe.WebhookPlug</code></li>
<li>made a <code>MetamorphicWeb.StripeHandler</code> with stripity_stripe’s <code>@behaviour Stripe.WebhookHandler</code></li>
</ul>
<p>The challenge for me was that the webhooks would consistently work in development with the Stripe CLI (considering <code>ngrok</code> for future). So, I would first check that things work there and then have to test in production on my own account and go back and forth.</p>
<p>I think this really was the difference-maker for me and I’d recommend anyone to default to this body parser method if using <code>stripity_stripe</code>:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># endpoint.ex

plug Stripe.WebhookPlug,
    at: "/webhooks/stripe",
    handler: MetamorphicWeb.StripeHandler,
    secret: {Application, :get_env, [:stripity_stripe, :webhook_signing_key]}

plug Plug.Parsers,
  ...
</code></pre>
<p>So, now the <code>StripeHandler</code> simply broadcasts out to the supervised <code>webhooks_processor.ex</code> GenServer to handle further processing and broadcasting:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># stripe_handler.ex
  ...
  @behaviour Stripe.WebhookHandler

  @impl true
  def handle_event(event) do
    notify_subscribers(event)
  end

  def notify_subscribers(event) do
    Phoenix.PubSub.broadcast(MetamorphicWeb.PubSub, "webhook_received", %{event: event})
  end

  def subscribe_on_webhook_received() do
    Phoenix.PubSub.subscribe(MetamorphicWeb.PubSub, "webhook_received")
  end
</code></pre>
<p>Thank you to <a class="mention" href="/u/stefanchrobot" rel="nofollow">@stefanchrobot</a> (<a href="https://forum.elixirforum.com/t/no-response-body-on-particular-stripe-webhook-events/44318/4" rel="nofollow">response</a> to another thread), <a class="mention" href="/u/andreaseriksson" rel="nofollow">@andreaseriksson</a> (stripe course), <a href="https://connerfritz.com/blog/stripe-webhooks-in-phoenix-with-elixir-pattern-matching" rel="noopener nofollow ugc">Conner Fritz blog</a> and <a href="https://tolc.io/blog/stripe-with-elixir-and-phoenix" rel="noopener nofollow ugc">Simon Rydell’s blog post</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="246682" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-246682" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="246682"
                     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="246693" data-post-id="246693">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Congrats and thanks for mention</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="246693" 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/mosslet-a-privacy-focused-alternative-to-the-social-networking-landscape-built-with-elixir/41021/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-246693" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="246693"
                     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/41021/load_more?page=3">Load more posts (62 remaining)</a>
</div></template></turbo-stream>